@entake/particle 18.0.3 → 18.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"entake-particle.mjs","sources":["../../src/app/modules/background-carousel/carousel-options.model.ts","../../src/app/modules/background-carousel/background-carousel.directive.ts","../../src/app/modules/background-carousel/particle-background-carousel.module.ts","../../src/app/modules/paginator/pagination-event.model.ts","../../src/app/modules/popover/popover.component.ts","../../src/app/modules/popover/popover.component.html","../../src/app/modules/paginator/paginator.component.ts","../../src/app/modules/paginator/paginator.component.html","../../src/app/modules/popover/popover.module.ts","../../src/app/modules/paginator/particle-paginator.module.ts","../../src/app/modules/tooltip/tooltip.directive.ts","../../src/app/modules/profile-pic/profile-pic.component.ts","../../src/app/modules/tooltip/tooltip.module.ts","../../src/app/modules/profile-pic/particle-profile-pic.module.ts","../../src/app/modules/push-container/push-container.component.ts","../../src/app/modules/push-container/push-container.component.html","../../src/app/modules/push-container/particle-push-container.module.ts","../../src/app/shared/services/dialog.service.ts","../../src/app/modules/dialog/dialog.component.ts","../../src/app/modules/dialog/dialog.component.html","../../src/app/modules/rich-text/rich-text.component.ts","../../src/app/modules/rich-text/rich-text.component.html","../../src/app/modules/rich-text/render-rich-text.component.ts","../../src/app/modules/dialog/dialog.module.ts","../../src/app/modules/rich-text/particle-rich-text.module.ts","../../src/app/modules/icons/models/particle-icons-regular.model.ts","../../src/app/modules/icons/models/particle-icons-light.model.ts","../../src/app/modules/icons/models/particle-icons-solid.model.ts","../../src/app/modules/icons/models/fontawesome-icons-brands.model.ts","../../src/app/modules/icons/models/fontawesome-icons-regular.model.ts","../../src/app/modules/icons/models/fontawesome-icons-solid.model.ts","../../src/app/modules/icons/services/icons.service.ts","../../src/app/modules/endpoint-state/components/endpoint-state.component.ts","../../src/app/modules/endpoint-state/components/endpoint-state.component.html","../../src/app/modules/icons/components/icon-select.component.ts","../../src/app/modules/icons/components/icon-select.component.html","../../src/app/modules/endpoint-state/endpoint-state.module.ts","../../src/app/modules/icons/particle-icons.module.ts","../../src/app/modules/idle-timeout/idle-timer.ts","../../src/app/modules/idle-timeout/idle-timeout.component.ts","../../src/app/modules/idle-timeout/idle-timeout.component.html","../../src/app/modules/idle-timeout/particle-idle-timeout.module.ts","../../src/app/modules/ordinal-number-pipe/ordinal-number.pipe.ts","../../src/app/modules/date-picker/components/calendar/calendar.component.ts","../../src/app/modules/date-picker/components/calendar/calendar.component.html","../../src/app/modules/date-picker/date-picker.component.ts","../../src/app/modules/date-picker/date-picker.component.html","../../src/app/modules/ordinal-number-pipe/ordinal-number-pipe.module.ts","../../src/app/modules/date-picker/components/date-range-picker/date-range-picker.component.ts","../../src/app/modules/date-picker/components/date-range-picker/date-range-picker.component.html","../../src/app/modules/date-picker/date-picker.module.ts","../../src/app/modules/dropdown/dropdown.component.ts","../../src/app/modules/dropdown/dropdown.component.html","../../src/app/modules/dropdown/dropdown.module.ts","../../src/app/modules/multi-select/multi-select.component.ts","../../src/app/modules/multi-select/multi-select.component.html","../../src/app/modules/multi-select/multi-select.module.ts","../../src/app/modules/keyfilter/keyfilter.directive.ts","../../src/app/modules/keyfilter/keyfilter.module.ts","../../src/app/modules/notification/services/notification.service.ts","../../src/app/modules/notification/notification.component.ts","../../src/app/modules/notification/notification.component.html","../../src/app/modules/notification/notification.module.ts","../../src/app/modules/week-picker/week-picker.component.ts","../../src/app/modules/week-picker/week-picker.component.html","../../src/app/modules/week-picker/week-picker.module.ts","../../src/app/modules/color-picker/color-picker.component.ts","../../src/app/modules/color-picker/color-picker.component.html","../../src/app/modules/color-picker/color-picker.module.ts","../../src/app/modules/slider/slider.component.ts","../../src/app/modules/slider/slider.component.html","../../src/app/modules/slider/slider.module.ts","../../src/app/modules/accordion/directives/accordion-content.directive.ts","../../src/app/modules/accordion/directives/accordion-header.directive.ts","../../src/app/modules/accordion/directives/accordion-item.directive.ts","../../src/app/modules/accordion/accordion.component.ts","../../src/app/modules/accordion/accordion.component.html","../../src/app/modules/accordion/accordion.module.ts","../../src/app/modules/theming/models/theme.model.ts","../../src/app/shared/services/local-storage.service.ts","../../src/app/modules/theming/services/theme-change-detection.service.ts","../../src/app/modules/theming/services/theming.service.ts","../../src/app/modules/theming/components/theming.component.ts","../../src/app/modules/theming/components/theming.component.html","../../src/app/modules/theming/theming.module.ts","../../src/app/modules/slideover/slideover.component.ts","../../src/app/modules/slideover/slideover.component.html","../../src/app/modules/slideover/particle-slideover.module.ts","../../src/app/modules/scroll-to-top/scroll-to-top.component.ts","../../src/app/modules/scroll-to-top/scroll-to-top.component.html","../../src/app/modules/scroll-to-top/particle-scroll-to-top.module.ts","../../src/app/modules/layout/components/layout-fullwidth-sidebar/layout-fullwidth-sidebar.component.ts","../../src/app/modules/layout/components/layout-fullwidth-sidebar/layout-fullwidth-sidebar.component.html","../../src/app/modules/layout/components/layout-full-framing/layout-full-framing.component.ts","../../src/app/modules/layout/components/layout-full-framing/layout-full-framing.component.html","../../src/app/modules/layout/layout.module.ts","../../src/app/modules/toggle-switch/toggle-switch.component.ts","../../src/app/modules/toggle-switch/toggle-switch.component.html","../../src/app/modules/toggle-switch/toggle-switch.module.ts","../../src/app/modules/checkbox/checkbox.component.ts","../../src/app/modules/checkbox/checkbox.component.html","../../src/app/modules/checkbox/checkbox.module.ts","../../src/app/modules/input-mask/input-mask.component.ts","../../src/app/modules/input-mask/input-mask.module.ts","../../src/app/modules/progress-bar/progress-bar.component.ts","../../src/app/modules/progress-bar/progress-bar.component.html","../../src/app/modules/progress-bar/progress-bar.module.ts","../../src/app/modules/loader/components/loader.component.ts","../../src/app/modules/loader/components/loader.component.html","../../src/app/modules/loader/loader.module.ts","../../src/app/shared/interceptors/json.interceptor.ts","../../src/app/shared/services/base-data.service.ts","../../src/app/shared/models/observable-container.ts","../../src/app/shared/enums/endpoint-status.enum.ts","../../src/public_api.ts","../../src/entake-particle.ts"],"sourcesContent":["/**\n * Carousel Options for the Background Carousel Directive\n */\nexport class CarouselOptions {\n /**\n * Image locations to loop through\n */\n images: string[];\n\n /**\n * Transition Time (in seconds)\n */\n transitionTime: number;\n\n /**\n * Length of Time to display each background (in seconds)\n */\n viewTime: number;\n\n /**\n * Whether or not to reset the interval on init.\n */\n resetInterval: boolean;\n\n /**\n * Constructor to help with initializing the associated directive\n *\n * @param images\n * @param transitionTime\n * @param viewTime\n * @param resetInterval\n */\n constructor(images: string[], transitionTime: number, viewTime: number, resetInterval: boolean) {\n this.images = images;\n this.transitionTime = transitionTime;\n this.viewTime = viewTime;\n this.resetInterval = resetInterval;\n }\n}\n","import {Directive, ElementRef, Input, OnDestroy} from '@angular/core';\r\nimport {BehaviorSubject} from 'rxjs';\r\nimport {CarouselOptions} from './carousel-options.model';\r\n\r\n/**\r\n * This directive when applied to a div will hijack its background and apply a carousel of images.\r\n */\r\n@Directive({\r\n selector: '[particleCarousel]'\r\n})\r\nexport class BackgroundCarouselDirective implements OnDestroy {\r\n\r\n /**\r\n * Carousel Options\r\n */\r\n private _options = new BehaviorSubject<CarouselOptions>(new CarouselOptions([], 2 , 10, false));\r\n\r\n /**\r\n * Reference to the interval for swapping the background image.\r\n */\r\n private _interval: any;\r\n\r\n /**\r\n * Sets the options for the carousel\r\n *\r\n * @param value\r\n */\r\n @Input('particleCarouselOptions')\r\n set options(value: CarouselOptions) {\r\n this._options.next(value);\r\n }\r\n\r\n /**\r\n * Gets the options for the carousel\r\n */\r\n get options(): CarouselOptions {\r\n return this._options.getValue();\r\n }\r\n\r\n /**\r\n * Constructor will set up all of the behavior for the carousel based on the options supplied by the user.\r\n *\r\n * @param el\r\n */\r\n constructor(el: ElementRef) {\r\n this._options.subscribe(\r\n () => {\r\n this.initOptions();\r\n\r\n if (this.options.resetInterval) {\r\n clearInterval(this._interval);\r\n el.nativeElement.style.backgroundImage = null;\r\n this._interval = null;\r\n }\r\n\r\n if (this.options.images.length > 0 && !this._interval) {\r\n let imagePointer = 0;\r\n el.nativeElement.style.backgroundSize = 'cover';\r\n el.nativeElement.style.backgroundPosition = 'center center';\r\n el.nativeElement.style.backgroundRepeat = 'no-repeat';\r\n el.nativeElement.style.transition = `all ${this.options.transitionTime}s ease`;\r\n el.nativeElement.style.backgroundImage = `url(${this.options.images[imagePointer++]})`;\r\n\r\n if (!this._interval) {\r\n this._interval = setInterval(() => {\r\n el.nativeElement.style.backgroundImage = `url(${this.options.images[imagePointer++ % this.options.images.length]})`;\r\n }, this.options.viewTime * 1000);\r\n }\r\n }\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Initializes the options to default settings for whatever isn't provided by the developer\r\n */\r\n private initOptions(): void {\r\n if (!this.options.images) {\r\n this.options.images = [];\r\n }\r\n\r\n if (!this.options.transitionTime) {\r\n this.options.transitionTime = 2;\r\n }\r\n\r\n if (!this.options.viewTime) {\r\n this.options.viewTime = 10;\r\n }\r\n }\r\n\r\n /**\r\n * Clears the interval when the component is destroyed.\r\n */\r\n ngOnDestroy(): void {\r\n clearInterval(this._interval);\r\n }\r\n}\r\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {BackgroundCarouselDirective} from './background-carousel.directive';\n\n@NgModule({\n declarations: [\n BackgroundCarouselDirective\n ],\n imports: [\n CommonModule\n ],\n exports: [\n BackgroundCarouselDirective\n ]\n})\nexport class ParticleBackgroundCarouselModule {\n}\n","/**\n * Representation of a pagination event\n */\nexport class PaginationEvent {\n\n /**\n * Current Page\n */\n activePage: number;\n\n /**\n * Size of a Page\n */\n pageSize: number;\n\n /**\n * Total Size to paginate over\n */\n totalLength: number;\n\n /**\n * Constructor that takes all variables to easily emit it in the event of pagination or page size change.\n * @param activePage\n * @param pageSize\n * @param totalLength\n */\n constructor(activePage: number, pageSize: number, totalLength: number) {\n this.activePage = activePage;\n this.pageSize = pageSize;\n this.totalLength = totalLength;\n }\n\n}\n","import { animate, AnimationEvent, style, transition, trigger } from '@angular/animations';\r\nimport { Component, EventEmitter, HostListener, Input, OnDestroy, Output, Renderer2 } from '@angular/core';\r\n\r\n/**\r\n * Component to display a popover with custom content\r\n */\r\n@Component({\r\n selector: 'particle-popover',\r\n templateUrl: './popover.component.html',\r\n styleUrls: ['./popover.component.css'],\r\n animations: [\r\n trigger('openClose', [\r\n transition('void => open', [\r\n style({ transform: 'scaleY(0.5)', opacity: 0 }),\r\n animate('200ms ease',\r\n style({ transform: 'scaleY(1)', opacity: 1 }))\r\n ]),\r\n transition('open => close', [\r\n style({ transform: 'scaleY(1)', opacity: 1 }),\r\n animate('200ms ease',\r\n style({ transform: 'scaleY(0.5)', opacity: 0 }))\r\n ]),\r\n ])\r\n ]\r\n})\r\nexport class PopoverComponent implements OnDestroy {\r\n\r\n protected readonly window = window;\r\n\r\n /**\r\n * The offset of the popover from its target (in pixels)\r\n */\r\n @Input()\r\n offset = 5;\r\n\r\n /**\r\n * Set the width of the popover in pixels (defaults to auto)\r\n */\r\n @Input()\r\n set width(width: string) {\r\n this._width = !width ? 'auto' : `${width}px`;\r\n }\r\n\r\n get width(): string {\r\n return this._width;\r\n }\r\n\r\n /**\r\n * Set the height of the popover in pixels (defaults to auto)\r\n */\r\n @Input()\r\n set height(height: string) {\r\n this._height = !height ? 'auto' : `${height}px`;\r\n }\r\n\r\n get height(): string {\r\n return this._height;\r\n }\r\n\r\n /**\r\n * A class-list to apply to the popover content\r\n */\r\n @Input()\r\n classList = 'content_color particle_popover_shadow';\r\n\r\n @Input()\r\n targetOverride: EventTarget = null as any;\r\n\r\n @Input()\r\n openDirection: 'above' | 'below' = 'above';\r\n\r\n @Input()\r\n alignment: 'left' | 'center' = 'left';\r\n\r\n @Input()\r\n scaleForMobile = '1';\r\n\r\n /**\r\n * Event emitted on popover open\r\n */\r\n @Output()\r\n opened = new EventEmitter<void>();\r\n\r\n /**\r\n * Event emitted on popover close\r\n */\r\n @Output()\r\n closed = new EventEmitter<void>();\r\n\r\n /**\r\n * Whether the popover should render\r\n */\r\n render: boolean = false;\r\n\r\n /**\r\n * Whether the popover is visible\r\n */\r\n visible: boolean = false;\r\n\r\n /**\r\n * The width of the popover\r\n */\r\n private _width = 'auto';\r\n\r\n /**\r\n * The height of the popover\r\n */\r\n private _height = 'auto';\r\n\r\n /**\r\n * The element to target\r\n * @private\r\n */\r\n private target: EventTarget = null as any;\r\n\r\n /**\r\n * The popover content container\r\n * @private\r\n */\r\n private container: HTMLDivElement = null as any;\r\n\r\n /**\r\n * Array of escape keyup unlisten functions\r\n * @private\r\n */\r\n private escapeKeyUpUnlisteners: Array<() => void> = [];\r\n\r\n /**\r\n * Dependency injection site\r\n * @param renderer the Angular renderer\r\n */\r\n constructor(private renderer: Renderer2) { }\r\n\r\n /**\r\n * Destroy component, clean up event listeners\r\n */\r\n ngOnDestroy(): void {\r\n this.removeEventListeners();\r\n }\r\n\r\n /**\r\n * Close popover on click\r\n * @param event the click MouseEvent\r\n */\r\n @HostListener('window:click', ['$event'])\r\n onClick(event: MouseEvent): void {\r\n if (this.visible) {\r\n const {pageX, pageY} = event;\r\n\r\n if (pageX > 0 && pageY > 0) {\r\n const { left, right, top, bottom } = this.container.getBoundingClientRect();\r\n const xPositionValid = pageX >= left && pageX <= right;\r\n const yPositionValid = pageY >= top && pageY <= bottom;\r\n const shouldClose = !(xPositionValid && yPositionValid);\r\n\r\n if (shouldClose) {\r\n this.close();\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Re-position popover on window resize\r\n */\r\n @HostListener('window:resize')\r\n onWindowResize(): void {\r\n if (this.visible) {\r\n this.positionPopover();\r\n }\r\n }\r\n\r\n /**\r\n * Toggle the popover from open to closed or closed to open\r\n * @param event the event whose target element will act as\r\n * the popover target. If an event is not provided,\r\n * the popover will close\r\n */\r\n toggle(event?: Event): void {\r\n if (this.targetOverride) {\r\n this.target = this.targetOverride;\r\n } else {\r\n if (event) {\r\n this.target = event.currentTarget ?? event.target as EventTarget;\r\n event.stopImmediatePropagation();\r\n } else {\r\n this.target = null as any;\r\n }\r\n }\r\n\r\n if (!this.visible && this.target) {\r\n this.open();\r\n } else {\r\n this.close();\r\n }\r\n }\r\n\r\n /**\r\n * Handle animation start\r\n * @param event the AnimationEvent\r\n */\r\n onAnimationStart(event: AnimationEvent): void {\r\n if (event.toState === 'open') {\r\n this.container = event.element;\r\n this.addEventListeners();\r\n this.positionPopover();\r\n this.opened.emit();\r\n }\r\n }\r\n\r\n /**\r\n * Handle animation end\r\n * @param event the AnimationEvent\r\n */\r\n onAnimationDone(event: AnimationEvent): void {\r\n if (event.toState === 'close') {\r\n this.render = false;\r\n this.removeEventListeners();\r\n this.closed.emit();\r\n }\r\n }\r\n\r\n /**\r\n * Open the popover\r\n * @private\r\n */\r\n private open(): void {\r\n this.render = true;\r\n this.visible = true;\r\n }\r\n\r\n /**\r\n * Close the popover\r\n */\r\n public close(): void {\r\n this.visible = false;\r\n }\r\n\r\n /**\r\n * Position the popover\r\n * @private\r\n */\r\n private positionPopover(): void {\r\n const {left, top, bottom, width} = (this.target as HTMLElement).getBoundingClientRect();\r\n const {offsetHeight, offsetWidth} = this.container;\r\n const popoverBottomLeftAnchor = bottom;\r\n const availableBottomSpace = window.innerHeight - popoverBottomLeftAnchor;\r\n const availableTopSpace = top;\r\n const offsetListHeight = offsetHeight + this.offset;\r\n let transformOrigin: string = null as any;\r\n let positionTop: string = null as any;\r\n\r\n const canOpenAbove = availableTopSpace > offsetListHeight;\r\n const canOpenBelow = availableBottomSpace > offsetListHeight;\r\n\r\n if (canOpenAbove && this.openDirection === 'above') {\r\n transformOrigin = 'bottom left';\r\n positionTop = `${top - offsetListHeight}px`;\r\n }\r\n\r\n if (canOpenBelow && this.openDirection === 'below') {\r\n transformOrigin = 'top left';\r\n positionTop = `${popoverBottomLeftAnchor + this.offset}px`;\r\n }\r\n\r\n if (!transformOrigin) {\r\n if (availableTopSpace > offsetListHeight) {\r\n transformOrigin = 'bottom left';\r\n positionTop = `${top - offsetListHeight}px`;\r\n } else if (availableBottomSpace > offsetListHeight) {\r\n transformOrigin = 'top left';\r\n positionTop = `${popoverBottomLeftAnchor + this.offset}px`;\r\n } else {\r\n if (offsetHeight > window.innerHeight) {\r\n positionTop = '0px';\r\n } else {\r\n const availableSpace = window.innerHeight - offsetHeight;\r\n positionTop = `${String(availableSpace / 2)}px`;\r\n }\r\n\r\n transformOrigin = 'top left';\r\n }\r\n }\r\n\r\n let leftPosition = left;\r\n\r\n if (this.alignment === 'center') {\r\n leftPosition = (leftPosition - (offsetWidth/2)) + (width/2);\r\n }\r\n\r\n if ((left + offsetWidth) > window.innerWidth) {\r\n leftPosition = left - ((left + offsetWidth) - window.innerWidth) - 10;\r\n }\r\n\r\n if (leftPosition < 0) {\r\n leftPosition = 0;\r\n }\r\n\r\n this.renderer.setStyle(this.container, 'transform-origin', transformOrigin);\r\n this.renderer.setStyle(this.container, 'left', `${leftPosition}px`);\r\n this.renderer.setStyle(this.container, 'top', positionTop);\r\n }\r\n\r\n /**\r\n * Add escape keyup listeners to all focusable elements to close\r\n * the popover\r\n * @private\r\n */\r\n private addEventListeners(): void {\r\n const focusableElements = this.getFocusableElements(this.container);\r\n\r\n for (const element of focusableElements) {\r\n this.renderer.setAttribute(element, 'data-dialog-close-override', 'true');\r\n this.escapeKeyUpUnlisteners.push(\r\n this.renderer.listen(element, 'keyup', (event: KeyboardEvent) => {\r\n if (this.visible) {\r\n event.stopImmediatePropagation();\r\n\r\n const { key } = event;\r\n\r\n if (key === 'Esc' || key === 'Escape') {\r\n this.close();\r\n }\r\n }\r\n })\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Get all focusable child elements of the input node\r\n * @param node the node to query for focusable children\r\n * @param elements the found focusable elements\r\n * @private\r\n */\r\n private getFocusableElements(node: Node, elements: Array<Element> = []): Array<any> {\r\n if (node.hasChildNodes()) {\r\n node.childNodes.forEach(child => elements.concat(this.getFocusableElements(child, elements)));\r\n\r\n if ('tabIndex' in node) {\r\n const { tabIndex } = node as unknown as HTMLOrSVGElement;\r\n\r\n if (tabIndex >= 0) {\r\n elements.push(node as any);\r\n }\r\n }\r\n\r\n return elements;\r\n } else {\r\n if ('tabIndex' in node) {\r\n const { tabIndex } = node as unknown as HTMLOrSVGElement;\r\n\r\n if (tabIndex >= 0) {\r\n elements.push(node as any);\r\n }\r\n }\r\n\r\n return elements;\r\n }\r\n }\r\n\r\n /**\r\n * Invoke escape keyup unlisten functions\r\n * @private\r\n */\r\n private removeEventListeners(): void {\r\n for (const unlistener of this.escapeKeyUpUnlisteners) {\r\n unlistener();\r\n }\r\n\r\n this.escapeKeyUpUnlisteners = [];\r\n }\r\n\r\n}\r\n","<div *ngIf=\"render\" class=\"particle_popover_overlay\" [style.scale]=\"window.innerWidth > 768 ? 1 : scaleForMobile\">\n <div [cdkTrapFocus]=\"render && visible\"\n [cdkTrapFocusAutoCapture]=\"true\"\n [@openClose]=\"visible ? 'open' : 'close'\"\n [ngStyle]=\"{ 'width': width, 'height': height }\"\n [ngClass]=\"classList\"\n (@openClose.start)=\"onAnimationStart($event)\"\n (@openClose.done)=\"onAnimationDone($event)\"\n class=\"position_absolute particle_popover\">\n <ng-content></ng-content>\n </div>\n</div>\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n OnChanges,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {PaginationEvent} from './pagination-event.model';\r\nimport {PaginatorText} from '../../shared/models/particle-component-text.model';\r\nimport {PopoverComponent} from '../popover/popover.component';\r\n\r\n/**\r\n * A Particle paginator, because we hated the other ones on the market.\r\n */\r\n@Component({\r\n selector: 'particle-paginator',\r\n templateUrl: 'paginator.component.html',\r\n styleUrls: ['./paginator.component.css']\r\n})\r\nexport class PaginatorComponent implements OnChanges, AfterViewInit {\r\n\r\n private _pageSize: number = null as any;\r\n\r\n /**\r\n * An array of potential page sizes.\r\n */\r\n @Input()\r\n pageSizeOptions: Array<number> = null as any;\r\n\r\n /**\r\n * Current page size\r\n */\r\n @Input()\r\n set pageSize(pageSize: number) {\r\n this._pageSize = pageSize;\r\n this.resetPageStartEndValues();\r\n }\r\n\r\n get pageSize(): number {\r\n return this._pageSize;\r\n }\r\n\r\n /**\r\n * Total number of items\r\n */\r\n @Input()\r\n totalLength: number = null as any;\r\n\r\n @Input()\r\n showPages = false;\r\n\r\n @Input()\r\n showFirstLast = false;\r\n\r\n @Input()\r\n showButtonLabels = true;\r\n\r\n @Input()\r\n showResultsPanel = true;\r\n\r\n @Input()\r\n text: PaginatorText = {\r\n itemsPerPage: 'Items Per Page',\r\n choosePageSize: 'Choose Page Size',\r\n previousPage: 'Previous',\r\n nextPage: 'Next',\r\n disabled: 'Disabled',\r\n firstPage: 'First',\r\n lastPage: 'Last',\r\n jumpToPage: 'Jump to Page',\r\n page: 'Page',\r\n outOf: 'out of',\r\n of: 'of',\r\n results: 'Results'\r\n } as PaginatorText;\r\n\r\n /**\r\n * Event Emitter for pagination or page size change.\r\n */\r\n @Output()\r\n paginate: EventEmitter<any> = new EventEmitter();\r\n\r\n /**\r\n * Currently active page\r\n */\r\n activePage = 0;\r\n\r\n /**\r\n * For the page jump text input\r\n */\r\n pageJumpInput = '';\r\n\r\n /**\r\n * Number of pages\r\n */\r\n numberOfPages: number = null as any;\r\n\r\n pageStartingValue: number = 0;\r\n pageEndingValue: number = 0;\r\n\r\n Math = Math;\r\n\r\n /**\r\n * Recalculate number of pages on input change\r\n */\r\n ngOnChanges(): void {\r\n this.numberOfPages = this.getNumberOfPages();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.resetPageStartEndValues();\r\n }\r\n\r\n private resetPageStartEndValues(): void {\r\n this.pageStartingValue = 1;\r\n this.pageEndingValue = this.pageSize;\r\n this.numberOfPages = this.getNumberOfPages();\r\n }\r\n\r\n /**\r\n * Goes to the first page\r\n */\r\n goToFirst(): void {\r\n this.goToPage(0);\r\n }\r\n\r\n /**\r\n * Goes to the last page\r\n */\r\n goToLast(): void {\r\n this.goToPage(this.getNumberOfPages() - 1);\r\n }\r\n\r\n /**\r\n * Calculates the number of pages\r\n */\r\n getNumberOfPages(): number {\r\n return Math.ceil(this.totalLength / this.pageSize);\r\n }\r\n\r\n /**\r\n * Goes to a given page and emits a pagination event\r\n *\r\n * @param pageNumber\r\n * @param inputFocus\r\n */\r\n goToPage(pageNumber: number, inputFocus?: boolean): void {\r\n this.activePage = pageNumber;\r\n this.pageStartingValue = this.getStartingValueForPage(this.activePage);\r\n this.pageEndingValue = this.getEndingValueForPage(this.activePage);\r\n\r\n if (inputFocus) {\r\n const element: HTMLElement = document.getElementById('activePage') as HTMLElement;\r\n if (element) {\r\n element.focus();\r\n }\r\n }\r\n\r\n this.emitEvent();\r\n }\r\n\r\n /**\r\n * Emits a pagination event with the current paginator data\r\n */\r\n emitEvent(): void {\r\n this.paginate.emit(new PaginationEvent(this.activePage, this.pageSize, this.totalLength));\r\n }\r\n\r\n /**\r\n * Determines whether a given page exists or not.\r\n *\r\n * @param pageNumber\r\n */\r\n hasPage(pageNumber: number): boolean {\r\n if (pageNumber < 0) {\r\n return false;\r\n }\r\n\r\n return !(pageNumber >= this.getNumberOfPages());\r\n }\r\n\r\n /**\r\n * Gets the first value for a given page\r\n *\r\n * @param pageNumber\r\n */\r\n getStartingValueForPage(pageNumber: number): number {\r\n return (pageNumber * this.pageSize) + 1;\r\n }\r\n\r\n /**\r\n * Gets the last value for a given page\r\n *\r\n * @param pageNumber\r\n */\r\n getEndingValueForPage(pageNumber: number): number {\r\n // If it's the last page, return the total length\r\n if (pageNumber === this.getNumberOfPages() - 1) {\r\n return this.totalLength;\r\n }\r\n\r\n return (pageNumber + 1) * this.pageSize;\r\n }\r\n\r\n /**\r\n * When a page size is changed, go back to the first page and emit a pagination event\r\n */\r\n pageSizeChange(): void {\r\n this.goToFirst();\r\n this.numberOfPages = this.getNumberOfPages();\r\n }\r\n\r\n /**\r\n * Jump to a page based on user input\r\n */\r\n jumpPage(): void {\r\n let page: number = +this.pageJumpInput;\r\n page--;\r\n\r\n if (isNaN(page)) {\r\n this.pageJumpInput = '';\r\n return;\r\n }\r\n\r\n if (this.hasPage(page)) {\r\n this.goToPage(page);\r\n }\r\n\r\n if (page > this.getNumberOfPages()) {\r\n this.goToLast();\r\n }\r\n\r\n if (page <= 0) {\r\n this.goToFirst();\r\n }\r\n\r\n this.pageJumpInput = '';\r\n }\r\n\r\n}\r\n","<div class=\"row wrap_reverse center_center\">\r\n <ng-container *ngIf=\"!showPages && showResultsPanel\">\r\n <div class=\"col min_w200\">\r\n <div class=\"row v_center ptl_brdr_size ptl_brdr_radius ptl_brdr_color content_color mar_right5 mar_left5 pad_3 ent_r2l_row\">\r\n <div class=\"col size_1 center_center pad_left5 pad_right5\">\r\n <ng-container *ngIf=\"totalLength > 0 else noResults\">\r\n <div class=\"text sm ent_r2l_txt\" style=\"user-select: none\">\r\n {{pageStartingValue}} - {{pageEndingValue > totalLength ? totalLength : pageEndingValue}} {{text.of}} {{totalLength}} {{text.results}}\r\n </div>\r\n </ng-container>\r\n <ng-template #noResults>\r\n <div class=\"text sm ent_r2l_txt\" style=\"user-select: none\">\r\n 0 - 0 {{text.of}} 0 {{text.results}}\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div class=\"col center_center pad_lr5\">\r\n <button class=\"access btn clear circle_20px \" tabindex=\"0\" [attr.aria-label]=\"text.jumpToPage\"\r\n (click)=\"config.toggle($event)\">\r\n <i class=\"fas fa-cog\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"col pad_5\">\r\n <div class=\"row wrap_reverse center_center ent_r2l_row\">\r\n\r\n <ng-container *ngIf=\"showFirstLast\">\r\n <div class=\"col pad_5\">\r\n <!-- first -->\r\n <button class=\"access btnset clear\"\r\n [attr.aria-label]=\"text.firstPage\"\r\n [disabled]=\"activePage === 0\"\r\n (click)=\"goToFirst()\">\r\n <div class=\"col pad_tb5 pad_lr10 hov_glow previous_button_color ptl_brdr_radius ent_r2l_dir rc_gap\">\r\n <div [ngClass]=\"showButtonLabels ? '' : ''\">\r\n <i class=\"fas fa-angle-double-left ent_r2l_ico\"></i>\r\n </div>\r\n <div class=\"text ent_r2l_txt\" *ngIf=\"showButtonLabels\">{{text.firstPage}}</div>\r\n </div>\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"col pad_5\">\r\n <!-- previous -->\r\n <button class=\"access btnset clear\"\r\n [attr.aria-label]=\"text.previousPage\"\r\n [disabled]=\"activePage === 0\"\r\n (click)=\"hasPage(activePage - 1) ? goToPage(activePage - 1) : goToPage(activePage)\">\r\n <div class=\"col pad_tb5 pad_lr10 hov_glow previous_button_color ptl_brdr_radius ent_r2l_dir rc_gap\">\r\n <div [ngClass]=\"showButtonLabels ? '' : ''\">\r\n <i class=\"fas fa-chevron-left ent_r2l_ico\"></i>\r\n </div>\r\n <div class=\"text ent_r2l_txt\" *ngIf=\"showButtonLabels\">{{text.previousPage}}</div>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <ng-container *ngIf=\"showPages\">\r\n <div class=\"col pad_5\">\r\n <!-- navigation -->\r\n <div class=\"row v_center pad_left5 pad_right5 bg_overlay brdr content_color ptl_brdr_radius ent_r2l_dir\"\r\n style=\"flex:1 1 auto;\">\r\n <!-- jump button -->\r\n <div class=\"center_right\" style=\"width:20px;min-width:20px;\">\r\n <button class=\"access btn underline_md pag_btn clear\" tabindex=\"0\"\r\n [attr.aria-label]=\"text.jumpToPage\" *ngIf=\"activePage > 3\"\r\n (click)=\"op.toggle($event)\">...</button>\r\n </div>\r\n <!-- nav buttons -->\r\n <div class=\"center_center\" style=\"min-width:180px;\">\r\n <!-- first -->\r\n <button class=\"access btn underline_md pag_btn clear\"\r\n [attr.aria-label]=\"text.page + ' ' + (activePage - 1)\"\r\n *ngIf=\"(activePage-2 >= 0 && activePage-2 < numberOfPages)\"\r\n (click)=\"goToPage(activePage - 2, true)\">\r\n {{activePage - 1}}\r\n </button>\r\n <!-- second -->\r\n <button class=\"access btn underline_md pag_btn clear\"\r\n [attr.aria-label]=\"text.page + ' ' + (activePage)\"\r\n *ngIf=\"(activePage-1 >= 0 && activePage-1 < numberOfPages)\"\r\n (click)=\"goToPage(activePage - 1, true)\">\r\n {{activePage}}\r\n </button>\r\n <!-- active page -->\r\n <div class=\"row pag_btn active brad_3 content_color\">\r\n <button style=\"cursor:default\"\r\n class=\"access col size_1 btn center_center brad_3 bg_overlay_rev brdr\" id=\"activePage\"\r\n [attr.aria-label]=\"text.page + ' ' + (activePage + 1)\" >\r\n {{activePage + 1}}\r\n </button>\r\n </div>\r\n <!-- fourth -->\r\n <button class=\"access btn underline_md pag_btn clear\"\r\n [attr.aria-label]=\"text.page + ' ' + (activePage + 2)\"\r\n *ngIf=\"(activePage+1 >= 0 && activePage+1 < numberOfPages)\"\r\n (click)=\"goToPage(activePage + 1, true)\">\r\n {{activePage + 2}}\r\n </button>\r\n <!-- fifth -->\r\n <button class=\"access btn underline_md pag_btn clear\"\r\n [attr.aria-label]=\"text.page + ' ' + (activePage + 3)\"\r\n *ngIf=\"(activePage+2 >= 0 && activePage+2 < numberOfPages)\"\r\n (click)=\"goToPage(activePage + 2, true)\">\r\n {{activePage + 3}}\r\n </button>\r\n </div>\r\n <!-- jump button -->\r\n <div class=\"center_left\" style=\"width:20px;min-width:20px;\">\r\n <button class=\"access btn underline_md pag_btn clear\"\r\n [attr.aria-label]=\"text.jumpToPage\" *ngIf=\"activePage < getNumberOfPages() - 4\"\r\n (click)=\"op.toggle($event)\" >...</button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"col pad_5\">\r\n <!-- next -->\r\n <button class=\"access btnset clear\"\r\n [attr.aria-label]=\"text.nextPage\"\r\n [disabled]=\"activePage === numberOfPages - 1 || totalLength === 0\"\r\n (click)=\"hasPage(activePage + 1) ? goToPage(activePage + 1) : goToPage(activePage)\">\r\n <div class=\"col pad_tb5 pad_lr10 hov_glow next_button_color ptl_brdr_radius ent_r2l_dir rc_gap\">\r\n <div class=\"text ent_r2l_txt\" *ngIf=\"showButtonLabels\">{{text.nextPage}}</div>\r\n <div [ngClass]=\"showButtonLabels ? '' : ''\">\r\n <i class=\"fas fa-chevron-right ent_r2l_ico\"></i>\r\n </div>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <ng-container *ngIf=\"showFirstLast\">\r\n <div class=\"col pad_5\">\r\n <!-- last -->\r\n <button class=\"access btnset clear\"\r\n [attr.aria-label]=\"text.lastPage\"\r\n [disabled]=\"activePage === numberOfPages - 1\"\r\n (click)=\"goToLast()\">\r\n <div class=\"col pad_tb5 pad_lr10 hov_glow next_button_color ptl_brdr_radius ent_r2l_dir rc_gap\">\r\n <div class=\"text ent_r2l_txt\" *ngIf=\"showButtonLabels\">{{text.lastPage}}</div>\r\n <div [ngClass]=\"showButtonLabels ? '' : ''\">\r\n <i class=\"fas fa-angle-double-right ent_r2l_ico\"></i>\r\n </div>\r\n </div>\r\n </button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- Jump to popover -->\r\n<particle-popover #op>\r\n <ng-container *ngTemplateOutlet=\"jumpTo\"></ng-container>\r\n</particle-popover>\r\n\r\n<particle-popover #config>\r\n <ng-container *ngTemplateOutlet=\"jumpTo\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"pageSizeTemplate\"></ng-container>\r\n</particle-popover>\r\n\r\n<ng-template #jumpTo>\r\n <ng-container *ngIf=\"numberOfPages > 0\">\r\n <div class=\"row_block pad_10 center\">\r\n <div class=\"text sm text_center ent_r2l_txt\" style=\"text-align: center !important;\"><label for=\"pageJump\">{{text.jumpToPage}} ({{text.outOf}} {{numberOfPages}}):</label></div>\r\n <div class=\"row rc_gap center_center mar_top10 ent_r2l_dir\">\r\n <div class=\"col\">\r\n <input class=\"access fullwidth_input sm\" style=\"width:50px;\" maxlength=\"4\" id=\"pageJump\"\r\n type=\"text\" [attr.aria-label]=\"text.page\" name=\"pagejump\" [placeholder]=\"text.page\" [(ngModel)]=\"pageJumpInput\" />\r\n </div>\r\n <div class=\"col\">\r\n <button class=\"access btn clear\" [attr.aria-label]=\"text.jumpToPage\"\r\n (click)=\"jumpPage();op.close();config.close();\">\r\n <i class=\"fas fa-chevron-right ent_r2l_ico\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #pageSizeTemplate>\r\n <div class=\"row_block pad_10 center\">\r\n <div class=\"text sm text_center ent_r2l_txt\" style=\"text-align: center !important;\"><label for=\"pageSize\">{{text.itemsPerPage}}:</label></div>\r\n <div class=\"row rc_gap center_center mar_top10 ent_r2l_dir\">\r\n <div class=\"col\">\r\n <select class=\"access fullwidth_input content_color text sm\" style=\"width:50px;\"\r\n [(ngModel)]=\"pageSize\" (ngModelChange)=\"pageSizeChange();config.close();\" [title]=\"text.choosePageSize\" id=\"pageSize\">\r\n <option *ngFor=\"let option of pageSizeOptions\" [value]=\"option\" [attr.aria-label]=\"option\">\r\n {{option}}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PopoverComponent} from './popover.component';\n\n@NgModule({\n declarations: [PopoverComponent],\n imports: [\n CommonModule,\n A11yModule\n ],\n exports: [PopoverComponent]\n})\nexport class ParticlePopoverModule { }\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {PaginatorComponent} from './paginator.component';\nimport {BrowserModule} from '@angular/platform-browser';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {HttpClientModule} from '@angular/common/http';\nimport {BrowserAnimationsModule} from '@angular/platform-browser/animations';\nimport {ParticlePopoverModule} from '../popover/popover.module';\n\n@NgModule({\n imports: [\n CommonModule,\n BrowserModule,\n FormsModule,\n ReactiveFormsModule,\n HttpClientModule,\n BrowserAnimationsModule,\n ParticlePopoverModule\n ],\n declarations: [\n PaginatorComponent\n ],\n providers: [\n ],\n exports: [\n PaginatorComponent\n ]\n})\nexport class ParticlePaginatorModule {\n}\n","import {Directive, ElementRef, HostListener, Input, OnDestroy, Renderer2} from '@angular/core';\r\n\r\n/**\r\n * Directive to create a tooltip around the host element\r\n * TODO: Open/Close animation with AnimationFactory\r\n */\r\n@Directive({\r\n selector: '[particleTooltip]'\r\n\r\n})\r\nexport class TooltipDirective implements OnDestroy {\r\n\r\n /**\r\n * The number of pixels from the host to offset the tooltip\r\n * @private\r\n */\r\n private readonly TOOLTIP_OFFSET = 10;\r\n\r\n /**\r\n * Tooltip text input\r\n * @param text the text to set for the tooltip\r\n */\r\n @Input()\r\n set particleTooltip(text: string) {\r\n this._text = text;\r\n\r\n if (!!text) {\r\n if (!!this.tooltip?.parentElement) {\r\n this.setTooltipText();\r\n this.alignTooltip();\r\n }\r\n } else {\r\n this.deleteTooltip();\r\n }\r\n }\r\n get particleTooltip(): string { return this._text; }\r\n\r\n /**\r\n * The direction of the tooltip around the host element\r\n */\r\n @Input()\r\n tooltipPosition: 'left' | 'right' | 'top' | 'bottom' = 'bottom';\r\n\r\n /**\r\n * Whether to disable the tooltip\r\n * @param disabled disabled or not\r\n */\r\n @Input()\r\n set tooltipDisabled(disabled: boolean) {\r\n this._tooltipDisabled = disabled;\r\n if (disabled && !!this.tooltip?.parentElement) {\r\n this.deleteTooltip();\r\n }\r\n }\r\n\r\n get tooltipDisabled(): boolean {\r\n return this._tooltipDisabled;\r\n }\r\n\r\n /**\r\n * The DIV element housing the tooltip\r\n * @private\r\n */\r\n private tooltip: HTMLDivElement = null as any;\r\n\r\n /**\r\n * The tooltip text\r\n * @private\r\n */\r\n private _text: string = null as any;\r\n\r\n /**\r\n * Whether or not the tooltip is disabled\r\n * @private\r\n */\r\n private _tooltipDisabled: boolean = false;\r\n\r\n /**\r\n * Array of scroll unlisten functions\r\n * @private\r\n */\r\n private scrollUnlisteners: Array<() => void> = [];\r\n\r\n /**\r\n * Get window scroll top\r\n * @private\r\n */\r\n private static getWindowScrollTop(): number {\r\n const { scrollTop, clientTop } = document.documentElement;\r\n return (window.scrollY ?? scrollTop) - (clientTop ?? 0);\r\n }\r\n\r\n /**\r\n * Get window scroll left\r\n * @private\r\n */\r\n private static getWindowScrollLeft(): number {\r\n const { scrollLeft, clientLeft } = document.documentElement;\r\n return (window.scrollX ?? scrollLeft) - (clientLeft ?? 0);\r\n }\r\n\r\n /**\r\n * Dependency injection site\r\n * @param element the host element\r\n * @param renderer the Angular renderer\r\n */\r\n constructor(private element: ElementRef<HTMLElement>, private renderer: Renderer2) { }\r\n\r\n /**\r\n * Destroy directive, invoke scroll unlisteners\r\n */\r\n ngOnDestroy(): void {\r\n this.removeScrollListeners();\r\n }\r\n\r\n /**\r\n * Handle host mouse enter event\r\n */\r\n @HostListener('mouseenter')\r\n onMouseEnter(): void {\r\n this.showTooltip();\r\n }\r\n\r\n /**\r\n * Handle host mouse leave event\r\n */\r\n @HostListener('mouseleave')\r\n onMouseLeave(): void {\r\n this.deleteTooltip();\r\n }\r\n\r\n /**\r\n * Handle host click event\r\n */\r\n @HostListener('click')\r\n onClick(): void {\r\n this.deleteTooltip();\r\n }\r\n\r\n /**\r\n * Create tooltip, set the text and align it\r\n * @private\r\n */\r\n private showTooltip(): void {\r\n if (!this.tooltipDisabled) {\r\n this.createTooltip();\r\n this.setTooltipText();\r\n this.alignTooltip();\r\n\r\n this.addScrollListeners();\r\n }\r\n }\r\n\r\n /**\r\n * Add the tooltip to the DOM\r\n * @private\r\n */\r\n private createTooltip(): void {\r\n this.deleteTooltip();\r\n\r\n this.tooltip = this.renderer.createElement('div');\r\n this.renderer.appendChild(document.body, this.tooltip);\r\n this.renderer.addClass(this.tooltip, 'particle_tooltip');\r\n }\r\n\r\n /**\r\n * Set tooltip text\r\n * @private\r\n */\r\n private setTooltipText(): void {\r\n this.renderer.setProperty(this.tooltip, 'innerHTML', this.particleTooltip);\r\n }\r\n\r\n /**\r\n * Align the tooltip to the input position or the next best fit\r\n * @private\r\n */\r\n private alignTooltip(): void {\r\n switch (this.tooltipPosition) {\r\n case 'left':\r\n this.renderer.addClass(this.tooltip, 'left');\r\n this.alignLeft();\r\n\r\n if (this.tooltipOutOfWindow()) {\r\n this.renderer.removeClass(this.tooltip, 'left');\r\n this.renderer.addClass(this.tooltip, 'top');\r\n this.alignTop();\r\n\r\n if (this.tooltipOutOfWindow()) {\r\n this.renderer.removeClass(this.tooltip, 'top');\r\n this.renderer.addClass(this.tooltip, 'right');\r\n this.alignRight();\r\n\r\n if (this.tooltipOutOfWindow()) {\r\n this.renderer.removeClass(this.tooltip, 'right');\r\n this.renderer.addClass(this.tooltip, 'bottom');\r\n this.alignBottom();\r\n }\r\n }\r\n }\r\n break;\r\n case 'top':\r\n this.renderer.addClass(this.tooltip, 'top');\r\n this.alignTop();\r\n\r\n if (this.tooltipOutOfWindow()) {\r\n this.renderer.removeClass(this.tooltip, 'top');\r\n this.renderer.addClass(this.tooltip, 'right');\r\n this.alignRight();\r\n\r\n if (this.tooltipOutOfWindow()) {\r\n this.renderer.removeClass(this.tooltip, 'right');\r\n this.renderer.addClass(this.tooltip, 'bottom');\r\n this.alignBottom();\r\n\r\n if (this.tooltipOutOfWindow()) {\r\n this.renderer.removeClass(this.tooltip, 'bottom');\r\n this.renderer.addClass(this.tooltip, 'left');\r\n this.alignLeft();\r\n }\r\n }\r\n }\r\n break;\r\n case 'right':\r\n this.renderer.addClass(this.tooltip, 'right');\r\n this.alignRight();\r\n\r\n if (this.tooltipOutOfWindow()) {\r\n this.renderer.removeClass(this.tooltip, 'right');\r\n this.renderer.addClass(this.tooltip, 'bottom');\r\n this.alignBottom();\r\n\r\n if (this.tooltipOutOfWindow()) {\r\n this.renderer.removeClass(this.tooltip, 'bottom');\r\n this.renderer.addClass(this.tooltip, 'left');\r\n this.alignLeft();\r\n\r\n if (this.tooltipOutOfWindow()) {\r\n this.renderer.removeClass(this.tooltip, 'left');\r\n this.renderer.addClass(this.tooltip, 'top');\r\n this.alignTop();\r\n }\r\n }\r\n }\r\n break;\r\n case 'bottom':\r\n this.renderer.addClass(this.tooltip, 'bottom');\r\n this.alignBottom();\r\n\r\n if (this.tooltipOutOfWindow()) {\r\n this.renderer.removeClass(this.tooltip, 'bottom');\r\n this.renderer.addClass(this.tooltip, 'left');\r\n this.alignLeft();\r\n\r\n if (this.tooltipOutOfWindow()) {\r\n this.renderer.removeClass(this.tooltip, 'left');\r\n this.renderer.addClass(this.tooltip, 'top');\r\n this.alignTop();\r\n\r\n if (this.tooltipOutOfWindow()) {\r\n this.renderer.removeClass(this.tooltip, 'top');\r\n this.renderer.addClass(this.tooltip, 'right');\r\n this.alignRight();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Align the tooltip to the left of the host\r\n * @private\r\n */\r\n private alignLeft(): void {\r\n const hostOffset = this.getHostOffset();\r\n const left = hostOffset.left - this.tooltip.offsetWidth - this.TOOLTIP_OFFSET;\r\n const top = hostOffset.top + (this.element.nativeElement.offsetHeight - this.tooltip.offsetHeight) / 2;\r\n\r\n this.renderer.setStyle(this.tooltip, 'left', `${left}px`);\r\n this.renderer.setStyle(this.tooltip, 'top', `${top}px`);\r\n }\r\n\r\n /**\r\n * Align the tooltip to the right of the host\r\n * @private\r\n */\r\n private alignRight(): void {\r\n const hostOffset = this.getHostOffset();\r\n const left = hostOffset.left + this.element.nativeElement.offsetWidth + this.TOOLTIP_OFFSET;\r\n const top = hostOffset.top + (this.element.nativeElement.offsetHeight - this.tooltip.offsetHeight) / 2;\r\n\r\n this.renderer.setStyle(this.tooltip, 'left', `${left}px`);\r\n this.renderer.setStyle(this.tooltip, 'top', `${top}px`);\r\n }\r\n\r\n /**\r\n * Align the tooltip to the top of the host\r\n * @private\r\n */\r\n private alignTop(): void {\r\n const hostOffset = this.getHostOffset();\r\n const left = hostOffset.left + (this.element.nativeElement.offsetWidth - this.tooltip.offsetWidth) / 2;\r\n const top = hostOffset.top - this.tooltip.offsetHeight - this.TOOLTIP_OFFSET;\r\n\r\n this.renderer.setStyle(this.tooltip, 'left', `${left}px`);\r\n this.renderer.setStyle(this.tooltip, 'top', `${top}px`);\r\n }\r\n\r\n /**\r\n * Align the tooltip to the bottom of the host\r\n * @private\r\n */\r\n private alignBottom(): void {\r\n const hostOffset = this.getHostOffset();\r\n const left = hostOffset.left + (this.element.nativeElement.offsetWidth - this.tooltip.offsetWidth) / 2;\r\n const top = hostOffset.top + this.element.nativeElement.offsetHeight + this.TOOLTIP_OFFSET;\r\n\r\n this.renderer.setStyle(this.tooltip, 'left', `${left}px`);\r\n this.renderer.setStyle(this.tooltip, 'top', `${top}px`);\r\n }\r\n\r\n /**\r\n * Get the host's top and left position offset by window scroll\r\n * @private\r\n */\r\n private getHostOffset(): { left: number, top: number } {\r\n const { left, top } = this.element.nativeElement.getBoundingClientRect();\r\n const targetLeft = left + TooltipDirective.getWindowScrollLeft();\r\n const targetTop = top + TooltipDirective.getWindowScrollTop();\r\n\r\n return { left: targetLeft, top: targetTop };\r\n }\r\n\r\n /**\r\n * Remove the tooltip from the DOM\r\n * @private\r\n */\r\n private deleteTooltip(): void {\r\n if (!!this.tooltip?.parentElement) {\r\n this.renderer.removeChild(document.body, this.tooltip);\r\n this.tooltip = null as any;\r\n }\r\n\r\n this.removeScrollListeners();\r\n }\r\n\r\n /**\r\n * Checks if the tooltip fits in the window\r\n * @private\r\n */\r\n private tooltipOutOfWindow(): boolean {\r\n const { top, left } = this.tooltip.getBoundingClientRect();\r\n const { offsetWidth, offsetHeight } = this.tooltip;\r\n const { innerWidth, innerHeight } = window;\r\n\r\n return (left + offsetWidth > innerWidth) || (left < 0) || (top < 0) || (top + offsetHeight > innerHeight);\r\n }\r\n\r\n /**\r\n * Listen for scrolling on all scrollable parents of the host element\r\n * @private\r\n */\r\n private addScrollListeners(): void {\r\n const overflowRegex = /(auto|scroll)/;\r\n const overflowCheck = (node: any): boolean => {\r\n overflowRegex.lastIndex = 0;\r\n const styleDeclaration = window['getComputedStyle'](node, null);\r\n return overflowRegex.test(styleDeclaration.getPropertyValue('overflow')) ||\r\n overflowRegex.test(styleDeclaration.getPropertyValue('overflowX')) ||\r\n overflowRegex.test(styleDeclaration.getPropertyValue('overflowY'));\r\n };\r\n\r\n const parents = this.getParentElements(this.element.nativeElement);\r\n for (const parent of parents) {\r\n const scrollSelectors = parent.nodeType === 1 && parent.dataset['scrollselectors'];\r\n if (scrollSelectors) {\r\n const selectors = scrollSelectors.split(',');\r\n for (const selector of selectors) {\r\n const el = parent.querySelector(selector);\r\n if (el && overflowCheck(el)) {\r\n this.scrollUnlisteners.push(\r\n this.renderer.listen(el, 'scroll', () => this.deleteTooltip())\r\n );\r\n }\r\n }\r\n } else if (parent.nodeType !== 9 && overflowCheck(parent)) {\r\n this.scrollUnlisteners.push(\r\n this.renderer.listen(parent, 'scroll', () => this.deleteTooltip())\r\n );\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Invoke scroll unlisten functions and clear unlisteners list\r\n * @private\r\n */\r\n private removeScrollListeners(): void {\r\n for (const unlisten of this.scrollUnlisteners) {\r\n unlisten();\r\n }\r\n\r\n this.scrollUnlisteners = [];\r\n }\r\n\r\n /**\r\n * Get the parent elements for the input element\r\n * @param element the element to get parents for\r\n * @param parents the parent elements\r\n * @private\r\n */\r\n private getParentElements(element: any, parents: Array<any> = []): Array<any> {\r\n const { parentNode } = element;\r\n return !parentNode\r\n ? parents\r\n : this.getParentElements(parentNode, parents.concat([parentNode]));\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {Md5} from 'md5-typescript';\r\n\r\n/**\r\n * Profile Pic display shortcut\r\n */\r\n@Component({\r\n selector: 'particle-profile-pic',\r\n styleUrls: ['./profile-pic.component.css'],\r\n template: `\r\n <div class=\"ptl_profile_pic\"\r\n [style.height]=\"size\"\r\n [style.width]=\"size\"\r\n [style.margin]=\"margin\"\r\n [style.background-image]=\"url\"\r\n [particleTooltip]=\"toolTip\"\r\n [tooltipDisabled]=\"tooltipDisabled\"\r\n tooltipPosition=\"top\">\r\n </div>`\r\n})\r\nexport class ProfilePicComponent {\r\n\r\n /**\r\n * Size of the profile pic circle (default to 50px)\r\n */\r\n @Input()\r\n size = '50px';\r\n\r\n /**\r\n * Configurable CSS Margin\r\n */\r\n @Input()\r\n margin = '0';\r\n\r\n /**\r\n * Tooltip to explain what the picture is\r\n */\r\n @Input()\r\n toolTip: string = null as any;\r\n\r\n /**\r\n * Disable the tooltip\r\n */\r\n @Input()\r\n tooltipDisabled: boolean = false;\r\n\r\n /**\r\n * Use gravatar instead of a custom image\r\n */\r\n @Input()\r\n set gravatarEmail(gravatarEmail: string) {\r\n this.url = `url(https://www.gravatar.com/avatar/${Md5.init(gravatarEmail.trim().toLowerCase())}?d=retro&s=${this.size.substring(0, this.size.length - 2)})`;\r\n }\r\n\r\n /**\r\n * Image URL of the profile pic\r\n */\r\n @Input()\r\n set imageUrl(imageUrl: string) {\r\n this.url = `url(${imageUrl})`;\r\n }\r\n\r\n url: string = null as any;\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TooltipDirective } from './tooltip.directive';\n\n@NgModule({\n declarations: [TooltipDirective],\n imports: [CommonModule],\n exports: [TooltipDirective]\n})\nexport class ParticleTooltipModule { }\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {ProfilePicComponent} from './profile-pic.component';\r\nimport {ParticleTooltipModule} from '../tooltip/tooltip.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n ProfilePicComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n ParticleTooltipModule\r\n ],\r\n exports: [\r\n ProfilePicComponent\r\n ]\r\n})\r\nexport class ParticleProfilePicModule {\r\n}\r\n","import {AfterViewInit, Component, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output} from '@angular/core';\r\nimport {PushContainerState} from './push-container-state.model';\r\nimport {BehaviorSubject} from 'rxjs';\r\nimport {PushContainerText} from '../../shared/models/particle-component-text.model';\r\n\r\n/**\r\n * Push Container that'll either push the content or overlay the content based on screen width.\r\n */\r\n@Component({\r\n selector: 'particle-push-container',\r\n templateUrl: './push-container.component.html',\r\n styleUrls: ['./push-container.component.css']\r\n})\r\nexport class PushContainerComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n private _width = 230;\r\n\r\n /**\r\n * Width of the container in pixels.\r\n */\r\n @Input()\r\n set width(width: number) {\r\n this._width = width;\r\n this.setMargin(width + 'px');\r\n this.updateContainerState();\r\n }\r\n\r\n get width(): number {\r\n return this._width;\r\n }\r\n\r\n /**\r\n * Show the side panel on load?\r\n */\r\n @Input()\r\n showSidePanel = false;\r\n\r\n /**\r\n * Main Content ID that will be pushed by this\r\n */\r\n @Input()\r\n mainContentId: string = null as any;\r\n\r\n /**\r\n * Side to push from (left/right)\r\n */\r\n @Input()\r\n side = 'left';\r\n\r\n /**\r\n * Top offset to account for a nav bar\r\n */\r\n @Input()\r\n set topOffset(topOffset: string) {\r\n this._topOffset = topOffset;\r\n this._originalTopOffset = topOffset;\r\n this.setDefaultHeight();\r\n this.updateContainerState();\r\n }\r\n\r\n get topOffset(): string {\r\n return this._topOffset;\r\n }\r\n\r\n private _topOffset = '0px';\r\n\r\n @Input()\r\n set bottomOffset(bottomOffset: string) {\r\n this._bottomOffset = bottomOffset;\r\n this.setDefaultHeight();\r\n this.updateContainerState();\r\n }\r\n\r\n get bottomOffset(): string {\r\n return this._bottomOffset;\r\n }\r\n\r\n private _bottomOffset = '0px';\r\n\r\n /**\r\n * If the screen resizes, it will either overlay or close depending on this variable\r\n */\r\n @Input()\r\n closeOnResize = false;\r\n\r\n /**\r\n * Background color for the container\r\n */\r\n @Input()\r\n backgroundColorClass = 'content_color';\r\n\r\n /**\r\n * Breakpoint that will make the container take over the screen when it's crossed.\r\n */\r\n @Input()\r\n breakpoint = 769;\r\n\r\n /**\r\n * Whether to always hide the close button, defaults to false.\r\n */\r\n @Input()\r\n hideCloseButton = false;\r\n\r\n @Input()\r\n showTabOnClose = false;\r\n\r\n @Input()\r\n tabColorClass = 'content_color_dark_2';\r\n\r\n @Input()\r\n text: PushContainerText = {\r\n close: 'Close',\r\n expand: 'Expand'\r\n } as PushContainerText;\r\n\r\n /**\r\n * Event emitter for open\r\n */\r\n @Output()\r\n opened: EventEmitter<any> = new EventEmitter();\r\n\r\n /**\r\n * Event emitter for close\r\n */\r\n @Output()\r\n closed: EventEmitter<any> = new EventEmitter();\r\n\r\n /**\r\n * Visibility variable for accessibility\r\n */\r\n visibility = false;\r\n\r\n private unclickable: boolean = false;\r\n\r\n /**\r\n * Private variable to detect if the breakpoint is exceeded\r\n */\r\n breakpointExceeded = false;\r\n\r\n containerState: BehaviorSubject<PushContainerState> = new BehaviorSubject<PushContainerState>({} as PushContainerState);\r\n\r\n zIndex: string = null as any;\r\n private _height: string = null as any;\r\n\r\n private _lastWidth = 0;\r\n private _originalTopOffset: string = null as any;\r\n private _originalHideCloseButton: boolean = null as any;\r\n\r\n /**\r\n * Constructor\r\n */\r\n ngOnInit(): void {\r\n this.visibility = this.showSidePanel;\r\n }\r\n\r\n /**\r\n * Show or close the push container on load depending on the state passed in.\r\n */\r\n ngAfterViewInit(): void {\r\n this._lastWidth = window.innerWidth;\r\n this._originalTopOffset = this.topOffset + '';\r\n this._originalHideCloseButton = Boolean(this.hideCloseButton);\r\n this.setDefaultHeight();\r\n\r\n const element = document.getElementById(this.mainContentId);\r\n\r\n if (element) {\r\n element.style.transition = 'all 0.2s ease-in-out';\r\n }\r\n\r\n if (window.innerWidth > 768 && this.showSidePanel) {\r\n this.setMargin(this.width + 'px');\r\n } else {\r\n setTimeout(() => {\r\n this.close();\r\n }, 100);\r\n }\r\n\r\n setTimeout(() => {\r\n if (this.breakpoint && (window.innerWidth <= this.breakpoint)) {\r\n this.breakpointExceeded = true;\r\n }\r\n\r\n this.updateContainerState();\r\n });\r\n }\r\n\r\n /**\r\n * Close the push container on destroy\r\n */\r\n ngOnDestroy(): void {\r\n this.showTabOnClose = false;\r\n this.close();\r\n }\r\n\r\n /**\r\n * Monitor the screen size and perform actions as specified by the input options\r\n *\r\n * @param event\r\n */\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event: any): void {\r\n if (event.target.innerWidth <= 768 && this._lastWidth > 768 && this.showSidePanel) {\r\n if (this.closeOnResize) {\r\n this.showSidePanel = false;\r\n setTimeout(() => this.visibility = false, 200);\r\n this.closed.emit();\r\n }\r\n\r\n this.setMargin('0px');\r\n } else if (event.target.innerWidth > 768 && this.showSidePanel) {\r\n this.setMargin(this.width + 'px');\r\n this.topOffset = this._originalTopOffset + '';\r\n this.hideCloseButton = Boolean(this._originalHideCloseButton);\r\n this.zIndex = null as any;\r\n this.setDefaultHeight();\r\n }\r\n\r\n if (event.target.innerWidth > 768 && this._lastWidth <= 768 && this.closeOnResize) {\r\n this.showSidePanel = true;\r\n this.visibility = true;\r\n this.opened.emit();\r\n\r\n this.setMargin(this.width + 'px');\r\n }\r\n\r\n if (this.breakpoint) {\r\n this.breakpointExceeded = event.target.innerWidth < this.breakpoint;\r\n }\r\n\r\n this.updateContainerState();\r\n this._lastWidth = event.target.innerWidth;\r\n }\r\n\r\n /**\r\n * Open or close based on current state.\r\n */\r\n toggle(): void {\r\n if (!this.unclickable) {\r\n this.unclickable = true;\r\n setTimeout(() => this.unclickable = false, 500);\r\n\r\n if (this.showSidePanel) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Open the push container\r\n *\r\n * @param init\r\n */\r\n open(init?: boolean): void {\r\n if (init && window.innerWidth <= 768) {\r\n return;\r\n }\r\n\r\n this.visibility = true;\r\n this.showSidePanel = true;\r\n this.opened.emit({});\r\n\r\n if (window.innerWidth > 768) {\r\n this.setMargin(this.width + 'px');\r\n this._topOffset = this._originalTopOffset;\r\n } else {\r\n this._topOffset = '0';\r\n this.zIndex = 'var(--z-overlay)';\r\n this.hideCloseButton = false;\r\n this._height = '100%';\r\n }\r\n\r\n this.updateContainerState();\r\n }\r\n\r\n /**\r\n * Close the push container\r\n */\r\n close(): void {\r\n this.showSidePanel = false;\r\n this.closed.emit({});\r\n this.setMargin('0px');\r\n this.setDefaultHeight();\r\n this.updateContainerState();\r\n\r\n setTimeout(() => {\r\n this.visibility = false;\r\n this.topOffset = this._originalTopOffset + '';\r\n this.hideCloseButton = Boolean(this._originalHideCloseButton);\r\n this.zIndex = null as any;\r\n }, 200);\r\n }\r\n\r\n /**\r\n * Set the margin\r\n *\r\n * @param size\r\n */\r\n private setMargin(size: string): void {\r\n const element = document.getElementById(this.mainContentId);\r\n if (!element) {\r\n return;\r\n }\r\n\r\n if (this.showTabOnClose && size === '0px' && window.innerWidth > 768) {\r\n size = '15px';\r\n }\r\n\r\n if (this.side.toLowerCase() === 'left') {\r\n element.style.marginLeft = size;\r\n\r\n if (size === '0px') {\r\n element.style.removeProperty('margin-left');\r\n }\r\n } else if (this.side.toLowerCase() === 'right') {\r\n element.style.marginRight = size;\r\n\r\n if (size === '0px') {\r\n element.style.removeProperty('margin-right');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get the width of the container\r\n */\r\n getWidth(): string {\r\n if (this.breakpointExceeded && this.showSidePanel) {\r\n return '100%';\r\n } else {\r\n return this.width + 'px';\r\n }\r\n }\r\n\r\n /**\r\n * Get the side panel class based on the current state.\r\n */\r\n private getSidePanelClass(): string {\r\n if (this.showSidePanel) {\r\n return this.backgroundColorClass + ' layout_sidebar_active_' + this.side.toLowerCase();\r\n } else {\r\n return this.backgroundColorClass + ' layout_sidebar_inactive_' + this.side.toLowerCase();\r\n }\r\n }\r\n\r\n /**\r\n * Get the left size based on the options\r\n */\r\n private getLeftProperty(): string {\r\n if (this.side !== 'left') {\r\n return '';\r\n } else {\r\n if (this.showSidePanel) {\r\n return '0';\r\n } else {\r\n return '-' + this.width + 'px';\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get the right size based on the options\r\n */\r\n private getRightProperty(): string {\r\n if (this.side !== 'right') {\r\n return '';\r\n } else {\r\n if (this.showSidePanel) {\r\n return '0';\r\n } else {\r\n return '-' + (this.width + 20) + 'px';\r\n }\r\n }\r\n }\r\n\r\n private updateContainerState(): void {\r\n this.containerState.next({\r\n right: this.getRightProperty(),\r\n left: this.getLeftProperty(),\r\n sidePanelClass: this.getSidePanelClass(),\r\n height: this._height,\r\n topOffset: this._topOffset\r\n } as PushContainerState);\r\n }\r\n\r\n private setDefaultHeight(): void {\r\n const offset: number = +this.topOffset.replace(/\\D/g, \"\") +\r\n +this.bottomOffset.replace(/\\D/g, \"\");\r\n\r\n this._height = `calc(100% - ${offset}px)`;\r\n }\r\n\r\n}\r\n","<ng-container *ngIf=\"containerState | async as state\">\r\n <div class=\"layout_sidebar\"\r\n [ngClass]=\"state.sidePanelClass\"\r\n [style.top]=\"state.topOffset\"\r\n [style.height]=\"state.height\"\r\n [style.width]=\"(breakpointExceeded && showSidePanel) ? '100%' : width + 'px'\"\r\n [style.left]=\"state.left\"\r\n [style.right]=\"state.right\"\r\n [style.visibility]=\"visibility ? 'visible' : 'hidden'\"\r\n [style.z-index]=\"zIndex\">\r\n <div class=\"push_close_bar\" *ngIf=\"(!hideCloseButton || breakpointExceeded) && !hideCloseButton\">\r\n <button (click)=\"close()\" class=\"data_hide_button access\" tabindex=\"0\" [attr.aria-label]=\"text.close\">\r\n <i class=\"fas fa-times\"></i>\r\n </button>\r\n </div>\r\n <ng-container *ngIf=\"showSidePanel\">\r\n <ng-content></ng-content>\r\n </ng-container>\r\n </div>\r\n <button\r\n *ngIf=\"!visibility && showTabOnClose\"\r\n class=\"btn md side_panel_tab center_center hide_element access\"\r\n [ngClass]=\"tabColorClass\"\r\n [style.top]=\"state.topOffset\"\r\n [style.height]=\"'calc(100% - ' + state.topOffset + ')'\"\r\n (click)=\"open()\"\r\n [style.left]=\"side === 'left' ? 0 : undefined\"\r\n [style.right]=\"side !== 'left' ? 0 : undefined\"\r\n [particleTooltip]=\"text.expand\"\r\n [attr.aria-label]=\"text.expand\"\r\n tooltipPosition=\"right\"\r\n >\r\n <div class=\"text md\">\r\n <i [ngClass]=\"side === 'left' ? 'fas fa-angle-right' : 'fas fa-angle-left'\"></i>\r\n </div>\r\n </button>\r\n</ng-container>\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {PushContainerComponent} from './push-container.component';\r\nimport {ParticleTooltipModule} from '../tooltip/tooltip.module';\r\n\r\n@NgModule({\r\n declarations: [PushContainerComponent],\r\n imports: [\r\n CommonModule,\r\n ParticleTooltipModule\r\n ],\r\n exports: [\r\n PushContainerComponent\r\n ]\r\n})\r\nexport class ParticlePushContainerModule {\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {DialogComponent} from '../../modules/dialog/dialog.component';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DialogService {\r\n\r\n dialogs: DialogComponent[] = [];\r\n\r\n private escapeListener: (event: any) => void = event => {\r\n if (event.key === 'Esc' || event.key === 'Escape') {\r\n if (this.dialogs && this.dialogs.length) {\r\n let closeOverride = null;\r\n if ('getAttribute' in event.target) {\r\n closeOverride = (event.target as HTMLElement).getAttribute(\r\n 'data-dialog-close-override'\r\n );\r\n }\r\n\r\n if (closeOverride === null || closeOverride === '') {\r\n const topDialog = this.dialogs[this.dialogs.length - 1];\r\n\r\n if (topDialog.allowClose) {\r\n this.dialogs.pop();\r\n topDialog.close();\r\n event.stopPropagation();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n registerDialog(dialog: DialogComponent): void {\r\n if (dialog) {\r\n if (this.dialogs.length === 0) {\r\n window.addEventListener( 'keyup', this.escapeListener);\r\n document.body.classList.add('scroll_none');\r\n }\r\n this.dialogs.push(dialog);\r\n }\r\n }\r\n\r\n unregisterDialog(dialog: DialogComponent): void {\r\n if (this.dialogs.includes(dialog)) {\r\n this.dialogs = this.dialogs.filter(d => d !== dialog);\r\n }\r\n if (this.dialogs.length === 0) {\r\n window.removeEventListener( 'keyup', this.escapeListener);\r\n document.body.classList.remove('scroll_none');\r\n }\r\n }\r\n\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, Output, ViewChild} from '@angular/core';\r\nimport {DialogService} from '../../shared/services/dialog.service';\r\nimport {fromEvent, Observable} from 'rxjs';\r\nimport {map, startWith} from 'rxjs/operators';\r\nimport { animate, AnimationEvent, state, style, transition, trigger } from '@angular/animations';\r\nimport {DialogText} from '../../shared/models/particle-component-text.model';\r\n\r\n/**\r\n * Component to display a dialog with dynamic content\r\n */\r\n@Component({\r\n selector: 'particle-dialog',\r\n templateUrl: 'dialog.component.html',\r\n styleUrls: ['dialog.component.css'],\r\n animations: [\r\n trigger('dialog', [\r\n state('void', style({ transform: 'scale(0.5)', opacity: '0' })),\r\n transition('void => *', [\r\n style({ height: '*', width: '*' }),\r\n animate('.15s 0ms ease-in-out', style({ transform: 'scale(1)', opacity: '1' }) )\r\n ]),\r\n transition(':leave', [\r\n animate('.15s 0ms ease-in-out', style({ transform: 'scale(0.5)', opacity: '0' }))\r\n ]),\r\n ])\r\n ]\r\n})\r\nexport class DialogComponent {\r\n\r\n /**\r\n * Element reference to the dialog close button\r\n */\r\n @ViewChild('closeButton')\r\n closeButton: ElementRef<HTMLButtonElement> = null as any;\r\n\r\n /**\r\n * Observable to update the effective width of the dialog on screen resize\r\n */\r\n effectiveWidth$: Observable<string> = fromEvent(window, 'resize').pipe(\r\n startWith(window.innerWidth),\r\n map(_______ => window.innerWidth),\r\n map(windowWidth => {\r\n let width: number;\r\n if (this.width.includes('px')) {\r\n width = parseInt(this.width.substring(0, this.width.length - 2), 10);\r\n if (width > windowWidth) {\r\n width = windowWidth;\r\n }\r\n return width + 'px';\r\n }\r\n return this.width;\r\n })\r\n );\r\n\r\n /**\r\n * Object to operate whether the dialog is open/closed\r\n */\r\n private _object: any;\r\n\r\n /**\r\n * Object to operate whether the dialog is open/closed\r\n */\r\n @Input()\r\n set object(value: any) {\r\n if (this._object && !value) {\r\n this.dialogService.unregisterDialog(this);\r\n }\r\n if (!this._object && value) {\r\n this.dialogService.registerDialog(this);\r\n }\r\n this._object = value;\r\n }\r\n\r\n get object(): any {\r\n return this._object;\r\n }\r\n\r\n /**\r\n * Title to show at the top of the dialog\r\n */\r\n @Input()\r\n title: string = null as any;\r\n\r\n /**\r\n * Class to apply to the title of the dialog\r\n */\r\n @Input()\r\n titleClass = 'header_color';\r\n\r\n /**\r\n * Show or hide the title bar\r\n */\r\n @Input()\r\n showTitle = true;\r\n\r\n /**\r\n * Whether to show close button and allow escape to close\r\n */\r\n @Input()\r\n allowClose = true;\r\n\r\n /**\r\n * Class to apply to the body of the dialog\r\n */\r\n @Input()\r\n bodyClass = 'content_color';\r\n\r\n /**\r\n * Height of the dialog (can use any height measurement)\r\n */\r\n @Input()\r\n height = '500px';\r\n\r\n /**\r\n * Width of the dialog (can use any width measurement)\r\n */\r\n @Input()\r\n width = '900px';\r\n\r\n @Input()\r\n borderRadius = '0px';\r\n\r\n @Input()\r\n text: DialogText = {\r\n close: 'Close Dialog'\r\n } as DialogText;\r\n\r\n /**\r\n * Event Emitter for when the dialog is closed\r\n */\r\n @Output()\r\n closed: EventEmitter<any> = new EventEmitter();\r\n\r\n /**\r\n * Event emitted when dialog has finished opening\r\n */\r\n @Output()\r\n opened = new EventEmitter<void>();\r\n\r\n /**\r\n * Dependency injection site\r\n * @param dialogService the dialog service\r\n */\r\n constructor(private dialogService: DialogService) { }\r\n\r\n /**\r\n * Null the object to close the dialog, emit the close event.\r\n */\r\n close(): void {\r\n this._object = null;\r\n this.dialogService.unregisterDialog(this);\r\n }\r\n\r\n /**\r\n * Method for compatibility with legacy dialog API. Method does nothing.\r\n */\r\n open(): void { }\r\n\r\n /**\r\n * Emit closed/opened events based on state when dialog animation ends\r\n * @param event\r\n */\r\n onAnimationDone(event: AnimationEvent): void {\r\n if (event.fromState === 'void') {\r\n this.opened.emit();\r\n } else if (event.toState === 'void') {\r\n this.closed.emit();\r\n }\r\n }\r\n}\r\n","<div [ngClass]=\"{'particle_dialog_overlay' : object}\">\r\n <div *ngIf=\"object\"\r\n [@dialog] class=\"particle_dialog_container\"\r\n (@dialog.done)=\"onAnimationDone($event)\"\r\n [cdkTrapFocus]=\"true\"\r\n [cdkTrapFocusAutoCapture]=\"true\">\r\n <div class=\"col shadow particle_dialog_box\" [style.border-radius]=\"borderRadius\"\r\n *ngIf=\"effectiveWidth$ | async as effectiveWidth\"\r\n [ngStyle]=\"{'width': effectiveWidth, 'height': height}\">\r\n <!-- dialog header -->\r\n <div *ngIf=\"showTitle\" class=\"col\" [ngClass]=\"titleClass\">\r\n <div class=\"row v_center pad_5 space_between\">\r\n <div class=\"text lg bold paragraph\">\r\n {{title}}\r\n </div>\r\n <div>\r\n <ng-container *ngIf=\"allowClose\">\r\n <button class=\"access btnset clear\"\r\n [attr.aria-label]=\"text.close\"\r\n (click)=\"close()\">\r\n <div class=\"circle_20px ptl_brdr_color ptl_brdr_size ptl_input_bg_color\">\r\n <i class=\"fas fa-times\"></i>\r\n </div>\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <!-- dialog container -->\r\n <div class=\"row scroll_yauto center_center\" [ngClass]=\"bodyClass\">\r\n <div class=\"row_block width100 height100\">\r\n <!-- content -->\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n","import {AfterViewInit, Component, EventEmitter, forwardRef, Input, Output, ViewEncapsulation} from '@angular/core';\r\nimport {Editor} from '@tiptap/core';\r\nimport StarterKit from '@tiptap/starter-kit';\r\nimport Link from '@tiptap/extension-link';\r\nimport Placeholder from '@tiptap/extension-placeholder';\r\nimport TextAlign from '@tiptap/extension-text-align';\r\nimport Image from '@tiptap/extension-image';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {RichTextEditorText} from '../../shared/models/particle-component-text.model';\r\nimport {RichTextCapabilities} from './rich-text-capabilities.model';\r\n\r\nexport const RICH_TEXT_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RichTextComponent),\r\n multi: true\r\n};\r\n\r\n@Component({\r\n selector: 'particle-rich-text',\r\n templateUrl: './rich-text.component.html',\r\n styleUrls: ['./rich-text.component.css'],\r\n providers: [RICH_TEXT_VALUE_ACCESSOR],\r\n encapsulation: ViewEncapsulation.None\r\n\r\n})\r\nexport class RichTextComponent implements ControlValueAccessor, AfterViewInit {\r\n\r\n @Input()\r\n placeholder = '';\r\n\r\n @Input()\r\n hideControls = false;\r\n\r\n @Input()\r\n height = '100px';\r\n\r\n @Input()\r\n get readonly(): boolean {\r\n return this._editable;\r\n }\r\n\r\n set readonly(readonly: boolean) {\r\n this._editable = !readonly;\r\n this.editor.setEditable(this._editable);\r\n }\r\n\r\n @Input()\r\n text: RichTextEditorText = {\r\n heading1: 'Heading 1',\r\n heading2: 'Heading 2',\r\n bold: 'Bold',\r\n italic: 'Italic',\r\n strike: 'Strike',\r\n bulletedList: 'Bulleted List',\r\n orderedList: 'Ordered List',\r\n leftAlign: 'Left Align',\r\n centerAlign: 'Center Align',\r\n rightAlign: 'Right Align',\r\n justifyAlign: 'Justify Align',\r\n setLink: 'Set Link',\r\n removeLink: 'Remove Link',\r\n clearFormat: 'Clear Format',\r\n modifyLink: 'Modify Link',\r\n cancel: 'Cancel',\r\n update: 'Update',\r\n url: 'URL',\r\n addImage: 'Add Image',\r\n modifyImage: 'Modify Image'\r\n } as RichTextEditorText;\r\n\r\n @Input()\r\n capabilities = {\r\n heading: true,\r\n textDecoration: true,\r\n list: true,\r\n alignment: true,\r\n link: true,\r\n images: false\r\n } as RichTextCapabilities;\r\n\r\n @Input()\r\n borderRadius = '0px';\r\n\r\n @Output()\r\n textChanged = new EventEmitter<{\r\n htmlValue: string,\r\n textValue: string\r\n }>();\r\n\r\n showDialog: any = null;\r\n dialogLink: string = null as any;\r\n dialogType: string = null as any;\r\n\r\n /**\r\n * Function called on change\r\n */\r\n onChange: ((value: string) => void) | undefined;\r\n\r\n /**\r\n * Function called on touch\r\n */\r\n onTouched: (() => void) | undefined;\r\n\r\n private _value: string = null as any;\r\n private _editable = true;\r\n\r\n protected readonly window = window;\r\n\r\n editor = new Editor({\r\n extensions: [\r\n StarterKit,\r\n Link.configure({\r\n openOnClick: false,\r\n HTMLAttributes: {\r\n class: 'rich-text-link',\r\n target: '_blank'\r\n },\r\n }),\r\n TextAlign.configure({\r\n types: ['heading', 'paragraph'],\r\n\r\n }),\r\n Placeholder.configure({\r\n placeholder: () => this.placeholder\r\n }),\r\n Image\r\n ],\r\n editorProps: {\r\n attributes: {\r\n class: '',\r\n spellcheck: 'true',\r\n },\r\n },\r\n enablePasteRules: [Link, StarterKit, TextAlign]\r\n });\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n set value(value: string) {\r\n if (value === '<p></p>') {\r\n return;\r\n }\r\n\r\n if (value !== this._value) {\r\n this._value = value;\r\n if (this.onChange) {\r\n this.onChange(value);\r\n }\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.editor.setEditable(this._editable);\r\n\r\n this.editor.on('update', ({editor}) => {\r\n this.textChanged.emit({\r\n textValue: editor.getText(),\r\n htmlValue: this._value\r\n });\r\n });\r\n }\r\n\r\n onBlur(): void {\r\n if (this.onTouched) {\r\n this.onTouched();\r\n }\r\n }\r\n\r\n writeValue(value: string): void {\r\n if (value !== this._value) {\r\n this._value = value;\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.editor.setEditable(isDisabled);\r\n }\r\n\r\n openLinkDialog(): void {\r\n const previousUrl = this.editor.getAttributes('link').href;\r\n this.showDialog = {};\r\n this.dialogLink = previousUrl;\r\n this.dialogType = 'link';\r\n }\r\n\r\n openImageDialog(): void {\r\n const previousUrl = this.editor.getAttributes('image').src;\r\n this.showDialog = {};\r\n this.dialogLink = previousUrl;\r\n this.dialogType = 'image';\r\n }\r\n\r\n changeEditorLink(action: string): void {\r\n switch (action) {\r\n case 'remove':\r\n this.editor.chain().focus().extendMarkRange('link').unsetLink().run();\r\n break;\r\n case 'save':\r\n if (this.dialogType === 'link') {\r\n this.editor.chain().focus().extendMarkRange('link').setLink({ href: this.dialogLink, target: '_blank' }).run();\r\n } else if (this.dialogType === 'image') {\r\n this.editor.chain().focus().setImage({ src: this.dialogLink }).run()\r\n }\r\n break;\r\n default:\r\n console.log(action);\r\n }\r\n\r\n this.dialogLink = null as any;\r\n this.dialogType = null as any;\r\n this.showDialog = null as any;\r\n }\r\n\r\n focus(position?: any): void {\r\n if (!position) {\r\n position = 'start';\r\n }\r\n\r\n this.editor.commands.focus(position);\r\n }\r\n\r\n}\r\n","<div class=\"row_block width100 content_color ptl_brdr_radius ptl_brdr_color ptl_brdr_size\" style=\"overflow: hidden\">\r\n <ng-container *ngIf=\"!this.hideControls && this.editor.isEditable\">\r\n <div class=\"row ptl_input_bg_color ptl_brdr_color ptl_brdr_size border_bottom wrap hide_element\">\r\n <ng-container *ngIf=\"capabilities.heading\">\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\">\r\n <button\r\n id=\"heading1\"\r\n [attr.aria-label]=\"text.heading1\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right5 mar_left5 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.heading1\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleHeading({ level: 1 }).run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('heading', { level: 1 }) }\"\r\n >\r\n <i class=\"fas fa-header fa-fw\"></i>1\r\n </button>\r\n <button\r\n id=\"heading2\"\r\n [attr.aria-label]=\"text.heading2\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right5 mar_left5 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.heading2\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleHeading({ level: 2 }).run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('heading', { level: 2 }) }\"\r\n >\r\n <i class=\"fas fa-header fa-fw\"></i>2\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"capabilities.textDecoration\">\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\">\r\n <button\r\n id=\"bold\"\r\n [attr.aria-label]=\"text.bold\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.bold\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleBold().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('bold') }\"\r\n >\r\n <i class=\"fas fa-bold fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"italic\"\r\n [attr.aria-label]=\"text.italic\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.italic\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleItalic().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('italic') }\"\r\n >\r\n <i class=\"fas fa-italic fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"strike\"\r\n [attr.aria-label]=\"text.strike\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.strike\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleStrike().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('strike') }\"\r\n >\r\n <i class=\"fas fa-strikethrough fa-fw\"></i>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"capabilities.list\">\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\">\r\n <button\r\n id=\"bullet-list\"\r\n [attr.aria-label]=\"text.bulletedList\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.bulletedList\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleBulletList().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('bullet-list') }\"\r\n >\r\n <i class=\"fas fa-list fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"ordered-list\"\r\n [attr.aria-label]=\"text.orderedList\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.orderedList\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleOrderedList().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('ordered-list') }\"\r\n >\r\n <i class=\"fas fa-list-ol fa-fw\"></i>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"capabilities.alignment\">\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\">\r\n <button\r\n id=\"left-align\"\r\n [attr.aria-label]=\"text.leftAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.leftAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('left').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'left' }) }\"\r\n >\r\n <i class=\"fas fa-align-left fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"center-align\"\r\n [attr.aria-label]=\"text.centerAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.centerAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('center').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'center' }) }\"\r\n >\r\n <i class=\"fas fa-align-center fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"right-align\"\r\n [attr.aria-label]=\"text.rightAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.rightAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('right').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'right' }) }\"\r\n >\r\n <i class=\"fas fa-align-right fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"justify-align\"\r\n [attr.aria-label]=\"text.justifyAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.justifyAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('justify').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'justify' }) }\"\r\n >\r\n <i class=\"fas fa-align-justify fa-fw\"></i>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"capabilities.link\">\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\">\r\n <button\r\n id=\"link\"\r\n [attr.aria-label]=\"text.setLink\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.setLink\" tooltipPosition=\"top\"\r\n (click)=\"openLinkDialog()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('link') }\"\r\n >\r\n <i class=\"fas fa-link fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"unlink\"\r\n [attr.aria-label]=\"text.removeLink\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.removeLink\" tooltipPosition=\"top\"\r\n (click)=\"this.editor.isActive('link') ? changeEditorLink('remove') : null\"\r\n [disabled]=\"!this.editor.isActive('link')\"\r\n >\r\n <i class=\"fas fa-unlink fa-fw\"></i>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"capabilities.images\">\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\">\r\n <button\r\n id=\"image\"\r\n [attr.aria-label]=\"this.editor.isActive('image') ? text.modifyImage : text.addImage\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n (click)=\"openImageDialog()\"\r\n [particleTooltip]=\"this.editor.isActive('image') ? text.modifyImage : text.addImage\"\r\n tooltipPosition=\"top\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('image') }\"\r\n >\r\n <i class=\"far fa-image fa-fw\"></i>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <div class=\"col v_center pad_5\">\r\n <button\r\n id=\"clear-format\"\r\n [attr.aria-label]=\"text.clearFormat\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.clearFormat\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().clearNodes().unsetAllMarks().run()\"\r\n >\r\n <i class=\"fas fa-text-slash fa-fw\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"pad_10 ptl_input_text_size scroll_yauto\" [style.height]=\"this.height\">\r\n <tiptap-editor [editor]=\"editor\" [(ngModel)]=\"value\"></tiptap-editor>\r\n </div>\r\n</div>\r\n\r\n<particle-dialog\r\n [title]=\"dialogType === 'link' ? text.modifyLink : text.modifyImage\"\r\n titleClass=\"header_color min_h40\"\r\n [object]=\"showDialog\"\r\n [allowClose]=\"false\"\r\n [borderRadius]=\"borderRadius\"\r\n width=\"400px\"\r\n height=\"150px\"\r\n>\r\n <div class=\"pad_15 ptl_input_text_size\" [style.height]=\"window.innerWidth > 768 ? '70px' : 'calc(100% - 40px)'\">\r\n <input class=\"access input md\"\r\n [(ngModel)]=\"dialogLink\"\r\n [attr.aria-label]=\"text.url\"\r\n placeholder=\"eg. https://www.google.com\"\r\n (keyup.enter)=\"changeEditorLink('save')\"\r\n />\r\n </div>\r\n <div class=\"col min_h40 footer_color\">\r\n <div class=\"row center_right pad_right15 pad_left15\">\r\n <div class=\"col\">\r\n <button class=\"access btnset clear\" [attr.aria-label]=\"text.cancel\" (click)=\"changeEditorLink('cancel')\">\r\n <div class=\" pad_5\">{{text.cancel}}</div>\r\n </button>\r\n <div class=\"mar_lr5 ptl_brdr_size ptl_brdr_color border_left\">\r\n </div>\r\n <button\r\n type=\"button\"\r\n class=\"access btnset spaced md hov_glow ok_button_color ptl_brdr_radius\"\r\n [attr.aria-label]=\"text.update\"\r\n (click)=\"changeEditorLink('save')\"\r\n >\r\n <div class=\"brdr border_right mar_right5 pad_right5\"><i class=\"fas fa-check\"></i></div>\r\n <div>{{text.update}}</div>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</particle-dialog>\r\n","import {Component, Input} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'particle-render-rich-text',\r\n template: `<div class=\"ent_r2l_txt\" [innerHTML]=\"html | dompurify\"></div>`\r\n})\r\nexport class RenderRichTextComponent {\r\n\r\n @Input()\r\n html = '';\r\n\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {DialogComponent} from './dialog.component';\r\nimport {A11yModule} from '@angular/cdk/a11y';\r\n\r\n@NgModule({\r\n declarations: [\r\n DialogComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n A11yModule,\r\n ],\r\n exports: [\r\n DialogComponent\r\n ]\r\n})\r\nexport class ParticleDialogModule {\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {RichTextComponent} from './rich-text.component';\r\nimport {ParticleTooltipModule} from '../tooltip/tooltip.module';\r\nimport {NgxTiptapModule} from 'ngx-tiptap';\r\nimport {FormsModule} from '@angular/forms';\r\nimport {BrowserModule} from '@angular/platform-browser';\r\nimport {RenderRichTextComponent} from './render-rich-text.component';\r\nimport {DOMPURIFY_CONFIG, NgDompurifyModule} from '@tinkoff/ng-dompurify';\r\nimport {ParticleDialogModule} from '../dialog/dialog.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n RichTextComponent,\r\n RenderRichTextComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n ParticleTooltipModule,\r\n NgxTiptapModule,\r\n FormsModule,\r\n BrowserModule,\r\n NgDompurifyModule,\r\n ParticleDialogModule\r\n ],\r\n providers: [\r\n {\r\n provide: DOMPURIFY_CONFIG,\r\n useValue: {ADD_ATTR: ['target']},\r\n },\r\n ],\r\n exports: [\r\n RichTextComponent,\r\n RenderRichTextComponent\r\n ]\r\n})\r\nexport class ParticleRichTextModule {\r\n}\r\n","/**\n * Particle Icons - Regular\n */\nexport class ParticleIconsRegular {\n\n /**\n * wir fa-address\n */\n static wirAddress = {\n prefix: 'wir',\n iconName: 'address',\n icon: [\n 24, 24,\n [],\n null, 'M6.4751,3.1108A7.7974,7.7974,0,0,0,5.3179,12.686L11.145,22.3a1,1,0,0,0,1.71,0l5.8276-9.6143A7.8137,7.8137,0,0,0,6.4751,3.1108Zm10.4966,8.5381L12,19.8516,7.0283,11.6494a5.8138,5.8138,0,1,1,9.9434-.0005ZM12,4.5a4,4,0,1,0,4,4A4.0045,4.0045,0,0,0,12,4.5Zm0,6a2,2,0,1,1,2-2A2.002,2.002,0,0,1,12,10.5Z'\n ]\n };\n\n /**\n * wir fa-alpha-text\n */\n static wirAlphaText = {\n prefix: 'wir',\n iconName: 'alpha-text',\n icon: [\n 24, 24,\n [],\n null, 'M9,5h2V3H5V5H7V6H4.35A2.5259,2.5259,0,0,0,2,8.6665V15.333A2.526,2.526,0,0,0,4.35,18H7v1H5v2h6V19H9ZM4.35,16c-.123,0-.35-.2529-.35-.667V8.6665C4,8.2529,4.2266,8,4.35,8H7v8ZM22,8.6665V15.333A2.5614,2.5614,0,0,1,19.5654,18H10V16h9.5654c.2051,0,.4346-.2852.4346-.667V8.6665C20,8.2852,19.7705,8,19.5654,8H10V6h9.5654A2.5612,2.5612,0,0,1,22,8.6665ZM14,15V11a2,2,0,0,0-4,0v4h1V13h2v2Zm-3-3V11a1,1,0,0,1,2,0v1Zm5-3v6h1a2,2,0,0,0,0-4V9Zm2,4a1.0006,1.0006,0,0,1-1,1V12A1.0009,1.0009,0,0,1,18,13Z'\n ]\n };\n\n /**\n * wir fa-checkbox\n */\n static wirCheckbox = {\n prefix: 'wir',\n iconName: 'checkbox',\n icon: [\n 24, 24,\n [],\n null, 'M22,7.2642V19.4121A2.5911,2.5911,0,0,1,19.4121,22H4.5879A2.5911,2.5911,0,0,1,2,19.4121V4.5884A2.5912,2.5912,0,0,1,4.5879,2H21V4H4.5879A.589.589,0,0,0,4,4.5884V19.4121A.5885.5885,0,0,0,4.5879,20H19.4121A.5885.5885,0,0,0,20,19.4121V9.6729l-6.1709,6.1513a2.5907,2.5907,0,0,1-3.6572-.0029L6.5283,12.1777l1.4141-1.414,3.6435,3.6435a.59.59,0,0,0,.8311.001l7.8769-7.852A1,1,0,0,1,22,7.2642Z'\n ]\n };\n\n /**\n * wir fa-date\n */\n static wirDate = {\n prefix: 'wir',\n iconName: 'date',\n icon: [\n 24, 24,\n [],\n null, 'M22,6.4116V19.5879A2.4191,2.4191,0,0,1,19.5791,22H4.4209A2.4191,2.4191,0,0,1,2,19.5879V6.4116A2.419,2.419,0,0,1,4.4209,4H6V2H8V6H4.4209A.4166.4166,0,0,0,4,6.4116V19.5879A.4167.4167,0,0,0,4.4209,20H19.5791A.4167.4167,0,0,0,20,19.5879V10H6V8H20V6.4116A.4166.4166,0,0,0,19.5791,6H19V4h.5791A2.419,2.419,0,0,1,22,6.4116ZM17,6V2H15V4H10V6h7ZM8,12H6v2H8Zm5,0H11v2h2Zm5,0H16v2h2ZM6,18H8V16H6Zm5,0h2V16H11Zm5,0h2V16H16Z'\n ]\n };\n\n /**\n * wir fa-date-range\n */\n static wirDateRange = {\n prefix: 'wir',\n iconName: 'date-range',\n icon: [\n 24, 24,\n [],\n null, 'M22,6.4116V19.5879A2.4191,2.4191,0,0,1,19.5791,22H4.4209A2.4191,2.4191,0,0,1,2,19.5879V6.4116A2.419,2.419,0,0,1,4.4209,4H6V2H8V6H4.4209A.4166.4166,0,0,0,4,6.4116V19.5879A.4167.4167,0,0,0,4.4209,20H19.5791A.4167.4167,0,0,0,20,19.5879V10H6V8H20V6.4116A.4166.4166,0,0,0,19.5791,6H19V4h.5791A2.419,2.419,0,0,1,22,6.4116ZM17,6V2H15V4H10V6h7ZM8.793,11.793,5.0859,15.5,8.793,19.207l1.414-1.414L7.9141,15.5l2.2929-2.293Zm6.414,7.414L18.9141,15.5,15.207,11.793l-1.414,1.414L16.0859,15.5,13.793,17.793Z'\n ]\n };\n\n /**\n * wir fa-divider\n */\n static wirDivider = {\n prefix: 'wir',\n iconName: 'divider',\n icon: [\n 512, 512,\n [],\n null, 'M512,254v34H14A14,14,0,0,1,0,274V254a14,14,0,0,1,14-14H498A14,14,0,0,1,512,254ZM256,108.28l79.5,79.5,28.28-28.28L256,51.72,148.22,159.5l28.28,28.28Zm0,311.44-79.5-79.5L148.22,368.5,256,476.28,363.78,368.5,335.5,340.22Z'\n ]\n };\n\n /**\n * wir fa-document-upload\n */\n static wirDocumentUpload = {\n prefix: 'wir',\n iconName: 'document-upload',\n icon: [\n 24, 24,\n [],\n null, 'M16.1123,2.2983A.9981.9981,0,0,0,15.4,2h-7A2.4136,2.4136,0,0,0,6,4.4209V9.7548L1.9219,14.0117l1.4433,1.3828L7,11.6016l3.6348,3.7929,1.4433-1.3828L8,9.7548V4.4209A.4117.4117,0,0,1,8.4,4H13V8.5A2.5026,2.5026,0,0,0,15.5,11H20v8.5791A.4114.4114,0,0,1,19.6,20H8.4a.4114.4114,0,0,1-.4-.4209V14.8418H6v4.7373A2.4136,2.4136,0,0,0,8.4,22H19.6A2.4136,2.4136,0,0,0,22,19.5791V8.6841a.9987.9987,0,0,0-.2881-.7017ZM15,8.5V4.0189L19.9077,9H15.5A.5006.5006,0,0,1,15,8.5Z'\n ]\n };\n\n /**\n * wir fa-dropdown\n */\n static wirDropdown = {\n prefix: 'wir',\n iconName: 'dropdown',\n icon: [\n 24, 24,\n [],\n null, 'M19.5,2H4.5A2.5026,2.5026,0,0,0,2,4.5v15A2.5023,2.5023,0,0,0,4.5,22h15A2.5023,2.5023,0,0,0,22,19.5V4.5A2.5026,2.5026,0,0,0,19.5,2ZM20,19.5a.501.501,0,0,1-.5.5H4.5a.501.501,0,0,1-.5-.5V4.5A.5006.5006,0,0,1,4.5,4h15a.5006.5006,0,0,1,.5.5ZM16.793,8.793l1.414,1.414-4.4394,4.4395a2.5016,2.5016,0,0,1-3.5352,0L5.793,10.207,7.207,8.793l4.44,4.4394a.5.5,0,0,0,.707,0Z'\n ]\n };\n\n /**\n * wir fa-email\n */\n static wirEmail = {\n prefix: 'wir',\n iconName: 'email',\n icon: [\n 24, 24,\n [],\n null, 'M19.5,5H4.5A2.5026,2.5026,0,0,0,2,7.5v9A2.5023,2.5023,0,0,0,4.5,19h15A2.5023,2.5023,0,0,0,22,16.5v-9A2.5026,2.5026,0,0,0,19.5,5Zm.4855,11.5715L17.207,13.793l-1.414,1.414L17.5859,17H6.4141L8.207,15.207,6.793,13.793,4.0145,16.5714A.4754.4754,0,0,1,4,16.5V8.4141l8,8,8-8V16.5A.467.467,0,0,1,19.9855,16.5715ZM5.4141,7H18.5859L12,13.5859Z'\n ]\n };\n\n /**\n * wir fa-fein\n */\n static wirFEIN = {\n prefix: 'wir',\n iconName: 'fein',\n icon: [\n 24, 24,\n [],\n null,\n 'M3,7H8V9H4v3H8v2H4v2H8v2H3a1,1,0,0,1-1-1V8A1,1,0,0,1,3,7Zm8,11h2V7H11ZM20,7v5.2881L17.9136,7.5938A1,1,0,0,0,16,8V18h2V12.7119l2.0864,4.6944A1,1,0,0,0,22,17V7Z'\n ]\n };\n\n /**\n * wir fa-html\n */\n static wirHTML = {\n prefix: 'wir',\n iconName: 'html',\n icon: [\n 24, 24,\n [],\n null, 'M20.5,4H3.5A2.5026,2.5026,0,0,0,1,6.5v11A2.5023,2.5023,0,0,0,3.5,20h17A2.5023,2.5023,0,0,0,23,17.5V6.5A2.5026,2.5026,0,0,0,20.5,4ZM21,17.5a.501.501,0,0,1-.5.5H3.5a.501.501,0,0,1-.5-.5V6.5A.5006.5006,0,0,1,3.5,6h17a.5006.5006,0,0,1,.5.5ZM9.207,9.207,6.4141,12,9.207,14.793,7.793,16.207,3.5859,12,7.793,7.793Zm7-1.414L20.4141,12,16.207,16.207l-1.414-1.414L17.5859,12,14.793,9.207Zm-3.6552-.6094,1.8964.6328-3,9-1.8964-.6328Z'\n ]\n };\n\n /**\n * wir fa-license\n */\n static wirLicense = {\n prefix: 'wir',\n iconName: 'license',\n icon: [\n 24, 24,\n [],\n null, 'M20.5,4H3.5A2.5026,2.5026,0,0,0,1,6.5v11A2.5023,2.5023,0,0,0,3.5,20h17A2.5023,2.5023,0,0,0,23,17.5V6.5A2.5026,2.5026,0,0,0,20.5,4ZM21,17.5a.501.501,0,0,1-.5.5H11V16.3125A2.2846,2.2846,0,0,0,8.75,14H6.25A2.2846,2.2846,0,0,0,4,16.3125V18H3.5a.501.501,0,0,1-.5-.5V6.5A.5006.5006,0,0,1,3.5,6h17a.5006.5006,0,0,1,.5.5ZM6.9189,8H10v3.0815A1.9213,1.9213,0,0,1,8.0811,13H6.9189A1.9213,1.9213,0,0,1,5,11.0815V9.9185A1.9213,1.9213,0,0,1,6.9189,8ZM13,8h6v2H13Zm4,5H13V11h4Zm-4,1h6v2H13Z'\n ]\n };\n\n /**\n * wir fa-mmis-npi\n */\n static wirMMISNPI = {\n prefix: 'wir',\n iconName: 'mmis-npi',\n icon: [\n 24, 24,\n [],\n null, 'M7,12H9v9a1.0014,1.0014,0,0,1-.7705.9736A1.0206,1.0206,0,0,1,8,22a.9994.9994,0,0,1-.8945-.5527L5,17.2363V22H3V13a1,1,0,0,1,1.8945-.4473L7,16.7637Zm11,3.5A3.5042,3.5042,0,0,1,14.5,19H13v3H11V13a1,1,0,0,1,1-1h2.5A3.5042,3.5042,0,0,1,18,15.5Zm-2,0A1.5017,1.5017,0,0,0,14.5,14H13v3h1.5A1.5017,1.5017,0,0,0,16,15.5ZM19,12V22h2V12Zm-6.5-1.5059A4.493,4.493,0,1,1,17,6V7H10.207a2.53,2.53,0,0,0,.375.6,2.575,2.575,0,0,0,3.5508.2891L15.44,9.4023A4.4985,4.4985,0,0,1,12.5,10.4941ZM10.2041,5H14.791a2.5063,2.5063,0,0,0-4.5869,0Z'\n ]\n };\n\n /**\n * wir fa-money\n */\n static wirMoney = {\n prefix: 'wir',\n iconName: 'money',\n icon: [\n 24, 24,\n [],\n null, 'M10,9.5c0,.813.916,1.5,2,1.5a3.7793,3.7793,0,0,1,4,3.5,3.6194,3.6194,0,0,1-3,3.3757V19H11V17.8757A3.6194,3.6194,0,0,1,8,14.5h2c0,.8135.916,1.5,2,1.5s2-.6865,2-1.5S13.084,13,12,13A3.7793,3.7793,0,0,1,8,9.5a3.6194,3.6194,0,0,1,3-3.3757V5h2V6.1243A3.6194,3.6194,0,0,1,16,9.5H14c0-.813-.916-1.5-2-1.5S10,8.687,10,9.5ZM22,12A10,10,0,1,1,12,2,10.0117,10.0117,0,0,1,22,12Zm-2,0a8,8,0,1,0-8,8A8.0092,8.0092,0,0,0,20,12Z'\n ]\n };\n\n /**\n * wir fa-multi-select\n */\n static wirMultiSelect = {\n prefix: 'wir',\n iconName: 'multi-select',\n icon: [\n 24, 24,\n [],\n null, 'M8.5,2h-4A2.5026,2.5026,0,0,0,2,4.5v4A2.5026,2.5026,0,0,0,4.5,11h4A2.5026,2.5026,0,0,0,11,8.5v-4A2.5026,2.5026,0,0,0,8.5,2Zm0,7h-4A.5006.5006,0,0,1,4,8.5v-4A.5006.5006,0,0,1,4.5,4h4a.467.467,0,0,1,.0715.0145L6.5,6.0859,5.707,5.293,4.293,6.707,6.5,8.9141l2.5-2.5V8.5A.5006.5006,0,0,1,8.5,9Zm0,4h-4A2.5023,2.5023,0,0,0,2,15.5v4A2.5023,2.5023,0,0,0,4.5,22h4A2.5023,2.5023,0,0,0,11,19.5v-4A2.5023,2.5023,0,0,0,8.5,13Zm0,7h-4a.501.501,0,0,1-.5-.5v-4a.501.501,0,0,1,.5-.5h4a.4646.4646,0,0,1,.0715.0145L6.5,17.0859l-.793-.7929L4.293,17.707,6.5,19.9141l2.5-2.5V19.5A.501.501,0,0,1,8.5,20ZM12,4H22V6H12Zm0,11H22v2H12Zm8-5H12V8h8Zm-8,9h8v2H12Z'\n ]\n };\n\n /**\n * wir fa-npi\n */\n static wirNPI = {\n prefix: 'wir',\n iconName: 'npi',\n icon: [\n 24, 24,\n [],\n null, 'M11,7H8V5h3V2h2V5h3V7H13v3H11ZM7,16.7637l-2.1055-4.211A1,1,0,0,0,3,13v9H5V17.2363l2.1055,4.211A.9994.9994,0,0,0,8,22a1.0206,1.0206,0,0,0,.2295-.0264A1.0014,1.0014,0,0,0,9,21V12H7ZM18,15.5A3.5042,3.5042,0,0,1,14.5,19H13v3H11V13a1,1,0,0,1,1-1h2.5A3.5042,3.5042,0,0,1,18,15.5Zm-2,0A1.5017,1.5017,0,0,0,14.5,14H13v3h1.5A1.5017,1.5017,0,0,0,16,15.5ZM19,12V22h2V12Z'\n ]\n };\n\n /**\n * wir fa-numeric-text\n */\n static wirNumericText = {\n prefix: 'wir',\n iconName: 'numeric-text',\n icon: [\n 24, 24,\n [],\n null, 'M9,5h2V3H5V5H7V6H4.35A2.5259,2.5259,0,0,0,2,8.6665V15.333A2.526,2.526,0,0,0,4.35,18H7v1H5v2h6V19H9ZM4.35,16c-.123,0-.35-.2529-.35-.667V8.6665C4,8.2529,4.2266,8,4.35,8H7v8ZM22,8.6665V15.333A2.5614,2.5614,0,0,1,19.5654,18H10V16h9.5654c.2051,0,.4346-.2852.4346-.667V8.6665C20,8.2852,19.7705,8,19.5654,8H10V6h9.5654A2.5612,2.5612,0,0,1,22,8.6665ZM12,9v5h1v1H10V14h1V10H10V9Zm5,1.7358A.7368.7368,0,0,0,16.2637,10H15V9h1.2637a1.7361,1.7361,0,0,1,.7763,3.2891A1.8712,1.8712,0,0,0,16,13.9717V14h2v1H15V13.9717a2.866,2.866,0,0,1,1.5928-2.5772A.7326.7326,0,0,0,17,10.7358Z'\n ]\n };\n\n /**\n * wir fa-person-name\n */\n static wirPersonName = {\n prefix: 'wir',\n iconName: 'person-name',\n icon: [\n 512, 512,\n [],\n null, 'M429.41,303.14l-30.23-10.08a98.6,98.6,0,0,0-62.36,0h0a255.49,255.49,0,0,1-161.64,0h0a98.6,98.6,0,0,0-62.36,0L82.59,303.14A74,74,0,0,0,32,373.32l9.93,76.13a53.46,53.46,0,0,0,53,46.55H417.06a53.46,53.46,0,0,0,53-46.55L480,373.32A74,74,0,0,0,429.41,303.14Zm8.93,142.17A21.52,21.52,0,0,1,417.06,464H384V416a16,16,0,0,0-32,0v48H160V416a16,16,0,0,0-32,0v48H94.94a21.52,21.52,0,0,1-21.28-18.69L64,371.54a41.91,41.91,0,0,1,28.67-38l30.23-10.08a66.55,66.55,0,0,1,42.12,0,287.53,287.53,0,0,0,181.88,0,66.55,66.55,0,0,1,42.12,0l30.23,10.08a41.91,41.91,0,0,1,28.67,38ZM186.29,252l1.78,1.17a132,132,0,0,0,135.86,0h0a108.12,108.12,0,0,0,48.12-81.88L384,16H189.55A61.55,61.55,0,0,0,128,77.55l10.49,96A108.19,108.19,0,0,0,186.29,252Zm153.86-83.16a76.22,76.22,0,0,1-33.31,57.27,100,100,0,0,1-101.74,0l-1.14-.75A76,76,0,0,1,170.3,170.1l-5.74-52.58L196.84,96H315.16l29.1,19.4ZM189.55,48H349.44l-2.37,30.82L324.84,64H187.16L160.64,81.68,160,76.12A29.6,29.6,0,0,1,189.55,48Z'\n ]\n };\n\n /**\n * wir fa-phone\n */\n static wirPhone = {\n prefix: 'wir',\n iconName: 'phone',\n icon: [\n 24, 24,\n [],\n null, 'M19.5791,6H10.95A2.5038,2.5038,0,0,0,8.5,4h-1A2.5038,2.5038,0,0,0,5.0505,6h-.63A2.4057,2.4057,0,0,0,2,8.3848v9.23A2.4054,2.4054,0,0,0,4.4209,20H19.5791A2.4054,2.4054,0,0,0,22,17.6152v-9.23A2.4057,2.4057,0,0,0,19.5791,6ZM17.5,8v.5A.5006.5006,0,0,1,17,9H14a.5006.5006,0,0,1-.5-.5V8ZM7.5,6h1a.5006.5006,0,0,1,.5.5v8a.501.501,0,0,1-.5.5h-1a.501.501,0,0,1-.5-.5v-8A.5006.5006,0,0,1,7.5,6ZM20,17.6152A.4045.4045,0,0,1,19.5791,18H4.4209A.4045.4045,0,0,1,4,17.6152v-9.23A.4045.4045,0,0,1,4.4209,8H5v6.5A2.5023,2.5023,0,0,0,7.5,17h1A2.5023,2.5023,0,0,0,11,14.5V8h.5v.5A2.5026,2.5026,0,0,0,14,11h3a2.5026,2.5026,0,0,0,2.5-2.5V8h.0791A.4045.4045,0,0,1,20,8.3848ZM13,12h2v2H13Zm3,0h2v2H16Zm-3,3h2v2H13Zm3,0h2v2H16Z'\n ]\n };\n\n /**\n * wir fa-pid\n */\n static wirPID = {\n prefix: 'wir',\n iconName: 'pid',\n icon: [\n 24, 24,\n [],\n null, 'M20.5,4H3.5A2.5026,2.5026,0,0,0,1,6.5v11A2.5023,2.5023,0,0,0,3.5,20h17A2.5023,2.5023,0,0,0,23,17.5V6.5A2.5026,2.5026,0,0,0,20.5,4ZM21,17.5a.501.501,0,0,1-.5.5H11V16.3125A2.2846,2.2846,0,0,0,8.75,14H6.25A2.2846,2.2846,0,0,0,4,16.3125V18H3.5a.501.501,0,0,1-.5-.5V6.5A.5006.5006,0,0,1,3.5,6h17a.5006.5006,0,0,1,.5.5ZM13,8h6v2H13Zm3,6h2v1H16v2H15V15H13V14h2V12h1ZM6.9189,8H10v3.0815A1.9213,1.9213,0,0,1,8.0811,13H6.9189A1.9213,1.9213,0,0,1,5,11.0815V9.9185A1.9213,1.9213,0,0,1,6.9189,8Z'\n ]\n };\n\n /**\n * wir fa-radio-buttons\n */\n static wirRadioButtons = {\n prefix: 'wir',\n iconName: 'radio-buttons',\n icon: [\n 24, 24,\n [],\n null, 'M8,6.5A1.5,1.5,0,1,1,6.5,5,1.5,1.5,0,0,1,8,6.5Zm3,0A4.5,4.5,0,1,1,6.5,2,4.505,4.505,0,0,1,11,6.5Zm-2,0A2.5,2.5,0,1,0,6.5,9,2.5026,2.5026,0,0,0,9,6.5Zm2,11A4.5,4.5,0,1,1,6.5,13,4.505,4.505,0,0,1,11,17.5Zm-2,0A2.5,2.5,0,1,0,6.5,20,2.5023,2.5023,0,0,0,9,17.5ZM12,5H22V3H12Zm0,11H22V14H12Zm8-9H12V9h8ZM12,20h8V18H12Z'\n ]\n };\n\n /**\n * wir fa-ssn\n */\n static wirSSN = {\n prefix: 'wir',\n iconName: 'ssn',\n icon: [\n 24, 24,\n [],\n null, 'M7.2,16H8.4238l.2578.2441a4.8555,4.8555,0,0,0,3.3106,1.3116l.0156-2a2.866,2.866,0,0,1-1.9531-.7657L10,14.7383V14h3V12H10a2.0023,2.0023,0,0,1-2-2V6.8682L9.7363,6h4.5274L16,6.8682V8.9355h2V1H10A4.0042,4.0042,0,0,0,6,5v5a3.9869,3.9869,0,0,0,2,3.4437V14H7.2A4.1078,4.1078,0,0,0,3,18v3H2v2H12V21H8V18H7v3H5V18A2.11,2.11,0,0,1,7.2,16ZM10,3h6V4.6318L14.7363,4H9.2637l-1.2245.6122A2.0024,2.0024,0,0,1,10,3ZM21,14.0918V13.5a3.5,3.5,0,0,0-7,0v.5918A1.4957,1.4957,0,0,0,13,15.5v6A1.5,1.5,0,0,0,14.5,23h6A1.5,1.5,0,0,0,22,21.5v-6A1.4957,1.4957,0,0,0,21,14.0918ZM17.5,12A1.5017,1.5017,0,0,1,19,13.5V14H16v-.5A1.5017,1.5017,0,0,1,17.5,12Zm.5,6.9082V21H17V18.9082a1.5,1.5,0,1,1,1,0Z'\n ]\n };\n\n /**\n * wir fa-text-area\n */\n static wirTextArea = {\n prefix: 'wir',\n iconName: 'text-area',\n icon: [\n 24, 24,\n [],\n null, 'M18,13v2H12V13Zm1.5791-7H10.1055V8h9.4736A.4045.4045,0,0,1,20,8.3848v9.23A.4045.4045,0,0,1,19.5791,18H4.4209A.4045.4045,0,0,1,4,17.6152v-9.23A.4045.4045,0,0,1,4.4209,8H7v5H5v2h6V13H9V5h2V3H5V5H7V6H4.4209A2.4057,2.4057,0,0,0,2,8.3848v9.23A2.4054,2.4054,0,0,0,4.4209,20H19.5791A2.4054,2.4054,0,0,0,22,17.6152v-9.23A2.4057,2.4057,0,0,0,19.5791,6Z'\n ]\n };\n\n /**\n * wir fa-text-box\n */\n static wirTextBox = {\n prefix: 'wir',\n iconName: 'text-box',\n icon: [\n 24, 24,\n [],\n null, 'M9,6h2V4H5V6H7V7H4.35A2.3441,2.3441,0,0,0,2,9.3335V14.667A2.344,2.344,0,0,0,4.35,17H7v1H5v2h6V18H9ZM4.35,15A.3422.3422,0,0,1,4,14.667V9.3335A.3423.3423,0,0,1,4.35,9H7v6ZM22,9.3335V14.667A2.3881,2.3881,0,0,1,19.5654,17H10V15h9.5654A.4.4,0,0,0,20,14.667V9.3335A.4.4,0,0,0,19.5654,9H10V7h9.5654A2.3882,2.3882,0,0,1,22,9.3335ZM16,14H10V12h6Z'\n ]\n };\n\n /**\n * Full list of regular icons.\n */\n static icons = [\n ParticleIconsRegular.wirAddress,\n ParticleIconsRegular.wirAlphaText,\n ParticleIconsRegular.wirCheckbox,\n ParticleIconsRegular.wirDate,\n ParticleIconsRegular.wirDateRange,\n ParticleIconsRegular.wirDivider,\n ParticleIconsRegular.wirDocumentUpload,\n ParticleIconsRegular.wirDropdown,\n ParticleIconsRegular.wirEmail,\n ParticleIconsRegular.wirFEIN,\n ParticleIconsRegular.wirHTML,\n ParticleIconsRegular.wirLicense,\n ParticleIconsRegular.wirMMISNPI,\n ParticleIconsRegular.wirMoney,\n ParticleIconsRegular.wirMultiSelect,\n ParticleIconsRegular.wirNPI,\n ParticleIconsRegular.wirNumericText,\n ParticleIconsRegular.wirPersonName,\n ParticleIconsRegular.wirPhone,\n ParticleIconsRegular.wirPID,\n ParticleIconsRegular.wirRadioButtons,\n ParticleIconsRegular.wirSSN,\n ParticleIconsRegular.wirTextArea,\n ParticleIconsRegular.wirTextBox\n ];\n\n}\n","/**\n * Particle Icons - Light\n */\nexport class ParticleIconsLight {\n\n /**\n * wil fa-address\n */\n static wilAddress = {\n prefix: 'wil',\n iconName: 'address',\n icon: [\n 24, 24,\n [],\n null, 'M6.7051,3.2959a7.4719,7.4719,0,0,0-1.1094,9.1763l5.9766,9.86a.5.5,0,0,0,.8554,0l5.9766-9.86A7.4884,7.4884,0,0,0,6.7051,3.2959Zm10.8437,8.6577L12,21.1084,6.4512,11.9536a6.4883,6.4883,0,1,1,11.0976,0ZM12,4.5a4,4,0,1,0,4,4A4.0045,4.0045,0,0,0,12,4.5Zm0,7a3,3,0,1,1,3-3A3.0033,3.0033,0,0,1,12,11.5Z'\n ]\n };\n\n /**\n * wil fa-alpha-text\n */\n static wilAlphaText = {\n prefix: 'wil',\n iconName: 'alpha-text',\n icon: [\n 24, 24,\n [],\n null, 'M8,5h2V4H5V5H7V7H4A2.0023,2.0023,0,0,0,2,9v6a2.0027,2.0027,0,0,0,2,2H7v2H5v1h5V19H8ZM4,16a1.0006,1.0006,0,0,1-1-1V9A1.0009,1.0009,0,0,1,4,8H7v8ZM22,9v6a2.0027,2.0027,0,0,1-2,2H10V16H20a1.0006,1.0006,0,0,0,1-1V9a1.0009,1.0009,0,0,0-1-1H10V7H20A2.0023,2.0023,0,0,1,22,9Zm-8,6V11a2,2,0,0,0-4,0v4h1V13h2v2Zm-3-3V11a1,1,0,0,1,2,0v1Zm5-3v6h1a2,2,0,0,0,0-4V9Zm2,4a1.0006,1.0006,0,0,1-1,1V12A1.0009,1.0009,0,0,1,18,13Z'\n ]\n };\n\n /**\n * wil fa-checkbox\n */\n static wilCheckbox = {\n prefix: 'wil',\n iconName: 'checkbox',\n icon: [\n 24, 24,\n [],\n null, 'M21,7.5273V19a2.0027,2.0027,0,0,1-2,2H5a2.0027,2.0027,0,0,1-2-2V5A2.0023,2.0023,0,0,1,5,3H20.5V4H5A1.0009,1.0009,0,0,0,4,5V19a1.0006,1.0006,0,0,0,1,1H19a1.0006,1.0006,0,0,0,1-1V8.7314l-6.5869,6.5655a2,2,0,0,1-2.8252-.002L7.1465,11.8535l.707-.707,3.4414,3.4414a1.0009,1.0009,0,0,0,1.4121.001l7.4405-7.4156A.5.5,0,0,1,21,7.5273Z'\n ]\n };\n\n /**\n * wil fa-date\n */\n static wilDate = {\n prefix: 'wil',\n iconName: 'date',\n icon: [\n 24, 24,\n [],\n null, 'M16,5H10V4h6V2h1V6H16Zm4-1H19V5h1a1.0009,1.0009,0,0,1,1,1V9H4.5v1H21V20a1.0006,1.0006,0,0,1-1,1H4a1.0006,1.0006,0,0,1-1-1V6A1.0009,1.0009,0,0,1,4,5H7V6H8V2H7V4H4A2.0023,2.0023,0,0,0,2,6V20a2.0027,2.0027,0,0,0,2,2H20a2.0027,2.0027,0,0,0,2-2V6A2.0023,2.0023,0,0,0,20,4ZM7,13H5v1H7Zm6,0H11v1h2Zm6,0H17v1h2ZM5,18H7V17H5Zm6,0h2V17H11Zm6,0h2V17H17Z'\n ]\n };\n\n /**\n * wil fa-date-range\n */\n static wilDateRange = {\n prefix: 'wil',\n iconName: 'date-range',\n icon: [\n 24, 24,\n [],\n null, 'M16,5H10V4h6V2h1V6H16Zm4-1H19V5h1a1.0009,1.0009,0,0,1,1,1V9H4.5v1H21V20a1.0006,1.0006,0,0,1-1,1H4a1.0006,1.0006,0,0,1-1-1V6A1.0009,1.0009,0,0,1,4,5H7V6H8V2H7V4H4A2.0023,2.0023,0,0,0,2,6V20a2.0027,2.0027,0,0,0,2,2H20a2.0027,2.0027,0,0,0,2-2V6A2.0023,2.0023,0,0,0,20,4ZM8.1465,12.1465,4.793,15.5l3.3535,3.3535.707-.707L6.207,15.5l2.6465-2.6465Zm7.707,6.707L19.207,15.5l-3.3535-3.3535-.707.707L17.793,15.5l-2.6465,2.6465Z'\n ]\n };\n\n /**\n * wil fa-document-upload\n */\n static wilDocumentUpload = {\n prefix: 'wil',\n iconName: 'document-upload',\n icon: [\n 24, 24,\n [],\n null, 'M15.8535,2.1465A.4993.4993,0,0,0,15.5,2H8A2.0023,2.0023,0,0,0,6,4V9.9554l-4.2178,4.402.7227.6914L6.5,10.8789l3.9951,4.17.7227-.6914L7,9.9554V4A1.0009,1.0009,0,0,1,8,3h7.0371V6.9434a2.0218,2.0218,0,0,0,2.0195,2.019H21V20a1.0006,1.0006,0,0,1-1,1H8a1.0006,1.0006,0,0,1-1-1V15H6v5a2.0027,2.0027,0,0,0,2,2H20a2.0027,2.0027,0,0,0,2-2V8.5a.4993.4993,0,0,0-.1465-.3535Zm.1836,4.7969V3.7441l4.2183,4.2183H17.0566A1.02,1.02,0,0,1,16.0371,6.9434Z'\n ]\n };\n\n /**\n * wil fa-dropdown\n */\n static wilDropdown = {\n prefix: 'wil',\n iconName: 'dropdown',\n icon: [\n 24, 24,\n [],\n null, 'M19,3H5A2.0023,2.0023,0,0,0,3,5V19a2.0027,2.0027,0,0,0,2,2H19a2.0027,2.0027,0,0,0,2-2V5A2.0023,2.0023,0,0,0,19,3Zm1,16a1.0006,1.0006,0,0,1-1,1H5a1.0006,1.0006,0,0,1-1-1V5A1.0009,1.0009,0,0,1,5,4H19a1.0009,1.0009,0,0,1,1,1ZM17.1465,9.1465l.707.707L13.4141,14.293a2.0019,2.0019,0,0,1-2.8282,0L6.1465,9.8535l.707-.707,4.4395,4.4394a1.0253,1.0253,0,0,0,1.414,0Z'\n ]\n };\n\n /**\n * wil fa-email\n */\n static wilEmail = {\n prefix: 'wil',\n iconName: 'email',\n icon: [\n 24, 24,\n [],\n null, 'M20,5H4A2.0023,2.0023,0,0,0,2,7V17a2.0027,2.0027,0,0,0,2,2H20a2.0027,2.0027,0,0,0,2-2V7A2.0023,2.0023,0,0,0,20,5Zm0,1a.9608.9608,0,0,1,.2437.0493L12,14.293,3.7563,6.0493A.9608.9608,0,0,1,4,6Zm1,11a1.0006,1.0006,0,0,1-1,1H4a1.0006,1.0006,0,0,1-1-1V7a.9608.9608,0,0,1,.0493-.2437L12,15.707l8.9507-8.9507A.9608.9608,0,0,1,21,7ZM8.1465,13.1465l.707.707-3,3-.707-.707Zm7.707,0,3,3-.707.707-3-3Z'\n ]\n };\n\n /**\n * wil fa-fein\n */\n static wilFEIN = {\n prefix: 'wil',\n iconName: 'fein',\n icon: [\n 24, 24,\n [],\n null, 'M4,7H9V8H5v3H8v1H5v3H9v1H4Zm7,9h1V7H11Zm8-9v6.3818L15.9473,7.2764A.5.5,0,0,0,15,7.5V16h1V9.6182l3.0527,6.1054A.5008.5008,0,0,0,19.5,16a.4583.4583,0,0,0,.1147-.0137A.5.5,0,0,0,20,15.5V7Z'\n ]\n };\n\n /**\n * wil fa-html\n */\n static wilHTML = {\n prefix: 'wil',\n iconName: 'html',\n icon: [\n 24, 24,\n [],\n null, 'M20,4H4A2.0023,2.0023,0,0,0,2,6V18a2.0027,2.0027,0,0,0,2,2H20a2.0027,2.0027,0,0,0,2-2V6A2.0023,2.0023,0,0,0,20,4Zm1,14a1.0006,1.0006,0,0,1-1,1H4a1.0006,1.0006,0,0,1-1-1V6A1.0009,1.0009,0,0,1,4,5H20a1.0009,1.0009,0,0,1,1,1ZM8.8535,8.8535,5.707,12l3.1465,3.1465-.707.707L4.293,12,8.1465,8.1465Zm7-.707L19.707,12l-3.8535,3.8535-.707-.707L18.293,12,15.1465,8.8535Zm-2.8281-.8047.9492.3164-3,9-.9492-.3164Z'\n ]\n };\n\n /**\n * wil fa-license\n */\n static wilLicense = {\n prefix: 'wil',\n iconName: 'license',\n icon: [\n 24, 24,\n [],\n null, 'M20,5H4A2.0023,2.0023,0,0,0,2,7V17a2.0027,2.0027,0,0,0,2,2H20a2.0027,2.0027,0,0,0,2-2V7A2.0023,2.0023,0,0,0,20,5ZM10.06,18H5.0127V16a1.0069,1.0069,0,0,1,1.0117-1H9.0479A1.0069,1.0069,0,0,1,10.06,16ZM21,17a1.0006,1.0006,0,0,1-1,1H11.06V16a2.0083,2.0083,0,0,0-2.0117-2H6.0244a2.0082,2.0082,0,0,0-2.0117,2v2H4a1.0006,1.0006,0,0,1-1-1V7A1.0009,1.0009,0,0,1,4,6H20a1.0009,1.0009,0,0,1,1,1ZM5,10v1a2.0023,2.0023,0,0,0,2,2H8a2.0023,2.0023,0,0,0,2-2V8H7A2.0023,2.0023,0,0,0,5,10Zm4,1a1.0009,1.0009,0,0,1-1,1H7a1.0009,1.0009,0,0,1-1-1V10A1.0009,1.0009,0,0,1,7,9H9Zm4-3h6V9H13Zm5,3H13V10h5Zm-5,2h6v1H13Zm0,2h5v1H13Z'\n ]\n };\n\n /**\n * wil fa-mmis-npi\n */\n static wilMMISNPI = {\n prefix: 'wil',\n iconName: 'mmis-npi',\n icon: [\n 24, 24,\n [],\n null, 'M8.0059,13h1v7.5a.5.5,0,0,1-.3721.4834A.5189.5189,0,0,1,8.5059,21a.5021.5021,0,0,1-.4346-.252L5.0059,15.3828V21h-1V13.5a.5.5,0,0,1,.372-.4834.5107.5107,0,0,1,.5625.2354l3.0655,5.3652Zm7.9882,2.5a2.5023,2.5023,0,0,1-2.5,2.5h-1.5v3h-1V13.5a.5.5,0,0,1,.5-.5h2A2.5023,2.5023,0,0,1,15.9941,15.5Zm-1,0a1.5016,1.5016,0,0,0-1.5-1.5h-1.5v3h1.5A1.5016,1.5016,0,0,0,14.9941,15.5Zm3.04-2.5v8h1V13ZM14.5674,4.43a3.9878,3.9878,0,0,1,1.4267,3.06v.5H9.0459a2.9568,2.9568,0,0,0,.66,1.4248,3.0808,3.0808,0,0,0,4.25.3427l.6543.7569a3.9967,3.9967,0,1,1-.043-6.084Zm.3847,2.56a2.9953,2.9953,0,0,0-5.8984-.0469c-.0019.0156-.0049.0312-.0078.0469Z'\n ]\n };\n\n /**\n * wil fa-money\n */\n static wilMoney = {\n prefix: 'wil',\n iconName: 'money',\n icon: [\n 24, 24,\n [],\n null, 'M9.5,9.5a2.2946,2.2946,0,0,0,2.5,2,3.2829,3.2829,0,0,1,3.5,3,3.191,3.191,0,0,1-3,2.9567V19h-1V17.4567A3.191,3.191,0,0,1,8.5,14.5h1a2.2949,2.2949,0,0,0,2.5,2,2.2949,2.2949,0,0,0,2.5-2,2.2949,2.2949,0,0,0-2.5-2,3.2829,3.2829,0,0,1-3.5-3,3.191,3.191,0,0,1,3-2.9567V5h1V6.5433A3.191,3.191,0,0,1,15.5,9.5h-1a2.2946,2.2946,0,0,0-2.5-2A2.2946,2.2946,0,0,0,9.5,9.5ZM22,12A10,10,0,1,1,12,2,10.0117,10.0117,0,0,1,22,12Zm-1,0a9,9,0,1,0-9,9A9.01,9.01,0,0,0,21,12Z'\n ]\n };\n\n /**\n * wil fa-multi-select\n */\n static wilMultiSelect = {\n prefix: 'wil',\n iconName: 'multi-select',\n icon: [\n 24, 24,\n [],\n null, 'M7,4H4A2.0023,2.0023,0,0,0,2,6V9a2.0023,2.0023,0,0,0,2,2H7A2.0023,2.0023,0,0,0,9,9V6A2.0023,2.0023,0,0,0,7,4Zm0,6H4A1.0009,1.0009,0,0,1,3,9V6A1.0009,1.0009,0,0,1,4,5H7a.9839.9839,0,0,1,.8248.4681L5.5,7.793,4.3535,6.6465l-.707.707L5.5,9.207,8,6.707V9A1.0009,1.0009,0,0,1,7,10Zm0,3H4a2.0027,2.0027,0,0,0-2,2v3a2.0027,2.0027,0,0,0,2,2H7a2.0027,2.0027,0,0,0,2-2V15A2.0027,2.0027,0,0,0,7,13Zm0,6H4a1.0006,1.0006,0,0,1-1-1V15a1.0006,1.0006,0,0,1,1-1H7a.9838.9838,0,0,1,.825.468L5.5,16.793,4.3535,15.6465l-.707.707L5.5,18.207l2.5-2.5V18A1.0006,1.0006,0,0,1,7,19ZM11,5H22V6H11Zm8,4H11V8h8Zm-8,5H22v1H11Zm0,3h8v1H11Z'\n ]\n };\n\n /**\n * wil fa-npi\n */\n static wilNPI = {\n prefix: 'wil',\n iconName: 'npi',\n icon: [\n 24, 24,\n [],\n null, 'M13,7h3V8H13v3H12V8H9V7h3V4h1ZM8.0059,18.6172,4.94,13.252a.51.51,0,0,0-.5625-.2354.5.5,0,0,0-.372.4834V21h1V15.3828L8.0713,20.748A.5021.5021,0,0,0,8.5059,21a.5189.5189,0,0,0,.1279-.0166A.5.5,0,0,0,9.0059,20.5V13h-1ZM15.9941,15.5a2.5023,2.5023,0,0,1-2.5,2.5h-1.5v3h-1V13.5a.5.5,0,0,1,.5-.5h2A2.5023,2.5023,0,0,1,15.9941,15.5Zm-1,0a1.5016,1.5016,0,0,0-1.5-1.5h-1.5v3h1.5A1.5016,1.5016,0,0,0,14.9941,15.5Zm3.04-2.5v8h1V13Z'\n ]\n };\n\n /**\n * wil fa-numeric-text\n */\n static wilNumericText = {\n prefix: 'wil',\n iconName: 'numeric-text',\n icon: [\n 24, 24,\n [],\n null, 'M8,5h2V4H5V5H7V7H4A2.0023,2.0023,0,0,0,2,9v6a2.0027,2.0027,0,0,0,2,2H7v2H5v1h5V19H8ZM4,16a1.0006,1.0006,0,0,1-1-1V9A1.0009,1.0009,0,0,1,4,8H7v8ZM22,9v6a2.0027,2.0027,0,0,1-2,2H10V16H20a1.0006,1.0006,0,0,0,1-1V9a1.0009,1.0009,0,0,0-1-1H10V7H20A2.0023,2.0023,0,0,1,22,9ZM12,9v5h1v1H10V14h1V10H10V9Zm5,1.7358A.7368.7368,0,0,0,16.2637,10H15V9h1.2637a1.7361,1.7361,0,0,1,.7763,3.2891A1.8712,1.8712,0,0,0,16,13.9717V14h2v1H15V13.9717a2.866,2.866,0,0,1,1.5928-2.5772A.7326.7326,0,0,0,17,10.7358Z'\n ]\n };\n\n /**\n * wil fa-person-name\n */\n static wilPersonName = {\n prefix: 'wil',\n iconName: 'person-name',\n icon: [\n 24, 24,\n [],\n null, 'M20,17.5A3.5042,3.5042,0,0,0,16.5,14H15V12.6489A3.495,3.495,0,0,0,17,9.5V2H10.5A3.5042,3.5042,0,0,0,7,5.5v4a3.495,3.495,0,0,0,2,3.1489V14H7.5A3.5042,3.5042,0,0,0,4,17.5V21H3v1H21V21H20ZM10.5,3H16V4.6909L14.6182,4H9.3818l-1.2089.6045A2.4981,2.4981,0,0,1,10.5,3ZM8,9.5V5.8091L9.6182,5h4.7636L16,5.8091V9.5A2.5026,2.5026,0,0,1,13.5,12h-3A2.5026,2.5026,0,0,1,8,9.5ZM10.5,13h3a3.4641,3.4641,0,0,0,.5-.05v1.8592a3.013,3.013,0,0,1-4-.0523V12.95A3.4641,3.4641,0,0,0,10.5,13ZM17,21V18H16v3H8V18H7v3H5V17.5A2.5023,2.5023,0,0,1,7.5,15H8.8115l.3672.3691a4.0284,4.0284,0,0,0,5.67.0342l.41-.4033H16.5A2.5023,2.5023,0,0,1,19,17.5V21Z'\n ]\n };\n\n /**\n * wil fa-phone\n */\n static wilPhone = {\n prefix: 'wil',\n iconName: 'phone',\n icon: [\n 24, 24,\n [],\n null, 'M20,6H9A2.0023,2.0023,0,0,0,7,4H6A2.0023,2.0023,0,0,0,4,6,2.0023,2.0023,0,0,0,2,8V18a2.0027,2.0027,0,0,0,2,2H20a2.0027,2.0027,0,0,0,2-2V8A2.0023,2.0023,0,0,0,20,6ZM18,7V9a1.0009,1.0009,0,0,1-1,1H13a1.0009,1.0009,0,0,1-1-1V7ZM5,6A1.0009,1.0009,0,0,1,6,5H7A1.0009,1.0009,0,0,1,8,6v9a1.0006,1.0006,0,0,1-1,1H6a1.0006,1.0006,0,0,1-1-1ZM21,18a1.0006,1.0006,0,0,1-1,1H4a1.0006,1.0006,0,0,1-1-1V8A1.0009,1.0009,0,0,1,4,7v8a2.0027,2.0027,0,0,0,2,2H7a2.0027,2.0027,0,0,0,2-2V7h2V9a2.0023,2.0023,0,0,0,2,2h4a2.0023,2.0023,0,0,0,2-2V7h1a1.0009,1.0009,0,0,1,1,1ZM11,12h2v1H11Zm6,0h2v1H17Zm-3,0h2v1H14Zm-3,2h2v1H11Zm6,0h2v1H17Zm-3,0h2v1H14Zm-3,2h2v1H11Zm6,0h2v1H17Zm-3,0h2v1H14Z'\n ]\n };\n\n /**\n * wil fa-pid\n */\n static wilPID = {\n prefix: 'wil',\n iconName: 'pid',\n icon: [\n 24, 24,\n [],\n null, 'M20,5H4A2.0023,2.0023,0,0,0,2,7V17a2.0027,2.0027,0,0,0,2,2H20a2.0027,2.0027,0,0,0,2-2V7A2.0023,2.0023,0,0,0,20,5ZM10.06,18H5.0127V16a1.0069,1.0069,0,0,1,1.0117-1H9.0479A1.0069,1.0069,0,0,1,10.06,16ZM21,17a1.0006,1.0006,0,0,1-1,1H11.06V16a2.0083,2.0083,0,0,0-2.0117-2H6.0244a2.0082,2.0082,0,0,0-2.0117,2v2H4a1.0006,1.0006,0,0,1-1-1V7A1.0009,1.0009,0,0,1,4,6H20a1.0009,1.0009,0,0,1,1,1ZM5,10v1a2.0023,2.0023,0,0,0,2,2H8a2.0023,2.0023,0,0,0,2-2V8H7A2.0023,2.0023,0,0,0,5,10Zm4,1a1.0009,1.0009,0,0,1-1,1H7a1.0009,1.0009,0,0,1-1-1V10A1.0009,1.0009,0,0,1,7,9H9Zm4-3h6V9H13Zm0,2h5v1H13Zm3,4h2v1H16v2H15V15H13V14h2V12h1Z'\n ]\n };\n\n /**\n * wil fa-radio-buttons\n */\n static wilRadioButtons = {\n prefix: 'wil',\n iconName: 'radio-buttons',\n icon: [\n 24, 24,\n [],\n null, 'M5.5,4A3.5,3.5,0,1,0,9,7.5,3.5042,3.5042,0,0,0,5.5,4Zm0,6A2.5,2.5,0,1,1,8,7.5,2.5026,2.5026,0,0,1,5.5,10Zm0,3A3.5,3.5,0,1,0,9,16.5,3.5042,3.5042,0,0,0,5.5,13Zm0,6A2.5,2.5,0,1,1,8,16.5,2.5023,2.5023,0,0,1,5.5,19ZM11,5H22V6H11Zm8,4H11V8h8Zm-8,5H22v1H11Zm0,3h8v1H11ZM7,7.5A1.5,1.5,0,1,1,5.5,6,1.5,1.5,0,0,1,7,7.5Z'\n ]\n };\n\n /**\n * wil fa-ssn\n */\n static wilSSN = {\n prefix: 'wil',\n iconName: 'ssn',\n icon: [\n 24, 24,\n [],\n null, 'M7.5,15H8.8115l.3672.3691a3.996,3.996,0,0,0,2.8174,1.1866l.0078-1A2.9909,2.9909,0,0,1,10,14.7571V12.95a3.4641,3.4641,0,0,0,.5.05H13V12H10.5A2.5026,2.5026,0,0,1,8,9.5V5.8091L9.6182,5h4.7636L16,5.8091V8h1V2H10.5A3.5042,3.5042,0,0,0,7,5.5v4a3.495,3.495,0,0,0,2,3.1489V14H7.5A3.5042,3.5042,0,0,0,4,17.5V21H3v1h9V21H8V18H7v3H5V17.5A2.5023,2.5023,0,0,1,7.5,15Zm3-12H16V4.6909L14.6182,4H9.3818l-1.2089.6045A2.4981,2.4981,0,0,1,10.5,3ZM20,13V11.5a2.5,2.5,0,0,0-5,0V13a2.0027,2.0027,0,0,0-2,2v5a2.0027,2.0027,0,0,0,2,2h5a2.0027,2.0027,0,0,0,2-2V15A2.0027,2.0027,0,0,0,20,13Zm-4-1.5a1.5,1.5,0,0,1,3,0V13H16ZM21,20a1.0006,1.0006,0,0,1-1,1H15a1.0006,1.0006,0,0,1-1-1V15a1.0006,1.0006,0,0,1,1-1h5a1.0006,1.0006,0,0,1,1,1Zm-2-3.5a1.4957,1.4957,0,0,1-1,1.4082V20H17V17.9082A1.4975,1.4975,0,1,1,19,16.5Z'\n ]\n };\n\n /**\n * wil fa-text-area\n */\n static wilTextArea = {\n prefix: 'wil',\n iconName: 'text-area',\n icon: [\n 24, 24,\n [],\n null, 'M17,13v1H12V13Zm3-7H10V7H20a1.0009,1.0009,0,0,1,1,1V18a1.0006,1.0006,0,0,1-1,1H4a1.0006,1.0006,0,0,1-1-1V8A1.0009,1.0009,0,0,1,4,7H7v6H5v1h5V13H8V4h2V3H5V4H7V6H4A2.0023,2.0023,0,0,0,2,8V18a2.0027,2.0027,0,0,0,2,2H20a2.0027,2.0027,0,0,0,2-2V8A2.0023,2.0023,0,0,0,20,6Z'\n ]\n };\n\n /**\n * wil fa-text-box\n */\n static wilTextBox = {\n prefix: 'wil',\n iconName: 'text-box',\n icon: [\n 24, 24,\n [],\n null, 'M8,5h2V4H5V5H7V7H4A2.0023,2.0023,0,0,0,2,9v6a2.0027,2.0027,0,0,0,2,2H7v2H5v1h5V19H8ZM4,16a1.0006,1.0006,0,0,1-1-1V9A1.0009,1.0009,0,0,1,4,8H7v8ZM22,9v6a2.0027,2.0027,0,0,1-2,2H10V16H20a1.0006,1.0006,0,0,0,1-1V9a1.0009,1.0009,0,0,0-1-1H10V7H20A2.0023,2.0023,0,0,1,22,9Zm-7,6H10V14h5Z'\n ]\n };\n\n /**\n * Full list of light icons\n */\n static icons = [\n ParticleIconsLight.wilAddress,\n ParticleIconsLight.wilAlphaText,\n ParticleIconsLight.wilCheckbox,\n ParticleIconsLight.wilDate,\n ParticleIconsLight.wilDateRange,\n ParticleIconsLight.wilDocumentUpload,\n ParticleIconsLight.wilDropdown,\n ParticleIconsLight.wilEmail,\n ParticleIconsLight.wilFEIN,\n ParticleIconsLight.wilHTML,\n ParticleIconsLight.wilLicense,\n ParticleIconsLight.wilMMISNPI,\n ParticleIconsLight.wilMoney,\n ParticleIconsLight.wilMultiSelect,\n ParticleIconsLight.wilNPI,\n ParticleIconsLight.wilNumericText,\n ParticleIconsLight.wilPersonName,\n ParticleIconsLight.wilPhone,\n ParticleIconsLight.wilPID,\n ParticleIconsLight.wilRadioButtons,\n ParticleIconsLight.wilSSN,\n ParticleIconsLight.wilTextArea,\n ParticleIconsLight.wilTextBox\n ];\n\n}\n","/**\n * Particle Solid Icons to be added to font awesome 5.\n */\nexport class ParticleIconsSolid {\n\n /**\n * wis fa-address\n */\n static wisAddress = {\n prefix: 'wis',\n iconName: 'address',\n icon: [\n 512, 512,\n [],\n null, 'M381.69,55.06h0a177.74,177.74,0,0,0-251.36,0h0A177.77,177.77,0,0,0,100.57,267L256,495.65h0L411.43,267A177.77,177.77,0,0,0,381.69,55.06ZM256,252a78.69,78.69,0,1,1,78.69-78.69A78.69,78.69,0,0,1,256,252Z'\n ]\n };\n\n /**\n * wis fa-alpha-text\n */\n static wisAlphaText = {\n prefix: 'wis',\n iconName: 'alpha-text',\n icon: [\n 512, 512,\n [],\n null, 'M96,386H14A14,14,0,0,1,0,372V142a14,14,0,0,1,14-14H96Zm288.48-81.91c0,7.83,6,13.05,15.92,13.05,9.41,0,17.55-4.82,20.81-14.65v-11H401.85C388.64,291.45,384.48,296.87,384.48,304.09ZM262.73,228l-20.08,53.79h40.16ZM176,384v32h32a16,16,0,0,1,16,16v32H96a16,16,0,0,1-16-16V432a16,16,0,0,1,16-16h32V96H96A16,16,0,0,1,80,80V64A16,16,0,0,1,96,48H208a16,16,0,0,1,16,16V96H176v32H498a14,14,0,0,1,14,14V384ZM421.21,273.18H398.77c-29.66,0-41.79,13.25-41.79,32.32,0,18.66,13.57,32.71,36.37,32.71,14.29,0,24.42-5.22,29.67-15v13.45h26.41V275c0-32.72-17.19-48-46.86-48-15.55,0-31.29,4.61-42,13l10.13,21.88c7.06-6.22,17.73-10,28-10C414,251.91,421.21,259.73,421.21,273.18ZM192,336.61h30l11.22-30.11H292l11.22,30.11H334l-56.62-140.5H248.44Z'\n ]\n };\n\n /**\n * wis fa-archive\n */\n static wisArchive = {\n prefix: 'wis',\n iconName: 'archive',\n icon: [\n 24, 24,\n [],\n null, 'M8,17a1,1,0,0,1,1-1h6a1,1,0,0,1,0,2H9A1,1,0,0,1,8,17ZM21,5V20a2.0023,2.0023,0,0,1-2,2H5a2.0023,2.0023,0,0,1-2-2V5A2.0023,2.0023,0,0,1,5,3H19A2.0023,2.0023,0,0,1,21,5ZM6,8V9H18V8ZM18,7V6H6V7ZM6,10v1H18V10Zm14,4H4v6a1.0009,1.0009,0,0,0,1,1H19a1.0009,1.0009,0,0,0,1-1Z'\n ]\n };\n\n /**\n * wis fa-checkbox\n */\n static wisCheckbox = {\n prefix: 'wis',\n iconName: 'checkbox',\n icon: [\n 512, 512,\n [],\n null, 'M439.67,32H72.33A40.33,40.33,0,0,0,32,72.33V439.67A40.33,40.33,0,0,0,72.33,480H480V72.33A40.33,40.33,0,0,0,439.67,32ZM411.93,188.62,230,369.62a31.17,31.17,0,0,1-44-.06l-85-85a19.75,19.75,0,0,1,0-27.9l11.7-11.7a19.75,19.75,0,0,1,27.9,0l67.46,67.46L372.44,148.92a19.6,19.6,0,0,1,13.91-5.74h0a19.59,19.59,0,0,1,14,5.81L412,160.72a19.72,19.72,0,0,1-.08,27.9Z'\n ]\n };\n\n /**\n * wis fa-clock\n */\n static wisClock = {\n prefix: 'wis',\n iconName: 'clock',\n icon: [\n 24, 24,\n [],\n null, 'M12,2A10,10,0,1,0,22,12,10,10,0,0,0,12,2Zm2.293,13.707L11,12.4141V5h2v6.5859l2.707,2.7071Z'\n ]\n };\n\n /**\n * wis fa-date\n */\n static wisDate = {\n prefix: 'wis',\n iconName: 'date',\n icon: [\n 512, 512,\n [],\n null, 'M80,260.53V235.47A11.46,11.46,0,0,1,91.47,224h41.06A11.46,11.46,0,0,1,144,235.47V272H91.47A11.46,11.46,0,0,1,80,260.53ZM187.47,272H240V235.47A11.46,11.46,0,0,0,228.53,224H187.47A11.46,11.46,0,0,0,176,235.47v25.06A11.46,11.46,0,0,0,187.47,272Zm96,0H336V235.47A11.46,11.46,0,0,0,324.53,224H283.47A11.46,11.46,0,0,0,272,235.47v25.06A11.46,11.46,0,0,0,283.47,272Zm96,0H432V235.47A11.46,11.46,0,0,0,420.53,224H379.47A11.46,11.46,0,0,0,368,235.47v25.06A11.46,11.46,0,0,0,379.47,272Zm-288,80H144V315.47A11.46,11.46,0,0,0,132.53,304H91.47A11.46,11.46,0,0,0,80,315.47v25.06A11.46,11.46,0,0,0,91.47,352Zm96,0H240V315.47A11.46,11.46,0,0,0,228.53,304H187.47A11.46,11.46,0,0,0,176,315.47v25.06A11.46,11.46,0,0,0,187.47,352Zm96,0H336V315.47A11.46,11.46,0,0,0,324.53,304H283.47A11.46,11.46,0,0,0,272,315.47v25.06A11.46,11.46,0,0,0,283.47,352Zm96,0H432V315.47A11.46,11.46,0,0,0,420.53,304H379.47A11.46,11.46,0,0,0,368,315.47v25.06A11.46,11.46,0,0,0,379.47,352Zm-288,80H144V395.47A11.46,11.46,0,0,0,132.53,384H91.47A11.46,11.46,0,0,0,80,395.47v25.06A11.46,11.46,0,0,0,91.47,432Zm96,0H240V395.47A11.46,11.46,0,0,0,228.53,384H187.47A11.46,11.46,0,0,0,176,395.47v25.06A11.46,11.46,0,0,0,187.47,432Zm96,0H336V395.47A11.46,11.46,0,0,0,324.53,384H283.47A11.46,11.46,0,0,0,272,395.47v25.06A11.46,11.46,0,0,0,283.47,432Zm96,0H432V395.47A11.46,11.46,0,0,0,420.53,384H379.47A11.46,11.46,0,0,0,368,395.47v25.06A11.46,11.46,0,0,0,379.47,432ZM512,88.33V512H40.33A40.32,40.32,0,0,1,0,471.67V88.33A40.32,40.32,0,0,1,40.33,48H79.8V32.27a32.23,32.23,0,0,1,64.45,0V48H224V33.22a32.23,32.23,0,0,1,64.45,0V48H367.8V32.27a32.23,32.23,0,0,1,64.45,0V48h39.42A40.32,40.32,0,0,1,512,88.33ZM383.8,48H384V95.36a16.14,16.14,0,1,0,32.27.46V32.27A16.22,16.22,0,0,0,400,16.05h0A16.23,16.23,0,0,0,383.8,32.27ZM240,48h.18V96.31a16.22,16.22,0,0,0,16.22,16.22h0a15.7,15.7,0,0,0,16.05-15.75V33.22A16.23,16.23,0,0,0,256.22,17h0A16.22,16.22,0,0,0,240,33.22ZM95.8,48H96V95.36a16.14,16.14,0,1,0,32.27.46V32.27a16.23,16.23,0,0,0-32.45,0ZM480,176H32V471.67A8.34,8.34,0,0,0,40.33,480H480Z'\n ]\n };\n\n /**\n * wis fa-date-range\n */\n static wisDateRange = {\n prefix: 'wis',\n iconName: 'date-range',\n icon: [\n 512, 512,\n [],\n null, 'M91.47,272H144V235.47A11.46,11.46,0,0,0,132.53,224H91.47A11.46,11.46,0,0,0,80,235.47v25.06A11.46,11.46,0,0,0,91.47,272ZM96,240h32v16H96Zm91.47,32H240V235.47A11.46,11.46,0,0,0,228.53,224H187.47A11.46,11.46,0,0,0,176,235.47v25.06A11.46,11.46,0,0,0,187.47,272ZM192,240h32v16H192Zm91.47,32H336V235.47A11.46,11.46,0,0,0,324.53,224H283.47A11.46,11.46,0,0,0,272,235.47v25.06A11.46,11.46,0,0,0,283.47,272ZM288,240h32v16H288Zm80,20.53V235.47A11.46,11.46,0,0,1,379.47,224h41.06A11.46,11.46,0,0,1,432,235.47V272H379.47A11.46,11.46,0,0,1,368,260.53Zm-288,80V315.47A11.46,11.46,0,0,1,91.47,304h41.06A11.46,11.46,0,0,1,144,315.47V352H91.47A11.46,11.46,0,0,1,80,340.53Zm96,0V315.47A11.46,11.46,0,0,1,187.47,304h41.06A11.46,11.46,0,0,1,240,315.47V352H187.47A11.46,11.46,0,0,1,176,340.53Zm96,0V315.47A11.46,11.46,0,0,1,283.47,304h41.06A11.46,11.46,0,0,1,336,315.47V352H283.47A11.46,11.46,0,0,1,272,340.53Zm96,0V315.47A11.46,11.46,0,0,1,379.47,304h41.06A11.46,11.46,0,0,1,432,315.47V352H379.47A11.46,11.46,0,0,1,368,340.53Zm-288,80V395.47A11.46,11.46,0,0,1,91.47,384h41.06A11.46,11.46,0,0,1,144,395.47V432H91.47A11.46,11.46,0,0,1,80,420.53ZM187.47,432H240V395.47A11.46,11.46,0,0,0,228.53,384H187.47A11.46,11.46,0,0,0,176,395.47v25.06A11.46,11.46,0,0,0,187.47,432ZM192,400h32v16H192Zm91.47,32H336V395.47A11.46,11.46,0,0,0,324.53,384H283.47A11.46,11.46,0,0,0,272,395.47v25.06A11.46,11.46,0,0,0,283.47,432ZM288,400h32v16H288Zm91.47,32H432V395.47A11.46,11.46,0,0,0,420.53,384H379.47A11.46,11.46,0,0,0,368,395.47v25.06A11.46,11.46,0,0,0,379.47,432ZM384,400h32v16H384ZM471.67,48H432.25V32.22a32.23,32.23,0,0,0-64.45,0V48H288.45V32.22a32.23,32.23,0,0,0-64.45,0V48H144.25V32.22a32.23,32.23,0,0,0-64.45,0V48H40.33A40.32,40.32,0,0,0,0,88.33V471.67A40.32,40.32,0,0,0,40.33,512H512V88.33A40.32,40.32,0,0,0,471.67,48ZM383.8,32.22A16.23,16.23,0,0,1,400,16h0a16.22,16.22,0,0,1,16.22,16.22V48H416V95.78a16.1,16.1,0,1,1-32.2,0Zm-143.8,0A16.22,16.22,0,0,1,256.22,16h0a16.23,16.23,0,0,1,16.23,16.22V48h-.4V95.78a16,16,0,1,1-32.05,0Zm-144.2,0a16.23,16.23,0,0,1,32.45,0V48H128V95.78a16.1,16.1,0,1,1-32.2,0ZM480,480H40.33A8.34,8.34,0,0,1,32,471.67V176H480Z'\n ]\n };\n\n /**\n * wis fa-divider\n */\n static wisDivider = {\n prefix: 'wis',\n iconName: 'divider',\n icon: [\n 512, 512,\n [],\n null, 'M512,254v34H14A14,14,0,0,1,0,274V254a14,14,0,0,1,14-14H498A14,14,0,0,1,512,254ZM256,108.28l79.5,79.5,28.28-28.28L256,51.72,148.22,159.5l28.28,28.28Zm0,311.44-79.5-79.5L148.22,368.5,256,476.28,363.78,368.5,335.5,340.22Z'\n ]\n };\n\n /**\n * wis fa-document\n */\n static wisDocument = {\n prefix: 'wis',\n iconName: 'document',\n icon: [\n 24, 24,\n [],\n null, 'M13,8.5V2h.6L20,8.3158V9H13.5A.5006.5006,0,0,1,13,8.5ZM5.6,22H18.4A1.59,1.59,0,0,0,20,20.421V11H13.5A2.5026,2.5026,0,0,1,11,8.5V2H5.6A1.59,1.59,0,0,0,4,3.5789V20.421A1.59,1.59,0,0,0,5.6,22Z'\n ]\n };\n\n /**\n * wis fa-document-upload\n */\n static wisDocumentUpload = {\n prefix: 'wis',\n iconName: 'document-upload',\n icon: [\n 512, 512,\n [],\n null, 'M374.43,208H512V512H168.33A40.33,40.33,0,0,1,128,471.67V210.27l78.6,78.6a24,24,0,0,0,33.94-34L128,142.38v67.56L49,289A24,24,0,0,1,15,255l113-113V40.33A40.33,40.33,0,0,1,168.33,0H304V137.57A70.5,70.5,0,0,0,374.43,208Zm0-32H512L336,0V137.57A38.44,38.44,0,0,0,374.43,176Z'\n ]\n };\n\n /**\n * wis fa-dropdown\n */\n static wisDropdown = {\n prefix: 'wis',\n iconName: 'dropdown',\n icon: [\n 512, 512,\n [],\n null, 'M256,137.52v13a9.52,9.52,0,0,1-9.52,9.52h-173A9.52,9.52,0,0,1,64,150.48v-13A9.52,9.52,0,0,1,73.52,128h173A9.52,9.52,0,0,1,256,137.52ZM512.09,88.63V240H512V464H49A49,49,0,0,1,0,415V208H.87A40.1,40.1,0,0,1,0,199.67V88.33A40.32,40.32,0,0,1,40.33,48H471.67a40.63,40.63,0,0,1,40.42,40.63Zm-152,48.27L415,193l57.08-55.9a12,12,0,0,0-16.79-17.15L415.36,159l-38.1-38.92a12,12,0,0,0-17.15,16.79ZM40.33,208H320.87a40.1,40.1,0,0,1-.87-8.33v-111a40.82,40.82,0,0,1,.93-8.63H40.33A8.34,8.34,0,0,0,32,88.33V199.67A8.34,8.34,0,0,0,40.33,208ZM480,256H32V415a17,17,0,0,0,17,17H480Z'\n ]\n };\n\n /**\n * wis fa-email\n */\n static wisEmail = {\n prefix: 'wis',\n iconName: 'email',\n icon: [\n 512, 512,\n [],\n null, 'M512,427.72,351.73,287.59,476.32,432h-436a40.92,40.92,0,0,1-5.57-.39L160,288,9.74,417.94A40.14,40.14,0,0,1,0,391.67V120.33c0-.8,0-1.58.07-2.36L210.14,301a69.74,69.74,0,0,0,91.77.14l210-183.72c.07,1,.12,2,.12,3ZM280.84,277,496.34,88.44A40.09,40.09,0,0,0,471.67,80H40.33a40.15,40.15,0,0,0-25.07,8.75l216,188.13A37.69,37.69,0,0,0,280.84,277Z'\n ]\n };\n\n /**\n * wis fa-employee-id\n */\n static wisEmployeeID = {\n prefix: 'wis',\n iconName: 'employee-id',\n icon: [\n 24, 24,\n [],\n null, 'M20.5,5H13V3H11V5H3.5A1.5,1.5,0,0,0,2,6.5v11A1.5,1.5,0,0,0,3.5,19h17A1.5,1.5,0,0,0,22,17.5V6.5A1.5,1.5,0,0,0,20.5,5ZM13,10V8h6v2Zm5,1v2H13V11ZM10,8v3a2.0023,2.0023,0,0,1-2,2H7a2.0023,2.0023,0,0,1-2-2V10A2.0023,2.0023,0,0,1,7,8ZM4.0122,16a2.0083,2.0083,0,0,1,2.0117-2H9.0474a2.0083,2.0083,0,0,1,2.0117,2v2H4.0122Z'\n ]\n };\n\n /**\n * wis fa-existing-license\n */\n static wisExistingLicense = {\n prefix: 'wis',\n iconName: 'existing-license',\n icon: [\n 512, 512,\n [],\n null, 'M466.84,96H45.16A45.16,45.16,0,0,0,0,141.16V371.84A45.16,45.16,0,0,0,45.16,417H512V141.16A45.16,45.16,0,0,0,466.84,96ZM284,224.82l6.82-6.82a6.84,6.84,0,0,1,9.67,0l42.63,42.63L442.27,162a6.84,6.84,0,0,1,9.67,0l6.81,6.84a6.84,6.84,0,0,1,0,9.67L352.63,284.07a13.51,13.51,0,0,1-19.08,0L284,234.5A6.85,6.85,0,0,1,284,224.82Zm-174.27-64h76.5l-4.7,61.1a42.52,42.52,0,0,1-18.93,32.21h0a51.9,51.9,0,0,1-53.45,0l-.7-.46a42.58,42.58,0,0,1-18.81-30.86l-4.12-37.77A24.21,24.21,0,0,1,109.73,160.86ZM220.09,331.39a21,21,0,0,1-20.85,18.31H72.51a21,21,0,0,1-20.86-18.31l-3.9-29.95a29.09,29.09,0,0,1,19.9-27.61l11.89-4a38.82,38.82,0,0,1,24.54,0h0a100.54,100.54,0,0,0,63.59,0h0a38.78,38.78,0,0,1,12.27-2h0a38.68,38.68,0,0,1,12.26,2l11.9,4A29.1,29.1,0,0,1,224,301.44ZM476,347.17H277.34v-24H476Z'\n ]\n };\n\n /**\n * wis fa-fein\n */\n static wisFEIN = {\n prefix: 'wis',\n iconName: 'fein',\n icon: [\n 512, 512,\n [],\n null,\n 'M173.74,126.3,166.4,59.09A43.09,43.09,0,0,1,209.49,16H345.6l-8.36,108.71A75.7,75.7,0,0,1,303.55,182h0a92.42,92.42,0,0,1-95.1,0l-1.25-.82A75.77,75.77,0,0,1,173.74,126.3ZM48.09,496H72.56V455.2h49V434.4H72.56V404.8H128V384H48.09Zm135.37-46h48.23V429.49H183.46V404.71h54.61V383.52h-78.5V497.63H240V476.44H183.46Zm104.8,45.6H320V384H288.26ZM440.08,383.52v68.29l-52-68.29H368V496H392V427.71L444.12,496H464V383.52Zm-34.23-64.1,6.95-53.29A51.78,51.78,0,0,0,377.39,217l-21.16-7.06a70,70,0,0,0-6.77-1.86l-76.16,91-14-53.19,28.2-29.57a179,179,0,0,1-63.79-.13l27.85,29.7L238.32,299l-75.74-90.88c-2.29.51-4.57,1.13-6.81,1.87L134.61,217A51.78,51.78,0,0,0,99.2,266.13l7,53.29A37.42,37.42,0,0,0,143.26,352H368.74A37.42,37.42,0,0,0,405.85,319.42Z'\n ]\n };\n\n /**\n * wis fa-group-pid\n */\n static wisGroupPID = {\n prefix: 'wis',\n iconName: 'group-pid',\n icon: [\n 512, 512,\n [],\n null,\n 'M143.78,384H95.72V495.73h25.7V464.92h22.36c29.66,0,48.22-15.48,48.22-40.38C192,399.48,173.44,384,143.78,384Zm-1.43,59.86H121.42V405.07h20.93c15.71,0,23.64,7.18,23.64,19.47C166,436.67,158.06,443.86,142.35,443.86ZM240,384h32V496H240Zm130.62,0H320V496h50.58C407,496,432,473.92,432,440S407,384,370.62,384Zm-1.28,90.72H345.81V405.28h23.53c22.11,0,36.58,13.28,36.58,34.72S391.45,474.72,369.34,474.72Zm38.93-218.36-6.68,51.2a36,36,0,0,1-35.66,31.31H149.26a36,36,0,0,1-35.66-31.31l-6.68-51.2a49.78,49.78,0,0,1,34-47.22l20.33-6.78a66.51,66.51,0,0,1,21-3.4h0a66.4,66.4,0,0,1,21,3.4h0a171.82,171.82,0,0,0,108.73,0h0a66.4,66.4,0,0,1,21-3.4h0a66.4,66.4,0,0,1,21,3.4l20.34,6.78A49.78,49.78,0,0,1,408.27,256.36ZM178.55,122,171.5,57.4A41.4,41.4,0,0,1,212.9,16H343.69l-8,104.46a72.75,72.75,0,0,1-32.37,55.08,88.8,88.8,0,0,1-91.39,0l-1.19-.79A72.74,72.74,0,0,1,178.55,122Zm170.51,34.37a95.7,95.7,0,0,0,9.44-34.8l4.42-57.43a30.09,30.09,0,0,1,5.73-.56h93.43l-5.74,74.61a51.93,51.93,0,0,1-23.13,39.34h0a63.37,63.37,0,0,1-32.63,9h0a63.41,63.41,0,0,1-32.64-9l-.86-.56A52,52,0,0,1,349.06,156.36ZM508.2,235.25l-4.77,36.57A25.69,25.69,0,0,1,478,294.19h-51.6L431,258.66l.19-1.48v-1.5a72.74,72.74,0,0,0-22.82-53,122.46,122.46,0,0,0,31.05-6,47.39,47.39,0,0,1,30,0l14.52,4.85A35.53,35.53,0,0,1,508.2,235.25Zm-448-97.42-5-46.13A29.58,29.58,0,0,1,84.7,62.12h64l6.74,61.7a95.66,95.66,0,0,0,10.45,34.24,51.87,51.87,0,0,1-16.67,18h0a63.4,63.4,0,0,1-32.64,9h0a63.4,63.4,0,0,1-32.64-9l-.85-.56A52,52,0,0,1,60.16,137.83ZM83.9,258.66l4.45,34.09H39.24a25.69,25.69,0,0,1-25.47-22.37L9,233.81a35.56,35.56,0,0,1,24.3-33.73l14.53-4.84a47.39,47.39,0,0,1,30,0,122.65,122.65,0,0,0,30.37,6,72.72,72.72,0,0,0-24.45,54.45v1.5Z'\n ]\n };\n\n /**\n * wis fa-group-member-pid\n */\n static wisGroupMemberPID = {\n prefix: 'wis',\n iconName: 'group-member-pid',\n icon: [\n 512, 512,\n [],\n null,\n 'M429.71,215.48H415.06v-43h14.65c13.76,0,22.77,8.22,22.77,21.48S443.47,215.48,429.71,215.48Zm-105.64-31c0-7.62-4.95-12.08-14.75-12.08H296.25v24.06h13.07C319.12,196.47,324.07,192,324.07,184.49ZM512,140.16V416H45.16A45.16,45.16,0,0,1,0,370.84V140.16A45.16,45.16,0,0,1,45.16,95H466.84A45.16,45.16,0,0,1,512,140.16ZM399,228.64H430.5c22.67,0,38.21-13.66,38.21-34.65s-15.54-34.65-38.21-34.65H399Zm-39.9,0h16v-69.3h-16Zm-78.9,0h16v-19.1h14c18.52,0,30.1-9.61,30.1-25s-11.58-25.15-30.1-25.15h-30ZM173.09,247.27a21.51,21.51,0,0,0,7.46,8.53l.36.24a26.29,26.29,0,0,0,27,0,21.53,21.53,0,0,0,9.58-16.3l2.38-30.9H181.2a12.37,12.37,0,0,0-2.37.23L177,232.86A39.66,39.66,0,0,1,173.09,247.27Zm-73.54-41L102.47,233a30.12,30.12,0,0,0,13.32,21.85l.49.33a36.8,36.8,0,0,0,37.85,0h0a30.13,30.13,0,0,0,13.41-22.82l3.33-43.26H116.69A17.14,17.14,0,0,0,99.55,206.29Zm-50.2,14.2,2.08,19.11A21.54,21.54,0,0,0,61,255.21l.35.23a26.31,26.31,0,0,0,27,0,21.44,21.44,0,0,0,6.9-7.47,39.63,39.63,0,0,1-4.33-14.17l-2.79-25.56H61.6A12.24,12.24,0,0,0,49.35,220.49Zm22,45.37a50.85,50.85,0,0,1-12.57-2.49,19.75,19.75,0,0,0-12.41,0l-6,2a14.72,14.72,0,0,0-10.07,14l2,15.15a10.64,10.64,0,0,0,10.55,9.26H63.11l-1.84-14.12-.08-.61v-.62A30.12,30.12,0,0,1,71.31,265.86Zm126.3,22.83a20.62,20.62,0,0,0-14.09-19.56l-8.43-2.81a27.45,27.45,0,0,0-17.37,0,71.08,71.08,0,0,1-45,0h0a27.45,27.45,0,0,0-17.37,0l-8.43,2.81A20.62,20.62,0,0,0,72.8,288.69l2.77,21.2a14.88,14.88,0,0,0,14.77,13h89.74a14.88,14.88,0,0,0,14.76-13ZM239,279.94a14.72,14.72,0,0,0-10.07-14l-6-2a19.57,19.57,0,0,0-12.41,0,50.84,50.84,0,0,1-12.86,2.5,30.13,30.13,0,0,1,9.45,21.94V289l-.08.61-1.92,14.72h21.37A10.64,10.64,0,0,0,237,295.09Zm147.15,43.85H276.59v24H386.15ZM476,276H276v24H476Z'\n ]\n };\n\n /**\n * wis fa-html\n */\n static wisHTML = {\n prefix: 'wis',\n iconName: 'html',\n icon: [\n 24, 24,\n [],\n null, 'M20.5,5H3.5A1.5,1.5,0,0,0,2,6.5v11A1.5,1.5,0,0,0,3.5,19h17A1.5,1.5,0,0,0,22,17.5V6.5A1.5,1.5,0,0,0,20.5,5ZM9.207,14.793l-.3535.3535-.707.707-.3535.3535L3.5859,12,7.793,7.793l.3535.3535.707.707.3535.3535L6.4141,12Zm2.2412,2.0234L10.5,16.5l-.4746-.1582h0l-.4737-.1581,3-9L13.5,7.5l.4746.1582h0l.4737.1581Zm4.7588-.6094-.3535-.3535-.707-.707-.3535-.3535L17.5859,12,14.793,9.207l.3535-.3535.707-.707.3535-.3535L20.4141,12Z'\n ]\n };\n\n /**\n * wis fa-icon-header\n */\n static wisIconHeader = {\n prefix: 'wis',\n iconName: 'icon-header',\n icon: [\n 512, 512,\n [],\n null, 'M27.84,352H144V315.84A27.87,27.87,0,0,0,116.16,288H27.84A27.87,27.87,0,0,0,0,315.84v8.32A27.87,27.87,0,0,0,27.84,352ZM16,315.84A11.84,11.84,0,0,1,27.84,304h88.32A11.84,11.84,0,0,1,128,315.84V336H27.84A11.84,11.84,0,0,1,16,324.16ZM453.5,288h-235A26.53,26.53,0,0,0,192,314.5v11A26.53,26.53,0,0,0,218.5,352H480V314.5A26.53,26.53,0,0,0,453.5,288ZM464,336H218.5A10.5,10.5,0,0,1,208,325.5v-11A10.5,10.5,0,0,1,218.5,304h235A10.5,10.5,0,0,1,464,314.5ZM308.38,384H27.62A27.65,27.65,0,0,0,0,411.62v8.76A27.65,27.65,0,0,0,27.62,448H336V411.62A27.65,27.65,0,0,0,308.38,384ZM320,432H27.62A11.62,11.62,0,0,1,16,420.38v-8.76A11.62,11.62,0,0,1,27.62,400H308.38A11.62,11.62,0,0,1,320,411.62ZM488.68,48H23.32A23.32,23.32,0,0,0,0,71.32v81.36A23.32,23.32,0,0,0,23.32,176H512V71.32A23.32,23.32,0,0,0,488.68,48ZM80,144a32,32,0,1,1,32-32A32,32,0,0,1,80,144Zm304-24.85a8.85,8.85,0,0,1-8.85,8.85H168.85a8.85,8.85,0,0,1-8.85-8.85v-14.3A8.85,8.85,0,0,1,168.85,96h206.3a8.85,8.85,0,0,1,8.85,8.85ZM0,227.71v-7.42A12.29,12.29,0,0,1,12.29,208H371.71A12.29,12.29,0,0,1,384,220.29v7.42A12.29,12.29,0,0,1,371.71,240H12.29A12.29,12.29,0,0,1,0,227.71Z'\n ]\n };\n\n /**\n * wis fa-icon-header\n */\n static wisLabPID = {\n prefix: 'wis',\n iconName: 'lab-pid',\n icon: [\n 512, 512,\n [],\n null, 'M256,284.8V160a16,16,0,0,0,16-16V128a16,16,0,0,0-16-16H96a16,16,0,0,0-16,16v16a16,16,0,0,0,16,16V284.8L29.64,444.06A37.52,37.52,0,0,0,64.27,496H287.73a37.52,37.52,0,0,0,34.63-51.94Zm36.32,176.74a5.37,5.37,0,0,1-4.59,2.46H64.27a5.51,5.51,0,0,1-5.09-7.63L128,291.2V160h96V291.2l68.82,165.16A5.37,5.37,0,0,1,292.32,461.54ZM464,128H320a16,16,0,0,0-16,16v16a16,16,0,0,0,16,16V404.24A75.85,75.85,0,0,0,395.76,480,68.31,68.31,0,0,0,464,411.76V176a16,16,0,0,0,16-16V144A16,16,0,0,0,464,128ZM432,411.76A36.28,36.28,0,0,1,395.76,448,43.81,43.81,0,0,1,352,404.24V176h80ZM368,64a32,32,0,0,1,32-32c42.45,1.69,42.44,62.32,0,64A32,32,0,0,1,368,64ZM240,40a24,24,0,0,1,24-24c31.84,1.26,31.83,46.74,0,48A24,24,0,0,1,240,40Zm24,389.94A12.84,12.84,0,0,1,252.24,448H99.76A12.84,12.84,0,0,1,88,429.94l49.64-111.69A24,24,0,0,1,159.6,304h32.8a24,24,0,0,1,21.93,14.25ZM368,408V287.62A15.62,15.62,0,0,1,383.62,272h16.76A15.62,15.62,0,0,1,416,287.62V408a24,24,0,0,1-48,0Z'\n ]\n };\n\n /**\n * wis fa-license\n */\n static wisLicense = {\n prefix: 'wis',\n iconName: 'license',\n icon: [\n 512, 512,\n [],\n null, 'M466.84,96H45.16A45.16,45.16,0,0,0,0,141.16V371.84A45.16,45.16,0,0,0,45.16,417H512V141.16A45.16,45.16,0,0,0,466.84,96ZM106.93,144H192l-5.23,67.94a47.32,47.32,0,0,1-21.05,35.83h0a57.78,57.78,0,0,1-59.44,0l-.78-.52a47.31,47.31,0,0,1-20.91-34.31l-4.59-42A26.93,26.93,0,0,1,106.93,144ZM220.1,334.1A20.86,20.86,0,0,1,199.27,352H72.73A20.86,20.86,0,0,1,51.9,334.1L48,304.82a28.53,28.53,0,0,1,19.87-27L79.75,274a39.45,39.45,0,0,1,24.5,0h0a102.53,102.53,0,0,0,63.5,0h0a39.45,39.45,0,0,1,24.5,0l11.88,3.87a28.53,28.53,0,0,1,19.87,27ZM416,255.17H273.34v-32H416Zm48-62.28H272.38v-32H464Z'\n ]\n };\n\n /**\n * wis fa-menu\n */\n static wisMenu = {\n prefix: 'wis',\n iconName: 'menu',\n icon: [\n 24, 24,\n [],\n null, 'M20,7H4V5H20ZM4,13H20V11H4Zm0,6H16.8V17H4Z'\n ]\n };\n\n /**\n * wis fa-mmis-npi\n */\n static wisMMISNPI = {\n prefix: 'wis',\n iconName: 'mmis-npi',\n icon: [\n 24, 24,\n [],\n null, 'M8,12h2v9a1,1,0,0,1-.7246.9609A.9863.9863,0,0,1,9,22a.9979.9979,0,0,1-.8477-.47L5,16.4863V22H3V13a1,1,0,0,1,1.8477-.53L8,17.5137Zm10,3.5A3.5042,3.5042,0,0,1,14.5,19H13v3H11V13a1,1,0,0,1,1-1h2.5A3.5042,3.5042,0,0,1,18,15.5Zm-2,0A1.5017,1.5017,0,0,0,14.5,14H13v3h1.5A1.5017,1.5017,0,0,0,16,15.5ZM19,22h2V12H19ZM17,7H10.207a2.53,2.53,0,0,0,.375.6,2.575,2.575,0,0,0,3.5508.2891L15.44,9.4023A4.49,4.49,0,1,1,17,6ZM14.791,5a2.5063,2.5063,0,0,0-4.5869,0Z'\n ]\n };\n\n /**\n * wis fa-money\n */\n static wisMoney = {\n prefix: 'wis',\n iconName: 'money',\n icon: [\n 24, 24,\n [],\n null, 'M12,2A10,10,0,1,0,22,12,10,10,0,0,0,12,2Zm0,9a3.7793,3.7793,0,0,1,4,3.5,3.6194,3.6194,0,0,1-3,3.3757V19H11V17.8757A3.6194,3.6194,0,0,1,8,14.5h2c0,.813.916,1.5,2,1.5s2-.687,2-1.5S13.084,13,12,13A3.7793,3.7793,0,0,1,8,9.5a3.6194,3.6194,0,0,1,3-3.3757V5h2V6.1243A3.6194,3.6194,0,0,1,16,9.5H14c0-.813-.916-1.5-2-1.5s-2,.687-2,1.5S10.916,11,12,11Z'\n ]\n };\n\n /**\n * wis fa-multi-select\n */\n static wisMultiSelect = {\n prefix: 'wis',\n iconName: 'multi-select',\n icon: [\n 24, 24,\n [],\n null, 'M13,4h9V6H13Zm0,13h9V15H13ZM3.5,11h6A1.5,1.5,0,0,0,11,9.5V4.4141l-4.5,4.5L3.293,5.707,4.707,4.293,6.5,6.0859l3.8329-3.8328A1.4926,1.4926,0,0,0,9.5,2h-6A1.5,1.5,0,0,0,2,3.5v6A1.5,1.5,0,0,0,3.5,11Zm0,11h6A1.5,1.5,0,0,0,11,20.5V15.4141l-4.5,4.5L3.293,16.707l1.414-1.414L6.5,17.0859l3.8329-3.8328A1.4926,1.4926,0,0,0,9.5,13h-6A1.5,1.5,0,0,0,2,14.5v6A1.5,1.5,0,0,0,3.5,22ZM20,8H13v2h7Zm0,11H13v2h7Z'\n ]\n };\n\n /**\n * wis fa-npi\n */\n static wisNPI = {\n prefix: 'wis',\n iconName: 'npi',\n icon: [\n 24, 24,\n [],\n null, 'M11,10V7H8V5h3V2h2V5h3V7H13v3ZM8,17.5137,4.8477,12.47A1,1,0,0,0,3,13v9H5V16.4863L8.1523,21.53A.9979.9979,0,0,0,9,22a.9863.9863,0,0,0,.2754-.0391A1,1,0,0,0,10,21V12H8ZM18,15.5A3.5042,3.5042,0,0,1,14.5,19H13v3H11V13a1,1,0,0,1,1-1h2.5A3.5042,3.5042,0,0,1,18,15.5Zm-2,0A1.5017,1.5017,0,0,0,14.5,14H13v3h1.5A1.5017,1.5017,0,0,0,16,15.5ZM19,22h2V12H19Z'\n ]\n };\n\n /**\n * wis fa-numeric-text\n */\n static wisNumericText = {\n prefix: 'wis',\n iconName: 'numeric-text',\n icon: [\n 512, 512,\n [],\n null, 'M96,386H14A14,14,0,0,1,0,372V142a14,14,0,0,1,14-14H96Zm80-2v32h32a16,16,0,0,1,16,16v32H96a16,16,0,0,1-16-16V432a16,16,0,0,1,16-16h32V96H96A16,16,0,0,1,80,80V64A16,16,0,0,1,96,48H208a16,16,0,0,1,16,16V96H176v32H498a14,14,0,0,1,14,14V384Zm246.64-90.35c0,11.44-9.05,18.07-23.7,18.07-13.21,0-26.59-4.62-36.18-12.65L351.36,324c12.3,9.64,30.58,15.05,48.3,15.05,36,0,52.47-21.67,52.47-45.36,0-20.67-11.58-36.33-34.37-40.34l28.58-36.13V196.11H357.69V222.2H411.6l-26.05,32.72v21.47h13.39C415.58,276.39,422.64,283,422.64,293.65ZM208.81,219.79,230.15,235c6.15-9.43,15.38-14,26.24-14,13.38,0,20.26,6.42,20.26,17.46,0,6.82-2,14-13.21,25.89L214.6,315.53v21.08h95.7v-26.5H255.84L285,279.6c17.73-18.26,21.17-30.71,21.17-44.35,0-25.5-18.82-41.55-47-41.55C236.3,193.7,218.58,203.93,208.81,219.79Z'\n ]\n };\n\n /**\n * wis fa-percent-slider\n */\n static wisPercentSlider = {\n prefix: 'wis',\n iconName: 'percent-slider',\n icon: [\n 512, 512,\n [],\n null, 'M176.19,229.46l128-192a19,19,0,1,1,31.62,21.08l-128,192a19,19,0,1,1-31.62-21.08ZM168,128h40V72a24,24,0,0,0-24-24H168a24,24,0,0,0-24,24v32A24,24,0,0,0,168,128Zm144,64a24,24,0,0,0-24,24v32a24,24,0,0,0,24,24h40V216a24,24,0,0,0-24-24ZM32,384A32,32,0,0,0,0,416H0a32,32,0,0,0,32,32H244.65a112.43,112.43,0,0,1,0-64Zm448,0H459.35a112.43,112.43,0,0,1,0,64H480a32,32,0,0,0,32-32h0A32,32,0,0,0,480,384ZM352,336a80,80,0,1,0,80,80A80,80,0,0,0,352,336Z'\n ]\n };\n\n /**\n * wis fa-person-name\n */\n static wisPersonName = {\n prefix: 'wis',\n iconName: 'person-name',\n icon: [\n 512, 512,\n [],\n null, 'M480,373.32l-9.93,76.13a53.46,53.46,0,0,1-53,46.55H94.94a53.46,53.46,0,0,1-53-46.55L32,373.32a74,74,0,0,1,50.59-70.18l30.23-10.08a98.6,98.6,0,0,1,62.36,0h0a255.53,255.53,0,0,0,161.64,0h0a98.6,98.6,0,0,1,62.36,0l30.23,10.08A74,74,0,0,1,480,373.32ZM186.29,252l1.78,1.17A132,132,0,0,0,256,272h0a132,132,0,0,0,67.93-18.82,108.12,108.12,0,0,0,48.12-81.88L384,16H189.55A61.55,61.55,0,0,0,128,77.55l10.49,96A108.19,108.19,0,0,0,186.29,252Z'\n ]\n };\n\n /**\n * wis fa-pharmacy-pid\n */\n static wisPharmacyPID = {\n prefix: 'wis',\n iconName: 'pharmacy-pid',\n icon: [\n 512, 512,\n [],\n null, 'M256,64H46.76A14.76,14.76,0,0,1,32,49.24V14.76A14.76,14.76,0,0,1,46.76,0H241.24A14.76,14.76,0,0,1,256,14.76ZM192,424.64c0,25-18.5,40.48-48.08,40.48h-22.3V496H96V384h47.92C173.5,384,192,399.52,192,424.64Zm-25.94,0c0-12.32-7.9-19.52-23.56-19.52H121.62V444H142.5C158.16,444,166.06,436.8,166.06,424.64ZM224,496h32V384H224Zm191-56c0,33.92-25,56-61.41,56H303V384h50.59C390,384,415,406.08,415,440Zm-26.09,0c0-21.44-14.48-34.72-36.59-34.72H328.77v69.44h23.55C374.43,474.72,388.91,461.44,388.91,440ZM480,272h0a64,64,0,0,1-64,64H256a64,64,0,0,1-64-64h0a64,64,0,0,1,64-64H416A64,64,0,0,1,480,272Zm-32,0a32,32,0,0,0-32-32H336v64h80a32,32,0,0,0,32-32ZM184.51,336A95.94,95.94,0,0,1,240,177.34V102.61A22.61,22.61,0,0,0,217.39,80H70.61A22.61,22.61,0,0,0,48,102.61V128h72a8,8,0,0,1,0,16H48v48h72a8,8,0,0,1,0,16H48v48h72a8,8,0,0,1,0,16H48v14.47A49.54,49.54,0,0,0,97.53,336Z'\n ]\n };\n\n /**\n * wis fa-phone\n */\n static wisPhone = {\n prefix: 'wis',\n iconName: 'phone',\n icon: [\n 512, 512,\n [],\n null, 'M463.56,112.5H192V96A80,80,0,0,0,32,96v19.35A48.94,48.94,0,0,0-.5,161.44V431.56A48.94,48.94,0,0,0,48.44,480.5H512.5V161.44A48.94,48.94,0,0,0,463.56,112.5ZM48,96a64,64,0,0,1,64-64h0a64,64,0,0,1,64,64V337a64,64,0,0,1-64,64h0a64,64,0,0,1-64-64V96ZM288,400H249.3a9.3,9.3,0,0,1-9.3-9.3V377.3a9.3,9.3,0,0,1,9.3-9.3h29.4a9.3,9.3,0,0,1,9.3,9.3Zm0-48H249.3a9.3,9.3,0,0,1-9.3-9.3V329.3a9.3,9.3,0,0,1,9.3-9.3h29.4a9.3,9.3,0,0,1,9.3,9.3Zm0-48H249.3a9.3,9.3,0,0,1-9.3-9.3V281.3a9.3,9.3,0,0,1,9.3-9.3h29.4a9.3,9.3,0,0,1,9.3,9.3Zm80,96H329.3a9.3,9.3,0,0,1-9.3-9.3V377.3a9.3,9.3,0,0,1,9.3-9.3h29.4a9.3,9.3,0,0,1,9.3,9.3Zm0-48H329.3a9.3,9.3,0,0,1-9.3-9.3V329.3a9.3,9.3,0,0,1,9.3-9.3h29.4a9.3,9.3,0,0,1,9.3,9.3Zm0-48H329.3a9.3,9.3,0,0,1-9.3-9.3V281.3a9.3,9.3,0,0,1,9.3-9.3h29.4a9.3,9.3,0,0,1,9.3,9.3Zm80,96H409.3a9.3,9.3,0,0,1-9.3-9.3V377.3a9.3,9.3,0,0,1,9.3-9.3h29.4a9.3,9.3,0,0,1,9.3,9.3Zm0-48H409.3a9.3,9.3,0,0,1-9.3-9.3V329.3a9.3,9.3,0,0,1,9.3-9.3h29.4a9.3,9.3,0,0,1,9.3,9.3Zm0-48H409.3a9.3,9.3,0,0,1-9.3-9.3V281.3a9.3,9.3,0,0,1,9.3-9.3h29.4a9.3,9.3,0,0,1,9.3,9.3Zm0-100.35A36.34,36.34,0,0,1,411.65,240H276.35A36.34,36.34,0,0,1,240,203.65V176.81A16.82,16.82,0,0,1,256.81,160H431.19A16.82,16.82,0,0,1,448,176.81Z'\n ]\n };\n\n /**\n * wis fa-physical-address\n */\n static wisPhysicalAddress = {\n prefix: 'wis',\n iconName: 'physical-address',\n icon: [\n 512, 512,\n [],\n null, 'M457.12,354.13,336,284.4l-52.13,30h0l-47.59,27.39-21.4,12.32,16,27.74h0l22.91-13.2h0l2.23-1.29V480H416V367.38l25.15,14.49ZM352,432H320V384h32ZM217,389.85l-16-27.73-8-13.87,13.87-8,92-53,17.87-32.23A142.7,142.7,0,0,0,292.91,84.91h0a142.71,142.71,0,0,0-201.82,0h0A142.7,142.7,0,0,0,67.21,255.06L192,480l46.71-84.2L225,403.72ZM128,176a64,64,0,1,1,64,64A64,64,0,0,1,128,176Z'\n ]\n };\n\n /**\n * wis fa-physician-license\n */\n static wisPhysicianLicense = {\n prefix: 'wis',\n iconName: 'physician-license',\n icon: [\n 512, 512,\n [],\n null, 'M466.84,95H45.16A45.16,45.16,0,0,0,0,140.16V370.84A45.16,45.16,0,0,0,45.16,416H512V140.16A45.16,45.16,0,0,0,466.84,95ZM364.47,172.67H379l13.64,33,13.73-33h13.55L398,224.25c-4.7,11.75-11.38,15.27-20.15,15.27-5,0-10.38-1.63-13.54-4.43l5.14-10a12.54,12.54,0,0,0,7.95,3.07c3.89,0,6.06-1.72,7.95-6l.18-.46ZM303.4,154.25h14.09v23.48c3.8-3.79,9.22-5.78,15.45-5.78,11.47,0,20.14,6.69,20.14,21.5v27.82H339V195.62c0-7.86-3.61-11.47-9.84-11.47-6.78,0-11.66,4.15-11.66,13.1v24H303.4ZM231.5,158h27.37c16.89,0,27.46,8.76,27.46,23s-10.57,22.85-27.46,22.85H246.13v17.43H231.5ZM87.76,163.45h69.79l-4.29,55.73A38.82,38.82,0,0,1,136,248.57a47.38,47.38,0,0,1-24.38,6.75h0a47.36,47.36,0,0,1-24.38-6.75l-.64-.42A38.85,38.85,0,0,1,69.43,220l-3.76-34.46A22.09,22.09,0,0,1,87.76,163.45Zm72.66,140.78a8.62,8.62,0,1,1-8.62-8.61A8.63,8.63,0,0,1,160.42,304.23Zm28,20.62a19.19,19.19,0,0,1-19,16.7H53.8a19.18,19.18,0,0,1-19-16.7l-3.57-27.32a26.55,26.55,0,0,1,18.16-25.19l10.85-3.62a35.49,35.49,0,0,1,11.19-1.82c.56,0,1.12,0,1.68.05v9.42l-15,16.42a22.23,22.23,0,0,0-6,15v7.16c0,4.79,4.26,8.69,9.5,8.69h4.14a5,5,0,0,0,0-10.05H62.08v-5.8a12,12,0,0,1,3.39-8.18l12.64-13.82,12.7,13.88a11.85,11.85,0,0,1,3.33,8v5.88h-5.5a5,5,0,1,0,0,10.05h5.94c5.3,0,9.61-3.94,9.61-8.78v-7.15a22,22,0,0,0-6-14.82L83.14,276.37v-7.48a91.67,91.67,0,0,0,57.47-.17h0a36.77,36.77,0,0,1,5.45-1.35V285a20.1,20.1,0,1,0,11.49,0v-17.6a36.64,36.64,0,0,1,5.44,1.35l10.85,3.62A26.54,26.54,0,0,1,192,297.53ZM364,347.79H228.77v-24H364ZM460,300H228V276H460Zm-11.89-78c-8.22,0-16.53-2.26-21-5.24l4.69-10.12a33.27,33.27,0,0,0,16.9,4.7c6.5,0,8.94-1.72,8.94-4.43,0-7.95-29.36.18-29.36-19.24,0-9.21,8.31-15.72,22.49-15.72,6.69,0,14.1,1.54,18.7,4.25l-4.7,10a27.87,27.87,0,0,0-14-3.61c-6.32,0-9,2-9,4.52,0,8.31,29.36.27,29.36,19.42C471.06,215.58,462.66,222,448.11,222ZM258.05,191.92H246.13V170h11.92c8.95,0,13.46,4.07,13.46,11S267,191.92,258.05,191.92Z'\n ]\n };\n\n /**\n * wis fa-physician-pid\n */\n static wisPhysicianPID = {\n prefix: 'wis',\n iconName: 'physician-pid',\n icon: [\n 512, 512,\n [],\n null, 'M138.49,173.57,128,77.55A61.55,61.55,0,0,1,189.55,16H384L372.05,171.3a108.12,108.12,0,0,1-48.12,81.88A132,132,0,0,1,256,272h0a132,132,0,0,1-67.93-18.82L186.29,252A108.19,108.19,0,0,1,138.49,173.57ZM429.41,303.14l-30.23-10.08A99.56,99.56,0,0,0,384,289.31v49a56,56,0,1,1-32,0v-49a99.56,99.56,0,0,0-15.18,3.75h0a255.61,255.61,0,0,1-160.15.48v20.83l42,45.94c10.72,11.72,16.63,26.39,16.63,41.31v19.91c0,13.49-12,24.47-26.78,24.47H192a14,14,0,0,1,0-28h15.34V401.62c0-8-3.21-15.77-9.29-22.41l-35.38-38.66L127.45,379c-6.18,6.76-9.44,14.64-9.44,22.81V418h10a14,14,0,0,1,0,28H116.46C101.87,446,90,435.14,90,421.79v-20c0-15.06,6-29.88,16.79-41.71l41.87-45.76V288.12c-1.55-.07-3.11-.12-4.67-.12a98.61,98.61,0,0,0-31.18,5.06L82.59,303.14A74,74,0,0,0,32,373.32l9.93,76.13a53.46,53.46,0,0,0,53,46.55H417.06a53.46,53.46,0,0,0,53-46.55L480,373.32A74,74,0,0,0,429.41,303.14ZM344,392a24,24,0,1,0,24-24A24,24,0,0,0,344,392Z'\n ]\n };\n\n /**\n * wis fa-pid\n */\n static wisPID = {\n prefix: 'wis',\n iconName: 'pid',\n icon: [\n 24, 24,\n [],\n null, 'M20.5,5H3.5A1.5,1.5,0,0,0,2,6.5v11A1.5,1.5,0,0,0,3.5,19h17A1.5,1.5,0,0,0,22,17.5V6.5A1.5,1.5,0,0,0,20.5,5ZM6.25,14h2.5A2.2843,2.2843,0,0,1,11,16.3125V18H4V16.3125A2.2843,2.2843,0,0,1,6.25,14ZM5,11.0811V9.9189A1.9213,1.9213,0,0,1,6.9185,8H10v3.0811A1.9213,1.9213,0,0,1,8.0815,13H6.9185A1.9213,1.9213,0,0,1,5,11.0811ZM18,14v1H16v2H15V15H13V14h2V12h1v2Zm1-4H13V8h6Z'\n ]\n };\n\n /**\n * wis fa-radio-buttons\n */\n static wisRadioButtons = {\n prefix: 'wis',\n iconName: 'radio-buttons',\n icon: [\n 24, 24,\n [],\n null, 'M6.5,11A4.5,4.5,0,1,0,2,6.5,4.5,4.5,0,0,0,6.5,11Zm0-6A1.5,1.5,0,1,1,5,6.5,1.5,1.5,0,0,1,6.5,5ZM2,17.5A4.5,4.5,0,1,1,6.5,22,4.5,4.5,0,0,1,2,17.5ZM22,5H13V3h9Zm0,11H13V14h9ZM20,7V9H13V7Zm0,13H13V18h7Z'\n ]\n };\n\n /**\n * wis fa-reply\n */\n static wisReply = {\n prefix: 'wis',\n iconName: 'reply',\n icon: [\n 24, 24,\n [],\n null, 'M21.82,8.1162a.5.5,0,0,1,0,.7676l-6,5A.5.5,0,0,1,15,13.5V11H10a4.5,4.5,0,0,0,0,9,.5.5,0,0,1,0,1A7.5,7.5,0,0,1,10,6h5V3.5a.5.5,0,0,1,.82-.3838Z'\n ]\n };\n\n /**\n * wis fa-routing-number\n */\n static wisRoutingNumber = {\n prefix: 'wis',\n iconName: 'routing-number',\n icon: [\n 512, 512,\n [],\n null, 'M512,480h0a16,16,0,0,1-16,16H16A16,16,0,0,1,0,480H0a16,16,0,0,1,16-16H496A16,16,0,0,1,512,480ZM32,448H496V416a16,16,0,0,0-16-16H464V224H430.68A30.69,30.69,0,0,0,400,254.68V400H352V224H318.68A30.69,30.69,0,0,0,288,254.68V400H224V224H190.68A30.69,30.69,0,0,0,160,254.68V400H112V224H78.68A30.69,30.69,0,0,0,48,254.68V400H32a16,16,0,0,0-16,16v16A16,16,0,0,0,32,448ZM248.5,57.34c-10.1,2-14.37,8.19-14.37,15.67,0,8.18,6.09,12,14.37,15Zm26.9,70.38c0-7.44-4.9-11.35-11.9-14.19v28.56C271.76,139.74,275.4,134.35,275.4,127.72ZM16,178.39V166.57A16.81,16.81,0,0,1,24.57,152L256,0,487.89,151.86A16.83,16.83,0,0,1,496,166.23v12.89A13,13,0,0,1,483,192H29.75A13.68,13.68,0,0,1,16,178.39Zm232.5-69.58v34.32a50.38,50.38,0,0,1-28.6-13l-6.47,17.37c7.52,7.76,21,13.26,35.07,14.27V176h15V161.08c20.51-3.65,30.31-18.24,30.31-34.91,0-22.34-15.24-29.13-30.31-33.69V57.39a52.1,52.1,0,0,1,20.24,8.74l5.9-17.38c-7-5.49-16.47-9-26.14-10.2V32h-15v6.55C226.13,41.33,215.58,56.49,215.58,74,215.58,97.91,232.61,104.19,248.5,108.81Z'\n ]\n };\n\n /**\n * wis fa-select-all\n */\n static wisSelectAll = {\n prefix: 'wis',\n iconName: 'select-all',\n icon: [\n 24, 24,\n [],\n null, 'M3,7.07A4.0753,4.0753,0,0,1,7.07,3H17V5H7.07A2.0726,2.0726,0,0,0,5,7.07V18H3ZM20.6667,6H7.3334A1.3333,1.3333,0,0,0,6,7.3333V20.6666A1.3334,1.3334,0,0,0,7.3334,22H20.6667A1.3333,1.3333,0,0,0,22,20.6666V10.854L15.6354,17.39a2.3074,2.3074,0,0,1-3.26.0069L9.1363,14.158l1.2569-1.257L13.632,16.14a.5239.5239,0,0,0,.7387.0008L22,8.3049V7.3333A1.3333,1.3333,0,0,0,20.6667,6Z'\n ]\n };\n\n /**\n * wis fa-sidebar-close\n */\n static wisSidebarClose = {\n prefix: 'wis',\n iconName: 'sidebar-close',\n icon: [\n 512, 512,\n [],\n null, 'M498.86,334.25a15.89,15.89,0,0,1,0,22.41l-11.2,11.2a15.87,15.87,0,0,1-22.43,0l-96.05-96.05a15.94,15.94,0,0,1,0-22.43l96.06-96a15.71,15.71,0,0,1,11.21-4.64c8.74-.86,16.74,10.82,22.42,15.84a15.9,15.9,0,0,1,0,22.41l-73.32,73.65ZM156.81,192a20.68,20.68,0,0,0,20.67-20.67v-7a20.67,20.67,0,0,0-20.67-20.67H56.23a20.67,20.67,0,0,0-20.68,20.67v7A20.68,20.68,0,0,0,56.23,192ZM35.55,267.1A20.9,20.9,0,0,0,56.45,288H156.58c15.24-.44,22.38-12.93,20.9-27.1a20.9,20.9,0,0,0-20.9-20.9H56.45C41.22,240.44,34.07,252.93,35.55,267.1ZM35,363.5A20.5,20.5,0,0,0,55.47,384H156.4a20.5,20.5,0,0,0,20.5-20.5v-7A20.5,20.5,0,0,0,156.4,336H55.47A20.5,20.5,0,0,0,35,356.5ZM245.42,52.1A23.87,23.87,0,0,0,232,48H24a24,24,0,0,0,0,48H208V432H24a24,24,0,0,0,0,48H232a24,24,0,0,0,24-24V72A24,24,0,0,0,245.42,52.1Z'\n ]\n };\n\n /**\n * wis fa-sidebar-open\n */\n static wisSidebarOpen = {\n prefix: 'wis',\n iconName: 'sidebar-open',\n icon: [\n 512, 512,\n [],\n null, 'M503.47,260.59a15.79,15.79,0,0,1-4.64,11.22l-96.05,96.05a15.81,15.81,0,0,1-11.21,4.64c-8.55,1-16.84-10.9-22.42-15.84a15.89,15.89,0,0,1,0-22.41l73.31-73.66-73.32-73.65a15.9,15.9,0,0,1,0-22.41c5.78-4.95,13.61-16.76,22.42-15.84a15.75,15.75,0,0,1,11.22,4.64l96.05,96A15.76,15.76,0,0,1,503.47,260.59ZM156.81,192c15.6-.46,22.2-13.38,20.67-27.66a20.67,20.67,0,0,0-20.67-20.67H56.23c-15.6.46-22.2,13.38-20.68,27.66A20.68,20.68,0,0,0,56.23,192ZM35.55,267.1A20.9,20.9,0,0,0,56.45,288H156.58c15-.26,22.5-13.15,20.9-27.1a20.9,20.9,0,0,0-20.9-20.9H56.45C41.42,240.26,34,253.15,35.55,267.1ZM35,363.5A20.5,20.5,0,0,0,55.47,384H156.4c15.53-.47,22-13.32,20.5-27.5A20.5,20.5,0,0,0,156.4,336H55.47C40,336.47,33.46,349.32,35,363.5ZM245.42,52.1a23.78,23.78,0,0,0-8.58-3.61A24.15,24.15,0,0,0,232,48H24a24,24,0,0,0,0,48H208V432H24a24,24,0,0,0,0,48H232a24,24,0,0,0,24-24V72A24,24,0,0,0,245.42,52.1Z'\n ]\n };\n\n /**\n * wis fa-ssn\n */\n static wisSSN = {\n prefix: 'wis',\n iconName: 'ssn',\n icon: [\n 24, 24,\n [],\n null, 'M21,14.0918V13.5a3.5,3.5,0,0,0-7,0v.5918A1.4957,1.4957,0,0,0,13,15.5v6A1.5,1.5,0,0,0,14.5,23h6A1.5,1.5,0,0,0,22,21.5v-6A1.4957,1.4957,0,0,0,21,14.0918ZM17.5,12A1.5017,1.5017,0,0,1,19,13.5V14H16v-.5A1.5017,1.5017,0,0,1,17.5,12Zm.5,6.9082V21H17V18.9082a1.5,1.5,0,1,1,1,0ZM6.6,13H8.4238l.6155.59A4.2445,4.2445,0,0,0,11,14.6406V21H3V16.4285A3.5174,3.5174,0,0,1,6.6,13Zm3.4349-1A3.0349,3.0349,0,0,1,7,8.9651v-3.93A3.0349,3.0349,0,0,1,10.0349,2H17V8.0252A5.4987,5.4987,0,0,0,12.2124,12Z'\n ]\n };\n\n /**\n * wis fa-text-area\n */\n static wisTextArea = {\n prefix: 'wis',\n iconName: 'text-area',\n icon: [\n 512, 512,\n [],\n null, 'M498,128H176V304h32a16,16,0,0,1,16,16v32H96a16,16,0,0,1-16-16V320a16,16,0,0,1,16-16h32V128H14A14,14,0,0,0,0,142V434a14,14,0,0,0,14,14H512V142A14,14,0,0,0,498,128ZM448,352H288V320H448ZM176,128H128V112H96A16,16,0,0,1,80,96V80A16,16,0,0,1,96,64H208a16,16,0,0,1,16,16v32H176Z'\n ]\n };\n\n /**\n * wis fa-text-box\n */\n static wisTextBox = {\n prefix: 'wis',\n iconName: 'text-box',\n icon: [\n 512, 512,\n [],\n null, 'M96,386H14A14,14,0,0,1,0,372V142a14,14,0,0,1,14-14H96Zm80-2v32h32a16,16,0,0,1,16,16v32H96a16,16,0,0,1-16-16V432a16,16,0,0,1,16-16h32V96H96A16,16,0,0,1,80,80V64A16,16,0,0,1,96,48H208a16,16,0,0,1,16,16V96H176v32H498a14,14,0,0,1,14,14V384Zm48-48H384V304H224Z'\n ]\n };\n\n /**\n * The list of exported Solid icons\n */\n static icons = [\n ParticleIconsSolid.wisAddress,\n ParticleIconsSolid.wisAlphaText,\n ParticleIconsSolid.wisCheckbox,\n ParticleIconsSolid.wisDate,\n ParticleIconsSolid.wisDateRange,\n ParticleIconsSolid.wisDivider,\n ParticleIconsSolid.wisDocumentUpload,\n ParticleIconsSolid.wisDropdown,\n ParticleIconsSolid.wisEmail,\n ParticleIconsSolid.wisExistingLicense,\n ParticleIconsSolid.wisFEIN,\n ParticleIconsSolid.wisGroupPID,\n ParticleIconsSolid.wisGroupMemberPID,\n ParticleIconsSolid.wisHTML,\n ParticleIconsSolid.wisIconHeader,\n ParticleIconsSolid.wisLabPID,\n ParticleIconsSolid.wisLicense,\n ParticleIconsSolid.wisMMISNPI,\n ParticleIconsSolid.wisMoney,\n ParticleIconsSolid.wisMultiSelect,\n ParticleIconsSolid.wisNPI,\n ParticleIconsSolid.wisNumericText,\n ParticleIconsSolid.wisPercentSlider,\n ParticleIconsSolid.wisPersonName,\n ParticleIconsSolid.wisPharmacyPID,\n ParticleIconsSolid.wisPhone,\n ParticleIconsSolid.wisPID,\n ParticleIconsSolid.wisPhysicalAddress,\n ParticleIconsSolid.wisPhysicianLicense,\n ParticleIconsSolid.wisPhysicianPID,\n ParticleIconsSolid.wisRadioButtons,\n ParticleIconsSolid.wisReply,\n ParticleIconsSolid.wisRoutingNumber,\n ParticleIconsSolid.wisSelectAll,\n ParticleIconsSolid.wisSidebarClose,\n ParticleIconsSolid.wisSidebarOpen,\n ParticleIconsSolid.wisSSN,\n ParticleIconsSolid.wisTextArea,\n ParticleIconsSolid.wisTextBox\n ];\n\n}\n","/**\r\n * Model representing Fontawesome's brands icons\r\n */\r\nexport class FontawesomeIconsBrands {\r\n\r\n /**\r\n * The brands icon prefix\r\n */\r\n static readonly PREFIX = 'fab';\r\n\r\n /**\r\n * Icon classes\r\n */\r\n static readonly ICONS = [\r\n 'fa-500px',\r\n 'fa-accessible-icon',\r\n 'fa-accusoft',\r\n 'fa-adn',\r\n 'fa-adversal',\r\n 'fa-affiliatetheme',\r\n 'fa-airbnb',\r\n 'fa-algolia',\r\n 'fa-alipay',\r\n 'fa-amazon',\r\n 'fa-amazon-pay',\r\n 'fa-amilia',\r\n 'fa-android',\r\n 'fa-angellist',\r\n 'fa-angrycreative',\r\n 'fa-angular',\r\n 'fa-app-store',\r\n 'fa-app-store-ios',\r\n 'fa-apper',\r\n 'fa-apple',\r\n 'fa-apple-pay',\r\n 'fa-artstation',\r\n 'fa-asymmetrik',\r\n 'fa-atlassian',\r\n 'fa-audible',\r\n 'fa-autoprefixer',\r\n 'fa-avianex',\r\n 'fa-aviato',\r\n 'fa-aws',\r\n 'fa-bandcamp',\r\n 'fa-battle-net',\r\n 'fa-behance',\r\n 'fa-behance-square',\r\n 'fa-bimobject',\r\n 'fa-bitbucket',\r\n 'fa-bitcoin',\r\n 'fa-bity',\r\n 'fa-black-tie',\r\n 'fa-blackberry',\r\n 'fa-blogger',\r\n 'fa-blogger-b',\r\n 'fa-bluetooth',\r\n 'fa-bluetooth-b',\r\n 'fa-bootstrap',\r\n 'fa-btc',\r\n 'fa-buffer',\r\n 'fa-buromobelexperte',\r\n 'fa-buy-n-large',\r\n 'fa-buysellads',\r\n 'fa-canadian-maple-leaf',\r\n 'fa-cc-amazon-pay',\r\n 'fa-cc-amex',\r\n 'fa-cc-apple-pay',\r\n 'fa-cc-diners-club',\r\n 'fa-cc-discover',\r\n 'fa-cc-jcb',\r\n 'fa-cc-mastercard',\r\n 'fa-cc-paypal',\r\n 'fa-cc-stripe',\r\n 'fa-cc-visa',\r\n 'fa-centercode',\r\n 'fa-centos',\r\n 'fa-chrome',\r\n 'fa-chromecast',\r\n 'fa-cloudflare',\r\n 'fa-cloudscale',\r\n 'fa-cloudsmith',\r\n 'fa-cloudversify',\r\n 'fa-codepen',\r\n 'fa-codiepie',\r\n 'fa-confluence',\r\n 'fa-connectdevelop',\r\n 'fa-contao',\r\n 'fa-cotton-bureau',\r\n 'fa-cpanel',\r\n 'fa-creative-commons',\r\n 'fa-creative-commons-by',\r\n 'fa-creative-commons-nc',\r\n 'fa-creative-commons-nc-eu',\r\n 'fa-creative-commons-nc-jp',\r\n 'fa-creative-commons-nd',\r\n 'fa-creative-commons-pd',\r\n 'fa-creative-commons-pd-alt',\r\n 'fa-creative-commons-remix',\r\n 'fa-creative-commons-sa',\r\n 'fa-creative-commons-sampling',\r\n 'fa-creative-commons-sampling-plus',\r\n 'fa-creative-commons-share',\r\n 'fa-creative-commons-zero',\r\n 'fa-critical-role',\r\n 'fa-css3',\r\n 'fa-css3-alt',\r\n 'fa-cuttlefish',\r\n 'fa-d-and-d',\r\n 'fa-d-and-d-beyond',\r\n 'fa-dailymotion',\r\n 'fa-dashcube',\r\n 'fa-deezer',\r\n 'fa-delicious',\r\n 'fa-deploydog',\r\n 'fa-deskpro',\r\n 'fa-dev',\r\n 'fa-deviantart',\r\n 'fa-dhl',\r\n 'fa-diaspora',\r\n 'fa-digg',\r\n 'fa-digital-ocean',\r\n 'fa-discord',\r\n 'fa-discourse',\r\n 'fa-dochub',\r\n 'fa-docker',\r\n 'fa-draft2digital',\r\n 'fa-dribbble',\r\n 'fa-dribbble-square',\r\n 'fa-dropbox',\r\n 'fa-drupal',\r\n 'fa-dyalog',\r\n 'fa-earlybirds',\r\n 'fa-ebay',\r\n 'fa-edge',\r\n 'fa-edge-legacy',\r\n 'fa-elementor',\r\n 'fa-ello',\r\n 'fa-ember',\r\n 'fa-empire',\r\n 'fa-envira',\r\n 'fa-erlang',\r\n 'fa-ethereum',\r\n 'fa-etsy',\r\n 'fa-evernote',\r\n 'fa-expeditedssl',\r\n 'fa-facebook',\r\n 'fa-facebook-f',\r\n 'fa-facebook-messenger',\r\n 'fa-facebook-square',\r\n 'fa-fantasy-flight-games',\r\n 'fa-fedex',\r\n 'fa-fedora',\r\n 'fa-figma',\r\n 'fa-firefox',\r\n 'fa-firefox-browser',\r\n 'fa-first-order',\r\n 'fa-first-order-alt',\r\n 'fa-firstdraft',\r\n 'fa-flickr',\r\n 'fa-flipboard',\r\n 'fa-fly',\r\n 'fa-font-awesome',\r\n 'fa-font-awesome-alt',\r\n 'fa-font-awesome-flag',\r\n 'fa-fonticons',\r\n 'fa-fonticons-fi',\r\n 'fa-fort-awesome',\r\n 'fa-fort-awesome-alt',\r\n 'fa-forumbee',\r\n 'fa-foursquare',\r\n 'fa-free-code-camp',\r\n 'fa-freebsd',\r\n 'fa-fulcrum',\r\n 'fa-galactic-republic',\r\n 'fa-galactic-senate',\r\n 'fa-get-pocket',\r\n 'fa-gg',\r\n 'fa-gg-circle',\r\n 'fa-git',\r\n 'fa-git-alt',\r\n 'fa-git-square',\r\n 'fa-github',\r\n 'fa-github-alt',\r\n 'fa-github-square',\r\n 'fa-gitkraken',\r\n 'fa-gitlab',\r\n 'fa-gitter',\r\n 'fa-glide',\r\n 'fa-glide-g',\r\n 'fa-gofore',\r\n 'fa-goodreads',\r\n 'fa-goodreads-g',\r\n 'fa-google',\r\n 'fa-google-drive',\r\n 'fa-google-pay',\r\n 'fa-google-play',\r\n 'fa-google-plus',\r\n 'fa-google-plus-g',\r\n 'fa-google-plus-square',\r\n 'fa-google-wallet',\r\n 'fa-gratipay',\r\n 'fa-grav',\r\n 'fa-gripfire',\r\n 'fa-grunt',\r\n 'fa-guilded',\r\n 'fa-gulp',\r\n 'fa-hacker-news',\r\n 'fa-hacker-news-square',\r\n 'fa-hackerrank',\r\n 'fa-hips',\r\n 'fa-hire-a-helper',\r\n 'fa-hive',\r\n 'fa-hooli',\r\n 'fa-hornbill',\r\n 'fa-hotjar',\r\n 'fa-houzz',\r\n 'fa-html5',\r\n 'fa-hubspot',\r\n 'fa-ideal',\r\n 'fa-imdb',\r\n 'fa-innosoft',\r\n 'fa-instagram',\r\n 'fa-instagram-square',\r\n 'fa-instalod',\r\n 'fa-intercom',\r\n 'fa-internet-explorer',\r\n 'fa-invision',\r\n 'fa-ioxhost',\r\n 'fa-itch-io',\r\n 'fa-itunes',\r\n 'fa-itunes-note',\r\n 'fa-java',\r\n 'fa-jedi-order',\r\n 'fa-jenkins',\r\n 'fa-jira',\r\n 'fa-joget',\r\n 'fa-joomla',\r\n 'fa-js',\r\n 'fa-js-square',\r\n 'fa-jsfiddle',\r\n 'fa-kaggle',\r\n 'fa-keybase',\r\n 'fa-keycdn',\r\n 'fa-kickstarter',\r\n 'fa-kickstarter-k',\r\n 'fa-korvue',\r\n 'fa-laravel',\r\n 'fa-lastfm',\r\n 'fa-lastfm-square',\r\n 'fa-leanpub',\r\n 'fa-less',\r\n 'fa-line',\r\n 'fa-linkedin',\r\n 'fa-linkedin-in',\r\n 'fa-linode',\r\n 'fa-linux',\r\n 'fa-lyft',\r\n 'fa-magento',\r\n 'fa-mailchimp',\r\n 'fa-mandalorian',\r\n 'fa-markdown',\r\n 'fa-mastodon',\r\n 'fa-maxcdn',\r\n 'fa-mdb',\r\n 'fa-medapps',\r\n 'fa-medium',\r\n 'fa-medium-m',\r\n 'fa-medrt',\r\n 'fa-meetup',\r\n 'fa-megaport',\r\n 'fa-mendeley',\r\n 'fa-microblog',\r\n 'fa-microsoft',\r\n 'fa-mix',\r\n 'fa-mixcloud',\r\n 'fa-mixer',\r\n 'fa-mizuni',\r\n 'fa-modx',\r\n 'fa-monero',\r\n 'fa-napster',\r\n 'fa-neos',\r\n 'fa-nimblr',\r\n 'fa-node',\r\n 'fa-node-js',\r\n 'fa-npm',\r\n 'fa-ns8',\r\n 'fa-nutritionix',\r\n 'fa-octopus-deploy',\r\n 'fa-odnoklassniki',\r\n 'fa-odnoklassniki-square',\r\n 'fa-old-republic',\r\n 'fa-opencart',\r\n 'fa-openid',\r\n 'fa-opera',\r\n 'fa-optin-monster',\r\n 'fa-orcid',\r\n 'fa-osi',\r\n 'fa-page4',\r\n 'fa-pagelines',\r\n 'fa-palfed',\r\n 'fa-patreon',\r\n 'fa-paypal',\r\n 'fa-penny-arcade',\r\n 'fa-perbyte',\r\n 'fa-periscope',\r\n 'fa-phabricator',\r\n 'fa-phoenix-framework',\r\n 'fa-phoenix-squadron',\r\n 'fa-php',\r\n 'fa-pied-piper',\r\n 'fa-pied-piper-alt',\r\n 'fa-pied-piper-hat',\r\n 'fa-pied-piper-pp',\r\n 'fa-pied-piper-square',\r\n 'fa-pinterest',\r\n 'fa-pinterest-p',\r\n 'fa-pinterest-square',\r\n 'fa-playstation',\r\n 'fa-product-hunt',\r\n 'fa-pushed',\r\n 'fa-python',\r\n 'fa-qq',\r\n 'fa-quinscape',\r\n 'fa-quora',\r\n 'fa-r-project',\r\n 'fa-raspberry-pi',\r\n 'fa-ravelry',\r\n 'fa-react',\r\n 'fa-reacteurope',\r\n 'fa-readme',\r\n 'fa-rebel',\r\n 'fa-red-river',\r\n 'fa-reddit',\r\n 'fa-reddit-alien',\r\n 'fa-reddit-square',\r\n 'fa-redhat',\r\n 'fa-renren',\r\n 'fa-replyd',\r\n 'fa-researchgate',\r\n 'fa-resolving',\r\n 'fa-rev',\r\n 'fa-rocketchat',\r\n 'fa-rockrms',\r\n 'fa-rust',\r\n 'fa-safari',\r\n 'fa-salesforce',\r\n 'fa-sass',\r\n 'fa-schlix',\r\n 'fa-scribd',\r\n 'fa-searchengin',\r\n 'fa-sellcast',\r\n 'fa-sellsy',\r\n 'fa-servicestack',\r\n 'fa-shirtsinbulk',\r\n 'fa-shopify',\r\n 'fa-shopware',\r\n 'fa-simplybuilt',\r\n 'fa-sistrix',\r\n 'fa-sith',\r\n 'fa-sketch',\r\n 'fa-skyatlas',\r\n 'fa-skype',\r\n 'fa-slack',\r\n 'fa-slack-hash',\r\n 'fa-slideshare',\r\n 'fa-snapchat',\r\n 'fa-snapchat-ghost',\r\n 'fa-snapchat-square',\r\n 'fa-soundcloud',\r\n 'fa-sourcetree',\r\n 'fa-speakap',\r\n 'fa-speaker-deck',\r\n 'fa-spotify',\r\n 'fa-squarespace',\r\n 'fa-stack-exchange',\r\n 'fa-stack-overflow',\r\n 'fa-stackpath',\r\n 'fa-staylinked',\r\n 'fa-steam',\r\n 'fa-steam-square',\r\n 'fa-steam-symbol',\r\n 'fa-sticker-mule',\r\n 'fa-strava',\r\n 'fa-stripe',\r\n 'fa-stripe-s',\r\n 'fa-studiovinari',\r\n 'fa-stumbleupon',\r\n 'fa-stumbleupon-circle',\r\n 'fa-superpowers',\r\n 'fa-supple',\r\n 'fa-suse',\r\n 'fa-swift',\r\n 'fa-symfony',\r\n 'fa-teamspeak',\r\n 'fa-telegram',\r\n 'fa-telegram-plane',\r\n 'fa-tencent-weibo',\r\n 'fa-the-red-yeti',\r\n 'fa-themeco',\r\n 'fa-themeisle',\r\n 'fa-think-peaks',\r\n 'fa-tiktok',\r\n 'fa-trade-federation',\r\n 'fa-trello',\r\n 'fa-tripadvisor',\r\n 'fa-tumblr',\r\n 'fa-tumblr-square',\r\n 'fa-twitch',\r\n 'fa-twitter',\r\n 'fa-twitter-square',\r\n 'fa-typo3',\r\n 'fa-uber',\r\n 'fa-ubuntu',\r\n 'fa-uikit',\r\n 'fa-umbraco',\r\n 'fa-uncharted',\r\n 'fa-uniregistry',\r\n 'fa-unity',\r\n 'fa-unsplash',\r\n 'fa-untappd',\r\n 'fa-ups',\r\n 'fa-usb',\r\n 'fa-usps',\r\n 'fa-ussunnah',\r\n 'fa-vaadin',\r\n 'fa-viacoin',\r\n 'fa-viadeo',\r\n 'fa-viadeo-square',\r\n 'fa-viber',\r\n 'fa-vimeo',\r\n 'fa-vimeo-square',\r\n 'fa-vimeo-v',\r\n 'fa-vine',\r\n 'fa-vk',\r\n 'fa-vnv',\r\n 'fa-vuejs',\r\n 'fa-watchman-monitoring',\r\n 'fa-waze',\r\n 'fa-weebly',\r\n 'fa-weibo',\r\n 'fa-weixin',\r\n 'fa-whatsapp',\r\n 'fa-whatsapp-square',\r\n 'fa-whmcs',\r\n 'fa-wikipedia-w',\r\n 'fa-windows',\r\n 'fa-wix',\r\n 'fa-wizards-of-the-coast',\r\n 'fa-wodu',\r\n 'fa-wolf-pack-battalion',\r\n 'fa-wordpress',\r\n 'fa-wordpress-simple',\r\n 'fa-wpbeginner',\r\n 'fa-wpexplorer',\r\n 'fa-wpforms',\r\n 'fa-wpressr',\r\n 'fa-xbox',\r\n 'fa-xing',\r\n 'fa-xing-square',\r\n 'fa-y-combinator',\r\n 'fa-yahoo',\r\n 'fa-yammer',\r\n 'fa-yandex',\r\n 'fa-yandex-international',\r\n 'fa-yarn',\r\n 'fa-yelp',\r\n 'fa-yoast',\r\n 'fa-youtube',\r\n 'fa-youtube-square',\r\n 'fa-zhihu',\r\n ];\r\n}\r\n","/**\n * Model representing Fontawesome's regular icons\n */\nexport class FontawesomeIconsRegular {\n\n /**\n * The regular icon prefix\n */\n static readonly PREFIX = 'far';\n\n /**\n * Icon classes\n */\n static readonly ICONS = [\n 'fa-address-book',\n 'fa-address-card',\n 'fa-angry',\n 'fa-arrow-alt-circle-down',\n 'fa-arrow-alt-circle-left',\n 'fa-arrow-alt-circle-right',\n 'fa-arrow-alt-circle-up',\n 'fa-bell',\n 'fa-bell-slash',\n 'fa-bookmark',\n 'fa-building',\n 'fa-calendar',\n 'fa-calendar-alt',\n 'fa-calendar-check',\n 'fa-calendar-minus',\n 'fa-calendar-plus',\n 'fa-calendar-times',\n 'fa-caret-square-down',\n 'fa-caret-square-left',\n 'fa-caret-square-right',\n 'fa-caret-square-up',\n 'fa-chart-bar',\n 'fa-check-circle',\n 'fa-check-square',\n 'fa-circle',\n 'fa-clipboard',\n 'fa-clock',\n 'fa-clone',\n 'fa-closed-captioning',\n 'fa-comment',\n 'fa-comment-alt',\n 'fa-comment-dots',\n 'fa-comments',\n 'fa-compass',\n 'fa-copy',\n 'fa-copyright',\n 'fa-credit-card',\n 'fa-dizzy',\n 'fa-dot-circle',\n 'fa-edit',\n 'fa-envelope',\n 'fa-envelope-open',\n 'fa-eye',\n 'fa-eye-slash',\n 'fa-file',\n 'fa-file-alt',\n 'fa-file-archive',\n 'fa-file-audio',\n 'fa-file-code',\n 'fa-file-excel',\n 'fa-file-image',\n 'fa-file-pdf',\n 'fa-file-powerpoint',\n 'fa-file-video',\n 'fa-file-word',\n 'fa-flag',\n 'fa-flushed',\n 'fa-folder',\n 'fa-folder-open',\n 'fa-frown',\n 'fa-frown-open',\n 'fa-futbol',\n 'fa-gem',\n 'fa-grimace',\n 'fa-grin',\n 'fa-grin-alt',\n 'fa-grin-beam',\n 'fa-grin-beam-sweat',\n 'fa-grin-hearts',\n 'fa-grin-squint',\n 'fa-grin-squint-tears',\n 'fa-grin-stars',\n 'fa-grin-tears',\n 'fa-grin-tongue',\n 'fa-grin-tongue-squint',\n 'fa-grin-tongue-wink',\n 'fa-grin-wink',\n 'fa-hand-lizard',\n 'fa-hand-paper',\n 'fa-hand-peace',\n 'fa-hand-point-down',\n 'fa-hand-point-left',\n 'fa-hand-point-right',\n 'fa-hand-point-up',\n 'fa-hand-pointer',\n 'fa-hand-rock',\n 'fa-hand-scissors',\n 'fa-hand-spock',\n 'fa-handshake',\n 'fa-hdd',\n 'fa-heart',\n 'fa-hospital',\n 'fa-hourglass',\n 'fa-id-badge',\n 'fa-id-card',\n 'fa-image',\n 'fa-images',\n 'fa-keyboard',\n 'fa-kiss',\n 'fa-kiss-beam',\n 'fa-kiss-wink-heart',\n 'fa-laugh',\n 'fa-laugh-beam',\n 'fa-laugh-squint',\n 'fa-laugh-wink',\n 'fa-lemon',\n 'fa-life-ring',\n 'fa-lightbulb',\n 'fa-list-alt',\n 'fa-map',\n 'fa-meh',\n 'fa-meh-blank',\n 'fa-meh-rolling-eyes',\n 'fa-minus-square',\n 'fa-money-bill-alt',\n 'fa-moon',\n 'fa-newspaper',\n 'fa-object-group',\n 'fa-object-ungroup',\n 'fa-paper-plane',\n 'fa-pause-circle',\n 'fa-play-circle',\n 'fa-plus-square',\n 'fa-question-circle',\n 'fa-registered',\n 'fa-sad-cry',\n 'fa-sad-tear',\n 'fa-save',\n 'fa-share-square',\n 'fa-smile',\n 'fa-smile-beam',\n 'fa-smile-wink',\n 'fa-snowflake',\n 'fa-square',\n 'fa-star',\n 'fa-star-half',\n 'fa-sticky-note',\n 'fa-stop-circle',\n 'fa-sun',\n 'fa-surprise',\n 'fa-thumbs-down',\n 'fa-thumbs-up',\n 'fa-times-circle',\n 'fa-tired',\n 'fa-trash-alt',\n 'fa-user',\n 'fa-user-circle',\n 'fa-window-close',\n 'fa-window-maximize',\n 'fa-window-minimize',\n 'fa-window-restore',\n ];\n}\n","/**\n * Model representing Fontawesome's solid icons\n */\nexport class FontawesomeIconsSolid {\n\n /**\n * The solid icon prefix\n */\n static readonly PREFIX = 'fas';\n\n /**\n * Icon classes\n */\n static readonly ICONS = [\n 'fa-ad',\n 'fa-address-book',\n 'fa-address-card',\n 'fa-adjust',\n 'fa-air-freshener',\n 'fa-align-center',\n 'fa-align-justify',\n 'fa-align-left',\n 'fa-align-right',\n 'fa-allergies',\n 'fa-ambulance',\n 'fa-american-sign-language-interpreting',\n 'fa-anchor',\n 'fa-angle-double-down',\n 'fa-angle-double-left',\n 'fa-angle-double-right',\n 'fa-angle-double-up',\n 'fa-angle-down',\n 'fa-angle-left',\n 'fa-angle-right',\n 'fa-angle-up',\n 'fa-angry',\n 'fa-ankh',\n 'fa-apple-alt',\n 'fa-archive',\n 'fa-archway',\n 'fa-arrow-alt-circle-down',\n 'fa-arrow-alt-circle-left',\n 'fa-arrow-alt-circle-right',\n 'fa-arrow-alt-circle-up',\n 'fa-arrow-circle-down',\n 'fa-arrow-circle-left',\n 'fa-arrow-circle-right',\n 'fa-arrow-circle-up',\n 'fa-arrow-down',\n 'fa-arrow-left',\n 'fa-arrow-right',\n 'fa-arrow-up',\n 'fa-arrows-alt',\n 'fa-arrows-alt-h',\n 'fa-arrows-alt-v',\n 'fa-assistive-listening-systems',\n 'fa-asterisk',\n 'fa-at',\n 'fa-atlas',\n 'fa-atom',\n 'fa-audio-description',\n 'fa-award',\n 'fa-baby',\n 'fa-baby-carriage',\n 'fa-backspace',\n 'fa-backward',\n 'fa-bacon',\n 'fa-bacteria',\n 'fa-bacterium',\n 'fa-bahai',\n 'fa-balance-scale',\n 'fa-balance-scale-left',\n 'fa-balance-scale-right',\n 'fa-ban',\n 'fa-band-aid',\n 'fa-barcode',\n 'fa-bars',\n 'fa-baseball-ball',\n 'fa-basketball-ball',\n 'fa-bath',\n 'fa-battery-empty',\n 'fa-battery-full',\n 'fa-battery-half',\n 'fa-battery-quarter',\n 'fa-battery-three-quarters',\n 'fa-bed',\n 'fa-beer',\n 'fa-bell',\n 'fa-bell-slash',\n 'fa-bezier-curve',\n 'fa-bible',\n 'fa-bicycle',\n 'fa-biking',\n 'fa-binoculars',\n 'fa-biohazard',\n 'fa-birthday-cake',\n 'fa-blender',\n 'fa-blender-phone',\n 'fa-blind',\n 'fa-blog',\n 'fa-bold',\n 'fa-bolt',\n 'fa-bomb',\n 'fa-bone',\n 'fa-bong',\n 'fa-book',\n 'fa-book-dead',\n 'fa-book-medical',\n 'fa-book-open',\n 'fa-book-reader',\n 'fa-bookmark',\n 'fa-border-all',\n 'fa-border-none',\n 'fa-border-style',\n 'fa-bowling-ball',\n 'fa-box',\n 'fa-box-open',\n 'fa-box-tissue',\n 'fa-boxes',\n 'fa-braille',\n 'fa-brain',\n 'fa-bread-slice',\n 'fa-briefcase',\n 'fa-briefcase-medical',\n 'fa-broadcast-tower',\n 'fa-broom',\n 'fa-brush',\n 'fa-bug',\n 'fa-building',\n 'fa-bullhorn',\n 'fa-bullseye',\n 'fa-burn',\n 'fa-bus',\n 'fa-bus-alt',\n 'fa-business-time',\n 'fa-calculator',\n 'fa-calendar',\n 'fa-calendar-alt',\n 'fa-calendar-check',\n 'fa-calendar-day',\n 'fa-calendar-minus',\n 'fa-calendar-plus',\n 'fa-calendar-times',\n 'fa-calendar-week',\n 'fa-camera',\n 'fa-camera-retro',\n 'fa-campground',\n 'fa-candy-cane',\n 'fa-cannabis',\n 'fa-capsules',\n 'fa-car',\n 'fa-car-alt',\n 'fa-car-battery',\n 'fa-car-crash',\n 'fa-car-side',\n 'fa-caravan',\n 'fa-caret-down',\n 'fa-caret-left',\n 'fa-caret-right',\n 'fa-caret-square-down',\n 'fa-caret-square-left',\n 'fa-caret-square-right',\n 'fa-caret-square-up',\n 'fa-caret-up',\n 'fa-carrot',\n 'fa-cart-arrow-down',\n 'fa-cart-plus',\n 'fa-cash-register',\n 'fa-cat',\n 'fa-certificate',\n 'fa-chair',\n 'fa-chalkboard',\n 'fa-chalkboard-teacher',\n 'fa-charging-station',\n 'fa-chart-area',\n 'fa-chart-bar',\n 'fa-chart-line',\n 'fa-chart-pie',\n 'fa-check',\n 'fa-check-circle',\n 'fa-check-double',\n 'fa-check-square',\n 'fa-cheese',\n 'fa-chess',\n 'fa-chess-bishop',\n 'fa-chess-board',\n 'fa-chess-king',\n 'fa-chess-knight',\n 'fa-chess-pawn',\n 'fa-chess-queen',\n 'fa-chess-rook',\n 'fa-chevron-circle-down',\n 'fa-chevron-circle-left',\n 'fa-chevron-circle-right',\n 'fa-chevron-circle-up',\n 'fa-chevron-down',\n 'fa-chevron-left',\n 'fa-chevron-right',\n 'fa-chevron-up',\n 'fa-child',\n 'fa-church',\n 'fa-circle',\n 'fa-circle-notch',\n 'fa-city',\n 'fa-clinic-medical',\n 'fa-clipboard',\n 'fa-clipboard-check',\n 'fa-clipboard-list',\n 'fa-clock',\n 'fa-clone',\n 'fa-closed-captioning',\n 'fa-cloud',\n 'fa-cloud-download-alt',\n 'fa-cloud-meatball',\n 'fa-cloud-moon',\n 'fa-cloud-moon-rain',\n 'fa-cloud-rain',\n 'fa-cloud-showers-heavy',\n 'fa-cloud-sun',\n 'fa-cloud-sun-rain',\n 'fa-cloud-upload-alt',\n 'fa-cocktail',\n 'fa-code',\n 'fa-code-branch',\n 'fa-coffee',\n 'fa-cog',\n 'fa-cogs',\n 'fa-coins',\n 'fa-columns',\n 'fa-comment',\n 'fa-comment-alt',\n 'fa-comment-dollar',\n 'fa-comment-dots',\n 'fa-comment-medical',\n 'fa-comment-slash',\n 'fa-comments',\n 'fa-comments-dollar',\n 'fa-compact-disc',\n 'fa-compass',\n 'fa-compress',\n 'fa-compress-alt',\n 'fa-compress-arrows-alt',\n 'fa-concierge-bell',\n 'fa-cookie',\n 'fa-cookie-bite',\n 'fa-copy',\n 'fa-copyright',\n 'fa-couch',\n 'fa-credit-card',\n 'fa-crop',\n 'fa-crop-alt',\n 'fa-cross',\n 'fa-crosshairs',\n 'fa-crow',\n 'fa-crown',\n 'fa-crutch',\n 'fa-cube',\n 'fa-cubes',\n 'fa-cut',\n 'fa-database',\n 'fa-deaf',\n 'fa-democrat',\n 'fa-desktop',\n 'fa-dharmachakra',\n 'fa-diagnoses',\n 'fa-dice',\n 'fa-dice-d20',\n 'fa-dice-d6',\n 'fa-dice-five',\n 'fa-dice-four',\n 'fa-dice-one',\n 'fa-dice-six',\n 'fa-dice-three',\n 'fa-dice-two',\n 'fa-digital-tachograph',\n 'fa-directions',\n 'fa-disease',\n 'fa-divide',\n 'fa-dizzy',\n 'fa-dna',\n 'fa-dog',\n 'fa-dollar-sign',\n 'fa-dolly',\n 'fa-dolly-flatbed',\n 'fa-donate',\n 'fa-door-closed',\n 'fa-door-open',\n 'fa-dot-circle',\n 'fa-dove',\n 'fa-download',\n 'fa-drafting-compass',\n 'fa-dragon',\n 'fa-draw-polygon',\n 'fa-drum',\n 'fa-drum-steelpan',\n 'fa-drumstick-bite',\n 'fa-dumbbell',\n 'fa-dumpster',\n 'fa-dumpster-fire',\n 'fa-dungeon',\n 'fa-edit',\n 'fa-egg',\n 'fa-eject',\n 'fa-ellipsis-h',\n 'fa-ellipsis-v',\n 'fa-envelope',\n 'fa-envelope-open',\n 'fa-envelope-open-text',\n 'fa-envelope-square',\n 'fa-equals',\n 'fa-eraser',\n 'fa-ethernet',\n 'fa-euro-sign',\n 'fa-exchange-alt',\n 'fa-exclamation',\n 'fa-exclamation-circle',\n 'fa-exclamation-triangle',\n 'fa-expand',\n 'fa-expand-alt',\n 'fa-expand-arrows-alt',\n 'fa-external-link-alt',\n 'fa-external-link-square-alt',\n 'fa-eye',\n 'fa-eye-dropper',\n 'fa-eye-slash',\n 'fa-fan',\n 'fa-fast-backward',\n 'fa-fast-forward',\n 'fa-faucet',\n 'fa-fax',\n 'fa-feather',\n 'fa-feather-alt',\n 'fa-female',\n 'fa-fighter-jet',\n 'fa-file',\n 'fa-file-alt',\n 'fa-file-archive',\n 'fa-file-audio',\n 'fa-file-code',\n 'fa-file-contract',\n 'fa-file-csv',\n 'fa-file-download',\n 'fa-file-excel',\n 'fa-file-export',\n 'fa-file-image',\n 'fa-file-import',\n 'fa-file-invoice',\n 'fa-file-invoice-dollar',\n 'fa-file-medical',\n 'fa-file-medical-alt',\n 'fa-file-pdf',\n 'fa-file-powerpoint',\n 'fa-file-prescription',\n 'fa-file-signature',\n 'fa-file-upload',\n 'fa-file-video',\n 'fa-file-word',\n 'fa-fill',\n 'fa-fill-drip',\n 'fa-film',\n 'fa-filter',\n 'fa-fingerprint',\n 'fa-fire',\n 'fa-fire-alt',\n 'fa-fire-extinguisher',\n 'fa-first-aid',\n 'fa-fish',\n 'fa-fist-raised',\n 'fa-flag',\n 'fa-flag-checkered',\n 'fa-flag-usa',\n 'fa-flask',\n 'fa-flushed',\n 'fa-folder',\n 'fa-folder-minus',\n 'fa-folder-open',\n 'fa-folder-plus',\n 'fa-font',\n 'fa-football-ball',\n 'fa-forward',\n 'fa-frog',\n 'fa-frown',\n 'fa-frown-open',\n 'fa-funnel-dollar',\n 'fa-futbol',\n 'fa-gamepad',\n 'fa-gas-pump',\n 'fa-gavel',\n 'fa-gem',\n 'fa-genderless',\n 'fa-ghost',\n 'fa-gift',\n 'fa-gifts',\n 'fa-glass-cheers',\n 'fa-glass-martini',\n 'fa-glass-martini-alt',\n 'fa-glass-whiskey',\n 'fa-glasses',\n 'fa-globe',\n 'fa-globe-africa',\n 'fa-globe-americas',\n 'fa-globe-asia',\n 'fa-globe-europe',\n 'fa-golf-ball',\n 'fa-gopuram',\n 'fa-graduation-cap',\n 'fa-greater-than',\n 'fa-greater-than-equal',\n 'fa-grimace',\n 'fa-grin',\n 'fa-grin-alt',\n 'fa-grin-beam',\n 'fa-grin-beam-sweat',\n 'fa-grin-hearts',\n 'fa-grin-squint',\n 'fa-grin-squint-tears',\n 'fa-grin-stars',\n 'fa-grin-tears',\n 'fa-grin-tongue',\n 'fa-grin-tongue-squint',\n 'fa-grin-tongue-wink',\n 'fa-grin-wink',\n 'fa-grip-horizontal',\n 'fa-grip-lines',\n 'fa-grip-lines-vertical',\n 'fa-grip-vertical',\n 'fa-guitar',\n 'fa-h-square',\n 'fa-hamburger',\n 'fa-hammer',\n 'fa-hamsa',\n 'fa-hand-holding',\n 'fa-hand-holding-heart',\n 'fa-hand-holding-medical',\n 'fa-hand-holding-usd',\n 'fa-hand-holding-water',\n 'fa-hand-lizard',\n 'fa-hand-middle-finger',\n 'fa-hand-paper',\n 'fa-hand-peace',\n 'fa-hand-point-down',\n 'fa-hand-point-left',\n 'fa-hand-point-right',\n 'fa-hand-point-up',\n 'fa-hand-pointer',\n 'fa-hand-rock',\n 'fa-hand-scissors',\n 'fa-hand-sparkles',\n 'fa-hand-spock',\n 'fa-hands',\n 'fa-hands-helping',\n 'fa-hands-wash',\n 'fa-handshake',\n 'fa-handshake-alt-slash',\n 'fa-handshake-slash',\n 'fa-hanukiah',\n 'fa-hard-hat',\n 'fa-hashtag',\n 'fa-hat-cowboy',\n 'fa-hat-cowboy-side',\n 'fa-hat-wizard',\n 'fa-hdd',\n 'fa-head-side-cough',\n 'fa-head-side-cough-slash',\n 'fa-head-side-mask',\n 'fa-head-side-virus',\n 'fa-heading',\n 'fa-headphones',\n 'fa-headphones-alt',\n 'fa-headset',\n 'fa-heart',\n 'fa-heart-broken',\n 'fa-heartbeat',\n 'fa-helicopter',\n 'fa-highlighter',\n 'fa-hiking',\n 'fa-hippo',\n 'fa-history',\n 'fa-hockey-puck',\n 'fa-holly-berry',\n 'fa-home',\n 'fa-horse',\n 'fa-horse-head',\n 'fa-hospital',\n 'fa-hospital-alt',\n 'fa-hospital-symbol',\n 'fa-hospital-user',\n 'fa-hot-tub',\n 'fa-hotdog',\n 'fa-hotel',\n 'fa-hourglass',\n 'fa-hourglass-end',\n 'fa-hourglass-half',\n 'fa-hourglass-start',\n 'fa-house-damage',\n 'fa-house-user',\n 'fa-hryvnia',\n 'fa-i-cursor',\n 'fa-ice-cream',\n 'fa-icicles',\n 'fa-icons',\n 'fa-id-badge',\n 'fa-id-card',\n 'fa-id-card-alt',\n 'fa-igloo',\n 'fa-image',\n 'fa-images',\n 'fa-inbox',\n 'fa-indent',\n 'fa-industry',\n 'fa-infinity',\n 'fa-info',\n 'fa-info-circle',\n 'fa-italic',\n 'fa-jedi',\n 'fa-joint',\n 'fa-journal-whills',\n 'fa-kaaba',\n 'fa-key',\n 'fa-keyboard',\n 'fa-khanda',\n 'fa-kiss',\n 'fa-kiss-beam',\n 'fa-kiss-wink-heart',\n 'fa-kiwi-bird',\n 'fa-landmark',\n 'fa-language',\n 'fa-laptop',\n 'fa-laptop-code',\n 'fa-laptop-house',\n 'fa-laptop-medical',\n 'fa-laugh',\n 'fa-laugh-beam',\n 'fa-laugh-squint',\n 'fa-laugh-wink',\n 'fa-layer-group',\n 'fa-leaf',\n 'fa-lemon',\n 'fa-less-than',\n 'fa-less-than-equal',\n 'fa-level-down-alt',\n 'fa-level-up-alt',\n 'fa-life-ring',\n 'fa-lightbulb',\n 'fa-link',\n 'fa-lira-sign',\n 'fa-list',\n 'fa-list-alt',\n 'fa-list-ol',\n 'fa-list-ul',\n 'fa-location-arrow',\n 'fa-lock',\n 'fa-lock-open',\n 'fa-long-arrow-alt-down',\n 'fa-long-arrow-alt-left',\n 'fa-long-arrow-alt-right',\n 'fa-long-arrow-alt-up',\n 'fa-low-vision',\n 'fa-luggage-cart',\n 'fa-lungs',\n 'fa-lungs-virus',\n 'fa-magic',\n 'fa-magnet',\n 'fa-mail-bulk',\n 'fa-male',\n 'fa-map',\n 'fa-map-marked',\n 'fa-map-marked-alt',\n 'fa-map-marker',\n 'fa-map-marker-alt',\n 'fa-map-pin',\n 'fa-map-signs',\n 'fa-marker',\n 'fa-mars',\n 'fa-mars-double',\n 'fa-mars-stroke',\n 'fa-mars-stroke-h',\n 'fa-mars-stroke-v',\n 'fa-mask',\n 'fa-medal',\n 'fa-medkit',\n 'fa-meh',\n 'fa-meh-blank',\n 'fa-meh-rolling-eyes',\n 'fa-memory',\n 'fa-menorah',\n 'fa-mercury',\n 'fa-meteor',\n 'fa-microchip',\n 'fa-microphone',\n 'fa-microphone-alt',\n 'fa-microphone-alt-slash',\n 'fa-microphone-slash',\n 'fa-microscope',\n 'fa-minus',\n 'fa-minus-circle',\n 'fa-minus-square',\n 'fa-mitten',\n 'fa-mobile',\n 'fa-mobile-alt',\n 'fa-money-bill',\n 'fa-money-bill-alt',\n 'fa-money-bill-wave',\n 'fa-money-bill-wave-alt',\n 'fa-money-check',\n 'fa-money-check-alt',\n 'fa-monument',\n 'fa-moon',\n 'fa-mortar-pestle',\n 'fa-mosque',\n 'fa-motorcycle',\n 'fa-mountain',\n 'fa-mouse',\n 'fa-mouse-pointer',\n 'fa-mug-hot',\n 'fa-music',\n 'fa-network-wired',\n 'fa-neuter',\n 'fa-newspaper',\n 'fa-not-equal',\n 'fa-notes-medical',\n 'fa-object-group',\n 'fa-object-ungroup',\n 'fa-oil-can',\n 'fa-om',\n 'fa-otter',\n 'fa-outdent',\n 'fa-pager',\n 'fa-paint-brush',\n 'fa-paint-roller',\n 'fa-palette',\n 'fa-pallet',\n 'fa-paper-plane',\n 'fa-paperclip',\n 'fa-parachute-box',\n 'fa-paragraph',\n 'fa-parking',\n 'fa-passport',\n 'fa-pastafarianism',\n 'fa-paste',\n 'fa-pause',\n 'fa-pause-circle',\n 'fa-paw',\n 'fa-peace',\n 'fa-pen',\n 'fa-pen-alt',\n 'fa-pen-fancy',\n 'fa-pen-nib',\n 'fa-pen-square',\n 'fa-pencil-alt',\n 'fa-pencil-ruler',\n 'fa-people-arrows',\n 'fa-people-carry',\n 'fa-pepper-hot',\n 'fa-percent',\n 'fa-percentage',\n 'fa-person-booth',\n 'fa-phone',\n 'fa-phone-alt',\n 'fa-phone-slash',\n 'fa-phone-square',\n 'fa-phone-square-alt',\n 'fa-phone-volume',\n 'fa-photo-video',\n 'fa-piggy-bank',\n 'fa-pills',\n 'fa-pizza-slice',\n 'fa-place-of-worship',\n 'fa-plane',\n 'fa-plane-arrival',\n 'fa-plane-departure',\n 'fa-plane-slash',\n 'fa-play',\n 'fa-play-circle',\n 'fa-plug',\n 'fa-plus',\n 'fa-plus-circle',\n 'fa-plus-square',\n 'fa-podcast',\n 'fa-poll',\n 'fa-poll-h',\n 'fa-poo',\n 'fa-poo-storm',\n 'fa-poop',\n 'fa-portrait',\n 'fa-pound-sign',\n 'fa-power-off',\n 'fa-pray',\n 'fa-praying-hands',\n 'fa-prescription',\n 'fa-prescription-bottle',\n 'fa-prescription-bottle-alt',\n 'fa-print',\n 'fa-procedures',\n 'fa-project-diagram',\n 'fa-pump-medical',\n 'fa-pump-soap',\n 'fa-puzzle-piece',\n 'fa-qrcode',\n 'fa-question',\n 'fa-question-circle',\n 'fa-quidditch',\n 'fa-quote-left',\n 'fa-quote-right',\n 'fa-quran',\n 'fa-radiation',\n 'fa-radiation-alt',\n 'fa-rainbow',\n 'fa-random',\n 'fa-receipt',\n 'fa-record-vinyl',\n 'fa-recycle',\n 'fa-redo',\n 'fa-redo-alt',\n 'fa-registered',\n 'fa-remove-format',\n 'fa-reply',\n 'fa-reply-all',\n 'fa-republican',\n 'fa-restroom',\n 'fa-retweet',\n 'fa-ribbon',\n 'fa-ring',\n 'fa-road',\n 'fa-robot',\n 'fa-rocket',\n 'fa-route',\n 'fa-rss',\n 'fa-rss-square',\n 'fa-ruble-sign',\n 'fa-ruler',\n 'fa-ruler-combined',\n 'fa-ruler-horizontal',\n 'fa-ruler-vertical',\n 'fa-running',\n 'fa-rupee-sign',\n 'fa-sad-cry',\n 'fa-sad-tear',\n 'fa-satellite',\n 'fa-satellite-dish',\n 'fa-save',\n 'fa-school',\n 'fa-screwdriver',\n 'fa-scroll',\n 'fa-sd-card',\n 'fa-search',\n 'fa-search-dollar',\n 'fa-search-location',\n 'fa-search-minus',\n 'fa-search-plus',\n 'fa-seedling',\n 'fa-server',\n 'fa-shapes',\n 'fa-share',\n 'fa-share-alt',\n 'fa-share-alt-square',\n 'fa-share-square',\n 'fa-shekel-sign',\n 'fa-shield-alt',\n 'fa-shield-virus',\n 'fa-ship',\n 'fa-shipping-fast',\n 'fa-shoe-prints',\n 'fa-shopping-bag',\n 'fa-shopping-basket',\n 'fa-shopping-cart',\n 'fa-shower',\n 'fa-shuttle-van',\n 'fa-sign',\n 'fa-sign-in-alt',\n 'fa-sign-language',\n 'fa-sign-out-alt',\n 'fa-signal',\n 'fa-signature',\n 'fa-sim-card',\n 'fa-sink',\n 'fa-sitemap',\n 'fa-skating',\n 'fa-skiing',\n 'fa-skiing-nordic',\n 'fa-skull',\n 'fa-skull-crossbones',\n 'fa-slash',\n 'fa-sleigh',\n 'fa-sliders-h',\n 'fa-smile',\n 'fa-smile-beam',\n 'fa-smile-wink',\n 'fa-smog',\n 'fa-smoking',\n 'fa-smoking-ban',\n 'fa-sms',\n 'fa-snowboarding',\n 'fa-snowflake',\n 'fa-snowman',\n 'fa-snowplow',\n 'fa-soap',\n 'fa-socks',\n 'fa-solar-panel',\n 'fa-sort',\n 'fa-sort-alpha-down',\n 'fa-sort-alpha-down-alt',\n 'fa-sort-alpha-up',\n 'fa-sort-alpha-up-alt',\n 'fa-sort-amount-down',\n 'fa-sort-amount-down-alt',\n 'fa-sort-amount-up',\n 'fa-sort-amount-up-alt',\n 'fa-sort-down',\n 'fa-sort-numeric-down',\n 'fa-sort-numeric-down-alt',\n 'fa-sort-numeric-up',\n 'fa-sort-numeric-up-alt',\n 'fa-sort-up',\n 'fa-spa',\n 'fa-space-shuttle',\n 'fa-spell-check',\n 'fa-spider',\n 'fa-spinner',\n 'fa-splotch',\n 'fa-spray-can',\n 'fa-square',\n 'fa-square-full',\n 'fa-square-root-alt',\n 'fa-stamp',\n 'fa-star',\n 'fa-star-and-crescent',\n 'fa-star-half',\n 'fa-star-half-alt',\n 'fa-star-of-david',\n 'fa-star-of-life',\n 'fa-step-backward',\n 'fa-step-forward',\n 'fa-stethoscope',\n 'fa-sticky-note',\n 'fa-stop',\n 'fa-stop-circle',\n 'fa-stopwatch',\n 'fa-stopwatch-20',\n 'fa-store',\n 'fa-store-alt',\n 'fa-store-alt-slash',\n 'fa-store-slash',\n 'fa-stream',\n 'fa-street-view',\n 'fa-strikethrough',\n 'fa-stroopwafel',\n 'fa-subscript',\n 'fa-subway',\n 'fa-suitcase',\n 'fa-suitcase-rolling',\n 'fa-sun',\n 'fa-superscript',\n 'fa-surprise',\n 'fa-swatchbook',\n 'fa-swimmer',\n 'fa-swimming-pool',\n 'fa-synagogue',\n 'fa-sync',\n 'fa-sync-alt',\n 'fa-syringe',\n 'fa-table',\n 'fa-table-tennis',\n 'fa-tablet',\n 'fa-tablet-alt',\n 'fa-tablets',\n 'fa-tachometer-alt',\n 'fa-tag',\n 'fa-tags',\n 'fa-tape',\n 'fa-tasks',\n 'fa-taxi',\n 'fa-teeth',\n 'fa-teeth-open',\n 'fa-temperature-high',\n 'fa-temperature-low',\n 'fa-tenge',\n 'fa-terminal',\n 'fa-text-height',\n 'fa-text-width',\n 'fa-th',\n 'fa-th-large',\n 'fa-th-list',\n 'fa-theater-masks',\n 'fa-thermometer',\n 'fa-thermometer-empty',\n 'fa-thermometer-full',\n 'fa-thermometer-half',\n 'fa-thermometer-quarter',\n 'fa-thermometer-three-quarters',\n 'fa-thumbs-down',\n 'fa-thumbs-up',\n 'fa-thumbtack',\n 'fa-ticket-alt',\n 'fa-times',\n 'fa-times-circle',\n 'fa-tint',\n 'fa-tint-slash',\n 'fa-tired',\n 'fa-toggle-off',\n 'fa-toggle-on',\n 'fa-toilet',\n 'fa-toilet-paper',\n 'fa-toilet-paper-slash',\n 'fa-toolbox',\n 'fa-tools',\n 'fa-tooth',\n 'fa-torah',\n 'fa-torii-gate',\n 'fa-tractor',\n 'fa-trademark',\n 'fa-traffic-light',\n 'fa-trailer',\n 'fa-train',\n 'fa-tram',\n 'fa-transgender',\n 'fa-transgender-alt',\n 'fa-trash',\n 'fa-trash-alt',\n 'fa-trash-restore',\n 'fa-trash-restore-alt',\n 'fa-tree',\n 'fa-trophy',\n 'fa-truck',\n 'fa-truck-loading',\n 'fa-truck-monster',\n 'fa-truck-moving',\n 'fa-truck-pickup',\n 'fa-tshirt',\n 'fa-tty',\n 'fa-tv',\n 'fa-umbrella',\n 'fa-umbrella-beach',\n 'fa-underline',\n 'fa-undo',\n 'fa-undo-alt',\n 'fa-universal-access',\n 'fa-university',\n 'fa-unlink',\n 'fa-unlock',\n 'fa-unlock-alt',\n 'fa-upload',\n 'fa-user',\n 'fa-user-alt',\n 'fa-user-alt-slash',\n 'fa-user-astronaut',\n 'fa-user-check',\n 'fa-user-circle',\n 'fa-user-clock',\n 'fa-user-cog',\n 'fa-user-edit',\n 'fa-user-friends',\n 'fa-user-graduate',\n 'fa-user-injured',\n 'fa-user-lock',\n 'fa-user-md',\n 'fa-user-minus',\n 'fa-user-ninja',\n 'fa-user-nurse',\n 'fa-user-plus',\n 'fa-user-secret',\n 'fa-user-shield',\n 'fa-user-slash',\n 'fa-user-tag',\n 'fa-user-tie',\n 'fa-user-times',\n 'fa-users',\n 'fa-users-cog',\n 'fa-users-slash',\n 'fa-utensil-spoon',\n 'fa-utensils',\n 'fa-vector-square',\n 'fa-venus',\n 'fa-venus-double',\n 'fa-venus-mars',\n 'fa-vest',\n 'fa-vest-patches',\n 'fa-vial',\n 'fa-vials',\n 'fa-video',\n 'fa-video-slash',\n 'fa-vihara',\n 'fa-virus',\n 'fa-virus-slash',\n 'fa-viruses',\n 'fa-voicemail',\n 'fa-volleyball-ball',\n 'fa-volume-down',\n 'fa-volume-mute',\n 'fa-volume-off',\n 'fa-volume-up',\n 'fa-vote-yea',\n 'fa-vr-cardboard',\n 'fa-walking',\n 'fa-wallet',\n 'fa-warehouse',\n 'fa-water',\n 'fa-wave-square',\n 'fa-weight',\n 'fa-weight-hanging',\n 'fa-wheelchair',\n 'fa-wifi',\n 'fa-wind',\n 'fa-window-close',\n 'fa-window-maximize',\n 'fa-window-minimize',\n 'fa-window-restore',\n 'fa-wine-bottle',\n 'fa-wine-glass',\n 'fa-wine-glass-alt',\n 'fa-won-sign',\n 'fa-wrench',\n 'fa-x-ray',\n 'fa-yen-sign',\n 'fa-yin-yang'\n ];\n}\n","import { Injectable } from '@angular/core';\nimport { FontawesomeIconsBrands } from '../models/fontawesome-icons-brands.model';\nimport { FontawesomeIconsRegular } from '../models/fontawesome-icons-regular.model';\nimport { FontawesomeIconsSolid } from '../models/fontawesome-icons-solid.model';\nimport { ParticleIconsLight } from '../models/particle-icons-light.model';\nimport { ParticleIconsRegular } from '../models/particle-icons-regular.model';\nimport { ParticleIconsSolid } from '../models/particle-icons-solid.model';\n\n/**\n * Type representing the available Particle icon filter options\n */\ndeclare type ParticleIconFilterOption = 'all' | 'solid' | 'regular' | 'light';\n\n/**\n * Type representing the available Fontawesome icon filter options\n */\ndeclare type FontawesomeIconFilterOption = 'all' | 'solid' | 'regular' | 'brands';\n\n/**\n * Service for filtering Particle/Fontawesome icons\n */\n@Injectable()\nexport class IconsService {\n\n /**\n * Get Fontawesome icons filtered by icon type\n * @param filter the icon type to filter by\n * @private\n */\n private static getFontawesomeIcons(filter: FontawesomeIconFilterOption): Array<{ prefix: string, name: string }> {\n const icons: Array<{ prefix: string, name: string }> = [];\n\n if (filter === 'all' || filter === 'solid') {\n icons.push(...FontawesomeIconsSolid.ICONS.map(icon => ({ prefix: FontawesomeIconsSolid.PREFIX, name: icon })));\n }\n\n if (filter === 'all' || filter === 'regular') {\n icons.push(...FontawesomeIconsRegular.ICONS.map(icon => ({ prefix: FontawesomeIconsRegular.PREFIX, name: icon })));\n }\n\n if (filter === 'all' || filter === 'brands') {\n icons.push(...FontawesomeIconsBrands.ICONS.map(icon => ({ prefix: FontawesomeIconsBrands.PREFIX, name: icon })));\n }\n\n return icons;\n }\n\n /**\n * Get Particle icons filtered by icon type\n * @param filter the icon type to filter by\n * @private\n */\n private static getParticleIcons(filter: ParticleIconFilterOption): Array<{ prefix: string, name: string }> {\n const icons: Array<{ prefix: string, name: string }> = [];\n\n if (filter === 'all' || filter === 'solid') {\n icons.push(...ParticleIconsSolid.icons.map(icon => ({ prefix: icon.prefix, name: `fa-${icon.iconName}` })));\n }\n\n if (filter === 'all' || filter === 'regular') {\n icons.push(...ParticleIconsRegular.icons.map(icon => ({ prefix: icon.prefix, name: `fa-${icon.iconName}` })));\n }\n\n if (filter === 'all' || filter === 'light') {\n icons.push(...ParticleIconsLight.icons.map(icon => ({ prefix: icon.prefix, name: `fa-${icon.iconName}` })));\n }\n\n return icons;\n }\n\n /**\n * Constructor\n */\n constructor() { }\n\n /**\n * Get a list of icons (as strings) containing both Particle icons\n * and Fontawesome icons that match their respective filter criteria\n * @param iconType the type of icon, or all icons\n * @param filter the icon styling to filter by\n * @param searchText the search text to filter icons by\n */\n getIcons(\n iconType: 'all' | 'particle' | 'fontawesome',\n filter: ParticleIconFilterOption | FontawesomeIconFilterOption,\n searchText = ''\n ): Array<{ prefix: string, name: string }> {\n let icons: Array<{ prefix: string, name: string }> = [];\n\n if (iconType === 'all' || iconType === 'particle') {\n const particleIcons = IconsService.getParticleIcons(filter as ParticleIconFilterOption);\n\n if (particleIcons.length) {\n icons.push(...particleIcons);\n }\n }\n\n if (iconType === 'all' || iconType === 'fontawesome') {\n const fontawesomeIcons = IconsService.getFontawesomeIcons(filter as FontawesomeIconFilterOption);\n\n if (fontawesomeIcons.length) {\n icons.push(...fontawesomeIcons);\n }\n }\n\n const trimmedSearchText = searchText.trim().toLowerCase();\n if (trimmedSearchText) {\n icons = icons.filter(icon => icon.name.includes(trimmedSearchText));\n }\n\n return icons;\n }\n}\n","import {Component, Input} from '@angular/core';\r\nimport {EndpointStateText} from '../../../shared/models/particle-component-text.model';\r\n\r\n/**\r\n * Component to display different endpoint states\r\n */\r\n@Component({\r\n selector: 'particle-endpoint-state',\r\n templateUrl: './endpoint-state.component.html',\r\n styleUrls: ['./endpoint-state.component.css']\r\n})\r\nexport class EndpointStateComponent {\r\n\r\n /**\r\n * Flag to determine if in loading state\r\n */\r\n @Input()\r\n loading: boolean = false;\r\n\r\n /**\r\n * Icon for loading state\r\n */\r\n @Input()\r\n loadingIcon: 'double_helix' | string = 'double_helix';\r\n\r\n /**\r\n * Flag to determine if in empty state\r\n */\r\n @Input()\r\n empty: boolean = false;\r\n\r\n /**\r\n * Icon for empty state\r\n */\r\n @Input()\r\n emptyIcon = 'fas fa-folder-open fa-fw fa-3x';\r\n\r\n /**\r\n * Flag to determine if in error state\r\n */\r\n @Input()\r\n error: boolean = false;\r\n\r\n /**\r\n * Icon for error state\r\n */\r\n @Input()\r\n errorIcon = 'fas fa-bomb fa-fw fa-3x';\r\n\r\n /**\r\n * Flag to determine if overlay spinner\r\n */\r\n @Input()\r\n loadingOverlay: boolean = false;\r\n\r\n /**\r\n * The icon on the overlay spinner\r\n */\r\n @Input()\r\n loadingOverlayIcon = 'fas fa-spinner fa-spin';\r\n\r\n @Input()\r\n text: EndpointStateText = {\r\n loadingText: 'Loading',\r\n emptyText: 'There\\'s nothing here yet.',\r\n errorText: 'An error has occurred',\r\n errorSubtext: 'Please try again'\r\n } as EndpointStateText;\r\n\r\n /**\r\n * Component constructor\r\n */\r\n constructor() { }\r\n\r\n}\r\n","<!-- loading -->\r\n<div class=\"row column center_center\" *ngIf=\"loading\">\r\n <ng-container [ngSwitch]=\"loadingIcon\">\r\n <!-- bars_bounce -->\r\n <ng-container *ngSwitchCase=\"'double_helix'\">\r\n <div class=\"center_center square_60px\">\r\n <div class=\"endpoint_spin\" style=\"position: absolute\">\r\n <div class=\"bars_vertical\">\r\n <div class=\"col endpoint_shape header_color bar1\"></div>\r\n <div class=\"col endpoint_shape header_color bar2\"></div>\r\n <div class=\"col endpoint_shape header_color_light_7 bar3\"></div>\r\n <div class=\"col endpoint_shape header_color bar4\"></div>\r\n <div class=\"col endpoint_shape header_color bar5\"></div>\r\n </div>\r\n </div>\r\n <div class=\"endpoint_spin_rev\" style=\"position: absolute\">\r\n <div class=\"bars_vertical\">\r\n <div class=\"col endpoint_shape header_color bar5\"></div>\r\n <div class=\"col endpoint_shape header_color bar4\"></div>\r\n <div class=\"col endpoint_shape header_color_light_7 bar3\"></div>\r\n <div class=\"col endpoint_shape header_color bar2\"></div>\r\n <div class=\"col endpoint_shape header_color bar1\"></div>\r\n </div>\r\n </div>\r\n <div class=\"circle_30px ptl_brdr_color ptl_brdr_size\" style=\"position: absolute\"></div>\r\n </div>\r\n <div *ngIf=\"text.loadingText\" class=\"text md bold center mar_top15\" style=\"user-select: none\">{{text.loadingText}}<span class=\"one\">.</span><span class=\"two\">.</span><span class=\"three\">.</span></div>\r\n <div *ngIf=\"text.loadingSubtext\" class=\"text sm center mar_top5\" style=\"user-select: none\">{{text.loadingSubtext}}</div>\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngSwitchCase=\"'double_helix_old'\">\r\n <div class=\"bars_vertical\">\r\n <div class=\"col size_1 bg_overlay brdr bar1\"></div>\r\n <div class=\"col size_1 bg_overlay brdr bar2\"></div>\r\n <div class=\"col size_1 bg_overlay brdr bar3\"></div>\r\n <div class=\"col size_1 bg_overlay brdr bar4\"></div>\r\n <div class=\"col size_1 bg_overlay brdr bar5\"></div>\r\n </div>\r\n <div *ngIf=\"text.loadingText\" class=\"text md bold center mar_top5\">{{text.loadingText}}<span class=\"one\">.</span><span class=\"two\">.</span><span class=\"three\">.</span></div>\r\n <div *ngIf=\"text.loadingSubtext\" class=\"text sm center mar_top5\">{{text.loadingSubtext}}</div>\r\n </ng-container>\r\n\r\n <div *ngSwitchDefault>\r\n <i class=\"{{loadingIcon}} fa-fw fa-3x opac_80\"></i>\r\n <div *ngIf=\"text.loadingText\" class=\"text md bold center mar_top5\">{{text.loadingText}}<span class=\"one\">.</span><span class=\"two\">.</span><span class=\"three\">.</span></div>\r\n <div *ngIf=\"text.loadingSubtext\" class=\"text sm center mar_top5\">{{text.loadingSubtext}}</div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n\r\n<!-- loading overlay -->\r\n<ng-container *ngIf=\"loadingOverlay\">\r\n <div id=\"overlay\">\r\n </div>\r\n <div class=\"row column center_center content_color brad_5 shadow min_w280\" style=\"padding:25px;\" id=\"spinner\">\r\n <div class=\"bars_vertical\">\r\n <div class=\"col size_1 bg_overlay brdr bar1\"></div>\r\n <div class=\"col size_1 bg_overlay brdr bar2\"></div>\r\n <div class=\"col size_1 bg_overlay brdr bar3\"></div>\r\n <div class=\"col size_1 bg_overlay brdr bar4\"></div>\r\n </div>\r\n <div *ngIf=\"text.loadingOverlayText\" class=\"text xlg bold center\" style=\"margin-top:20px;\">{{text.loadingOverlayText}}</div>\r\n <div *ngIf=\"text.loadingOverlaySubtext\" class=\"text md center mar_top5\">{{text.loadingOverlaySubtext}}</div>\r\n </div>\r\n</ng-container>\r\n\r\n<!-- empty -->\r\n<div class=\"row_block\" *ngIf=\"empty\">\r\n <div *ngIf=\"emptyIcon\" class=\"h_center\"><i class=\"{{emptyIcon}}\" style=\"opacity:0.8;\"></i></div>\r\n <div *ngIf=\"text.emptyText\" class=\"text md bold center mar_top5\">{{text.emptyText}}</div>\r\n <div *ngIf=\"text.emptySubtext\" class=\"text sm center mar_top5\">{{text.emptySubtext}}</div>\r\n</div>\r\n\r\n<!-- error -->\r\n<div class=\"row_block\" *ngIf=\"error\">\r\n <div *ngIf=\"errorIcon\" class=\"h_center\"><i class=\"{{errorIcon}}\" style=\"opacity:0.8;\"></i></div>\r\n <div *ngIf=\"text.errorText\" class=\"text md bold center mar_top5\">{{text.errorText}}</div>\r\n <div *ngIf=\"text.errorSubtext\" class=\"text sm center mar_top5\">{{text.errorSubtext}}</div>\r\n</div>\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n OnDestroy,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { BehaviorSubject, combineLatest, Observable, Subject, Subscription } from 'rxjs';\r\nimport { map, tap, withLatestFrom } from 'rxjs/operators';\r\nimport { IconsService } from '../services/icons.service';\r\nimport {IconSelectText} from '../../../shared/models/particle-component-text.model';\r\n\r\n/**\r\n * Particle Icon Select component provides a button and an icon picker that includes all of the Particle Icons as well as the FAS icons.\r\n */\r\n@Component({\r\n selector: 'particle-icon-select',\r\n templateUrl: 'icon-select.component.html',\r\n styleUrls: ['./icon-select.component.css'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => IconSelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class IconSelectComponent implements ControlValueAccessor, OnDestroy {\r\n\r\n /**\r\n * The number of items to display per page\r\n * @private\r\n */\r\n private static readonly PAGE_SIZE = 48;\r\n\r\n /**\r\n * Set the value of the icon select\r\n * @param value the value to set\r\n */\r\n @Input()\r\n set value(value: string) {\r\n this._value = value;\r\n\r\n if (value) {\r\n const [prefix, name] = value.split(' ');\r\n this._internalValue.next({ prefix, name });\r\n this.showIconSelectionPreview = true;\r\n }\r\n }\r\n\r\n /**\r\n * Set disabled\r\n * @param disabled whether or not the icon picker should be disabled\r\n */\r\n @Input()\r\n set disabled(disabled: boolean) {\r\n this._disabled = disabled;\r\n }\r\n\r\n /**\r\n * Color class of the button\r\n */\r\n @Input()\r\n buttonColorClass: string = null as any;\r\n\r\n /**\r\n * The value to set to the button's width, min-width, height and min-height\r\n */\r\n @Input()\r\n buttonSizing = '40px';\r\n\r\n @Input()\r\n text: IconSelectText = {\r\n selectAnIcon: 'Select an Icon',\r\n seeAllIcons: 'See All Icons',\r\n fontAwesomeIcons: 'Font Awesome Icons',\r\n all: 'All',\r\n solid: 'Solid',\r\n regular: 'Regular',\r\n brands: 'Brands',\r\n light: 'Light',\r\n customIcons: 'Custom Icons',\r\n previousPage: 'Previous Page',\r\n nextPage: 'Next Page',\r\n searchIcons: 'Search Icons',\r\n submitSearch: 'Submit Search',\r\n clearResults: 'Clear Results',\r\n couldntFindAnything: 'We couldn\\'t find anything',\r\n modifySearchCriteria: 'Please try modifying your search criteria',\r\n selection: 'Selection',\r\n confirm: 'Confirm',\r\n select: 'Select',\r\n close: 'Close'\r\n } as IconSelectText;\r\n\r\n /**\r\n * Icon select opened event emitter\r\n */\r\n @Output()\r\n opened = new EventEmitter<void>();\r\n\r\n /**\r\n * Icon selected event emitter\r\n */\r\n @Output()\r\n selected: EventEmitter<any> = new EventEmitter();\r\n\r\n /**\r\n * Dialog closed event emitter\r\n */\r\n @Output()\r\n closed = new EventEmitter<any>();\r\n\r\n /**\r\n * The scrollable icon container\r\n */\r\n @ViewChild('iconScrollContainer')\r\n iconScrollContainer: ElementRef<HTMLDivElement> = null as any;\r\n\r\n /**\r\n * BehaviorSubject tracking the input value destructed into its prefix and class name\r\n */\r\n readonly _internalValue = new BehaviorSubject<{ prefix: string, name: string }>(null as any);\r\n\r\n /**\r\n * BehaviorSubject tracking the current filter value selection for icons\r\n */\r\n readonly _filter = new BehaviorSubject< {\r\n style: 'all' | 'solid' | 'regular' | 'light' | 'brands',\r\n type: 'all' | 'particle' | 'fontawesome'\r\n }>({ style: 'all', type: 'all' });\r\n\r\n /**\r\n * BehaviorSubject tracking the current icon search text value\r\n */\r\n readonly _searchText = new BehaviorSubject('');\r\n\r\n /**\r\n * BehaviorSubject that emits when search button has been clicked\r\n */\r\n readonly _searchClick = new BehaviorSubject('');\r\n\r\n /**\r\n * BehaviorSubject tracking the active pagination page\r\n */\r\n readonly _activePage = new BehaviorSubject(0);\r\n\r\n /**\r\n * Subject that emits on search input enter keyup\r\n */\r\n readonly _searchInputEnterKeyup = new Subject<void>();\r\n\r\n /**\r\n * An array of all icons (as strings) that meet the current filter/search criteria as an Observable\r\n * @private\r\n */\r\n private readonly icons$: Observable<Array<{ prefix: string, name: string }>> = combineLatest([\r\n this._filter,\r\n this._searchClick\r\n ]).pipe(\r\n map(([filter, searchText]) => this.service.getIcons(\r\n filter.type,\r\n filter.style,\r\n searchText\r\n ))\r\n );\r\n\r\n /**\r\n * The count of total paginator pages as an Observable\r\n */\r\n readonly totalPages$: Observable<number> = this.icons$.pipe(\r\n map(icons => icons.length\r\n ? Math.ceil(icons.length / IconSelectComponent.PAGE_SIZE)\r\n : 0\r\n )\r\n );\r\n\r\n /**\r\n * Observable boolean indicating whether or not the user can perform an icon text search\r\n */\r\n readonly canSearch$: Observable<boolean> = this._searchText.pipe(\r\n map(searchText => !!searchText.trim().length)\r\n );\r\n\r\n /**\r\n * Observable boolean indicating whether or not the user can paginate to the previous page\r\n */\r\n readonly canPaginatePrevious$: Observable<boolean> = this._activePage.pipe(\r\n map(activePage => activePage > 0)\r\n );\r\n\r\n /**\r\n * Observable boolean indicating whether or not the user can paginate to the next page\r\n */\r\n readonly canPaginateNext$: Observable<boolean> = this.totalPages$.pipe(\r\n withLatestFrom(this._activePage),\r\n map(([totalPages, activePage]) => activePage < (totalPages - 1))\r\n );\r\n\r\n /**\r\n * Paginated icons array as an Observable\r\n */\r\n readonly paginatedIcons$: Observable<Array<{ prefix: string, name: string }>> = combineLatest([\r\n this._activePage,\r\n this.icons$\r\n ]).pipe(\r\n map(([activePage, icons]) => {\r\n let paginatedIcons: Array<{ prefix: string, name: string }> = null as any;\r\n\r\n if (activePage >= 0 && icons.length) {\r\n paginatedIcons = icons.slice(\r\n IconSelectComponent.PAGE_SIZE * activePage,\r\n IconSelectComponent.PAGE_SIZE * (activePage + 1)\r\n );\r\n }\r\n\r\n return paginatedIcons;\r\n }),\r\n tap(() => {\r\n if (this.iconScrollContainer) {\r\n this.iconScrollContainer.nativeElement.scrollTop = 0;\r\n }\r\n })\r\n );\r\n\r\n /**\r\n * Object that controls whether to show the dialog or not\r\n */\r\n showDialog: any;\r\n\r\n /**\r\n * Whether or not to show the icon selection preview\r\n */\r\n showIconSelectionPreview = false;\r\n\r\n /**\r\n * Subscription object to store search input enter keyup subscription\r\n * @private\r\n */\r\n private readonly subscription: Subscription;\r\n\r\n /**\r\n * The value of the icon select\r\n * @private\r\n */\r\n private _value: string = null as any;\r\n\r\n /**\r\n * Whether or not the icon picker is disabled\r\n * @private\r\n */\r\n private _disabled: boolean = false;\r\n\r\n /**\r\n * Function to call on change\r\n */\r\n onChange: (value: any) => void = () => {};\r\n\r\n /**\r\n * Function to call on touch\r\n */\r\n onTouched: () => any = () => {};\r\n\r\n /**\r\n * Dependency injection site\r\n * @param service the IconsService\r\n * @param changeDetectorRef the Angular ChangeDetectorRef\r\n */\r\n constructor(private service: IconsService, private changeDetectorRef: ChangeDetectorRef) {\r\n this.subscription = this._searchInputEnterKeyup.pipe(\r\n withLatestFrom(this.canSearch$)\r\n ).subscribe(([___, canSearch]) => {\r\n if (canSearch) {\r\n this._searchClick.next(this._searchText.getValue());\r\n this._activePage.next(0);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Get disabled\r\n */\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n /**\r\n * Destroy component, unsubscribe from search input enter keyup subscription\r\n */\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n /**\r\n * Write the input value\r\n * @param value the value to write\r\n */\r\n writeValue(value: string): void {\r\n this.value = value;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Register onChange function\r\n * @param fn the function to register\r\n */\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Register onTouched function\r\n * @param fn the function to register\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Set disabled state\r\n * @param isDisabled whether or not the icon picker should be disabled\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Open the icon select dialog\r\n */\r\n openDialog(): void {\r\n if (!this.disabled) {\r\n this.reset();\r\n this.showDialog = {};\r\n this.opened.emit();\r\n\r\n if (this.value) {\r\n this.showIconSelectionPreview = true;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Close the icon select dialog\r\n */\r\n closeDialog(): void {\r\n let internalValue = null;\r\n if (this._value) {\r\n const [prefix, name] = this._value.split(' ');\r\n internalValue = { prefix, name };\r\n }\r\n\r\n this._internalValue.next(internalValue as any);\r\n this.showDialog = null;\r\n this.closed.emit();\r\n }\r\n\r\n /**\r\n * Handle filter select\r\n * @param filter the selected filter\r\n */\r\n handleFilterSelect(\r\n filter: { style: 'all' | 'solid' | 'regular' | 'light' | 'brands',\r\n type: 'all' | 'particle' | 'fontawesome' }\r\n ): void {\r\n this._filter.next(filter);\r\n this._activePage.next(0);\r\n }\r\n\r\n /**\r\n * Update internal value on icon select\r\n * @param icon the selected icon\r\n */\r\n handleIconSelect(icon: { prefix: string, name: string }): void {\r\n this._internalValue.next(icon);\r\n this.showIconSelectionPreview = false;\r\n setTimeout(() => this.showIconSelectionPreview = true);\r\n }\r\n\r\n /**\r\n * Write value on confirm\r\n */\r\n handleIconSelectConfirm(): void {\r\n const icon = this._internalValue.getValue();\r\n this.updateModel(`${icon.prefix} ${icon.name}`);\r\n this.closeDialog();\r\n }\r\n\r\n /**\r\n * Go to the next pagination page\r\n */\r\n paginateNext(): void {\r\n this._activePage.next(this._activePage.getValue() + 1);\r\n }\r\n\r\n /**\r\n * Go to the previous pagination page\r\n */\r\n paginatePrevious(): void {\r\n this._activePage.next(this._activePage.getValue() - 1);\r\n }\r\n\r\n /**\r\n * Clear search text and reset paginator\r\n */\r\n clearSearch(): void {\r\n this._searchText.next('');\r\n this._searchClick.next('');\r\n this._activePage.next(0);\r\n }\r\n\r\n /**\r\n * Update model\r\n * @param value the new value of the model\r\n * @private\r\n */\r\n private updateModel(value: string): void {\r\n const valueBeforeUpdate = this._value;\r\n\r\n if (!this.disabled) {\r\n this.value = value;\r\n\r\n if (valueBeforeUpdate !== this._value) {\r\n this.onChange(this._value);\r\n }\r\n\r\n this.selected.emit({ value: this._value });\r\n }\r\n }\r\n\r\n /**\r\n * Reset filtering/pagination BehaviorSubject values\r\n * @private\r\n */\r\n private reset(): void {\r\n this._filter.next({ style: 'all', type: 'all' });\r\n this._searchText.next('');\r\n this._searchClick.next('');\r\n this._activePage.next(0);\r\n }\r\n}\r\n","<!-- choose button -->\r\n<button [ngClass]=\"buttonColorClass ? buttonColorClass : 'content_color'\"\r\n [ngStyle]=\"{\r\n 'width': buttonSizing,\r\n 'min-width': buttonSizing,\r\n 'height': buttonSizing,\r\n 'min-height': buttonSizing\r\n }\"\r\n (click)=\"openDialog()\"\r\n [particleTooltip]=\"(_internalValue | async)?.prefix + ' ' + (_internalValue | async)?.name\"\r\n [tooltipDisabled]=\"(_internalValue | async) === undefined\"\r\n [disabled]=\"disabled\"\r\n class=\"access wis_button bg_overlay brdr brad_3\"\r\n [attr.aria-label]=\"text.selectAnIcon\">\r\n <ng-container *ngIf=\"!showDialog else placeholderIcon\">\r\n <div *ngIf=\"_internalValue | async as selectedIcon else noSelection\">\r\n <i class=\"{{selectedIcon.prefix}} {{selectedIcon.name}} wis_icon\"></i>\r\n </div>\r\n <ng-template #noSelection>\r\n <div><i class=\"fas fa-icons opacity_20\"></i></div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #placeholderIcon>\r\n <div><i class=\"fas fa-spinner fa-spin\"></i></div>\r\n </ng-template>\r\n</button>\r\n\r\n<!-- TODO: at some point, maybe implement infinite scroll to icons -->\r\n\r\n<!-- picker dialog -->\r\n<particle-dialog [title]=\"text.selectAnIcon\"\r\n [object]=\"showDialog\"\r\n [width]=\"'850px'\"\r\n [height]=\"'500px'\"\r\n (closed)=\"closeDialog()\">\r\n <div class=\"row height100\">\r\n\r\n <!-- FILTERS -->\r\n <div class=\"col min_w250 bg_overlay brdr border_right mobile_hide\">\r\n <div class=\"row_block width100\">\r\n <ng-container *ngIf=\"_filter | async as filter\">\r\n <!-- all icons -->\r\n <div class=\"mar_5 pad_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'all', type: 'all' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'all' && filter.style === 'all' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.seeAllIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'all' && filter.style === 'all'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.seeAllIcons}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"bg_overlay brdr hr mar_10\"></div>\r\n <!-- fontawesome icons -->\r\n <div class=\"mar_5\">\r\n <div class=\"text md bolder\" style=\"padding:10px 10px 5px 15px;\">{{text.fontAwesomeIcons}}</div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'all', type: 'fontawesome' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'fontawesome' && filter.style === 'all' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.fontAwesomeIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'fontawesome' && filter.style === 'all'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.all}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'solid', type: 'fontawesome' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'fontawesome' && filter.style === 'solid' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.solid + ' ' + text.fontAwesomeIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'fontawesome' && filter.style === 'solid'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.solid}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'regular', type: 'fontawesome' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'fontawesome' && filter.style === 'regular' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.regular + ' ' + text.fontAwesomeIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'fontawesome' && filter.style === 'regular'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.regular}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'brands', type: 'fontawesome' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'fontawesome' && filter.style === 'brands' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.brands + ' ' + text.fontAwesomeIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'fontawesome' && filter.style === 'brands'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.brands}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"bg_overlay brdr hr mar_10\"></div>\r\n <!-- custom icons -->\r\n <div class=\"mar_5\">\r\n <div class=\"text md bolder\" style=\"padding:10px 10px 5px 15px;\">{{text.customIcons}}</div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'all', type: 'particle' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'particle' && filter.style === 'all' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.customIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'particle' && filter.style === 'all'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">All</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'solid', type: 'particle' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'particle' && filter.style === 'solid' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.solid + ' ' + text.customIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'particle' && filter.style === 'solid'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">Solid</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'regular', type: 'particle' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'particle' && filter.style === 'regular' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.regular + ' ' + text.customIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'particle' && filter.style === 'regular'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">Regular</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'light', type: 'particle' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'particle' && filter.style === 'light' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.light + ' ' + text.customIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'particle' && filter.style === 'light'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.light}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <!-- ICONS -->\r\n <div class=\"col size_2 column\">\r\n <div class=\"col content_color_dark_1 pad_x5\">\r\n <!-- paginator -->\r\n <div *ngIf=\"totalPages$ | async as totalPages\"\r\n class=\"col v_center mar_10\">\r\n <button *ngIf=\"canPaginatePrevious$ | async else disabledPreviousButton\"\r\n (click)=\"paginatePrevious()\"\r\n class=\"access btn square_24px bg_overlay brdr ok_button_color\"\r\n [attr.aria-label]=\"text.previousPage\">\r\n <span class=\"icon slide_left\"><i class=\"fas fa-arrow-left\"></i></span>\r\n </button>\r\n <ng-template #disabledPreviousButton>\r\n <button disabled class=\"access btn square_24px bg_overlay brdr ok_button_color\"\r\n [attr.aria-label]=\"text.previousPage\">\r\n <span class=\"icon slide_left\"><i class=\"fas fa-arrow-left\"></i></span>\r\n </button>\r\n </ng-template>\r\n <div\r\n class=\"text sm bolder center\"\r\n style=\"min-width:65px;\">\r\n {{(_activePage | async)! + 1}} / {{totalPages}}\r\n </div>\r\n <button *ngIf=\"canPaginateNext$ | async else disabledNextButton\"\r\n (click)=\"paginateNext()\"\r\n class=\"access btn square_24px bg_overlay brdr ok_button_color\"\r\n [attr.aria-label]=\"text.nextPage\">\r\n <span class=\"icon slide_right\"><i class=\"fas fa-arrow-right\"></i></span>\r\n </button>\r\n <ng-template #disabledNextButton>\r\n <button disabled class=\"access btn square_24px bg_overlay brdr ok_button_color\"\r\n [attr.aria-label]=\"text.nextPage\">\r\n <span class=\"icon slide_right\"><i class=\"fas fa-arrow-right\"></i></span>\r\n </button>\r\n </ng-template>\r\n </div>\r\n <!-- search -->\r\n <div class=\"col size_1 wis_search mar_10\">\r\n <input #iconSearchInput\r\n [ngModel]=\"_searchText | async\"\r\n (input)=\"_searchText.next(iconSearchInput.value)\"\r\n (keyup.enter)=\"_searchInputEnterKeyup.next($any(null))\"\r\n class=\"access input md bg_overlay brdr content_color\"\r\n [attr.aria-label]=\"text.searchIcons\" [placeholder]=\"text.searchIcons + '...'\" />\r\n <button *ngIf=\"(canSearch$ | async) && (_searchClick | async)\"\r\n (click)=\"clearSearch()\" aria-label=\"Clear search\"\r\n class=\"access btn circle_18px overlay wis_clear_btn\">\r\n <span class=\"icon grow\"><i class=\"fas fa-times fa-sm\"></i></span>\r\n </button>\r\n <button *ngIf=\"canSearch$ | async else disabledSearchButton\"\r\n (click)=\"_searchClick.next(iconSearchInput.value); _activePage.next(0)\"\r\n class=\"access btn square_28px bg_overlay brdr ok_button_color brad_3 wis_search_btn\"\r\n [attr.aria-label]=\"text.submitSearch\" type=\"submit\">\r\n <span class=\"icon grow\"><i class=\"fas fa-search fa-sm\"></i></span>\r\n </button>\r\n <ng-template #disabledSearchButton>\r\n <button disabled\r\n class=\"access btn square_28px bg_overlay brdr ok_button_color brad_3 wis_search_btn\"\r\n [attr.aria-label]=\"text.submitSearch\" type=\"submit\">\r\n <span class=\"icon grow\"><i class=\"fas fa-search fa-sm\"></i></span>\r\n </button>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <!-- icons -->\r\n <div #iconScrollContainer class=\"col size_1 top_left scroll_y pad_5\" style=\"scroll-behavior: smooth\">\r\n <ng-container *ngIf=\"paginatedIcons$ | async as icons else noResults\">\r\n <div class=\"row wrap top_left\" style=\"align-items:stretch;\">\r\n <ng-container *ngFor=\"let icon of paginatedIcons$ | async\">\r\n <div class=\"col size_1 min_w75 mar_5\">\r\n <button class=\"access wis_icon_btn\" (click)=\"handleIconSelect(icon)\" [attr.aria-label]=\"text.select + ' ' + icon.name\">\r\n <div [ngClass]=\"((_internalValue | async)?.prefix === icon.prefix) && ((_internalValue | async)?.name === icon.name) ? 'ok_button_color' : 'content_color'\"\r\n class=\"wis_icon_btn_preview square_50px brad_3 bg_overlay brdr mar_bot5\">\r\n <i class=\"{{icon.prefix}} {{icon.name}}\"></i>\r\n </div>\r\n <div class=\"text sm center faded\">{{icon.name}}</div>\r\n </button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-template #noResults>\r\n <div class=\"row column min_h300 center_center\">\r\n <particle-endpoint-state\r\n [empty]=\"true\"\r\n [emptyIcon]=\"'fas fa-search fa-3x mar_bot5'\"\r\n [text]=\"{emptyText: text.couldntFindAnything, emptySubtext: text.modifySearchCriteria}\">\r\n </particle-endpoint-state>\r\n <button class=\"access btnset clear mar_10\"\r\n [attr.aria-label]=\"text.close\"\r\n (click)=\"clearSearch()\">\r\n <div class=\"circle_20px ptl_brdr_color ptl_brdr_size ptl_input_bg_color\">\r\n <i class=\"fas fa-times\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div *ngIf=\"_internalValue | async as selectedIcon\"\r\n class=\"col space_between bg_overlay brdr border_top pad_x5 wis_selection_bar\">\r\n <div class=\"col v_center mar_10\">\r\n <div class=\"text md faded mar_right10 mobile_hide\">{{text.selection}}:</div>\r\n <div class=\"v_center\" *ngIf=\"showIconSelectionPreview\">\r\n <i class=\"{{selectedIcon.prefix}} {{selectedIcon.name}} fa-fw mar_right5\" style=\"font-size:16px;\"></i>\r\n <div class=\"text md bold\">{{selectedIcon.prefix}} {{selectedIcon.name}}</div>\r\n </div>\r\n </div>\r\n <div class=\"col v_center mar_10\">\r\n <button\r\n type=\"button\"\r\n class=\"access btnset spaced md hov_glow save_button_color ptl_brdr_radius\"\r\n [attr.aria-label]=\"text.confirm\"\r\n (click)=\"handleIconSelectConfirm()\"\r\n >\r\n <div>{{text.confirm}}</div>\r\n <div class=\"brdr border_left mar_left10 pad_left10\"><i class=\"fas fa-check\"></i></div>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</particle-dialog>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EndpointStateComponent } from './components/endpoint-state.component';\n\n\n\n@NgModule({\n declarations: [EndpointStateComponent],\n exports: [\n EndpointStateComponent\n ],\n imports: [\n CommonModule\n ]\n})\nexport class ParticleEndpointStateModule { }\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {ParticleTooltipModule} from '../tooltip/tooltip.module';\r\nimport {ParticleIconsRegular} from './models/particle-icons-regular.model';\r\nimport {ParticleIconsLight} from './models/particle-icons-light.model';\r\nimport {ParticleIconsSolid} from './models/particle-icons-solid.model';\r\nimport {IconSelectComponent} from './components/icon-select.component';\r\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\r\nimport {ParticleDialogModule} from '../dialog/dialog.module';\r\nimport {IconsService} from './services/icons.service';\r\nimport {ParticleEndpointStateModule} from '../endpoint-state/endpoint-state.module';\r\n\r\n/**\r\n * Reference to the Font Awesome variable to add icons\r\n */\r\nconst FontAwesome = window['FontAwesome' as any] as any;\r\n\r\n@NgModule({\r\n declarations: [\r\n IconSelectComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n ParticleTooltipModule,\r\n ParticleDialogModule,\r\n ParticleEndpointStateModule\r\n ],\r\n exports: [\r\n IconSelectComponent\r\n ],\r\n providers: [IconsService]\r\n})\r\nexport class ParticleIconsModule {\r\n\r\n constructor() {\r\n if (!FontAwesome) {\r\n return;\r\n }\r\n\r\n for (const icon of ParticleIconsLight.icons) {\r\n FontAwesome.library.add(icon);\r\n }\r\n\r\n for (const icon of ParticleIconsRegular.icons) {\r\n FontAwesome.library.add(icon);\r\n }\r\n\r\n for (const icon of ParticleIconsSolid.icons) {\r\n FontAwesome.library.add(icon);\r\n }\r\n }\r\n\r\n}\r\n","export class IdleTimer {\r\n private interval: any;\r\n private timeoutTracker: any;\r\n private readonly eventHandler: any;\r\n private readonly timeout: number;\r\n private readonly onTimeout: any;\r\n\r\n constructor(timeout: number, onTimeout: any) {\r\n this.timeout = timeout;\r\n this.onTimeout = onTimeout;\r\n this.eventHandler = this.updateExpiredTime.bind(this);\r\n this.tracker();\r\n this.startInterval();\r\n }\r\n\r\n private startInterval(): void {\r\n this.updateExpiredTime();\r\n\r\n this.interval = setInterval(() => {\r\n if (this.isTimerExpired() && this.onTimeout) {\r\n this.onTimeout();\r\n this.cleanUp();\r\n }\r\n }, 1000);\r\n }\r\n\r\n private updateExpiredTime(): void {\r\n if (this.timeoutTracker) {\r\n clearTimeout(this.timeoutTracker);\r\n }\r\n this.timeoutTracker = setTimeout(() => {\r\n localStorage.setItem('_expiredTime', (Date.now() + this.timeout * 1000) + '');\r\n }, 300);\r\n }\r\n\r\n private tracker(): void {\r\n localStorage.removeItem('_expiredTime');\r\n window.addEventListener('mousemove', this.eventHandler);\r\n window.addEventListener('scroll', this.eventHandler);\r\n window.addEventListener('keydown', this.eventHandler);\r\n window.addEventListener('resize', this.eventHandler);\r\n document.addEventListener('click', this.eventHandler);\r\n document.addEventListener('mousedown', this.eventHandler);\r\n document.addEventListener('DOMMouseScroll', this.eventHandler);\r\n document.addEventListener('mousewheel', this.eventHandler);\r\n document.addEventListener('touchmove', this.eventHandler);\r\n document.addEventListener('MSPointerMove', this.eventHandler);\r\n }\r\n\r\n cleanUp(): void {\r\n clearInterval(this.interval);\r\n window.removeEventListener('mousemove', this.eventHandler);\r\n window.removeEventListener('scroll', this.eventHandler);\r\n window.removeEventListener('keydown', this.eventHandler);\r\n window.removeEventListener('resize', this.eventHandler);\r\n document.removeEventListener('click', this.eventHandler);\r\n document.removeEventListener('mousedown', this.eventHandler);\r\n document.removeEventListener('DOMMouseScroll', this.eventHandler);\r\n document.removeEventListener('mousewheel', this.eventHandler);\r\n document.removeEventListener('touchmove', this.eventHandler);\r\n document.removeEventListener('MSPointerMove', this.eventHandler);\r\n }\r\n\r\n resetTimer(): void {\r\n this.tracker();\r\n this.startInterval();\r\n }\r\n\r\n isTimerExpired(): boolean {\r\n const expiredTime = parseInt(localStorage.getItem('_expiredTime') as string, 10);\r\n return expiredTime < Date.now();\r\n }\r\n}\r\n","import {Component, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport {DialogComponent} from '../dialog/dialog.component';\r\nimport {IdleTimer} from './idle-timer';\r\nimport {IdleTimeoutText} from '../../shared/models/particle-component-text.model';\r\n\r\n@Component({\r\n selector: 'particle-idle-timeout',\r\n templateUrl: './idle-timeout.component.html'\r\n})\r\nexport class IdleTimeoutComponent implements OnInit {\r\n\r\n @Input()\r\n borderRadius: string = '0px';\r\n\r\n @Input()\r\n timeoutInSeconds = 600;\r\n\r\n @Input()\r\n text: IdleTimeoutText = {\r\n sessionExpiring: 'Your Session is Expiring',\r\n second: 'second',\r\n seconds: 'seconds',\r\n stayLoggedIn: 'Click to stay logged in'\r\n } as IdleTimeoutText;\r\n\r\n @Output()\r\n timerEnd: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n /**\r\n * Timeout Dialog - shows when the inactivity timer has 1 minute left, giving the user the ability to confirm they're still active.\r\n */\r\n @ViewChild('timeoutDialog')\r\n timeoutDialog: DialogComponent = null as any;\r\n\r\n /**\r\n * Used for the countdown to user auto-logout\r\n */\r\n count = 0;\r\n\r\n /**\r\n * Controls showing the dialog\r\n */\r\n showDialog: any;\r\n\r\n idleTimer: IdleTimer = null as any;\r\n\r\n private readonly COUNTDOWN_LENGTH = 60;\r\n\r\n private finalCountdown: any;\r\n\r\n private timerReset = false;\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.idleTimer = new IdleTimer(this.timeoutInSeconds - 60, () => {this.openDialog()});\r\n }\r\n\r\n openDialog(): void {\r\n this.showDialog = {};\r\n this.timerReset = false;\r\n this.timeoutDialog.open();\r\n this.setupFinalCountdown();\r\n }\r\n\r\n private setupFinalCountdown(): void {\r\n this.count = this.COUNTDOWN_LENGTH;\r\n this.finalCountdown = setInterval(() => {\r\n this.count--;\r\n if (this.count === 0 || !this.idleTimer.isTimerExpired()) {\r\n this.handleTimerEnd();\r\n }\r\n }, 1000);\r\n }\r\n\r\n private handleTimerEnd(): void {\r\n clearInterval(this.finalCountdown);\r\n this.showDialog = null;\r\n this.timeoutDialog.close();\r\n\r\n if (this.idleTimer.isTimerExpired()) {\r\n this.timerEnd.emit();\r\n }\r\n }\r\n\r\n resetTimer(): void {\r\n if (!this.timerReset) {\r\n this.timerReset = true;\r\n clearInterval(this.finalCountdown);\r\n this.idleTimer.resetTimer();\r\n this.showDialog = null;\r\n }\r\n }\r\n\r\n}\r\n","<!-- timeout dialog -->\r\n<particle-dialog [title]=\"text.sessionExpiring\"\r\n [object]=\"showDialog\"\r\n [borderRadius]=\"borderRadius\"\r\n (closed)=\"resetTimer()\"\r\n width=\"350px\" height=\"150px\"\r\n #timeoutDialog>\r\n <div class=\"row column center_center height100\">\r\n <div class=\"header sm bold center mar_bot10\">{{count}} {{count !== 1 ? text.seconds : text.second}}</div>\r\n <button class=\"access btn md bg_overlay brdr ok_button_color\" [attr.aria-label]=\"text.stayLoggedIn\"\r\n (click)=\"resetTimer()\">\r\n <span class=\"text\">{{text.stayLoggedIn}}</span>\r\n </button>\r\n </div>\r\n</particle-dialog>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IdleTimeoutComponent } from './idle-timeout.component';\r\nimport {ParticleDialogModule} from '../dialog/dialog.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n IdleTimeoutComponent\r\n ],\r\n exports: [\r\n IdleTimeoutComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n ParticleDialogModule\r\n ]\r\n})\r\nexport class ParticleIdleTimeoutModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/**\r\n * Pipe to transform an input number into its ordinal format\r\n */\r\n@Pipe({\r\n name: 'ordinalNumber'\r\n})\r\nexport class OrdinalNumberPipe implements PipeTransform {\r\n\r\n /**\r\n * Transform the input number/string (must be a valid number if string)\r\n * into Ordinal format (1 -> 1st, 2 -> 2nd, etc)\r\n * @param value the number to transform\r\n */\r\n transform(value: number | string): string {\r\n let stringifiedNumber: string = '';\r\n if (typeof value === 'string' && !isNaN(Number(value))) {\r\n stringifiedNumber = value;\r\n } else if (typeof value === 'number') {\r\n stringifiedNumber = String(value);\r\n }\r\n\r\n let ordinalSuffix: string;\r\n if (stringifiedNumber.endsWith('11') ||\r\n stringifiedNumber.endsWith('12') ||\r\n stringifiedNumber.endsWith('13')\r\n ) {\r\n ordinalSuffix = 'th';\r\n } else if (stringifiedNumber.endsWith('1')) {\r\n ordinalSuffix = 'st';\r\n } else if (stringifiedNumber.endsWith('2')) {\r\n ordinalSuffix = 'nd';\r\n } else if (stringifiedNumber.endsWith('3')) {\r\n ordinalSuffix = 'rd';\r\n } else {\r\n ordinalSuffix = 'th';\r\n }\r\n\r\n return stringifiedNumber + ordinalSuffix;\r\n }\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n QueryList,\r\n Renderer2,\r\n ViewChild,\r\n ViewChildren\r\n} from '@angular/core';\r\nimport { addDays, endOfMonth, isWithinInterval, subDays } from 'date-fns';\r\nimport { BehaviorSubject, combineLatest, Observable, Subscription } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport {CalendarText} from '../../../../shared/models/particle-component-text.model';\r\n\r\n/**\r\n * Interface representing a date interval\r\n */\r\nexport declare interface Interval {\r\n start: Date | number;\r\n end: Date | number;\r\n}\r\n\r\n/**\r\n * Interface representing a Date broken down by date/month/year\r\n * with extended metadata\r\n */\r\ndeclare interface MetaDate {\r\n\r\n /**\r\n * The day of the week (starting at 0)\r\n */\r\n day: number;\r\n\r\n /**\r\n * The day of the month (starting at 1)\r\n */\r\n date: number;\r\n\r\n /**\r\n * The month (starting at 0)\r\n */\r\n month: number;\r\n\r\n /**\r\n * The full year\r\n */\r\n year: number;\r\n\r\n /**\r\n * Whether the day is selectable\r\n */\r\n selectable: boolean;\r\n}\r\n\r\n/**\r\n * Component that allows a user to select a date from a calendar\r\n */\r\n@Component({\r\n selector: 'particle-calendar',\r\n templateUrl: './calendar.component.html',\r\n styleUrls: ['./calendar.component.css']\r\n})\r\nexport class CalendarComponent implements OnDestroy, OnInit {\r\n\r\n /**\r\n * The keyboard arrow keys\r\n * @private\r\n */\r\n private static readonly ARROW_KEYS = ['ArrowLeft', 'ArrowUp', 'ArrowRight', 'ArrowDown'];\r\n\r\n /**\r\n * ViewChild of the calendar widget parent div element\r\n */\r\n @ViewChild('calendarWidgetDiv')\r\n calendarWidgetDiv: ElementRef<HTMLDivElement> = null as any;\r\n\r\n /**\r\n * ViewChild of the month select element\r\n */\r\n @ViewChild('yearSelect')\r\n yearSelect: ElementRef<HTMLSelectElement> = null as any;\r\n\r\n /**\r\n * ViewChild of the done button\r\n */\r\n @ViewChild('doneButton')\r\n doneButton: ElementRef<HTMLButtonElement> = null as any;\r\n\r\n /**\r\n * QueryList of the calendar date buttons for the currently selected month/year\r\n */\r\n @ViewChildren('calendarDate')\r\n calendarDates: QueryList<ElementRef<HTMLButtonElement>> = null as any;\r\n\r\n /**\r\n * The selected date value\r\n */\r\n @Input()\r\n set value(value: Date) {\r\n let metaDateValue: MetaDate = null as any\r\n\r\n if (!!value) {\r\n metaDateValue = {\r\n day: value.getDay(),\r\n date: value.getDate(),\r\n month: value.getMonth(),\r\n year: value.getFullYear(),\r\n selectable: true\r\n };\r\n }\r\n\r\n this._value.next(metaDateValue);\r\n }\r\n\r\n /**\r\n * The range of available dates to choose from\r\n */\r\n @Input()\r\n set dateRange(dateRange: { minDate: Date, maxDate: Date }) {\r\n if (dateRange?.minDate > dateRange?.maxDate) {\r\n throw new Error(this.text.minGreaterThenMax);\r\n }\r\n\r\n const {year} = this.currentDate;\r\n this._validSelectionInterval.next({\r\n start: dateRange?.minDate ?? new Date(year - 100, 0, 1),\r\n end: dateRange?.maxDate ?? new Date(year + 50, 11, 31)\r\n });\r\n }\r\n\r\n @Input()\r\n set text(text: CalendarText) {\r\n if (text) {\r\n this._text = text;\r\n this.weekDays = [\r\n text.sunday,\r\n text.monday,\r\n text.tuesday,\r\n text.wednesday,\r\n text.thursday,\r\n text.friday,\r\n text.saturday\r\n ];\r\n }\r\n }\r\n\r\n get text(): CalendarText {\r\n return this._text;\r\n }\r\n\r\n @Input()\r\n showControls = true;\r\n\r\n private _text: CalendarText = {\r\n selectAYear: 'Select a Year',\r\n selectAMonth: 'Select a Month',\r\n january: 'January',\r\n february: 'February',\r\n march: 'March',\r\n april: 'April',\r\n may: 'May',\r\n june: 'June',\r\n july: 'July',\r\n august: 'August',\r\n september: 'September',\r\n october: 'October',\r\n november: 'November',\r\n december: 'December',\r\n sundayAbbr: 'Su',\r\n mondayAbbr: 'Mo',\r\n tuesdayAbbr: 'Tu',\r\n wednesdayAbbr: 'We',\r\n thursdayAbbr: 'Th',\r\n fridayAbbr: 'Fr',\r\n saturdayAbbr: 'Sa',\r\n sunday: 'Sunday',\r\n monday: 'Monday',\r\n tuesday: 'Tuesday',\r\n wednesday: 'Wednesday',\r\n thursday: 'Thursday',\r\n friday: 'Friday',\r\n saturday: 'Saturday',\r\n select: 'Select',\r\n the: 'the',\r\n resetDateToToday: 'Reset date selection to today\\'s date',\r\n selectToday: 'Select Today',\r\n saveDate: 'Save date selection',\r\n done: 'Done',\r\n minGreaterThenMax: 'Min date must be less than max date'\r\n } as CalendarText;\r\n\r\n /**\r\n * Event emitted on date select\r\n */\r\n @Output()\r\n selected = new EventEmitter<Date>();\r\n\r\n /**\r\n * Event emitted on close (either through the button, escape keyup or click off of widget).\r\n * Note: it is the parent component's job to actually hide the calendar, this event\r\n * acts as a signal that that action should be taken\r\n */\r\n @Output()\r\n closed = new EventEmitter<void>();\r\n\r\n /**\r\n * The current Date broken down by day/month/year\r\n */\r\n readonly currentDate: MetaDate;\r\n\r\n /**\r\n * Array of days of the week\r\n */\r\n weekDays = [\r\n this.text.sunday,\r\n this.text.monday,\r\n this.text.tuesday,\r\n this.text.wednesday,\r\n this.text.thursday,\r\n this.text.friday,\r\n this.text.saturday\r\n ];\r\n\r\n /**\r\n * BehaviorSubject tracking the current value\r\n */\r\n readonly _value = new BehaviorSubject<MetaDate>(null as any);\r\n\r\n /**\r\n * BehaviorSubject tracking the valid selection interval\r\n */\r\n readonly _validSelectionInterval = new BehaviorSubject<Interval>(null as any);\r\n\r\n /**\r\n * BehaviorSubject tracking the currently selected month\r\n */\r\n readonly _selectedMonth = new BehaviorSubject(0);\r\n\r\n /**\r\n * BehaviorSubject tracking the currently selected year\r\n */\r\n readonly _selectedYear = new BehaviorSubject(1970);\r\n\r\n /**\r\n * The full month for the current selected month/year\r\n */\r\n readonly fullMonth$: Observable<Array<MetaDate>> = combineLatest([\r\n this._selectedMonth,\r\n this._selectedYear,\r\n this._validSelectionInterval\r\n ]).pipe(\r\n map(([selectedMonth, selectedYear, validSelectionInterval]) => {\r\n return CalendarComponent.generateMonth(\r\n selectedMonth,\r\n selectedYear,\r\n validSelectionInterval\r\n );\r\n })\r\n );\r\n\r\n /**\r\n * The range of selectable years as an Observable\r\n */\r\n readonly validYearRange$: Observable<Array<number>> = this._validSelectionInterval.pipe(\r\n map(selectionInterval => {\r\n\r\n if (this._selectedYear.getValue() < (selectionInterval?.start as Date)?.getFullYear()) {\r\n this._selectedYear.next((selectionInterval?.start as Date)?.getFullYear());\r\n }\r\n return CalendarComponent.generateYearRange(\r\n (selectionInterval?.start as Date)?.getFullYear() ?? null,\r\n (selectionInterval?.end as Date)?.getFullYear() ?? null,\r\n this.currentDate.year\r\n );\r\n\r\n // check if the _selectedYear is valid in the new date range, if not update to min year of range\r\n })\r\n );\r\n\r\n /**\r\n * Subscription for the combination of value and valid selection interval\r\n * @private\r\n */\r\n private readonly subscription = new Subscription();\r\n\r\n /**\r\n * The currently selected date\r\n */\r\n selectedDate: MetaDate | null = null;\r\n\r\n /**\r\n * Generate a 42 element array representing the input month's days with\r\n * padding from the previous/following month\r\n * @param month the month to generate dates for\r\n * @param year the year to generate the month for\r\n * @param selectionInterval the selection interval\r\n */\r\n private static generateMonth(\r\n month: number,\r\n year: number,\r\n selectionInterval: Interval\r\n ): Array<MetaDate> {\r\n if (!!selectionInterval) {\r\n const beginningOfMonthDate = new Date(year, month, 1);\r\n const endOfMonthDate = endOfMonth(beginningOfMonthDate);\r\n\r\n const fullMonth: Array<MetaDate> = [];\r\n let dayOfMonth = beginningOfMonthDate.getDay();\r\n for (let i = 1; i <= endOfMonthDate.getDate(); i++) {\r\n const dateOfMonth = new Date(year, month, i);\r\n fullMonth.push({\r\n day: dayOfMonth,\r\n date: i,\r\n month,\r\n year,\r\n selectable: isWithinInterval(dateOfMonth, selectionInterval)\r\n });\r\n\r\n dayOfMonth = dayOfMonth === 6 ? 0 : dayOfMonth + 1;\r\n }\r\n\r\n if (beginningOfMonthDate.getDay() > 0) {\r\n const lastMonthDates: Array<MetaDate> = [];\r\n for (let i = beginningOfMonthDate.getDay(); i > 0; i--) {\r\n const subtractedDate = subDays(beginningOfMonthDate, i);\r\n lastMonthDates.push({\r\n day: subtractedDate.getDay(),\r\n date: subtractedDate.getDate(),\r\n month: subtractedDate.getMonth(),\r\n year: subtractedDate.getFullYear(),\r\n selectable: false\r\n });\r\n }\r\n\r\n fullMonth.unshift(...lastMonthDates);\r\n }\r\n\r\n let daysToAdd = 1;\r\n while (fullMonth.length < 42) {\r\n const addedDate = addDays(endOfMonthDate, daysToAdd++);\r\n fullMonth.push({\r\n day: addedDate.getDay(),\r\n date: addedDate.getDate(),\r\n month: addedDate.getMonth(),\r\n year: addedDate.getFullYear(),\r\n selectable: false\r\n });\r\n }\r\n\r\n return fullMonth;\r\n }\r\n\r\n return null as any;\r\n }\r\n\r\n /**\r\n * Generate an Array of numbers representing the span of years between the input\r\n * @param minYear the start of the range\r\n * @param maxYear the end of the range\r\n * @param currentYear the current year\r\n */\r\n private static generateYearRange(minYear: number, maxYear: number, currentYear: number): Array<number> {\r\n let start: number, end: number;\r\n if (!minYear && !!maxYear) {\r\n start = maxYear = 50;\r\n end = maxYear;\r\n } else if (!!minYear && !maxYear) {\r\n start = minYear;\r\n end = minYear + 50;\r\n } else if (!!minYear && !!maxYear) {\r\n start = minYear;\r\n end = maxYear;\r\n } else {\r\n start = currentYear - 100;\r\n end = currentYear + 50;\r\n }\r\n\r\n const range: Array<number> = [];\r\n for (let i = start; i <= end; i++) {\r\n range.push(i);\r\n }\r\n\r\n return range;\r\n }\r\n\r\n /**\r\n * Dependency injection site\r\n * @param renderer the Angular renderer\r\n */\r\n constructor(private renderer: Renderer2) {\r\n const currentDate = new Date();\r\n this.currentDate = {\r\n day: currentDate.getDay(),\r\n date: currentDate.getDate(),\r\n month: currentDate.getMonth(),\r\n year: currentDate.getFullYear(),\r\n selectable: true\r\n };\r\n }\r\n\r\n /**\r\n * Init component\r\n */\r\n ngOnInit(): void {\r\n this.subscription.add(\r\n combineLatest([this._value, this._validSelectionInterval]).subscribe(\r\n ([value, validSelectionInterval]) => {\r\n let selectionInterval = validSelectionInterval;\r\n\r\n if (!selectionInterval) {\r\n const {year} = this.currentDate;\r\n selectionInterval = {\r\n start: new Date(year - 100, 0, 1),\r\n end: new Date(year + 50, 11, 31)\r\n };\r\n\r\n this.currentDate.selectable = isWithinInterval(\r\n new Date(this.currentDate.year, this.currentDate.month, this.currentDate.date),\r\n selectionInterval\r\n );\r\n }\r\n\r\n if (!!value) {\r\n const valueDate = new Date(value.year, value.month, value.date);\r\n if (isWithinInterval(valueDate, selectionInterval)) {\r\n this.selectedDate = value;\r\n this._selectedMonth.next(value.month);\r\n this._selectedYear.next(value.year);\r\n } else {\r\n this._value.next(null as any);\r\n this.selectedDate = null as any;\r\n }\r\n } else {\r\n this._selectedMonth.next(this.currentDate.month);\r\n this._selectedYear.next(this.currentDate.year);\r\n }\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Destroy component, unsubscribe from any active subscriptions\r\n */\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n /**\r\n * Handle window keyup events\r\n * @param event the keyup KeyboardEvent\r\n */\r\n @HostListener('window:keyup', ['$event'])\r\n onKeyUp(event: KeyboardEvent): void {\r\n const {key} = event;\r\n\r\n if (CalendarComponent.ARROW_KEYS.includes(key)) {\r\n this.onArrowKeyUp(key);\r\n }\r\n }\r\n\r\n /**\r\n * Emit closed event on click if clicked outside calendar widget\r\n * @param event the click MouseEvent\r\n */\r\n @HostListener('window:click', ['$event'])\r\n handleClick(event: MouseEvent): void {\r\n const {pageX, pageY} = event;\r\n\r\n // this check is to prevent the click event from firing on keypress when focused on a button\r\n if (pageX > 0 && pageY > 0) {\r\n const {top, bottom, left, right} = this.calendarWidgetDiv.nativeElement.getBoundingClientRect();\r\n\r\n const insideX = (pageX >= left) && (pageX <= right);\r\n const insideY = (pageY >= top) && (pageY <= bottom);\r\n\r\n // this check is for IE11 where option values might render outside of the calendar\r\n const tagName = (event.target as HTMLElement).tagName;\r\n const shouldClose = !(insideX && insideY) && tagName !== 'OPTION';\r\n\r\n if (shouldClose) {\r\n this.closed.emit();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Update selected date and emit selection event\r\n * @param selectedDate the selected date\r\n */\r\n handleDateSelection(selectedDate: MetaDate): void {\r\n this.selectedDate = selectedDate;\r\n this.selected.emit(new Date(selectedDate.year, selectedDate.month, selectedDate.date));\r\n }\r\n\r\n /**\r\n * Select the current date and toggle selected month/year to match\r\n */\r\n selectToday(): void {\r\n this.handleDateSelection(this.currentDate);\r\n this._selectedMonth.next(this.currentDate.month);\r\n this._selectedYear.next(this.currentDate.year);\r\n this.doneButton.nativeElement.focus();\r\n }\r\n\r\n /**\r\n * Handle arrow key navigation for calendar date buttons\r\n * @param key the pressed arrow key\r\n * @private\r\n */\r\n private onArrowKeyUp(key: string): void {\r\n const { activeElement } = document;\r\n\r\n if (!!activeElement) {\r\n const activeDate = activeElement.getAttribute('data-date');\r\n\r\n if (activeDate !== null && activeDate !== '') {\r\n if (key === 'ArrowLeft') {\r\n this.navigateLeft(Number.parseInt(activeDate, 10));\r\n } else if (key === 'ArrowRight') {\r\n this.navigateRight(Number.parseInt(activeDate, 10));\r\n } else if (key === 'ArrowUp') {\r\n this.navigateUp(Number.parseInt(activeDate, 10));\r\n } else if (key === 'ArrowDown') {\r\n this.navigateDown(Number.parseInt(activeDate, 10));\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Attempt to focus on date indexed immediately to the left of the input date\r\n * @param date the day of the month\r\n * @private\r\n */\r\n private navigateLeft(date: number): void {\r\n if (date > 1) {\r\n const calendarDates = this.calendarDates.toArray();\r\n const foundIndex = calendarDates.findIndex(calendarDate => {\r\n return date === Number.parseInt(\r\n calendarDate.nativeElement.getAttribute('data-date') as string,\r\n 10\r\n );\r\n });\r\n\r\n if (foundIndex > 0) {\r\n calendarDates[foundIndex - 1].nativeElement.focus();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Attempt to focus on date indexed immediately to the right of the input date\r\n * @param date the day of the month\r\n * @private\r\n */\r\n private navigateRight(date: number): void {\r\n const calendarDates = this.calendarDates.toArray();\r\n const foundIndex = calendarDates.findIndex(calendarDate => {\r\n return date === Number.parseInt(\r\n calendarDate.nativeElement.getAttribute('data-date') as string,\r\n 10\r\n );\r\n });\r\n\r\n if ((foundIndex > -1) && (foundIndex < (calendarDates.length - 1))) {\r\n calendarDates[foundIndex + 1].nativeElement.focus();\r\n }\r\n }\r\n\r\n /**\r\n * Attempt to navigate one week in the past from the input date\r\n * @param date the day of the month\r\n * @private\r\n */\r\n private navigateUp(date: number): void {\r\n const calendarDates = this.calendarDates.toArray();\r\n const foundIndex = calendarDates.findIndex(calendarDate => {\r\n return date === Number.parseInt(\r\n calendarDate.nativeElement.getAttribute('data-date') as string,\r\n 10\r\n );\r\n });\r\n\r\n if ((foundIndex > -1) && (foundIndex - 7 >= 0)) {\r\n calendarDates[foundIndex - 7].nativeElement.focus();\r\n }\r\n }\r\n\r\n /**\r\n * Attempt to navigate one week in the future from the input date\r\n * @param date the day of the month\r\n * @private\r\n */\r\n private navigateDown(date: number): void {\r\n const calendarDates = this.calendarDates.toArray();\r\n const foundIndex = calendarDates.findIndex(calendarDate => {\r\n return date === Number.parseInt(\r\n calendarDate.nativeElement.getAttribute('data-date') as string,\r\n 10\r\n );\r\n });\r\n\r\n if ((foundIndex > -1) && ((foundIndex + 7) < (calendarDates.length))) {\r\n calendarDates[foundIndex + 7].nativeElement.focus();\r\n }\r\n }\r\n\r\n clear(): void {\r\n this.selectedDate = null;\r\n }\r\n}\r\n","<div #calendarWidgetDiv\r\n cdkTrapFocus\r\n cdkTrapFocusAutoCapture\r\n class=\"particle_datepicker_options\"\r\n role=\"application\">\r\n <!-- month / year select -->\r\n <div class=\"content_color pad_5 pad_bot0\">\r\n <div class=\"row space_between\">\r\n <div class=\"col size_1 mar_5\">\r\n <select #yearSelect\r\n [ngModel]=\"_selectedYear | async\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n (change)=\"_selectedYear.next(+yearSelect.value)\"\r\n (keyup.escape)=\"closed.emit()\"\r\n class=\"access input sm content_color\"\r\n [attr.aria-label]=\"text.selectAYear\">\r\n <option *ngFor=\"let year of validYearRange$ | async\"\r\n [value]=\"year\">\r\n {{year}}\r\n </option>\r\n </select>\r\n </div>\r\n <div class=\"col size_2 mar_5\">\r\n <select #monthSelect\r\n [ngModel]=\"_selectedMonth | async\"\r\n (change)=\"_selectedMonth.next(+monthSelect.value)\"\r\n (keyup.escape)=\"closed.emit()\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n class=\"access input sm content_color\"\r\n [attr.aria-label]=\"text.selectAMonth\">\r\n <option value=\"0\">{{text.january}}</option>\r\n <option value=\"1\">{{text.february}}</option>\r\n <option value=\"2\">{{text.march}}</option>\r\n <option value=\"3\">{{text.april}}</option>\r\n <option value=\"4\">{{text.may}}</option>\r\n <option value=\"5\">{{text.june}}</option>\r\n <option value=\"6\">{{text.july}}</option>\r\n <option value=\"7\">{{text.august}}</option>\r\n <option value=\"8\">{{text.september}}</option>\r\n <option value=\"9\">{{text.october}}</option>\r\n <option value=\"10\">{{text.november}}</option>\r\n <option value=\"11\">{{text.december}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"content_color pad_5\">\r\n <!-- weekdays -->\r\n <div class=\"mar_5 mar_bot10\">\r\n <div class=\"row wrap space_between ptl_input_bg_color ptl_brdr_color border_bottom brad_3 mar_bot5\">\r\n <div class=\"particle_datepicker_weekday\">{{text.sundayAbbr}}</div>\r\n <div class=\"particle_datepicker_weekday\">{{text.mondayAbbr}}</div>\r\n <div class=\"particle_datepicker_weekday\">{{text.tuesdayAbbr}}</div>\r\n <div class=\"particle_datepicker_weekday\">{{text.wednesdayAbbr}}</div>\r\n <div class=\"particle_datepicker_weekday\">{{text.thursdayAbbr}}</div>\r\n <div class=\"particle_datepicker_weekday\">{{text.fridayAbbr}}</div>\r\n <div class=\"particle_datepicker_weekday\">{{text.saturdayAbbr}}</div>\r\n </div>\r\n <!-- days -->\r\n <div class=\"row wrap space_between\">\r\n <ng-container *ngFor=\"let dayInMonth of fullMonth$ | async\">\r\n <div [ngClass]=\"{'today': (dayInMonth.date === currentDate.date && dayInMonth.month === currentDate.month && dayInMonth.year === currentDate.year)}\"\r\n class=\"particle_datepicker_day\">\r\n <ng-container *ngIf=\"dayInMonth.selectable else disabledDate\">\r\n <button #calendarDate\r\n (click)=\"handleDateSelection(dayInMonth)\"\r\n (keyup.escape)=\"closed.emit()\"\r\n [attr.data-date]=\"dayInMonth.date\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n [attr.aria-label]=\"text.select + ' ' + weekDays[dayInMonth.day] + ' ' + text.the + ' ' + (dayInMonth.date | ordinalNumber)\"\r\n [ngClass]=\"{\r\n 'ok_button_color': (dayInMonth.date === selectedDate?.date && dayInMonth.month === selectedDate?.month && dayInMonth.year === selectedDate?.year),\r\n 'bg_overlay_rev brdr hov_bg': (dayInMonth.date !== selectedDate?.date || dayInMonth.month !== selectedDate?.month || dayInMonth.year !== selectedDate?.year)\r\n }\"\r\n class=\"access day_button\">\r\n {{dayInMonth.date}}\r\n </button>\r\n </ng-container>\r\n <ng-template #disabledDate>\r\n <div class=\"day_disabled\">\r\n {{dayInMonth.date}}\r\n </div>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"showControls\">\r\n <div class=\"bg_overlay brdr hr mar_5\"></div>\r\n <div class=\"row space_between\">\r\n <ng-container *ngIf=\"currentDate.selectable\">\r\n <button *ngIf=\"(currentDate.date === selectedDate?.date && currentDate.month === selectedDate?.month && currentDate.year === selectedDate?.year) else selectTodayButton\"\r\n disabled\r\n class=\"access btn sm bg_overlay_rev brdr hov_bg mar_5\"\r\n [attr.aria-label]=\"text.resetDateToToday\">\r\n <span class=\"text bold\">{{text.selectToday}}</span>\r\n </button>\r\n <ng-template #selectTodayButton>\r\n <button (keyup.escape)=\"closed.emit()\"\r\n (click)=\"selectToday()\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n class=\"access btn sm bg_overlay_rev brdr hov_bg mar_5\"\r\n [attr.aria-label]=\"text.resetDateToToday\">\r\n <span class=\"text bold\">{{text.selectToday}}</span>\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n <button #doneButton\r\n (keyup.escape)=\"closed.emit()\"\r\n (click)=\"closed.emit()\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n class=\"access btn sm bg_overlay_rev brdr mar_5 hov_bg\"\r\n [attr.aria-label]=\"text.saveDate\">\r\n <i class=\"fas fa-check mar_right5\"></i><span class=\"text bold\">{{text.done}}</span>\r\n </button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n","import { animate, AnimationEvent, style, transition, trigger } from '@angular/animations';\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef, HostListener,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n Renderer2,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { format, isEqual, isValid, isWithinInterval, parse } from 'date-fns';\r\nimport {DatePickerText} from '../../shared/models/particle-component-text.model';\r\nimport {PopoverComponent} from '../popover/popover.component';\r\n\r\n/**\r\n * Component to allow a user to input/select a date\r\n */\r\n@Component({\r\n selector: 'particle-date-picker',\r\n templateUrl: './date-picker.component.html',\r\n styleUrls: ['./date-picker.component.css'],\r\n animations: [\r\n trigger('openClose', [\r\n transition('void => open', [\r\n style({ transform: 'scaleY(0.5)', opacity: 0 }),\r\n animate('200ms ease',\r\n style({ transform: 'scaleY(1)', opacity: 1 }))\r\n ]),\r\n transition('open => close', [\r\n style({ transform: 'scaleY(1)', opacity: 1 }),\r\n animate('200ms ease',\r\n style({ transform: 'scaleY(0.5)', opacity: 0 }))\r\n ]),\r\n ])\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DatePickerComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class DatePickerComponent implements ControlValueAccessor, OnDestroy, OnInit {\r\n\r\n /**\r\n * Allowed keys for date input\r\n */\r\n private static readonly ALLOWED_KEYS = [\r\n '0', '1', '2', '3', '4', '5', '6', '7',\r\n '8', '9', 'Tab', 'Enter', '/', 'ArrowLeft',\r\n 'ArrowUp', 'ArrowRight', 'ArrowDown',\r\n 'ShiftLeft', 'ShiftRight', 'Backspace',\r\n 'Delete'\r\n ];\r\n\r\n /**\r\n * Matches YYYY-MM-DD\r\n * @private\r\n */\r\n private static readonly BROWSER_DATE_PICKER_FORMAT = new RegExp('^\\\\d\\\\d\\\\d\\\\d-\\\\d\\\\d-\\\\d\\\\d$');\r\n\r\n /**\r\n * Matches MM/DD/YYYY\r\n * @private\r\n */\r\n private static readonly FULL_DATE_FORMAT = new RegExp('^\\\\d\\\\d\\\\/\\\\d\\\\d\\\\/\\\\d\\\\d\\\\d\\\\d$');\r\n\r\n /**\r\n * Matches M/D/YYYY\r\n * @private\r\n */\r\n private static readonly SHORT_DATE_FORMAT = new RegExp('^\\\\d\\\\/\\\\d\\\\/\\\\d\\\\d\\\\d\\\\d$');\r\n\r\n /**\r\n * Matches M/DD/YYYY\r\n * @private\r\n */\r\n private static readonly SHORT_MONTH_DATE_FORMAT = new RegExp('^\\\\d\\\\/\\\\d\\\\d\\\\/\\\\d\\\\d\\\\d\\\\d$');\r\n\r\n /**\r\n * Matches MM/D/YYYY\r\n * @private\r\n */\r\n private static readonly SHORT_DAY_DATE_FORMAT = new RegExp('^\\\\d\\\\d\\\\/\\\\d\\\\/\\\\d\\\\d\\\\d\\\\d$');\r\n\r\n /**\r\n * A reference date with all fields set to 0\r\n * @private\r\n */\r\n private static readonly referenceDate = new Date(0, 0, 0, 0, 0, 0, 0);\r\n\r\n /**\r\n * Value input setter\r\n */\r\n @Input()\r\n set value(value: Date) {\r\n if (!value) {\r\n this._value = null as any;\r\n this.dateString = null as any;\r\n this.mobileDateString = null as any;\r\n } else if (!isEqual(value, this._value)) {\r\n this._value = value;\r\n this.dateString = this.dateString = DatePickerComponent.parseDate(value);\r\n this.setMobileValue();\r\n }\r\n }\r\n\r\n @Input()\r\n set disabled(disabled: boolean) {\r\n this._disabled = coerceBooleanProperty(disabled);\r\n }\r\n\r\n @Input()\r\n set dateRange(dateRange: { minDate: Date, maxDate: Date }) {\r\n if (dateRange?.minDate > dateRange?.maxDate) {\r\n throw new Error('Min date must be less than max date');\r\n }\r\n\r\n const year = this.currentDate.getFullYear();\r\n this.validSelectionInterval = {\r\n start: dateRange?.minDate ?? new Date(year - 100, 0, 1),\r\n end: dateRange?.maxDate ?? new Date(year + 50, 11, 31)\r\n };\r\n }\r\n\r\n /**\r\n * The ID to set on the input\r\n */\r\n @Input()\r\n inputId: string = null as any;\r\n\r\n /**\r\n * Value to use as the date picker input's aria label\r\n */\r\n @Input()\r\n ariaLabel = 'Date';\r\n\r\n /**\r\n * Optional class-list to add to the date picker input\r\n */\r\n @Input()\r\n inputClassList = null as any;\r\n\r\n /**\r\n * Optional class-list to add to the calendar button\r\n */\r\n @Input()\r\n calendarButtonClassList = '';\r\n\r\n /**\r\n * Close the picker when a selection is made\r\n */\r\n @Input()\r\n closeOnSelect: boolean = true;\r\n\r\n /**\r\n * Placeholder override\r\n */\r\n @Input()\r\n placeholder = 'mm/dd/yyyy';\r\n\r\n @Input()\r\n inputOnly = false;\r\n\r\n private _text: DatePickerText = {\r\n enterInFormat: 'enter in format',\r\n openCalendar: 'Open the calendar'\r\n } as DatePickerText;\r\n\r\n @Input()\r\n set text(text: DatePickerText) {\r\n if (text) {\r\n this._text = text;\r\n }\r\n }\r\n\r\n get text(): DatePickerText {\r\n return this._text;\r\n }\r\n\r\n /**\r\n * Event emitted on date picker input\r\n */\r\n @Output()\r\n // eslint-disable-next-line @angular-eslint/no-output-native\r\n input = new EventEmitter<void>();\r\n\r\n /**\r\n * Event emitted on valid date selection/input\r\n */\r\n @Output()\r\n dateSelected = new EventEmitter<Date>();\r\n\r\n /**\r\n * ViewChild of the date picker div\r\n */\r\n @ViewChild('datePickerDiv')\r\n datePickerDiv: ElementRef<HTMLDivElement> = null as any;\r\n\r\n /**\r\n * ViewChild of the calendar div\r\n */\r\n @ViewChild('calendarDiv')\r\n calendarDiv: ElementRef<HTMLDivElement> = null as any;\r\n\r\n @ViewChild('calendarPopover')\r\n calendarPopover: PopoverComponent = null as any;\r\n\r\n /**\r\n * The current date\r\n */\r\n private readonly currentDate = new Date();\r\n\r\n /**\r\n * The fixed height of the calendar widget\r\n */\r\n private readonly calendarHeight = 340;\r\n\r\n /**\r\n * The fixed width of the calendar widget\r\n */\r\n private readonly calendarWidth = 300;\r\n\r\n /**\r\n * The amount of padding to apply between the date picker input and the calendar widget\r\n */\r\n private readonly calendarPadding = 0;\r\n\r\n /**\r\n * String tracking date picker input\r\n */\r\n dateString = '';\r\n\r\n mobileDateString = '';\r\n\r\n /**\r\n * Whether to show the calendar\r\n */\r\n showCalendar: { currentValue: Date } = null as any;\r\n\r\n /**\r\n * In mobile (screen width is less than 768), swap to a native input\r\n */\r\n isMobile = window.innerWidth <= 768;\r\n\r\n /**\r\n * The valid selection interval\r\n * @private\r\n */\r\n validSelectionInterval = {\r\n start: new Date(this.currentDate.getFullYear() - 100, 0, 1),\r\n end: new Date(this.currentDate.getFullYear() + 50, 0, 1)\r\n };\r\n\r\n /**\r\n * The internal control accessor value\r\n * @private\r\n */\r\n private _value: Date = null as any;\r\n\r\n /**\r\n * The internal disabled state\r\n * @private\r\n */\r\n private _disabled = false;\r\n\r\n /**\r\n * Window resize unlisten function\r\n */\r\n private resizeListener: (() => void) | undefined;\r\n\r\n /**\r\n * Parse the input Date value into a string\r\n * @param value the value to parse\r\n * @private\r\n */\r\n private static parseDate(value: Date): string {\r\n return !value ? null as any : format(value, 'MM/dd/yyyy');\r\n }\r\n\r\n /**\r\n * Parse the input date string into a Date\r\n * @param dateString the string to parse\r\n * @private\r\n */\r\n private static parseDateString(dateString: string): Date {\r\n let parsedDate: Date;\r\n try {\r\n parsedDate = parse(dateString, DatePickerComponent.getDateFormat(dateString), this.referenceDate);\r\n } catch (e) {\r\n parsedDate = null as any;\r\n }\r\n\r\n return isValid(parsedDate) ? parsedDate : null as any;\r\n }\r\n\r\n /**\r\n * Get the date format that matches the input date string, null if no match\r\n * @param dateString the string to test\r\n * @private\r\n */\r\n private static getDateFormat(dateString: string): string {\r\n this.FULL_DATE_FORMAT.lastIndex = 0;\r\n this.SHORT_MONTH_DATE_FORMAT.lastIndex = 0;\r\n this.SHORT_DAY_DATE_FORMAT.lastIndex = 0;\r\n this.SHORT_DATE_FORMAT.lastIndex = 0;\r\n this.BROWSER_DATE_PICKER_FORMAT.lastIndex = 0;\r\n\r\n let dateFormat: string = null as any;\r\n if (this.FULL_DATE_FORMAT.test(dateString)) {\r\n dateFormat = 'MM/dd/yyyy';\r\n } else if (this.SHORT_MONTH_DATE_FORMAT.test(dateString)) {\r\n dateFormat = 'M/dd/yyyy';\r\n } else if (this.SHORT_DAY_DATE_FORMAT.test(dateString)) {\r\n dateFormat = 'MM/d/yyyy';\r\n } else if (this.SHORT_DATE_FORMAT.test(dateString)) {\r\n dateFormat = 'M/d/yyyy';\r\n } else if (this.BROWSER_DATE_PICKER_FORMAT.test(dateString)) {\r\n dateFormat ='yyyy-MM-dd';\r\n }\r\n\r\n return dateFormat;\r\n }\r\n\r\n /**\r\n * Function to call on change\r\n */\r\n onChange: (value: any) => void = () => {};\r\n\r\n /**\r\n * Function to call on touch\r\n */\r\n onTouched: () => any = () => {};\r\n\r\n /**\r\n * Dependency injection site\r\n * @param renderer the Angular renderer\r\n * @param changeDetectorRef the Angular change detector\r\n */\r\n constructor(private renderer: Renderer2, private changeDetectorRef: ChangeDetectorRef) { }\r\n\r\n /**\r\n * Value getter\r\n */\r\n get value(): Date {\r\n return DatePickerComponent.parseDateString(this.dateString);\r\n }\r\n\r\n /**\r\n * Disabled getter\r\n */\r\n get disabled(): boolean { return this._disabled; }\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onWindowResize(event: any): void {\r\n this.isMobile = event.target.innerWidth <= 768;\r\n }\r\n\r\n /**\r\n * Init component, set up window resize listener\r\n */\r\n ngOnInit(): void {\r\n this.resizeListener = this.renderer.listen(window, 'resize', () => {\r\n if (this.showCalendar) {\r\n this.setCalendarPosition();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Destroy component, invoke window resize unlisten function\r\n */\r\n ngOnDestroy(): void {\r\n if (this.resizeListener) {\r\n this.resizeListener();\r\n }\r\n }\r\n\r\n /**\r\n * Write value\r\n * @param value the value to write\r\n */\r\n writeValue(value: Date): void {\r\n if (value !== null && isWithinInterval(value, this.validSelectionInterval)) {\r\n this.value = value;\r\n } else {\r\n this.value = null as any;\r\n }\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Register control value accessor change function\r\n * @param fn the function to register\r\n */\r\n registerOnChange(fn: (value: any) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Register touch handler\r\n * @param fn the touch handler to register\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Set the disabled state\r\n * @param isDisabled whether or not the component should be disabled\r\n */\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Only allow input from digits, forward slashes, and navigation keys\r\n */\r\n filterInput(event: KeyboardEvent): void {\r\n const {key} = event;\r\n if (!DatePickerComponent.ALLOWED_KEYS.includes(key) && !event.ctrlKey) {\r\n event.preventDefault();\r\n }\r\n\r\n if (key === 'Enter') {\r\n setTimeout(() => this.openCalendar(), 0);\r\n }\r\n }\r\n\r\n /**\r\n * Clear value if no input, write parsed date if input requirements fulfilled\r\n */\r\n handleBlur(): void {\r\n try {\r\n this.updateModel(DatePickerComponent.parseDateString(this.dateString));\r\n } catch (e) {\r\n this.updateModel(null as any);\r\n }\r\n }\r\n\r\n /**\r\n * Write on input if valid date within interval\r\n */\r\n handleInput(): void {\r\n try {\r\n const parsedDate = DatePickerComponent.parseDateString(this.dateString);\r\n if (parsedDate !== null && isWithinInterval(parsedDate, this.validSelectionInterval)) {\r\n this.updateModel(parsedDate);\r\n }\r\n } catch (e) { }\r\n\r\n this.input.emit();\r\n }\r\n\r\n handleMobileInput(): void {\r\n this.dateString = this.mobileDateString;\r\n this.handleInput();\r\n }\r\n\r\n setMobileValue(): void {\r\n if (this.value) {\r\n const offset = this.value.getTimezoneOffset();\r\n const dateForFormatting = new Date(this.value.getTime() - (offset * 60 * 1000));\r\n this.mobileDateString = dateForFormatting.toISOString().split('T')[0];\r\n }\r\n }\r\n\r\n /**\r\n * Update the model value\r\n * @param value the value to update the model to\r\n */\r\n updateModel(value: Date): void {\r\n const valueBeforeUpdate = this._value;\r\n\r\n if (!this.disabled) {\r\n if (value !== null && isWithinInterval(value, this.validSelectionInterval)) {\r\n this.value = value;\r\n\r\n if (!isEqual(this.value, valueBeforeUpdate)) {\r\n this.dateSelected.emit(value);\r\n\r\n if (this.closeOnSelect) {\r\n setTimeout(() => this.handleCalendarClose(), 200);\r\n }\r\n }\r\n } else {\r\n this.value = null as any;\r\n }\r\n\r\n if (!isEqual(this.value, valueBeforeUpdate)) {\r\n this.onChange(this.value);\r\n this.setMobileValue();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Open the calendar widget\r\n * @param event the click MouseEvent\r\n */\r\n openCalendar(event?: MouseEvent): void {\r\n if (event) {\r\n event.stopImmediatePropagation();\r\n }\r\n\r\n this.showCalendar = { currentValue: this.value };\r\n this.calendarPopover.toggle(event);\r\n }\r\n\r\n /**\r\n * Hide calendar overlay and remove calendar from the DOM\r\n */\r\n handleCalendarClose(): void {\r\n this.showCalendar = null as any;\r\n if (this.calendarPopover) {\r\n this.calendarPopover.close();\r\n }\r\n }\r\n\r\n /**\r\n * Calculate and set the calendar's position based on the screen height.\r\n * Positioning prefers to open at the bottom, if not enough room on bottom,\r\n * positioning is attempted at the top, otherwise it attempts to vertically\r\n * center\r\n */\r\n private setCalendarPosition(): void {\r\n const {left, top, bottom} = this.datePickerDiv.nativeElement.getBoundingClientRect();\r\n const datePickerBottomLeftAnchor = bottom;\r\n const availableBottomSpace = window.innerHeight - datePickerBottomLeftAnchor;\r\n const availableTopSpace = top;\r\n const offsetCalendarHeight = this.calendarHeight + this.calendarPadding;\r\n let leftPosition: number, topPosition: number, transformOrigin: string;\r\n\r\n if (availableBottomSpace > offsetCalendarHeight) {\r\n transformOrigin = 'top left';\r\n topPosition = datePickerBottomLeftAnchor + this.calendarPadding;\r\n } else if (availableTopSpace > offsetCalendarHeight) {\r\n transformOrigin = 'bottom left';\r\n topPosition = top - offsetCalendarHeight;\r\n } else {\r\n transformOrigin = 'top left';\r\n\r\n if (this.calendarHeight > window.innerHeight) {\r\n topPosition = 0;\r\n } else {\r\n const availableSpace = window.innerHeight - this.calendarHeight;\r\n topPosition = availableSpace / 2;\r\n }\r\n }\r\n\r\n leftPosition = left;\r\n if ((left + this.calendarWidth) > window.innerWidth) {\r\n leftPosition = left - ((left + this.calendarWidth) - window.innerWidth) - 10;\r\n }\r\n\r\n this.renderer.setStyle(this.calendarDiv.nativeElement, 'transform-origin', transformOrigin);\r\n this.renderer.setStyle(this.calendarDiv.nativeElement, 'left', `${leftPosition}px`);\r\n this.renderer.setStyle(this.calendarDiv.nativeElement, 'top', `${topPosition}px`);\r\n }\r\n}\r\n","<ng-container *ngIf=\"!isMobile else mobile\">\r\n <div #datePickerDiv\r\n style=\"overflow: hidden;\"\r\n [style.filter]=\"disabled ? 'brightness(.95)' : ''\"\r\n [ngClass]=\"inputClassList ? '' : 'row ptl_input ptl_input_height ptl_input_bg_color ptl_brdr_color ptl_brdr_size ptl_brdr_radius ent_r2l_dir'\"\r\n >\r\n <div class=\"col size_1 height100 width100\">\r\n <input #dateInput\r\n [(ngModel)]=\"dateString\"\r\n [id]=\"inputId\"\r\n (keydown)=\"filterInput($event)\"\r\n (input)=\"handleInput()\"\r\n (blur)=\"onTouched(); handleBlur()\"\r\n type=\"text\"\r\n [placeholder]=\"placeholder\"\r\n maxlength=\"10\"\r\n [attr.aria-label]=\"ariaLabel + ', ' + text.enterInFormat + ' mm/dd/yyyy'\"\r\n [disabled]=\"disabled\"\r\n [ngClass]=\"inputClassList ? inputClassList : 'ptl_input_text_size ptl_input_padding border_none'\"\r\n style=\"outline-offset: -2px;\"\r\n class=\"access height100 width100\"/>\r\n </div>\r\n <div class=\"col center_center min_w50 height100 ptl_brdr_color border_left\" *ngIf=\"!inputOnly\">\r\n <button type=\"button\"\r\n (click)=\"openCalendar($event)\"\r\n [disabled]=\"disabled\"\r\n [ngClass]=\"calendarButtonClassList ? calendarButtonClassList : 'clear'\"\r\n class=\"access btnset center_center height100 width100\"\r\n style=\"outline-offset: -2px;\"\r\n [attr.aria-label]=\"text.openCalendar\" aria-haspopup=\"dialog\">\r\n <i class=\"fas fa-calendar-day\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- calendar widget -->\r\n <particle-popover [targetOverride]=\"dateInput\" #calendarPopover>\r\n <particle-calendar [value]=\"showCalendar ? showCalendar.currentValue : $any(null)\"\r\n [text]=\"$any(text.calendarText)\"\r\n [dateRange]=\"{ minDate: validSelectionInterval.start!, maxDate: validSelectionInterval.end! }\"\r\n (selected)=\"updateModel($event)\"\r\n (closed)=\"handleCalendarClose()\">\r\n </particle-calendar>\r\n </particle-popover>\r\n</ng-container>\r\n\r\n<ng-template #mobile>\r\n <div style=\"overflow: hidden;\"\r\n [style.filter]=\"disabled ? 'brightness(.95)' : ''\"\r\n [ngClass]=\"inputClassList ? '' : 'ptl_input ptl_input_height ptl_input_bg_color ptl_brdr_color ptl_brdr_size ptl_brdr_radius'\"\r\n >\r\n <div class=\"col size_1 height100 width100\">\r\n <input [(ngModel)]=\"mobileDateString\"\r\n [id]=\"inputId\"\r\n (input)=\"handleMobileInput()\"\r\n (blur)=\"onTouched()\"\r\n type=\"date\"\r\n [placeholder]=\"placeholder\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [disabled]=\"disabled\"\r\n [ngClass]=\"inputClassList ? inputClassList : 'ptl_input_text_size ptl_input_padding border_none'\"\r\n style=\"outline-offset: -2px;\"\r\n class=\"access height100 width100\"/>\r\n </div>\r\n </div>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OrdinalNumberPipe } from './ordinal-number.pipe';\n\n@NgModule({\n declarations: [OrdinalNumberPipe],\n imports: [\n CommonModule\n ],\n exports: [OrdinalNumberPipe]\n})\nexport class ParticleOrdinalNumberPipeModule { }\n","import {AfterViewInit, ChangeDetectorRef, Component, forwardRef, Input, ViewChild} from '@angular/core';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {BehaviorSubject, tap} from 'rxjs';\r\nimport {DateRangePickerText} from '../../../../shared/models/particle-component-text.model';\r\nimport {PopoverComponent} from '../../../popover/popover.component';\r\nimport {CalendarComponent} from '../calendar/calendar.component';\r\n\r\n@Component({\r\n selector: 'particle-date-range-picker',\r\n templateUrl: './date-range-picker.component.html',\r\n styleUrls: ['./date-range-picker.component.css'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DateRangePickerComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class DateRangePickerComponent implements ControlValueAccessor, AfterViewInit {\r\n\r\n currentYear = new Date().getFullYear();\r\n _disabled = false;\r\n\r\n private _value$ = new BehaviorSubject<any>(null);\r\n\r\n private _lastValue: any = null as any;\r\n private _init = false;\r\n\r\n valueObs$ = this._value$.asObservable().pipe(tap(\r\n value => {\r\n let newValue = {start: null, end: null};\r\n if (value && value.start && value.end) {\r\n newValue = {start: value.start, end: value.end};\r\n }\r\n\r\n if (newValue !== this._lastValue) {\r\n this._lastValue = newValue;\r\n\r\n if (this._init) {\r\n this.onChange(this._lastValue);\r\n }\r\n }\r\n }\r\n ));\r\n\r\n @Input()\r\n inputId: string = null as any;\r\n\r\n @Input()\r\n inputClassList = '';\r\n\r\n @Input()\r\n calendarButtonClassList = '';\r\n\r\n @Input()\r\n text: DateRangePickerText = {\r\n begin: 'Begin',\r\n end: 'End',\r\n done: 'Done',\r\n clear: 'Clear',\r\n openCalendar: 'Open Calendar',\r\n selectRange: 'Choose a Range'\r\n } as DateRangePickerText;\r\n\r\n @Input()\r\n set dateRange(value: {minDate: Date, maxDate: Date}) {\r\n this._dateRange = value;\r\n\r\n if (this.value && this.value.start) {\r\n this._endDateRange = {\r\n minDate: this.value.start,\r\n maxDate: value.maxDate\r\n };\r\n } else {\r\n this._endDateRange = value;\r\n }\r\n }\r\n\r\n get dateRange(): {minDate: Date, maxDate: Date} {\r\n return this._dateRange;\r\n }\r\n\r\n get endDateRange(): {minDate: Date, maxDate: Date} {\r\n return this._endDateRange;\r\n }\r\n\r\n private _dateRange = {\r\n minDate: new Date(this.currentYear - 100, 0, 1),\r\n maxDate: new Date(this.currentYear + 100, 11, 31)\r\n };\r\n\r\n private _endDateRange = {\r\n minDate: new Date(this.currentYear - 100, 0, 1),\r\n maxDate: new Date(this.currentYear + 100, 11, 31)\r\n }\r\n\r\n @Input()\r\n set value(value: { start: Date, end: Date }) {\r\n if (!value) {\r\n value = {start: null as any, end: null as any};\r\n }\r\n\r\n this._value$.next(value);\r\n\r\n if (value) {\r\n this.beginDate = value.start;\r\n }\r\n }\r\n\r\n get value(): {start: Date, end: Date} {\r\n return this._lastValue;\r\n }\r\n\r\n @Input()\r\n set disabled(disabled: boolean) {\r\n this._disabled = disabled;\r\n }\r\n\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n @Input()\r\n ariaLabel: string = null as any;\r\n\r\n /**\r\n * Format for the selected date range in the selection preview. Must\r\n * be a valid Angular DatePipe format\r\n */\r\n @Input()\r\n dateFormat = 'MM/dd/y';\r\n\r\n @ViewChild('calendarPopover')\r\n calendarPopover: PopoverComponent = null as any;\r\n\r\n @ViewChild('beginCalendar')\r\n beginCalendar: CalendarComponent = null as any;\r\n\r\n @ViewChild('endCalendar')\r\n endCalendar: CalendarComponent = null as any;\r\n\r\n ngAfterViewInit(): void {\r\n this._init = true;\r\n }\r\n\r\n get beginDate(): Date {\r\n if (this._value$.value) {\r\n return this._value$.value.start;\r\n }\r\n\r\n return null as any;\r\n }\r\n\r\n set beginDate(beginDate: Date) {\r\n let value = this._value$.value;\r\n value.start = beginDate;\r\n\r\n if (!beginDate && this.beginCalendar) {\r\n if (this.beginCalendar) {\r\n this.beginCalendar.clear();\r\n }\r\n }\r\n\r\n this._value$.next(value);\r\n\r\n if (!beginDate || beginDate > this.endDate) {\r\n this.endDate = null as any;\r\n }\r\n\r\n this._endDateRange = {\r\n minDate: beginDate,\r\n maxDate: this.dateRange.maxDate\r\n };\r\n }\r\n\r\n get endDate(): Date {\r\n if (this._value$.value) {\r\n return this._value$.value.end;\r\n }\r\n\r\n return null as any;\r\n }\r\n\r\n set endDate(endDate: Date) {\r\n if (this._value$.value && endDate < this._value$.value.start) {\r\n endDate = null as any;\r\n if (this.endCalendar) {\r\n this.endCalendar.clear();\r\n }\r\n }\r\n\r\n let value = this._value$.value;\r\n value.end = endDate;\r\n\r\n if (!endDate && this.endCalendar) {\r\n if (this.endCalendar) {\r\n this.endCalendar.clear();\r\n }\r\n }\r\n\r\n this._value$.next(value);\r\n }\r\n\r\n /**\r\n * Function to call on change\r\n */\r\n onChange: (value: any) => void = () => {};\r\n\r\n /**\r\n * Function to call on touch\r\n */\r\n onTouched: () => any = () => {};\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n\r\n }\r\n\r\n /**\r\n * Write value\r\n * @param value the value to write\r\n */\r\n writeValue(value: { start: Date, end: Date }): void {\r\n this.value = value;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Register function on change\r\n * @param fn the function to change\r\n */\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Register function on touch\r\n * @param fn the function to register\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Set disabled state\r\n * @param isDisabled whether or not the control is disabled\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n openCalendar(event: Event): void {\r\n if (!this.disabled) {\r\n this.calendarPopover.toggle(event);\r\n }\r\n }\r\n\r\n updateModel(isBegin: boolean, date: Date): void {\r\n if (isBegin) {\r\n this.beginDate = date;\r\n } else {\r\n this.endDate = date;\r\n }\r\n }\r\n\r\n checkState(): void {\r\n const val = this._value$.value;\r\n if (val && ((val.start > val.end) || !(val.start && val.end))) {\r\n this.clear();\r\n }\r\n }\r\n\r\n clear(): void {\r\n this.value = null as any;\r\n }\r\n\r\n}\r\n","<div style=\"cursor:default;overflow: hidden;\"\r\n [ngClass]=\"inputClassList ? '' : 'row ptl_input ptl_input_height ptl_input_bg_color ptl_brdr_color ptl_brdr_size ptl_brdr_radius ent_r2l_dir'\"\r\n [style.filter]=\"disabled ? 'brightness(.95)' : ''\">\r\n <button (click)=\"openCalendar($event)\"\r\n type=\"button\"\r\n aria-haspopup=\"dialog\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-label]=\"(ariaLabel ? ariaLabel + ', ' : '') + text.openCalendar\"\r\n [attr.aria-expanded]=\"calendarPopover.visible\"\r\n [ngClass]=\"inputClassList ? inputClassList : 'clear'\"\r\n class=\"access btnset width100 height100 center_center\"\r\n style=\"outline-offset: -2px;\"\r\n >\r\n <div class=\"col size_1 height100 width100 ptl_input_text_size ptl_input_padding v_center\">\r\n <ng-container *ngIf=\"valueObs$ | async as value\">\r\n <ng-container *ngIf=\"value.start && value.end else placeholderTemplate\">\r\n {{value.start | date: dateFormat}} - {{value.end | date: dateFormat}}\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #placeholderTemplate>\r\n <div class=\"ent_r2l_txt\">{{text.selectRange}}...</div>\r\n </ng-template>\r\n </div>\r\n <div class=\"col min_w50 height100 center_center border_left\"\r\n [ngClass]=\"calendarButtonClassList ? calendarButtonClassList : 'bg_overlay ptl_brdr_color ptl_input_text_size'\">\r\n <div class=\"width100 height100 center_center\">\r\n <i class=\"fas fa-calendar-days ptl_input_text_size\"></i>\r\n </div>\r\n </div>\r\n </button>\r\n</div>\r\n\r\n<particle-popover (closed)=\"checkState()\" #calendarPopover>\r\n <div class=\"width100 space_between\">\r\n <div>\r\n <div class=\"pad_10 pad_bot0\">\r\n <div>{{text.begin}}:</div>\r\n <div>\r\n <particle-date-picker\r\n inputClassList=\"access input sm content_color\"\r\n [inputOnly]=\"true\"\r\n [(ngModel)]=\"beginDate\"\r\n [dateRange]=\"dateRange\">\r\n </particle-date-picker>\r\n </div>\r\n </div>\r\n <particle-calendar [value]=\"beginDate\"\r\n [text]=\"$any(text.calendarText)\"\r\n [dateRange]=\"dateRange\"\r\n [showControls]=\"false\"\r\n class=\"hide_element\"\r\n (selected)=\"updateModel(true, $event)\"\r\n #beginCalendar>\r\n </particle-calendar>\r\n </div>\r\n <div>\r\n <div class=\"pad_10 pad_bot0\">\r\n <div>{{text.end}}:</div>\r\n <div>\r\n <particle-date-picker\r\n inputClassList=\"access input sm content_color\"\r\n [inputOnly]=\"true\"\r\n [dateRange]=\"endDateRange\"\r\n [(ngModel)]=\"endDate\">\r\n </particle-date-picker>\r\n </div>\r\n </div>\r\n <particle-calendar [value]=\"endDate\"\r\n [text]=\"$any(text.calendarText)\"\r\n [dateRange]=\"endDateRange\"\r\n [showControls]=\"false\"\r\n class=\"hide_element\"\r\n (selected)=\"updateModel(false, $event)\"\r\n #endCalendar>\r\n </particle-calendar>\r\n <div class=\"mobile_only pad_bot10\"></div>\r\n </div>\r\n </div>\r\n <div class=\"bg_overlay brdr hr mar_5 mar_top0\"></div>\r\n <div class=\"row space_between\">\r\n <button (click)=\"clear()\"\r\n class=\"access btn sm bg_overlay_rev brdr mar_5 hov_bg\"\r\n [attr.aria-label]=\"text.clear\">\r\n <i class=\"fas fa-x mar_right5\"></i><span class=\"text bold\">{{text.clear}}</span>\r\n </button>\r\n\r\n <button (keyup.escape)=\"calendarPopover.close()\"\r\n (click)=\"calendarPopover.close()\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n class=\"access btn sm bg_overlay_rev brdr mar_5 hov_bg\"\r\n [attr.aria-label]=\"text.done\">\r\n <i class=\"fas fa-check mar_right5\"></i><span class=\"text bold\">{{text.done}}</span>\r\n </button>\r\n </div>\r\n</particle-popover>\r\n\r\n","import {A11yModule} from '@angular/cdk/a11y';\r\nimport {CommonModule} from '@angular/common';\r\nimport {NgModule} from '@angular/core';\r\nimport {FormsModule} from '@angular/forms';\r\nimport {BrowserAnimationsModule} from '@angular/platform-browser/animations';\r\nimport {CalendarComponent} from './components/calendar/calendar.component';\r\nimport {DatePickerComponent} from './date-picker.component';\r\nimport {OrdinalNumberPipe} from '../ordinal-number-pipe/ordinal-number.pipe';\r\nimport {ParticleOrdinalNumberPipeModule} from '../ordinal-number-pipe/ordinal-number-pipe.module';\r\nimport {DateRangePickerComponent} from './components/date-range-picker/date-range-picker.component';\r\nimport {ParticlePopoverModule} from '../popover/popover.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n DatePickerComponent,\r\n CalendarComponent,\r\n DateRangePickerComponent\r\n ],\r\n imports: [\r\n A11yModule,\r\n BrowserAnimationsModule,\r\n CommonModule,\r\n FormsModule,\r\n ParticleOrdinalNumberPipeModule,\r\n ParticlePopoverModule\r\n ],\r\n exports: [\r\n DatePickerComponent,\r\n CalendarComponent,\r\n DateRangePickerComponent\r\n ],\r\n providers: [OrdinalNumberPipe]\r\n})\r\nexport class ParticleDatePickerModule {\r\n}\r\n","import { animate, AnimationEvent, style, transition, trigger } from '@angular/animations';\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChild,\r\n ElementRef,\r\n EventEmitter, forwardRef,\r\n HostListener,\r\n Input,\r\n Output,\r\n QueryList,\r\n Renderer2,\r\n TemplateRef,\r\n ViewChild,\r\n ViewChildren\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport {BehaviorSubject, Observable} from 'rxjs';\r\nimport {map, withLatestFrom} from 'rxjs/operators';\r\nimport {DropdownOption} from './models/dropdown-option.model';\r\nimport {DropdownOptionGroup} from './models/dropdown-option-group.model';\r\nimport {DropdownText} from '../../shared/models/particle-component-text.model';\r\n\r\n/**\r\n * Type representing the dropdown component option input\r\n */\r\ndeclare type DropdownOptionInput = Array<DropdownOption | DropdownOptionGroup>;\r\n\r\n/**\r\n * Dropdown component\r\n */\r\n@Component({\r\n selector: 'particle-dropdown',\r\n templateUrl: './dropdown.component.html',\r\n styleUrls: ['./dropdown.component.css'],\r\n animations: [\r\n trigger('openClose', [\r\n transition('close => open', [\r\n style({ transform: 'scaleY(0.5)', opacity: 0 }),\r\n animate('200ms ease',\r\n style({ transform: 'scaleY(1)', opacity: 1 }))\r\n ]),\r\n transition('open => close', [\r\n style({ transform: 'scaleY(1)', opacity: 1 }),\r\n animate('200ms ease',\r\n style({ transform: 'scaleY(0.5)', opacity: 0 }))\r\n ]),\r\n ])\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DropdownComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class DropdownComponent implements ControlValueAccessor {\r\n\r\n /**\r\n * Set the value of the dropdown\r\n * @param value the value to set\r\n */\r\n @Input()\r\n set value(value: string | number) {\r\n this._value = value;\r\n this._internalValue.next(value);\r\n\r\n this.setSelectionIndex();\r\n }\r\n\r\n get value(): string | number {\r\n return this._value;\r\n }\r\n\r\n /**\r\n * The dropdown options/option groups\r\n */\r\n @Input()\r\n set options(options: DropdownOptionInput) {\r\n this._options.next(DropdownComponent.sanitizeOptionInput(options));\r\n this._allOptions = DropdownComponent.getAllOptions(this._options.value);\r\n this.setSelectionIndex();\r\n }\r\n\r\n /**\r\n * Dependency injection site\r\n * @param renderer the Angular renderer\r\n * @param changeDetectorRef reference to the Angular change detector\r\n */\r\n constructor(private renderer: Renderer2, private changeDetectorRef: ChangeDetectorRef) {\r\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\r\n let result = '';\r\n\r\n for (let i = 0; i < 10; i++) {\r\n result += characters.charAt(Math.floor(Math.random() * characters.length));\r\n }\r\n\r\n this.dropdownId = `dropdown-${result}${new Date().getTime()}`;\r\n }\r\n\r\n /**\r\n * The amount of offset (in pixels) to place between the dropdown\r\n * and its list overlay\r\n * @private\r\n */\r\n private static readonly DROPDOWN_LIST_OFFSET = 0;\r\n\r\n /**\r\n * List of arrow key keycodes\r\n * @private\r\n */\r\n private static readonly ARROW_KEYS = ['ArrowLeft', 'ArrowUp', 'ArrowRight', 'ArrowDown'];\r\n\r\n /**\r\n * ViewChild of the dropdown\r\n */\r\n @ViewChild('dropdown')\r\n dropdown: ElementRef<HTMLDivElement> = null as any;\r\n\r\n /**\r\n * ViewChild of the dropdown button\r\n */\r\n @ViewChild('dropdownButton')\r\n dropdownButton: ElementRef<HTMLButtonElement> = null as any;\r\n\r\n /**\r\n * ViewChild of the dropdown list\r\n */\r\n @ViewChild('dropdownList')\r\n dropdownList: ElementRef<HTMLDivElement> = null as any;\r\n\r\n /**\r\n * QueryList of dropdown option ViewChildren\r\n */\r\n @ViewChildren('dropdownOption')\r\n dropdownOptions: QueryList<ElementRef<HTMLButtonElement>> = null as any;\r\n\r\n /**\r\n * ContentChild of the dropdown option template\r\n */\r\n @ContentChild(TemplateRef)\r\n template: TemplateRef<HTMLElement> = null as any;\r\n\r\n /**\r\n * Whether the dropdown should be disabled\r\n */\r\n @Input()\r\n disabled: boolean = false;\r\n\r\n @Input()\r\n text: DropdownText = {\r\n placeholder: 'Make a selection'\r\n }\r\n\r\n /**\r\n * Class list to assign to the dropdown\r\n */\r\n @Input()\r\n classList: string = null as any;\r\n\r\n @Input()\r\n buttonClassList: string = null as any;\r\n\r\n /**\r\n * Event emitted on value change, emits the new value\r\n */\r\n @Output()\r\n // eslint-disable-next-line @angular-eslint/no-output-native\r\n change = new EventEmitter<string | number>();\r\n\r\n /**\r\n * BehaviorSubject tracking the input dropdown options/option groups\r\n */\r\n readonly _options = new BehaviorSubject<DropdownOptionInput>(null as any);\r\n\r\n /**\r\n * Full list of all active options, whether they are in a group or not\r\n * @private\r\n */\r\n private _allOptions: Array<DropdownOption> = null as any;\r\n\r\n /**\r\n * Typeahead string while users are typing into the input field\r\n * @private\r\n */\r\n private _fullPredictiveTextString = '';\r\n\r\n /**\r\n * Timeout to clear the _fullPredictiveTextString after a user stops typing for a certain amount of time\r\n * @private\r\n */\r\n private _timeout = null as any;\r\n\r\n\r\n /**\r\n * BehaviorSubject tracking the current value of the dropdown\r\n */\r\n readonly _internalValue = new BehaviorSubject<number | string>(null as any);\r\n\r\n /**\r\n * Observable map of option value (stringified if a number) to data context\r\n */\r\n private readonly dataContextMap$: Observable<{ [value: string]: { [key: string]: unknown } }> = this._options.pipe(\r\n map(options => {\r\n let dataContextMap: { [value: string]: { [key: string]: unknown } } = null as any;\r\n\r\n if (!!options?.length) {\r\n dataContextMap = {};\r\n\r\n for (const option of options) {\r\n if ('options' in option) {\r\n for (const groupOption of option.options) {\r\n dataContextMap[String(groupOption.value)] = JSON.parse(JSON.stringify(groupOption.dataContext));\r\n }\r\n } else if ('dataContext' in option) {\r\n dataContextMap[String(option.value)] = JSON.parse(JSON.stringify(option.dataContext));\r\n }\r\n }\r\n }\r\n\r\n return dataContextMap;\r\n })\r\n );\r\n\r\n /**\r\n * The data context of the selected option as an Observable\r\n */\r\n readonly selectedDataContext$: Observable<{ [key: string]: unknown }> = this._internalValue.pipe(\r\n withLatestFrom(this.dataContextMap$),\r\n map(([value, dataContextMap]) => {\r\n let dataContext: { [key: string]: unknown } = null as any;\r\n\r\n if (value !== null && dataContextMap !== null) {\r\n const entry = dataContextMap[String(value)];\r\n\r\n if (!!entry) {\r\n dataContext = JSON.parse(JSON.stringify(entry));\r\n }\r\n }\r\n\r\n return dataContext;\r\n })\r\n );\r\n\r\n private static getAllOptions(options: DropdownOptionInput): Array<DropdownOption> {\r\n const allOptions: Array<DropdownOption> = [];\r\n for (const option of options) {\r\n if (option.type === 'group') {\r\n for (const groupOption of option.options) {\r\n if (!groupOption.disabled) {\r\n allOptions.push(groupOption);\r\n }\r\n }\r\n } else if (option.type === 'option' && !option.disabled) {\r\n allOptions.push(option as DropdownOption);\r\n }\r\n }\r\n\r\n return allOptions;\r\n }\r\n\r\n /**\r\n * Unique ID to assign to the dropdown\r\n */\r\n readonly dropdownId;\r\n\r\n /**\r\n * Whether the dropdown should be rendered\r\n */\r\n render = false;\r\n\r\n /**\r\n * Whether the dropdown is open\r\n */\r\n opened = false;\r\n\r\n /**\r\n * The index of the focused option in the dropdown list\r\n */\r\n selectionIndex: number = null as any;\r\n\r\n /**\r\n * In mobile (screen width is less than 768), swap to a native input\r\n */\r\n isMobile = window.innerWidth <= 768;\r\n\r\n /**\r\n * The current value of the dropdown\r\n * @private\r\n */\r\n private _value: string | number = null as any;\r\n\r\n /**\r\n * Removes options that do not have both a label and a value,\r\n * also removes empty groups (or groups that have no valid options)\r\n * @param options the options to sanitize\r\n * @private\r\n */\r\n private static sanitizeOptionInput(options: DropdownOptionInput): DropdownOptionInput {\r\n const sanitizedOptions: DropdownOptionInput = [];\r\n\r\n for (const option of options) {\r\n if (('groupLabel' in option) && ('options' in option)) {\r\n const validOptions: Array<DropdownOption> = [];\r\n for (const groupOption of (option.options ?? [])) {\r\n if (!!groupOption.label && (!!groupOption.value || (+groupOption.value >= 0))) {\r\n const groupOptionCopy = JSON.parse(JSON.stringify(groupOption));\r\n groupOptionCopy.dataContext = this.addLabelToDataContext(groupOptionCopy.label, groupOptionCopy.dataContext);\r\n groupOptionCopy.type = 'group';\r\n\r\n validOptions.push(groupOptionCopy);\r\n }\r\n }\r\n\r\n if (!!validOptions.length) {\r\n sanitizedOptions.push({ groupLabel: option.groupLabel, options: validOptions, type: 'group' });\r\n }\r\n } else if (('label' in option) && ('value' in option)) {\r\n if (!!option.label && (!!option.value || (+option.value >= 0))) {\r\n const optionCopy = JSON.parse(JSON.stringify(option));\r\n optionCopy.dataContext = this.addLabelToDataContext(optionCopy.label, optionCopy.dataContext);\r\n optionCopy.type = 'option';\r\n\r\n sanitizedOptions.push(optionCopy);\r\n }\r\n }\r\n }\r\n\r\n return sanitizedOptions;\r\n }\r\n\r\n /**\r\n * Add option label to data context if not present. If $implicit\r\n * value is not present, it will be added with the label as its value.\r\n * If $implicit is already present, it will add a label key to the context\r\n * @param label the option label\r\n * @param dataContext the option data context\r\n * @private\r\n */\r\n private static addLabelToDataContext(label: string, dataContext: { [key: string]: unknown }): { [key: string]: unknown } {\r\n if (!dataContext) {\r\n dataContext = {};\r\n }\r\n\r\n if (!!label) {\r\n const implicitValue = dataContext['$implicit'];\r\n\r\n if (!!implicitValue || implicitValue as number >= 0) {\r\n const labelExists = !!dataContext['label'];\r\n\r\n if (!labelExists) {\r\n dataContext['label'] = label;\r\n }\r\n } else {\r\n dataContext['$implicit'] = label;\r\n }\r\n }\r\n\r\n return dataContext;\r\n }\r\n\r\n /**\r\n * Function to call on change\r\n */\r\n onChange: (value: any) => void = () => {};\r\n\r\n /**\r\n * Function to call on touch\r\n */\r\n onTouched: () => any = () => {};\r\n\r\n /**\r\n * Write value\r\n * @param value the value to write\r\n */\r\n writeValue(value: string | number): void {\r\n this.value = value;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Register function on change\r\n * @param fn the function to register\r\n */\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Register function on touch\r\n * @param fn the function to register\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Set the disabled state\r\n * @param isDisabled disabled or not\r\n */\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Reposition and resize the dropdown on window resize\r\n */\r\n @HostListener('window:resize', ['$event'])\r\n onWindowResize(event: any): void {\r\n this.isMobile = event.target.innerWidth <= 768;\r\n\r\n if (this.opened) {\r\n this.positionDropdownList();\r\n this.resizeDropdownList();\r\n }\r\n }\r\n\r\n /**\r\n * Prevent default behavior for arrow key keydown event\r\n * @param event the keydown KeyboardEvent\r\n */\r\n @HostListener('window:keydown', ['$event'])\r\n onKeyDown(event: KeyboardEvent): void {\r\n if (document.activeElement?.id?.includes(this.dropdownId) && !this.disabled) {\r\n const { key } = event;\r\n\r\n if (DropdownComponent.ARROW_KEYS.includes(key)) {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Close the dropdown list on tab and handle arrow key navigation\r\n * @param event the keyup KeyboardEvent\r\n */\r\n @HostListener('window:keyup', ['$event'])\r\n onKeyUp(event: KeyboardEvent): void {\r\n if (document.activeElement?.id?.includes(this.dropdownId) && !this.disabled) {\r\n const {key} = event;\r\n\r\n if (DropdownComponent.ARROW_KEYS.includes(key)) {\r\n this.onArrowKeyUp(key);\r\n } else if (key === 'Tab') {\r\n this.closeDropdown();\r\n } else {\r\n this._fullPredictiveTextString += key;\r\n if (this._timeout) {\r\n clearTimeout(this._timeout);\r\n }\r\n\r\n this._timeout = setTimeout(() => this._fullPredictiveTextString = '', 500);\r\n\r\n const filteredOptions = this._allOptions.filter(option => {\r\n return option.label && option.label.toLowerCase().startsWith(this._fullPredictiveTextString.toLowerCase())\r\n });\r\n\r\n if (filteredOptions && filteredOptions.length > 0) {\r\n this.handleDropdownOptionSelect(filteredOptions[0].value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Close the dropdown list (if opened) on click if outside the list\r\n * @param event the click MouseEvent\r\n */\r\n @HostListener('window:click', ['$event'])\r\n onClick(event: MouseEvent): void {\r\n if (this.opened) {\r\n const {pageX, pageY} = event;\r\n\r\n if (pageX > 0 && pageY > 0) {\r\n const { left, right, top, bottom } = this.dropdownList.nativeElement.getBoundingClientRect();\r\n const xPositionValid = pageX >= left && pageX <= right;\r\n const yPositionValid = pageY >= top && pageY <= bottom;\r\n const shouldClose = !(xPositionValid && yPositionValid);\r\n\r\n if (shouldClose) {\r\n this.closeDropdown();\r\n this.dropdownButton.nativeElement.focus();\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Close dropdown on escape keyup and focus on dropdown button\r\n * @param event the keyup KeyboardEvent\r\n */\r\n onEscapeKeyUp(event: Event): void {\r\n if (this.opened) {\r\n event.stopImmediatePropagation();\r\n\r\n this.closeDropdown();\r\n this.dropdownButton.nativeElement.focus();\r\n }\r\n }\r\n\r\n /**\r\n * Set focus to dropdown option on mouse enter and update selected index\r\n * @param option the dropdown option to focus\r\n * @param index the index of the option to focus\r\n */\r\n onDropdownOptionMouseEnter(option: HTMLButtonElement, index: number): void {\r\n this.selectionIndex = index;\r\n option.focus();\r\n }\r\n\r\n /**\r\n * Set focus to dropdown option on mouse move and update selected index\r\n * @param option the dropdown option to focus\r\n * @param index the index of the option to focus\r\n */\r\n onDropdownOptionMouseMove(option: HTMLButtonElement, index: number): void {\r\n if (this.selectionIndex !== index) {\r\n this.selectionIndex = index;\r\n option.focus();\r\n }\r\n }\r\n\r\n /**\r\n * Write value and close dropdown on option select\r\n * @param value the value to write\r\n * @param disabled whether or not the selected option is disabled\r\n */\r\n onDropdownOptionSelect(value: string | number, disabled: boolean): void {\r\n if (!disabled) {\r\n this.handleDropdownOptionSelect(value);\r\n this.closeDropdown();\r\n this.dropdownButton.nativeElement.focus();\r\n }\r\n }\r\n\r\n /**\r\n * Open the dropdown list and align it\r\n * @param event the click MouseEvent\r\n */\r\n openDropdown(event: MouseEvent): void {\r\n event.stopImmediatePropagation();\r\n\r\n if (!this.disabled) {\r\n this.render = true;\r\n this.opened = true;\r\n }\r\n }\r\n\r\n /**\r\n * Close the dropdown list\r\n */\r\n closeDropdown(): void {\r\n this.opened = false;\r\n }\r\n\r\n /**\r\n * Position and resize dropdown list on animation start if toState is open\r\n * @param event the Angular AnimationEvent\r\n */\r\n onAnimationStart(event: AnimationEvent): void {\r\n if (event.toState === 'open') {\r\n this.resizeDropdownList();\r\n this.setSelectionIndex();\r\n\r\n if (this.selectionIndex !== null) {\r\n setTimeout(() => {\r\n this.dropdownOptions.toArray()[this.selectionIndex]\r\n .nativeElement\r\n .focus();\r\n });\r\n }\r\n\r\n /*\r\n The height of the dropdown list is zero at the point where the above code executes,\r\n this is a workaround to align the list after its height is known to avoid a frame\r\n or two of the list at origin\r\n */\r\n this.renderer.setStyle(this.dropdownList.nativeElement, 'top', '-999px');\r\n this.renderer.setStyle(this.dropdownList.nativeElement, 'left', '-999px');\r\n setTimeout(() => this.positionDropdownList());\r\n }\r\n }\r\n\r\n /**\r\n * Stop rendering dropdown list on animation done if toState is close\r\n * @param event the Angular AnimationEvent\r\n */\r\n onAnimationDone(event: AnimationEvent): void {\r\n if (event.toState === 'close') {\r\n this.render = false;\r\n }\r\n }\r\n\r\n /**\r\n * Focus on the selected dropdown option on dropdown open\r\n * @private\r\n */\r\n setSelectionIndex(): void {\r\n this.selectionIndex = null as any;\r\n\r\n if ((!!this.value || +this.value >= 0) && !!this.dropdownOptions?.length) {\r\n const dropdownOptionsArray = this.dropdownOptions.toArray();\r\n const foundIndex = dropdownOptionsArray.findIndex(option => {\r\n return String(this.value) === option.nativeElement.getAttribute('data-value');\r\n });\r\n\r\n this.selectionIndex = foundIndex > -1 ? foundIndex : null as any;\r\n }\r\n }\r\n\r\n /**\r\n * Update internal value and emit change events if input value differs from current value\r\n * @param value the selected value\r\n * @private\r\n */\r\n private handleDropdownOptionSelect(value: string | number): void {\r\n if (this.value !== value && !this.disabled) {\r\n this.value = value;\r\n\r\n this.onChange(value);\r\n this.change.emit(value);\r\n }\r\n }\r\n\r\n onModelChangeMobile(value: any): void {\r\n this.onChange(value);\r\n this.change.emit(value);\r\n }\r\n\r\n /**\r\n * Align the dropdown list with the dropdown\r\n * @private\r\n */\r\n private positionDropdownList(): void {\r\n const {left, top, bottom} = this.dropdown.nativeElement.getBoundingClientRect();\r\n const {offsetHeight} = this.dropdownList.nativeElement;\r\n const datePickerBottomLeftAnchor = bottom;\r\n const availableBottomSpace = window.innerHeight - datePickerBottomLeftAnchor;\r\n const availableTopSpace = top;\r\n const offsetListHeight = offsetHeight + DropdownComponent.DROPDOWN_LIST_OFFSET;\r\n let transformOrigin: string, positionTop: string;\r\n\r\n if (availableBottomSpace > offsetListHeight) {\r\n transformOrigin = 'top left';\r\n positionTop = `${datePickerBottomLeftAnchor + DropdownComponent.DROPDOWN_LIST_OFFSET}px`;\r\n } else if (availableTopSpace > offsetListHeight) {\r\n transformOrigin = 'bottom left';\r\n positionTop = `${top - offsetListHeight}px`;\r\n } else {\r\n if (offsetHeight > window.innerHeight) {\r\n positionTop = '0px';\r\n } else {\r\n const availableSpace = window.innerHeight - offsetHeight;\r\n positionTop = `${String(availableSpace / 2)}px`;\r\n }\r\n\r\n transformOrigin = 'top left';\r\n }\r\n\r\n this.renderer.setStyle(this.dropdownList.nativeElement, 'transform-origin', transformOrigin);\r\n this.renderer.setStyle(this.dropdownList.nativeElement, 'left', `${left}px`);\r\n this.renderer.setStyle(this.dropdownList.nativeElement, 'top', positionTop);\r\n }\r\n\r\n /**\r\n * Match the dropdown list width to the dropdown's width\r\n * @private\r\n */\r\n private resizeDropdownList(): void {\r\n const { left, right } = this.dropdown.nativeElement.getBoundingClientRect();\r\n const width = right - left;\r\n\r\n this.renderer.setStyle(this.dropdownList.nativeElement, 'width', `${width}px`);\r\n }\r\n\r\n /**\r\n * Handle arrow keyup event\r\n * @param key the arrow key\r\n */\r\n private onArrowKeyUp(key: string): void {\r\n if (key === 'ArrowLeft' || key === 'ArrowUp') {\r\n const previousOption = this.getPreviousOption();\r\n\r\n if (previousOption !== null) {\r\n if (this.opened) {\r\n previousOption.focus();\r\n } else {\r\n this.handleDropdownOptionSelect(previousOption.getAttribute('data-value') as string);\r\n }\r\n }\r\n } else if (key === 'ArrowRight' || key === 'ArrowDown') {\r\n const nextOption = this.getNextOption();\r\n\r\n if (nextOption !== null) {\r\n if (this.opened) {\r\n nextOption.focus();\r\n } else {\r\n this.handleDropdownOptionSelect(nextOption.getAttribute('data-value') as string);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get the next enabled dropdown option (relative to the current selection index).\r\n * If the currently selected option is the final available option, it is\r\n * returned. If no selection has been made, the first available option is returned\r\n * @private\r\n */\r\n private getNextOption(): HTMLButtonElement {\r\n const optionsArray = this.dropdownOptions.toArray();\r\n\r\n const startIndex = this.selectionIndex === null ? 0 : this.selectionIndex + 1;\r\n for (let i = startIndex; i < optionsArray.length; i++) {\r\n const option = optionsArray[i].nativeElement;\r\n\r\n if (!option.disabled) {\r\n this.selectionIndex = i;\r\n break;\r\n }\r\n }\r\n\r\n return this.selectionIndex === null\r\n ? null as any\r\n : optionsArray[this.selectionIndex].nativeElement;\r\n }\r\n\r\n /**\r\n * Get the previous enabled dropdown option (relative to the current selection index).\r\n * If the currently selected option is the first available option, it is\r\n * returned\r\n * @private\r\n */\r\n private getPreviousOption(): HTMLButtonElement {\r\n let previousOption: HTMLButtonElement = null as any;\r\n\r\n if (this.selectionIndex !== null) {\r\n const optionsArray = this.dropdownOptions.toArray();\r\n\r\n for (let i = this.selectionIndex - 1; i >= 0; i--) {\r\n const option = optionsArray[i].nativeElement;\r\n\r\n if (!option.disabled) {\r\n this.selectionIndex = i;\r\n previousOption = option;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return previousOption;\r\n }\r\n}\r\n","<ng-container *ngIf=\"!isMobile else mobile\">\r\n<div #dropdown\r\n class=\"row ptl_input ptl_input_height ptl_input_bg_color ptl_brdr_color ptl_brdr_size ptl_brdr_radius ent_r2l_dir\"\r\n [style.filter]=\"disabled ? 'brightness(.95)' : ''\"\r\n style=\"cursor:default;overflow:hidden;\"\r\n [ngClass]=\"classList ? classList : ''\">\r\n <button #dropdownButton\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n type=\"button\"\r\n (click)=\"openDropdown($event)\"\r\n (focus)=\"setSelectionIndex()\"\r\n (keyup.escape)=\"onEscapeKeyUp($event)\"\r\n [id]=\"dropdownId\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-label]=\"text.placeholder\"\r\n [attr.aria-expanded]=\"opened\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n class=\"access btnset clear center_center height100 width100\"\r\n style=\"outline-offset: -2px;\"\r\n >\r\n <div class=\"col size_1 height100 width100 v_center ptl_input_text_size ptl_input_padding border_none width100 overflow_hide\">\r\n <ng-container *ngIf=\"selectedDataContext$ | async as dataContext else placeholderTemplate\">\r\n <ng-container *ngIf=\"!!template else noCustomTemplate\">\r\n <div class=\"row v_center text_ellipsis min_w0\">\r\n <ng-container *ngTemplateOutlet=\"template; context: $any(dataContext)\"></ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-template #noCustomTemplate>\r\n <div class=\"ent_r2l_txt\">{{dataContext['$implicit'] || dataContext.label}}</div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #placeholderTemplate>\r\n <div class=\"ptl_placeholder ent_r2l_txt\">{{text.placeholder}}</div>\r\n </ng-template>\r\n </div>\r\n <div class=\"col min_w50 height100 center_center border_left\"\r\n [ngClass]=\"buttonClassList ? buttonClassList : 'ptl_brdr_color'\">\r\n <div class=\"center_center height100 width100\">\r\n <i class=\"fas fa-caret-down ptl_input_text_size\"></i>\r\n </div>\r\n </div>\r\n </button>\r\n</div>\r\n\r\n<div [style.display]=\"render ? '' : 'none'\"\r\n [attr.aria-hidden]=\"!render\"\r\n class=\"particle_dropdown_overlay\">\r\n <div #dropdownList\r\n [@openClose]=\"opened ? 'open' : 'close'\"\r\n (@openClose.start)=\"onAnimationStart($event)\"\r\n (@openClose.done)=\"onAnimationDone($event)\"\r\n class=\"position_absolute\">\r\n <div class=\"particle_dropdown_options content_color ent_r2l_dir\">\r\n <ng-container *ngIf=\"_options | async as options\">\r\n <div class=\"particle_dropdown_list\" role=\"listbox\" tabindex=\"-1\" [attr.aria-label]=\"text.placeholder\">\r\n <!-- CUSTOM TEMPLATE -->\r\n <ng-container *ngIf=\"!!template else defaultOptionTemplate\">\r\n <ng-container *ngFor=\"let option of options; index as i\">\r\n <!-- OPTION GROUP -->\r\n <ng-container *ngIf=\"option.type === 'group' else nonGroupOption\">\r\n <div class=\"particle_dropdown_heading ptl_input_text_size ent_r2l_txt\" aria-hidden=\"true\">{{option.groupLabel}}</div>\r\n <ng-container *ngFor=\"let groupOption of option.options; index as j\">\r\n <button #dropdownOption\r\n (click)=\"onDropdownOptionSelect(groupOption.value, groupOption.disabled!)\"\r\n (mouseenter)=\"onDropdownOptionMouseEnter(dropdownOption, i + j)\"\r\n (mousemove)=\"onDropdownOptionMouseMove(dropdownOption, i + j)\"\r\n (keyup.escape)=\"onEscapeKeyUp($event)\"\r\n [id]=\"dropdownId + '-' + groupOption.value\"\r\n [ngClass]=\"{ 'unselected' : (_internalValue | async) !== groupOption.value }\"\r\n [attr.aria-selected]=\"(_internalValue | async) === groupOption.value\"\r\n [attr.data-value]=\"groupOption.value\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n [disabled]=\"groupOption.disabled\"\r\n type=\"button\"\r\n class=\"particle_dropdown_option ptl_input_text_size ent_r2l_txt\" role=\"option\" tabindex=\"0\">\r\n <ng-container *ngTemplateOutlet=\"template; context: $any(groupOption.dataContext!)\"></ng-container>\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n <!-- SINGULAR OPTION -->\r\n <ng-template #nonGroupOption>\r\n <ng-container *ngIf=\"option.type === 'option'\">\r\n <button #dropdownOption\r\n (click)=\"onDropdownOptionSelect(option.value, option.disabled!)\"\r\n (mouseenter)=\"onDropdownOptionMouseEnter(dropdownOption, i)\"\r\n (mousemove)=\"onDropdownOptionMouseMove(dropdownOption, i)\"\r\n (keyup.escape)=\"onEscapeKeyUp($event)\"\r\n [id]=\"dropdownId + '-' + option.value\"\r\n [ngClass]=\"{ 'unselected' : (_internalValue | async) !== option.value }\"\r\n [attr.aria-selected]=\"(_internalValue | async) === option.value\"\r\n [attr.data-value]=\"option.value\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n [disabled]=\"option.disabled\"\r\n type=\"button\"\r\n class=\"particle_dropdown_option ptl_input_text_size ent_r2l_txt\" role=\"option\" tabindex=\"0\">\r\n <ng-container *ngTemplateOutlet=\"template; context: $any(option.dataContext!)\"></ng-container>\r\n </button>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n <!-- NO CUSTOM TEMPLATE -->\r\n <ng-template #defaultOptionTemplate>\r\n <ng-container *ngFor=\"let option of options; index as i\">\r\n <!-- OPTION GROUP -->\r\n <ng-container *ngIf=\"option.type === 'group' else nonGroupOption\">\r\n <div class=\"particle_dropdown_heading ptl_input_text_size ent_r2l_txt\" aria-hidden=\"true\">{{option.groupLabel}}</div>\r\n <ng-container *ngFor=\"let groupOption of option.options; index as j\">\r\n <button #dropdownOption\r\n (click)=\"onDropdownOptionSelect(groupOption.value, groupOption.disabled!)\"\r\n (mouseenter)=\"onDropdownOptionMouseEnter(dropdownOption, i + j)\"\r\n (mousemove)=\"onDropdownOptionMouseMove(dropdownOption, i + j)\"\r\n (keyup.escape)=\"onEscapeKeyUp($event)\"\r\n [id]=\"dropdownId + '-' + groupOption.value\"\r\n [ngClass]=\"{ 'unselected' : (_internalValue | async) !== groupOption.value }\"\r\n [attr.aria-label]=\"groupOption.label\"\r\n [attr.aria-selected]=\"(_internalValue | async) === groupOption.value\"\r\n [attr.data-value]=\"groupOption.value\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n [disabled]=\"groupOption.disabled\"\r\n class=\"particle_dropdown_option ptl_input_text_size ent_r2l_txt\"\r\n type=\"button\"\r\n role=\"option\" tabindex=\"0\">\r\n {{groupOption.label}}\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n <!-- SINGULAR OPTION -->\r\n <ng-template #nonGroupOption>\r\n <ng-container *ngIf=\"option.type === 'option'\">\r\n <button #dropdownOption\r\n (click)=\"onDropdownOptionSelect(option.value, option.disabled!)\"\r\n (mouseenter)=\"onDropdownOptionMouseEnter(dropdownOption, i)\"\r\n (mousemove)=\"onDropdownOptionMouseMove(dropdownOption, i)\"\r\n (keyup.escape)=\"onEscapeKeyUp($event)\"\r\n [id]=\"dropdownId + '-' + option.value\"\r\n [ngClass]=\"{ 'unselected' : (_internalValue | async) !== option.value }\"\r\n [attr.aria-selected]=\"(_internalValue | async) === option.value\"\r\n [attr.data-value]=\"option.value\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n [disabled]=\"option.disabled\"\r\n class=\"particle_dropdown_option ptl_input_text_size ent_r2l_txt\"\r\n type=\"button\"\r\n role=\"option\" tabindex=\"0\">\r\n {{option.label}}\r\n </button>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-content select=\"template\"></ng-content>\r\n</ng-container>\r\n\r\n<ng-template #mobile>\r\n <select\r\n class=\"access ptl_input ptl_input_height ptl_input_text_size ptl_input_padding ptl_input_bg_color ptl_brdr_color ptl_brdr_size ptl_brdr_radius\"\r\n [id]=\"dropdownId\"\r\n [disabled]=\"disabled\"\r\n (ngModelChange)=\"onModelChangeMobile($event)\"\r\n [(ngModel)]=\"value\">\r\n <ng-container *ngIf=\"_options | async as options\">\r\n <ng-container *ngFor=\"let option of options\">\r\n <ng-container *ngIf=\"option.type === 'group'\">\r\n <optgroup class=\"input_bg_color min_h50 pad_10\" [label]=\"option.groupLabel\">\r\n <ng-container *ngFor=\"let groupOption of option.options\">\r\n <option\r\n [disabled]=\"groupOption.disabled\"\r\n class=\"input_bg_color min_h50 pad_10\"\r\n [value]=\"groupOption.value\"\r\n >\r\n {{groupOption.label}}\r\n </option>\r\n </ng-container>\r\n </optgroup>\r\n </ng-container>\r\n <ng-container *ngIf=\"option.type === 'option'\">\r\n <option\r\n [disabled]=\"option.disabled\"\r\n class=\"input_bg_color min_h50 pad_10\"\r\n [value]=\"option.value\"\r\n >\r\n {{option.label}}\r\n </option>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </select>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DropdownComponent} from './dropdown.component';\nimport {FormsModule} from '@angular/forms';\n\n@NgModule({\n declarations: [\n DropdownComponent\n ],\n imports: [\n CommonModule,\n FormsModule\n ],\n exports: [\n DropdownComponent\n ]\n})\nexport class ParticleDropdownModule { }\n","import { animate, AnimationEvent, style, transition, trigger } from '@angular/animations';\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChild,\r\n ElementRef,\r\n EventEmitter, forwardRef,\r\n HostListener,\r\n Input,\r\n Output,\r\n QueryList,\r\n Renderer2,\r\n TemplateRef,\r\n ViewChild,\r\n ViewChildren\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport {BehaviorSubject, Observable, map} from 'rxjs';\r\nimport {MultiSelectOption} from './models/multi-select-option.model';\r\nimport {MultiSelectOptionGroup} from './models/multi-select-option-group.model';\r\nimport {MultiSelectText} from '../../shared/models/particle-component-text.model';\r\n\r\n/**\r\n * Type representing the multi-select component option input\r\n */\r\ndeclare type MultiSelectOptionInput = Array<MultiSelectOption | MultiSelectOptionGroup>;\r\n\r\n/**\r\n * Multi-select component\r\n */\r\n@Component({\r\n selector: 'particle-multi-select',\r\n templateUrl: './multi-select.component.html',\r\n styleUrls: ['./multi-select.component.css'],\r\n animations: [\r\n trigger('openClose', [\r\n transition('close => open', [\r\n style({ transform: 'scaleY(0.5)', opacity: 0 }),\r\n animate('200ms ease',\r\n style({ transform: 'scaleY(1)', opacity: 1 }))\r\n ]),\r\n transition('open => close', [\r\n style({ transform: 'scaleY(1)', opacity: 1 }),\r\n animate('200ms ease',\r\n style({ transform: 'scaleY(0.5)', opacity: 0 }))\r\n ]),\r\n ])\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MultiSelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class MultiSelectComponent implements ControlValueAccessor {\r\n\r\n /**\r\n * Set the value of the multi-select\r\n * @param value the value to set\r\n */\r\n @Input()\r\n set value(value: Array<string | number>) {\r\n let valueToSet: Array<string | number> = null as any;\r\n if (Array.isArray(value)) {\r\n valueToSet = [];\r\n for (const valueItem of value) {\r\n if (Array.isArray(valueItem)) {\r\n valueToSet.push(...valueItem);\r\n } else if ((typeof valueItem === 'string') || (typeof valueItem === 'number')) {\r\n valueToSet.push(valueItem);\r\n }\r\n }\r\n\r\n const nonNullValues = valueToSet.filter(item => item !== null);\r\n valueToSet = !nonNullValues.length ? null as any : nonNullValues;\r\n }\r\n\r\n this._value = valueToSet;\r\n this._internalValue.next(valueToSet);\r\n }\r\n\r\n get value(): Array<any> {\r\n return this._value;\r\n }\r\n\r\n /**\r\n * The multi-select options/option groups\r\n */\r\n @Input()\r\n set options(options: MultiSelectOptionInput) {\r\n this.optionCount = 0;\r\n if (options) {\r\n for (const option of options) {\r\n const suboptions = (option as MultiSelectOptionGroup).options;\r\n if (suboptions) {\r\n this.optionCount += suboptions.length;\r\n } else {\r\n this.optionCount++;\r\n }\r\n }\r\n }\r\n\r\n this._options.next(MultiSelectComponent.sanitizeOptionInput(options));\r\n }\r\n\r\n /**\r\n * The amount of offset (in pixels) to place between the multi-select\r\n * and its list overlay\r\n * @private\r\n */\r\n private static readonly LIST_OFFSET = 0;\r\n\r\n /**\r\n * List of arrow key keycodes\r\n * @private\r\n */\r\n private static readonly ARROW_KEYS = ['ArrowLeft', 'ArrowUp', 'ArrowRight', 'ArrowDown'];\r\n\r\n /**\r\n * ViewChild of the multi-select\r\n */\r\n @ViewChild('multiSelect')\r\n multiSelect: ElementRef<HTMLDivElement> = null as any;\r\n\r\n /**\r\n * ViewChild of the multi-select button\r\n */\r\n @ViewChild('multiSelectButton')\r\n multiSelectButton: ElementRef<HTMLButtonElement> = null as any;\r\n\r\n /**\r\n * ViewChild of the multi-select list\r\n */\r\n @ViewChild('multiSelectList')\r\n multiSelectList: ElementRef<HTMLDivElement> = null as any;\r\n\r\n /**\r\n * QueryList of multi-select option ViewChildren\r\n */\r\n @ViewChildren('multiSelectOption')\r\n multiSelectOptions: QueryList<ElementRef<HTMLButtonElement>> = null as any;\r\n\r\n /**\r\n * ContentChild of the multi-select option template\r\n */\r\n @ContentChild(TemplateRef)\r\n template: TemplateRef<HTMLElement> = null as any;\r\n\r\n /**\r\n * Whether the multi-select should be disabled\r\n */\r\n @Input()\r\n disabled: boolean = false;\r\n\r\n /**\r\n * Class list to assign to the multi-select\r\n */\r\n @Input()\r\n classList: string = null as any;\r\n\r\n @Input()\r\n buttonClassList: string = null as any;\r\n\r\n @Input()\r\n entryClassList: string = null as any;\r\n\r\n @Input()\r\n text: MultiSelectText = {\r\n placeholder: 'Make a Selection',\r\n of: 'of',\r\n optionsSelected: 'options selected'\r\n } as MultiSelectText;\r\n\r\n /**\r\n * Style of the multi-select\r\n */\r\n @Input()\r\n type: 'input' | 'expanded' = 'input';\r\n\r\n @Input()\r\n maxExpandedEntries: number = 0;\r\n\r\n @Input()\r\n expandedAsGrid: boolean = false;\r\n\r\n @Input()\r\n collapsedButtonTemplate: TemplateRef<any> = null as any;\r\n\r\n /**\r\n * Event emitted on value change, emits the new value\r\n */\r\n @Output()\r\n // eslint-disable-next-line @angular-eslint/no-output-native\r\n change = new EventEmitter<Array<string | number>>();\r\n\r\n /**\r\n * BehaviorSubject tracking the input multi-select options/option groups\r\n */\r\n readonly _options = new BehaviorSubject<MultiSelectOptionInput>(null as any);\r\n\r\n /**\r\n * BehaviorSubject tracking the current value of the multi-select\r\n */\r\n readonly _internalValue = new BehaviorSubject<Array<number | string>>(null as any);\r\n\r\n /**\r\n * Observable map of option value (stringified if a number) to data context\r\n */\r\n readonly dataContextMap$: Observable<{ [value: string]: { [key: string]: unknown } }> = this._options.pipe(\r\n map(options => {\r\n let dataContextMap: { [value: string]: { [key: string]: unknown } } = null as any;\r\n\r\n if (!!options?.length) {\r\n dataContextMap = {};\r\n\r\n for (const option of options) {\r\n if ('options' in option) {\r\n for (const groupOption of option.options) {\r\n dataContextMap[String(groupOption.value)] = JSON.parse(JSON.stringify(groupOption.dataContext));\r\n }\r\n } else if ('dataContext' in option) {\r\n dataContextMap[String(option.value)] = JSON.parse(JSON.stringify(option.dataContext));\r\n }\r\n }\r\n }\r\n\r\n return dataContextMap;\r\n })\r\n );\r\n\r\n /**\r\n * Observable map of stringified option value to boolean indicating the user's selections\r\n */\r\n readonly selectionValueMap$: Observable<{ [key: string]: boolean }> = this._internalValue.pipe(\r\n map(values => {\r\n const selectionValueMap = {} as any;\r\n\r\n if (!!values?.length) {\r\n for (const value of values) {\r\n selectionValueMap[String(value)] = true;\r\n }\r\n }\r\n\r\n return selectionValueMap;\r\n })\r\n );\r\n\r\n /**\r\n * The count of selected options as an Observable\r\n */\r\n readonly selectionCount$: Observable<number> = this._internalValue.pipe(\r\n map(values => values?.length ?? 0)\r\n );\r\n\r\n /**\r\n * Unique ID to assign to the multiSelect\r\n */\r\n readonly multiSelectId;\r\n\r\n /**\r\n * Whether to render the multi-select list\r\n */\r\n render = false;\r\n\r\n /**\r\n * Whether the multi-select is open\r\n */\r\n opened = false;\r\n\r\n /**\r\n * The index of the focused option in the multiSelect list\r\n */\r\n selectionIndex: number = null as any;\r\n\r\n optionCount: number = 0;\r\n\r\n /**\r\n * The current value of the multiSelect\r\n * @private\r\n */\r\n private _value: Array<string | number> = null as any;\r\n\r\n /**\r\n * Removes options that do not have both a label and a value,\r\n * also removes empty groups (or groups that have no valid options)\r\n * @param options the options to sanitize\r\n * @private\r\n */\r\n private static sanitizeOptionInput(options: MultiSelectOptionInput): MultiSelectOptionInput {\r\n const sanitizedOptions: MultiSelectOptionInput = [];\r\n\r\n for (const option of options) {\r\n if (('groupLabel' in option) && ('options' in option)) {\r\n const validOptions: Array<MultiSelectOption> = [];\r\n for (const groupOption of (option.options ?? [])) {\r\n if (!!groupOption.label && (!!groupOption.value || (+groupOption.value >= 0))) {\r\n const groupOptionCopy = JSON.parse(JSON.stringify(groupOption));\r\n groupOptionCopy.dataContext = this.addLabelToDataContext(groupOptionCopy.label, groupOptionCopy.dataContext);\r\n groupOptionCopy.type = 'group';\r\n\r\n validOptions.push(groupOptionCopy);\r\n }\r\n }\r\n\r\n if (!!validOptions.length) {\r\n sanitizedOptions.push({ groupLabel: option.groupLabel, options: validOptions, type: 'group' });\r\n }\r\n } else if (('label' in option) && ('value' in option)) {\r\n if (!!option.label && (!!option.value || (+option.value >= 0))) {\r\n const optionCopy = JSON.parse(JSON.stringify(option));\r\n optionCopy.dataContext = this.addLabelToDataContext(optionCopy.label, optionCopy.dataContext);\r\n optionCopy.type = 'option';\r\n\r\n sanitizedOptions.push(optionCopy);\r\n }\r\n }\r\n }\r\n\r\n return sanitizedOptions;\r\n }\r\n\r\n /**\r\n * Add option label to data context if not present. If $implicit\r\n * value is not present, it will be added with the label as its value.\r\n * If $implicit is already present, it will add a label key to the context\r\n * @param label the option label\r\n * @param dataContext the option data context\r\n * @private\r\n */\r\n private static addLabelToDataContext(label: string, dataContext: { [key: string]: unknown }): { [key: string]: unknown } {\r\n if (!dataContext) {\r\n dataContext = {};\r\n }\r\n\r\n if (!!label) {\r\n const implicitValue = dataContext['$implicit'];\r\n\r\n if (!!implicitValue || implicitValue as number >= 0) {\r\n const labelExists = !!dataContext['label'];\r\n\r\n if (!labelExists) {\r\n dataContext['label'] = label;\r\n }\r\n } else {\r\n dataContext['$implicit'] = label;\r\n }\r\n }\r\n\r\n return dataContext;\r\n }\r\n\r\n /**\r\n * Function to call on change\r\n */\r\n onChange: (value: any) => void = () => {};\r\n\r\n /**\r\n * Function to call on touch\r\n */\r\n onTouched: () => any = () => {};\r\n\r\n /**\r\n * Dependency injection site\r\n * @param renderer the Angular renderer\r\n * @param changeDetectorRef reference to the Angular change detector\r\n */\r\n constructor(private renderer: Renderer2, private changeDetectorRef: ChangeDetectorRef) {\r\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\r\n let result = '';\r\n\r\n for (let i = 0; i < 10; i++) {\r\n result += characters.charAt(Math.floor(Math.random() * characters.length));\r\n }\r\n\r\n this.multiSelectId = `multiselect-${result}${new Date().getTime()}`;\r\n }\r\n\r\n /**\r\n * Write value\r\n * @param value the value to write\r\n */\r\n writeValue(value: Array<string | number>): void {\r\n this.value = value;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Register function on change\r\n * @param fn the function to register\r\n */\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Register function on touch\r\n * @param fn the function to register\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Set the disabled state\r\n * @param isDisabled disabled or not\r\n */\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Reposition and resize the multiSelect on window resize\r\n */\r\n @HostListener('window:resize')\r\n onWindowResize(): void {\r\n if (this.opened) {\r\n this.positionMultiSelectList();\r\n this.resizeMultiSelectList();\r\n }\r\n }\r\n\r\n /**\r\n * Prevent default behavior for arrow key keydown event\r\n * @param event the keydown KeyboardEvent\r\n */\r\n @HostListener('window:keydown', ['$event'])\r\n onKeyDown(event: KeyboardEvent): void {\r\n if (document.activeElement?.id?.includes(this.multiSelectId) && !this.disabled) {\r\n const { key } = event;\r\n\r\n if (MultiSelectComponent.ARROW_KEYS.includes(key)) {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Close the multi-select list on tab and handle arrow key navigation\r\n * @param event the keyup KeyboardEvent\r\n */\r\n @HostListener('window:keyup', ['$event'])\r\n onKeyUp(event: KeyboardEvent): void {\r\n if (document.activeElement?.id?.includes(this.multiSelectId) && !this.disabled) {\r\n const {key} = event;\r\n\r\n if (MultiSelectComponent.ARROW_KEYS.includes(key)) {\r\n this.onArrowKeyUp(key);\r\n } else {\r\n if (this.opened) {\r\n if (key === 'Tab') {\r\n this.closeMultiSelect();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Close the multi-select list (if opened) on click if outside the list\r\n * @param event the click MouseEvent\r\n */\r\n @HostListener('window:click', ['$event'])\r\n onClick(event: MouseEvent): void {\r\n if (this.opened) {\r\n const {pageX, pageY} = event;\r\n\r\n if (pageX > 0 && pageY > 0) {\r\n const { left, right, top, bottom } = this.multiSelectList.nativeElement.getBoundingClientRect();\r\n const xPositionValid = pageX >= left && pageX <= right;\r\n const yPositionValid = pageY >= top && pageY <= bottom;\r\n const shouldClose = !(xPositionValid && yPositionValid);\r\n\r\n if (shouldClose) {\r\n this.closeMultiSelect();\r\n this.multiSelectButton.nativeElement.focus();\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Close multi-select on escape keyup and focus on multi-select button\r\n * @param event the keyup KeyboardEvent\r\n */\r\n onEscapeKeyUp(event: Event): void {\r\n if (this.opened) {\r\n event.stopImmediatePropagation();\r\n\r\n this.closeMultiSelect();\r\n this.multiSelect.nativeElement.focus();\r\n }\r\n }\r\n\r\n /**\r\n * Set focus to multi-select option on mouse enter and update selected index\r\n * @param option the multiSelect option to focus\r\n * @param index the index of the option to focus\r\n */\r\n onMultiSelectOptionMouseEnter(option: HTMLButtonElement, index: number): void {\r\n this.selectionIndex = index;\r\n option.focus();\r\n }\r\n\r\n /**\r\n * Set focus to multi-select option on mouse move and update selected index\r\n * @param option the multiSelect option to focus\r\n * @param index the index of the option to focus\r\n */\r\n onMultiSelectOptionMouseMove(option: HTMLButtonElement, index: number): void {\r\n if (this.selectionIndex !== index) {\r\n this.selectionIndex = index;\r\n option.focus();\r\n }\r\n }\r\n\r\n /**\r\n * Write value and close multi-select on option select\r\n * @param value the value to write\r\n * @param disabled whether or not the selected option is disabled\r\n */\r\n onMultiSelectOptionSelect(value: string | number, disabled: boolean): void {\r\n if (!disabled) {\r\n this.handleMultiSelectOptionSelect(value);\r\n }\r\n }\r\n\r\n /**\r\n * Open the multi-select list and align it\r\n * @param event the click MouseEvent\r\n */\r\n openMultiSelect(event: MouseEvent): void {\r\n event.stopImmediatePropagation();\r\n\r\n if (!this.disabled) {\r\n this.render = true;\r\n this.opened = true;\r\n }\r\n }\r\n\r\n /**\r\n * Close the multiSelect list\r\n */\r\n closeMultiSelect(): void {\r\n this.opened = false;\r\n this.selectionIndex = null as any;\r\n }\r\n\r\n /**\r\n * Position and resize the multi-select list on animation start if toState is open\r\n * @param event the Angular AnimationEvent\r\n */\r\n onAnimationStart(event: AnimationEvent): void {\r\n if (event.toState === 'open') {\r\n this.resizeMultiSelectList();\r\n this.selectionIndex = null as any;\r\n\r\n setTimeout(() => {\r\n const option = this.getNextOption();\r\n if (!!option) {\r\n option.focus();\r\n }\r\n });\r\n\r\n /*\r\n The height of the multi-select list is zero at the point where the above code executes,\r\n this is a workaround to align the list after its height is known to avoid a frame\r\n or two of the list at origin\r\n */\r\n this.renderer.setStyle(this.multiSelectList.nativeElement, 'top', '-999px');\r\n this.renderer.setStyle(this.multiSelectList.nativeElement, 'left', '-999px');\r\n setTimeout(() => this.positionMultiSelectList());\r\n }\r\n }\r\n\r\n /**\r\n * Stop rendering the multi-select list on animation done if toState is close\r\n * @param event the Angular AnimationEvent\r\n */\r\n onAnimationDone(event: AnimationEvent): void {\r\n if (event.toState === 'close') {\r\n this.render = false;\r\n }\r\n }\r\n\r\n /**\r\n * If the input value is already in the value array, remove it. Otherwise add it\r\n * @param value the selected value\r\n * @private\r\n */\r\n private handleMultiSelectOptionSelect(value: string | number): void {\r\n if (!this.value) {\r\n this.value = [value];\r\n } else {\r\n const valueCopy = [...this.value];\r\n const foundIndex = valueCopy.findIndex(item => item === value);\r\n\r\n if (foundIndex > -1) {\r\n valueCopy.splice(foundIndex, 1);\r\n } else {\r\n valueCopy.push(value);\r\n }\r\n\r\n this.value = valueCopy;\r\n }\r\n\r\n this.onChange(this.value);\r\n this.change.emit(this.value);\r\n }\r\n\r\n /**\r\n * Align the multi-select list with the multiSelect\r\n * @private\r\n */\r\n private positionMultiSelectList(): void {\r\n const {left, top, bottom} = this.multiSelect.nativeElement.getBoundingClientRect();\r\n const {offsetHeight} = this.multiSelectList.nativeElement;\r\n const datePickerBottomLeftAnchor = bottom;\r\n const availableBottomSpace = window.innerHeight - datePickerBottomLeftAnchor;\r\n const availableTopSpace = top;\r\n const offsetListHeight = offsetHeight + MultiSelectComponent.LIST_OFFSET;\r\n let transformOrigin: string, positionTop: string;\r\n\r\n if (availableBottomSpace > offsetListHeight) {\r\n transformOrigin = 'top left';\r\n positionTop = `${datePickerBottomLeftAnchor + MultiSelectComponent.LIST_OFFSET}px`;\r\n } else if (availableTopSpace > offsetListHeight) {\r\n transformOrigin = 'bottom left';\r\n positionTop = `${top - offsetListHeight}px`;\r\n } else {\r\n if (offsetHeight > window.innerHeight) {\r\n positionTop = '0px';\r\n } else {\r\n const availableSpace = window.innerHeight - offsetHeight;\r\n positionTop = `${String(availableSpace / 2)}px`;\r\n }\r\n\r\n transformOrigin = 'top left';\r\n }\r\n\r\n this.renderer.setStyle(this.multiSelectList.nativeElement, 'transform-origin', transformOrigin);\r\n this.renderer.setStyle(this.multiSelectList.nativeElement, 'left', `${left}px`);\r\n this.renderer.setStyle(this.multiSelectList.nativeElement, 'top', positionTop);\r\n }\r\n\r\n /**\r\n * Match the multi-select list width to the multi-select's width\r\n * @private\r\n */\r\n private resizeMultiSelectList(): void {\r\n const { left, right } = this.multiSelect.nativeElement.getBoundingClientRect();\r\n const width = right - left;\r\n\r\n this.renderer.setStyle(this.multiSelectList.nativeElement, 'width', `${width}px`);\r\n }\r\n\r\n /**\r\n * Handle arrow keyup event\r\n * @param key the arrow key\r\n */\r\n private onArrowKeyUp(key: string): void {\r\n if (this.opened) {\r\n if (key === 'ArrowLeft' || key === 'ArrowUp') {\r\n const previousOption = this.getPreviousOption();\r\n\r\n if (previousOption !== null) {\r\n previousOption.focus();\r\n }\r\n } else if (key === 'ArrowRight' || key === 'ArrowDown') {\r\n const nextOption = this.getNextOption();\r\n\r\n if (nextOption !== null) {\r\n nextOption.focus();\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get the next enabled multi-select option (relative to the current selection index).\r\n * If the currently selected option is the final available option, it is\r\n * returned. If no selection has been made, the first available option is returned\r\n * @private\r\n */\r\n private getNextOption(): HTMLButtonElement {\r\n const optionsArray = this.multiSelectOptions.toArray();\r\n\r\n const startIndex = this.selectionIndex === null ? 0 : this.selectionIndex + 1;\r\n for (let i = startIndex; i < optionsArray.length; i++) {\r\n const option = optionsArray[i].nativeElement;\r\n\r\n if (!option.disabled) {\r\n this.selectionIndex = i;\r\n break;\r\n }\r\n }\r\n\r\n return this.selectionIndex === null\r\n ? null as any\r\n : optionsArray[this.selectionIndex].nativeElement;\r\n }\r\n\r\n /**\r\n * Get the previous enabled multi-select option (relative to the current selection index).\r\n * If the currently selected option is the first available option, it is\r\n * returned\r\n * @private\r\n */\r\n private getPreviousOption(): HTMLButtonElement {\r\n let previousOption: HTMLButtonElement = null as any;\r\n\r\n if (this.selectionIndex !== null) {\r\n const optionsArray = this.multiSelectOptions.toArray();\r\n\r\n for (let i = this.selectionIndex - 1; i >= 0; i--) {\r\n const option = optionsArray[i].nativeElement;\r\n\r\n if (!option.disabled) {\r\n this.selectionIndex = i;\r\n previousOption = option;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return previousOption;\r\n }\r\n}\r\n","<ng-container *ngIf=\"type === 'input' || (type === 'expanded' && maxExpandedEntries > 0 && optionCount > maxExpandedEntries) else expanded\">\r\n <div #multiSelect\r\n class=\"row ptl_input ptl_input_height ptl_input_bg_color ptl_brdr_color ptl_brdr_size ptl_brdr_radius ent_r2l_dir\"\r\n [style.filter]=\"disabled ? 'brightness(.95)' : ''\"\r\n style=\"cursor:default;overflow:hidden;\"\r\n [ngClass]=\"classList ? classList : ''\">\r\n <button #multiSelectButton\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n type=\"button\"\r\n (click)=\"openMultiSelect($event)\"\r\n (keyup.escape)=\"onEscapeKeyUp($event)\"\r\n [id]=\"multiSelectId\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-label]=\"text.placeholder\"\r\n [attr.aria-expanded]=\"opened\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n class=\"access btnset clear center_center height100 width100\"\r\n style=\"outline-offset: -2px;\"\r\n >\r\n <ng-container *ngIf=\"collapsedButtonTemplate\">\r\n <ng-container *ngTemplateOutlet=\"collapsedButtonTemplate\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!collapsedButtonTemplate\">\r\n <div class=\"col size_1 height100 width100 v_center ptl_input_text_size ptl_input_padding border_none width100 overflow_hide\">\r\n\r\n <ng-container *ngIf=\"selectionCount$ | async as selectionCount else placeholderTemplate\">\r\n <ng-container *ngIf=\"selectionCount > 1 else singleEntry\">\r\n <div class=\"ptl_input_text_size ent_r2l_txt\">\r\n <span class=\"text bold\">{{selectionCount}}</span> {{text.of}} {{optionCount}} {{text.optionsSelected}}\r\n </div>\r\n </ng-container>\r\n\r\n <ng-template #singleEntry>\r\n <ng-container *ngIf=\"dataContextMap$ | async as dataContextMap\">\r\n <div class=\"col overflow_hide\">\r\n <ng-container *ngIf=\"!!template else noCustomTemplate\">\r\n <div class=\"mar_tb5 pad_tb2\"\r\n *ngFor=\"let value of _internalValue | async\">\r\n <div class=\"ptl_input_text_size ent_r2l_txt\">\r\n <ng-container *ngTemplateOutlet=\"template; context: $any(dataContextMap['' + value])\"></ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-template #noCustomTemplate>\r\n <div class=\"ptl_input_text_size mar_tb5 pad_tb2 ent_r2l_txt\"\r\n *ngFor=\"let value of _internalValue | async\">\r\n {{dataContextMap['' + value]['$implicit'] || dataContextMap['' + value]['label']}}\r\n </div>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #placeholderTemplate>\r\n <div class=\"ptl_placeholder ent_r2l_txt\">{{text.placeholder + '...'}}</div>\r\n </ng-template>\r\n </div>\r\n <div class=\"col min_w50 height100 center_center border_left\"\r\n [ngClass]=\"buttonClassList ? buttonClassList : 'ptl_brdr_color'\">\r\n <div class=\"center_center height100 width100\">\r\n <i class=\"fas fa-caret-down ptl_input_text_size\"></i>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </button>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #expanded>\r\n <ng-container [ngTemplateOutlet]=\"multiSelectOptions\"></ng-container>\r\n</ng-template>\r\n\r\n<div [style.display]=\"render ? '' : 'none'\"\r\n [attr.aria-hidden]=\"!render\"\r\n class=\"particle_multiselect_overlay\">\r\n <div #multiSelectList\r\n [@openClose]=\"opened ? 'open' : 'close'\"\r\n (@openClose.start)=\"onAnimationStart($event)\"\r\n (@openClose.done)=\"onAnimationDone($event)\"\r\n class=\"position_absolute\">\r\n <div class=\"particle_multiselect_options content_color ent_r2l_dir\">\r\n <ng-container [ngTemplateOutlet]=\"multiSelectOptions\"></ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #multiSelectOptions>\r\n <ng-container *ngIf=\"_options | async as options\">\r\n <div class=\"particle_multiselect_list ent_r2l_dir\"\r\n role=\"listbox\"\r\n tabindex=\"-1\"\r\n [attr.aria-label]=\"text.placeholder\"\r\n [ngClass]=\"type === 'expanded' && expandedAsGrid ? 'particle_multi_select_grid' : ''\"\r\n >\r\n <!-- CUSTOM TEMPLATE -->\r\n <ng-container *ngIf=\"!!template else defaultOptionTemplate\">\r\n <ng-container *ngIf=\"selectionValueMap$ | async as selectionValueMap\">\r\n <ng-container *ngFor=\"let option of options; index as i\">\r\n <!-- OPTION GROUP -->\r\n <ng-container *ngIf=\"option.type === 'group' else nonGroupOption\">\r\n <div class=\"particle_multiselect_heading ptl_input_text_size ent_r2l_txt\" aria-hidden=\"true\">{{option.groupLabel}}</div>\r\n <ng-container *ngFor=\"let groupOption of option.options; index as j\">\r\n <button #multiSelectOption\r\n (click)=\"onMultiSelectOptionSelect(groupOption.value, groupOption.disabled!)\"\r\n (mouseenter)=\"onMultiSelectOptionMouseEnter(multiSelectOption, i + j)\"\r\n (mousemove)=\"onMultiSelectOptionMouseMove(multiSelectOption, i + j)\"\r\n (keyup.escape)=\"onEscapeKeyUp($event)\"\r\n [id]=\"multiSelectId + '-' + groupOption.value\"\r\n [ngClass]=\"(!selectionValueMap['' + groupOption.value] ? 'unselected' : '') + (entryClassList ? ' ' + entryClassList : ' particle_multiselect_option')\"\r\n [attr.aria-selected]=\"(_internalValue | async)?.includes(groupOption.value)\"\r\n [attr.data-value]=\"groupOption.value\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n [disabled]=\"groupOption.disabled || disabled\"\r\n class=\"ptl_input_text_size\"\r\n type=\"button\"\r\n role=\"option\" tabindex=\"0\">\r\n <div class=\"particle_multiselect_checkbox ptl_brdr_radius bg_overlay brdr\"\r\n [ngClass]=\"selectionValueMap['' + groupOption.value] ? 'ok_button_color' : 'unselected'\"\r\n aria-hidden=\"true\">\r\n <div *ngIf=\"selectionValueMap['' + groupOption.value]\"><i class=\"fas fa-check ent_r2l_ico\"></i></div>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"template; context: $any(groupOption.dataContext!)\"></ng-container>\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n <!-- SINGULAR OPTION -->\r\n <ng-template #nonGroupOption>\r\n <ng-container *ngIf=\"option.type === 'option'\">\r\n <button #multiSelectOption\r\n (click)=\"onMultiSelectOptionSelect(option.value, option.disabled!)\"\r\n (mouseenter)=\"onMultiSelectOptionMouseEnter(multiSelectOption, i)\"\r\n (mousemove)=\"onMultiSelectOptionMouseMove(multiSelectOption, i)\"\r\n (keyup.escape)=\"onEscapeKeyUp($event)\"\r\n [id]=\"multiSelectId + '-' + option.value\"\r\n [attr.aria-selected]=\"(_internalValue | async)?.includes(option.value)\"\r\n [attr.data-value]=\"option.value\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n [disabled]=\"option.disabled || disabled\"\r\n [ngClass]=\"(!selectionValueMap['' + option.value] ? 'unselected' : '') + (entryClassList ? ' ' + entryClassList : ' particle_multiselect_option')\"\r\n class=\"ptl_input_text_size\"\r\n role=\"option\" type=\"button\" tabindex=\"0\">\r\n <div class=\"particle_multiselect_checkbox ptl_brdr_radius bg_overlay brdr\"\r\n [ngClass]=\"selectionValueMap['' + option.value] ? 'ok_button_color' : 'unselected'\"\r\n aria-hidden=\"true\">\r\n <div *ngIf=\"selectionValueMap['' + option.value]\"><i class=\"fas fa-check\"></i></div>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"template; context: $any(option.dataContext!)\"></ng-container>\r\n </button>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <!-- NO CUSTOM TEMPLATE -->\r\n <ng-template #defaultOptionTemplate>\r\n <ng-container *ngIf=\"selectionValueMap$ | async as selectionValueMap\">\r\n <ng-container *ngFor=\"let option of options; index as i\">\r\n <!-- OPTION GROUP -->\r\n <ng-container *ngIf=\"option.type === 'group' else nonGroupOption\">\r\n <div class=\"particle_multiselect_heading ptl_input_text_size ent_r2l_txt\" aria-hidden=\"true\">{{option.groupLabel}}</div>\r\n <ng-container *ngFor=\"let groupOption of option.options; index as j\">\r\n <button #multiSelectOption\r\n (click)=\"onMultiSelectOptionSelect(groupOption.value, groupOption.disabled!)\"\r\n (mouseenter)=\"onMultiSelectOptionMouseEnter(multiSelectOption, i + j)\"\r\n (mousemove)=\"onMultiSelectOptionMouseMove(multiSelectOption, i + j)\"\r\n (keyup.escape)=\"onEscapeKeyUp($event)\"\r\n [id]=\"multiSelectId + '-' + groupOption.value\"\r\n [attr.aria-label]=\"groupOption.label\"\r\n [attr.aria-selected]=\"(_internalValue | async)?.includes(groupOption.value)\"\r\n [attr.data-value]=\"groupOption.value\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n [disabled]=\"groupOption.disabled || disabled\"\r\n [ngClass]=\"(!selectionValueMap['' + groupOption.value] ? 'unselected' : '') + (entryClassList ? ' ' + entryClassList : ' particle_multiselect_option')\"\r\n class=\"ptl_input_text_size\"\r\n type=\"button\" role=\"option\" tabindex=\"0\">\r\n <div class=\"particle_multiselect_checkbox ptl_brdr_radius bg_overlay brdr\"\r\n [ngClass]=\"selectionValueMap['' + groupOption.value] ? 'ok_button_color' : 'unselected'\"\r\n aria-hidden=\"true\">\r\n <div *ngIf=\"selectionValueMap['' + groupOption.value]\"><i class=\"fas fa-check\"></i></div>\r\n </div>\r\n <div class=\"ent_r2l_txt mar_lr5\">{{groupOption.label}}</div>\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n <!-- SINGULAR OPTION -->\r\n <ng-template #nonGroupOption>\r\n <ng-container *ngIf=\"option.type === 'option'\">\r\n <button #multiSelectOption\r\n (click)=\"onMultiSelectOptionSelect(option.value, option.disabled!)\"\r\n (mouseenter)=\"onMultiSelectOptionMouseEnter(multiSelectOption, i)\"\r\n (mousemove)=\"onMultiSelectOptionMouseMove(multiSelectOption, i)\"\r\n (keyup.escape)=\"onEscapeKeyUp($event)\"\r\n [id]=\"multiSelectId + '-' + option.value\"\r\n [attr.aria-selected]=\"(_internalValue | async)?.includes(option.value)\"\r\n [attr.data-value]=\"option.value\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n [disabled]=\"option.disabled || disabled\"\r\n [ngClass]=\"(!selectionValueMap['' + option.value] ? 'unselected' : '') + (entryClassList ? ' ' + entryClassList : ' particle_multiselect_option')\"\r\n class=\"ptl_input_text_size\"\r\n type=\"button\" role=\"option\" tabindex=\"0\">\r\n <div class=\"particle_multiselect_checkbox ptl_brdr_radius bg_overlay brdr\"\r\n [ngClass]=\"selectionValueMap['' + option.value] ? 'ok_button_color' : 'unselected'\"\r\n aria-hidden=\"true\">\r\n <div *ngIf=\"selectionValueMap['' + option.value]\"><i class=\"fas fa-check\"></i></div>\r\n </div>\r\n <div class=\"ent_r2l_txt mar_lr5\">{{option.label}}</div>\r\n </button>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-content select=\"template\"></ng-content>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MultiSelectComponent } from './multi-select.component';\n\n@NgModule({\n declarations: [MultiSelectComponent],\n imports: [CommonModule],\n exports: [MultiSelectComponent]\n})\nexport class ParticleMultiSelectModule { }\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\r\n\r\n/**\r\n * Directive to apply key filtering to an HTML input element\r\n */\r\n@Directive({\r\n selector: '[particleKeyfilter]'\r\n})\r\nexport class KeyfilterDirective {\r\n\r\n /**\r\n * Array of keyboard key names that are always allowed\r\n * (arrow keys, backspace, delete, tab, escape)\r\n * @private\r\n */\r\n private static readonly ALLOWED_KEYS = [\r\n 'ArrowLeft', 'ArrowUp', 'ArrowRight', 'ArrowDown',\r\n 'Backspace', 'Delete', 'Tab', 'Esc', 'Escape', 'Home', 'End'\r\n ];\r\n\r\n /**\r\n * Array of keyboard alpha key names\r\n * @private\r\n */\r\n private static readonly ALPHA_KEYS = [\r\n 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',\r\n 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',\r\n 'u', 'v', 'w', 'x', 'y', 'z'\r\n ];\r\n\r\n /**\r\n * Array of keyboard alpha key names\r\n * @private\r\n */\r\n private static readonly URL_TOKEN_KEYS = [\r\n 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',\r\n 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',\r\n 'u', 'v', 'w', 'x', 'y', 'z', '-', '0', '1', '2',\r\n '3', '4', '5', '6', '7', '8', '9'\r\n ];\r\n\r\n /**\r\n * The type of filtering to apply\r\n */\r\n @Input('particleKeyfilter')\r\n filterType: 'alpha' | 'numeric' | 'alphanumeric' | 'digits' | 'url-token' = null as any;\r\n\r\n /**\r\n * Whether spaces should be allowed (default false)\r\n */\r\n @Input()\r\n allowSpaces = false;\r\n\r\n /**\r\n * Determine if the input key is numeric (a digit)\r\n * @param key the key to test\r\n * @private\r\n */\r\n private static keyIsNumeric(key: string): boolean {\r\n return new RegExp('^\\\\d|[.-]$', 'g').test(key);\r\n }\r\n\r\n private static keyIsDigit(key: string): boolean {\r\n return new RegExp('^\\\\d$', 'g').test(key);\r\n }\r\n\r\n private static valueIsNumeric(value: string): boolean {\r\n return new RegExp('^(-?\\\\d+\\\\.\\\\d+)$|^(-?\\\\d+)$', 'g').test(value);\r\n }\r\n\r\n /**\r\n * Determine if the input key is an alpha key (a letter of\r\n * the English alphabet)\r\n * @param key the key to test\r\n * @private\r\n */\r\n private static keyIsAlpha(key: string): boolean {\r\n return KeyfilterDirective.ALPHA_KEYS.includes(key.toLowerCase());\r\n }\r\n\r\n private static keyIsUrlToken(key: string): boolean {\r\n return KeyfilterDirective.URL_TOKEN_KEYS.includes(key.toLowerCase());\r\n }\r\n\r\n /**\r\n * Dependency injection site\r\n * @param hostElement\r\n */\r\n constructor(private hostElement: ElementRef<HTMLInputElement>) { }\r\n\r\n /**\r\n * Filter out keys based on the specified filter type\r\n * @param event the keydown KeyboardEvent\r\n */\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown(event: KeyboardEvent): void {\r\n if (this.filterType) {\r\n let preventDefault = true;\r\n const { key } = event;\r\n\r\n if (KeyfilterDirective.ALLOWED_KEYS.includes(key)) {\r\n preventDefault = false;\r\n } else if (this.allowSpaces && key === ' ') {\r\n preventDefault = false;\r\n } else if (this.filterType === 'alpha') {\r\n preventDefault = !KeyfilterDirective.keyIsAlpha(key);\r\n } else if (this.filterType === 'numeric') {\r\n preventDefault = !event.ctrlKey && !KeyfilterDirective.keyIsNumeric(key);\r\n } else if (this.filterType === 'digits') {\r\n preventDefault = !KeyfilterDirective.keyIsDigit(key);\r\n } else if (this.filterType === 'url-token') {\r\n preventDefault = !KeyfilterDirective.keyIsUrlToken(key);\r\n } else if (this.filterType === 'alphanumeric') {\r\n const isNumeric = KeyfilterDirective.keyIsDigit(key);\r\n const isAlpha = KeyfilterDirective.keyIsAlpha(key);\r\n\r\n preventDefault = !(isNumeric || isAlpha);\r\n }\r\n\r\n if (preventDefault) {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Prevent paste if input contains forbidden characters\r\n * @param event the paste ClipboardEvent\r\n */\r\n @HostListener('paste', ['$event'])\r\n onPaste(event: ClipboardEvent): void {\r\n if (this.filterType) {\r\n let clipboardData: DataTransfer = null as any;\r\n\r\n if (event.clipboardData) {\r\n clipboardData = event.clipboardData;\r\n } else if ('clipboardData' in window) {\r\n clipboardData = (window as any).clipboardData.getData('text');\r\n }\r\n\r\n if (clipboardData) {\r\n const pastedText = clipboardData.getData('text');\r\n\r\n for (const char of pastedText.toString()) {\r\n const isSpace = char === ' ';\r\n const isAlpha = KeyfilterDirective.keyIsAlpha(char);\r\n const isNumeric = KeyfilterDirective.keyIsNumeric(char);\r\n const isDigit = KeyfilterDirective.keyIsDigit(char);\r\n const isAlphaNumeric = isAlpha || isDigit;\r\n\r\n const charIsValid = (isSpace && this.allowSpaces) ||\r\n (this.filterType === 'alpha' && isAlpha) ||\r\n (this.filterType === 'numeric' && isNumeric) ||\r\n (this.filterType === 'digits' && isDigit) ||\r\n (this.filterType === 'alphanumeric' && isAlphaNumeric);\r\n\r\n if (!charIsValid) {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n @HostListener('blur')\r\n onBlur(): void {\r\n if (this.filterType === 'numeric' && !KeyfilterDirective.valueIsNumeric(this.hostElement.nativeElement.value)) {\r\n this.hostElement.nativeElement.value = '';\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { KeyfilterDirective } from './keyfilter.directive';\n\n@NgModule({\n declarations: [KeyfilterDirective],\n imports: [CommonModule],\n exports: [KeyfilterDirective]\n})\nexport class ParticleKeyfilterModule { }\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { Notification } from '../models/notification.model';\r\n\r\n/**\r\n * Service for adding/deleting notifications\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NotificationService {\r\n\r\n /**\r\n * Valid characters that a notification ID can be composed from\r\n * @private\r\n */\r\n private static readonly ID_CHARACTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\r\n\r\n /**\r\n * BehaviorSubject tracking an array of active notifications\r\n * @private\r\n */\r\n private readonly _notifications = new BehaviorSubject<Array<Notification>>([]);\r\n\r\n /**\r\n * The number of milliseconds before an added notification automatically removes itself.\r\n * Defaults to 3000 milliseconds\r\n * @private\r\n */\r\n private notificationLife = 3000;\r\n\r\n /**\r\n * Generate a random ID\r\n * @private\r\n */\r\n private static generateId(): string {\r\n let result = '';\r\n\r\n for (let i = 0; i < 10; i++) {\r\n result += this.ID_CHARACTERS.charAt(Math.floor(Math.random() * this.ID_CHARACTERS.length));\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Dependency injection site\r\n */\r\n constructor() { }\r\n\r\n /**\r\n * Add a notification\r\n * @param notification the notification to add\r\n */\r\n add(notification: Notification): void {\r\n notification.id = NotificationService.generateId();\r\n\r\n const notifications = this._notifications.getValue();\r\n notifications.push(notification);\r\n\r\n this._notifications.next(notifications);\r\n\r\n setTimeout(\r\n () => this.deleteNotification(notification.id as string),\r\n this.notificationLife\r\n );\r\n }\r\n\r\n /**\r\n * Delete a notification\r\n * @param id the ID of the notification to delete\r\n */\r\n deleteNotification(id: string): void {\r\n const notifications = this._notifications.getValue();\r\n const foundIndex = notifications.findIndex(notification => notification.id === id);\r\n\r\n if (foundIndex > -1) {\r\n notifications.splice(foundIndex, 1);\r\n }\r\n\r\n this._notifications.next(notifications);\r\n }\r\n\r\n /**\r\n * Get notifications as an Observable\r\n */\r\n getNotifications(): Observable<Array<Notification>> {\r\n return this._notifications.asObservable();\r\n }\r\n\r\n /**\r\n * Set the number of milliseconds before added notifications disappear\r\n * @param milliseconds the number of milliseconds to set\r\n */\r\n setNotificationLife(milliseconds: number): void {\r\n this.notificationLife = milliseconds;\r\n }\r\n}\r\n","import {\r\n animate,\r\n animateChild,\r\n query,\r\n stagger,\r\n style,\r\n transition,\r\n trigger\r\n} from '@angular/animations';\r\nimport {Component, Input} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Notification } from './models/notification.model';\r\nimport { NotificationService } from './services/notification.service';\r\nimport {NotificationText} from '../../shared/models/particle-component-text.model';\r\n\r\n/**\r\n * Component for displaying notifications\r\n */\r\n@Component({\r\n selector: 'particle-notification',\r\n templateUrl: './notification.component.html',\r\n styleUrls: ['./notification.component.css'],\r\n animations: [\r\n // nice stagger effect when showing existing elements\r\n trigger('list', [\r\n transition(':enter', [\r\n // child animation selector + stagger\r\n query(\r\n '@items',\r\n stagger(300, animateChild()),\r\n { optional: true }\r\n )\r\n ]),\r\n ]),\r\n trigger('items', [\r\n // cubic-bezier for a tiny bouncing feel\r\n transition(':enter', [\r\n style({ transform: 'scale(0.5)', opacity: 0 }),\r\n animate('0.65s cubic-bezier(.8,-0.6,0.2,1.5)',\r\n style({ transform: 'scale(1)', opacity: 1 }))\r\n ]),\r\n transition(':leave', [\r\n style({ transform: 'scale(1)', opacity: 1, height: '*' }),\r\n animate('0.65s cubic-bezier(.8,-0.6,0.2,1.5)',\r\n style({\r\n transform: 'scale(0.5)',\r\n opacity: 0,\r\n height: '0px',\r\n marginLeft: '0px',\r\n marginTop: '0px',\r\n marginRight: '0px',\r\n marginBottom: '0px',\r\n paddingLeft: '0px',\r\n paddingTop: '0px',\r\n paddingRight: '0px',\r\n paddingBottom: '0px'\r\n })\r\n )\r\n ]),\r\n ])\r\n ]\r\n})\r\nexport class NotificationComponent {\r\n\r\n /**\r\n * Dependency injection site\r\n * @param service the NotificationService\r\n */\r\n constructor(\r\n private service: NotificationService\r\n ) {\r\n this.notifications$ = service.getNotifications();\r\n }\r\n\r\n @Input()\r\n text: NotificationText = {\r\n dismiss: 'Dismiss'\r\n } as NotificationText;\r\n\r\n /**\r\n * Array of notifications as an Observable\r\n */\r\n readonly notifications$: Observable<Array<Notification>>;\r\n\r\n /**\r\n * Map of notification severity to color class\r\n */\r\n readonly severityColorMap = {\r\n 'success': 'bg_green',\r\n 'warn': 'bg_orange',\r\n 'error': 'bg_red',\r\n 'info': 'bg_purple'\r\n };\r\n\r\n /**\r\n * Map of notification severity to icon class\r\n */\r\n readonly severityIconMap = {\r\n 'success': 'fa-check-circle',\r\n 'warn': 'fa-exclamation-circle',\r\n 'error': 'fa-circle-xmark',\r\n 'info': 'fa-info-circle'\r\n };\r\n\r\n /**\r\n * Delete a notification\r\n * @param id the ID of the notification to delete\r\n */\r\n deleteNotification(id: string): void {\r\n this.service.deleteNotification(id);\r\n }\r\n}\r\n","<!-- TODO: figure out why closing toast that is between others causes jumpy animation -->\r\n\r\n<!-- toast -->\r\n<div class=\"particle_notification_overlay ent_r2l_row\">\r\n <!-- spacer -->\r\n <!-- container -->\r\n <div class=\"row min_w280 pad_right5\" style=\"max-width:400px;\">\r\n <div @list class=\"row_block width100 \">\r\n <!-- item -->\r\n <div *ngFor=\"let notification of notifications$ | async\"\r\n @items\r\n class=\"row ent_r2l_row v_center content_color pad_10 mar_10 shadow ptl_brdr_radius\">\r\n <div class=\"col pad_5\">\r\n <div class=\"circle_36px\" [ngClass]=\"severityColorMap[notification.severity]\">\r\n <i class=\"fas {{severityIconMap[notification.severity]}} fa-lg ent_r2l_ico\"></i>\r\n </div>\r\n </div>\r\n <div class=\"col size_1 pad_5 ent_r2l_dir rc_gap\">\r\n <div class=\"col ptl_brdr_color border_right\"></div>\r\n <div class=\"col\">\r\n <div class=\"row_block width100\">\r\n <div class=\"text lg text_left text_wrap bold ent_r2l_txt\">{{notification.summary}}</div>\r\n <div class=\"text md text_left text_wrap ent_r2l_txt\">{{notification.detail}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col\" style=\"pointer-events: all;\">\r\n <button class=\"access btnset clear\"\r\n [attr.aria-label]=\"text.dismiss\"\r\n (click)=\"deleteNotification($any(notification.id))\">\r\n <div class=\"circle_20px ptl_brdr_color ptl_brdr_size ptl_input_bg_color\">\r\n <i class=\"fas fa-times\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {NotificationComponent} from './notification.component';\r\n\r\n@NgModule({\r\n declarations: [NotificationComponent],\r\n imports: [CommonModule],\r\n exports: [NotificationComponent]\r\n})\r\nexport class ParticleNotificationModule {\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport {\r\n add,\r\n endOfDay,\r\n endOfMonth,\r\n endOfWeek,\r\n getWeek,\r\n isEqual,\r\n isWithinInterval,\r\n setWeek,\r\n startOfWeek,\r\n sub\r\n} from 'date-fns';\r\nimport { BehaviorSubject, Observable, combineLatest, map, shareReplay, withLatestFrom, } from 'rxjs';\r\nimport { PopoverComponent } from '../popover/popover.component';\r\nimport {WeekPickerText} from '../../shared/models/particle-component-text.model';\r\n\r\n/**\r\n * Interface representing a Date broken down by day/date/week/month/year\r\n * with extended metadata\r\n */\r\ndeclare interface MetaDate {\r\n\r\n /**\r\n * The day of the week (starting at 0)\r\n */\r\n day: number;\r\n\r\n /**\r\n * The day of the month (starting at 1)\r\n */\r\n date: number;\r\n\r\n /**\r\n * The week of the year\r\n */\r\n week: number;\r\n\r\n /**\r\n * The month (starting at 0)\r\n */\r\n month: number;\r\n\r\n /**\r\n * The full year\r\n */\r\n year: number;\r\n\r\n /**\r\n * Whether the day is selectable\r\n */\r\n selectable: boolean;\r\n}\r\n\r\n/**\r\n * Interface representing a week of the year with metadata\r\n */\r\ndeclare interface MetaWeek {\r\n\r\n /**\r\n * The week of the year (starting at 1)\r\n */\r\n week: number;\r\n\r\n /**\r\n * The year of the week\r\n */\r\n year: number;\r\n\r\n /**\r\n * Whether the week can be selected in the week picker\r\n */\r\n selectable: boolean;\r\n\r\n /**\r\n * The numeric dates of the days in the week\r\n */\r\n dates: Array<number>;\r\n}\r\n\r\n/**\r\n * Component to allow a user to select a week\r\n */\r\n@Component({\r\n selector: 'particle-week-picker',\r\n templateUrl: './week-picker.component.html',\r\n styleUrls: ['./week-picker.component.css'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => WeekPickerComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class WeekPickerComponent implements ControlValueAccessor {\r\n\r\n /**\r\n * Set the value of the week picker\r\n * @param value the value to set\r\n */\r\n @Input()\r\n set value(value: { start: Date, end: Date }) {\r\n if (value?.start && value?.end) {\r\n const startWeek = getWeek(value.start);\r\n const endWeek = getWeek(value.end);\r\n\r\n if (startWeek !== endWeek) {\r\n throw new Error('Start and end must be part of the same week of the year');\r\n } else if (value.start.getDay() !== 0 || value.end.getDay() !== 6) {\r\n throw new Error('Start must be the beginning of its week and end must be the end of its week');\r\n }\r\n\r\n this._internalValue.next(value);\r\n } else {\r\n this._internalValue.next(null as any);\r\n this._selectedMonth.next(this.currentDate.month);\r\n this._selectedYear.next(this.currentDate.year);\r\n }\r\n\r\n this._value = value as any;\r\n }\r\n\r\n /**\r\n * Set disabled\r\n */\r\n @Input()\r\n set disabled(disabled: boolean) {\r\n this._disabled = disabled;\r\n }\r\n\r\n /**\r\n * Set the valid date boundary for the week picker\r\n * @param dateRange\r\n */\r\n @Input()\r\n set dateRange(dateRange: { start?: Date, end?: Date }) {\r\n this.setSelectionInterval(dateRange);\r\n this.setCurrentDateSelectable();\r\n }\r\n\r\n /**\r\n * Class list to apply to the date range input\r\n */\r\n @Input()\r\n inputClassList = null as any;\r\n\r\n /**\r\n * Class list to apply to the week picker button\r\n */\r\n @Input()\r\n calendarButtonClassList = '';\r\n\r\n /**\r\n * The aria label to apply to the date range input\r\n */\r\n @Input()\r\n ariaLabel = 'Date';\r\n\r\n /**\r\n * Format for the selected date range in the selection preview. Must\r\n * be a valid Angular DatePipe format\r\n */\r\n @Input()\r\n dateFormat = 'MM/dd/y';\r\n\r\n /**\r\n * Close the picker when a selection is made\r\n */\r\n @Input()\r\n closeOnSelect = true;\r\n\r\n @Input()\r\n text: WeekPickerText = {\r\n openCalendar: 'open calendar to select week',\r\n selectWeek: 'Select a week',\r\n selectYear: 'Select a year',\r\n selectMonth: 'Select a month',\r\n january: 'January',\r\n february: 'February',\r\n march: 'March',\r\n april: 'April',\r\n may: 'May',\r\n june: 'June',\r\n july: 'July',\r\n august: 'August',\r\n september: 'September',\r\n october: 'October',\r\n november: 'November',\r\n december: 'December',\r\n sundayAbbr: 'Su',\r\n mondayAbbr: 'Mo',\r\n tuesdayAbbr: 'Tu',\r\n wednesdayAbbr: 'We',\r\n thursdayAbbr: 'Th',\r\n fridayAbbr: 'Fr',\r\n saturdayAbbr: 'Sa',\r\n selectLastWeek: 'Select last week',\r\n lastWeek: 'Last Week',\r\n resetWeekSelection: 'Reset week selection to current week',\r\n selectNextWeek: 'Select next week',\r\n nextWeek: 'Next Week'\r\n } as WeekPickerText;\r\n\r\n /**\r\n * Event emitted on week select\r\n */\r\n @Output()\r\n weekSelected = new EventEmitter<{ start: Date, end: Date }>();\r\n\r\n /**\r\n * ViewChild of the calendar popover\r\n */\r\n @ViewChild('calendarPopover')\r\n calendarPopover: PopoverComponent = null as any;\r\n\r\n /**\r\n * The current date\r\n */\r\n readonly currentDate: MetaDate;\r\n\r\n /**\r\n * BehaviorSubject tracking the value of the week picker\r\n */\r\n readonly _internalValue = new BehaviorSubject<{ start: Date, end: Date }>(null as any);\r\n\r\n /**\r\n * BehaviorSubject tracking the selectable date range\r\n */\r\n readonly _validSelectionInterval = new BehaviorSubject<{ start: Date, end: Date }>(null as any);\r\n\r\n /**\r\n * BehaviorSubject tracking the currently selected month\r\n */\r\n readonly _selectedMonth = new BehaviorSubject(0);\r\n\r\n /**\r\n * BehaviorSubject tracking the currently selected year\r\n */\r\n readonly _selectedYear = new BehaviorSubject(1970);\r\n\r\n /**\r\n * The selected week of the year of the start of the selection as an Observable\r\n */\r\n readonly selectedWeek$: Observable<number> = this._internalValue.pipe(\r\n map(value => {\r\n return !value?.start ? 0 : getWeek(value.start);\r\n }),\r\n shareReplay()\r\n );\r\n\r\n /**\r\n * The year of the start of the selected week as an Observable\r\n */\r\n readonly selectedYear$: Observable<number> = this._internalValue.pipe(\r\n map(value => {\r\n return !value?.start ? 0 : value.start.getFullYear();\r\n }),\r\n shareReplay()\r\n );\r\n\r\n /**\r\n * Observable boolean representing if next week (relative to the current selection) is selectable\r\n */\r\n readonly canSelectNextWeek$: Observable<boolean> = this.selectedWeek$.pipe(\r\n withLatestFrom(this._validSelectionInterval, this._selectedYear),\r\n map(([selectedWeek, selectionInterval, selectedYear]) => {\r\n let canSelect = false;\r\n\r\n if (selectedWeek > 0 && selectionInterval) {\r\n const selectedYearStart = new Date(selectedYear, 0, 1);\r\n const weekDate = setWeek(selectedYearStart, selectedWeek);\r\n const nextWeekDate = add(weekDate, { weeks: 1 });\r\n const nextWeekStartDate = startOfWeek(nextWeekDate);\r\n const nextWeekEndDate = endOfWeek(nextWeekDate);\r\n\r\n canSelect = isWithinInterval(nextWeekStartDate, selectionInterval) &&\r\n isWithinInterval(nextWeekEndDate, selectionInterval);\r\n }\r\n\r\n return canSelect;\r\n })\r\n );\r\n\r\n /**\r\n * Observable boolean representing if last week (relative to the current selection) is selectable\r\n */\r\n readonly canSelectLastWeek$: Observable<boolean> = this.selectedWeek$.pipe(\r\n withLatestFrom(this._validSelectionInterval, this._selectedYear),\r\n map(([selectedWeek, selectionInterval, selectedYear]) => {\r\n let canSelect = false;\r\n\r\n if (selectedWeek > 0 && selectionInterval) {\r\n const selectedYearStart = new Date(selectedYear, 0, 1);\r\n const weekDate = setWeek(selectedYearStart, selectedWeek);\r\n const lastWeekDate = sub(weekDate, { weeks: 1 });\r\n const lastWeekStartDate = startOfWeek(lastWeekDate);\r\n const lastWeekEndDate = endOfWeek(lastWeekDate);\r\n\r\n canSelect = isWithinInterval(lastWeekStartDate, selectionInterval) &&\r\n isWithinInterval(lastWeekEndDate, selectionInterval);\r\n }\r\n\r\n return canSelect;\r\n })\r\n );\r\n\r\n /**\r\n * The range of selectable years as an Observable\r\n */\r\n readonly validYearRange$: Observable<Array<number>> = this._validSelectionInterval.pipe(\r\n map(selectionInterval => WeekPickerComponent.generateYearRange(\r\n selectionInterval?.start?.getFullYear() ?? null,\r\n selectionInterval?.end?.getFullYear() ?? null,\r\n this.currentDate.year\r\n ))\r\n );\r\n\r\n /**\r\n * An array of MetaWeeks representing a month as an Observable\r\n */\r\n readonly fullMonth$: Observable<Array<MetaWeek>> = combineLatest([\r\n this._selectedMonth,\r\n this._selectedYear,\r\n this._validSelectionInterval\r\n ]).pipe(\r\n map(([month, year, selectionInterval]) => {\r\n let fullMonth: Array<MetaWeek> = null as any;\r\n\r\n if (selectionInterval) {\r\n fullMonth = WeekPickerComponent.generateMonth(\r\n month,\r\n year,\r\n {\r\n start: selectionInterval.start,\r\n end: selectionInterval.end\r\n }\r\n );\r\n }\r\n\r\n return fullMonth;\r\n })\r\n );\r\n\r\n /**\r\n * The value of the week picker\r\n * @private\r\n */\r\n private _value = null;\r\n\r\n /**\r\n * Whether the control is disabled\r\n * @private\r\n */\r\n private _disabled = false;\r\n\r\n /**\r\n * Generate an Array of numbers representing the span of years between the input\r\n * @param minYear the start of the range\r\n * @param maxYear the end of the range\r\n * @param currentYear the current year\r\n */\r\n private static generateYearRange(minYear: number, maxYear: number, currentYear: number): Array<number> {\r\n let start: number, end: number;\r\n if (!minYear && maxYear) {\r\n start = maxYear = 50;\r\n end = maxYear;\r\n } else if (minYear && !maxYear) {\r\n start = minYear;\r\n end = minYear + 50;\r\n } else if (minYear && maxYear) {\r\n start = minYear;\r\n end = maxYear;\r\n } else {\r\n start = currentYear - 100;\r\n end = currentYear + 50;\r\n }\r\n\r\n const range: Array<number> = [];\r\n for (let i = start; i <= end; i++) {\r\n range.push(i);\r\n }\r\n\r\n return range;\r\n }\r\n\r\n /**\r\n * Generate a month with week and selectable status metadata\r\n * @param month the month to generate\r\n * @param year the year of the month to generate\r\n * @param selectionInterval the interval representing the\r\n * minimum to the maximum week of the year\r\n * @private\r\n */\r\n private static generateMonth(month: number, year: number, selectionInterval: { start: Date, end: Date }): Array<MetaWeek> {\r\n const metaMonth: Array<MetaWeek> = [];\r\n const startOfMonth = new Date(year, month, 1);\r\n const monthInterval = { start: startOfMonth, end: endOfMonth(startOfMonth) };\r\n let scrollDate = sub(startOfMonth, { days: startOfMonth.getDay() });\r\n\r\n for (let i = 0; i < 6; i++) {\r\n const sundayOfWeek = sub(scrollDate, { days: scrollDate.getDay() });\r\n const saturdayOfWeek = add(scrollDate, { days: 6 - scrollDate.getDay() });\r\n\r\n metaMonth.push({\r\n week: getWeek(scrollDate),\r\n year: sundayOfWeek.getFullYear(),\r\n selectable: (isWithinInterval(sundayOfWeek, monthInterval) ||\r\n isWithinInterval(saturdayOfWeek, monthInterval)) &&\r\n isWithinInterval(sundayOfWeek, selectionInterval) &&\r\n isWithinInterval(saturdayOfWeek, selectionInterval),\r\n dates: []\r\n });\r\n\r\n for (let j = 0; j < 7; j++) {\r\n metaMonth[i].dates.push(scrollDate.getDate());\r\n scrollDate = add(scrollDate, { days: 1 });\r\n }\r\n }\r\n\r\n\r\n return metaMonth;\r\n }\r\n\r\n /**\r\n * Get the input date as a MetaDate\r\n * @param date the date to transform\r\n * @param selectable whether or not the date is selectable\r\n * @private\r\n */\r\n private static getMetaDate(date: Date, selectable = false): MetaDate {\r\n return {\r\n day: date.getDay(),\r\n date: date.getDate(),\r\n week: getWeek(date),\r\n month: date.getMonth(),\r\n year: date.getFullYear(),\r\n selectable: selectable\r\n };\r\n }\r\n\r\n /**\r\n * Function to call on change\r\n */\r\n onChange: (value: any) => void = () => {};\r\n\r\n /**\r\n * Function to call on touch\r\n */\r\n onTouched: () => any = () => {};\r\n\r\n /**\r\n * Dependency injection site\r\n * @param changeDetectorRef the Angular ChangeDetectorRef\r\n */\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n this.currentDate = WeekPickerComponent.getMetaDate(new Date(), false);\r\n }\r\n\r\n /**\r\n * Get the value of the week picker\r\n */\r\n get value(): { start: Date, end: Date } {\r\n return this._value as any;\r\n }\r\n\r\n /**\r\n * Get whether the control is disabled\r\n */\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n /**\r\n * Write value\r\n * @param value the value to write\r\n */\r\n writeValue(value: { start: Date, end: Date }): void {\r\n this.value = value;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Register function on change\r\n * @param fn the function to change\r\n */\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Register function on touch\r\n * @param fn the function to register\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Set disabled state\r\n * @param isDisabled whether or not the control is disabled\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Open the week picker popover\r\n * @param event the event to pass to the popover\r\n */\r\n openCalendar(event: Event): void {\r\n if (!this.disabled) {\r\n const selectionInterval = this._validSelectionInterval.getValue();\r\n if (!selectionInterval) {\r\n this.setSelectionInterval(null as any);\r\n }\r\n\r\n this.setCurrentDateSelectable();\r\n\r\n if (!this.value) {\r\n this._selectedMonth.next(this.currentDate.month);\r\n this._selectedYear.next(this.currentDate.year);\r\n } else {\r\n this._internalValue.next(this.value);\r\n this._selectedMonth.next(this.value.start.getMonth());\r\n this._selectedYear.next(this.value.start.getFullYear());\r\n }\r\n\r\n this.calendarPopover.toggle(event);\r\n }\r\n }\r\n\r\n /**\r\n * Handle week select\r\n * @param week the week of the year\r\n * @param selectable whether or not the week is selectable\r\n */\r\n onWeekSelect(week: number, selectable: boolean): void {\r\n const selectedYear = this._selectedYear.getValue();\r\n\r\n if (selectable) {\r\n const weekDate = setWeek(new Date(selectedYear, 0, 1), week);\r\n const weekStart = startOfWeek(weekDate);\r\n const weekEnd = endOfDay(endOfWeek(weekDate));\r\n const selectedWeek = { start: weekStart, end: weekEnd };\r\n\r\n this.updateModel(selectedWeek);\r\n\r\n if (this.closeOnSelect) {\r\n setTimeout(() => this.calendarPopover.close(), 200);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Select next week (relative to the week of the current selection)\r\n */\r\n selectNextWeek(): void {\r\n const nextWeekDate = add(this.value.start, { weeks: 1 });\r\n const nextWeekStart = startOfWeek(nextWeekDate);\r\n const nextWeekEnd = endOfDay(endOfWeek(nextWeekDate));\r\n const currentMonth = this.value.start.getMonth();\r\n const selectedWeek = { start: nextWeekStart, end: nextWeekEnd };\r\n\r\n this.updateModel(selectedWeek);\r\n\r\n if (nextWeekStart.getMonth() !== currentMonth) {\r\n this._selectedMonth.next(nextWeekStart.getMonth());\r\n this._selectedYear.next(nextWeekStart.getFullYear());\r\n }\r\n }\r\n\r\n /**\r\n * Select last week (relative to the week of the current selection)\r\n */\r\n selectLastWeek(): void {\r\n const lastWeekDate = sub(this.value.start, { weeks: 1 });\r\n const lastWeekStart = startOfWeek(lastWeekDate);\r\n const lastWeekEnd = endOfDay(endOfWeek(lastWeekDate));\r\n const currentMonth = this.value.end.getMonth();\r\n const selectedWeek = { start: lastWeekStart, end: lastWeekEnd };\r\n\r\n this.updateModel(selectedWeek);\r\n\r\n if (lastWeekEnd.getMonth() !== currentMonth) {\r\n this._selectedMonth.next(lastWeekStart.getMonth());\r\n this._selectedYear.next(lastWeekStart.getFullYear());\r\n }\r\n }\r\n\r\n /**\r\n * Select the current week\r\n */\r\n selectCurrentWeek(): void {\r\n const thisWeekDate = new Date(this.currentDate.year, this.currentDate.month, this.currentDate.date);\r\n const thisWeekStart = startOfWeek(thisWeekDate);\r\n const thisWeekEnd = endOfDay(endOfWeek(thisWeekDate));\r\n\r\n this.updateModel({ start: thisWeekStart, end: thisWeekEnd });\r\n\r\n this._selectedMonth.next(this.currentDate.month);\r\n this._selectedYear.next(this.currentDate.year);\r\n }\r\n\r\n /**\r\n * Update model\r\n * @param value the new value of the model\r\n * @private\r\n */\r\n private updateModel(value: { start: Date, end: Date }): void {\r\n const valueBeforeUpdate = this.value;\r\n\r\n if (!this.disabled) {\r\n this.value = value;\r\n\r\n if (!isEqual(valueBeforeUpdate.start, this.value.start) &&\r\n !isEqual(valueBeforeUpdate.end, this.value.end)) {\r\n this.onChange(this.value);\r\n this.weekSelected.emit(this.value);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Set the selection interval\r\n * @param interval the input selection interval\r\n * @private\r\n */\r\n private setSelectionInterval(interval: { start?: Date, end?: Date }): void {\r\n if (!interval) {\r\n throw new Error('Start date must be less than end date');\r\n }\r\n\r\n if ((interval as any)?.start > (interval as any)?.end) {\r\n throw new Error('Start date must be less than end date');\r\n }\r\n\r\n this._validSelectionInterval.next({\r\n start: (interval as any)?.start ?? new Date(this.currentDate.year - 100, 0, 1),\r\n end: (interval as any)?.end ?? new Date(this.currentDate.year + 50, 11, 31)\r\n });\r\n }\r\n\r\n /**\r\n * Set the selectable status of the current date\r\n * @private\r\n */\r\n private setCurrentDateSelectable(): void {\r\n const today = new Date();\r\n const selectionInterval = this._validSelectionInterval.getValue();\r\n const startOfCurrentWeek = sub(today, { days: this.currentDate.day });\r\n const endOfCurrentWeek = add(today, { days: 6 - this.currentDate.day });\r\n\r\n this.currentDate.selectable = isWithinInterval(startOfCurrentWeek, selectionInterval) &&\r\n isWithinInterval(endOfCurrentWeek, selectionInterval);\r\n }\r\n}\r\n","<div style=\"cursor:default;overflow: hidden;\"\r\n [ngClass]=\"inputClassList ? '' : 'row ptl_input ptl_input_height ptl_input_bg_color ptl_brdr_color ptl_brdr_size ptl_brdr_radius ent_r2l_dir'\"\r\n [style.filter]=\"disabled ? 'brightness(.95)' : ''\">\r\n <button (click)=\"openCalendar($event)\"\r\n aria-haspopup=\"dialog\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-label]=\"ariaLabel + ', ' + text.openCalendar\"\r\n [attr.aria-expanded]=\"calendarPopover.visible\"\r\n [ngClass]=\"inputClassList ? inputClassList : 'clear'\"\r\n type=\"button\"\r\n class=\"access btnset width100 height100 center_center\"\r\n style=\"outline-offset: -2px;\"\r\n >\r\n <div class=\"col size_1 height100 width100 ptl_input_text_size ptl_input_padding v_center\">\r\n <ng-container *ngIf=\"_internalValue | async as internalValue else placeholderTemplate\">\r\n {{internalValue.start | date: dateFormat}} - {{internalValue.end | date: dateFormat}}\r\n </ng-container>\r\n <ng-template #placeholderTemplate>\r\n <div class=\"ent_r2l_txt\">{{text.selectWeek}}...</div>\r\n </ng-template>\r\n </div>\r\n <div class=\"col min_w50 height100 center_center border_left\"\r\n [ngClass]=\"calendarButtonClassList ? calendarButtonClassList : 'bg_overlay ptl_brdr_color'\">\r\n <div class=\"width100 height100 center_center\">\r\n <i class=\"fas fa-calendar-week ptl_input_text_size\"></i>\r\n </div>\r\n </div>\r\n </button>\r\n</div>\r\n\r\n\r\n<!-- week picker input\r\n<div class=\"wwp_container\" style=\"cursor:default;\"\r\n [ngClass]=\"inputClassList\"\r\n [style.filter]=\"disabled ? 'brightness(.95)' : ''\">\r\n\r\n <button (click)=\"openCalendar($event)\"\r\n aria-haspopup=\"dialog\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-label]=\"ariaLabel + ', ' + text.openCalendar\"\r\n [attr.aria-expanded]=\"calendarPopover.visible\"\r\n class=\"access content_color wwp_input\">\r\n <ng-container *ngIf=\"_internalValue | async as internalValue else placeholderTemplate\">\r\n {{internalValue.start | date: dateFormat}} - {{internalValue.end | date: dateFormat}}\r\n </ng-container>\r\n <ng-template #placeholderTemplate>\r\n <div class=\"wwp_placeholder\">{{text.selectWeek}}...</div>\r\n </ng-template>\r\n </button>\r\n <div class=\"wwp_button\" [ngClass]=\"calendarButtonClassList\">\r\n <i class=\"fas fa-calendar-week\"></i>\r\n </div>\r\n</div>\r\n-->\r\n<!-- TODO: instead of offset 1, attach to wwp_container -->\r\n<!-- calendar widget -->\r\n<particle-popover [offset]=\"1\" #calendarPopover>\r\n <!-- month / year select -->\r\n <div class=\"wwp_options\">\r\n <div class=\"content_color pad_5 pad_bot0\">\r\n <div class=\"row space_between\">\r\n <div class=\"col size_1 mar_5\">\r\n <select #yearSelect\r\n [ngModel]=\"_selectedYear | async\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n (change)=\"_selectedYear.next(+yearSelect.value)\"\r\n class=\"access input sm content_color\"\r\n [attr.aria-label]=\"text.selectYear\">\r\n <option *ngFor=\"let year of validYearRange$ | async\"\r\n [value]=\"year\">\r\n {{year}}\r\n </option>\r\n </select>\r\n </div>\r\n <div class=\"col size_2 mar_5\">\r\n <select #monthSelect\r\n [ngModel]=\"_selectedMonth | async\"\r\n (change)=\"_selectedMonth.next(+monthSelect.value)\"\r\n class=\"access input sm content_color\"\r\n [attr.aria-label]=\"text.selectMonth\">\r\n <option value=\"0\">{{text.january}}</option>\r\n <option value=\"1\">{{text.february}}</option>\r\n <option value=\"2\">{{text.march}}</option>\r\n <option value=\"3\">{{text.april}}</option>\r\n <option value=\"4\">{{text.may}}</option>\r\n <option value=\"5\">{{text.june}}</option>\r\n <option value=\"6\">{{text.july}}</option>\r\n <option value=\"7\">{{text.august}}</option>\r\n <option value=\"8\">{{text.september}}</option>\r\n <option value=\"9\">{{text.october}}</option>\r\n <option value=\"10\">{{text.november}}</option>\r\n <option value=\"11\">{{text.december}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"content_color pad_5\">\r\n <!-- weekdays -->\r\n <div class=\"mar_5 mar_bot10\">\r\n <div class=\"row wrap space_between ptl_input_bg_color ptl_brdr_color border_bottom brad_3 mar_bot5\">\r\n <div class=\"wwp_weekday\">{{text.sundayAbbr}}</div>\r\n <div class=\"wwp_weekday\">{{text.mondayAbbr}}</div>\r\n <div class=\"wwp_weekday\">{{text.tuesdayAbbr}}</div>\r\n <div class=\"wwp_weekday\">{{text.wednesdayAbbr}}</div>\r\n <div class=\"wwp_weekday\">{{text.thursdayAbbr}}</div>\r\n <div class=\"wwp_weekday\">{{text.fridayAbbr}}</div>\r\n <div class=\"wwp_weekday\">{{text.saturdayAbbr}}</div>\r\n </div>\r\n <!-- days -->\r\n <ng-container *ngIf=\"fullMonth$ | async as fullMonth\">\r\n <ng-container *ngFor=\"let week of fullMonth\">\r\n <div class=\"wwp_week\"\r\n [ngClass]=\"{ 'currentWeek': week.week === currentDate.week && week.year === currentDate.year }\">\r\n <button (click)=\"onWeekSelect(week.week, week.selectable)\"\r\n [disabled]=\"!week.selectable\"\r\n [ngClass]=\"((selectedWeek$ | async) === week.week) && ((selectedYear$ | async) === week.year)\r\n ? 'ok_button_color'\r\n : 'bg_overlay_rev brdr hov_bg'\"\r\n class=\"access wwp_week_btn\">\r\n <ng-container *ngFor=\"let date of week.dates\">\r\n <div class=\"wwp_day\">\r\n {{date}}\r\n </div>\r\n </ng-container>\r\n </button>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"bg_overlay brdr hr mar_5\"></div>\r\n <div class=\"row space_between\">\r\n <button *ngIf=\"canSelectLastWeek$ | async else disabledLastWeekButton\"\r\n (click)=\"selectLastWeek()\"\r\n class=\"access btn sm bg_overlay_rev brdr mar_5 hov_bg\"\r\n [attr.aria-label]=\"text.selectLastWeek\">\r\n <i class=\"fas fa-chevron-left mar_right5\"></i><span class=\"text bold\">{{text.lastWeek}}</span>\r\n </button>\r\n <ng-template #disabledLastWeekButton>\r\n <button disabled\r\n class=\"access btn sm mar_5\"\r\n [attr.aria-label]=\"text.selectLastWeek\">\r\n <i class=\"fas fa-chevron-left mar_right5\"></i><span class=\"text bold\">{{text.lastWeek}}</span>\r\n </button>\r\n </ng-template>\r\n <ng-container *ngIf=\"currentDate.selectable\">\r\n <button *ngIf=\"((selectedWeek$ | async) === currentDate.week) && ((selectedYear$ | async) === currentDate.year) else selectCurrentWeekButton\"\r\n disabled\r\n class=\"access btn sm mar_5\"\r\n [attr.aria-label]=\"text.resetWeekSelection\">\r\n <i class=\"fas fa-undo-alt\"></i>\r\n </button>\r\n <ng-template #selectCurrentWeekButton>\r\n <button (click)=\"selectCurrentWeek()\"\r\n particleTooltip=\"Reset to Current Week\"\r\n class=\"access btn sm bg_overlay_rev brdr hov_bg mar_5\"\r\n [attr.aria-label]=\"text.resetWeekSelection\">\r\n <i class=\"fas fa-undo-alt\"></i>\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n <button\r\n *ngIf=\"canSelectNextWeek$ | async else disabledNextWeekButton\"\r\n (click)=\"selectNextWeek()\"\r\n class=\"access btn sm bg_overlay_rev brdr mar_5 hov_bg\"\r\n [attr.aria-label]=\"text.selectNextWeek\">\r\n <span class=\"text bold\">{{text.nextWeek}}</span><i class=\"fas fa-chevron-right mar_left5\"></i>\r\n </button>\r\n <ng-template #disabledNextWeekButton>\r\n <button disabled\r\n class=\"access btn sm mar_5\"\r\n [attr.aria-label]=\"text.selectNextWeek\">\r\n <span class=\"text bold\">{{text.nextWeek}}</span><i class=\"fas fa-chevron-right mar_left5\"></i>\r\n </button>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n</particle-popover>\r\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ParticleOrdinalNumberPipeModule } from '../ordinal-number-pipe/ordinal-number-pipe.module';\nimport { ParticlePopoverModule } from '../popover/popover.module';\nimport { WeekPickerComponent } from './week-picker.component';\nimport {ParticleTooltipModule} from '../tooltip/tooltip.module';\n\n@NgModule({\n declarations: [WeekPickerComponent],\n imports: [\n CommonModule,\n ParticleOrdinalNumberPipeModule,\n FormsModule,\n A11yModule,\n ParticlePopoverModule,\n ParticleTooltipModule\n ],\n exports: [WeekPickerComponent]\n})\nexport class ParticleWeekPickerModule { }\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n OnInit,\r\n Output,\r\n Renderer2,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport {ColorPickerText} from '../../shared/models/particle-component-text.model';\r\n\r\n/**\r\n * Component that wraps the native HTML5 color picker for supported browsers\r\n */\r\n@Component({\r\n selector: 'particle-color-picker',\r\n templateUrl: './color-picker.component.html',\r\n styleUrls: ['./color-picker.component.css'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ColorPickerComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class ColorPickerComponent implements ControlValueAccessor, OnInit {\r\n\r\n /**\r\n * Regex to match a hexadecimal string (000000)\r\n * @private\r\n */\r\n private static readonly FULL_HEX_REGEX = new RegExp('^[0-9A-Fa-f]{6}$');\r\n\r\n /**\r\n * Regex to match a short hexadecimal string (000)\r\n * @private\r\n */\r\n private static readonly SHORT_HEX_REGEX = new RegExp('^[0-9A-Fa-f]{3}$');\r\n\r\n /**\r\n * Regex to match a valid hex character (A-F, a-f, 0-9)\r\n * @private\r\n */\r\n private static readonly HEX_CHARACTER_REGEX = new RegExp('^[0-9A-Fa-f]$');\r\n\r\n /**\r\n * Navigation keys\r\n * @private\r\n */\r\n private static readonly NAVIGATION_KEYS = [\r\n 'Enter', 'Esc', 'Escape', 'Tab', 'Shift',\r\n 'ArrowLeft', 'ArrowUp', 'ArrowRight', 'ArrowDown',\r\n 'Backspace', 'Delete'\r\n ];\r\n\r\n /**\r\n * Set the value of the color picker\r\n * @param value the value to set\r\n */\r\n @Input()\r\n set value(value: string) {\r\n let hexString = value ?? '';\r\n\r\n if (hexString) {\r\n ColorPickerComponent.FULL_HEX_REGEX.lastIndex = 0;\r\n ColorPickerComponent.SHORT_HEX_REGEX.lastIndex = 0;\r\n\r\n hexString = hexString.replace('#', '').toLowerCase();\r\n\r\n if (ColorPickerComponent.SHORT_HEX_REGEX.test(hexString)) {\r\n hexString = ColorPickerComponent.expandShortHexString(hexString);\r\n }\r\n\r\n if (!ColorPickerComponent.FULL_HEX_REGEX.test(hexString)) {\r\n hexString = '';\r\n }\r\n }\r\n\r\n this._value = hexString;\r\n\r\n if (this.colorInput) {\r\n this.colorInput.nativeElement.value = this._value;\r\n }\r\n }\r\n\r\n /**\r\n * Set disabled\r\n * @param disabled whether or not the control should be disabled\r\n */\r\n @Input()\r\n set disabled(disabled: boolean) {\r\n this._disabled = disabled;\r\n }\r\n\r\n /**\r\n * Class list to apply to the hex string input\r\n */\r\n @Input()\r\n classList: string = null as any;\r\n\r\n @Input()\r\n text: ColorPickerText = {\r\n chooseColor: 'Choose a Color',\r\n enterHexCode: 'Enter a Hex Code'\r\n } as ColorPickerText;\r\n\r\n /**\r\n * Event emitted on hex string input event. Emits the current value of the input\r\n */\r\n @Output()\r\n // eslint-disable-next-line @angular-eslint/no-output-native\r\n input = new EventEmitter<string>();\r\n\r\n /**\r\n * Event emitted on color selection from color picker (color picker widget dismissed)\r\n * or valid hex string typed in input. Emits the current value of the input\r\n */\r\n @Output()\r\n colorSelected = new EventEmitter<string>();\r\n\r\n /**\r\n * ViewChild of the color input element\r\n */\r\n @ViewChild('colorInput')\r\n colorInput: ElementRef<HTMLInputElement> = null as any;\r\n\r\n /**\r\n * Whether to render the component\r\n */\r\n render: boolean = false;\r\n\r\n /**\r\n * Whether the native HTML5 color picker is supported\r\n */\r\n colorPickerSupported: boolean = false;\r\n\r\n /**\r\n * The value of the color picker\r\n */\r\n _value = '';\r\n\r\n /**\r\n * Whether the color picker is disabled\r\n * @private\r\n */\r\n _disabled = false;\r\n\r\n /**\r\n * Expand a short hex string (#abc) into its full form (#aabbcc)\r\n * @param hexString the short hex string to expand\r\n * @private\r\n */\r\n private static expandShortHexString(hexString: string): string {\r\n let fullHexString = '';\r\n\r\n for (let i = 0; i <= 2; i++) {\r\n fullHexString += `${hexString[i]}${hexString[i]}`;\r\n }\r\n\r\n return fullHexString;\r\n }\r\n\r\n /**\r\n * Function to call on change\r\n */\r\n onChange: (value: any) => void = () => {};\r\n\r\n /**\r\n * Function to call on touch\r\n */\r\n onTouched: () => any = () => {};\r\n\r\n /**\r\n * Dependency injection site\r\n * @param renderer the Angular renderer\r\n * @param changeDetectorRef the Angular ChangeDetectorRef\r\n */\r\n constructor(private renderer: Renderer2, private changeDetectorRef: ChangeDetectorRef) { }\r\n\r\n /**\r\n * Init component, check for color picker browser support\r\n */\r\n ngOnInit(): void {\r\n this.colorPickerSupported = this.isColorPickerSupported();\r\n this.render = true;\r\n }\r\n\r\n /**\r\n * Write value\r\n * @param value the value to write\r\n */\r\n writeValue(value: string): void {\r\n this.value = value;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Register on change function\r\n * @param fn the function to register\r\n */\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Register on touched function\r\n * @param fn the function to register\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Set whether the control should be disabled\r\n * @param isDisabled disabled or not\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Prevent illegal input\r\n * @param event the keydown KeyboardEvent\r\n */\r\n handleKeyDown(event: KeyboardEvent): void {\r\n const { key } = event;\r\n const { selectionStart, selectionEnd, value } = event.target as HTMLInputElement;\r\n\r\n if (!ColorPickerComponent.NAVIGATION_KEYS.includes(key) && !event.ctrlKey) {\r\n ColorPickerComponent.HEX_CHARACTER_REGEX.lastIndex = 0;\r\n\r\n const preventDefault = !ColorPickerComponent.HEX_CHARACTER_REGEX.test(key) ||\r\n (value.length >= 6 && (selectionStart === selectionEnd));\r\n\r\n if (preventDefault) {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Update model\r\n * @param value the new value of the model\r\n * @param emitColorSelected whether or not emit the color selected event\r\n * @private\r\n */\r\n updateModel(value: string, emitColorSelected = false): void {\r\n ColorPickerComponent.FULL_HEX_REGEX.lastIndex = 0;\r\n let updateValue = value;\r\n\r\n if (updateValue) {\r\n updateValue = updateValue.replace('#', '');\r\n }\r\n\r\n if (!this._disabled && ColorPickerComponent.FULL_HEX_REGEX.test(updateValue)) {\r\n const valueBeforeUpdate = this._value;\r\n this.value = updateValue;\r\n\r\n if (valueBeforeUpdate !== this._value) {\r\n this.onChange(`#${updateValue}`);\r\n\r\n if (emitColorSelected) {\r\n this.colorSelected.emit(`#${updateValue}`);\r\n }\r\n }\r\n } else if (!value) {\r\n this.value = null as any;\r\n this.onChange(null);\r\n }\r\n }\r\n\r\n /**\r\n * Null out value on blur if not valid hex string, otherwise update model\r\n * @param value the value to check\r\n */\r\n handleBlur(value: string): void {\r\n ColorPickerComponent.SHORT_HEX_REGEX.lastIndex = 0;\r\n ColorPickerComponent.FULL_HEX_REGEX.lastIndex = 0;\r\n\r\n if (ColorPickerComponent.SHORT_HEX_REGEX.test(value)) {\r\n this.updateModel(ColorPickerComponent.expandShortHexString(value), true);\r\n } else if (ColorPickerComponent.FULL_HEX_REGEX.test(value)) {\r\n this.updateModel(value, true);\r\n } else {\r\n this.value = null as any;\r\n this.onChange(null);\r\n }\r\n }\r\n\r\n /**\r\n * Prevent pasting a non-hex string\r\n * @param event the paste ClipboardEvent\r\n */\r\n handlePaste(event: ClipboardEvent): void {\r\n event.preventDefault();\r\n\r\n if (!this._disabled) {\r\n let clipboardData: DataTransfer = null as any;\r\n\r\n if (event.clipboardData) {\r\n clipboardData = event.clipboardData;\r\n } else if ('clipboardData' in window) {\r\n clipboardData = (window as any).clipboardData.getData('text');\r\n }\r\n\r\n if (clipboardData) {\r\n ColorPickerComponent.FULL_HEX_REGEX.lastIndex = 0;\r\n const pastedText = clipboardData.getData('text')\r\n .replace('#', '');\r\n\r\n if (ColorPickerComponent.FULL_HEX_REGEX.test(pastedText)) {\r\n this.updateModel(pastedText);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Determine if the browser supports the HTML5 color picker\r\n * @private\r\n */\r\n private isColorPickerSupported(): boolean {\r\n let colorPickerSupported = false;\r\n\r\n try {\r\n const inputElement: HTMLInputElement = this.renderer.createElement('input');\r\n inputElement.type = 'color';\r\n inputElement.value = '!';\r\n\r\n colorPickerSupported = inputElement.type === 'color' && inputElement.value !== '!';\r\n } catch (e) { }\r\n\r\n return colorPickerSupported;\r\n }\r\n}\r\n","<div *ngIf=\"render\" [style.filter]=\"_disabled ? 'brightness(.95)' : ''\"\r\n class=\"cp_container\"\r\n [ngClass]=\"classList ? classList : 'input md bg_overlay brdr content_color'\">\r\n <ng-container *ngIf=\"colorPickerSupported else colorSwatch\">\r\n <input #colorPicker\r\n type=\"color\"\r\n class=\"access cp_color\"\r\n [value]=\"'#' + _value\"\r\n [disabled]=\"_disabled\"\r\n [attr.aria-label]=\"text.chooseColor\"\r\n (input)=\"updateModel(colorPicker.value)\"\r\n (change)=\"updateModel(colorPicker.value); colorSelected.emit(colorPicker.value)\" />\r\n <i class=\"fas fa-caret-down cp_caret\"></i>\r\n </ng-container>\r\n <ng-template #colorSwatch>\r\n <div class=\"cp_swatch\">\r\n <div class=\"width100 height100 bg_overlay brdr\" style=\"border-radius:inherit;\"\r\n [style.background-color]=\"'#' + (_value || '000000')\"></div>\r\n </div>\r\n </ng-template>\r\n <div class=\"bg_overlay brdr vr cp_divider\"></div>\r\n <div class=\"cp_hashtag\">#</div>\r\n <input #colorInput\r\n type=\"text\"\r\n class=\"access cp_input\"\r\n placeholder=\"000000\"\r\n maxlength=\"6\"\r\n [attr.aria-label]=\"text.enterHexCode\"\r\n [ngModel]=\"_value\"\r\n [disabled]=\"_disabled\"\r\n (input)=\"input.emit(colorInput.value)\"\r\n (paste)=\"handlePaste($event)\"\r\n (keydown)=\"handleKeyDown($event)\"\r\n (ngModelChange)=\"updateModel($event, true)\"\r\n (blur)=\"handleBlur(colorInput.value)\" />\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ColorPickerComponent } from './color-picker.component';\n\n@NgModule({\n declarations: [ColorPickerComponent],\n imports: [CommonModule, FormsModule],\n exports: [ColorPickerComponent]\n})\nexport class ParticleColorPickerModule { }\n","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport {SliderText} from '../../shared/models/particle-component-text.model';\r\n\r\n/**\r\n * Component that wraps the native HTML5 slider\r\n */\r\n@Component({\r\n selector: 'particle-slider',\r\n templateUrl: './slider.component.html',\r\n styleUrls: ['./slider.component.css'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SliderComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class SliderComponent implements ControlValueAccessor, OnInit {\r\n\r\n /**\r\n * ViewChild of the slider input\r\n */\r\n @ViewChild('sliderInput')\r\n sliderInput: ElementRef<HTMLInputElement> = null as any;\r\n\r\n /**\r\n * Set the value of the component\r\n * @param value the value to set\r\n */\r\n @Input()\r\n set value(value: number) {\r\n this._value = value;\r\n this.setSliderWidth();\r\n }\r\n\r\n /**\r\n * Set the minimum slider value\r\n * @param min the value to set\r\n */\r\n @Input()\r\n set min(min: number) {\r\n this._min = isNaN(min) ? 0 : min;\r\n }\r\n\r\n /**\r\n * Set the maximum slider value\r\n * @param max the value to set\r\n */\r\n @Input()\r\n set max(max: number) {\r\n this._max = isNaN(max) ? 100 : max;\r\n }\r\n\r\n /**\r\n * Set the slider step size\r\n * @param step the value to set\r\n */\r\n @Input()\r\n set step(step: number) {\r\n this._step = isNaN(step) ? 1 : step;\r\n }\r\n\r\n /**\r\n * Set the disabled state of the slider/input\r\n * @param disabled the value to set\r\n */\r\n @Input()\r\n set disabled(disabled: boolean) {\r\n this._disabled = disabled;\r\n }\r\n\r\n /**\r\n * Set the input class list\r\n * @param inputClassList the value to set\r\n */\r\n @Input()\r\n set inputClassList(inputClassList: string) {\r\n this._inputClassList = inputClassList ? inputClassList : 'access input sm';\r\n }\r\n\r\n /**\r\n * The unit being represented by the slider\r\n */\r\n @Input()\r\n unit: string = null as any;\r\n\r\n /**\r\n * The aria-label to append to the slider/input\r\n */\r\n @Input()\r\n ariaLabel: string = null as any;\r\n\r\n @Input()\r\n text: SliderText = {\r\n selectAValue: 'Select a value',\r\n enterAValue: 'Enter a value'\r\n } as SliderText;\r\n\r\n /**\r\n * Event emitted on slider/slider input input event\r\n */\r\n @Output()\r\n // eslint-disable-next-line @angular-eslint/no-output-native\r\n input = new EventEmitter<number>();\r\n\r\n /**\r\n * The internal value of the component\r\n */\r\n _value: number = null as any;\r\n\r\n /**\r\n * The minimum slider value\r\n */\r\n _min = 0;\r\n\r\n /**\r\n * The maximum slider value\r\n */\r\n _max = 100;\r\n\r\n /**\r\n * The step size of the slider\r\n */\r\n _step = 1;\r\n\r\n /**\r\n * Whether the slider is disabled or not\r\n */\r\n _disabled: boolean = false;\r\n\r\n /**\r\n * The class list to apply to the number input\r\n */\r\n _inputClassList = 'access ptl_input ptl_input_height ptl_input_text_size ptl_input_padding ptl_input_bg_color ptl_brdr_color ptl_brdr_size ptl_brdr_radius';\r\n\r\n /**\r\n * The width of the colored section of the slider bar\r\n */\r\n sliderWidth = 0;\r\n\r\n /**\r\n * Function to call on change\r\n */\r\n onChange: (value: any) => void = () => {};\r\n\r\n /**\r\n * Function to call on touch\r\n */\r\n onTouched: () => any = () => {};\r\n\r\n /**\r\n * Dependency injection site\r\n * @param changeDetectorRef the Angular ChangeDetectorRef\r\n */\r\n constructor(private changeDetectorRef: ChangeDetectorRef) { }\r\n\r\n /**\r\n * Get the value of the component\r\n */\r\n get value(): number {\r\n return this._value;\r\n }\r\n\r\n /**\r\n * Init component\r\n */\r\n ngOnInit(): void {\r\n if (isNaN(this.value)) {\r\n this.value = isNaN(this._min) ? 0 : this._min;\r\n }\r\n }\r\n\r\n /**\r\n * Set internal value when external value changes\r\n * @param value the external value\r\n */\r\n writeValue(value: number): void {\r\n this.value = value;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Register onChange function\r\n * @param fn the function to register\r\n */\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Register onTouched function\r\n * @param fn the function to register\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Set the disabled state of the component\r\n * @param isDisabled disabled or not\r\n */\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Update value on input\r\n * @param value the new value of the component\r\n */\r\n handleInput(value: number): void {\r\n if (!this._disabled) {\r\n let valueToSet: number;\r\n\r\n if (isNaN(value) || value < this._min) {\r\n valueToSet = this._min;\r\n } else {\r\n valueToSet = Math.min(this._max, value);\r\n }\r\n\r\n if (this.value !== valueToSet) {\r\n this.value = valueToSet;\r\n this.sliderInput.nativeElement.value = String(valueToSet);\r\n this.onChange(valueToSet);\r\n } else {\r\n this.sliderInput.nativeElement.value = String(valueToSet);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Prevent the paste event from completing\r\n * @param event the paste ClipboardEvent\r\n */\r\n preventPaste(event: ClipboardEvent): void {\r\n event.preventDefault();\r\n }\r\n\r\n /**\r\n * Set the slider width\r\n * @private\r\n */\r\n private setSliderWidth(): void {\r\n this.sliderWidth = Math.min(100, (this.value - this._min)/(this._max - this._min) * 100);\r\n }\r\n}\r\n","<div class=\"row wrap v_center\">\r\n <!-- range slider -->\r\n <div class=\"col size_1 min_w100 v_center position_relative\" style=\"margin:0 12px 0 -3px;\">\r\n <div class=\"ws_track_container v_center position_absolute\">\r\n <div class=\"ws_track bg_overlay_rev brdr width100 position_absolute\"></div>\r\n <div class=\"ws_track_fill ok_button_color position_absolute\"\r\n [style.width]=\"sliderWidth + '%'\">\r\n </div>\r\n </div>\r\n <input #slider\r\n type=\"range\"\r\n [ngModel]=\"_value\"\r\n [min]=\"_min\" [max]=\"_max\" [step]=\"_step\"\r\n [disabled]=\"_disabled\"\r\n [attr.aria-label]=\"text.selectAValue + (ariaLabel ? ' - ' + ariaLabel : '')\"\r\n (input)=\"handleInput(+slider.value); input.emit(+slider.value)\"\r\n (change)=\"handleInput(+slider.value); input.emit(+slider.value)\"\r\n class=\"access\" style=\"width:100%; z-index: var(--z-frame); margin:10px 0;\" />\r\n </div>\r\n <div class=\"col v_center\">\r\n <!-- slider value input -->\r\n <input #sliderInput\r\n type=\"number\"\r\n [ngModel]=\"_value\"\r\n [ngClass]=\"_inputClassList\"\r\n [min]=\"_min\" [max]=\"_max\" [step]=\"_step\"\r\n [size]=\"(_max + '').length\"\r\n [disabled]=\"_disabled\"\r\n [attr.aria-label]=\"text.enterAValue + (ariaLabel ? ' - ' + ariaLabel : '')\"\r\n (input)=\"handleInput(+sliderInput.value); input.emit(+sliderInput.value)\"\r\n (blur)=\"handleInput(+sliderInput.value)\"\r\n (paste)=\"preventPaste($event)\"\r\n class=\"access\"\r\n style=\"width:auto;\" />\r\n <div class=\"text ptl_input_text_size mar_lr10\">{{unit}}</div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { SliderComponent } from './slider.component';\n\n@NgModule({\n declarations: [SliderComponent],\n exports: [\n SliderComponent\n ],\n imports: [\n CommonModule,\n FormsModule\n ]\n})\nexport class ParticleSliderModule { }\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[particleAccordionContent]'\r\n})\r\nexport class AccordionContentDirective {\r\n constructor(public templateRef: TemplateRef<any>) {}\r\n}\r\n","import {Directive, TemplateRef} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[particleAccordionHeader]'\r\n})\r\nexport class AccordionHeaderDirective {\r\n constructor(public templateRef: TemplateRef<any>) {}\r\n}\r\n","import {ContentChild, Directive, Input} from '@angular/core';\r\nimport {AccordionContentDirective} from './accordion-content.directive';\r\nimport {AccordionHeaderDirective} from './accordion-header.directive';\r\n\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: 'particle-accordion-item'\r\n})\r\nexport class AccordionItemDirective {\r\n\r\n @Input()\r\n header: string = null as any;\r\n\r\n @Input()\r\n disabled = false;\r\n\r\n @Input()\r\n open = false;\r\n\r\n @Input()\r\n headerClass: string = null as any;\r\n\r\n @ContentChild(AccordionHeaderDirective)\r\n headerTemplate: AccordionHeaderDirective = null as any;\r\n\r\n @ContentChild(AccordionContentDirective)\r\n content: AccordionContentDirective = null as any;\r\n}\r\n","import {\r\n AfterContentInit, AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChildren,\r\n Input,\r\n QueryList,\r\n ViewChildren\r\n} from '@angular/core';\r\nimport { AccordionItemDirective } from './directives/accordion-item.directive';\r\nimport {AccordionText} from '../../shared/models/particle-component-text.model';\r\n\r\n@Component({\r\n selector: 'particle-accordion',\r\n templateUrl: './accordion.component.html',\r\n styleUrls: ['./accordion.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AccordionComponent implements AfterContentInit, AfterViewInit {\r\n expanded = new Set<number>();\r\n\r\n @Input()\r\n multiple = false;\r\n\r\n @Input()\r\n height = '40px';\r\n\r\n @Input()\r\n headerClass = 'bg_overlay brdr border_bottom';\r\n\r\n @Input()\r\n textClass = 'md bolder';\r\n\r\n @Input()\r\n iconCollapsed = 'fas fa-caret-right';\r\n\r\n @Input()\r\n iconExpanded = 'fas fa-caret-down';\r\n\r\n @Input()\r\n showIcon = true;\r\n\r\n @Input()\r\n text: AccordionText = {\r\n expand: 'Expand',\r\n collapse: 'Collapse'\r\n } as AccordionText;\r\n\r\n @ContentChildren(AccordionItemDirective)\r\n items: QueryList<AccordionItemDirective> = null as any;\r\n\r\n @ViewChildren('ref')\r\n contentDivs: QueryList<any> = null as any;\r\n\r\n ngAfterContentInit(): void {\r\n for (let i = 0; i < this.items.length; i++) {\r\n const item = this.items.get(i) as AccordionItemDirective;\r\n if (item.open && !item.disabled) {\r\n this.expanded.add(i);\r\n if (!this.multiple) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n for (let i = 0; i < this.contentDivs.length; i++) {\r\n const el = this.contentDivs.get(i).nativeElement as HTMLDivElement;\r\n const item = this.items.get(i) as AccordionItemDirective;\r\n if (el) {\r\n if (item && item.open && !item.disabled) {\r\n el.style.maxHeight = el.scrollHeight + 'px';\r\n el.ariaHidden = 'false';\r\n } else {\r\n el.style.maxHeight = '0';\r\n el.ariaHidden = 'true';\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @param index - index of the accordion item\r\n */\r\n getToggleState = (index: number): any => {\r\n return this.toggleState.bind(this, index);\r\n }\r\n\r\n toggleState = (index: number): void => {\r\n if (this.expanded.has(index)) {\r\n this.expanded.delete(index);\r\n this.contentDivs.get(index).nativeElement.style.maxHeight = '0';\r\n this.contentDivs.get(index).nativeElement.ariaHidden = 'true';\r\n } else {\r\n if (!this.multiple) {\r\n this.expanded.clear();\r\n for (let i=0; i < this.contentDivs.length; i++) {\r\n this.contentDivs.get(i).nativeElement.style.maxHeight = '0';\r\n this.contentDivs.get(i).nativeElement.ariaHidden = 'true';\r\n }\r\n }\r\n\r\n this.expanded.add(index);\r\n this.contentDivs.get(index).nativeElement.style.maxHeight = `${this.contentDivs.get(index).nativeElement.scrollHeight}px`;\r\n this.contentDivs.get(index).nativeElement.ariaHidden = 'false';\r\n }\r\n }\r\n\r\n}\r\n","<div *ngFor=\"let item of items;index as i\" class=\"particle_accordion_item\" [class.disabled]=\"item.disabled\" [class.active]=\"expanded.has(i)\">\r\n <button type=\"button\" class=\"particle_accordion_header width100\"\r\n [ngClass]=\"(item.headerClass ? item.headerClass : headerClass) + (!item.disabled ? ' access' : '')\"\r\n [style.height]=\"height\"\r\n (click)=\"!item.disabled ? toggleState(i) : {}\"\r\n [attr.aria-label]=\"!expanded.has(i) ? text.expand : text.collapse\">\r\n <ng-container *ngIf=\"item.headerTemplate\">\r\n <ng-container *ngTemplateOutlet=\"item.headerTemplate.templateRef\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!item.headerTemplate\">\r\n <div class=\"text\" [ngClass]=\"textClass\" *ngIf=\"showIcon\">\r\n <span *ngIf=\"!expanded.has(i)\"><i [ngClass]=\"iconCollapsed + ' fa-fw'\"></i></span>\r\n <span *ngIf=\"expanded.has(i)\"><i [ngClass]=\"iconExpanded + ' fa-fw'\"></i></span>\r\n {{item?.header}}\r\n </div>\r\n <div class=\"text\" [ngClass]=\"textClass\" *ngIf=\"!showIcon\">\r\n <span>{{item?.header}}</span>\r\n </div>\r\n </ng-container>\r\n </button>\r\n <div class=\"particle_accordion_content\" #ref>\r\n <ng-container *ngTemplateOutlet=\"$any(item?.content?.templateRef)\"></ng-container>\r\n </div>\r\n</div>\r\n","import {CommonModule} from '@angular/common';\r\nimport {NgModule} from '@angular/core';\r\n\r\nimport {AccordionComponent} from './accordion.component';\r\nimport {AccordionItemDirective} from './directives/accordion-item.directive';\r\nimport {AccordionContentDirective} from './directives/accordion-content.directive';\r\nimport {AccordionHeaderDirective} from './directives/accordion-header.directive';\r\n\r\n@NgModule({\r\n declarations: [\r\n AccordionComponent,\r\n AccordionItemDirective,\r\n AccordionContentDirective,\r\n AccordionHeaderDirective\r\n ],\r\n imports: [CommonModule],\r\n exports: [\r\n AccordionComponent,\r\n AccordionItemDirective,\r\n AccordionContentDirective,\r\n AccordionHeaderDirective\r\n ]\r\n})\r\nexport class ParticleAccordionModule {\r\n}\r\n","// The order you see below are the layers ascending. Be mindful to maintain this order for expected outcomes.\r\nexport const Z_INDEX_LAYERS = {\r\n BASE: 'base',\r\n FRAME: 'frame',\r\n OVERLAY: 'overlay',\r\n DIALOG: 'dialog',\r\n NOTIFICATION: 'notification'\r\n};\r\n\r\nexport interface Theme {\r\n themeId: string;\r\n isDefault: boolean;\r\n name: string;\r\n layoutColors: ThemeLayoutColors;\r\n layoutVariables: ThemeLayoutVariables;\r\n stylingVariables: ThemeStylingVariables;\r\n colorPalette: ThemeColorPalette;\r\n buttonColorPalette: ThemeButtonColorPalette;\r\n fonts: Array<ThemeFont>;\r\n accessibility: ThemeAccessibility;\r\n zIndexList?: Array<string>;\r\n}\r\n\r\nexport interface ThemeLayoutColors {\r\n menuColor: string;\r\n headerColor: string;\r\n footerColor: string;\r\n bodyColor: string;\r\n contentColor: string;\r\n}\r\n\r\nexport interface ThemeColorPalette {\r\n bgRed: string;\r\n bgOrange: string;\r\n bgYellow: string;\r\n bgGreen: string;\r\n bgBlue: string;\r\n bgPurple: string;\r\n bgBrown: string;\r\n bgGrey: string;\r\n\r\n extension: Array<ThemeColorPaletteExtension>;\r\n}\r\n\r\nexport interface ThemeButtonColorPalette {\r\n okButtonColor: string;\r\n cancelButtonColor: string;\r\n deleteButtonColor: string;\r\n saveButtonColor: string;\r\n nextButtonColor: string;\r\n previousButtonColor: string;\r\n openButtonColor: string;\r\n closeButtonColor: string;\r\n}\r\n\r\nexport interface ThemeLayoutVariables {\r\n disableGlobalHeaderFooter: boolean;\r\n headerHeight: string;\r\n footerHeight: string;\r\n menuWidth?: string;\r\n}\r\n\r\nexport interface ThemeStylingVariables {\r\n inputTextSize: string;\r\n inputLabelSize: string;\r\n inputHeight: string;\r\n inputBgColor: string;\r\n inputPadding: string;\r\n\r\n borderColor: string;\r\n borderSize: string;\r\n borderRadius: string;\r\n\r\n tooltipBackgroundColor: string;\r\n tooltipTextSize: string;\r\n tooltipBorderSize: string;\r\n tooltipBorderColor: string;\r\n tooltipCaretSize?: string;\r\n}\r\n\r\nexport interface ThemeColorPaletteExtension {\r\n className: string;\r\n color?: string;\r\n textColor?: string;\r\n}\r\n\r\nexport interface ThemeFont {\r\n name: string;\r\n id?: string;\r\n source?: 'google' | 'adobe';\r\n isDefault?: boolean;\r\n isSerif?: boolean;\r\n}\r\n\r\nexport interface ThemeAccessibility {\r\n enabled: boolean;\r\n highlightColor: string;\r\n highlightThickness: string;\r\n highlightOffset: string;\r\n hoverEnabled: boolean;\r\n}\r\n","import {Injectable} from '@angular/core';\r\n\r\n/**\r\n * Wrapper around interactions with Local Storage. Handles serializing things to JSON to make it easier to push more complex data into\r\n * local storage.\r\n */\r\n@Injectable()\r\nexport class LocalStorageService {\r\n\r\n /**\r\n * Retrieve an object from LocalStorage\r\n *\r\n * @param key\r\n */\r\n getObject<T>(key: string): T | null {\r\n const obj: any = localStorage.getItem(key);\r\n if (obj) {\r\n return <T> JSON.parse(obj);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Get straight text out of local storage. Don't use this if the data is a JSON Object.\r\n *\r\n * @param key\r\n */\r\n getText(key: string): string {\r\n return localStorage.getItem(key) + '';\r\n }\r\n\r\n /**\r\n * Puts an object into Local Storage. Handles stringifying the JS Object.\r\n *\r\n * @param key\r\n * @param object\r\n */\r\n putObject(key: string, object: any): void {\r\n localStorage.setItem(key, JSON.stringify(object));\r\n }\r\n\r\n /**\r\n * Puts text into Local Storage.\r\n *\r\n * @param key\r\n * @param value\r\n */\r\n putText(key: string, value: string): void {\r\n localStorage.setItem(key, value);\r\n }\r\n\r\n /**\r\n * Removes an item from local storage based on the key.\r\n *\r\n * @param key\r\n */\r\n remove(key: string): void {\r\n localStorage.removeItem(key);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {BehaviorSubject} from 'rxjs';\r\nimport {Observable} from 'rxjs';\r\n\r\n/**\r\n * Service to allow for components/services to listen for theme changes\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ThemeChangeDetectionService {\r\n\r\n /**\r\n * Subject that fires when the theme is changed\r\n * @private\r\n */\r\n private readonly _themeChanged = new BehaviorSubject<void>(null as any);\r\n\r\n /**\r\n * Dependency injection site\r\n */\r\n constructor() { }\r\n\r\n /**\r\n * Trigger a theme change event\r\n */\r\n changeTheme(): void {\r\n this._themeChanged.next();\r\n }\r\n\r\n /**\r\n * Listen for theme change events\r\n */\r\n listen(): Observable<void> {\r\n return this._themeChanged.asObservable();\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {BehaviorSubject, Observable} from 'rxjs';\r\nimport {Theme, ThemeFont, Z_INDEX_LAYERS} from '../models/theme.model';\r\nimport {ThemeChangeDetectionService} from './theme-change-detection.service';\r\nimport {LocalStorageService} from '../../../shared/services/local-storage.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ThemingService {\r\n\r\n // PSA: ORDER MATTERS, DO NOT MOVE ITEMS AROUND\r\n private readonly defaultZIndexes: Array<string> = [\r\n Z_INDEX_LAYERS.BASE,\r\n Z_INDEX_LAYERS.FRAME,\r\n Z_INDEX_LAYERS.OVERLAY,\r\n Z_INDEX_LAYERS.DIALOG,\r\n Z_INDEX_LAYERS.NOTIFICATION\r\n ];\r\n\r\n /**\r\n * Prefix used to build the key for local storage of the theme\r\n */\r\n private readonly THEME_KEY = 'theme';\r\n\r\n /**\r\n * A private BehaviorSubject to store the loaded themes\r\n */\r\n private themes = new BehaviorSubject<Theme[]>([]);\r\n\r\n private $selectedTheme = new BehaviorSubject<Theme>(null as any);\r\n\r\n get selectedTheme(): Observable<Theme> {\r\n return this.$selectedTheme.asObservable();\r\n }\r\n\r\n\r\n /**\r\n * Key for the product this is deployed into\r\n */\r\n protected applicationName: string = null as any;\r\n\r\n /**\r\n * Constructor\r\n *\r\n * @param localStorageService\r\n * @param themeChangeDetectionService\r\n */\r\n constructor(\r\n private localStorageService: LocalStorageService,\r\n private themeChangeDetectionService: ThemeChangeDetectionService\r\n ) {\r\n }\r\n\r\n /**\r\n * Converts a JSON property name to snake case\r\n *\r\n * @param prop\r\n */\r\n private toSnakeCase(prop: string): string {\r\n return prop.split(/(?=[A-Z])/).join('_').toLowerCase();\r\n }\r\n\r\n private toKebabCase(prop: string): string {\r\n return prop.split(/(?=[A-Z])/).join('-').toLowerCase();\r\n }\r\n\r\n private convertUnderscoreToDash(prop: string): string {\r\n return prop.split('_').join('-').toLowerCase();\r\n }\r\n\r\n /**\r\n * For the given color, it'll lighten or darken the color by the percentage supplied. Positive percent will lighten, negative to darken.\r\n *\r\n * @param color\r\n * @param percent\r\n */\r\n private lightenDarkenColor(color: string, percent: number): string {\r\n let usePound = false;\r\n if (color[0] === '#') {\r\n color = color.slice(1);\r\n usePound = true;\r\n }\r\n\r\n const num = parseInt(color, 16);\r\n\r\n let r = (num >> 16) + percent;\r\n if (r > 255) {\r\n r = 255;\r\n } else if (r < 0) {\r\n r = 0;\r\n }\r\n\r\n let b = ((num >> 8) & 0x00FF) + percent;\r\n if (b > 255) {\r\n b = 255;\r\n } else if (b < 0) {\r\n b = 0;\r\n }\r\n\r\n let g = (num & 0x0000FF) + percent;\r\n if (g > 255) {\r\n g = 255;\r\n } else if (g < 0) {\r\n g = 0;\r\n }\r\n\r\n let newColor = (g | (b << 8) | (r << 16)).toString(16);\r\n\r\n while (newColor.length < 6) {\r\n newColor = '0' + newColor;\r\n }\r\n\r\n return (usePound ? '#' : '') + newColor;\r\n }\r\n\r\n /**\r\n * Converts a hex value to a Javascript object with r,g, and b variables.\r\n *\r\n * @param hex\r\n */\r\n private hexToRgb(hex: string): any {\r\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return result ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16)\r\n } : null;\r\n }\r\n\r\n /**\r\n * Generates a random hex color\r\n */\r\n getRandomColor(): string {\r\n return '#' + Math.floor(Math.random() * 16777215).toString(16);\r\n }\r\n\r\n /**\r\n * On App Initialization (in app.component.ts, ngOnInit) call this to load themes and apply the user selected theme or default theme.\r\n *\r\n * @param applicationName\r\n * @param themes\r\n */\r\n appInit(applicationName: string, themes: Theme[]): void {\r\n if (!applicationName) {\r\n throw new Error('Application Name was not supplied.');\r\n }\r\n\r\n this.applicationName = applicationName;\r\n this.themes.next(themes);\r\n this.applySettings();\r\n }\r\n\r\n /**\r\n * Return the themes for the current app\r\n */\r\n getThemes(): Observable<Theme[]> {\r\n return this.themes;\r\n }\r\n\r\n /**\r\n * Apply the selected theme\r\n */\r\n applySettings(): void {\r\n const settings = this.getTheme();\r\n this.$selectedTheme.next(settings);\r\n this.changeColors(settings);\r\n }\r\n\r\n /**\r\n * Constructs a theme object based on another theme object\r\n *\r\n * @param theme\r\n */\r\n generateTheme(theme?: Theme): Theme {\r\n let newTheme: Theme = {} as Theme;\r\n if (theme) {\r\n for (const prop of Object.keys(theme)) {\r\n // @ts-ignore\r\n newTheme[prop] = theme[prop];\r\n }\r\n } else {\r\n newTheme = this.themes.getValue().find(theTheme => theTheme.isDefault) as Theme;\r\n }\r\n\r\n return newTheme;\r\n }\r\n\r\n /**\r\n * Returns a list of the color classes specifically based on the properties of the theme model\r\n */\r\n getClassesFromTheme(theme: Theme): string[] {\r\n const classes = [];\r\n for (const prop of Object.keys(theme)) {\r\n if (prop.toLowerCase().includes('bg') || prop.toLowerCase().includes('color')) {\r\n classes.push(prop.split(/(?=[A-Z])/).join('_').toLowerCase());\r\n }\r\n }\r\n\r\n return classes;\r\n }\r\n\r\n /**\r\n * Returns the user selected theme from local storage\r\n */\r\n getTheme(): Theme {\r\n const themeId = this.localStorageService.getObject(this.applicationName + this.THEME_KEY);\r\n let defaultTheme = this.themes.value.filter(theme => theme.isDefault)[0];\r\n\r\n for (const theme of this.themes.value) {\r\n if (theme.themeId === themeId) {\r\n return theme;\r\n }\r\n }\r\n\r\n return defaultTheme;\r\n }\r\n\r\n /**\r\n * Persists the user selected theme in local storage\r\n *\r\n * @param settings\r\n */\r\n saveTheme(settings: Theme): void {\r\n this.$selectedTheme.next(settings);\r\n this.localStorageService.putObject(this.applicationName + this.THEME_KEY, settings.themeId);\r\n }\r\n\r\n /**\r\n * Writes the theme information to a style tag in the header so that the theme is applied.\r\n *\r\n * @param theme\r\n * @param prefix\r\n */\r\n changeColors(theme: Theme, prefix?: string): void {\r\n if (!prefix) {\r\n prefix = '';\r\n }\r\n\r\n const style = document.createElement('style');\r\n let rootVars = ':root {';\r\n\r\n // Render the color palette styles\r\n if (theme.colorPalette) {\r\n for (const prop of Object.keys(theme.colorPalette)) {\r\n if (prop !== 'extension') {\r\n const value = (theme.colorPalette as any)[prop] as string;\r\n\r\n const color = this.addHashmark(value);\r\n this.generateColors(style, color, prefix + this.toSnakeCase(prop));\r\n\r\n rootVars += `--${prefix}${this.toKebabCase(prop)}-color: ${color};`;\r\n }\r\n }\r\n\r\n for (const extension of theme.colorPalette.extension) {\r\n if (extension.textColor && !extension.color) {\r\n style.appendChild(document.createTextNode(`.${prefix}${extension.className}{color: ${this.addHashmark(extension.textColor)};}`));\r\n }\r\n\r\n if (extension.color) {\r\n if (!extension.textColor) {\r\n this.generateColors(style, this.addHashmark(extension.color as string), prefix + extension.className);\r\n } else {\r\n style.appendChild(document.createTextNode(`.${prefix}${extension.className}{background-color: ${this.addHashmark(extension.color)};color: ${this.addHashmark(extension.textColor)};fill: currentColor;}`));\r\n }\r\n\r\n rootVars += `--${prefix}${this.convertUnderscoreToDash(extension.className)}: ${this.addHashmark(extension.color as string)};`;\r\n }\r\n }\r\n }\r\n\r\n // Render the layout color styles\r\n if (theme.layoutColors) {\r\n for (const prop of Object.keys(theme.layoutColors)) {\r\n const value = (theme.layoutColors as any)[prop] as string;\r\n\r\n const color = value.startsWith('#') ? value : '#' + value;\r\n this.generateColors(style, color, prefix + this.toSnakeCase(prop));\r\n rootVars += `--${prefix}${this.toKebabCase(prop)}: ${color};`;\r\n }\r\n\r\n if (this.isDarkTheme(theme.layoutColors.bodyColor)) {\r\n style.appendChild(document.createTextNode(`.${prefix}bg_overlay{background-color:rgba(255,255,255,0.05);color:inherit;}`));\r\n style.appendChild(document.createTextNode(`.${prefix}bg_overlay_rev{background-color:rgba(0,0,0,0.05);color:inherit;}`));\r\n style.appendChild(document.createTextNode(`.${prefix}brdr{border:1px solid rgba(150,150,150,0.5);}`));\r\n } else {\r\n style.appendChild(document.createTextNode(`.${prefix}bg_overlay{background-color:rgba(255,255,255,0.1);color:inherit;}`));\r\n style.appendChild(document.createTextNode(`.${prefix}bg_overlay_rev{background-color:rgba(0,0,0,0.04);color:inherit;}`));\r\n style.appendChild(document.createTextNode(`.${prefix}brdr{border:1px solid rgba(150,150,150,0.5);}`));\r\n }\r\n }\r\n\r\n if (theme.accessibility && theme.accessibility.enabled) {\r\n const outlineColor = theme.accessibility.highlightColor.startsWith('#') ? theme.accessibility.highlightColor : '#' + theme.accessibility.highlightColor;\r\n style.appendChild(document.createTextNode(`.${prefix}access{outline: ${outlineColor} ${theme.accessibility.highlightThickness} solid !important;outline-color: transparent !important;transition:all 0.3s ease-in-out;}`));\r\n style.appendChild(document.createTextNode(`.${prefix}access:focus{outline: ${outlineColor} ${theme.accessibility.highlightThickness} solid !important;outline-offset: ${theme.accessibility.highlightOffset};}`));\r\n\r\n if (theme.accessibility.hoverEnabled) {\r\n style.appendChild(document.createTextNode(`.${prefix}access:hover{outline: ${outlineColor} ${theme.accessibility.highlightThickness} solid !important;outline-offset: ${theme.accessibility.highlightOffset};}`));\r\n }\r\n }\r\n\r\n // Render the button color styles\r\n if (theme.buttonColorPalette) {\r\n for (const prop of Object.keys(theme.buttonColorPalette)) {\r\n const value = (theme.buttonColorPalette as any)[prop] as string;\r\n\r\n const color = value.startsWith('#') ? value : '#' + value;\r\n this.generateColors(style, color, prefix + this.toSnakeCase(prop));\r\n\r\n rootVars += `--${prefix}${this.toKebabCase(prop)}: ${color};`;\r\n }\r\n }\r\n\r\n if (theme.stylingVariables) {\r\n if (theme.stylingVariables.inputTextSize) {\r\n style.appendChild(document.createTextNode(`.${prefix}ptl_input_text_size{font-size: ${theme.stylingVariables.inputTextSize};}`));\r\n }\r\n\r\n if (theme.stylingVariables.inputLabelSize) {\r\n style.appendChild(document.createTextNode(`.${prefix}ptl_input_label_size{font-size: ${theme.stylingVariables.inputLabelSize};}`));\r\n }\r\n\r\n if (theme.stylingVariables.inputBgColor) {\r\n style.appendChild(document.createTextNode(`.${prefix}ptl_input_bg_color{background-color: ${this.addHashmark(theme.stylingVariables.inputBgColor)};color: ${this.getTextColor(theme.stylingVariables.inputBgColor)}}`));\r\n }\r\n\r\n if (theme.stylingVariables.borderColor) {\r\n style.appendChild(document.createTextNode(`.${prefix}ptl_brdr_color{border-color: ${this.addHashmark(theme.stylingVariables.borderColor)};}`));\r\n rootVars += `--${prefix}ptl-brdr-color: ${this.addHashmark(theme.stylingVariables.borderColor)};`;\r\n }\r\n\r\n if (theme.stylingVariables.borderSize) {\r\n style.appendChild(document.createTextNode(`.${prefix}ptl_brdr_size{border-width: ${theme.stylingVariables.borderSize};border-style:solid;}`));\r\n rootVars += `--${prefix}ptl-brdr-size: ${theme.stylingVariables.borderSize};`;\r\n }\r\n\r\n if (theme.stylingVariables.borderRadius) {\r\n style.appendChild(document.createTextNode(`.${prefix}ptl_brdr_radius{border-radius: ${theme.stylingVariables.borderRadius};}`));\r\n rootVars += `--${prefix}ptl-brdr-radius: ${theme.stylingVariables.borderRadius};`;\r\n }\r\n\r\n if (theme.stylingVariables.inputHeight) {\r\n style.appendChild(document.createTextNode(`.${prefix}ptl_input_height{height: ${theme.stylingVariables.inputHeight};}`));\r\n }\r\n\r\n if (theme.stylingVariables.inputPadding) {\r\n style.appendChild(document.createTextNode(`.${prefix}ptl_input_padding{padding: ${theme.stylingVariables.inputPadding};}`));\r\n }\r\n\r\n if (theme.stylingVariables.tooltipTextSize || theme.stylingVariables.tooltipBackgroundColor) {\r\n const bgColor = theme.stylingVariables.tooltipBackgroundColor;\r\n const textSize = theme.stylingVariables.tooltipTextSize;\r\n const borderSize = theme.stylingVariables.tooltipBorderSize;\r\n const borderColor = theme.stylingVariables.tooltipBorderColor;\r\n const caretSize = theme.stylingVariables.tooltipCaretSize ?? '6px';\r\n\r\n let tooltipStyle = '.particle_tooltip{';\r\n\r\n if (bgColor) {\r\n const textColor = this.getTextColor(bgColor);\r\n tooltipStyle += `color: ${textColor};`;\r\n tooltipStyle += `background-color: ${bgColor};`;\r\n }\r\n\r\n if (borderColor && borderSize) {\r\n tooltipStyle += `border: ${borderSize} solid ${borderColor};`;\r\n }\r\n\r\n if (textSize) {\r\n tooltipStyle += 'font-size: ' + textSize + ';';\r\n }\r\n\r\n tooltipStyle += '}';\r\n style.appendChild(document.createTextNode(tooltipStyle));\r\n\r\n let caretStyleColor: string = null as any;\r\n if (borderColor && borderSize) {\r\n caretStyleColor = borderColor;\r\n } else if (bgColor) {\r\n caretStyleColor = bgColor;\r\n }\r\n\r\n if (caretStyleColor) {\r\n style.appendChild(document.createTextNode(`.particle_tooltip.right::after{border-color: transparent ${caretStyleColor} transparent transparent;margin-top: -${caretSize};border-width: ${caretSize};}`));\r\n style.appendChild(document.createTextNode(`.particle_tooltip.left::after{border-color: transparent transparent transparent ${caretStyleColor};margin-top: -${caretSize};border-width: ${caretSize};}`));\r\n style.appendChild(document.createTextNode(`.particle_tooltip.top::after{border-color: ${caretStyleColor} transparent transparent transparent;margin-left: -${caretSize};border-width: ${caretSize};}`));\r\n style.appendChild(document.createTextNode(`.particle_tooltip.bottom::after{border-color: transparent transparent ${caretStyleColor} transparent;margin-left: -${caretSize};border-width: ${caretSize};}`));\r\n }\r\n }\r\n }\r\n\r\n const head = document.head || document.getElementsByTagName('head')[0];\r\n\r\n this.removeThemeFromHeader(prefix);\r\n\r\n // Write the fonts to the header\r\n if (prefix === '') {\r\n this.addFonts(theme, head, style);\r\n rootVars = this.createZIndexes(rootVars, theme.zIndexList as Array<string>);\r\n }\r\n\r\n rootVars += '}';\r\n style.appendChild(document.createTextNode(rootVars));\r\n style.setAttribute('id', (prefix ? prefix + '-' : '') + 'particle-theme');\r\n head.appendChild(style);\r\n\r\n this.themeChangeDetectionService.changeTheme();\r\n }\r\n\r\n private addHashmark(color: string): string {\r\n return color.startsWith('#') ? color : '#' + color;\r\n }\r\n\r\n private addFonts(theme: Theme, head: HTMLHeadElement, style: HTMLStyleElement): void {\r\n if (!theme.fonts) {\r\n return;\r\n }\r\n\r\n let defaultFont: ThemeFont = null as any;\r\n for (const font of theme.fonts) {\r\n if (font.isDefault || theme.fonts.length === 1) {\r\n defaultFont = font;\r\n }\r\n\r\n if (!this.fontExists(head, font)) {\r\n let element: HTMLLinkElement = document.createElement('link');\r\n if (font.source === 'adobe') {\r\n element.setAttribute('href', `https://use.typekit.net/${font.id}.css`);\r\n } else {\r\n element.setAttribute('href', `https://fonts.googleapis.com/css?family=${font.name.replace(' ', '+')}&display=swap`);\r\n }\r\n element.setAttribute('rel', 'stylesheet');\r\n head.appendChild(element);\r\n }\r\n }\r\n\r\n style.appendChild(document.createTextNode(`html * { font-family: ${defaultFont.name}, ${defaultFont.isSerif ? 'serif' : 'sans-serif'}; }`));\r\n }\r\n\r\n private fontExists(head: HTMLHeadElement, font: ThemeFont): boolean {\r\n for (const child of <any>head.childNodes) {\r\n if (child.href && font.source === 'adobe' && child.href.indexOf(font.id) > -1) {\r\n return true;\r\n } else if (child.href && child.href.indexOf(font.name.replace(' ', '+')) > -1) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n removeThemeFromHeader(prefix: string): void {\r\n const head = document.head || document.getElementsByTagName('head')[0];\r\n\r\n for (const child of <any>head.childNodes) {\r\n if ((child as Element).id === (prefix ? prefix + '-' : '') + 'particle-theme') {\r\n head.removeChild(child);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Determines the contrast between a given color and its auto-selected text color\r\n *\r\n * @param color\r\n */\r\n getContrast(color: string): number {\r\n const colorRgb = this.hexToRgb(color);\r\n const textColorRgb = this.hexToRgb(this.getTextColor(color));\r\n return this.contrast(colorRgb, textColorRgb);\r\n }\r\n\r\n /**\r\n * Calculates luminance\r\n *\r\n * @param r\r\n * @param g\r\n * @param b\r\n */\r\n private luminance(r: number, g: number, b: number): number {\r\n const a = [r, g, b].map(function (v) {\r\n v /= 255;\r\n return v <= 0.03928\r\n ? v / 12.92\r\n : Math.pow((v + 0.055) / 1.055, 2.4);\r\n });\r\n return a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722;\r\n }\r\n\r\n private isDarkTheme(color: string): boolean {\r\n const rgb = this.hexToRgb(color);\r\n return (this.luminance(rgb.r, rgb.g, rgb.b) * 100) < 50;\r\n }\r\n\r\n /**\r\n * Calculates the contrast\r\n *\r\n * @param rgb1\r\n * @param rgb2\r\n */\r\n private contrast(rgb1: any, rgb2: any): number {\r\n let contrast = (this.luminance(rgb1.r, rgb1.g, rgb1.b) + 0.05)\r\n / (this.luminance(rgb2.r, rgb2.g, rgb2.b) + 0.05);\r\n\r\n if (contrast < 1) {\r\n contrast = (this.luminance(rgb2.r, rgb2.g, rgb2.b) + 0.05)\r\n / (this.luminance(rgb1.r, rgb1.g, rgb1.b) + 0.05);\r\n }\r\n\r\n return contrast;\r\n }\r\n\r\n /**\r\n * Returns the maximally contrasting text color for the supplied background color\r\n *\r\n * @param color\r\n */\r\n getTextColor(color: string): string {\r\n const rgb = this.hexToRgb(color);\r\n let textRgb = this.hexToRgb('#FFFFFF');\r\n const whiteContrast = this.contrast(textRgb, rgb);\r\n\r\n textRgb = this.hexToRgb('#222222');\r\n const blackContrast = this.contrast(textRgb, rgb);\r\n\r\n // 7 is the contrast ratio for WCAG AAA, if we're less than that, go full black for max contrast\r\n if (blackContrast > whiteContrast && blackContrast < 7) {\r\n return '#000000';\r\n }\r\n\r\n return whiteContrast > blackContrast ? '#FFFFFF' : '#222222';\r\n }\r\n\r\n /**\r\n * Generates the CSS for each of the colors in the theme. Will write the base color and 9 light and dark variants of the given color.\r\n *\r\n * @param style\r\n * @param color\r\n * @param className\r\n */\r\n private generateColors(style: HTMLStyleElement, color: string, className: string): void {\r\n if (!color) {\r\n return;\r\n }\r\n\r\n let textColor = this.getTextColor(color);\r\n style.appendChild(document.createTextNode(`.${className}{background-color: ${color};color: ${textColor};fill: currentColor;}`));\r\n for (let i = 1; i < 10; i++) {\r\n const newColor = this.lightenDarkenColor(color, i * 10);\r\n textColor = this.getTextColor(newColor);\r\n\r\n style.appendChild(\r\n document.createTextNode(`.${className}_light_${i}{background-color: ${newColor};color: ${textColor};fill: currentColor;}`));\r\n }\r\n\r\n for (let i = 1; i < 10; i++) {\r\n const newColor = this.lightenDarkenColor(color, 0 - (i * 10));\r\n textColor = this.getTextColor(newColor);\r\n\r\n style.appendChild(\r\n document.createTextNode(`.${className}_dark_${i}{background-color: ${newColor};color: ${textColor};fill: currentColor;}`));\r\n }\r\n }\r\n\r\n getDefaultZIndexes(): Array<string> {\r\n return this.defaultZIndexes;\r\n }\r\n\r\n private createZIndexes(rootVars: string, zIndexes: Array<string>): string {\r\n let zIndexesToCreate = this.defaultZIndexes;\r\n\r\n if (zIndexes) {\r\n if (zIndexes.includes(Z_INDEX_LAYERS.BASE)\r\n && zIndexes.includes(Z_INDEX_LAYERS.FRAME)\r\n && zIndexes.includes(Z_INDEX_LAYERS.OVERLAY)\r\n && zIndexes.includes(Z_INDEX_LAYERS.DIALOG)\r\n && zIndexes.includes(Z_INDEX_LAYERS.NOTIFICATION)\r\n ) {\r\n zIndexesToCreate = zIndexes;\r\n } else {\r\n console.warn('THEMING: Z Index List missing required layers, ignoring provided list.');\r\n }\r\n }\r\n\r\n let i = 0;\r\n for (const zIndex of zIndexesToCreate) {\r\n rootVars += `--z-${zIndex}: ${i++};`;\r\n }\r\n\r\n return rootVars;\r\n }\r\n\r\n}\r\n","import {Component, OnInit, Input} from '@angular/core';\r\nimport {ThemingService} from '../services/theming.service';\r\nimport {Theme} from '../models/theme.model';\r\nimport {map, tap} from 'rxjs/operators';\r\nimport {DropdownOption} from '../../dropdown/models/dropdown-option.model';\r\nimport {ThemingText} from '../../../shared/models/particle-component-text.model';\r\nimport {Observable} from 'rxjs';\r\n\r\n/**\r\n * This will produce a dropdown that can be embedded to allow a user to choose their theme.\r\n */\r\n@Component({\r\n selector: 'particle-theming',\r\n templateUrl: './theming.component.html'\r\n})\r\nexport class ThemingComponent {\r\n\r\n /**\r\n * Constructor\r\n *\r\n * @param themingService\r\n */\r\n constructor(\r\n private themingService: ThemingService\r\n ) {\r\n this.themes$ = this.themingService.getThemes();\r\n this.selectedTheme$ = this.themingService.selectedTheme.pipe(tap(theme => this._themeId = theme.themeId));\r\n this.options$ = this.themingService.getThemes().pipe(\r\n map(\r\n themes => {\r\n const options: Array<DropdownOption> = [];\r\n for (const theme of themes) {\r\n options.push({\r\n label: theme.name,\r\n value: theme.themeId,\r\n disabled: false,\r\n dataContext: {\r\n 'colorValue': theme.layoutColors ? theme.layoutColors.headerColor : '#FFFFFF'\r\n }\r\n } as DropdownOption);\r\n }\r\n\r\n return options;\r\n }\r\n ));\r\n }\r\n\r\n /**\r\n * Override class for the embedded dropdown\r\n */\r\n @Input()\r\n selectClass: string = null as any;\r\n\r\n /**\r\n * ID for the embedded dropdown (allows for linking a label)\r\n */\r\n @Input()\r\n selectId: string = null as any;\r\n\r\n @Input()\r\n text: ThemingText = {\r\n placeholder: 'Select a theme...'\r\n }\r\n\r\n /**\r\n * Selected Theme ID\r\n */\r\n private _themeId: string = null as any;\r\n\r\n /**\r\n * List of available themes\r\n */\r\n readonly options$: Observable<Array<DropdownOption>>;\r\n\r\n readonly themes$: Observable<Array<Theme>>;\r\n\r\n readonly selectedTheme$: Observable<Theme>;\r\n\r\n /**\r\n * Update the user's selected theme\r\n */\r\n changeTheme(selectedValue: string | number, themes: Array<Theme>): void {\r\n let newTheme;\r\n for (const theme of themes) {\r\n if (theme.themeId === selectedValue) {\r\n newTheme = theme;\r\n break;\r\n }\r\n }\r\n\r\n if (newTheme) {\r\n this.themingService.saveTheme(newTheme);\r\n this.themingService.changeColors(newTheme);\r\n }\r\n }\r\n\r\n}\r\n","<ng-container *ngIf=\"themes$ | async as themes\">\r\n <ng-container *ngIf=\"options$ | async as options\">\r\n <ng-container *ngIf=\"selectedTheme$ | async as selectedTheme\">\r\n <particle-dropdown\r\n [text]=\"{placeholder: text.placeholder}\"\r\n [options]=\"options\"\r\n [disabled]=\"false\"\r\n [value]=\"selectedTheme.themeId\"\r\n (change)=\"changeTheme($event, themes)\">\r\n <ng-template let-colorValue=\"colorValue\" let-label>\r\n <div class=\"circle_14px mar_right5\" [style.background-color]=\"colorValue\"></div> {{label}}\r\n </ng-template>\r\n </particle-dropdown>\r\n </ng-container>\r\n </ng-container>\r\n</ng-container>\r\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {BrowserModule} from '@angular/platform-browser';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {BrowserAnimationsModule} from '@angular/platform-browser/animations';\nimport {ThemingComponent} from './components/theming.component';\nimport {ThemingService} from './services/theming.service';\nimport {ThemeChangeDetectionService} from './services/theme-change-detection.service';\nimport {LocalStorageService} from '../../shared/services/local-storage.service';\nimport {ParticleDropdownModule} from '../dropdown/dropdown.module';\n\n@NgModule({\n imports: [\n CommonModule,\n BrowserModule,\n FormsModule,\n ReactiveFormsModule,\n BrowserAnimationsModule,\n ParticleDropdownModule\n ],\n declarations: [\n ThemingComponent\n ],\n providers: [\n ThemingService,\n ThemeChangeDetectionService,\n LocalStorageService\n ],\n exports: [\n ThemingComponent\n ]\n})\nexport class ParticleThemingModule {\n}\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnDestroy,\r\n Output,\r\n Renderer2,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {SlideoverText} from '../../shared/models/particle-component-text.model';\r\n\r\n@Component({\r\n selector: 'particle-slideover',\r\n templateUrl: './slideover.component.html',\r\n styleUrls: ['./slideover.component.css']\r\n})\r\nexport class SlideoverComponent implements AfterViewInit, OnDestroy {\r\n\r\n private _position = 'right';\r\n\r\n slideoverOpen = false;\r\n visible = false;\r\n\r\n @Input()\r\n set position(position: string) {\r\n if (position && ['left', 'right', 'top', 'bottom'].indexOf(position.toLowerCase()) > -1) {\r\n this._position = position.toLowerCase();\r\n } else {\r\n this._position = 'right';\r\n }\r\n }\r\n\r\n get position(): string {\r\n return this._position;\r\n }\r\n\r\n @Input()\r\n modal = true;\r\n\r\n @Input()\r\n width = '300px';\r\n\r\n @Input()\r\n height = '100px';\r\n\r\n @Input()\r\n bgClass = 'content_color';\r\n\r\n @Input()\r\n text: SlideoverText = {\r\n close: 'Close Slideover'\r\n } as SlideoverText;\r\n\r\n /**\r\n * Breakpoint that will make the container take over the screen when it's crossed.\r\n */\r\n @Input()\r\n breakpoint = 769;\r\n\r\n @Output()\r\n opened = new EventEmitter<any>();\r\n\r\n @Output()\r\n closed = new EventEmitter<any>();\r\n\r\n @ViewChild('overlay')\r\n overlay: ElementRef = null as any;\r\n\r\n breakpointExceeded = false;\r\n\r\n constructor() {\r\n }\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event: any): void {\r\n this._determineBreakpointExceeded(event.target.innerWidth);\r\n }\r\n\r\n private _determineBreakpointExceeded(innerWidth: number): void {\r\n if (this.breakpoint) {\r\n this.breakpointExceeded = innerWidth < this.breakpoint || innerWidth < +this.width.substring(0, this.width.length - 2);\r\n }\r\n }\r\n\r\n open(): void {\r\n this.addModalMask();\r\n this.slideoverOpen = true;\r\n this.visible = true;\r\n this.opened.emit();\r\n }\r\n\r\n close(): void {\r\n this.removeModalMask();\r\n this.slideoverOpen = false;\r\n this.closed.emit();\r\n\r\n setTimeout(() => this.visible = false, 200);\r\n }\r\n\r\n toggle(): void {\r\n if (this.slideoverOpen) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n private addModalMask(): void {\r\n if (this.modal) {\r\n this.overlay.nativeElement.classList.add('particle_dialog_overlay');\r\n document.body.classList.add('scroll_none');\r\n }\r\n }\r\n\r\n private removeModalMask(): void {\r\n if (this.modal) {\r\n this.overlay.nativeElement.classList.remove('particle_dialog_overlay');\r\n document.body.classList.remove('scroll_none');\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.removeModalMask();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this._determineBreakpointExceeded(window.innerWidth)\r\n }, 100);\r\n }\r\n\r\n}\r\n","<div #overlay (click)=\"close()\"></div>\r\n<div\r\n [ngClass]=\"bgClass + ' ' + (slideoverOpen ? 'slideover_active_' + position : 'slideover_inactive_' + position) + ' slideover-panel ' + position\"\r\n [style.width]=\"position === 'right' || position === 'left' ? (breakpointExceeded ? '100%' : width) : null\"\r\n [style.height]=\"position === 'top' || position === 'bottom' ? (breakpointExceeded ? '100%' : height) : null\"\r\n [style.left]=\"position === 'left' && !slideoverOpen ? '-' + (breakpointExceeded ? '100%' : width) : null\"\r\n [style.right]=\"position === 'right' && !slideoverOpen ? '-' + (breakpointExceeded ? '100%' : width) : null\"\r\n [style.bottom]=\"position === 'bottom' && !slideoverOpen ? '-' + (breakpointExceeded ? '100%' : height) : null\"\r\n [style.top]=\"position === 'top' && !slideoverOpen ? '-' + (breakpointExceeded ? '100%' : height) : null\"\r\n [style.visibility]=\"!visible ? 'hidden': 'visible'\"\r\n [attr.aria-hidden]=\"!slideoverOpen\"\r\n>\r\n <div class=\"push_close_bar\">\r\n <button class=\"access btnset clear\"\r\n [attr.aria-label]=\"text.close\"\r\n (click)=\"close()\">\r\n <div class=\"circle_20px ptl_brdr_color ptl_brdr_size ptl_input_bg_color\">\r\n <i class=\"fas fa-times\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n <ng-content></ng-content>\r\n</div>\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport { SlideoverComponent } from './slideover.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n SlideoverComponent\r\n ],\r\n exports: [\r\n SlideoverComponent\r\n ],\r\n imports: [\r\n CommonModule\r\n ]\r\n})\r\nexport class ParticleSlideoverModule {\r\n}\r\n","import {AfterViewInit, Component, Input, OnDestroy, Renderer2} from '@angular/core';\r\nimport {BehaviorSubject} from 'rxjs';\r\nimport {ScrollToTopText} from '../../shared/models/particle-component-text.model';\r\n\r\n@Component({\r\n selector: 'particle-scroll-to-top',\r\n templateUrl: './scroll-to-top.component.html'\r\n})\r\nexport class ScrollToTopComponent implements OnDestroy, AfterViewInit {\r\n\r\n @Input()\r\n content: HTMLElement = null as any;\r\n\r\n @Input()\r\n scrollDistance = 500;\r\n\r\n @Input()\r\n bottomOffset = 50;\r\n\r\n @Input()\r\n text: ScrollToTopText = {\r\n scrollToTop: 'Scroll back to the top of the page'\r\n } as ScrollToTopText;\r\n\r\n $scrollTop = new BehaviorSubject<number>(0);\r\n\r\n private _listener: any;\r\n\r\n constructor(\r\n public renderer: Renderer2\r\n ) {}\r\n\r\n ngAfterViewInit(): void {\r\n this._listener = this.renderer.listen(this.content, 'scroll', () => {\r\n this.$scrollTop.next(this.content.scrollTop);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._listener();\r\n }\r\n\r\n scrollToTop(): void {\r\n if (this.content) {\r\n this.content.scroll({\r\n top: 0,\r\n behavior: 'smooth'\r\n });\r\n }\r\n }\r\n\r\n}\r\n","<ng-container *ngIf=\"$scrollTop | async as scrollTop\">\r\n <div [style.visibility]=\"scrollTop > scrollDistance ? 'visible' : 'hidden'\"\r\n [style.opacity]=\"scrollTop > scrollDistance ? '1' : '0'\"\r\n [style.bottom]=\"bottomOffset + 'px'\"\r\n class=\"particle_scroll_button mar_right10 mar_bot15\">\r\n <button (click)=\"scrollToTop()\"\r\n class=\"access btn pad_10 brad_3 brdr content_color\"\r\n type=\"button\"\r\n [attr.aria-label]=\"text.scrollToTop\">\r\n <span class=\"icon slide_up\"><i class=\"fas fa-chevron-up\"></i></span>\r\n </button>\r\n </div>\r\n</ng-container>\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {ScrollToTopComponent} from './scroll-to-top.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n ScrollToTopComponent\r\n ],\r\n exports: [\r\n ScrollToTopComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n ]\r\n})\r\nexport class ParticleScrollToTopModule {\r\n}\r\n","import {Component, HostListener, Input, TemplateRef, ViewChild} from '@angular/core';\r\nimport {SlideoverComponent} from '../../../slideover/slideover.component';\r\n\r\n@Component({\r\n selector: 'particle-layout-fullwidth-sidebar',\r\n templateUrl: './layout-fullwidth-sidebar.component.html'\r\n})\r\nexport class LayoutFullwidthSidebarComponent {\r\n\r\n @Input()\r\n mainContent: TemplateRef<any> = null as any;\r\n\r\n @Input()\r\n rightSidebar: TemplateRef<any> = null as any;\r\n\r\n @Input()\r\n mainContentContainerClassList = '';\r\n\r\n @Input()\r\n rightSidebarContainerClassList = '';\r\n\r\n @Input()\r\n rightSidebarSticky = false;\r\n\r\n @Input()\r\n headerHeight: string = '0';\r\n\r\n @Input()\r\n footerHeight: string = '0';\r\n\r\n @Input()\r\n rightSidebarWidth: string = '250px';\r\n\r\n @Input()\r\n breakpoint: number = 1024;\r\n\r\n @Input()\r\n rightSidebarCollapsedTabOffset = 150;\r\n\r\n @Input()\r\n collapsedClassList = '';\r\n\r\n @Input()\r\n mobileSidebarEnabled = true;\r\n\r\n @ViewChild('slideover')\r\n slideover: SlideoverComponent = null as any;\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event: any): void {\r\n if (this.mobileSidebarEnabled && event.target.innerWidth > 768 && this.slideover.slideoverOpen) {\r\n this.slideover.close();\r\n }\r\n }\r\n\r\n protected readonly window = window;\r\n\r\n get stickySidebarHeight(): string {\r\n const offset: number = +this.headerHeight.replace(/\\D/g, \"\") +\r\n +this.footerHeight.replace(/\\D/g, \"\");\r\n\r\n return `calc(100vh - ${offset}px)`;\r\n }\r\n\r\n}\r\n","<!-- setup for a side column -->\r\n<div class=\"row height100 ent_r2l_row\">\r\n <div class=\"row column space_between height100\"\r\n [ngClass]=\"mainContentContainerClassList\">\r\n <ng-template [ngTemplateOutlet]=\"mainContent\"></ng-template>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!rightSidebarSticky\">\r\n <div class=\"particle_layout_sidebar height100\"\r\n [ngClass]=\"rightSidebarContainerClassList\"\r\n [style.display]=\"window.innerWidth <= breakpoint ? 'none' : ''\"\r\n [style.width]=\"rightSidebarWidth\">\r\n <ng-template [ngTemplateOutlet]=\"rightSidebar\"></ng-template>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"rightSidebarSticky\">\r\n <div class=\"particle_layout_sidebar height100\"\r\n [style.display]=\"window.innerWidth <= breakpoint ? 'none' : ''\"\r\n [style.width]=\"rightSidebarWidth\">\r\n <div class=\"row column sticky_sidebar\"\r\n [ngClass]=\"rightSidebarContainerClassList\"\r\n [style.height]=\"stickySidebarHeight\">\r\n <ng-template [ngTemplateOutlet]=\"rightSidebar\"></ng-template>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-container *ngIf=\"mobileSidebarEnabled && rightSidebarCollapsedTabOffset >= 0\">\r\n <div [style.visibility]=\"window.innerWidth <= breakpoint ? 'visible' : 'hidden'\"\r\n [style.opacity]=\"window.innerWidth <= breakpoint ? '1' : '0'\"\r\n [style.top]=\"rightSidebarCollapsedTabOffset + 'px'\"\r\n style=\"z-index: var(--z-frame);\"\r\n class=\"particle_scroll_button mar_right10 mar_bot15\">\r\n <button\r\n (click)=\"slideover.open()\"\r\n class=\"access btn pad_10 brad_3 brdr content_color\"\r\n type=\"button\">\r\n <span class=\"icon slide_left\"><i class=\"fas fa-chevron-left\"></i></span>\r\n </button>\r\n </div>\r\n\r\n <particle-slideover\r\n position=\"right\"\r\n [width]=\"rightSidebarWidth\"\r\n [breakpoint]=\"1\"\r\n #slideover\r\n >\r\n <div class=\"min_h40 header_color\">\r\n\r\n </div>\r\n <div class=\"particle_layout_sidebar height100\"\r\n [ngClass]=\"rightSidebarContainerClassList + ' ' + collapsedClassList\">\r\n <ng-template [ngTemplateOutlet]=\"rightSidebar\"></ng-template>\r\n </div>\r\n </particle-slideover>\r\n</ng-container>\r\n","import {Component, HostListener, Input, TemplateRef, ViewChild} from '@angular/core';\r\nimport {SlideoverComponent} from '../../../slideover/slideover.component';\r\n\r\n@Component({\r\n selector: 'particle-layout-full-framing',\r\n templateUrl: './layout-full-framing.component.html'\r\n})\r\nexport class LayoutFullFramingComponent {\r\n\r\n @Input()\r\n mainContent: TemplateRef<any> = null as any;\r\n\r\n @Input()\r\n rightSidebar: TemplateRef<any> = null as any;\r\n\r\n @Input()\r\n header: TemplateRef<any> = null as any;\r\n\r\n @Input()\r\n footer: TemplateRef<any> = null as any;\r\n\r\n @Input()\r\n mainContentContainerClassList = '';\r\n\r\n @Input()\r\n rightSidebarContainerClassList = '';\r\n\r\n @Input()\r\n headerClassList = '';\r\n\r\n @Input()\r\n footerClassList = '';\r\n\r\n @Input()\r\n headerHeight: string = '0';\r\n\r\n @Input()\r\n footerHeight: string = '0';\r\n\r\n @Input()\r\n rightSidebarWidth: string = '250px';\r\n\r\n @Input()\r\n breakpoint: number = 1024;\r\n\r\n @Input()\r\n rightSidebarCollapsedTabOffset = 150;\r\n\r\n @Input()\r\n collapsedClassList = '';\r\n\r\n @Input()\r\n mobileSidebarEnabled = true;\r\n\r\n @ViewChild('slideover')\r\n slideover: SlideoverComponent = null as any;\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event: any): void {\r\n if (this.mobileSidebarEnabled && event.target.innerWidth > 768 && this.slideover.slideoverOpen) {\r\n this.slideover.close();\r\n }\r\n }\r\n\r\n protected readonly window = window;\r\n\r\n get stickySidebarHeight(): string {\r\n const offset: number = +this.headerHeight.replace(/\\D/g, \"\") +\r\n +this.footerHeight.replace(/\\D/g, \"\");\r\n\r\n return `calc(100vh - ${offset}px)`;\r\n }\r\n\r\n get contentSidebarHeight(): string {\r\n const offset: number = +this.headerHeight.replace(/\\D/g, \"\") +\r\n +this.footerHeight.replace(/\\D/g, \"\");\r\n\r\n return `calc(100% - ${offset}px)`;\r\n }\r\n\r\n}\r\n","<div class=\"width100 height100\">\r\n <div class=\"width100 header_sticky\" [ngClass]=\"headerClassList\" [style.height]=\"headerHeight\">\r\n <ng-template [ngTemplateOutlet]=\"header\"></ng-template>\r\n </div>\r\n\r\n <div class=\"row ent_r2l_row\" [style.height]=\"contentSidebarHeight\">\r\n <div class=\"row column space_between height100\"\r\n [ngClass]=\"mainContentContainerClassList\">\r\n <ng-template [ngTemplateOutlet]=\"mainContent\"></ng-template>\r\n </div>\r\n\r\n <div class=\"col particle_layout_sidebar height100\"\r\n [style.width]=\"rightSidebarWidth\"\r\n [style.display]=\"window.innerWidth <= breakpoint ? 'none' : ''\"\r\n >\r\n <div class=\"row column sticky_sidebar height100\"\r\n [ngClass]=\"rightSidebarContainerClassList\"\r\n [style.height]=\"stickySidebarHeight\"\r\n [style.top]=\"headerHeight\">\r\n <ng-template [ngTemplateOutlet]=\"rightSidebar\"></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"width100 footer_sticky\" [ngClass]=\"footerClassList\" [style.height]=\"footerHeight\">\r\n <ng-template [ngTemplateOutlet]=\"footer\"></ng-template>\r\n </div>\r\n</div>\r\n\r\n<ng-container *ngIf=\"mobileSidebarEnabled && rightSidebarCollapsedTabOffset >= 0\">\r\n <div [style.visibility]=\"window.innerWidth <= breakpoint ? 'visible' : 'hidden'\"\r\n [style.opacity]=\"window.innerWidth <= breakpoint ? '1' : '0'\"\r\n [style.top]=\"rightSidebarCollapsedTabOffset + 'px'\"\r\n style=\"z-index: var(--z-frame);\"\r\n class=\"particle_scroll_button mar_right10 mar_bot15\">\r\n <button\r\n (click)=\"slideover.open()\"\r\n class=\"access btn pad_10 brad_3 brdr content_color\"\r\n type=\"button\">\r\n <span class=\"icon slide_left\"><i class=\"fas fa-chevron-left\"></i></span>\r\n </button>\r\n </div>\r\n\r\n <particle-slideover\r\n position=\"right\"\r\n [width]=\"rightSidebarWidth\"\r\n [breakpoint]=\"1\"\r\n #slideover\r\n >\r\n <div class=\"min_h40 header_color\">\r\n\r\n </div>\r\n <div class=\"particle_layout_sidebar height100\"\r\n [ngClass]=\"rightSidebarContainerClassList + ' ' + collapsedClassList\">\r\n <ng-template [ngTemplateOutlet]=\"rightSidebar\"></ng-template>\r\n </div>\r\n </particle-slideover>\r\n</ng-container>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LayoutFullwidthSidebarComponent } from './components/layout-fullwidth-sidebar/layout-fullwidth-sidebar.component';\r\nimport { LayoutFullFramingComponent } from './components/layout-full-framing/layout-full-framing.component';\r\nimport {ParticleSlideoverModule} from '../slideover/particle-slideover.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n LayoutFullwidthSidebarComponent,\r\n LayoutFullFramingComponent\r\n ],\r\n exports: [\r\n LayoutFullwidthSidebarComponent,\r\n LayoutFullFramingComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n ParticleSlideoverModule\r\n ]\r\n})\r\nexport class ParticleLayoutModule { }\r\n","import {ChangeDetectorRef, Component, EventEmitter, forwardRef, Input, Output} from '@angular/core';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {ToggleOptions} from './models/toggle-options.model';\r\nimport {BehaviorSubject} from 'rxjs';\r\n\r\n@Component({\r\n selector: 'particle-toggle-switch',\r\n templateUrl: './toggle-switch.component.html',\r\n styleUrls: ['./toggle-switch.component.css'],\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ToggleSwitchComponent),\r\n multi: true\r\n }]\r\n})\r\nexport class ToggleSwitchComponent implements ControlValueAccessor {\r\n\r\n private _options$ = new BehaviorSubject<ToggleOptions>({\r\n affirmativeColorClass: 'ok_button_color',\r\n affirmativeLabel: 'On',\r\n affirmativeIcon: 'fas fa-check',\r\n negativeColorClass: 'cancel_button_color',\r\n negativeLabel: 'Off',\r\n negativeIcon: 'fas fa-times',\r\n accessibilityLabel: 'Toggle Switch',\r\n } as ToggleOptions);\r\n\r\n options$ = this._options$.asObservable();\r\n\r\n @Input()\r\n set options(options: ToggleOptions) {\r\n if (!options.negativeIcon) {\r\n options.negativeIcon = 'mar_right5';\r\n }\r\n\r\n if (!options.affirmativeIcon) {\r\n options.affirmativeIcon = 'mar_right5';\r\n }\r\n\r\n this._options$.next(options);\r\n }\r\n\r\n @Input()\r\n disabled: boolean = false;\r\n\r\n @Output()\r\n // eslint-disable-next-line @angular-eslint/no-output-native\r\n change = new EventEmitter<boolean>();\r\n\r\n private _value: boolean = null as any;\r\n\r\n get value(): boolean {\r\n return this._value;\r\n }\r\n\r\n set value(value: boolean) {\r\n if (value !== this._value) {\r\n this._value = value;\r\n if (this.onChange) {\r\n this.onChange(value);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Function called on change\r\n */\r\n onChange: ((value: boolean) => void) | undefined;\r\n\r\n /**\r\n * Function called on touch\r\n */\r\n onTouched: (() => void) | undefined;\r\n\r\n constructor(\r\n private changeDetectorRef: ChangeDetectorRef\r\n ) { }\r\n\r\n handleClick(): void {\r\n this.value = !this._value;\r\n this.change.emit(this._value);\r\n }\r\n\r\n /**\r\n * Register function on change\r\n * @param fn the function to register\r\n */\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Register function on touch\r\n * @param fn the function to register\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Set the disabled state\r\n * @param isDisabled disabled or not\r\n */\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n writeValue(value: boolean): void {\r\n if (value !== this._value) {\r\n this.value = value;\r\n }\r\n }\r\n\r\n}\r\n","<ng-container *ngIf=\"options$ | async as options\">\r\n <button\r\n (click)=\"handleClick()\"\r\n [attr.aria-label]=\"options.accessibilityLabel\"\r\n [disabled]=\"disabled\"\r\n [ngClass]=\"value ? options.affirmativeColorClass : options.negativeColorClass\"\r\n class=\"access btn sm v_center hov_glow p_toggle_button\"\r\n >\r\n <ng-container *ngIf=\"value else negativeSelected\" [ngTemplateOutlet]=\"affirmativeSelected\"></ng-container>\r\n </button>\r\n\r\n <ng-template #negativeSelected>\r\n <div class=\"content_color p_toggle_shadow p_toggle_status\" [style.min-width]=\"options.toggleSwitchWidth + 'px'\">\r\n <i [ngClass]=\"options.negativeIcon\" class=\"fa-fw\"></i>\r\n </div>\r\n <div class=\"opac_50 p_toggle_status\" [style.min-width]=\"(options.toggleTrackWidth - options.toggleSwitchWidth) + 'px'\">\r\n {{options.negativeLabel}}\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #affirmativeSelected>\r\n <div class=\"opac_50 p_toggle_status\" [style.min-width]=\"(options.toggleTrackWidth - options.toggleSwitchWidth) + 'px'\">\r\n {{options.affirmativeLabel}}\r\n </div>\r\n <div class=\"content_color p_toggle_shadow p_toggle_status\" [style.min-width]=\"options.toggleSwitchWidth + 'px'\">\r\n <i [ngClass]=\"options.affirmativeIcon\" class=\"fa-fw mar_right5\"></i>\r\n </div>\r\n </ng-template>\r\n</ng-container>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ToggleSwitchComponent } from './toggle-switch.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ToggleSwitchComponent\r\n ],\r\n exports: [\r\n ToggleSwitchComponent\r\n ],\r\n imports: [\r\n CommonModule\r\n ]\r\n})\r\nexport class ParticleToggleSwitchModule { }\r\n","import {ChangeDetectorRef, Component, forwardRef, Input, OnInit} from '@angular/core';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\r\nimport {CheckboxText} from '../../shared/models/particle-component-text.model';\r\n\r\n@Component({\r\n selector: 'particle-checkbox',\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.css'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CheckboxComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class CheckboxComponent implements ControlValueAccessor {\r\n\r\n _value: boolean = false;\r\n private _disabled = false;\r\n onChange: (value: any) => void = () => {};\r\n onTouched: () => any = () => {};\r\n\r\n @Input()\r\n set disabled(disabled: boolean) {\r\n this._disabled = coerceBooleanProperty(disabled);\r\n }\r\n\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n @Input()\r\n set value(value: string | boolean) {\r\n if (typeof value === 'string') {\r\n this._value = value.toUpperCase() === 'Y';\r\n this.type = 'string';\r\n } else {\r\n this._value = value;\r\n this.type = 'boolean';\r\n }\r\n }\r\n\r\n get value(): string | boolean {\r\n if (this.type === 'boolean') {\r\n return this._value;\r\n }\r\n\r\n return this._value ? 'Y' : 'N';\r\n }\r\n\r\n @Input()\r\n size: number = 30;\r\n\r\n @Input()\r\n inputId: string = null as any;\r\n\r\n @Input()\r\n text: CheckboxText = {\r\n check: 'Check the Box',\r\n uncheck: 'Uncheck the Box'\r\n } as CheckboxText;\r\n\r\n type: string = 'boolean';\r\n\r\n constructor(\r\n private changeDetectorRef: ChangeDetectorRef\r\n ) { }\r\n\r\n /**\r\n * Write value\r\n * @param value the value to write\r\n */\r\n writeValue(value: string): void {\r\n this.value = value;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Register control value accessor change function\r\n * @param fn the function to register\r\n */\r\n registerOnChange(fn: (value: any) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Register touch handler\r\n * @param fn the touch handler to register\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Set the disabled state\r\n * @param isDisabled whether or not the component should be disabled\r\n */\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n click(): void {\r\n this._value = !this._value;\r\n this.onChange(this.value);\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n}\r\n","<div\r\n class=\"access ptl_input_bg_color ptl_brdr_color ptl_brdr_size ptl_brdr_radius\"\r\n [style.height]=\"size + 'px'\" [style.width]=\"size + 'px'\" [style.min-width]=\"size + 'px'\" [style.min-height]=\"size + 'px'\"\r\n>\r\n <button\r\n class=\"access btn clear width100 height100\"\r\n tabindex=\"0\"\r\n role=\"checkbox\"\r\n type=\"button\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-label]=\"_value ? text.uncheck : text.check\"\r\n (click)=\"click()\">\r\n <!-- show if checked state -->\r\n\r\n <div *ngIf=\"_value\">\r\n <i class=\"fas fa-check fa-fw\" [style.font-size]=\"(size / 2) + 'px'\"></i>\r\n </div>\r\n </button>\r\n\r\n <input type=\"hidden\"\r\n [id]=\"inputId\"\r\n [value]=\"value\"\r\n #hiddenInput />\r\n</div>\r\n\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CheckboxComponent } from './checkbox.component';\nimport {ReactiveFormsModule} from '@angular/forms';\n\n\n\n@NgModule({\n declarations: [\n CheckboxComponent\n ],\n exports: [\n CheckboxComponent\n ],\n imports: [\n CommonModule,\n ReactiveFormsModule\n ]\n})\nexport class ParticleCheckboxModule { }\n","import {\n Component,\n ElementRef,\n OnInit,\n Input,\n forwardRef,\n Output,\n EventEmitter,\n ViewChild\n} from '@angular/core';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\nexport const INPUTMASK_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputMaskComponent),\n multi: true\n};\n@Component({\n selector: 'particle-input-mask',\n template: `<input #input [attr.id]=\"inputId\" [attr.type]=\"type\" [attr.name]=\"name\" [ngStyle]=\"style\" [ngClass]=\"styleClass\" [attr.placeholder]=\"placeholder\"\n [attr.size]=\"size\" [attr.autocomplete]=\"autocomplete\" [attr.maxlength]=\"maxlength\" [attr.tabindex]=\"tabindex\" [attr.aria-label]=\"ariaLabel\" [attr.aria-required]=\"ariaRequired\" [disabled]=\"disabled\" [readonly]=\"readonly\" [attr.required]=\"required\"\n (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\" (keydown)=\"onKeyDown($event)\" (keypress)=\"onKeyPress($event)\" [attr.autofocus]=\"autoFocus\"\n (input)=\"onInputChange($event)\" (paste)=\"handleInputChange($event)\" (click)=\"onClick()\">`,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[class.ui-inputwrapper-filled]': 'filled',\n '[class.ui-inputwrapper-focus]': 'focus'\n },\n providers: [INPUTMASK_VALUE_ACCESSOR]\n})\nexport class InputMaskComponent implements OnInit, ControlValueAccessor {\n @Input() type = 'text';\n @Input() slotChar = '_';\n @Input() autoClear = true;\n @Input() style: any;\n @Input() inputId: string = null as any;\n @Input() styleClass: string = null as any;\n @Input() placeholder: string = null as any;\n @Input() size: number = null as any;\n @Input() maxlength: number = null as any;\n @Input() tabindex: string = null as any;\n @Input() ariaLabel: string = null as any;\n @Input() ariaRequired: boolean = null as any;\n @Input() disabled: boolean = null as any;\n @Input() readonly: boolean = null as any;\n @Input() unmask: boolean = null as any;\n @Input() name: string = null as any;\n @Input() required: boolean = null as any;\n @Input() characterPattern = '[A-Za-z]';\n @Input() autoFocus = false;\n @Input() autocomplete: string = null as any;\n @ViewChild('input', { static: true }) inputViewChild: ElementRef = null as any;\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onComplete: EventEmitter<any> = new EventEmitter();\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onFocus: EventEmitter<any> = new EventEmitter();\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onBlur: EventEmitter<any> = new EventEmitter();\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onInput: EventEmitter<any> = new EventEmitter();\n value: any;\n _mask: string = null as any;\n input: HTMLInputElement = null as any;\n filled = false;\n defs: any;\n tests: any[] = null as any;\n partialPosition: any;\n firstNonMaskPos: number = null as any;\n lastRequiredNonMaskPos: any;\n len: number = null as any;\n oldVal: string = null as any;\n buffer: any;\n defaultBuffer: string = null as any;\n focusText: string = null as any;\n caretTimeoutId: any;\n androidChrome = false;\n focused = false;\n onModelChange: Function = () => {};\n onModelTouched: Function = () => {};\n constructor() {}\n ngOnInit(): void {\n const ua = navigator.userAgent;\n this.androidChrome = /chrome/i.test(ua) && /android/i.test(ua);\n this.initMask();\n }\n @Input() get mask(): string {\n return this._mask;\n }\n set mask(val: string) {\n this._mask = val;\n this.initMask();\n this.writeValue('');\n this.onModelChange(this.value);\n }\n initMask(): void {\n this.tests = [];\n this.partialPosition = this.mask.length;\n this.len = this.mask.length;\n this.firstNonMaskPos = null as any;\n this.defs = {\n '9': '[0-9]',\n 'a': this.characterPattern,\n '*': `${this.characterPattern}|[0-9]`\n };\n const maskTokens = this.mask.split('');\n for (let i = 0; i < maskTokens.length; i++) {\n const c = maskTokens[i];\n if (c === '?') {\n this.len--;\n this.partialPosition = i;\n } else if (this.defs[c]) {\n this.tests.push(new RegExp(this.defs[c]));\n if (this.firstNonMaskPos === null) {\n this.firstNonMaskPos = this.tests.length - 1;\n }\n if (i < this.partialPosition) {\n this.lastRequiredNonMaskPos = this.tests.length - 1;\n }\n } else {\n this.tests.push(null);\n }\n }\n this.buffer = [];\n for (let i = 0; i < maskTokens.length; i++) {\n const c = maskTokens[i];\n if (c !== '?') {\n if (this.defs[c]) {\n this.buffer.push(this.getPlaceholder(i));\n } else {\n this.buffer.push(c);\n }\n }\n }\n this.defaultBuffer = this.buffer.join('');\n }\n writeValue(value: any): void {\n this.value = value;\n if (this.inputViewChild && this.inputViewChild.nativeElement) {\n if (this.value === undefined || this.value == null) {\n this.inputViewChild.nativeElement.value = '';\n } else {\n this.inputViewChild.nativeElement.value = this.value;\n }\n this.checkVal();\n this.focusText = this.inputViewChild.nativeElement.value;\n this.updateFilledState();\n }\n }\n registerOnChange(fn: Function): void {\n this.onModelChange = fn;\n }\n registerOnTouched(fn: Function): void {\n this.onModelTouched = fn;\n }\n setDisabledState(val: boolean): void {\n this.disabled = val;\n }\n caret(first?: number, last?: number): any {\n let range, begin, end;\n if (!this.inputViewChild.nativeElement.offsetParent || this.inputViewChild.nativeElement !== document.activeElement) {\n return;\n }\n if (typeof first === 'number') {\n begin = first;\n end = (typeof last === 'number') ? last : begin;\n if (this.inputViewChild.nativeElement.setSelectionRange) {\n this.inputViewChild.nativeElement.setSelectionRange(begin, end);\n } else if (this.inputViewChild.nativeElement['createTextRange']) {\n range = this.inputViewChild.nativeElement['createTextRange']();\n range.collapse(true);\n range.moveEnd('character', end);\n range.moveStart('character', begin);\n range.select();\n }\n } else {\n if (this.inputViewChild.nativeElement.setSelectionRange) {\n begin = this.inputViewChild.nativeElement.selectionStart;\n end = this.inputViewChild.nativeElement.selectionEnd;\n } else if ((document as any)['selection'] && (document as any)['selection'].createRange) {\n range = (document as any)['selection'].createRange();\n begin = 0 - range.duplicate().moveStart('character', -100000);\n end = begin + range.text.length;\n }\n return {begin: begin, end: end};\n }\n return null;\n }\n isCompleted(): boolean {\n for (let i = this.firstNonMaskPos; i <= this.lastRequiredNonMaskPos; i++) {\n if (this.tests[i] && this.buffer[i] === this.getPlaceholder(i)) {\n return false;\n }\n }\n return true;\n }\n getPlaceholder(i: number): string {\n if (i < this.slotChar.length) {\n return this.slotChar.charAt(i);\n }\n return this.slotChar.charAt(0);\n }\n seekNext(pos: number): number {\n while (++pos < this.len && !this.tests[pos]) {}\n return pos;\n }\n seekPrev(pos: number): number {\n while (--pos >= 0 && !this.tests[pos]) {}\n return pos;\n }\n shiftL(begin: number, end: number): void {\n let i, j;\n if (begin < 0) {\n return;\n }\n for (i = begin, j = this.seekNext(end); i < this.len; i++) {\n if (this.tests[i]) {\n if (j < this.len && this.tests[i].test(this.buffer[j])) {\n this.buffer[i] = this.buffer[j];\n this.buffer[j] = this.getPlaceholder(j);\n } else {\n break;\n }\n j = this.seekNext(j);\n }\n }\n this.writeBuffer();\n this.caret(Math.max(this.firstNonMaskPos, begin));\n }\n shiftR(pos: number): void {\n let i, c, j, t;\n for (i = pos, c = this.getPlaceholder(pos); i < this.len; i++) {\n if (this.tests[i]) {\n j = this.seekNext(i);\n t = this.buffer[i];\n this.buffer[i] = c;\n if (j < this.len && this.tests[j].test(t)) {\n c = t;\n } else {\n break;\n }\n }\n }\n }\n handleAndroidInput(e: Event): void {\n const curVal = this.inputViewChild.nativeElement.value;\n const pos = this.caret() as any;\n if (this.oldVal && this.oldVal.length && this.oldVal.length > curVal.length ) {\n // a deletion or backspace happened\n this.checkVal(true);\n while (pos.begin > 0 && !this.tests[pos.begin - 1]) {\n pos.begin--;\n }\n if (pos.begin === 0) {\n while (pos.begin < this.firstNonMaskPos && !this.tests[pos.begin]) {\n pos.begin++;\n }\n }\n setTimeout(() => {\n this.caret(pos.begin, pos.begin);\n this.updateModel(e);\n if (this.isCompleted()) {\n this.onComplete.emit();\n }\n }, 0);\n } else {\n this.checkVal(true);\n while (pos.begin < this.len && !this.tests[pos.begin]) {\n pos.begin++;\n }\n setTimeout(() => {\n this.caret(pos.begin, pos.begin);\n this.updateModel(e);\n if (this.isCompleted()) {\n this.onComplete.emit();\n }\n }, 0);\n }\n }\n onInputBlur(e: Event): void {\n this.focused = false;\n this.onModelTouched();\n this.checkVal();\n this.updateFilledState();\n this.onBlur.emit(e);\n if (this.inputViewChild.nativeElement.value !== this.focusText || this.inputViewChild.nativeElement.value !== this.value) {\n this.updateModel(e);\n const event = document.createEvent('HTMLEvents');\n event.initEvent('change', true, false);\n this.inputViewChild.nativeElement.dispatchEvent(event);\n }\n }\n onKeyDown(e: KeyboardEvent): void {\n if (this.readonly) {\n return;\n }\n const k = e.which || e.keyCode;\n let pos,\n begin,\n end;\n const iPhone = /iphone/i.test(navigator.userAgent);\n this.oldVal = this.inputViewChild.nativeElement.value;\n // backspace, delete, and escape get special treatment\n if (k === 8 || k === 46 || (iPhone && k === 127)) {\n pos = this.caret() as any;\n begin = pos.begin;\n end = pos.end;\n if (end - begin === 0) {\n begin = k !== 46 ? this.seekPrev(begin) : (end = this.seekNext(begin - 1));\n end = k === 46 ? this.seekNext(end) : end;\n }\n this.clearBuffer(begin, end);\n this.shiftL(begin, end - 1);\n this.updateModel(e);\n e.preventDefault();\n } else if ( k === 13 ) { // enter\n this.onInputBlur(e);\n this.updateModel(e);\n } else if (k === 27) { // escape\n this.inputViewChild.nativeElement.value = this.focusText;\n this.caret(0, this.checkVal());\n this.updateModel(e);\n e.preventDefault();\n } else if (e.key === 'ArrowLeft') {\n const { selectionStart, selectionEnd } = this.inputViewChild.nativeElement as HTMLInputElement;\n const checkedVal = this.checkVal(true);\n if (selectionStart === selectionEnd && (selectionStart as any - 1) > checkedVal) {\n this.caret(checkedVal, checkedVal);\n e.preventDefault();\n }\n } else if (e.key === 'ArrowRight') {\n const { selectionStart, selectionEnd } = this.inputViewChild.nativeElement as HTMLInputElement;\n const checkedVal = this.checkVal(true);\n if (selectionStart === selectionEnd && (selectionStart as any + 1) > checkedVal) {\n this.caret(checkedVal, checkedVal);\n e.preventDefault();\n }\n }\n }\n onKeyPress(e: KeyboardEvent): void {\n if (this.readonly) {\n return;\n }\n const k = e.which || e.keyCode;\n const pos = this.caret() as any;\n let next = 0;\n let p, c, completed;\n if (e.ctrlKey || e.altKey || e.metaKey || k < 32 || (k > 34 && k < 41)) {// Ignore\n return;\n } else if ( k && k !== 13 ) {\n if (pos.end - pos.begin !== 0) {\n this.clearBuffer(pos.begin, pos.end);\n this.shiftL(pos.begin, pos.end - 1);\n }\n p = this.seekNext(pos.begin - 1);\n if (p < this.len) {\n c = String.fromCharCode(k);\n if (this.tests[p].test(c)) {\n this.shiftR(p);\n this.buffer[p] = c;\n this.writeBuffer();\n next = this.seekNext(p);\n if (/android/i.test(navigator.userAgent)) {\n // Path for CSP Violation on FireFox OS 1.1\n const proxy = (): void => {\n this.caret(next);\n };\n setTimeout(proxy, 0);\n } else {\n this.caret(next);\n }\n if (pos.begin <= this.lastRequiredNonMaskPos) {\n completed = this.isCompleted();\n }\n }\n }\n e.preventDefault();\n }\n this.updateModel(e);\n this.updateFilledState();\n if (completed) {\n this.onComplete.emit();\n }\n }\n /**\n * Adjust cursor position if clicked on empty space ahead of the existing input\n */\n onClick(): void {\n const { selectionStart, selectionEnd } = this.inputViewChild.nativeElement as HTMLInputElement;\n const checkedVal = this.checkVal(true);\n if (selectionStart === selectionEnd && selectionStart as any > checkedVal) {\n this.caret(checkedVal, checkedVal);\n }\n }\n clearBuffer(start: number, end: number): void {\n let i;\n for (i = start; i < end && i < this.len; i++) {\n if (this.tests[i]) {\n this.buffer[i] = this.getPlaceholder(i);\n }\n }\n }\n writeBuffer(): void {\n this.inputViewChild.nativeElement.value = this.buffer.join('');\n }\n checkVal(allow?: boolean): number {\n // try to place characters where they belong\n const test = this.inputViewChild.nativeElement.value;\n let lastMatch = -1,\n i,\n c,\n pos;\n for (i = 0, pos = 0; i < this.len; i++) {\n if (this.tests[i]) {\n this.buffer[i] = this.getPlaceholder(i);\n while (pos++ < test.length) {\n c = test.charAt(pos - 1);\n if (this.tests[i].test(c)) {\n this.buffer[i] = c;\n lastMatch = i;\n break;\n }\n }\n if (pos > test.length) {\n this.clearBuffer(i + 1, this.len);\n break;\n }\n } else {\n if (this.buffer[i] === test.charAt(pos)) {\n pos++;\n }\n if ( i < this.partialPosition) {\n lastMatch = i;\n }\n }\n }\n if (allow) {\n this.writeBuffer();\n } else if (lastMatch + 1 < this.partialPosition) {\n if (this.autoClear || this.buffer.join('') === this.defaultBuffer) {\n // Invalid value. Remove it and replace it with the\n // mask, which is the default behavior.\n if (this.inputViewChild.nativeElement.value) {\n this.inputViewChild.nativeElement.value = '';\n }\n this.clearBuffer(0, this.len);\n } else {\n // Invalid value, but we opt to show the value to the\n // user and allow them to correct their mistake.\n this.writeBuffer();\n }\n } else {\n this.writeBuffer();\n this.inputViewChild.nativeElement.value = this.inputViewChild.nativeElement.value.substring(0, lastMatch + 1);\n }\n return (this.partialPosition ? i : this.firstNonMaskPos);\n }\n onInputFocus(event: Event): void {\n if (this.readonly) {\n return;\n }\n this.focused = true;\n clearTimeout(this.caretTimeoutId);\n let pos: number;\n this.focusText = this.inputViewChild.nativeElement.value;\n pos = this.checkVal();\n this.caretTimeoutId = setTimeout(() => {\n if (this.inputViewChild.nativeElement !== document.activeElement) {\n return;\n }\n this.writeBuffer();\n if (pos === this.mask.replace('?', '').length) {\n this.caret(0, pos);\n } else {\n this.caret(pos);\n }\n }, 10);\n this.onFocus.emit(event);\n }\n onInputChange(event: Event): void {\n if (this.androidChrome) {\n this.handleAndroidInput(event);\n } else {\n this.handleInputChange(event);\n }\n this.onInput.emit(event);\n }\n handleInputChange(event: Event): void {\n if (this.readonly) {\n return;\n }\n setTimeout(() => {\n const pos = this.checkVal(true);\n this.caret(pos);\n this.updateModel(event);\n if (this.isCompleted()) {\n this.onComplete.emit();\n }\n }, 0);\n }\n getUnmaskedValue(): string {\n const unmaskedBuffer = [];\n for (let i = 0; i < this.buffer.length; i++) {\n const c = this.buffer[i];\n if (this.tests[i] && c !== this.getPlaceholder(i)) {\n unmaskedBuffer.push(c);\n }\n }\n return unmaskedBuffer.join('');\n }\n updateModel(e: any): void {\n const updatedValue = this.unmask ? this.getUnmaskedValue() : e.target?.value;\n if (updatedValue !== null && updatedValue !== undefined) {\n this.value = updatedValue;\n this.onModelChange(this.value);\n }\n }\n updateFilledState(): void {\n this.filled = this.inputViewChild.nativeElement && this.inputViewChild.nativeElement.value !== '';\n }\n focus(): void {\n this.inputViewChild.nativeElement.focus();\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {InputMaskComponent} from './input-mask.component';\n\n@NgModule({\n imports: [CommonModule],\n exports: [InputMaskComponent],\n declarations: [InputMaskComponent]\n})\nexport class ParticleInputMaskModule {\n}\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'particle-progress-bar',\n templateUrl: './progress-bar.component.html',\n styleUrls: ['./progress-bar.component.css']\n})\nexport class ProgressBarComponent {\n\n private _percentComplete: number = 0;\n\n @Input()\n set percentComplete(percentComplete: number) {\n this._percentComplete = Math.floor(percentComplete);\n }\n\n get percentComplete(): number {\n return this._percentComplete;\n }\n\n @Input()\n backgroundColorClass: string = 'content_color_dark_1';\n\n @Input()\n progressColorClass: string = 'bg_blue';\n\n @Input()\n showPercentComplete: boolean = true;\n\n @Input()\n borderRadius: number = 9999;\n\n @Input()\n height: number = 20;\n\n @Input()\n showBorder: boolean = true;\n\n @Input()\n showMovement: boolean = false;\n\n constructor() { }\n\n}\n","<div [ngClass]=\"showBorder ? backgroundColorClass + ' brdr' : backgroundColorClass\"\n [style.border-radius]=\"borderRadius + 'px'\"\n [style.height]=\"height ? height + 'px' : ''\"\n>\n <div class=\"container_progress\"\n [ngClass]=\"progressColorClass + (showMovement ? ' progress_movement' : '')\"\n [style.width]=\"percentComplete + '%'\"\n [style.border-radius]=\"borderRadius + 'px'\"\n [style.height]=\"height ? (showBorder ? (height - 2) : height) + 'px' : ''\"\n [style.font-size]=\"height < 20 ? '65%' : ''\"\n >\n <ng-container *ngIf=\"(showPercentComplete && height >= 10) else blank\">\n {{percentComplete}}%\n </ng-container>\n <ng-template #blank>&nbsp;</ng-template>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ProgressBarComponent } from './progress-bar.component';\n\n@NgModule({\n declarations: [\n ProgressBarComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n ProgressBarComponent\n ]\n})\nexport class ParticleProgressBarModule { }\n","import {Component, Input} from '@angular/core';\nimport {LoaderText} from '../../../shared/models/particle-component-text.model';\n\n@Component({\n selector: 'particle-loader',\n templateUrl: './loader.component.html',\n styleUrls: ['./loader.component.css']\n})\nexport class LoaderComponent {\n\n @Input()\n text: LoaderText = {\n loadingText: 'Loading',\n } as LoaderText;\n\n @Input()\n disableText: boolean = false;\n\n protected backgroundStyle: string | undefined;\n\n private _colors: Array<string> | undefined;\n\n @Input()\n set colors(colors: Array<string>) {\n if (colors.length === 3) {\n this._colors = colors;\n this.backgroundStyle = 'linear-gradient(to right, rgba(0,0,0,0) 0%, ' + colors[0] + ' 33%, ' + colors[1] + ' 50% , ' + colors[2] + ' 66%, rgba(0,0,0,0) 100%)';\n }\n }\n\n}\n","<div class=\"row column center_center height100\" style=\"max-width: 250px;\">\r\n <div class=\"ptl_loader\">\r\n <div class=\"ptl_loader__progress\" [style.background]=\"backgroundStyle ?? ''\"></div>\r\n </div>\r\n <ng-container *ngIf=\"!disableText\">\r\n <div *ngIf=\"text.loadingText\" class=\"text md bold text_center mar_top15 ent_r2l_txt\" style=\"user-select: none;text-align: center !important;\">\r\n {{text.loadingText}}<span class=\"one\">.</span><span class=\"two\">.</span><span class=\"three\">.</span>\r\n </div>\r\n <div *ngIf=\"text.loadingSubtext\" class=\"text sm text_center mar_top5 ent_r2l_txt\" style=\"user-select: none;text-align: center !important;\">\r\n {{text.loadingSubtext}}\r\n </div>\r\n </ng-container>\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LoaderComponent } from './components/loader.component';\n\n\n\n@NgModule({\n declarations: [\n LoaderComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n LoaderComponent\n ]\n})\nexport class ParticleLoaderModule { }\n","import {Injectable} from '@angular/core';\nimport {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http';\nimport {Observable} from 'rxjs';\n\n/**\n * This interceptor will force the Content-Type header to application/json so that each http call doesn't have to.\n */\n@Injectable()\nexport class JsonInterceptor implements HttpInterceptor {\n\n /**\n * Intercept method to set the content type header.\n *\n * @param req\n * @param next\n */\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const clone = req.clone({setHeaders: {'Content-Type': 'application/json'}});\n return next.handle(clone);\n }\n\n}\n","import {catchError, map} from 'rxjs';\nimport {HttpClient, HttpErrorResponse, HttpParams} from '@angular/common/http';\nimport {Observable, of, throwError} from 'rxjs';\n\n/**\n * This class provides some foundational REST endpoint call capabilities. It will do things like unpack lists into native objects and\n * return Observables so that you don't have to deal with mapping each and every response. It'll also log errors to the console and pass\n * along the error text for you.\n */\nexport class BaseDataService {\n\n /**\n * Extensions of this class can provide the Base URL so that they don't need to write out the full URL for every call made.\n */\n protected getBaseUrl(): string {\n return '';\n }\n\n /**\n * If you receive a 404 from an endpoint, you can choose to treat it like a successful empty response\n * by overriding this and returning true.\n *\n * @protected\n */\n protected ignoreNoResultsError(): boolean {\n return false;\n }\n\n /**\n * Takes an HTTPClient object so that it can make REST calls.\n *\n * @param http\n */\n constructor(protected http: HttpClient) {\n }\n\n /**\n * Gets a result from an endpoint. Executes an HTTP GET.\n *\n * @param url\n * @param params\n */\n handleGet(url: string, params?: HttpParams): Observable<any> {\n return this.handleGetDetailed(url, false, params);\n }\n\n /**\n * Will get a single result from an endpoint. Executes an HTTP GET.\n *\n * @param url\n */\n handleGetOne(url: string): Observable<any> {\n return this.handleGet(url).pipe(\n map(d => d),\n catchError(error => this.handleError(error, this.ignoreNoResultsError()))\n );\n }\n\n /**\n * Gets a List of Values. Will unpack the data object automatically. Executes an HTTP GET.\n *\n * @param url\n */\n handleGetList(url: string): Observable<any> {\n return this.handleGet(url).pipe(\n map(d => d.data),\n catchError(error => this.handleError(error, this.ignoreNoResultsError()))\n );\n }\n\n /**\n * Gets a file from an ednpoint. Executes an HTTP GET.\n *\n * @param url\n * @param params\n */\n handleFileGet(url: string, params?: HttpParams): Observable<any> {\n return this.handleGetDetailed(url, true, params);\n }\n\n /**\n * The handleFileGet will use this to get a file.\n *\n * @param url\n * @param isFileResponse\n * @param params\n */\n private handleGetDetailed(url: string, isFileResponse: boolean, params?: HttpParams): Observable<any> {\n const options = this.getOptions(isFileResponse);\n options.params = params;\n\n return this.http.get(this.getBaseUrl() + url, options)\n .pipe(\n map(res => res),\n catchError(error => this.handleError(error, this.ignoreNoResultsError()))\n );\n }\n\n /**\n * Posts data to an endpoint. HTTP POST.\n *\n * @param url\n * @param payload\n */\n handlePost(url: string, payload: any): Observable<any> {\n return this.handlePostDetailed(url, payload, true, false);\n }\n\n /**\n * Posts data to an endpoint with an expected return of a File.\n *\n * @param url\n * @param payload\n */\n handlePostWithFileResponse(url: string, payload: any): Observable<any> {\n return this.handlePostDetailed(url, payload, true, true);\n }\n\n /**\n * The handlePost methods will use this to make Post calls easier.\n *\n * @param url\n * @param payload\n * @param isJson\n * @param isFileResponse\n */\n private handlePostDetailed(url: string, payload: any, isJson: boolean, isFileResponse: boolean): Observable<any> {\n let payloadFinal = payload;\n if (isJson) {\n payloadFinal = JSON.stringify(payload);\n }\n\n return this.http.post(\n this.getBaseUrl() + url,\n payloadFinal,\n this.getOptions(isFileResponse)).pipe(\n map(res => res),\n catchError(error => this.handleError(error, this.ignoreNoResultsError()))\n );\n }\n\n /**\n * Update data with a REST call. HTTP PUT.\n *\n * @param url\n * @param payload\n */\n handlePut(url: string, payload: any): Observable<any> {\n return this.handlePutDetailed(url, payload, true);\n }\n\n /**\n * Used by the handlePut method to make it simpler and the guts more reusable.\n *\n * @param url\n * @param payload\n * @param isJson\n */\n private handlePutDetailed(url: string, payload: any, isJson: boolean): Observable<any> {\n let payloadFinal = payload;\n if (isJson) {\n payloadFinal = JSON.stringify(payload);\n }\n\n return this.http.put(this.getBaseUrl() + url, payloadFinal, this.getOptions())\n .pipe(\n map(res => res),\n catchError(error => this.handleError(error, this.ignoreNoResultsError()))\n );\n }\n\n /**\n * Executes an HTTP DELETE to remove data.\n *\n * @param url\n */\n handleDelete(url: string): Observable<any> {\n return this.http.delete(this.getBaseUrl() + url)\n .pipe(\n map(res => res),\n catchError(error => this.handleError(error, this.ignoreNoResultsError()))\n );\n }\n\n /**\n * Handles an Observable error\n *\n * @param error\n */\n handleObservableError(error: HttpErrorResponse): Observable<any> {\n this.handleError(error, this.ignoreNoResultsError());\n return of(null);\n }\n\n /**\n * Logs an error and rethrows it\n *\n * @param error\n * @param ignoreNoResultsError\n */\n handleError(error: HttpErrorResponse, ignoreNoResultsError: boolean): Observable<any> {\n if (ignoreNoResultsError && error.status === 404) {\n return of({});\n }\n\n console.error(error);\n return throwError(() => error);\n }\n\n /**\n * Performs a deep copy of a JS object.\n *\n * @param o\n */\n deepCopy<T>(o: T): T {\n return <T> JSON.parse(JSON.stringify(o));\n }\n\n /**\n * Gets the expected response type from an endpoint\n *\n * @param isFileResponse\n */\n private getOptions(isFileResponse?: boolean): any {\n const options: any = {};\n options.responseType = 'json';\n\n if (isFileResponse) {\n options.responseType = 'arraybuffer';\n }\n\n return options;\n }\n\n}\n","import {BehaviorSubject, Observable, mergeMap} from 'rxjs';\r\n\r\nexport class ObservableContainer<T> {\r\n\r\n private _subject = new BehaviorSubject(true);\r\n private readonly _obs: Observable<T>;\r\n\r\n constructor(obs: Observable<T>) {\r\n this._obs = this._subject.pipe(\r\n mergeMap(() => obs)\r\n );\r\n }\r\n\r\n refresh(): void {\r\n this._subject.next(true);\r\n }\r\n\r\n get observable(): Observable<T> {\r\n return this._obs;\r\n }\r\n\r\n}\r\n","/**\n * Use this enumeration to set the status of a call to an Endpoint\n */\nexport enum EndpointStatus {\n LOADING,\n SUCCESS,\n NORESULTS,\n ERROR\n}\n","/** MODULES */\r\nexport * from './app/modules/background-carousel/particle-background-carousel.module';\r\nexport * from './app/modules/paginator/particle-paginator.module';\r\nexport * from './app/modules/profile-pic/particle-profile-pic.module';\r\nexport * from './app/modules/push-container/particle-push-container.module';\r\nexport * from './app/modules/rich-text/particle-rich-text.module';\r\nexport * from './app/modules/icons/particle-icons.module';\r\nexport * from './app/modules/endpoint-state/endpoint-state.module';\r\nexport * from './app/modules/dialog/dialog.module';\r\nexport * from './app/modules/idle-timeout/particle-idle-timeout.module';\r\nexport * from './app/modules/date-picker/date-picker.module';\r\nexport * from './app/modules/dropdown/dropdown.module';\r\nexport * from './app/modules/multi-select/multi-select.module';\r\nexport * from './app/modules/ordinal-number-pipe/ordinal-number-pipe.module';\r\nexport * from './app/modules/popover/popover.module';\r\nexport * from './app/modules/tooltip/tooltip.module';\r\nexport * from './app/modules/keyfilter/keyfilter.module';\r\nexport * from './app/modules/notification/notification.module';\r\nexport * from './app/modules/week-picker/week-picker.module';\r\nexport * from './app/modules/color-picker/color-picker.module';\r\nexport * from './app/modules/slider/slider.module';\r\nexport * from './app/modules/accordion/accordion.module';\r\nexport * from './app/modules/theming/theming.module';\r\nexport * from './app/modules/slideover/particle-slideover.module';\r\nexport * from './app/modules/scroll-to-top/particle-scroll-to-top.module';\r\nexport * from './app/modules/layout/layout.module';\r\nexport * from './app/modules/toggle-switch/toggle-switch.module';\r\nexport * from './app/modules/checkbox/checkbox.module';\r\nexport * from './app/modules/input-mask/input-mask.module';\r\nexport * from './app/modules/progress-bar/progress-bar.module';\r\nexport * from './app/modules/loader/loader.module';\r\n\r\n/** DIRECTIVES */\r\nexport * from './app/modules/tooltip/tooltip.directive';\r\nexport * from './app/modules/keyfilter/keyfilter.directive';\r\nexport * from './app/modules/accordion/directives/accordion-content.directive';\r\nexport * from './app/modules/accordion/directives/accordion-item.directive';\r\nexport * from './app/modules/accordion/directives/accordion-header.directive';\r\nexport * from './app/modules/background-carousel/background-carousel.directive';\r\n\r\n/** COMPONENTS */\r\nexport * from './app/modules/icons/components/icon-select.component';\r\nexport * from './app/modules/paginator/paginator.component';\r\nexport * from './app/modules/profile-pic/profile-pic.component';\r\nexport * from './app/modules/push-container/push-container.component';\r\nexport * from './app/modules/rich-text/rich-text.component';\r\nexport * from './app/modules/rich-text/render-rich-text.component';\r\nexport * from './app/modules/endpoint-state/components/endpoint-state.component';\r\nexport * from './app/modules/dialog/dialog.component';\r\nexport * from './app/modules/date-picker/date-picker.component';\r\nexport * from './app/modules/date-picker/components/calendar/calendar.component';\r\nexport * from './app/modules/date-picker/components/date-range-picker/date-range-picker.component';\r\nexport * from './app/modules/dropdown/dropdown.component';\r\nexport * from './app/modules/multi-select/multi-select.component';\r\nexport * from './app/modules/popover/popover.component';\r\nexport * from './app/modules/notification/notification.component';\r\nexport * from './app/modules/week-picker/week-picker.component';\r\nexport * from './app/modules/color-picker/color-picker.component';\r\nexport * from './app/modules/slider/slider.component';\r\nexport * from './app/modules/theming/components/theming.component';\r\nexport * from './app/modules/accordion/accordion.component';\r\nexport * from './app/modules/slideover/slideover.component';\r\nexport * from './app/modules/idle-timeout/idle-timeout.component';\r\nexport * from './app/modules/scroll-to-top/scroll-to-top.component';\r\nexport * from './app/modules/layout/components/layout-fullwidth-sidebar/layout-fullwidth-sidebar.component';\r\nexport * from './app/modules/layout/components/layout-full-framing/layout-full-framing.component';\r\nexport * from './app/modules/toggle-switch/toggle-switch.component';\r\nexport * from './app/modules/checkbox/checkbox.component';\r\nexport * from './app/modules/input-mask/input-mask.component';\r\nexport * from './app/modules/progress-bar/progress-bar.component';\r\nexport * from './app/modules/loader/components/loader.component';\r\n\r\n/** INTERCEPTORS */\r\nexport * from './app/shared/interceptors/json.interceptor';\r\n\r\n/** SERVICES */\r\nexport * from './app/shared/services/base-data.service';\r\nexport * from './app/shared/services/local-storage.service';\r\nexport * from './app/shared/services/dialog.service';\r\nexport * from './app/modules/notification/services/notification.service';\r\nexport * from './app/modules/theming/services/theming.service';\r\nexport * from './app/modules/theming/services/theme-change-detection.service';\r\n\r\n/** PIPES */\r\nexport * from './app/modules/ordinal-number-pipe/ordinal-number.pipe';\r\n\r\n/** MODELS */\r\nexport * from './app/shared/models/auditable.model';\r\nexport * from './app/shared/models/data-list.model';\r\nexport * from './app/shared/models/id.model';\r\nexport * from './app/shared/models/observable-container';\r\n\r\nexport * from './app/modules/paginator/pagination-event.model';\r\nexport * from './app/modules/background-carousel/carousel-options.model';\r\nexport * from './app/modules/dropdown/models/dropdown-option.model';\r\nexport * from './app/modules/dropdown/models/dropdown-option-group.model';\r\nexport * from './app/modules/multi-select/models/multi-select-option.model';\r\nexport * from './app/modules/multi-select/models/multi-select-option-group.model';\r\nexport * from './app/modules/notification/models/notification.model';\r\nexport * from './app/modules/theming/models/theme.model';\r\nexport * from './app/modules/toggle-switch/models/toggle-options.model';\r\nexport * from './app/modules/rich-text/rich-text-capabilities.model';\r\n\r\n/** ENUMS */\r\nexport * from './app/shared/enums/endpoint-status.enum';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i3.PopoverComponent","i1.TooltipDirective","i2.TooltipDirective","i1.DialogService","i3","i4","i5.DialogComponent","i1","i1.IconsService","i4.TooltipDirective","i6.EndpointStateComponent","i1.DialogComponent","i4.OrdinalNumberPipe","i4.CalendarComponent","tap","i4.DatePickerComponent","i5.CalendarComponent","map","i1.NotificationService","withLatestFrom","i1.LocalStorageService","i2.ThemeChangeDetectionService","i1.ThemingService","i3.DropdownComponent","i2.SlideoverComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEG;MACU,eAAe,CAAA;AAC1B;;AAEG;AACH,IAAA,MAAM,CAAW;AAEjB;;AAEG;AACH,IAAA,cAAc,CAAS;AAEvB;;AAEG;AACH,IAAA,QAAQ,CAAS;AAEjB;;AAEG;AACH,IAAA,aAAa,CAAU;AAEvB;;;;;;;AAOG;AACH,IAAA,WAAA,CAAY,MAAgB,EAAE,cAAsB,EAAE,QAAgB,EAAE,aAAsB,EAAA;AAC5F,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;AACrC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;KACpC;AACF;;AClCD;;AAEG;MAIU,2BAA2B,CAAA;AAEtC;;AAEG;AACK,IAAA,QAAQ,GAAG,IAAI,eAAe,CAAkB,IAAI,eAAe,CAAC,EAAE,EAAE,CAAC,EAAG,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;AAEhG;;AAEG;AACK,IAAA,SAAS,CAAM;AAEvB;;;;AAIG;IACH,IACI,OAAO,CAAC,KAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3B;AAED;;AAEG;AACH,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KACjC;AAED;;;;AAIG;AACH,IAAA,WAAA,CAAY,EAAc,EAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CACrB,MAAK;YACH,IAAI,CAAC,WAAW,EAAE,CAAC;AAEnB,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AAC9B,gBAAA,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC9B,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;AAC9C,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;aACvB;AAED,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACrD,IAAI,YAAY,GAAG,CAAC,CAAC;gBACrB,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC;gBAChD,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,kBAAkB,GAAG,eAAe,CAAC;gBAC5D,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,gBAAgB,GAAG,WAAW,CAAC;AACtD,gBAAA,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,CAAO,IAAA,EAAA,IAAI,CAAC,OAAO,CAAC,cAAc,QAAQ,CAAC;AAC/E,gBAAA,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,CAAO,IAAA,EAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC;AAEvF,gBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,oBAAA,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,MAAK;wBAChC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,CAAO,IAAA,EAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA,CAAA,CAAG,CAAC;qBACrH,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;iBAClC;aACF;AACH,SAAC,CACF,CAAC;KACH;AAED;;AAEG;IACK,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;SAC1B;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;AAChC,YAAA,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC;SACjC;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AAC1B,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC;SAC5B;KACF;AAED;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC/B;uGArFU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAA3B,2BAA2B,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC/B,iBAAA,CAAA;+EAmBK,OAAO,EAAA,CAAA;sBADV,KAAK;uBAAC,yBAAyB,CAAA;;;MCZrB,gCAAgC,CAAA;uGAAhC,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gCAAgC,EATzC,YAAA,EAAA,CAAA,2BAA2B,CAG3B,EAAA,OAAA,EAAA,CAAA,YAAY,aAGZ,2BAA2B,CAAA,EAAA,CAAA,CAAA;AAGlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gCAAgC,YANzC,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAMH,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAX5C,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,2BAA2B;AAC5B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;AACb,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,2BAA2B;AAC5B,qBAAA;AACF,iBAAA,CAAA;;;ACdD;;AAEG;MACU,eAAe,CAAA;AAE1B;;AAEG;AACH,IAAA,UAAU,CAAS;AAEnB;;AAEG;AACH,IAAA,QAAQ,CAAS;AAEjB;;AAEG;AACH,IAAA,WAAW,CAAS;AAEpB;;;;;AAKG;AACH,IAAA,WAAA,CAAY,UAAkB,EAAE,QAAgB,EAAE,WAAmB,EAAA;AACnE,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;KAChC;AAEF;;AC7BD;;AAEG;MAoBU,gBAAgB,CAAA;AA0GP,IAAA,QAAA,CAAA;IAxGD,MAAM,GAAG,MAAM,CAAC;AAEnC;;AAEG;IAEH,MAAM,GAAG,CAAC,CAAC;AAEX;;AAEG;IACH,IACI,KAAK,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,GAAG,MAAM,GAAG,CAAG,EAAA,KAAK,IAAI,CAAC;KAC9C;AAED,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;AAED;;AAEG;IACH,IACI,MAAM,CAAC,MAAc,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,CAAG,EAAA,MAAM,IAAI,CAAC;KACjD;AAED,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;AAED;;AAEG;IAEH,SAAS,GAAG,uCAAuC,CAAC;IAGpD,cAAc,GAAgB,IAAW,CAAC;IAG1C,aAAa,GAAsB,OAAO,CAAC;IAG3C,SAAS,GAAsB,MAAM,CAAC;IAGtC,cAAc,GAAG,GAAG,CAAC;AAErB;;AAEG;AAEH,IAAA,MAAM,GAAG,IAAI,YAAY,EAAQ,CAAC;AAElC;;AAEG;AAEH,IAAA,MAAM,GAAG,IAAI,YAAY,EAAQ,CAAC;AAElC;;AAEG;IACH,MAAM,GAAY,KAAK,CAAC;AAExB;;AAEG;IACH,OAAO,GAAY,KAAK,CAAC;AAEzB;;AAEG;IACK,MAAM,GAAG,MAAM,CAAC;AAExB;;AAEG;IACK,OAAO,GAAG,MAAM,CAAC;AAEzB;;;AAGG;IACK,MAAM,GAAgB,IAAW,CAAC;AAE1C;;;AAGG;IACK,SAAS,GAAmB,IAAW,CAAC;AAEhD;;;AAGG;IACK,sBAAsB,GAAsB,EAAE,CAAC;AAEvD;;;AAGG;AACH,IAAA,WAAA,CAAoB,QAAmB,EAAA;QAAnB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;KAAK;AAE5C;;AAEG;IACH,WAAW,GAAA;QACT,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;AAED;;;AAGG;AAEH,IAAA,OAAO,CAAC,KAAiB,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,MAAM,EAAC,KAAK,EAAE,KAAK,EAAC,GAAG,KAAK,CAAC;YAE7B,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;AAC1B,gBAAA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC;gBAC5E,MAAM,cAAc,GAAG,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC;gBACvD,MAAM,cAAc,GAAG,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,MAAM,CAAC;gBACvD,MAAM,WAAW,GAAG,EAAE,cAAc,IAAI,cAAc,CAAC,CAAC;gBAExD,IAAI,WAAW,EAAE;oBACf,IAAI,CAAC,KAAK,EAAE,CAAC;iBACd;aACF;SACF;KACF;AAED;;AAEG;IAEH,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB;KACF;AAED;;;;;AAKG;AACH,IAAA,MAAM,CAAC,KAAa,EAAA;AAClB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC;SACnC;aAAM;YACL,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,MAAqB,CAAC;gBACjE,KAAK,CAAC,wBAAwB,EAAE,CAAC;aAClC;iBAAM;AACL,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAW,CAAC;aAC3B;SACF;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE;YAChC,IAAI,CAAC,IAAI,EAAE,CAAC;SACb;aAAM;YACL,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;KACF;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,KAAqB,EAAA;AACpC,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;AAC5B,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;YAC/B,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SACpB;KACF;AAED;;;AAGG;AACH,IAAA,eAAe,CAAC,KAAqB,EAAA;AACnC,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,EAAE;AAC7B,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC5B,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SACpB;KACF;AAED;;;AAGG;IACK,IAAI,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACrB;AAED;;AAEG;IACI,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACtB;AAED;;;AAGG;IACK,eAAe,GAAA;AACrB,QAAA,MAAM,EAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAC,GAAI,IAAI,CAAC,MAAsB,CAAC,qBAAqB,EAAE,CAAC;QACxF,MAAM,EAAC,YAAY,EAAE,WAAW,EAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QACnD,MAAM,uBAAuB,GAAG,MAAM,CAAC;AACvC,QAAA,MAAM,oBAAoB,GAAG,MAAM,CAAC,WAAW,GAAG,uBAAuB,CAAC;QAC1E,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,QAAA,MAAM,gBAAgB,GAAG,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;QACpD,IAAI,eAAe,GAAW,IAAW,CAAC;QAC1C,IAAI,WAAW,GAAW,IAAW,CAAC;AAEtC,QAAA,MAAM,YAAY,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;AAC1D,QAAA,MAAM,YAAY,GAAG,oBAAoB,GAAG,gBAAgB,CAAC;QAE7D,IAAI,YAAY,IAAI,IAAI,CAAC,aAAa,KAAK,OAAO,EAAE;YAClD,eAAe,GAAG,aAAa,CAAC;AAChC,YAAA,WAAW,GAAG,CAAG,EAAA,GAAG,GAAG,gBAAgB,IAAI,CAAC;SAC7C;QAED,IAAI,YAAY,IAAI,IAAI,CAAC,aAAa,KAAK,OAAO,EAAE;YAClD,eAAe,GAAG,UAAU,CAAC;YAC7B,WAAW,GAAG,GAAG,uBAAuB,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC;SAC5D;QAED,IAAI,CAAC,eAAe,EAAE;AACpB,YAAA,IAAI,iBAAiB,GAAG,gBAAgB,EAAE;gBACxC,eAAe,GAAG,aAAa,CAAC;AAChC,gBAAA,WAAW,GAAG,CAAG,EAAA,GAAG,GAAG,gBAAgB,IAAI,CAAC;aAC7C;AAAM,iBAAA,IAAI,oBAAoB,GAAG,gBAAgB,EAAE;gBAClD,eAAe,GAAG,UAAU,CAAC;gBAC7B,WAAW,GAAG,GAAG,uBAAuB,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC;aAC5D;iBAAM;AACL,gBAAA,IAAI,YAAY,GAAG,MAAM,CAAC,WAAW,EAAE;oBACrC,WAAW,GAAG,KAAK,CAAC;iBACrB;qBAAM;AACL,oBAAA,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,GAAG,YAAY,CAAC;oBACzD,WAAW,GAAG,GAAG,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC,CAAA,EAAA,CAAI,CAAC;iBACjD;gBAED,eAAe,GAAG,UAAU,CAAC;aAC9B;SACF;QAED,IAAI,YAAY,GAAG,IAAI,CAAC;AAExB,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;AAC/B,YAAA,YAAY,GAAG,CAAC,YAAY,IAAI,WAAW,GAAC,CAAC,CAAC,KAAK,KAAK,GAAC,CAAC,CAAC,CAAC;SAC7D;QAED,IAAI,CAAC,IAAI,GAAG,WAAW,IAAI,MAAM,CAAC,UAAU,EAAE;AAC5C,YAAA,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,GAAG,WAAW,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;SACvE;AAED,QAAA,IAAI,YAAY,GAAG,CAAC,EAAE;YACpB,YAAY,GAAG,CAAC,CAAC;SAClB;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,EAAE,eAAe,CAAC,CAAC;AAC5E,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,CAAA,EAAG,YAAY,CAAA,EAAA,CAAI,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;KAC5D;AAED;;;;AAIG;IACK,iBAAiB,GAAA;QACvB,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAEpE,QAAA,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE;YACvC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,4BAA4B,EAAE,MAAM,CAAC,CAAC;AAC1E,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAC9B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,KAAoB,KAAI;AAC9D,gBAAA,IAAI,IAAI,CAAC,OAAO,EAAE;oBAChB,KAAK,CAAC,wBAAwB,EAAE,CAAC;AAEjC,oBAAA,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;oBAEtB,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,QAAQ,EAAE;wBACrC,IAAI,CAAC,KAAK,EAAE,CAAC;qBACd;iBACF;aACF,CAAC,CACH,CAAC;SACH;KACF;AAED;;;;;AAKG;AACK,IAAA,oBAAoB,CAAC,IAAU,EAAE,QAAA,GAA2B,EAAE,EAAA;AACpE,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YACxB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AAE9F,YAAA,IAAI,UAAU,IAAI,IAAI,EAAE;AACtB,gBAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAmC,CAAC;AAEzD,gBAAA,IAAI,QAAQ,IAAI,CAAC,EAAE;AACjB,oBAAA,QAAQ,CAAC,IAAI,CAAC,IAAW,CAAC,CAAC;iBAC5B;aACF;AAED,YAAA,OAAO,QAAQ,CAAC;SACjB;aAAM;AACL,YAAA,IAAI,UAAU,IAAI,IAAI,EAAE;AACtB,gBAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAmC,CAAC;AAEzD,gBAAA,IAAI,QAAQ,IAAI,CAAC,EAAE;AACjB,oBAAA,QAAQ,CAAC,IAAI,CAAC,IAAW,CAAC,CAAC;iBAC5B;aACF;AAED,YAAA,OAAO,QAAQ,CAAC;SACjB;KACF;AAED;;;AAGG;IACK,oBAAoB,GAAA;AAC1B,QAAA,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,sBAAsB,EAAE;AACpD,YAAA,UAAU,EAAE,CAAC;SACd;AAED,QAAA,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;KAClC;uGA1VU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzB7B,wjBAYA,EDFc,MAAA,EAAA,CAAA,8WAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACV,OAAO,CAAC,WAAW,EAAE;gBACnB,UAAU,CAAC,cAAc,EAAE;oBACzB,KAAK,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC/C,oBAAA,OAAO,CAAC,YAAY,EAClB,KAAK,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;iBACjD,CAAC;gBACF,UAAU,CAAC,eAAe,EAAE;oBAC1B,KAAK,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC7C,oBAAA,OAAO,CAAC,YAAY,EAClB,KAAK,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;iBACnD,CAAC;aACH,CAAC;AACH,SAAA,EAAA,CAAA,CAAA;;2FAEU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAnB5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAGhB,UAAA,EAAA;wBACV,OAAO,CAAC,WAAW,EAAE;4BACnB,UAAU,CAAC,cAAc,EAAE;gCACzB,KAAK,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC/C,gCAAA,OAAO,CAAC,YAAY,EAClB,KAAK,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;6BACjD,CAAC;4BACF,UAAU,CAAC,eAAe,EAAE;gCAC1B,KAAK,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC7C,gCAAA,OAAO,CAAC,YAAY,EAClB,KAAK,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;6BACnD,CAAC;yBACH,CAAC;AACH,qBAAA,EAAA,QAAA,EAAA,wjBAAA,EAAA,MAAA,EAAA,CAAA,8WAAA,CAAA,EAAA,CAAA;8EAUD,MAAM,EAAA,CAAA;sBADL,KAAK;gBAOF,KAAK,EAAA,CAAA;sBADR,KAAK;gBAaF,MAAM,EAAA,CAAA;sBADT,KAAK;gBAaN,SAAS,EAAA,CAAA;sBADR,KAAK;gBAIN,cAAc,EAAA,CAAA;sBADb,KAAK;gBAIN,aAAa,EAAA,CAAA;sBADZ,KAAK;gBAIN,SAAS,EAAA,CAAA;sBADR,KAAK;gBAIN,cAAc,EAAA,CAAA;sBADb,KAAK;gBAON,MAAM,EAAA,CAAA;sBADL,MAAM;gBAOP,MAAM,EAAA,CAAA;sBADL,MAAM;gBA2DP,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAsBxC,cAAc,EAAA,CAAA;sBADb,YAAY;uBAAC,eAAe,CAAA;;;AEvJ/B;;AAEG;MAMU,kBAAkB,CAAA;IAErB,SAAS,GAAW,IAAW,CAAC;AAExC;;AAEG;IAEH,eAAe,GAAkB,IAAW,CAAC;AAE7C;;AAEG;IACH,IACI,QAAQ,CAAC,QAAgB,EAAA;AAC3B,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAChC;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AAED;;AAEG;IAEH,WAAW,GAAW,IAAW,CAAC;IAGlC,SAAS,GAAG,KAAK,CAAC;IAGlB,aAAa,GAAG,KAAK,CAAC;IAGtB,gBAAgB,GAAG,IAAI,CAAC;IAGxB,gBAAgB,GAAG,IAAI,CAAC;AAGxB,IAAA,IAAI,GAAkB;AACpB,QAAA,YAAY,EAAE,gBAAgB;AAC9B,QAAA,cAAc,EAAE,kBAAkB;AAClC,QAAA,YAAY,EAAE,UAAU;AACxB,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,SAAS,EAAE,OAAO;AAClB,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,UAAU,EAAE,cAAc;AAC1B,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,EAAE,EAAE,IAAI;AACR,QAAA,OAAO,EAAE,SAAS;KACF,CAAC;AAEnB;;AAEG;AAEH,IAAA,QAAQ,GAAsB,IAAI,YAAY,EAAE,CAAC;AAEjD;;AAEG;IACH,UAAU,GAAG,CAAC,CAAC;AAEf;;AAEG;IACH,aAAa,GAAG,EAAE,CAAC;AAEnB;;AAEG;IACH,aAAa,GAAW,IAAW,CAAC;IAEpC,iBAAiB,GAAW,CAAC,CAAC;IAC9B,eAAe,GAAW,CAAC,CAAC;IAE5B,IAAI,GAAG,IAAI,CAAC;AAEZ;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC9C;IAED,eAAe,GAAA;QACb,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAChC;IAEO,uBAAuB,GAAA;AAC7B,QAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC;AACrC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC9C;AAED;;AAEG;IACH,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAClB;AAED;;AAEG;IACH,QAAQ,GAAA;QACN,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,CAAC;KAC5C;AAED;;AAEG;IACH,gBAAgB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;KACpD;AAED;;;;;AAKG;IACH,QAAQ,CAAC,UAAkB,EAAE,UAAoB,EAAA;AAC/C,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEnE,IAAI,UAAU,EAAE;YACd,MAAM,OAAO,GAAgB,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAgB,CAAC;YAClF,IAAI,OAAO,EAAE;gBACX,OAAO,CAAC,KAAK,EAAE,CAAC;aACjB;SACF;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;AAED;;AAEG;IACH,SAAS,GAAA;QACP,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;KAC3F;AAED;;;;AAIG;AACH,IAAA,OAAO,CAAC,UAAkB,EAAA;AACxB,QAAA,IAAI,UAAU,GAAG,CAAC,EAAE;AAClB,YAAA,OAAO,KAAK,CAAC;SACd;QAED,OAAO,EAAE,UAAU,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;KACjD;AAED;;;;AAIG;AACH,IAAA,uBAAuB,CAAC,UAAkB,EAAA;QACxC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;KACzC;AAED;;;;AAIG;AACH,IAAA,qBAAqB,CAAC,UAAkB,EAAA;;QAEtC,IAAI,UAAU,KAAK,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,EAAE;YAC9C,OAAO,IAAI,CAAC,WAAW,CAAC;SACzB;QAED,OAAO,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC;KACzC;AAED;;AAEG;IACH,cAAc,GAAA;QACV,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAChD;AAED;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,GAAY,CAAC,IAAI,CAAC,aAAa,CAAC;AACxC,QAAA,IAAI,EAAE,CAAC;AAEP,QAAA,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE;AACf,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;YACxB,OAAO;SACR;AAED,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACrB;AAED,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE;YAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;AAED,QAAA,IAAI,IAAI,IAAI,CAAC,EAAE;YACb,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;AAED,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;KACzB;uGA1NU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,sWCtB/B,84TAyMA,EAAA,MAAA,EAAA,CAAA,wQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,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,0BAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDnLa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,84TAAA,EAAA,MAAA,EAAA,CAAA,wQAAA,CAAA,EAAA,CAAA;8BAY9B,eAAe,EAAA,CAAA;sBADd,KAAK;gBAOF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAcN,WAAW,EAAA,CAAA;sBADV,KAAK;gBAIN,SAAS,EAAA,CAAA;sBADR,KAAK;gBAIN,aAAa,EAAA,CAAA;sBADZ,KAAK;gBAIN,gBAAgB,EAAA,CAAA;sBADf,KAAK;gBAIN,gBAAgB,EAAA,CAAA;sBADf,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;gBAoBN,QAAQ,EAAA,CAAA;sBADP,MAAM;;;MErEI,qBAAqB,CAAA;uGAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAArB,qBAAqB,EAAA,YAAA,EAAA,CAPjB,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAEzB,YAAY;AACZ,YAAA,UAAU,aAEN,gBAAgB,CAAA,EAAA,CAAA,CAAA;AAEf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAL1B,YAAY;YACZ,UAAU,CAAA,EAAA,CAAA,CAAA;;2FAIL,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,gBAAgB,CAAC;AAC9B,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,UAAU;AACb,qBAAA;oBACH,OAAO,EAAE,CAAC,gBAAgB,CAAC;AAC5B,iBAAA,CAAA;;;MCgBY,uBAAuB,CAAA;uGAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAAvB,uBAAuB,EAAA,YAAA,EAAA,CARhC,kBAAkB,CAAA,EAAA,OAAA,EAAA,CATlB,YAAY;YACZ,aAAa;YACb,WAAW;YACX,mBAAmB;YACnB,gBAAgB;YAChB,uBAAuB;AACvB,YAAA,qBAAqB,aAQvB,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAGP,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,YAjBhC,YAAY;YACZ,aAAa;YACb,WAAW;YACX,mBAAmB;YACnB,gBAAgB;YAChB,uBAAuB;YACvB,qBAAqB,CAAA,EAAA,CAAA,CAAA;;2FAWZ,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAnBnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,aAAa;wBACb,WAAW;wBACX,mBAAmB;wBACnB,gBAAgB;wBAChB,uBAAuB;wBACvB,qBAAqB;AACtB,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACZ,kBAAkB;AACnB,qBAAA;AACD,oBAAA,SAAS,EAAE,EACV;AACD,oBAAA,OAAO,EAAE;wBACT,kBAAkB;AACjB,qBAAA;AACF,iBAAA,CAAA;;;ACzBD;;;AAGG;MAKU,gBAAgB,CAAA;AAgGP,IAAA,OAAA,CAAA;AAA0C,IAAA,QAAA,CAAA;AA9F9D;;;AAGG;IACc,cAAc,GAAG,EAAE,CAAC;AAErC;;;AAGG;IACH,IACI,eAAe,CAAC,IAAY,EAAA;AAC9B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAElB,QAAA,IAAI,CAAC,CAAC,IAAI,EAAE;YACV,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE;gBACjC,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,IAAI,CAAC,YAAY,EAAE,CAAC;aACrB;SACF;aAAM;YACL,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;KACF;IACD,IAAI,eAAe,KAAa,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE;AAEpD;;AAEG;IAEH,eAAe,GAAwC,QAAQ,CAAC;AAEhE;;;AAGG;IACH,IACI,eAAe,CAAC,QAAiB,EAAA;AACnC,QAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;QACjC,IAAI,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE;YAC7C,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;KACF;AAED,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAC9B;AAED;;;AAGG;IACK,OAAO,GAAmB,IAAW,CAAC;AAE9C;;;AAGG;IACK,KAAK,GAAW,IAAW,CAAC;AAEpC;;;AAGG;IACK,gBAAgB,GAAY,KAAK,CAAC;AAE1C;;;AAGG;IACK,iBAAiB,GAAsB,EAAE,CAAC;AAElD;;;AAGG;AACK,IAAA,OAAO,kBAAkB,GAAA;QAC/B,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;AAC1D,QAAA,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC;KACzD;AAED;;;AAGG;AACK,IAAA,OAAO,mBAAmB,GAAA;QAChC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;AAC5D,QAAA,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,UAAU,KAAK,UAAU,IAAI,CAAC,CAAC,CAAC;KAC3D;AAED;;;;AAIG;IACH,WAAoB,CAAA,OAAgC,EAAU,QAAmB,EAAA;QAA7D,IAAO,CAAA,OAAA,GAAP,OAAO,CAAyB;QAAU,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;KAAK;AAEtF;;AAEG;IACH,WAAW,GAAA;QACT,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;AAED;;AAEG;IAEH,YAAY,GAAA;QACV,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;AAED;;AAEG;IAEH,YAAY,GAAA;QACV,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;AAED;;AAEG;IAEH,OAAO,GAAA;QACL,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;AAED;;;AAGG;IACK,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,YAAY,EAAE,CAAC;YAEpB,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B;KACF;AAED;;;AAGG;IACK,aAAa,GAAA;QACnB,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;KAC1D;AAED;;;AAGG;IACK,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;KAC5E;AAED;;;AAGG;IACK,YAAY,GAAA;AAClB,QAAA,QAAQ,IAAI,CAAC,eAAe;AAC1B,YAAA,KAAK,MAAM;gBACT,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC7C,IAAI,CAAC,SAAS,EAAE,CAAC;AAEjB,gBAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;oBAC7B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oBAChD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;oBAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;AAEhB,oBAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;wBAC7B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;wBAC/C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;wBAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;AAElB,wBAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;4BAC7B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;4BACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;4BAC/C,IAAI,CAAC,WAAW,EAAE,CAAC;yBACpB;qBACF;iBACF;gBACD,MAAM;AACR,YAAA,KAAK,KAAK;gBACR,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;AAEhB,gBAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;oBAC7B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;oBAC/C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;AAElB,oBAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;wBAC7B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;wBACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;wBAC/C,IAAI,CAAC,WAAW,EAAE,CAAC;AAEnB,wBAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;4BAC7B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;4BAClD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;4BAC7C,IAAI,CAAC,SAAS,EAAE,CAAC;yBAClB;qBACF;iBACF;gBACD,MAAM;AACR,YAAA,KAAK,OAAO;gBACV,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;AAElB,gBAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;oBAC7B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;oBAC/C,IAAI,CAAC,WAAW,EAAE,CAAC;AAEnB,oBAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;wBAC7B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;wBAClD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;wBAC7C,IAAI,CAAC,SAAS,EAAE,CAAC;AAEjB,wBAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;4BAC7B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;4BAChD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;4BAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;yBACjB;qBACF;iBACF;gBACD,MAAM;AACR,YAAA,KAAK,QAAQ;gBACX,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAC/C,IAAI,CAAC,WAAW,EAAE,CAAC;AAEnB,gBAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;oBAC7B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;oBAClD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7C,IAAI,CAAC,SAAS,EAAE,CAAC;AAEjB,oBAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;wBAC7B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;wBAChD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;wBAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;AAEhB,wBAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;4BAC7B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;4BAC/C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;4BAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;yBACnB;qBACF;iBACF;SACJ;KACF;AAED;;;AAGG;IACK,SAAS,GAAA;AACf,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxC,QAAA,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC;QAC9E,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC;AAEvG,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAA,EAAG,IAAI,CAAA,EAAA,CAAI,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAA,EAAG,GAAG,CAAA,EAAA,CAAI,CAAC,CAAC;KACzD;AAED;;;AAGG;IACK,UAAU,GAAA;AAChB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxC,QAAA,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC;QAC5F,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC;AAEvG,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAA,EAAG,IAAI,CAAA,EAAA,CAAI,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAA,EAAG,GAAG,CAAA,EAAA,CAAI,CAAC,CAAC;KACzD;AAED;;;AAGG;IACK,QAAQ,GAAA;AACd,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;AACvG,QAAA,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC;AAE7E,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAA,EAAG,IAAI,CAAA,EAAA,CAAI,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAA,EAAG,GAAG,CAAA,EAAA,CAAI,CAAC,CAAC;KACzD;AAED;;;AAGG;IACK,WAAW,GAAA;AACjB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;AACvG,QAAA,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC;AAE3F,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAA,EAAG,IAAI,CAAA,EAAA,CAAI,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAA,EAAG,GAAG,CAAA,EAAA,CAAI,CAAC,CAAC;KACzD;AAED;;;AAGG;IACK,aAAa,GAAA;AACnB,QAAA,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACzE,MAAM,UAAU,GAAG,IAAI,GAAG,gBAAgB,CAAC,mBAAmB,EAAE,CAAC;QACjE,MAAM,SAAS,GAAG,GAAG,GAAG,gBAAgB,CAAC,kBAAkB,EAAE,CAAC;QAE9D,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;KAC7C;AAED;;;AAGG;IACK,aAAa,GAAA;QACnB,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE;AACjC,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACvD,YAAA,IAAI,CAAC,OAAO,GAAG,IAAW,CAAC;SAC5B;QAED,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;AAED;;;AAGG;IACK,kBAAkB,GAAA;AACxB,QAAA,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAC3D,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AACnD,QAAA,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;QAE3C,OAAO,CAAC,IAAI,GAAG,WAAW,GAAG,UAAU,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,YAAY,GAAG,WAAW,CAAC,CAAC;KAC3G;AAED;;;AAGG;IACK,kBAAkB,GAAA;QACxB,MAAM,aAAa,GAAG,eAAe,CAAC;AACtC,QAAA,MAAM,aAAa,GAAG,CAAC,IAAS,KAAa;AAC3C,YAAA,aAAa,CAAC,SAAS,GAAG,CAAC,CAAC;YAC5B,MAAM,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAChE,OAAO,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;gBACjE,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;gBAClE,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;AAC5E,SAAC,CAAC;AAEF,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACnE,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC5B,YAAA,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YACnF,IAAI,eAAe,EAAE;gBACnB,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC7C,gBAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;oBAChC,MAAM,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC1C,oBAAA,IAAI,EAAE,IAAI,aAAa,CAAC,EAAE,CAAC,EAAE;wBAC3B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACzB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,CAC/D,CAAC;qBACH;iBACF;aACF;iBAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;gBACzD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACzB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,CACnE,CAAC;aACH;SACF;KACF;AAED;;;AAGG;IACK,qBAAqB,GAAA;AAC3B,QAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC7C,YAAA,QAAQ,EAAE,CAAC;SACZ;AAED,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;KAC7B;AAED;;;;;AAKG;AACK,IAAA,iBAAiB,CAAC,OAAY,EAAE,OAAA,GAAsB,EAAE,EAAA;AAC9D,QAAA,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;AAC/B,QAAA,OAAO,CAAC,UAAU;AAChB,cAAE,OAAO;AACT,cAAE,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KACtE;uGAtZU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAE9B,iBAAA,CAAA;uGAcK,eAAe,EAAA,CAAA;sBADlB,KAAK;gBAmBN,eAAe,EAAA,CAAA;sBADd,KAAK;gBAQF,eAAe,EAAA,CAAA;sBADlB,KAAK;gBAwEN,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,YAAY,CAAA;gBAS1B,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,YAAY,CAAA;gBAS1B,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO,CAAA;;;ACnIvB;;AAEG;MAeU,mBAAmB,CAAA;AAE9B;;AAEG;IAEH,IAAI,GAAG,MAAM,CAAC;AAEd;;AAEG;IAEH,MAAM,GAAG,GAAG,CAAC;AAEb;;AAEG;IAEH,OAAO,GAAW,IAAW,CAAC;AAE9B;;AAEG;IAEH,eAAe,GAAY,KAAK,CAAC;AAEjC;;AAEG;IACH,IACI,aAAa,CAAC,aAAqB,EAAA;AACrC,QAAA,IAAI,CAAC,GAAG,GAAG,CAAA,oCAAA,EAAuC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA,WAAA,EAAc,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC;KAC7J;AAED;;AAEG;IACH,IACI,QAAQ,CAAC,QAAgB,EAAA;AAC3B,QAAA,IAAI,CAAC,GAAG,GAAG,CAAO,IAAA,EAAA,QAAQ,GAAG,CAAC;KAC/B;IAED,GAAG,GAAW,IAAW,CAAC;uGA1Cf,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAXpB,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;AASD,UAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kg0BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEE,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAd/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAEtB,QAAA,EAAA,CAAA;;;;;;;;;AASD,UAAA,CAAA,EAAA,MAAA,EAAA,CAAA,kg0BAAA,CAAA,EAAA,CAAA;8BAQT,IAAI,EAAA,CAAA;sBADH,KAAK;gBAON,MAAM,EAAA,CAAA;sBADL,KAAK;gBAON,OAAO,EAAA,CAAA;sBADN,KAAK;gBAON,eAAe,EAAA,CAAA;sBADd,KAAK;gBAOF,aAAa,EAAA,CAAA;sBADhB,KAAK;gBASF,QAAQ,EAAA,CAAA;sBADX,KAAK;;;MChDK,qBAAqB,CAAA;uGAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,EAJjB,YAAA,EAAA,CAAA,gBAAgB,CACrB,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,gBAAgB,CAAA,EAAA,CAAA,CAAA;AAEf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAHtB,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAGX,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,gBAAgB,CAAC;oBAChC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,gBAAgB,CAAC;AAC5B,iBAAA,CAAA;;;MCSY,wBAAwB,CAAA;uGAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAAxB,wBAAwB,EAAA,YAAA,EAAA,CAVjC,mBAAmB,CAAA,EAAA,OAAA,EAAA,CAGf,YAAY;AACZ,YAAA,qBAAqB,aAGzB,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAGV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YAP7B,YAAY;YACZ,qBAAqB,CAAA,EAAA,CAAA,CAAA;;2FAMhB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAZpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,mBAAmB;AACpB,qBAAA;AACC,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,qBAAqB;AACxB,qBAAA;AACH,oBAAA,OAAO,EAAE;wBACP,mBAAmB;AACpB,qBAAA;AACF,iBAAA,CAAA;;;ACXD;;AAEG;MAMU,sBAAsB,CAAA;IAEzB,MAAM,GAAG,GAAG,CAAC;AAErB;;AAEG;IACH,IACI,KAAK,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;AAED,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;AAED;;AAEG;IAEH,aAAa,GAAG,KAAK,CAAC;AAEtB;;AAEG;IAEH,aAAa,GAAW,IAAW,CAAC;AAEpC;;AAEG;IAEH,IAAI,GAAG,MAAM,CAAC;AAEd;;AAEG;IACH,IACI,SAAS,CAAC,SAAiB,EAAA;AAC7B,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,QAAA,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;QACpC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;AAED,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IAEO,UAAU,GAAG,KAAK,CAAC;IAE3B,IACI,YAAY,CAAC,YAAoB,EAAA;AACnC,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;AAED,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;IAEO,aAAa,GAAG,KAAK,CAAC;AAE9B;;AAEG;IAEH,aAAa,GAAG,KAAK,CAAC;AAEtB;;AAEG;IAEH,oBAAoB,GAAG,eAAe,CAAC;AAEvC;;AAEG;IAEH,UAAU,GAAG,GAAG,CAAC;AAEjB;;AAEG;IAEH,eAAe,GAAG,KAAK,CAAC;IAGxB,cAAc,GAAG,KAAK,CAAC;IAGvB,aAAa,GAAG,sBAAsB,CAAC;AAGvC,IAAA,IAAI,GAAsB;AACxB,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,MAAM,EAAE,QAAQ;KACI,CAAC;AAEvB;;AAEG;AAEH,IAAA,MAAM,GAAsB,IAAI,YAAY,EAAE,CAAC;AAE/C;;AAEG;AAEH,IAAA,MAAM,GAAsB,IAAI,YAAY,EAAE,CAAC;AAE/C;;AAEG;IACH,UAAU,GAAG,KAAK,CAAC;IAEX,WAAW,GAAY,KAAK,CAAC;AAErC;;AAEG;IACH,kBAAkB,GAAG,KAAK,CAAC;AAE3B,IAAA,cAAc,GAAwC,IAAI,eAAe,CAAqB,EAAwB,CAAC,CAAC;IAExH,MAAM,GAAW,IAAW,CAAC;IACrB,OAAO,GAAW,IAAW,CAAC;IAE9B,UAAU,GAAG,CAAC,CAAC;IACf,kBAAkB,GAAW,IAAW,CAAC;IACzC,wBAAwB,GAAY,IAAW,CAAC;AAExD;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;KACtC;AAED;;AAEG;IACH,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QAC9C,IAAI,CAAC,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC9D,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAE5D,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,sBAAsB,CAAC;SACnD;QAED,IAAI,MAAM,CAAC,UAAU,GAAG,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE;YACjD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;SACnC;aAAM;YACL,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,KAAK,EAAE,CAAC;aACd,EAAE,GAAG,CAAC,CAAC;SACT;QAED,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE;AAC7D,gBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;aAChC;YAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC9B,SAAC,CAAC,CAAC;KACJ;AAED;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK,EAAE,CAAC;KACd;AAED;;;;AAIG;AAEH,IAAA,QAAQ,CAAC,KAAU,EAAA;AACjB,QAAA,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,GAAG,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE;AACjF,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,gBAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,gBAAA,UAAU,CAAC,MAAM,IAAI,CAAC,UAAU,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC;AAC/C,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;aACpB;AAED,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SACvB;AAAM,aAAA,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE;YAC9D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;YAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;YAC9C,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAC9D,YAAA,IAAI,CAAC,MAAM,GAAG,IAAW,CAAC;YAC1B,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;AAED,QAAA,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG,IAAI,IAAI,CAAC,UAAU,IAAI,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE;AACjF,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC1B,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAEnB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;SACnC;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;SACrE;QAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;KAC3C;AAED;;AAEG;IACH,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,YAAA,UAAU,CAAC,MAAM,IAAI,CAAC,WAAW,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC;AAEhD,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,IAAI,CAAC,KAAK,EAAE,CAAC;aACd;iBAAM;gBACL,IAAI,CAAC,IAAI,EAAE,CAAC;aACb;SACF;KACF;AAED;;;;AAIG;AACH,IAAA,IAAI,CAAC,IAAc,EAAA;QACjB,IAAI,IAAI,IAAI,MAAM,CAAC,UAAU,IAAI,GAAG,EAAE;YACpC,OAAO;SACR;AAED,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAErB,QAAA,IAAI,MAAM,CAAC,UAAU,GAAG,GAAG,EAAE;YAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;AAClC,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC;SAC3C;aAAM;AACL,YAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;AACtB,YAAA,IAAI,CAAC,MAAM,GAAG,kBAAkB,CAAC;AACjC,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7B,YAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;SACvB;QAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;AAED;;AAEG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;YAC9C,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAC9D,YAAA,IAAI,CAAC,MAAM,GAAG,IAAW,CAAC;SAC3B,EAAE,GAAG,CAAC,CAAC;KACT;AAED;;;;AAIG;AACK,IAAA,SAAS,CAAC,IAAY,EAAA;QAC5B,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5D,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO;SACR;AAED,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,UAAU,GAAG,GAAG,EAAE;YACpE,IAAI,GAAG,MAAM,CAAC;SACf;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE;AACtC,YAAA,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;AAEhC,YAAA,IAAI,IAAI,KAAK,KAAK,EAAE;AAClB,gBAAA,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;aAC7C;SACF;aAAM,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;AAC9C,YAAA,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;AAEjC,YAAA,IAAI,IAAI,KAAK,KAAK,EAAE;AAClB,gBAAA,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;aAC9C;SACF;KACF;AAED;;AAEG;IACH,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,aAAa,EAAE;AACjD,YAAA,OAAO,MAAM,CAAC;SACf;aAAM;AACL,YAAA,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;SAC1B;KACF;AAED;;AAEG;IACK,iBAAiB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,OAAO,IAAI,CAAC,oBAAoB,GAAG,yBAAyB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;SACxF;aAAM;AACL,YAAA,OAAO,IAAI,CAAC,oBAAoB,GAAG,2BAA2B,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;SAC1F;KACF;AAED;;AAEG;IACK,eAAe,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;AACxB,YAAA,OAAO,EAAE,CAAC;SACX;aAAM;AACL,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,gBAAA,OAAO,GAAG,CAAC;aACZ;iBAAM;AACL,gBAAA,OAAO,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;aAChC;SACF;KACF;AAED;;AAEG;IACK,gBAAgB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AACzB,YAAA,OAAO,EAAE,CAAC;SACX;aAAM;AACL,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,gBAAA,OAAO,GAAG,CAAC;aACZ;iBAAM;gBACL,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;aACvC;SACF;KACF;IAEO,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACvB,YAAA,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE;AAC9B,YAAA,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE;AAC5B,YAAA,cAAc,EAAE,IAAI,CAAC,iBAAiB,EAAE;YACxC,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,SAAS,EAAE,IAAI,CAAC,UAAU;AACL,SAAA,CAAC,CAAC;KAC1B;IAEO,gBAAgB,GAAA;AACtB,QAAA,MAAM,MAAM,GAAW,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YACvD,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAExC,QAAA,IAAI,CAAC,OAAO,GAAG,CAAe,YAAA,EAAA,MAAM,KAAK,CAAC;KAC3C;uGA3XU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,0iBCbnC,+jDAqCA,EAAA,MAAA,EAAA,CAAA,kmCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDxBa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,yBAAyB,EAAA,QAAA,EAAA,+jDAAA,EAAA,MAAA,EAAA,CAAA,kmCAAA,CAAA,EAAA,CAAA;8BAY/B,KAAK,EAAA,CAAA;sBADR,KAAK;gBAeN,aAAa,EAAA,CAAA;sBADZ,KAAK;gBAON,aAAa,EAAA,CAAA;sBADZ,KAAK;gBAON,IAAI,EAAA,CAAA;sBADH,KAAK;gBAOF,SAAS,EAAA,CAAA;sBADZ,KAAK;gBAeF,YAAY,EAAA,CAAA;sBADf,KAAK;gBAiBN,aAAa,EAAA,CAAA;sBADZ,KAAK;gBAON,oBAAoB,EAAA,CAAA;sBADnB,KAAK;gBAON,UAAU,EAAA,CAAA;sBADT,KAAK;gBAON,eAAe,EAAA,CAAA;sBADd,KAAK;gBAIN,cAAc,EAAA,CAAA;sBADb,KAAK;gBAIN,aAAa,EAAA,CAAA;sBADZ,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;gBAUN,MAAM,EAAA,CAAA;sBADL,MAAM;gBAOP,MAAM,EAAA,CAAA;sBADL,MAAM;gBA6EP,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MEzL9B,2BAA2B,CAAA;uGAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAA3B,2BAA2B,EAAA,YAAA,EAAA,CATvB,sBAAsB,CAAA,EAAA,OAAA,EAAA,CAE/B,YAAY;AACZ,YAAA,qBAAqB,aAGzB,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAGb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,YAPhC,YAAY;YACZ,qBAAqB,CAAA,EAAA,CAAA,CAAA;;2FAMhB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAVvC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,sBAAsB,CAAC;AACpC,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,qBAAqB;AACxB,qBAAA;AACH,oBAAA,OAAO,EAAE;wBACP,sBAAsB;AACvB,qBAAA;AACF,iBAAA,CAAA;;;MCRY,aAAa,CAAA;IAExB,OAAO,GAAsB,EAAE,CAAC;IAExB,cAAc,GAAyB,KAAK,IAAG;AACrD,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;YACjD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACvC,IAAI,aAAa,GAAG,IAAI,CAAC;AACzB,gBAAA,IAAI,cAAc,IAAI,KAAK,CAAC,MAAM,EAAE;oBAClC,aAAa,GAAI,KAAK,CAAC,MAAsB,CAAC,YAAY,CACxD,4BAA4B,CAC7B,CAAC;iBACH;gBAED,IAAI,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,EAAE,EAAE;AAClD,oBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAExD,oBAAA,IAAI,SAAS,CAAC,UAAU,EAAE;AACxB,wBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;wBACnB,SAAS,CAAC,KAAK,EAAE,CAAC;wBAClB,KAAK,CAAC,eAAe,EAAE,CAAC;qBACzB;iBACF;aACF;SACF;AACH,KAAC,CAAA;AAED,IAAA,cAAc,CAAC,MAAuB,EAAA;QACpC,IAAI,MAAM,EAAE;YACV,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC7B,MAAM,CAAC,gBAAgB,CAAE,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;gBACvD,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;aAC5C;AACD,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC3B;KACF;AAED,IAAA,gBAAgB,CAAC,MAAuB,EAAA;QACtC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC;SACvD;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YAC7B,MAAM,CAAC,mBAAmB,CAAE,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAC1D,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;SAC/C;KACF;uGA7CU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACED;;AAEG;MAkBU,eAAe,CAAA;AAoHN,IAAA,aAAA,CAAA;AAlHpB;;AAEG;IAEH,WAAW,GAAkC,IAAW,CAAC;AAEzD;;AAEG;AACH,IAAA,eAAe,GAAuB,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,IAAI,CACpE,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,EAC5B,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,EACjC,GAAG,CAAC,WAAW,IAAG;AAChB,QAAA,IAAI,KAAa,CAAC;QAClB,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YAC7B,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACrE,YAAA,IAAI,KAAK,GAAG,WAAW,EAAE;gBACvB,KAAK,GAAG,WAAW,CAAC;aACrB;YACD,OAAO,KAAK,GAAG,IAAI,CAAC;SACrB;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB,CAAC,CACH,CAAC;AAEF;;AAEG;AACK,IAAA,OAAO,CAAM;AAErB;;AAEG;IACH,IACI,MAAM,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;SAC3C;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,EAAE;AAC1B,YAAA,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;SACzC;AACD,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACtB;AAED,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;AAED;;AAEG;IAEH,KAAK,GAAW,IAAW,CAAC;AAE5B;;AAEG;IAEH,UAAU,GAAG,cAAc,CAAC;AAE5B;;AAEG;IAEH,SAAS,GAAG,IAAI,CAAC;AAEjB;;AAEG;IAEH,UAAU,GAAG,IAAI,CAAC;AAElB;;AAEG;IAEH,SAAS,GAAG,eAAe,CAAC;AAE5B;;AAEG;IAEH,MAAM,GAAG,OAAO,CAAC;AAEjB;;AAEG;IAEH,KAAK,GAAG,OAAO,CAAC;IAGhB,YAAY,GAAG,KAAK,CAAC;AAGrB,IAAA,IAAI,GAAe;AACjB,QAAA,KAAK,EAAE,cAAc;KACR,CAAC;AAEhB;;AAEG;AAEH,IAAA,MAAM,GAAsB,IAAI,YAAY,EAAE,CAAC;AAE/C;;AAEG;AAEH,IAAA,MAAM,GAAG,IAAI,YAAY,EAAQ,CAAC;AAElC;;;AAGG;AACH,IAAA,WAAA,CAAoB,aAA4B,EAAA;QAA5B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;KAAK;AAErD;;AAEG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;KAC3C;AAED;;AAEG;AACH,IAAA,IAAI,MAAY;AAEhB;;;AAGG;AACH,IAAA,eAAe,CAAC,KAAqB,EAAA;AACnC,QAAA,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,EAAE;AAC9B,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SACpB;AAAM,aAAA,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;AACnC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SACpB;KACF;uGA7IU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,YAAA,EAAA,cAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3B5B,kkDAwCA,ED1Bc,MAAA,EAAA,CAAA,mlBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACV,OAAO,CAAC,QAAQ,EAAE;AAChB,gBAAA,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC/D,UAAU,CAAC,WAAW,EAAE;oBACtB,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAClC,oBAAA,OAAO,CAAC,sBAAsB,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAE;iBACjF,CAAC;gBACF,UAAU,CAAC,QAAQ,EAAE;AACnB,oBAAA,OAAO,CAAC,sBAAsB,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;iBAClF,CAAC;aACH,CAAC;AACH,SAAA,EAAA,CAAA,CAAA;;2FAEU,eAAe,EAAA,UAAA,EAAA,CAAA;kBAjB3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAGf,UAAA,EAAA;wBACV,OAAO,CAAC,QAAQ,EAAE;AAChB,4BAAA,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;4BAC/D,UAAU,CAAC,WAAW,EAAE;gCACtB,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAClC,gCAAA,OAAO,CAAC,sBAAsB,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAE;6BACjF,CAAC;4BACF,UAAU,CAAC,QAAQ,EAAE;AACnB,gCAAA,OAAO,CAAC,sBAAsB,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;6BAClF,CAAC;yBACH,CAAC;AACH,qBAAA,EAAA,QAAA,EAAA,kkDAAA,EAAA,MAAA,EAAA,CAAA,mlBAAA,CAAA,EAAA,CAAA;+EAQD,WAAW,EAAA,CAAA;sBADV,SAAS;uBAAC,aAAa,CAAA;gBA+BpB,MAAM,EAAA,CAAA;sBADT,KAAK;gBAmBN,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAON,UAAU,EAAA,CAAA;sBADT,KAAK;gBAON,SAAS,EAAA,CAAA;sBADR,KAAK;gBAON,UAAU,EAAA,CAAA;sBADT,KAAK;gBAON,SAAS,EAAA,CAAA;sBADR,KAAK;gBAON,MAAM,EAAA,CAAA;sBADL,KAAK;gBAON,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAIN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;gBASN,MAAM,EAAA,CAAA;sBADL,MAAM;gBAOP,MAAM,EAAA,CAAA;sBADL,MAAM;;;AE7HI,MAAA,wBAAwB,GAAQ;AAC3C,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,IAAA,KAAK,EAAE,IAAI;EACX;MAUW,iBAAiB,CAAA;IAG5B,WAAW,GAAG,EAAE,CAAC;IAGjB,YAAY,GAAG,KAAK,CAAC;IAGrB,MAAM,GAAG,OAAO,CAAC;AAEjB,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IAED,IAAI,QAAQ,CAAC,QAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,QAAQ,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACzC;AAGD,IAAA,IAAI,GAAuB;AACzB,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,YAAY,EAAE,eAAe;AAC7B,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,UAAU,EAAE,aAAa;AACzB,QAAA,YAAY,EAAE,eAAe;AAC7B,QAAA,OAAO,EAAE,UAAU;AACnB,QAAA,UAAU,EAAE,aAAa;AACzB,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,UAAU,EAAE,aAAa;AACzB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,GAAG,EAAE,KAAK;AACV,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,WAAW,EAAE,cAAc;KACN,CAAC;AAGxB,IAAA,YAAY,GAAG;AACb,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,cAAc,EAAE,IAAI;AACpB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,SAAS,EAAE,IAAI;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,MAAM,EAAE,KAAK;KACU,CAAC;IAG1B,YAAY,GAAG,KAAK,CAAC;AAGrB,IAAA,WAAW,GAAG,IAAI,YAAY,EAG1B,CAAC;IAEL,UAAU,GAAQ,IAAI,CAAC;IACvB,UAAU,GAAW,IAAW,CAAC;IACjC,UAAU,GAAW,IAAW,CAAC;AAEjC;;AAEG;AACH,IAAA,QAAQ,CAAwC;AAEhD;;AAEG;AACH,IAAA,SAAS,CAA2B;IAE5B,MAAM,GAAW,IAAW,CAAC;IAC7B,SAAS,GAAG,IAAI,CAAC;IAEN,MAAM,GAAG,MAAM,CAAC;IAEnC,MAAM,GAAG,IAAI,MAAM,CAAC;AAClB,QAAA,UAAU,EAAE;YACV,UAAU;YACV,IAAI,CAAC,SAAS,CAAC;AACb,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,cAAc,EAAE;AACd,oBAAA,KAAK,EAAE,gBAAgB;AACvB,oBAAA,MAAM,EAAE,QAAQ;AACjB,iBAAA;aACF,CAAC;YACF,SAAS,CAAC,SAAS,CAAC;AAClB,gBAAA,KAAK,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC;aAEhC,CAAC;YACF,WAAW,CAAC,SAAS,CAAC;AACpB,gBAAA,WAAW,EAAE,MAAM,IAAI,CAAC,WAAW;aACpC,CAAC;YACF,KAAK;AACN,SAAA;AACD,QAAA,WAAW,EAAE;AACX,YAAA,UAAU,EAAE;AACV,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,UAAU,EAAE,MAAM;AACnB,aAAA;AACF,SAAA;AACD,QAAA,gBAAgB,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC;AAChD,KAAA,CAAC,CAAC;AAEH,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IAED,IAAI,KAAK,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,OAAO;SACR;AAED,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,EAAE;AACzB,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACtB;SACF;KACF;IAED,eAAe,GAAA;QACb,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAExC,QAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAC,MAAM,EAAC,KAAI;AACpC,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,gBAAA,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE;gBAC3B,SAAS,EAAE,IAAI,CAAC,MAAM;AACvB,aAAA,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;KACF;AAED,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,EAAE;AACzB,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SACrB;KACF;AAED,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAED,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAED,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;KACrC;IAED,cAAc,GAAA;AACZ,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;AAC3D,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;KAC1B;IAED,eAAe,GAAA;AACb,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC;AAC3D,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;KAC3B;AAED,IAAA,gBAAgB,CAAC,MAAc,EAAA;QAC7B,QAAQ,MAAM;AACZ,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC;gBACtE,MAAM;AACR,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,EAAE;AAC9B,oBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;iBAChH;AAAM,qBAAA,IAAI,IAAI,CAAC,UAAU,KAAK,OAAO,EAAE;oBACtC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA;iBACrE;gBACD,MAAM;AACR,YAAA;AACE,gBAAA,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;SACvB;AAED,QAAA,IAAI,CAAC,UAAU,GAAG,IAAW,CAAC;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAW,CAAC;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAW,CAAC;KAC/B;AAED,IAAA,KAAK,CAAC,QAAc,EAAA;QAClB,IAAI,CAAC,QAAQ,EAAE;YACb,QAAQ,GAAG,OAAO,CAAC;SACpB;QAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;KACtC;uGA5MU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAJjB,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAAA,CAAC,wBAAwB,CAAC,0BCrBvC,k1WAgOA,EAAA,MAAA,EAAA,CAAA,qRAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,gBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,iFAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,EAAA,OAAA,EAAA,cAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDvMa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,aAGnB,CAAC,wBAAwB,CAAC,EACtB,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,k1WAAA,EAAA,MAAA,EAAA,CAAA,qRAAA,CAAA,EAAA,CAAA;8BAMrC,WAAW,EAAA,CAAA;sBADV,KAAK;gBAIN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAIN,MAAM,EAAA,CAAA;sBADL,KAAK;gBAIF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAWN,IAAI,EAAA,CAAA;sBADH,KAAK;gBAyBN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAWN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAIN,WAAW,EAAA,CAAA;sBADV,MAAM;;;ME7EI,uBAAuB,CAAA;IAGlC,IAAI,GAAG,EAAE,CAAC;uGAHC,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,2FAFxB,CAAgE,8DAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAE/D,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,QAAQ,EAAE,CAAgE,8DAAA,CAAA;AAC3E,iBAAA,CAAA;8BAIC,IAAI,EAAA,CAAA;sBADH,KAAK;;;MCSK,oBAAoB,CAAA;uGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAApB,oBAAoB,EAAA,YAAA,EAAA,CAV7B,eAAe,CAAA,EAAA,OAAA,EAAA,CAGf,YAAY;AACZ,YAAA,UAAU,aAGV,eAAe,CAAA,EAAA,CAAA,CAAA;AAGN,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAP7B,YAAY;YACZ,UAAU,CAAA,EAAA,CAAA,CAAA;;2FAMD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAZhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,eAAe;AAChB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,UAAU;AACX,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,eAAe;AAChB,qBAAA;AACF,iBAAA,CAAA;;;MCoBY,sBAAsB,CAAA;uGAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,iBAvB/B,iBAAiB;AACjB,YAAA,uBAAuB,aAGvB,YAAY;YACZ,qBAAqB;YACrB,eAAe;YACf,WAAW;YACX,aAAa;YACb,iBAAiB;AACjB,YAAA,oBAAoB,aASpB,iBAAiB;YACjB,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAGd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,EAXtB,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,gBAAgB;AACzB,gBAAA,QAAQ,EAAE,EAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAC;AACjC,aAAA;AACF,SAAA,EAAA,OAAA,EAAA,CAbC,YAAY;YACZ,qBAAqB;YACrB,eAAe;YACf,WAAW;YACX,aAAa;YACb,iBAAiB;YACjB,oBAAoB,CAAA,EAAA,CAAA,CAAA;;2FAaX,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAzBlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,iBAAiB;wBACjB,uBAAuB;AACxB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,qBAAqB;wBACrB,eAAe;wBACf,WAAW;wBACX,aAAa;wBACb,iBAAiB;wBACjB,oBAAoB;AACrB,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,gBAAgB;AACzB,4BAAA,QAAQ,EAAE,EAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAC;AACjC,yBAAA;AACF,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,iBAAiB;wBACjB,uBAAuB;AACxB,qBAAA;AACF,iBAAA,CAAA;;;ACnCD;;AAEG;MACU,oBAAoB,CAAA;AAE/B;;AAEG;IACH,OAAO,UAAU,GAAG;AAClB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,SAAS;AACnB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,ySAAyS;AAChT,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,YAAY,GAAG;AACpB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,YAAY;AACtB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,ueAAue;AAC9e,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,WAAW,GAAG;AACnB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,iYAAiY;AACxY,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,OAAO,GAAG;AACf,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,6ZAA6Z;AACpa,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,YAAY,GAAG;AACpB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,YAAY;AACtB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,8eAA8e;AACrf,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,UAAU,GAAG;AAClB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,SAAS;AACnB,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;AACF,YAAA,IAAI,EAAE,4NAA4N;AACnO,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,iBAAiB,GAAG;AACzB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,iBAAiB;AAC3B,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,ycAAyc;AAChd,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,WAAW,GAAG;AACnB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,0WAA0W;AACjX,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,QAAQ,GAAG;AAChB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,+UAA+U;AACtV,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,OAAO,GAAG;AACf,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;YACF,IAAI;YACJ,gKAAgK;AACjK,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,OAAO,GAAG;AACf,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,waAAwa;AAC/a,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,UAAU,GAAG;AAClB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,SAAS;AACnB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,6dAA6d;AACpe,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,UAAU,GAAG;AAClB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,sgBAAsgB;AAC7gB,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,QAAQ,GAAG;AAChB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,6ZAA6Z;AACpa,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,cAAc,GAAG;AACtB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,cAAc;AACxB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,2nBAA2nB;AACloB,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,MAAM,GAAG;AACd,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,yWAAyW;AAChX,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,cAAc,GAAG;AACtB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,cAAc;AACxB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,ojBAAojB;AAC3jB,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,aAAa,GAAG;AACrB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,aAAa;AACvB,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;AACF,YAAA,IAAI,EAAE,27BAA27B;AACl8B,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,QAAQ,GAAG;AAChB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,gsBAAgsB;AACvsB,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,MAAM,GAAG;AACd,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,oeAAoe;AAC3e,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,eAAe,GAAG;AACvB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,eAAe;AACzB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,0TAA0T;AACjU,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,MAAM,GAAG;AACd,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,6pBAA6pB;AACpqB,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,WAAW,GAAG;AACnB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,yVAAyV;AAChW,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,UAAU,GAAG;AAClB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,mVAAmV;AAC1V,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,KAAK,GAAG;AACb,QAAA,oBAAoB,CAAC,UAAU;AAC/B,QAAA,oBAAoB,CAAC,YAAY;AACjC,QAAA,oBAAoB,CAAC,WAAW;AAChC,QAAA,oBAAoB,CAAC,OAAO;AAC5B,QAAA,oBAAoB,CAAC,YAAY;AACjC,QAAA,oBAAoB,CAAC,UAAU;AAC/B,QAAA,oBAAoB,CAAC,iBAAiB;AACtC,QAAA,oBAAoB,CAAC,WAAW;AAChC,QAAA,oBAAoB,CAAC,QAAQ;AAC7B,QAAA,oBAAoB,CAAC,OAAO;AAC5B,QAAA,oBAAoB,CAAC,OAAO;AAC5B,QAAA,oBAAoB,CAAC,UAAU;AAC/B,QAAA,oBAAoB,CAAC,UAAU;AAC/B,QAAA,oBAAoB,CAAC,QAAQ;AAC7B,QAAA,oBAAoB,CAAC,cAAc;AACnC,QAAA,oBAAoB,CAAC,MAAM;AAC3B,QAAA,oBAAoB,CAAC,cAAc;AACnC,QAAA,oBAAoB,CAAC,aAAa;AAClC,QAAA,oBAAoB,CAAC,QAAQ;AAC7B,QAAA,oBAAoB,CAAC,MAAM;AAC3B,QAAA,oBAAoB,CAAC,eAAe;AACpC,QAAA,oBAAoB,CAAC,MAAM;AAC3B,QAAA,oBAAoB,CAAC,WAAW;AAChC,QAAA,oBAAoB,CAAC,UAAU;KAChC,CAAC;;;AC1VJ;;AAEG;MACU,kBAAkB,CAAA;AAE7B;;AAEG;IACH,OAAO,UAAU,GAAG;AAClB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,SAAS;AACnB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,wSAAwS;AAC/S,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,YAAY,GAAG;AACpB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,YAAY;AACtB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,4ZAA4Z;AACna,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,WAAW,GAAG;AACnB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,wUAAwU;AAC/U,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,OAAO,GAAG;AACf,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,wVAAwV;AAC/V,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,YAAY,GAAG;AACpB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,YAAY;AACtB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,oaAAoa;AAC3a,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,iBAAiB,GAAG;AACzB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,iBAAiB;AAC3B,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,qbAAqb;AAC5b,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,WAAW,GAAG;AACnB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,uWAAuW;AAC9W,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,QAAQ,GAAG;AAChB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,uYAAuY;AAC9Y,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,OAAO,GAAG;AACf,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,2LAA2L;AAClM,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,OAAO,GAAG;AACf,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,mZAAmZ;AAC1Z,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,UAAU,GAAG;AAClB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,SAAS;AACnB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,+lBAA+lB;AACtmB,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,UAAU,GAAG;AAClB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,inBAAinB;AACxnB,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,QAAQ,GAAG;AAChB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,qcAAqc;AAC5c,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,cAAc,GAAG;AACtB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,cAAc;AACxB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,imBAAimB;AACxmB,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,MAAM,GAAG;AACd,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,qaAAqa;AAC5a,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,cAAc,GAAG;AACtB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,cAAc;AACxB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,0eAA0e;AACjf,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,aAAa,GAAG;AACrB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,aAAa;AACvB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,4mBAA4mB;AACnnB,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,QAAQ,GAAG;AAChB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,2pBAA2pB;AAClqB,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,MAAM,GAAG;AACd,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,smBAAsmB;AAC7mB,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,eAAe,GAAG;AACvB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,eAAe;AACzB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,wTAAwT;AAC/T,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,MAAM,GAAG;AACd,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,qxBAAqxB;AAC5xB,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,WAAW,GAAG;AACnB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,6QAA6Q;AACpR,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,UAAU,GAAG;AAClB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,4RAA4R;AACnS,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,KAAK,GAAG;AACb,QAAA,kBAAkB,CAAC,UAAU;AAC7B,QAAA,kBAAkB,CAAC,YAAY;AAC/B,QAAA,kBAAkB,CAAC,WAAW;AAC9B,QAAA,kBAAkB,CAAC,OAAO;AAC1B,QAAA,kBAAkB,CAAC,YAAY;AAC/B,QAAA,kBAAkB,CAAC,iBAAiB;AACpC,QAAA,kBAAkB,CAAC,WAAW;AAC9B,QAAA,kBAAkB,CAAC,QAAQ;AAC3B,QAAA,kBAAkB,CAAC,OAAO;AAC1B,QAAA,kBAAkB,CAAC,OAAO;AAC1B,QAAA,kBAAkB,CAAC,UAAU;AAC7B,QAAA,kBAAkB,CAAC,UAAU;AAC7B,QAAA,kBAAkB,CAAC,QAAQ;AAC3B,QAAA,kBAAkB,CAAC,cAAc;AACjC,QAAA,kBAAkB,CAAC,MAAM;AACzB,QAAA,kBAAkB,CAAC,cAAc;AACjC,QAAA,kBAAkB,CAAC,aAAa;AAChC,QAAA,kBAAkB,CAAC,QAAQ;AAC3B,QAAA,kBAAkB,CAAC,MAAM;AACzB,QAAA,kBAAkB,CAAC,eAAe;AAClC,QAAA,kBAAkB,CAAC,MAAM;AACzB,QAAA,kBAAkB,CAAC,WAAW;AAC9B,QAAA,kBAAkB,CAAC,UAAU;KAC9B,CAAC;;;AC3UJ;;AAEG;MACU,kBAAkB,CAAA;AAE7B;;AAEG;IACH,OAAO,UAAU,GAAG;AAClB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,SAAS;AACnB,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;AACF,YAAA,IAAI,EAAE,0MAA0M;AACjN,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,YAAY,GAAG;AACpB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,YAAY;AACtB,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;AACF,YAAA,IAAI,EAAE,itBAAitB;AACxtB,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,UAAU,GAAG;AAClB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,SAAS;AACnB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,2QAA2Q;AAClR,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,WAAW,GAAG;AACnB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;AACF,YAAA,IAAI,EAAE,oWAAoW;AAC3W,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,QAAQ,GAAG;AAChB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,4FAA4F;AACnG,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,OAAO,GAAG;AACf,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;AACF,YAAA,IAAI,EAAE,8+DAA8+D;AACr/D,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,YAAY,GAAG;AACpB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,YAAY;AACtB,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;AACF,YAAA,IAAI,EAAE,skEAAskE;AAC7kE,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,UAAU,GAAG;AAClB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,SAAS;AACnB,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;AACF,YAAA,IAAI,EAAE,4NAA4N;AACnO,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,WAAW,GAAG;AACnB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,+LAA+L;AACtM,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,iBAAiB,GAAG;AACzB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,iBAAiB;AAC3B,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;AACF,YAAA,IAAI,EAAE,8QAA8Q;AACrR,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,WAAW,GAAG;AACnB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;AACF,YAAA,IAAI,EAAE,ojBAAojB;AAC3jB,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,QAAQ,GAAG;AAChB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;AACF,YAAA,IAAI,EAAE,oVAAoV;AAC3V,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,aAAa,GAAG;AACrB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,aAAa;AACvB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,0TAA0T;AACjU,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,kBAAkB,GAAG;AAC1B,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,kBAAkB;AAC5B,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;AACF,YAAA,IAAI,EAAE,wwBAAwwB;AAC/wB,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,OAAO,GAAG;AACf,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;YACF,IAAI;YACJ,2tBAA2tB;AAC5tB,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,WAAW,GAAG;AACnB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;YACF,IAAI;YACJ,8oDAA8oD;AAC/oD,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,iBAAiB,GAAG;AACzB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,kBAAkB;AAC5B,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;YACF,IAAI;YACJ,iqDAAiqD;AAClqD,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,OAAO,GAAG;AACf,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,oaAAoa;AAC3a,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,aAAa,GAAG;AACrB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,aAAa;AACvB,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;AACF,YAAA,IAAI,EAAE,6lCAA6lC;AACpmC,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,SAAS,GAAG;AACjB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,SAAS;AACnB,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;AACF,YAAA,IAAI,EAAE,k7BAAk7B;AACz7B,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,UAAU,GAAG;AAClB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,SAAS;AACnB,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;AACF,YAAA,IAAI,EAAE,kkBAAkkB;AACzkB,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,OAAO,GAAG;AACf,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,4CAA4C;AACnD,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,UAAU,GAAG;AAClB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,icAAic;AACxc,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,QAAQ,GAAG;AAChB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,wVAAwV;AAC/V,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,cAAc,GAAG;AACtB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,cAAc;AACxB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,2YAA2Y;AAClZ,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,MAAM,GAAG;AACd,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,4VAA4V;AACnW,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,cAAc,GAAG;AACtB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,cAAc;AACxB,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;AACF,YAAA,IAAI,EAAE,4wBAA4wB;AACnxB,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,gBAAgB,GAAG;AACxB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,gBAAgB;AAC1B,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;AACF,YAAA,IAAI,EAAE,wbAAwb;AAC/b,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,aAAa,GAAG;AACrB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,aAAa;AACvB,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;AACF,YAAA,IAAI,EAAE,kbAAkb;AACzb,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,cAAc,GAAG;AACtB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,cAAc;AACxB,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;AACF,YAAA,IAAI,EAAE,y1BAAy1B;AACh2B,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,QAAQ,GAAG;AAChB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;AACF,YAAA,IAAI,EAAE,+qCAA+qC;AACtrC,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,kBAAkB,GAAG;AAC1B,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,kBAAkB;AAC5B,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;AACF,YAAA,IAAI,EAAE,oXAAoX;AAC3X,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,mBAAmB,GAAG;AAC3B,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,mBAAmB;AAC7B,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;AACF,YAAA,IAAI,EAAE,o1DAAo1D;AAC31D,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,eAAe,GAAG;AACvB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,eAAe;AACzB,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;AACF,YAAA,IAAI,EAAE,y4BAAy4B;AACh5B,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,MAAM,GAAG;AACd,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,4WAA4W;AACnX,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,eAAe,GAAG;AACvB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,eAAe;AACzB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,wMAAwM;AAC/M,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,QAAQ,GAAG;AAChB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,gJAAgJ;AACvJ,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,gBAAgB,GAAG;AACxB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,gBAAgB;AAC1B,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;AACF,YAAA,IAAI,EAAE,u+BAAu+B;AAC9+B,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,YAAY,GAAG;AACpB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,YAAY;AACtB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,iXAAiX;AACxX,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,eAAe,GAAG;AACvB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,eAAe;AACzB,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;AACF,YAAA,IAAI,EAAE,2wBAA2wB;AAClxB,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,cAAc,GAAG;AACtB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,cAAc;AACxB,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;AACF,YAAA,IAAI,EAAE,42BAA42B;AACn3B,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,MAAM,GAAG;AACd,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;YACN,EAAE;AACF,YAAA,IAAI,EAAE,keAAke;AACze,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,WAAW,GAAG;AACnB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;AACF,YAAA,IAAI,EAAE,iRAAiR;AACxR,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,UAAU,GAAG;AAClB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;YACR,EAAE;AACF,YAAA,IAAI,EAAE,iQAAiQ;AACxQ,SAAA;KACF,CAAC;AAEF;;AAEG;IACH,OAAO,KAAK,GAAG;AACb,QAAA,kBAAkB,CAAC,UAAU;AAC7B,QAAA,kBAAkB,CAAC,YAAY;AAC/B,QAAA,kBAAkB,CAAC,WAAW;AAC9B,QAAA,kBAAkB,CAAC,OAAO;AAC1B,QAAA,kBAAkB,CAAC,YAAY;AAC/B,QAAA,kBAAkB,CAAC,UAAU;AAC7B,QAAA,kBAAkB,CAAC,iBAAiB;AACpC,QAAA,kBAAkB,CAAC,WAAW;AAC9B,QAAA,kBAAkB,CAAC,QAAQ;AAC3B,QAAA,kBAAkB,CAAC,kBAAkB;AACrC,QAAA,kBAAkB,CAAC,OAAO;AAC1B,QAAA,kBAAkB,CAAC,WAAW;AAC9B,QAAA,kBAAkB,CAAC,iBAAiB;AACpC,QAAA,kBAAkB,CAAC,OAAO;AAC1B,QAAA,kBAAkB,CAAC,aAAa;AAChC,QAAA,kBAAkB,CAAC,SAAS;AAC5B,QAAA,kBAAkB,CAAC,UAAU;AAC7B,QAAA,kBAAkB,CAAC,UAAU;AAC7B,QAAA,kBAAkB,CAAC,QAAQ;AAC3B,QAAA,kBAAkB,CAAC,cAAc;AACjC,QAAA,kBAAkB,CAAC,MAAM;AACzB,QAAA,kBAAkB,CAAC,cAAc;AACjC,QAAA,kBAAkB,CAAC,gBAAgB;AACnC,QAAA,kBAAkB,CAAC,aAAa;AAChC,QAAA,kBAAkB,CAAC,cAAc;AACjC,QAAA,kBAAkB,CAAC,QAAQ;AAC3B,QAAA,kBAAkB,CAAC,MAAM;AACzB,QAAA,kBAAkB,CAAC,kBAAkB;AACrC,QAAA,kBAAkB,CAAC,mBAAmB;AACtC,QAAA,kBAAkB,CAAC,eAAe;AAClC,QAAA,kBAAkB,CAAC,eAAe;AAClC,QAAA,kBAAkB,CAAC,QAAQ;AAC3B,QAAA,kBAAkB,CAAC,gBAAgB;AACnC,QAAA,kBAAkB,CAAC,YAAY;AAC/B,QAAA,kBAAkB,CAAC,eAAe;AAClC,QAAA,kBAAkB,CAAC,cAAc;AACjC,QAAA,kBAAkB,CAAC,MAAM;AACzB,QAAA,kBAAkB,CAAC,WAAW;AAC9B,QAAA,kBAAkB,CAAC,UAAU;KAC9B,CAAC;;;AC/mBJ;;AAEG;MACU,sBAAsB,CAAA;AAEjC;;AAEG;AACH,IAAA,OAAgB,MAAM,GAAG,KAAK,CAAC;AAE/B;;AAEG;IACH,OAAgB,KAAK,GAAG;QACtB,UAAU;QACV,oBAAoB;QACpB,aAAa;QACb,QAAQ;QACR,aAAa;QACb,mBAAmB;QACnB,WAAW;QACX,YAAY;QACZ,WAAW;QACX,WAAW;QACX,eAAe;QACf,WAAW;QACX,YAAY;QACZ,cAAc;QACd,kBAAkB;QAClB,YAAY;QACZ,cAAc;QACd,kBAAkB;QAClB,UAAU;QACV,UAAU;QACV,cAAc;QACd,eAAe;QACf,eAAe;QACf,cAAc;QACd,YAAY;QACZ,iBAAiB;QACjB,YAAY;QACZ,WAAW;QACX,QAAQ;QACR,aAAa;QACb,eAAe;QACf,YAAY;QACZ,mBAAmB;QACnB,cAAc;QACd,cAAc;QACd,YAAY;QACZ,SAAS;QACT,cAAc;QACd,eAAe;QACf,YAAY;QACZ,cAAc;QACd,cAAc;QACd,gBAAgB;QAChB,cAAc;QACd,QAAQ;QACR,WAAW;QACX,qBAAqB;QACrB,gBAAgB;QAChB,eAAe;QACf,wBAAwB;QACxB,kBAAkB;QAClB,YAAY;QACZ,iBAAiB;QACjB,mBAAmB;QACnB,gBAAgB;QAChB,WAAW;QACX,kBAAkB;QAClB,cAAc;QACd,cAAc;QACd,YAAY;QACZ,eAAe;QACf,WAAW;QACX,WAAW;QACX,eAAe;QACf,eAAe;QACf,eAAe;QACf,eAAe;QACf,iBAAiB;QACjB,YAAY;QACZ,aAAa;QACb,eAAe;QACf,mBAAmB;QACnB,WAAW;QACX,kBAAkB;QAClB,WAAW;QACX,qBAAqB;QACrB,wBAAwB;QACxB,wBAAwB;QACxB,2BAA2B;QAC3B,2BAA2B;QAC3B,wBAAwB;QACxB,wBAAwB;QACxB,4BAA4B;QAC5B,2BAA2B;QAC3B,wBAAwB;QACxB,8BAA8B;QAC9B,mCAAmC;QACnC,2BAA2B;QAC3B,0BAA0B;QAC1B,kBAAkB;QAClB,SAAS;QACT,aAAa;QACb,eAAe;QACf,YAAY;QACZ,mBAAmB;QACnB,gBAAgB;QAChB,aAAa;QACb,WAAW;QACX,cAAc;QACd,cAAc;QACd,YAAY;QACZ,QAAQ;QACR,eAAe;QACf,QAAQ;QACR,aAAa;QACb,SAAS;QACT,kBAAkB;QAClB,YAAY;QACZ,cAAc;QACd,WAAW;QACX,WAAW;QACX,kBAAkB;QAClB,aAAa;QACb,oBAAoB;QACpB,YAAY;QACZ,WAAW;QACX,WAAW;QACX,eAAe;QACf,SAAS;QACT,SAAS;QACT,gBAAgB;QAChB,cAAc;QACd,SAAS;QACT,UAAU;QACV,WAAW;QACX,WAAW;QACX,WAAW;QACX,aAAa;QACb,SAAS;QACT,aAAa;QACb,iBAAiB;QACjB,aAAa;QACb,eAAe;QACf,uBAAuB;QACvB,oBAAoB;QACpB,yBAAyB;QACzB,UAAU;QACV,WAAW;QACX,UAAU;QACV,YAAY;QACZ,oBAAoB;QACpB,gBAAgB;QAChB,oBAAoB;QACpB,eAAe;QACf,WAAW;QACX,cAAc;QACd,QAAQ;QACR,iBAAiB;QACjB,qBAAqB;QACrB,sBAAsB;QACtB,cAAc;QACd,iBAAiB;QACjB,iBAAiB;QACjB,qBAAqB;QACrB,aAAa;QACb,eAAe;QACf,mBAAmB;QACnB,YAAY;QACZ,YAAY;QACZ,sBAAsB;QACtB,oBAAoB;QACpB,eAAe;QACf,OAAO;QACP,cAAc;QACd,QAAQ;QACR,YAAY;QACZ,eAAe;QACf,WAAW;QACX,eAAe;QACf,kBAAkB;QAClB,cAAc;QACd,WAAW;QACX,WAAW;QACX,UAAU;QACV,YAAY;QACZ,WAAW;QACX,cAAc;QACd,gBAAgB;QAChB,WAAW;QACX,iBAAiB;QACjB,eAAe;QACf,gBAAgB;QAChB,gBAAgB;QAChB,kBAAkB;QAClB,uBAAuB;QACvB,kBAAkB;QAClB,aAAa;QACb,SAAS;QACT,aAAa;QACb,UAAU;QACV,YAAY;QACZ,SAAS;QACT,gBAAgB;QAChB,uBAAuB;QACvB,eAAe;QACf,SAAS;QACT,kBAAkB;QAClB,SAAS;QACT,UAAU;QACV,aAAa;QACb,WAAW;QACX,UAAU;QACV,UAAU;QACV,YAAY;QACZ,UAAU;QACV,SAAS;QACT,aAAa;QACb,cAAc;QACd,qBAAqB;QACrB,aAAa;QACb,aAAa;QACb,sBAAsB;QACtB,aAAa;QACb,YAAY;QACZ,YAAY;QACZ,WAAW;QACX,gBAAgB;QAChB,SAAS;QACT,eAAe;QACf,YAAY;QACZ,SAAS;QACT,UAAU;QACV,WAAW;QACX,OAAO;QACP,cAAc;QACd,aAAa;QACb,WAAW;QACX,YAAY;QACZ,WAAW;QACX,gBAAgB;QAChB,kBAAkB;QAClB,WAAW;QACX,YAAY;QACZ,WAAW;QACX,kBAAkB;QAClB,YAAY;QACZ,SAAS;QACT,SAAS;QACT,aAAa;QACb,gBAAgB;QAChB,WAAW;QACX,UAAU;QACV,SAAS;QACT,YAAY;QACZ,cAAc;QACd,gBAAgB;QAChB,aAAa;QACb,aAAa;QACb,WAAW;QACX,QAAQ;QACR,YAAY;QACZ,WAAW;QACX,aAAa;QACb,UAAU;QACV,WAAW;QACX,aAAa;QACb,aAAa;QACb,cAAc;QACd,cAAc;QACd,QAAQ;QACR,aAAa;QACb,UAAU;QACV,WAAW;QACX,SAAS;QACT,WAAW;QACX,YAAY;QACZ,SAAS;QACT,WAAW;QACX,SAAS;QACT,YAAY;QACZ,QAAQ;QACR,QAAQ;QACR,gBAAgB;QAChB,mBAAmB;QACnB,kBAAkB;QAClB,yBAAyB;QACzB,iBAAiB;QACjB,aAAa;QACb,WAAW;QACX,UAAU;QACV,kBAAkB;QAClB,UAAU;QACV,QAAQ;QACR,UAAU;QACV,cAAc;QACd,WAAW;QACX,YAAY;QACZ,WAAW;QACX,iBAAiB;QACjB,YAAY;QACZ,cAAc;QACd,gBAAgB;QAChB,sBAAsB;QACtB,qBAAqB;QACrB,QAAQ;QACR,eAAe;QACf,mBAAmB;QACnB,mBAAmB;QACnB,kBAAkB;QAClB,sBAAsB;QACtB,cAAc;QACd,gBAAgB;QAChB,qBAAqB;QACrB,gBAAgB;QAChB,iBAAiB;QACjB,WAAW;QACX,WAAW;QACX,OAAO;QACP,cAAc;QACd,UAAU;QACV,cAAc;QACd,iBAAiB;QACjB,YAAY;QACZ,UAAU;QACV,gBAAgB;QAChB,WAAW;QACX,UAAU;QACV,cAAc;QACd,WAAW;QACX,iBAAiB;QACjB,kBAAkB;QAClB,WAAW;QACX,WAAW;QACX,WAAW;QACX,iBAAiB;QACjB,cAAc;QACd,QAAQ;QACR,eAAe;QACf,YAAY;QACZ,SAAS;QACT,WAAW;QACX,eAAe;QACf,SAAS;QACT,WAAW;QACX,WAAW;QACX,gBAAgB;QAChB,aAAa;QACb,WAAW;QACX,iBAAiB;QACjB,iBAAiB;QACjB,YAAY;QACZ,aAAa;QACb,gBAAgB;QAChB,YAAY;QACZ,SAAS;QACT,WAAW;QACX,aAAa;QACb,UAAU;QACV,UAAU;QACV,eAAe;QACf,eAAe;QACf,aAAa;QACb,mBAAmB;QACnB,oBAAoB;QACpB,eAAe;QACf,eAAe;QACf,YAAY;QACZ,iBAAiB;QACjB,YAAY;QACZ,gBAAgB;QAChB,mBAAmB;QACnB,mBAAmB;QACnB,cAAc;QACd,eAAe;QACf,UAAU;QACV,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,WAAW;QACX,WAAW;QACX,aAAa;QACb,iBAAiB;QACjB,gBAAgB;QAChB,uBAAuB;QACvB,gBAAgB;QAChB,WAAW;QACX,SAAS;QACT,UAAU;QACV,YAAY;QACZ,cAAc;QACd,aAAa;QACb,mBAAmB;QACnB,kBAAkB;QAClB,iBAAiB;QACjB,YAAY;QACZ,cAAc;QACd,gBAAgB;QAChB,WAAW;QACX,qBAAqB;QACrB,WAAW;QACX,gBAAgB;QAChB,WAAW;QACX,kBAAkB;QAClB,WAAW;QACX,YAAY;QACZ,mBAAmB;QACnB,UAAU;QACV,SAAS;QACT,WAAW;QACX,UAAU;QACV,YAAY;QACZ,cAAc;QACd,gBAAgB;QAChB,UAAU;QACV,aAAa;QACb,YAAY;QACZ,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,aAAa;QACb,WAAW;QACX,YAAY;QACZ,WAAW;QACX,kBAAkB;QAClB,UAAU;QACV,UAAU;QACV,iBAAiB;QACjB,YAAY;QACZ,SAAS;QACT,OAAO;QACP,QAAQ;QACR,UAAU;QACV,wBAAwB;QACxB,SAAS;QACT,WAAW;QACX,UAAU;QACV,WAAW;QACX,aAAa;QACb,oBAAoB;QACpB,UAAU;QACV,gBAAgB;QAChB,YAAY;QACZ,QAAQ;QACR,yBAAyB;QACzB,SAAS;QACT,wBAAwB;QACxB,cAAc;QACd,qBAAqB;QACrB,eAAe;QACf,eAAe;QACf,YAAY;QACZ,YAAY;QACZ,SAAS;QACT,SAAS;QACT,gBAAgB;QAChB,iBAAiB;QACjB,UAAU;QACV,WAAW;QACX,WAAW;QACX,yBAAyB;QACzB,SAAS;QACT,SAAS;QACT,UAAU;QACV,YAAY;QACZ,mBAAmB;QACnB,UAAU;KACX,CAAC;;;ACtdJ;;AAEG;MACU,uBAAuB,CAAA;AAElC;;AAEG;AACH,IAAA,OAAgB,MAAM,GAAG,KAAK,CAAC;AAE/B;;AAEG;IACH,OAAgB,KAAK,GAAG;QACtB,iBAAiB;QACjB,iBAAiB;QACjB,UAAU;QACV,0BAA0B;QAC1B,0BAA0B;QAC1B,2BAA2B;QAC3B,wBAAwB;QACxB,SAAS;QACT,eAAe;QACf,aAAa;QACb,aAAa;QACb,aAAa;QACb,iBAAiB;QACjB,mBAAmB;QACnB,mBAAmB;QACnB,kBAAkB;QAClB,mBAAmB;QACnB,sBAAsB;QACtB,sBAAsB;QACtB,uBAAuB;QACvB,oBAAoB;QACpB,cAAc;QACd,iBAAiB;QACjB,iBAAiB;QACjB,WAAW;QACX,cAAc;QACd,UAAU;QACV,UAAU;QACV,sBAAsB;QACtB,YAAY;QACZ,gBAAgB;QAChB,iBAAiB;QACjB,aAAa;QACb,YAAY;QACZ,SAAS;QACT,cAAc;QACd,gBAAgB;QAChB,UAAU;QACV,eAAe;QACf,SAAS;QACT,aAAa;QACb,kBAAkB;QAClB,QAAQ;QACR,cAAc;QACd,SAAS;QACT,aAAa;QACb,iBAAiB;QACjB,eAAe;QACf,cAAc;QACd,eAAe;QACf,eAAe;QACf,aAAa;QACb,oBAAoB;QACpB,eAAe;QACf,cAAc;QACd,SAAS;QACT,YAAY;QACZ,WAAW;QACX,gBAAgB;QAChB,UAAU;QACV,eAAe;QACf,WAAW;QACX,QAAQ;QACR,YAAY;QACZ,SAAS;QACT,aAAa;QACb,cAAc;QACd,oBAAoB;QACpB,gBAAgB;QAChB,gBAAgB;QAChB,sBAAsB;QACtB,eAAe;QACf,eAAe;QACf,gBAAgB;QAChB,uBAAuB;QACvB,qBAAqB;QACrB,cAAc;QACd,gBAAgB;QAChB,eAAe;QACf,eAAe;QACf,oBAAoB;QACpB,oBAAoB;QACpB,qBAAqB;QACrB,kBAAkB;QAClB,iBAAiB;QACjB,cAAc;QACd,kBAAkB;QAClB,eAAe;QACf,cAAc;QACd,QAAQ;QACR,UAAU;QACV,aAAa;QACb,cAAc;QACd,aAAa;QACb,YAAY;QACZ,UAAU;QACV,WAAW;QACX,aAAa;QACb,SAAS;QACT,cAAc;QACd,oBAAoB;QACpB,UAAU;QACV,eAAe;QACf,iBAAiB;QACjB,eAAe;QACf,UAAU;QACV,cAAc;QACd,cAAc;QACd,aAAa;QACb,QAAQ;QACR,QAAQ;QACR,cAAc;QACd,qBAAqB;QACrB,iBAAiB;QACjB,mBAAmB;QACnB,SAAS;QACT,cAAc;QACd,iBAAiB;QACjB,mBAAmB;QACnB,gBAAgB;QAChB,iBAAiB;QACjB,gBAAgB;QAChB,gBAAgB;QAChB,oBAAoB;QACpB,eAAe;QACf,YAAY;QACZ,aAAa;QACb,SAAS;QACT,iBAAiB;QACjB,UAAU;QACV,eAAe;QACf,eAAe;QACf,cAAc;QACd,WAAW;QACX,SAAS;QACT,cAAc;QACd,gBAAgB;QAChB,gBAAgB;QAChB,QAAQ;QACR,aAAa;QACb,gBAAgB;QAChB,cAAc;QACd,iBAAiB;QACjB,UAAU;QACV,cAAc;QACd,SAAS;QACT,gBAAgB;QAChB,iBAAiB;QACjB,oBAAoB;QACpB,oBAAoB;QACpB,mBAAmB;KACpB,CAAC;;;ACrKJ;;AAEG;MACU,qBAAqB,CAAA;AAEhC;;AAEG;AACH,IAAA,OAAgB,MAAM,GAAG,KAAK,CAAC;AAE/B;;AAEG;IACH,OAAgB,KAAK,GAAG;QACtB,OAAO;QACP,iBAAiB;QACjB,iBAAiB;QACjB,WAAW;QACX,kBAAkB;QAClB,iBAAiB;QACjB,kBAAkB;QAClB,eAAe;QACf,gBAAgB;QAChB,cAAc;QACd,cAAc;QACd,wCAAwC;QACxC,WAAW;QACX,sBAAsB;QACtB,sBAAsB;QACtB,uBAAuB;QACvB,oBAAoB;QACpB,eAAe;QACf,eAAe;QACf,gBAAgB;QAChB,aAAa;QACb,UAAU;QACV,SAAS;QACT,cAAc;QACd,YAAY;QACZ,YAAY;QACZ,0BAA0B;QAC1B,0BAA0B;QAC1B,2BAA2B;QAC3B,wBAAwB;QACxB,sBAAsB;QACtB,sBAAsB;QACtB,uBAAuB;QACvB,oBAAoB;QACpB,eAAe;QACf,eAAe;QACf,gBAAgB;QAChB,aAAa;QACb,eAAe;QACf,iBAAiB;QACjB,iBAAiB;QACjB,gCAAgC;QAChC,aAAa;QACb,OAAO;QACP,UAAU;QACV,SAAS;QACT,sBAAsB;QACtB,UAAU;QACV,SAAS;QACT,kBAAkB;QAClB,cAAc;QACd,aAAa;QACb,UAAU;QACV,aAAa;QACb,cAAc;QACd,UAAU;QACV,kBAAkB;QAClB,uBAAuB;QACvB,wBAAwB;QACxB,QAAQ;QACR,aAAa;QACb,YAAY;QACZ,SAAS;QACT,kBAAkB;QAClB,oBAAoB;QACpB,SAAS;QACT,kBAAkB;QAClB,iBAAiB;QACjB,iBAAiB;QACjB,oBAAoB;QACpB,2BAA2B;QAC3B,QAAQ;QACR,SAAS;QACT,SAAS;QACT,eAAe;QACf,iBAAiB;QACjB,UAAU;QACV,YAAY;QACZ,WAAW;QACX,eAAe;QACf,cAAc;QACd,kBAAkB;QAClB,YAAY;QACZ,kBAAkB;QAClB,UAAU;QACV,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,cAAc;QACd,iBAAiB;QACjB,cAAc;QACd,gBAAgB;QAChB,aAAa;QACb,eAAe;QACf,gBAAgB;QAChB,iBAAiB;QACjB,iBAAiB;QACjB,QAAQ;QACR,aAAa;QACb,eAAe;QACf,UAAU;QACV,YAAY;QACZ,UAAU;QACV,gBAAgB;QAChB,cAAc;QACd,sBAAsB;QACtB,oBAAoB;QACpB,UAAU;QACV,UAAU;QACV,QAAQ;QACR,aAAa;QACb,aAAa;QACb,aAAa;QACb,SAAS;QACT,QAAQ;QACR,YAAY;QACZ,kBAAkB;QAClB,eAAe;QACf,aAAa;QACb,iBAAiB;QACjB,mBAAmB;QACnB,iBAAiB;QACjB,mBAAmB;QACnB,kBAAkB;QAClB,mBAAmB;QACnB,kBAAkB;QAClB,WAAW;QACX,iBAAiB;QACjB,eAAe;QACf,eAAe;QACf,aAAa;QACb,aAAa;QACb,QAAQ;QACR,YAAY;QACZ,gBAAgB;QAChB,cAAc;QACd,aAAa;QACb,YAAY;QACZ,eAAe;QACf,eAAe;QACf,gBAAgB;QAChB,sBAAsB;QACtB,sBAAsB;QACtB,uBAAuB;QACvB,oBAAoB;QACpB,aAAa;QACb,WAAW;QACX,oBAAoB;QACpB,cAAc;QACd,kBAAkB;QAClB,QAAQ;QACR,gBAAgB;QAChB,UAAU;QACV,eAAe;QACf,uBAAuB;QACvB,qBAAqB;QACrB,eAAe;QACf,cAAc;QACd,eAAe;QACf,cAAc;QACd,UAAU;QACV,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,WAAW;QACX,UAAU;QACV,iBAAiB;QACjB,gBAAgB;QAChB,eAAe;QACf,iBAAiB;QACjB,eAAe;QACf,gBAAgB;QAChB,eAAe;QACf,wBAAwB;QACxB,wBAAwB;QACxB,yBAAyB;QACzB,sBAAsB;QACtB,iBAAiB;QACjB,iBAAiB;QACjB,kBAAkB;QAClB,eAAe;QACf,UAAU;QACV,WAAW;QACX,WAAW;QACX,iBAAiB;QACjB,SAAS;QACT,mBAAmB;QACnB,cAAc;QACd,oBAAoB;QACpB,mBAAmB;QACnB,UAAU;QACV,UAAU;QACV,sBAAsB;QACtB,UAAU;QACV,uBAAuB;QACvB,mBAAmB;QACnB,eAAe;QACf,oBAAoB;QACpB,eAAe;QACf,wBAAwB;QACxB,cAAc;QACd,mBAAmB;QACnB,qBAAqB;QACrB,aAAa;QACb,SAAS;QACT,gBAAgB;QAChB,WAAW;QACX,QAAQ;QACR,SAAS;QACT,UAAU;QACV,YAAY;QACZ,YAAY;QACZ,gBAAgB;QAChB,mBAAmB;QACnB,iBAAiB;QACjB,oBAAoB;QACpB,kBAAkB;QAClB,aAAa;QACb,oBAAoB;QACpB,iBAAiB;QACjB,YAAY;QACZ,aAAa;QACb,iBAAiB;QACjB,wBAAwB;QACxB,mBAAmB;QACnB,WAAW;QACX,gBAAgB;QAChB,SAAS;QACT,cAAc;QACd,UAAU;QACV,gBAAgB;QAChB,SAAS;QACT,aAAa;QACb,UAAU;QACV,eAAe;QACf,SAAS;QACT,UAAU;QACV,WAAW;QACX,SAAS;QACT,UAAU;QACV,QAAQ;QACR,aAAa;QACb,SAAS;QACT,aAAa;QACb,YAAY;QACZ,iBAAiB;QACjB,cAAc;QACd,SAAS;QACT,aAAa;QACb,YAAY;QACZ,cAAc;QACd,cAAc;QACd,aAAa;QACb,aAAa;QACb,eAAe;QACf,aAAa;QACb,uBAAuB;QACvB,eAAe;QACf,YAAY;QACZ,WAAW;QACX,UAAU;QACV,QAAQ;QACR,QAAQ;QACR,gBAAgB;QAChB,UAAU;QACV,kBAAkB;QAClB,WAAW;QACX,gBAAgB;QAChB,cAAc;QACd,eAAe;QACf,SAAS;QACT,aAAa;QACb,qBAAqB;QACrB,WAAW;QACX,iBAAiB;QACjB,SAAS;QACT,kBAAkB;QAClB,mBAAmB;QACnB,aAAa;QACb,aAAa;QACb,kBAAkB;QAClB,YAAY;QACZ,SAAS;QACT,QAAQ;QACR,UAAU;QACV,eAAe;QACf,eAAe;QACf,aAAa;QACb,kBAAkB;QAClB,uBAAuB;QACvB,oBAAoB;QACpB,WAAW;QACX,WAAW;QACX,aAAa;QACb,cAAc;QACd,iBAAiB;QACjB,gBAAgB;QAChB,uBAAuB;QACvB,yBAAyB;QACzB,WAAW;QACX,eAAe;QACf,sBAAsB;QACtB,sBAAsB;QACtB,6BAA6B;QAC7B,QAAQ;QACR,gBAAgB;QAChB,cAAc;QACd,QAAQ;QACR,kBAAkB;QAClB,iBAAiB;QACjB,WAAW;QACX,QAAQ;QACR,YAAY;QACZ,gBAAgB;QAChB,WAAW;QACX,gBAAgB;QAChB,SAAS;QACT,aAAa;QACb,iBAAiB;QACjB,eAAe;QACf,cAAc;QACd,kBAAkB;QAClB,aAAa;QACb,kBAAkB;QAClB,eAAe;QACf,gBAAgB;QAChB,eAAe;QACf,gBAAgB;QAChB,iBAAiB;QACjB,wBAAwB;QACxB,iBAAiB;QACjB,qBAAqB;QACrB,aAAa;QACb,oBAAoB;QACpB,sBAAsB;QACtB,mBAAmB;QACnB,gBAAgB;QAChB,eAAe;QACf,cAAc;QACd,SAAS;QACT,cAAc;QACd,SAAS;QACT,WAAW;QACX,gBAAgB;QAChB,SAAS;QACT,aAAa;QACb,sBAAsB;QACtB,cAAc;QACd,SAAS;QACT,gBAAgB;QAChB,SAAS;QACT,mBAAmB;QACnB,aAAa;QACb,UAAU;QACV,YAAY;QACZ,WAAW;QACX,iBAAiB;QACjB,gBAAgB;QAChB,gBAAgB;QAChB,SAAS;QACT,kBAAkB;QAClB,YAAY;QACZ,SAAS;QACT,UAAU;QACV,eAAe;QACf,kBAAkB;QAClB,WAAW;QACX,YAAY;QACZ,aAAa;QACb,UAAU;QACV,QAAQ;QACR,eAAe;QACf,UAAU;QACV,SAAS;QACT,UAAU;QACV,iBAAiB;QACjB,kBAAkB;QAClB,sBAAsB;QACtB,kBAAkB;QAClB,YAAY;QACZ,UAAU;QACV,iBAAiB;QACjB,mBAAmB;QACnB,eAAe;QACf,iBAAiB;QACjB,cAAc;QACd,YAAY;QACZ,mBAAmB;QACnB,iBAAiB;QACjB,uBAAuB;QACvB,YAAY;QACZ,SAAS;QACT,aAAa;QACb,cAAc;QACd,oBAAoB;QACpB,gBAAgB;QAChB,gBAAgB;QAChB,sBAAsB;QACtB,eAAe;QACf,eAAe;QACf,gBAAgB;QAChB,uBAAuB;QACvB,qBAAqB;QACrB,cAAc;QACd,oBAAoB;QACpB,eAAe;QACf,wBAAwB;QACxB,kBAAkB;QAClB,WAAW;QACX,aAAa;QACb,cAAc;QACd,WAAW;QACX,UAAU;QACV,iBAAiB;QACjB,uBAAuB;QACvB,yBAAyB;QACzB,qBAAqB;QACrB,uBAAuB;QACvB,gBAAgB;QAChB,uBAAuB;QACvB,eAAe;QACf,eAAe;QACf,oBAAoB;QACpB,oBAAoB;QACpB,qBAAqB;QACrB,kBAAkB;QAClB,iBAAiB;QACjB,cAAc;QACd,kBAAkB;QAClB,kBAAkB;QAClB,eAAe;QACf,UAAU;QACV,kBAAkB;QAClB,eAAe;QACf,cAAc;QACd,wBAAwB;QACxB,oBAAoB;QACpB,aAAa;QACb,aAAa;QACb,YAAY;QACZ,eAAe;QACf,oBAAoB;QACpB,eAAe;QACf,QAAQ;QACR,oBAAoB;QACpB,0BAA0B;QAC1B,mBAAmB;QACnB,oBAAoB;QACpB,YAAY;QACZ,eAAe;QACf,mBAAmB;QACnB,YAAY;QACZ,UAAU;QACV,iBAAiB;QACjB,cAAc;QACd,eAAe;QACf,gBAAgB;QAChB,WAAW;QACX,UAAU;QACV,YAAY;QACZ,gBAAgB;QAChB,gBAAgB;QAChB,SAAS;QACT,UAAU;QACV,eAAe;QACf,aAAa;QACb,iBAAiB;QACjB,oBAAoB;QACpB,kBAAkB;QAClB,YAAY;QACZ,WAAW;QACX,UAAU;QACV,cAAc;QACd,kBAAkB;QAClB,mBAAmB;QACnB,oBAAoB;QACpB,iBAAiB;QACjB,eAAe;QACf,YAAY;QACZ,aAAa;QACb,cAAc;QACd,YAAY;QACZ,UAAU;QACV,aAAa;QACb,YAAY;QACZ,gBAAgB;QAChB,UAAU;QACV,UAAU;QACV,WAAW;QACX,UAAU;QACV,WAAW;QACX,aAAa;QACb,aAAa;QACb,SAAS;QACT,gBAAgB;QAChB,WAAW;QACX,SAAS;QACT,UAAU;QACV,mBAAmB;QACnB,UAAU;QACV,QAAQ;QACR,aAAa;QACb,WAAW;QACX,SAAS;QACT,cAAc;QACd,oBAAoB;QACpB,cAAc;QACd,aAAa;QACb,aAAa;QACb,WAAW;QACX,gBAAgB;QAChB,iBAAiB;QACjB,mBAAmB;QACnB,UAAU;QACV,eAAe;QACf,iBAAiB;QACjB,eAAe;QACf,gBAAgB;QAChB,SAAS;QACT,UAAU;QACV,cAAc;QACd,oBAAoB;QACpB,mBAAmB;QACnB,iBAAiB;QACjB,cAAc;QACd,cAAc;QACd,SAAS;QACT,cAAc;QACd,SAAS;QACT,aAAa;QACb,YAAY;QACZ,YAAY;QACZ,mBAAmB;QACnB,SAAS;QACT,cAAc;QACd,wBAAwB;QACxB,wBAAwB;QACxB,yBAAyB;QACzB,sBAAsB;QACtB,eAAe;QACf,iBAAiB;QACjB,UAAU;QACV,gBAAgB;QAChB,UAAU;QACV,WAAW;QACX,cAAc;QACd,SAAS;QACT,QAAQ;QACR,eAAe;QACf,mBAAmB;QACnB,eAAe;QACf,mBAAmB;QACnB,YAAY;QACZ,cAAc;QACd,WAAW;QACX,SAAS;QACT,gBAAgB;QAChB,gBAAgB;QAChB,kBAAkB;QAClB,kBAAkB;QAClB,SAAS;QACT,UAAU;QACV,WAAW;QACX,QAAQ;QACR,cAAc;QACd,qBAAqB;QACrB,WAAW;QACX,YAAY;QACZ,YAAY;QACZ,WAAW;QACX,cAAc;QACd,eAAe;QACf,mBAAmB;QACnB,yBAAyB;QACzB,qBAAqB;QACrB,eAAe;QACf,UAAU;QACV,iBAAiB;QACjB,iBAAiB;QACjB,WAAW;QACX,WAAW;QACX,eAAe;QACf,eAAe;QACf,mBAAmB;QACnB,oBAAoB;QACpB,wBAAwB;QACxB,gBAAgB;QAChB,oBAAoB;QACpB,aAAa;QACb,SAAS;QACT,kBAAkB;QAClB,WAAW;QACX,eAAe;QACf,aAAa;QACb,UAAU;QACV,kBAAkB;QAClB,YAAY;QACZ,UAAU;QACV,kBAAkB;QAClB,WAAW;QACX,cAAc;QACd,cAAc;QACd,kBAAkB;QAClB,iBAAiB;QACjB,mBAAmB;QACnB,YAAY;QACZ,OAAO;QACP,UAAU;QACV,YAAY;QACZ,UAAU;QACV,gBAAgB;QAChB,iBAAiB;QACjB,YAAY;QACZ,WAAW;QACX,gBAAgB;QAChB,cAAc;QACd,kBAAkB;QAClB,cAAc;QACd,YAAY;QACZ,aAAa;QACb,mBAAmB;QACnB,UAAU;QACV,UAAU;QACV,iBAAiB;QACjB,QAAQ;QACR,UAAU;QACV,QAAQ;QACR,YAAY;QACZ,cAAc;QACd,YAAY;QACZ,eAAe;QACf,eAAe;QACf,iBAAiB;QACjB,kBAAkB;QAClB,iBAAiB;QACjB,eAAe;QACf,YAAY;QACZ,eAAe;QACf,iBAAiB;QACjB,UAAU;QACV,cAAc;QACd,gBAAgB;QAChB,iBAAiB;QACjB,qBAAqB;QACrB,iBAAiB;QACjB,gBAAgB;QAChB,eAAe;QACf,UAAU;QACV,gBAAgB;QAChB,qBAAqB;QACrB,UAAU;QACV,kBAAkB;QAClB,oBAAoB;QACpB,gBAAgB;QAChB,SAAS;QACT,gBAAgB;QAChB,SAAS;QACT,SAAS;QACT,gBAAgB;QAChB,gBAAgB;QAChB,YAAY;QACZ,SAAS;QACT,WAAW;QACX,QAAQ;QACR,cAAc;QACd,SAAS;QACT,aAAa;QACb,eAAe;QACf,cAAc;QACd,SAAS;QACT,kBAAkB;QAClB,iBAAiB;QACjB,wBAAwB;QACxB,4BAA4B;QAC5B,UAAU;QACV,eAAe;QACf,oBAAoB;QACpB,iBAAiB;QACjB,cAAc;QACd,iBAAiB;QACjB,WAAW;QACX,aAAa;QACb,oBAAoB;QACpB,cAAc;QACd,eAAe;QACf,gBAAgB;QAChB,UAAU;QACV,cAAc;QACd,kBAAkB;QAClB,YAAY;QACZ,WAAW;QACX,YAAY;QACZ,iBAAiB;QACjB,YAAY;QACZ,SAAS;QACT,aAAa;QACb,eAAe;QACf,kBAAkB;QAClB,UAAU;QACV,cAAc;QACd,eAAe;QACf,aAAa;QACb,YAAY;QACZ,WAAW;QACX,SAAS;QACT,SAAS;QACT,UAAU;QACV,WAAW;QACX,UAAU;QACV,QAAQ;QACR,eAAe;QACf,eAAe;QACf,UAAU;QACV,mBAAmB;QACnB,qBAAqB;QACrB,mBAAmB;QACnB,YAAY;QACZ,eAAe;QACf,YAAY;QACZ,aAAa;QACb,cAAc;QACd,mBAAmB;QACnB,SAAS;QACT,WAAW;QACX,gBAAgB;QAChB,WAAW;QACX,YAAY;QACZ,WAAW;QACX,kBAAkB;QAClB,oBAAoB;QACpB,iBAAiB;QACjB,gBAAgB;QAChB,aAAa;QACb,WAAW;QACX,WAAW;QACX,UAAU;QACV,cAAc;QACd,qBAAqB;QACrB,iBAAiB;QACjB,gBAAgB;QAChB,eAAe;QACf,iBAAiB;QACjB,SAAS;QACT,kBAAkB;QAClB,gBAAgB;QAChB,iBAAiB;QACjB,oBAAoB;QACpB,kBAAkB;QAClB,WAAW;QACX,gBAAgB;QAChB,SAAS;QACT,gBAAgB;QAChB,kBAAkB;QAClB,iBAAiB;QACjB,WAAW;QACX,cAAc;QACd,aAAa;QACb,SAAS;QACT,YAAY;QACZ,YAAY;QACZ,WAAW;QACX,kBAAkB;QAClB,UAAU;QACV,qBAAqB;QACrB,UAAU;QACV,WAAW;QACX,cAAc;QACd,UAAU;QACV,eAAe;QACf,eAAe;QACf,SAAS;QACT,YAAY;QACZ,gBAAgB;QAChB,QAAQ;QACR,iBAAiB;QACjB,cAAc;QACd,YAAY;QACZ,aAAa;QACb,SAAS;QACT,UAAU;QACV,gBAAgB;QAChB,SAAS;QACT,oBAAoB;QACpB,wBAAwB;QACxB,kBAAkB;QAClB,sBAAsB;QACtB,qBAAqB;QACrB,yBAAyB;QACzB,mBAAmB;QACnB,uBAAuB;QACvB,cAAc;QACd,sBAAsB;QACtB,0BAA0B;QAC1B,oBAAoB;QACpB,wBAAwB;QACxB,YAAY;QACZ,QAAQ;QACR,kBAAkB;QAClB,gBAAgB;QAChB,WAAW;QACX,YAAY;QACZ,YAAY;QACZ,cAAc;QACd,WAAW;QACX,gBAAgB;QAChB,oBAAoB;QACpB,UAAU;QACV,SAAS;QACT,sBAAsB;QACtB,cAAc;QACd,kBAAkB;QAClB,kBAAkB;QAClB,iBAAiB;QACjB,kBAAkB;QAClB,iBAAiB;QACjB,gBAAgB;QAChB,gBAAgB;QAChB,SAAS;QACT,gBAAgB;QAChB,cAAc;QACd,iBAAiB;QACjB,UAAU;QACV,cAAc;QACd,oBAAoB;QACpB,gBAAgB;QAChB,WAAW;QACX,gBAAgB;QAChB,kBAAkB;QAClB,gBAAgB;QAChB,cAAc;QACd,WAAW;QACX,aAAa;QACb,qBAAqB;QACrB,QAAQ;QACR,gBAAgB;QAChB,aAAa;QACb,eAAe;QACf,YAAY;QACZ,kBAAkB;QAClB,cAAc;QACd,SAAS;QACT,aAAa;QACb,YAAY;QACZ,UAAU;QACV,iBAAiB;QACjB,WAAW;QACX,eAAe;QACf,YAAY;QACZ,mBAAmB;QACnB,QAAQ;QACR,SAAS;QACT,SAAS;QACT,UAAU;QACV,SAAS;QACT,UAAU;QACV,eAAe;QACf,qBAAqB;QACrB,oBAAoB;QACpB,UAAU;QACV,aAAa;QACb,gBAAgB;QAChB,eAAe;QACf,OAAO;QACP,aAAa;QACb,YAAY;QACZ,kBAAkB;QAClB,gBAAgB;QAChB,sBAAsB;QACtB,qBAAqB;QACrB,qBAAqB;QACrB,wBAAwB;QACxB,+BAA+B;QAC/B,gBAAgB;QAChB,cAAc;QACd,cAAc;QACd,eAAe;QACf,UAAU;QACV,iBAAiB;QACjB,SAAS;QACT,eAAe;QACf,UAAU;QACV,eAAe;QACf,cAAc;QACd,WAAW;QACX,iBAAiB;QACjB,uBAAuB;QACvB,YAAY;QACZ,UAAU;QACV,UAAU;QACV,UAAU;QACV,eAAe;QACf,YAAY;QACZ,cAAc;QACd,kBAAkB;QAClB,YAAY;QACZ,UAAU;QACV,SAAS;QACT,gBAAgB;QAChB,oBAAoB;QACpB,UAAU;QACV,cAAc;QACd,kBAAkB;QAClB,sBAAsB;QACtB,SAAS;QACT,WAAW;QACX,UAAU;QACV,kBAAkB;QAClB,kBAAkB;QAClB,iBAAiB;QACjB,iBAAiB;QACjB,WAAW;QACX,QAAQ;QACR,OAAO;QACP,aAAa;QACb,mBAAmB;QACnB,cAAc;QACd,SAAS;QACT,aAAa;QACb,qBAAqB;QACrB,eAAe;QACf,WAAW;QACX,WAAW;QACX,eAAe;QACf,WAAW;QACX,SAAS;QACT,aAAa;QACb,mBAAmB;QACnB,mBAAmB;QACnB,eAAe;QACf,gBAAgB;QAChB,eAAe;QACf,aAAa;QACb,cAAc;QACd,iBAAiB;QACjB,kBAAkB;QAClB,iBAAiB;QACjB,cAAc;QACd,YAAY;QACZ,eAAe;QACf,eAAe;QACf,eAAe;QACf,cAAc;QACd,gBAAgB;QAChB,gBAAgB;QAChB,eAAe;QACf,aAAa;QACb,aAAa;QACb,eAAe;QACf,UAAU;QACV,cAAc;QACd,gBAAgB;QAChB,kBAAkB;QAClB,aAAa;QACb,kBAAkB;QAClB,UAAU;QACV,iBAAiB;QACjB,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,UAAU;QACV,UAAU;QACV,gBAAgB;QAChB,WAAW;QACX,UAAU;QACV,gBAAgB;QAChB,YAAY;QACZ,cAAc;QACd,oBAAoB;QACpB,gBAAgB;QAChB,gBAAgB;QAChB,eAAe;QACf,cAAc;QACd,aAAa;QACb,iBAAiB;QACjB,YAAY;QACZ,WAAW;QACX,cAAc;QACd,UAAU;QACV,gBAAgB;QAChB,WAAW;QACX,mBAAmB;QACnB,eAAe;QACf,SAAS;QACT,SAAS;QACT,iBAAiB;QACjB,oBAAoB;QACpB,oBAAoB;QACpB,mBAAmB;QACnB,gBAAgB;QAChB,eAAe;QACf,mBAAmB;QACnB,aAAa;QACb,WAAW;QACX,UAAU;QACV,aAAa;QACb,aAAa;KACd,CAAC;;;ACr+BJ;;AAEG;MAEU,YAAY,CAAA;AAEvB;;;;AAIG;IACK,OAAO,mBAAmB,CAAC,MAAmC,EAAA;QACpE,MAAM,KAAK,GAA4C,EAAE,CAAC;QAE1D,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,OAAO,EAAE;AAC1C,YAAA,KAAK,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,MAAM,EAAE,qBAAqB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;SAChH;QAED,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,SAAS,EAAE;AAC5C,YAAA,KAAK,CAAC,IAAI,CAAC,GAAG,uBAAuB,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,MAAM,EAAE,uBAAuB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;SACpH;QAED,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,QAAQ,EAAE;AAC3C,YAAA,KAAK,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,MAAM,EAAE,sBAAsB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;SAClH;AAED,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;;;AAIG;IACK,OAAO,gBAAgB,CAAC,MAAgC,EAAA;QAC9D,MAAM,KAAK,GAA4C,EAAE,CAAC;QAE1D,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,OAAO,EAAE;AAC1C,YAAA,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAA,GAAA,EAAM,IAAI,CAAC,QAAQ,CAAE,CAAA,EAAE,CAAC,CAAC,CAAC,CAAC;SAC7G;QAED,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,SAAS,EAAE;AAC5C,YAAA,KAAK,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAA,GAAA,EAAM,IAAI,CAAC,QAAQ,CAAE,CAAA,EAAE,CAAC,CAAC,CAAC,CAAC;SAC/G;QAED,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,OAAO,EAAE;AAC1C,YAAA,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAA,GAAA,EAAM,IAAI,CAAC,QAAQ,CAAE,CAAA,EAAE,CAAC,CAAC,CAAC,CAAC;SAC7G;AAED,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;AAEG;AACH,IAAA,WAAA,GAAA,GAAiB;AAEjB;;;;;;AAMG;AACH,IAAA,QAAQ,CACN,QAA4C,EAC5C,MAA8D,EAC9D,UAAU,GAAG,EAAE,EAAA;QAEf,IAAI,KAAK,GAA4C,EAAE,CAAC;QAExD,IAAI,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,UAAU,EAAE;YACjD,MAAM,aAAa,GAAG,YAAY,CAAC,gBAAgB,CAAC,MAAkC,CAAC,CAAC;AAExF,YAAA,IAAI,aAAa,CAAC,MAAM,EAAE;AACxB,gBAAA,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;aAC9B;SACF;QAED,IAAI,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,aAAa,EAAE;YACpD,MAAM,gBAAgB,GAAG,YAAY,CAAC,mBAAmB,CAAC,MAAqC,CAAC,CAAC;AAEjG,YAAA,IAAI,gBAAgB,CAAC,MAAM,EAAE;AAC3B,gBAAA,KAAK,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;aACjC;SACF;QAED,MAAM,iBAAiB,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC1D,IAAI,iBAAiB,EAAE;AACrB,YAAA,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC;SACrE;AAED,QAAA,OAAO,KAAK,CAAC;KACd;uGAzFU,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAAZ,YAAY,EAAA,CAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;;;AClBX;;AAEG;MAMU,sBAAsB,CAAA;AAEjC;;AAEG;IAEH,OAAO,GAAY,KAAK,CAAC;AAEzB;;AAEG;IAEH,WAAW,GAA4B,cAAc,CAAC;AAEtD;;AAEG;IAEH,KAAK,GAAY,KAAK,CAAC;AAEvB;;AAEG;IAEH,SAAS,GAAG,gCAAgC,CAAC;AAE7C;;AAEG;IAEH,KAAK,GAAY,KAAK,CAAC;AAEvB;;AAEG;IAEH,SAAS,GAAG,yBAAyB,CAAC;AAEtC;;AAEG;IAEH,cAAc,GAAY,KAAK,CAAC;AAEhC;;AAEG;IAEH,kBAAkB,GAAG,wBAAwB,CAAC;AAG9C,IAAA,IAAI,GAAsB;AACxB,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,SAAS,EAAE,uBAAuB;AAClC,QAAA,YAAY,EAAE,kBAAkB;KACZ,CAAC;AAEvB;;AAEG;AACH,IAAA,WAAA,GAAA,GAAiB;uGA7DN,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,qSCXnC,giJAgFA,EAAA,MAAA,EAAA,CAAA,6uDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDrEa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,yBAAyB,EAAA,QAAA,EAAA,giJAAA,EAAA,MAAA,EAAA,CAAA,6uDAAA,CAAA,EAAA,CAAA;wDAUnC,OAAO,EAAA,CAAA;sBADN,KAAK;gBAON,WAAW,EAAA,CAAA;sBADV,KAAK;gBAON,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAON,SAAS,EAAA,CAAA;sBADR,KAAK;gBAON,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAON,SAAS,EAAA,CAAA;sBADR,KAAK;gBAON,cAAc,EAAA,CAAA;sBADb,KAAK;gBAON,kBAAkB,EAAA,CAAA;sBADjB,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;;;AE5CR;;AAEG;MAaU,mBAAmB,CAAA;AAiPV,IAAA,OAAA,CAAA;AAA+B,IAAA,iBAAA,CAAA;AA/OnD;;;AAGG;AACK,IAAA,OAAgB,SAAS,GAAG,EAAE,CAAC;AAEvC;;;AAGG;IACH,IACI,KAAK,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEpB,IAAI,KAAK,EAAG;AACV,YAAA,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3C,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;SACtC;KACF;AAED;;;AAGG;IACH,IACI,QAAQ,CAAC,QAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;KAC3B;AAED;;AAEG;IAEH,gBAAgB,GAAW,IAAW,CAAC;AAEvC;;AAEG;IAEH,YAAY,GAAG,MAAM,CAAC;AAGtB,IAAA,IAAI,GAAmB;AACrB,QAAA,YAAY,EAAE,gBAAgB;AAC9B,QAAA,WAAW,EAAE,eAAe;AAC5B,QAAA,gBAAgB,EAAE,oBAAoB;AACtC,QAAA,GAAG,EAAE,KAAK;AACV,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,YAAY,EAAE,eAAe;AAC7B,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,YAAY,EAAE,eAAe;AAC7B,QAAA,YAAY,EAAE,eAAe;AAC7B,QAAA,mBAAmB,EAAE,4BAA4B;AACjD,QAAA,oBAAoB,EAAE,2CAA2C;AACjE,QAAA,SAAS,EAAE,WAAW;AACtB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,KAAK,EAAE,OAAO;KACG,CAAC;AAEpB;;AAEG;AAEH,IAAA,MAAM,GAAG,IAAI,YAAY,EAAQ,CAAC;AAElC;;AAEG;AAEH,IAAA,QAAQ,GAAsB,IAAI,YAAY,EAAE,CAAC;AAEjD;;AAEG;AAEH,IAAA,MAAM,GAAG,IAAI,YAAY,EAAO,CAAC;AAEjC;;AAEG;IAEH,mBAAmB,GAA+B,IAAW,CAAC;AAE9D;;AAEG;AACM,IAAA,cAAc,GAAG,IAAI,eAAe,CAAmC,IAAW,CAAC,CAAC;AAE7F;;AAEG;AACM,IAAA,OAAO,GAAG,IAAI,eAAe,CAGnC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAElC;;AAEG;AACM,IAAA,WAAW,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;AAE/C;;AAEG;AACM,IAAA,YAAY,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;AAEhD;;AAEG;AACM,IAAA,WAAW,GAAG,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC;AAE9C;;AAEG;AACM,IAAA,sBAAsB,GAAG,IAAI,OAAO,EAAQ,CAAC;AAEtD;;;AAGG;IACc,MAAM,GAAwD,aAAa,CAAC;AAC3F,QAAA,IAAI,CAAC,OAAO;AACZ,QAAA,IAAI,CAAC,YAAY;AAClB,KAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ,CACjD,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,KAAK,EACZ,UAAU,CACX,CAAC,CACH,CAAC;AAEF;;AAEG;AACM,IAAA,WAAW,GAAuB,IAAI,CAAC,MAAM,CAAC,IAAI,CACzD,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM;AACvB,UAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC;AACzD,UAAE,CAAC,CACJ,CACF,CAAC;AAEF;;AAEG;IACM,UAAU,GAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,CAC9D,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAC9C,CAAC;AAEF;;AAEG;AACM,IAAA,oBAAoB,GAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,CACxE,GAAG,CAAC,UAAU,IAAI,UAAU,GAAG,CAAC,CAAC,CAClC,CAAC;AAEF;;AAEG;AACM,IAAA,gBAAgB,GAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,CACpE,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,EAChC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,UAAU,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,CACjE,CAAC;AAEF;;AAEG;IACM,eAAe,GAAwD,aAAa,CAAC;AAC5F,QAAA,IAAI,CAAC,WAAW;AAChB,QAAA,IAAI,CAAC,MAAM;AACZ,KAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,KAAI;QAC1B,IAAI,cAAc,GAA4C,IAAW,CAAC;QAE1E,IAAI,UAAU,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE;YACnC,cAAc,GAAG,KAAK,CAAC,KAAK,CAC1B,mBAAmB,CAAC,SAAS,GAAG,UAAU,EAC1C,mBAAmB,CAAC,SAAS,IAAI,UAAU,GAAG,CAAC,CAAC,CACjD,CAAC;SACH;AAED,QAAA,OAAO,cAAc,CAAC;AACxB,KAAC,CAAC,EACF,GAAG,CAAC,MAAK;AACP,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,CAAC;SACtD;KACF,CAAC,CACH,CAAC;AAEF;;AAEG;AACH,IAAA,UAAU,CAAM;AAEhB;;AAEG;IACH,wBAAwB,GAAG,KAAK,CAAC;AAEjC;;;AAGG;AACc,IAAA,YAAY,CAAe;AAE5C;;;AAGG;IACK,MAAM,GAAW,IAAW,CAAC;AAErC;;;AAGG;IACK,SAAS,GAAY,KAAK,CAAC;AAEnC;;AAEG;AACH,IAAA,QAAQ,GAAyB,MAAK,GAAG,CAAC;AAE1C;;AAEG;AACH,IAAA,SAAS,GAAc,MAAK,GAAG,CAAC;AAEhC;;;;AAIG;IACH,WAAoB,CAAA,OAAqB,EAAU,iBAAoC,EAAA;QAAnE,IAAO,CAAA,OAAA,GAAP,OAAO,CAAc;QAAU,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACrF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAClD,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAChC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,KAAI;YAC/B,IAAI,SAAS,EAAE;AACb,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpD,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAC1B;AACH,SAAC,CAAC,CAAC;KACJ;AAED;;AAEG;AACH,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AAED;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;KACjC;AAED;;;AAGG;AACH,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACvC;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAED;;;AAGG;AACH,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC3B,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACvC;AAED;;AAEG;IACH,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,KAAK,EAAE,CAAC;AACb,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAEnB,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,gBAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;aACtC;SACF;KACF;AAED;;AAEG;IACH,WAAW,GAAA;QACT,IAAI,aAAa,GAAG,IAAI,CAAC;AACzB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC9C,YAAA,aAAa,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;SAClC;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAoB,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;KACpB;AAED;;;AAGG;AACH,IAAA,kBAAkB,CAChB,MAC0C,EAAA;AAE1C,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC1B;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,IAAsC,EAAA;AACrD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;QACtC,UAAU,CAAC,MAAM,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAAC;KACxD;AAED;;AAEG;IACH,uBAAuB,GAAA;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;AAC5C,QAAA,IAAI,CAAC,WAAW,CAAC,CAAA,EAAG,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,CAAA,CAAE,CAAC,CAAC;QAChD,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;AAED;;AAEG;IACH,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;KACxD;AAED;;AAEG;IACH,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;KACxD;AAED;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC1B;AAED;;;;AAIG;AACK,IAAA,WAAW,CAAC,KAAa,EAAA;AAC/B,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC;AAEtC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAEnB,YAAA,IAAI,iBAAiB,KAAK,IAAI,CAAC,MAAM,EAAE;AACrC,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC5B;AAED,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;SAC5C;KACF;AAED;;;AAGG;IACK,KAAK,GAAA;AACX,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC1B;uGA5ZU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EARnB,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9BH,qskBAgTA,EAAA,MAAA,EAAA,CAAA,46CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,gBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,eAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,EAAA,OAAA,EAAA,cAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,sBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAX,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDhRa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAZ/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAGrB,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AAClD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,qskBAAA,EAAA,MAAA,EAAA,CAAA,46CAAA,CAAA,EAAA,CAAA;8GAeG,KAAK,EAAA,CAAA;sBADR,KAAK;gBAgBF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBASN,gBAAgB,EAAA,CAAA;sBADf,KAAK;gBAON,YAAY,EAAA,CAAA;sBADX,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;gBA4BN,MAAM,EAAA,CAAA;sBADL,MAAM;gBAOP,QAAQ,EAAA,CAAA;sBADP,MAAM;gBAOP,MAAM,EAAA,CAAA;sBADL,MAAM;gBAOP,mBAAmB,EAAA,CAAA;sBADlB,SAAS;uBAAC,qBAAqB,CAAA;;;ME1GrB,2BAA2B,CAAA;uGAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,EARrB,YAAA,EAAA,CAAA,sBAAsB,CAKjC,EAAA,OAAA,EAAA,CAAA,YAAY,aAHZ,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAMjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,YAHhC,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAGP,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBATvC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,YAAY,EAAE,CAAC,sBAAsB,CAAC;AACtC,oBAAA,OAAO,EAAE;wBACL,sBAAsB;AACzB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,YAAY;AACf,qBAAA;AACJ,iBAAA,CAAA;;;ACFD;;AAEG;AACH,MAAM,WAAW,GAAG,MAAM,CAAC,aAAoB,CAAQ,CAAC;MAmB3C,mBAAmB,CAAA;AAE9B,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO;SACR;AAED,QAAA,KAAK,MAAM,IAAI,IAAI,kBAAkB,CAAC,KAAK,EAAE;AAC3C,YAAA,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SAC/B;AAED,QAAA,KAAK,MAAM,IAAI,IAAI,oBAAoB,CAAC,KAAK,EAAE;AAC7C,YAAA,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SAC/B;AAED,QAAA,KAAK,MAAM,IAAI,IAAI,kBAAkB,CAAC,KAAK,EAAE;AAC3C,YAAA,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SAC/B;KACF;uGAlBU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAAnB,mBAAmB,EAAA,YAAA,EAAA,CAf5B,mBAAmB,CAAA,EAAA,OAAA,EAAA,CAGnB,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,qBAAqB;YACrB,oBAAoB;AACpB,YAAA,2BAA2B,aAG3B,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAIV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EAFnB,SAAA,EAAA,CAAC,YAAY,CAAC,YAVvB,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,qBAAqB;YACrB,oBAAoB;YACpB,2BAA2B,CAAA,EAAA,CAAA,CAAA;;2FAOlB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAjB/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,mBAAmB;AACpB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,qBAAqB;wBACrB,oBAAoB;wBACpB,2BAA2B;AAC5B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,mBAAmB;AACpB,qBAAA;oBACD,SAAS,EAAE,CAAC,YAAY,CAAC;AAC1B,iBAAA,CAAA;;;MCjCY,SAAS,CAAA;AACZ,IAAA,QAAQ,CAAM;AACd,IAAA,cAAc,CAAM;AACX,IAAA,YAAY,CAAM;AAClB,IAAA,OAAO,CAAS;AAChB,IAAA,SAAS,CAAM;IAEhC,WAAY,CAAA,OAAe,EAAE,SAAc,EAAA;AACzC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAEO,aAAa,GAAA;QACnB,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAEzB,QAAA,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,MAAK;YAC/B,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE;gBAC3C,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,CAAC,OAAO,EAAE,CAAC;aAChB;SACF,EAAE,IAAI,CAAC,CAAC;KACV;IAEO,iBAAiB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SACnC;AACD,QAAA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,MAAK;YACpC,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC;SAC/E,EAAE,GAAG,CAAC,CAAC;KACT;IAEO,OAAO,GAAA;AACb,QAAA,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QACxC,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACxD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACrD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACtD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACrD,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACtD,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1D,QAAQ,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC/D,QAAQ,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3D,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1D,QAAQ,CAAC,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;KAC/D;IAED,OAAO,GAAA;AACL,QAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7B,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3D,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACxD,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACzD,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACxD,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACzD,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC7D,QAAQ,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAClE,QAAQ,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9D,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC7D,QAAQ,CAAC,mBAAmB,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;KAClE;IAED,UAAU,GAAA;QACR,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAED,cAAc,GAAA;AACZ,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,cAAc,CAAW,EAAE,EAAE,CAAC,CAAC;AACjF,QAAA,OAAO,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;KACjC;AACF;;MC/DY,oBAAoB,CAAA;IAG/B,YAAY,GAAW,KAAK,CAAC;IAG7B,gBAAgB,GAAG,GAAG,CAAC;AAGvB,IAAA,IAAI,GAAoB;AACtB,QAAA,eAAe,EAAE,0BAA0B;AAC3C,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,YAAY,EAAE,yBAAyB;KACrB,CAAC;AAGrB,IAAA,QAAQ,GAAsB,IAAI,YAAY,EAAO,CAAC;AAEtD;;AAEG;IAEH,aAAa,GAAoB,IAAW,CAAC;AAE7C;;AAEG;IACH,KAAK,GAAG,CAAC,CAAC;AAEV;;AAEG;AACH,IAAA,UAAU,CAAM;IAEhB,SAAS,GAAc,IAAW,CAAC;IAElB,gBAAgB,GAAG,EAAE,CAAC;AAE/B,IAAA,cAAc,CAAM;IAEpB,UAAU,GAAG,KAAK,CAAC;AAE3B,IAAA,WAAA,GAAA;KACC;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,gBAAgB,GAAG,EAAE,EAAE,MAAO,EAAA,IAAI,CAAC,UAAU,EAAE,CAAA,EAAC,CAAC,CAAC;KACvF;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;IAEO,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC;AACnC,QAAA,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,MAAK;YACrC,IAAI,CAAC,KAAK,EAAE,CAAC;AACb,YAAA,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE;gBACxD,IAAI,CAAC,cAAc,EAAE,CAAC;aACvB;SACF,EAAE,IAAI,CAAC,CAAC;KACV;IAEO,cAAc,GAAA;AACpB,QAAA,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAE3B,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE;AACnC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACtB;KACF;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,YAAA,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;AAC5B,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SACxB;KACF;uGApFU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,8SCTjC,0uBAeA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,eAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,EAAA,OAAA,EAAA,cAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDNa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;+BACE,uBAAuB,EAAA,QAAA,EAAA,0uBAAA,EAAA,CAAA;wDAMjC,YAAY,EAAA,CAAA;sBADX,KAAK;gBAIN,gBAAgB,EAAA,CAAA;sBADf,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;gBASN,QAAQ,EAAA,CAAA;sBADP,MAAM;gBAOP,aAAa,EAAA,CAAA;sBADZ,SAAS;uBAAC,eAAe,CAAA;;;MEdf,yBAAyB,CAAA;uGAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAAzB,yBAAyB,EAAA,YAAA,EAAA,CAVlC,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAMpB,YAAY;AACZ,YAAA,oBAAoB,aAJpB,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAOX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAJlC,YAAY;YACZ,oBAAoB,CAAA,EAAA,CAAA,CAAA;;2FAGX,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAZrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,oBAAoB;AACrB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,oBAAoB;AACrB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,oBAAoB;AACrB,qBAAA;AACF,iBAAA,CAAA;;;ACdD;;AAEG;MAIU,iBAAiB,CAAA;AAE5B;;;;AAIG;AACH,IAAA,SAAS,CAAC,KAAsB,EAAA;QAC9B,IAAI,iBAAiB,GAAW,EAAE,CAAC;AACnC,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;YACtD,iBAAiB,GAAG,KAAK,CAAC;SAC3B;AAAM,aAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACpC,YAAA,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;SACnC;AAED,QAAA,IAAI,aAAqB,CAAC;AAC1B,QAAA,IAAI,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC;AAChC,YAAA,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC;AAChC,YAAA,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAClC;YACA,aAAa,GAAG,IAAI,CAAC;SACtB;AAAM,aAAA,IAAI,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC1C,aAAa,GAAG,IAAI,CAAC;SACtB;AAAM,aAAA,IAAI,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC1C,aAAa,GAAG,IAAI,CAAC;SACtB;AAAM,aAAA,IAAI,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC1C,aAAa,GAAG,IAAI,CAAC;SACtB;aAAM;YACL,aAAa,GAAG,IAAI,CAAC;SACtB;QAED,OAAO,iBAAiB,GAAG,aAAa,CAAC;KAC1C;uGAhCU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;qGAAjB,iBAAiB,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,eAAe;AACtB,iBAAA,CAAA;;;ACoDD;;AAEG;MAMU,iBAAiB,CAAA;AAuUR,IAAA,QAAA,CAAA;AArUpB;;;AAGG;AACK,IAAA,OAAgB,UAAU,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;AAEzF;;AAEG;IAEH,iBAAiB,GAA+B,IAAW,CAAC;AAE5D;;AAEG;IAEH,UAAU,GAAkC,IAAW,CAAC;AAExD;;AAEG;IAEH,UAAU,GAAkC,IAAW,CAAC;AAExD;;AAEG;IAEH,aAAa,GAA6C,IAAW,CAAC;AAEtE;;AAEG;IACH,IACI,KAAK,CAAC,KAAW,EAAA;QACnB,IAAI,aAAa,GAAa,IAAW,CAAA;AAEzC,QAAA,IAAI,CAAC,CAAC,KAAK,EAAE;AACX,YAAA,aAAa,GAAG;AACd,gBAAA,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE;AACnB,gBAAA,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE;AACrB,gBAAA,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE;AACvB,gBAAA,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE;AACzB,gBAAA,UAAU,EAAE,IAAI;aACjB,CAAC;SACH;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACjC;AAED;;AAEG;IACH,IACI,SAAS,CAAC,SAA2C,EAAA;QACvD,IAAI,SAAS,EAAE,OAAO,GAAG,SAAS,EAAE,OAAO,EAAE;YAC3C,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SAC9C;AAED,QAAA,MAAM,EAAC,IAAI,EAAC,GAAG,IAAI,CAAC,WAAW,CAAC;AAChC,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;AAChC,YAAA,KAAK,EAAE,SAAS,EAAE,OAAO,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACvD,YAAA,GAAG,EAAE,SAAS,EAAE,OAAO,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACvD,SAAA,CAAC,CAAC;KACJ;IAED,IACI,IAAI,CAAC,IAAkB,EAAA;QACzB,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,QAAQ,GAAG;AACd,gBAAA,IAAI,CAAC,MAAM;AACX,gBAAA,IAAI,CAAC,MAAM;AACX,gBAAA,IAAI,CAAC,OAAO;AACZ,gBAAA,IAAI,CAAC,SAAS;AACd,gBAAA,IAAI,CAAC,QAAQ;AACb,gBAAA,IAAI,CAAC,MAAM;AACX,gBAAA,IAAI,CAAC,QAAQ;aACd,CAAC;SACH;KACF;AAED,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IAGD,YAAY,GAAG,IAAI,CAAC;AAEZ,IAAA,KAAK,GAAiB;AAC5B,QAAA,WAAW,EAAE,eAAe;AAC5B,QAAA,YAAY,EAAE,gBAAgB;AAC9B,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,GAAG,EAAE,KAAK;AACV,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,SAAS,EAAE,WAAW;AACtB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,WAAW,EAAE,IAAI;AACjB,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,SAAS,EAAE,WAAW;AACtB,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,GAAG,EAAE,KAAK;AACV,QAAA,gBAAgB,EAAE,uCAAuC;AACzD,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,QAAQ,EAAE,qBAAqB;AAC/B,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,iBAAiB,EAAE,qCAAqC;KACzC,CAAC;AAElB;;AAEG;AAEH,IAAA,QAAQ,GAAG,IAAI,YAAY,EAAQ,CAAC;AAEpC;;;;AAIG;AAEH,IAAA,MAAM,GAAG,IAAI,YAAY,EAAQ,CAAC;AAElC;;AAEG;AACM,IAAA,WAAW,CAAW;AAE/B;;AAEG;AACH,IAAA,QAAQ,GAAG;QACT,IAAI,CAAC,IAAI,CAAC,MAAM;QAChB,IAAI,CAAC,IAAI,CAAC,MAAM;QAChB,IAAI,CAAC,IAAI,CAAC,OAAO;QACjB,IAAI,CAAC,IAAI,CAAC,SAAS;QACnB,IAAI,CAAC,IAAI,CAAC,QAAQ;QAClB,IAAI,CAAC,IAAI,CAAC,MAAM;QAChB,IAAI,CAAC,IAAI,CAAC,QAAQ;KACnB,CAAC;AAEF;;AAEG;AACM,IAAA,MAAM,GAAG,IAAI,eAAe,CAAW,IAAW,CAAC,CAAC;AAE7D;;AAEG;AACM,IAAA,uBAAuB,GAAG,IAAI,eAAe,CAAW,IAAW,CAAC,CAAC;AAE9E;;AAEG;AACM,IAAA,cAAc,GAAG,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC;AAEjD;;AAEG;AACM,IAAA,aAAa,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AAEnD;;AAEG;IACM,UAAU,GAAgC,aAAa,CAAC;AAC/D,QAAA,IAAI,CAAC,cAAc;AACnB,QAAA,IAAI,CAAC,aAAa;AAClB,QAAA,IAAI,CAAC,uBAAuB;AAC7B,KAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,YAAY,EAAE,sBAAsB,CAAC,KAAI;QAC5D,OAAO,iBAAiB,CAAC,aAAa,CACpC,aAAa,EACb,YAAY,EACZ,sBAAsB,CACvB,CAAC;KACH,CAAC,CACH,CAAC;AAEF;;AAEG;IACM,eAAe,GAA8B,IAAI,CAAC,uBAAuB,CAAC,IAAI,CACrF,GAAG,CAAC,iBAAiB,IAAG;AAEtB,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAI,iBAAiB,EAAE,KAAc,EAAE,WAAW,EAAE,EAAE;AACnF,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAE,iBAAiB,EAAE,KAAc,EAAE,WAAW,EAAE,CAAC,CAAC;SAC9E;AACD,QAAA,OAAO,iBAAiB,CAAC,iBAAiB,CACvC,iBAAiB,EAAE,KAAc,EAAE,WAAW,EAAE,IAAI,IAAI,EACxD,iBAAiB,EAAE,GAAY,EAAE,WAAW,EAAE,IAAI,IAAI,EACvD,IAAI,CAAC,WAAW,CAAC,IAAI,CACtB,CAAC;;KAGH,CAAC,CACH,CAAC;AAEF;;;AAGG;AACc,IAAA,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;AAEnD;;AAEG;IACH,YAAY,GAAoB,IAAI,CAAC;AAErC;;;;;;AAMG;AACK,IAAA,OAAO,aAAa,CAC1B,KAAa,EACb,IAAY,EACZ,iBAA2B,EAAA;AAE3B,QAAA,IAAI,CAAC,CAAC,iBAAiB,EAAE;YACvB,MAAM,oBAAoB,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACtD,YAAA,MAAM,cAAc,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;YAExD,MAAM,SAAS,GAAoB,EAAE,CAAC;AACtC,YAAA,IAAI,UAAU,GAAG,oBAAoB,CAAC,MAAM,EAAE,CAAC;AAC/C,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;gBAClD,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC7C,SAAS,CAAC,IAAI,CAAC;AACb,oBAAA,GAAG,EAAE,UAAU;AACf,oBAAA,IAAI,EAAE,CAAC;oBACP,KAAK;oBACL,IAAI;AACJ,oBAAA,UAAU,EAAE,gBAAgB,CAAC,WAAW,EAAE,iBAAiB,CAAC;AAC7D,iBAAA,CAAC,CAAC;AAEH,gBAAA,UAAU,GAAG,UAAU,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC;aACpD;AAED,YAAA,IAAI,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;gBACrC,MAAM,cAAc,GAAoB,EAAE,CAAC;AAC3C,gBAAA,KAAK,IAAI,CAAC,GAAG,oBAAoB,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;oBACtD,MAAM,cAAc,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC;oBACxD,cAAc,CAAC,IAAI,CAAC;AAClB,wBAAA,GAAG,EAAE,cAAc,CAAC,MAAM,EAAE;AAC5B,wBAAA,IAAI,EAAE,cAAc,CAAC,OAAO,EAAE;AAC9B,wBAAA,KAAK,EAAE,cAAc,CAAC,QAAQ,EAAE;AAChC,wBAAA,IAAI,EAAE,cAAc,CAAC,WAAW,EAAE;AAClC,wBAAA,UAAU,EAAE,KAAK;AAClB,qBAAA,CAAC,CAAC;iBACJ;AAED,gBAAA,SAAS,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,CAAC;aACtC;YAED,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB,YAAA,OAAO,SAAS,CAAC,MAAM,GAAG,EAAE,EAAE;gBAC5B,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,SAAS,EAAE,CAAC,CAAC;gBACvD,SAAS,CAAC,IAAI,CAAC;AACb,oBAAA,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE;AACvB,oBAAA,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE;AACzB,oBAAA,KAAK,EAAE,SAAS,CAAC,QAAQ,EAAE;AAC3B,oBAAA,IAAI,EAAE,SAAS,CAAC,WAAW,EAAE;AAC7B,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA,CAAC,CAAC;aACJ;AAED,YAAA,OAAO,SAAS,CAAC;SAClB;AAED,QAAA,OAAO,IAAW,CAAC;KACpB;AAED;;;;;AAKG;AACK,IAAA,OAAO,iBAAiB,CAAC,OAAe,EAAE,OAAe,EAAE,WAAmB,EAAA;QACpF,IAAI,KAAa,EAAE,GAAW,CAAC;AAC/B,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,EAAE;AACzB,YAAA,KAAK,GAAG,OAAO,GAAG,EAAE,CAAC;YACrB,GAAG,GAAG,OAAO,CAAC;SACf;AAAM,aAAA,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE;YAChC,KAAK,GAAG,OAAO,CAAC;AAChB,YAAA,GAAG,GAAG,OAAO,GAAG,EAAE,CAAC;SACpB;aAAM,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,EAAE;YACjC,KAAK,GAAG,OAAO,CAAC;YAChB,GAAG,GAAG,OAAO,CAAC;SACf;aAAM;AACL,YAAA,KAAK,GAAG,WAAW,GAAG,GAAG,CAAC;AAC1B,YAAA,GAAG,GAAG,WAAW,GAAG,EAAE,CAAC;SACxB;QAED,MAAM,KAAK,GAAkB,EAAE,CAAC;AAChC,QAAA,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE;AACjC,YAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACf;AAED,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;;AAGG;AACH,IAAA,WAAA,CAAoB,QAAmB,EAAA;QAAnB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;AACrC,QAAA,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG;AACjB,YAAA,GAAG,EAAE,WAAW,CAAC,MAAM,EAAE;AACzB,YAAA,IAAI,EAAE,WAAW,CAAC,OAAO,EAAE;AAC3B,YAAA,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE;AAC7B,YAAA,IAAI,EAAE,WAAW,CAAC,WAAW,EAAE;AAC/B,YAAA,UAAU,EAAE,IAAI;SACjB,CAAC;KACH;AAED;;AAEG;IACH,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS,CACpE,CAAC,CAAC,KAAK,EAAE,sBAAsB,CAAC,KAAI;YAClC,IAAI,iBAAiB,GAAG,sBAAsB,CAAC;YAE/C,IAAI,CAAC,iBAAiB,EAAE;AACtB,gBAAA,MAAM,EAAC,IAAI,EAAC,GAAG,IAAI,CAAC,WAAW,CAAC;AAChC,gBAAA,iBAAiB,GAAG;oBAClB,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;oBACjC,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;iBACjC,CAAC;AAEF,gBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,gBAAgB,CAC5C,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAC9E,iBAAiB,CAClB,CAAC;aACH;AAED,YAAA,IAAI,CAAC,CAAC,KAAK,EAAE;AACX,gBAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AAChE,gBAAA,IAAI,gBAAgB,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE;AAClD,oBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;oBAC1B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACtC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;iBACrC;qBAAM;AACL,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAW,CAAC,CAAC;AAC9B,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAW,CAAC;iBACjC;aACF;iBAAM;gBACL,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACjD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aAChD;SACF,CAAC,CACH,CAAC;KACH;AAED;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;KACjC;AAED;;;AAGG;AAEH,IAAA,OAAO,CAAC,KAAoB,EAAA;AAC1B,QAAA,MAAM,EAAC,GAAG,EAAC,GAAG,KAAK,CAAC;QAEpB,IAAI,iBAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC9C,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;SACxB;KACF;AAED;;;AAGG;AAEH,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,MAAM,EAAC,KAAK,EAAE,KAAK,EAAC,GAAG,KAAK,CAAC;;QAG7B,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;AAC1B,YAAA,MAAM,EAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;AAEhG,YAAA,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,KAAK,CAAC,CAAC;AACpD,YAAA,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,KAAK,IAAI,MAAM,CAAC,CAAC;;AAGpD,YAAA,MAAM,OAAO,GAAI,KAAK,CAAC,MAAsB,CAAC,OAAO,CAAC;AACtD,YAAA,MAAM,WAAW,GAAG,EAAE,OAAO,IAAI,OAAO,CAAC,IAAI,OAAO,KAAK,QAAQ,CAAC;YAElE,IAAI,WAAW,EAAE;AACf,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;aACpB;SACF;KACF;AAED;;;AAGG;AACH,IAAA,mBAAmB,CAAC,YAAsB,EAAA;AACxC,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;KACxF;AAED;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KACvC;AAED;;;;AAIG;AACK,IAAA,YAAY,CAAC,GAAW,EAAA;AAC9B,QAAA,MAAM,EAAE,aAAa,EAAE,GAAG,QAAQ,CAAC;AAEnC,QAAA,IAAI,CAAC,CAAC,aAAa,EAAE;YACnB,MAAM,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YAE3D,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,EAAE,EAAE;AAC5C,gBAAA,IAAI,GAAG,KAAK,WAAW,EAAE;AACvB,oBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;iBACpD;AAAM,qBAAA,IAAI,GAAG,KAAK,YAAY,EAAE;AAC/B,oBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;iBACrD;AAAM,qBAAA,IAAI,GAAG,KAAK,SAAS,EAAE;AAC5B,oBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;iBAClD;AAAM,qBAAA,IAAI,GAAG,KAAK,WAAW,EAAE;AAC9B,oBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;iBACpD;aACF;SACF;KACF;AAED;;;;AAIG;AACK,IAAA,YAAY,CAAC,IAAY,EAAA;AAC/B,QAAA,IAAI,IAAI,GAAG,CAAC,EAAE;YACZ,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YACnD,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,YAAY,IAAG;AACxD,gBAAA,OAAO,IAAI,KAAK,MAAM,CAAC,QAAQ,CAC7B,YAAY,CAAC,aAAa,CAAC,YAAY,CAAC,WAAW,CAAW,EAC9D,EAAE,CACH,CAAC;AACJ,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,UAAU,GAAG,CAAC,EAAE;gBAClB,aAAa,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;aACrD;SACF;KACF;AAED;;;;AAIG;AACK,IAAA,aAAa,CAAC,IAAY,EAAA;QAChC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QACnD,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,YAAY,IAAG;AACxD,YAAA,OAAO,IAAI,KAAK,MAAM,CAAC,QAAQ,CAC7B,YAAY,CAAC,aAAa,CAAC,YAAY,CAAC,WAAW,CAAW,EAC9D,EAAE,CACH,CAAC;AACJ,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,MAAM,UAAU,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE;YAClE,aAAa,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SACrD;KACF;AAED;;;;AAIG;AACK,IAAA,UAAU,CAAC,IAAY,EAAA;QAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QACnD,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,YAAY,IAAG;AACxD,YAAA,OAAO,IAAI,KAAK,MAAM,CAAC,QAAQ,CAC7B,YAAY,CAAC,aAAa,CAAC,YAAY,CAAC,WAAW,CAAW,EAC9D,EAAE,CACH,CAAC;AACJ,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE;YAC9C,aAAa,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SACrD;KACF;AAED;;;;AAIG;AACK,IAAA,YAAY,CAAC,IAAY,EAAA;QAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QACnD,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,YAAY,IAAG;AACxD,YAAA,OAAO,IAAI,KAAK,MAAM,CAAC,QAAQ,CAC7B,YAAY,CAAC,aAAa,CAAC,YAAY,CAAC,WAAW,CAAW,EAC9D,EAAE,CACH,CAAC;AACJ,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE;YACpE,aAAa,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SACrD;KACF;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;KAC1B;uGAniBU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,krBCnE9B,oqMAuHA,EAAA,MAAA,EAAA,CAAA,+5BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAa,iBAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDpDa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;+BACE,mBAAmB,EAAA,QAAA,EAAA,oqMAAA,EAAA,MAAA,EAAA,CAAA,+5BAAA,CAAA,EAAA,CAAA;8EAgB7B,iBAAiB,EAAA,CAAA;sBADhB,SAAS;uBAAC,mBAAmB,CAAA;gBAO9B,UAAU,EAAA,CAAA;sBADT,SAAS;uBAAC,YAAY,CAAA;gBAOvB,UAAU,EAAA,CAAA;sBADT,SAAS;uBAAC,YAAY,CAAA;gBAOvB,aAAa,EAAA,CAAA;sBADZ,YAAY;uBAAC,cAAc,CAAA;gBAOxB,KAAK,EAAA,CAAA;sBADR,KAAK;gBAqBF,SAAS,EAAA,CAAA;sBADZ,KAAK;gBAcF,IAAI,EAAA,CAAA;sBADP,KAAK;gBAqBN,YAAY,EAAA,CAAA;sBADX,KAAK;gBA6CN,QAAQ,EAAA,CAAA;sBADP,MAAM;gBASP,MAAM,EAAA,CAAA;sBADL,MAAM;gBA0PP,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAcxC,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,CAAA;;;AEjc1C;;AAEG;MA2BU,mBAAmB,CAAA;AAySV,IAAA,QAAA,CAAA;AAA6B,IAAA,iBAAA,CAAA;AAvSjD;;AAEG;IACK,OAAgB,YAAY,GAAG;AACrC,QAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QACtC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW;QAC1C,SAAS,EAAE,YAAY,EAAE,WAAW;QACpC,WAAW,EAAE,YAAY,EAAE,WAAW;QACtC,QAAQ;KACT,CAAC;AAEF;;;AAGG;IACK,OAAgB,0BAA0B,GAAG,IAAI,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAEhG;;;AAGG;IACK,OAAgB,gBAAgB,GAAG,IAAI,MAAM,CAAC,kCAAkC,CAAC,CAAC;AAE1F;;;AAGG;IACK,OAAgB,iBAAiB,GAAG,IAAI,MAAM,CAAC,4BAA4B,CAAC,CAAC;AAErF;;;AAGG;IACK,OAAgB,uBAAuB,GAAG,IAAI,MAAM,CAAC,+BAA+B,CAAC,CAAC;AAE9F;;;AAGG;IACK,OAAgB,qBAAqB,GAAG,IAAI,MAAM,CAAC,+BAA+B,CAAC,CAAC;AAE5F;;;AAGG;IACK,OAAgB,aAAa,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAEtE;;AAEG;IACH,IACI,KAAK,CAAC,KAAW,EAAA;QACnB,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,IAAI,CAAC,MAAM,GAAG,IAAW,CAAC;AAC1B,YAAA,IAAI,CAAC,UAAU,GAAG,IAAW,CAAC;AAC9B,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAW,CAAC;SACrC;aAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;AACvC,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,mBAAmB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACzE,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;KACF;IAED,IACI,QAAQ,CAAC,QAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;KAClD;IAED,IACI,SAAS,CAAC,SAA2C,EAAA;QACvD,IAAI,SAAS,EAAE,OAAO,GAAG,SAAS,EAAE,OAAO,EAAE;AAC3C,YAAA,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;SACxD;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,CAAC,sBAAsB,GAAG;AAC5B,YAAA,KAAK,EAAE,SAAS,EAAE,OAAO,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACvD,YAAA,GAAG,EAAE,SAAS,EAAE,OAAO,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACvD,CAAC;KACH;AAED;;AAEG;IAEH,OAAO,GAAW,IAAW,CAAC;AAE9B;;AAEG;IAEH,SAAS,GAAG,MAAM,CAAC;AAEnB;;AAEG;IAEH,cAAc,GAAG,IAAW,CAAC;AAE7B;;AAEG;IAEH,uBAAuB,GAAG,EAAE,CAAC;AAE7B;;AAEG;IAEH,aAAa,GAAY,IAAI,CAAC;AAE9B;;AAEG;IAEH,WAAW,GAAG,YAAY,CAAC;IAG3B,SAAS,GAAG,KAAK,CAAC;AAEV,IAAA,KAAK,GAAmB;AAC9B,QAAA,aAAa,EAAE,iBAAiB;AAChC,QAAA,YAAY,EAAE,mBAAmB;KAChB,CAAC;IAEpB,IACI,IAAI,CAAC,IAAoB,EAAA;QAC3B,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;SACnB;KACF;AAED,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;AAED;;AAEG;;AAGH,IAAA,KAAK,GAAG,IAAI,YAAY,EAAQ,CAAC;AAEjC;;AAEG;AAEH,IAAA,YAAY,GAAG,IAAI,YAAY,EAAQ,CAAC;AAExC;;AAEG;IAEH,aAAa,GAA+B,IAAW,CAAC;AAExD;;AAEG;IAEH,WAAW,GAA+B,IAAW,CAAC;IAGtD,eAAe,GAAqB,IAAW,CAAC;AAEhD;;AAEG;AACc,IAAA,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;AAE1C;;AAEG;IACc,cAAc,GAAG,GAAG,CAAC;AAEtC;;AAEG;IACc,aAAa,GAAG,GAAG,CAAC;AAErC;;AAEG;IACc,eAAe,GAAG,CAAC,CAAC;AAErC;;AAEG;IACH,UAAU,GAAG,EAAE,CAAC;IAEhB,gBAAgB,GAAG,EAAE,CAAC;AAEtB;;AAEG;IACH,YAAY,GAA2B,IAAW,CAAC;AAEnD;;AAEG;AACH,IAAA,QAAQ,GAAG,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC;AAEpC;;;AAGG;AACH,IAAA,sBAAsB,GAAG;AACvB,QAAA,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3D,QAAA,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;KACzD,CAAC;AAEF;;;AAGG;IACK,MAAM,GAAS,IAAW,CAAC;AAEnC;;;AAGG;IACK,SAAS,GAAG,KAAK,CAAC;AAE1B;;AAEG;AACK,IAAA,cAAc,CAA2B;AAEjD;;;;AAIG;IACK,OAAO,SAAS,CAAC,KAAW,EAAA;AAClC,QAAA,OAAO,CAAC,KAAK,GAAG,IAAW,GAAG,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;KAC3D;AAED;;;;AAIG;IACK,OAAO,eAAe,CAAC,UAAkB,EAAA;AAC/C,QAAA,IAAI,UAAgB,CAAC;AACrB,QAAA,IAAI;AACF,YAAA,UAAU,GAAG,KAAK,CAAC,UAAU,EAAE,mBAAmB,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;SACnG;QAAC,OAAO,CAAC,EAAE;YACV,UAAU,GAAG,IAAW,CAAC;SAC1B;AAED,QAAA,OAAO,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,IAAW,CAAC;KACvD;AAED;;;;AAIG;IACK,OAAO,aAAa,CAAC,UAAkB,EAAA;AAC7C,QAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,GAAG,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,uBAAuB,CAAC,SAAS,GAAG,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,qBAAqB,CAAC,SAAS,GAAG,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,0BAA0B,CAAC,SAAS,GAAG,CAAC,CAAC;QAE9C,IAAI,UAAU,GAAW,IAAW,CAAC;QACrC,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAC1C,UAAU,GAAG,YAAY,CAAC;SAC3B;aAAM,IAAI,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACxD,UAAU,GAAG,WAAW,CAAC;SAC1B;aAAM,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtD,UAAU,GAAG,WAAW,CAAC;SAC1B;aAAM,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAClD,UAAU,GAAG,UAAU,CAAC;SACzB;aAAM,IAAI,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAC3D,UAAU,GAAE,YAAY,CAAC;SAC1B;AAED,QAAA,OAAO,UAAU,CAAC;KACnB;AAED;;AAEG;AACH,IAAA,QAAQ,GAAyB,MAAK,GAAG,CAAC;AAE1C;;AAEG;AACH,IAAA,SAAS,GAAc,MAAK,GAAG,CAAC;AAEhC;;;;AAIG;IACH,WAAoB,CAAA,QAAmB,EAAU,iBAAoC,EAAA;QAAjE,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAAU,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;KAAK;AAE1F;;AAEG;AACH,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,mBAAmB,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAC7D;AAED;;AAEG;IACH,IAAI,QAAQ,KAAc,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;AAGlD,IAAA,cAAc,CAAC,KAAU,EAAA;QACvB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC;KAChD;AAED;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAK;AAChE,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAI,CAAC,mBAAmB,EAAE,CAAC;aAC5B;AACH,SAAC,CAAC,CAAC;KACJ;AAED;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;KACF;AAED;;;AAGG;AACH,IAAA,UAAU,CAAC,KAAW,EAAA;AACpB,QAAA,IAAI,KAAK,KAAK,IAAI,IAAI,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,sBAAsB,CAAC,EAAE;AAC1E,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;SACpB;aAAM;AACL,YAAA,IAAI,CAAC,KAAK,GAAG,IAAW,CAAC;SAC1B;AAED,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACvC;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,EAAwB,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAED;;;AAGG;AACH,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC3B,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACvC;AAED;;AAEG;AACH,IAAA,WAAW,CAAC,KAAoB,EAAA;AAC9B,QAAA,MAAM,EAAC,GAAG,EAAC,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YACrE,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;AAED,QAAA,IAAI,GAAG,KAAK,OAAO,EAAE;YACnB,UAAU,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;SAC1C;KACF;AAED;;AAEG;IACH,UAAU,GAAA;AACR,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;SACxE;QAAC,OAAO,CAAC,EAAE;AACV,YAAA,IAAI,CAAC,WAAW,CAAC,IAAW,CAAC,CAAC;SAC/B;KACF;AAED;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI;YACF,MAAM,UAAU,GAAG,mBAAmB,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACxE,YAAA,IAAI,UAAU,KAAK,IAAI,IAAI,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,sBAAsB,CAAC,EAAE;AACpF,gBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;aAC9B;SACF;AAAC,QAAA,OAAO,CAAC,EAAE,GAAG;AAEf,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;KACnB;IAED,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACxC,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAED,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC9C,MAAM,iBAAiB,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AAChF,YAAA,IAAI,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACvE;KACF;AAED;;;AAGG;AACH,IAAA,WAAW,CAAC,KAAW,EAAA;AACrB,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC;AAEtC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,KAAK,KAAK,IAAI,IAAI,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,sBAAsB,CAAC,EAAE;AAC1E,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBAEnB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,EAAE;AAC3C,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAE9B,oBAAA,IAAI,IAAI,CAAC,aAAa,EAAE;wBACtB,UAAU,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,EAAE,GAAG,CAAC,CAAC;qBACnD;iBACF;aACF;iBAAM;AACL,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAW,CAAC;aAC1B;YAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,EAAE;AAC3C,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC1B,IAAI,CAAC,cAAc,EAAE,CAAC;aACvB;SACF;KACF;AAED;;;AAGG;AACH,IAAA,YAAY,CAAC,KAAkB,EAAA;QAC7B,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,wBAAwB,EAAE,CAAC;SAClC;QAED,IAAI,CAAC,YAAY,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AACjD,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACpC;AAED;;AAEG;IACH,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAW,CAAC;AAChC,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;SAC9B;KACF;AAED;;;;;AAKG;IACK,mBAAmB,GAAA;AACzB,QAAA,MAAM,EAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAC,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACrF,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAC1C,QAAA,MAAM,oBAAoB,GAAG,MAAM,CAAC,WAAW,GAAG,0BAA0B,CAAC;QAC7E,MAAM,iBAAiB,GAAG,GAAG,CAAC;QAC9B,MAAM,oBAAoB,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC;AACxE,QAAA,IAAI,YAAoB,EAAE,WAAmB,EAAE,eAAuB,CAAC;AAEvE,QAAA,IAAI,oBAAoB,GAAG,oBAAoB,EAAE;YAC/C,eAAe,GAAG,UAAU,CAAC;AAC7B,YAAA,WAAW,GAAG,0BAA0B,GAAG,IAAI,CAAC,eAAe,CAAC;SACjE;AAAM,aAAA,IAAI,iBAAiB,GAAG,oBAAoB,EAAE;YACnD,eAAe,GAAG,aAAa,CAAC;AAChC,YAAA,WAAW,GAAG,GAAG,GAAG,oBAAoB,CAAC;SAC1C;aAAM;YACL,eAAe,GAAG,UAAU,CAAC;YAE7B,IAAI,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,WAAW,EAAE;gBAC5C,WAAW,GAAG,CAAC,CAAC;aACjB;iBAAM;gBACL,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC;AAChE,gBAAA,WAAW,GAAG,cAAc,GAAG,CAAC,CAAC;aAClC;SACF;QAED,YAAY,GAAG,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,UAAU,EAAE;AACnD,YAAA,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;SAC9E;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,kBAAkB,EAAE,eAAe,CAAC,CAAC;AAC5F,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,YAAY,CAAA,EAAA,CAAI,CAAC,CAAC;AACpF,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,WAAW,CAAA,EAAA,CAAI,CAAC,CAAC;KACnF;uGAtgBU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EARnB,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,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,EAAA,EAAA,QAAA,EC/CH,ynGAkEA,EDvCc,MAAA,EAAA,CAAA,6uBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAb,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,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAa,iBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACV,OAAO,CAAC,WAAW,EAAE;gBACnB,UAAU,CAAC,cAAc,EAAE;oBACzB,KAAK,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC/C,oBAAA,OAAO,CAAC,YAAY,EAClB,KAAK,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;iBACjD,CAAC;gBACF,UAAU,CAAC,eAAe,EAAE;oBAC1B,KAAK,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC7C,oBAAA,OAAO,CAAC,YAAY,EAClB,KAAK,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;iBACnD,CAAC;aACH,CAAC;AACH,SAAA,EAAA,CAAA,CAAA;;2FASU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA1B/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAGpB,UAAA,EAAA;wBACV,OAAO,CAAC,WAAW,EAAE;4BACnB,UAAU,CAAC,cAAc,EAAE;gCACzB,KAAK,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC/C,gCAAA,OAAO,CAAC,YAAY,EAClB,KAAK,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;6BACjD,CAAC;4BACF,UAAU,CAAC,eAAe,EAAE;gCAC1B,KAAK,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC7C,gCAAA,OAAO,CAAC,YAAY,EAClB,KAAK,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;6BACnD,CAAC;yBACH,CAAC;qBACH,EACU,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AAClD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,ynGAAA,EAAA,MAAA,EAAA,CAAA,6uBAAA,CAAA,EAAA,CAAA;8GAuDG,KAAK,EAAA,CAAA;sBADR,KAAK;gBAcF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAMF,SAAS,EAAA,CAAA;sBADZ,KAAK;gBAiBN,OAAO,EAAA,CAAA;sBADN,KAAK;gBAON,SAAS,EAAA,CAAA;sBADR,KAAK;gBAON,cAAc,EAAA,CAAA;sBADb,KAAK;gBAON,uBAAuB,EAAA,CAAA;sBADtB,KAAK;gBAON,aAAa,EAAA,CAAA;sBADZ,KAAK;gBAON,WAAW,EAAA,CAAA;sBADV,KAAK;gBAIN,SAAS,EAAA,CAAA;sBADR,KAAK;gBASF,IAAI,EAAA,CAAA;sBADP,KAAK;;;QAgBN,KAAK,EAAA,CAAA;sBAFJ,MAAM;gBAQP,YAAY,EAAA,CAAA;sBADX,MAAM;gBAOP,aAAa,EAAA,CAAA;sBADZ,SAAS;uBAAC,eAAe,CAAA;gBAO1B,WAAW,EAAA,CAAA;sBADV,SAAS;uBAAC,aAAa,CAAA;gBAIxB,eAAe,EAAA,CAAA;sBADd,SAAS;uBAAC,iBAAiB,CAAA;gBAqJ5B,cAAc,EAAA,CAAA;sBADb,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAA;;;ME7V9B,+BAA+B,CAAA;uGAA/B,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,EAN3B,YAAA,EAAA,CAAA,iBAAiB,CAE9B,EAAA,OAAA,EAAA,CAAA,YAAY,aAEJ,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAEhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,YAJxC,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAIH,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAP3C,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,iBAAiB,CAAC;AACjC,oBAAA,OAAO,EAAE;wBACP,YAAY;AACb,qBAAA;oBACD,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC7B,iBAAA,CAAA;;;MCSY,wBAAwB,CAAA;AAmMf,IAAA,iBAAA,CAAA;AAjMpB,IAAA,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACvC,SAAS,GAAG,KAAK,CAAC;AAEV,IAAA,OAAO,GAAG,IAAI,eAAe,CAAM,IAAI,CAAC,CAAC;IAEzC,UAAU,GAAQ,IAAW,CAAC;IAC9B,KAAK,GAAG,KAAK,CAAC;AAEtB,IAAA,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,IAAI,CAACC,KAAG,CAC9C,KAAK,IAAG;QACN,IAAI,QAAQ,GAAG,EAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAC,CAAC;QACxC,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE;AACrC,YAAA,QAAQ,GAAG,EAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAC,CAAC;SACjD;AAED,QAAA,IAAI,QAAQ,KAAK,IAAI,CAAC,UAAU,EAAE;AAChC,YAAA,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;AAE3B,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAChC;SACF;KACF,CACF,CAAC,CAAC;IAGH,OAAO,GAAW,IAAW,CAAC;IAG9B,cAAc,GAAG,EAAE,CAAC;IAGpB,uBAAuB,GAAG,EAAE,CAAC;AAG7B,IAAA,IAAI,GAAwB;AAC1B,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,GAAG,EAAE,KAAK;AACV,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,YAAY,EAAE,eAAe;AAC7B,QAAA,WAAW,EAAE,gBAAgB;KACP,CAAC;IAEzB,IACI,SAAS,CAAC,KAAsC,EAAA;AAClD,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAExB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YAClC,IAAI,CAAC,aAAa,GAAG;AACnB,gBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;gBACzB,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC;SACH;aAAM;AACL,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;SAC5B;KACF;AAED,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;AAED,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;AAEO,IAAA,UAAU,GAAG;AACnB,QAAA,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/C,QAAA,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;KAClD,CAAC;AAEM,IAAA,aAAa,GAAG;AACtB,QAAA,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/C,QAAA,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;KAClD,CAAA;IAED,IACI,KAAK,CAAC,KAAiC,EAAA;QACzC,IAAI,CAAC,KAAK,EAAE;YACV,KAAK,GAAG,EAAC,KAAK,EAAE,IAAW,EAAE,GAAG,EAAE,IAAW,EAAC,CAAC;SAChD;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEzB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;SAC9B;KACF;AAED,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IAED,IACI,QAAQ,CAAC,QAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;KAC3B;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IAGD,SAAS,GAAW,IAAW,CAAC;AAEhC;;;AAGG;IAEH,UAAU,GAAG,SAAS,CAAC;IAGvB,eAAe,GAAqB,IAAW,CAAC;IAGhD,aAAa,GAAsB,IAAW,CAAC;IAG/C,WAAW,GAAsB,IAAW,CAAC;IAE7C,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;KACnB;AAED,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACtB,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;SACjC;AAED,QAAA,OAAO,IAAW,CAAC;KACpB;IAED,IAAI,SAAS,CAAC,SAAe,EAAA;AAC3B,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC/B,QAAA,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;AAExB,QAAA,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,EAAE;AACpC,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;aAC5B;SACF;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEzB,IAAI,CAAC,SAAS,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE;AAC1C,YAAA,IAAI,CAAC,OAAO,GAAG,IAAW,CAAC;SAC5B;QAED,IAAI,CAAC,aAAa,GAAG;AACnB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO;SAChC,CAAC;KACH;AAED,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACtB,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;SAC/B;AAED,QAAA,OAAO,IAAW,CAAC;KACpB;IAED,IAAI,OAAO,CAAC,OAAa,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE;YAC5D,OAAO,GAAG,IAAW,CAAC;AACtB,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;aAC1B;SACF;AAED,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC/B,QAAA,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC;AAEpB,QAAA,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE;AAChC,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;aAC1B;SACF;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1B;AAED;;AAEG;AACH,IAAA,QAAQ,GAAyB,MAAK,GAAG,CAAC;AAE1C;;AAEG;AACH,IAAA,SAAS,GAAc,MAAK,GAAG,CAAC;AAEhC,IAAA,WAAA,CAAoB,iBAAoC,EAAA;QAApC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;KAEvD;AAED;;;AAGG;AACH,IAAA,UAAU,CAAC,KAAiC,EAAA;AAC1C,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACvC;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAED;;;AAGG;AACH,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC3B,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACvC;AAED,IAAA,YAAY,CAAC,KAAY,EAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACpC;KACF;IAED,WAAW,CAAC,OAAgB,EAAE,IAAU,EAAA;QACtC,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACvB;aAAM;AACL,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACrB;KACF;IAED,UAAU,GAAA;AACR,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAC/B,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;YAC7D,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;KACF;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,KAAK,GAAG,IAAW,CAAC;KAC1B;uGAhQU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EARxB,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,wBAAwB,CAAC;AACvD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjBH,0tIAgGA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAf,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAe,mBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,WAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FD7Ea,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAZpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,EAG3B,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,8BAA8B,CAAC;AACvD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,0tIAAA,EAAA,CAAA;sFA8BD,OAAO,EAAA,CAAA;sBADN,KAAK;gBAIN,cAAc,EAAA,CAAA;sBADb,KAAK;gBAIN,uBAAuB,EAAA,CAAA;sBADtB,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;gBAWF,SAAS,EAAA,CAAA;sBADZ,KAAK;gBAiCF,KAAK,EAAA,CAAA;sBADR,KAAK;gBAkBF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAUN,SAAS,EAAA,CAAA;sBADR,KAAK;gBAQN,UAAU,EAAA,CAAA;sBADT,KAAK;gBAIN,eAAe,EAAA,CAAA;sBADd,SAAS;uBAAC,iBAAiB,CAAA;gBAI5B,aAAa,EAAA,CAAA;sBADZ,SAAS;uBAAC,eAAe,CAAA;gBAI1B,WAAW,EAAA,CAAA;sBADV,SAAS;uBAAC,aAAa,CAAA;;;ME1Gb,wBAAwB,CAAA;uGAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,iBAnBjC,mBAAmB;YACnB,iBAAiB;AACjB,YAAA,wBAAwB,aAGxB,UAAU;YACV,uBAAuB;YACvB,YAAY;YACZ,WAAW;YACX,+BAA+B;AAC/B,YAAA,qBAAqB,aAGrB,mBAAmB;YACnB,iBAAiB;YACjB,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAIf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,EAFxB,SAAA,EAAA,CAAC,iBAAiB,CAAC,YAZ5B,UAAU;YACV,uBAAuB;YACvB,YAAY;YACZ,WAAW;YACX,+BAA+B;YAC/B,qBAAqB,CAAA,EAAA,CAAA,CAAA;;2FASZ,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBArBpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,mBAAmB;wBACnB,iBAAiB;wBACjB,wBAAwB;AACzB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,UAAU;wBACV,uBAAuB;wBACvB,YAAY;wBACZ,WAAW;wBACX,+BAA+B;wBAC/B,qBAAqB;AACtB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,mBAAmB;wBACnB,iBAAiB;wBACjB,wBAAwB;AACzB,qBAAA;oBACD,SAAS,EAAE,CAAC,iBAAiB,CAAC;AAC/B,iBAAA,CAAA;;;ACJD;;AAEG;MA2BU,iBAAiB,CAAA;AAiCR,IAAA,QAAA,CAAA;AAA6B,IAAA,iBAAA,CAAA;AA/BjD;;;AAGG;IACH,IACI,KAAK,CAAC,KAAsB,EAAA;AAC9B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEhC,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;AAED,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;AAED;;AAEG;IACH,IACI,OAAO,CAAC,OAA4B,EAAA;AACtC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;AACnE,QAAA,IAAI,CAAC,WAAW,GAAG,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACxE,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;AAED;;;;AAIG;IACH,WAAoB,CAAA,QAAmB,EAAU,iBAAoC,EAAA;QAAjE,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAAU,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACnF,MAAM,UAAU,GAAG,gEAAgE,CAAC;QACpF,IAAI,MAAM,GAAG,EAAE,CAAC;AAEhB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAC3B,YAAA,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;SAC5E;AAED,QAAA,IAAI,CAAC,UAAU,GAAG,CAAA,SAAA,EAAY,MAAM,CAAA,EAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;KAC/D;AAED;;;;AAIG;AACK,IAAA,OAAgB,oBAAoB,GAAG,CAAC,CAAC;AAEjD;;;AAGG;AACK,IAAA,OAAgB,UAAU,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;AAEzF;;AAEG;IAEH,QAAQ,GAA+B,IAAW,CAAC;AAEnD;;AAEG;IAEH,cAAc,GAAkC,IAAW,CAAC;AAE5D;;AAEG;IAEH,YAAY,GAA+B,IAAW,CAAC;AAEvD;;AAEG;IAEH,eAAe,GAA6C,IAAW,CAAC;AAExE;;AAEG;IAEH,QAAQ,GAA6B,IAAW,CAAC;AAEjD;;AAEG;IAEH,QAAQ,GAAY,KAAK,CAAC;AAG1B,IAAA,IAAI,GAAiB;AAClB,QAAA,WAAW,EAAE,kBAAkB;KACjC,CAAA;AAED;;AAEG;IAEH,SAAS,GAAW,IAAW,CAAC;IAGhC,eAAe,GAAW,IAAW,CAAC;AAEtC;;AAEG;;AAGH,IAAA,MAAM,GAAG,IAAI,YAAY,EAAmB,CAAC;AAE7C;;AAEG;AACM,IAAA,QAAQ,GAAG,IAAI,eAAe,CAAsB,IAAW,CAAC,CAAC;AAE1E;;;AAGG;IACK,WAAW,GAA0B,IAAW,CAAC;AAEzD;;;AAGG;IACK,yBAAyB,GAAG,EAAE,CAAC;AAEvC;;;AAGG;IACK,QAAQ,GAAG,IAAW,CAAC;AAG/B;;AAEG;AACM,IAAA,cAAc,GAAG,IAAI,eAAe,CAAkB,IAAW,CAAC,CAAC;AAE5E;;AAEG;IACc,eAAe,GAAgE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChH,GAAG,CAAC,OAAO,IAAG;QACZ,IAAI,cAAc,GAAoD,IAAW,CAAC;AAElF,QAAA,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE;YACrB,cAAc,GAAG,EAAE,CAAC;AAEpB,YAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC5B,gBAAA,IAAI,SAAS,IAAI,MAAM,EAAE;AACvB,oBAAA,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,OAAO,EAAE;wBACxC,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;qBACjG;iBACF;AAAM,qBAAA,IAAI,aAAa,IAAI,MAAM,EAAE;oBAClC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;iBACvF;aACF;SACF;AAED,QAAA,OAAO,cAAc,CAAC;KACvB,CAAC,CACH,CAAC;AAEF;;AAEG;IACM,oBAAoB,GAA2C,IAAI,CAAC,cAAc,CAAC,IAAI,CAC9F,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,EACpC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC,KAAI;QAC9B,IAAI,WAAW,GAA+B,IAAW,CAAC;QAE1D,IAAI,KAAK,KAAK,IAAI,IAAI,cAAc,KAAK,IAAI,EAAE;YAC7C,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAE5C,YAAA,IAAI,CAAC,CAAC,KAAK,EAAE;AACX,gBAAA,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;aACjD;SACF;AAED,QAAA,OAAO,WAAW,CAAC;KACpB,CAAC,CACH,CAAC;IAEM,OAAO,aAAa,CAAC,OAA4B,EAAA;QACvD,MAAM,UAAU,GAA0B,EAAE,CAAC;AAC7C,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC5B,YAAA,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;AAC3B,gBAAA,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,OAAO,EAAE;AACxC,oBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;AACzB,wBAAA,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;qBAC9B;iBACF;aACF;iBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACvD,gBAAA,UAAU,CAAC,IAAI,CAAC,MAAwB,CAAC,CAAC;aAC3C;SACF;AAED,QAAA,OAAO,UAAU,CAAC;KACnB;AAED;;AAEG;AACM,IAAA,UAAU,CAAC;AAEpB;;AAEG;IACH,MAAM,GAAG,KAAK,CAAC;AAEf;;AAEG;IACH,MAAM,GAAG,KAAK,CAAC;AAEf;;AAEG;IACH,cAAc,GAAW,IAAW,CAAC;AAErC;;AAEG;AACH,IAAA,QAAQ,GAAG,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC;AAEpC;;;AAGG;IACK,MAAM,GAAoB,IAAW,CAAC;AAE9C;;;;;AAKG;IACK,OAAO,mBAAmB,CAAC,OAA4B,EAAA;QAC7D,MAAM,gBAAgB,GAAwB,EAAE,CAAC;AAEjD,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC5B,YAAA,IAAI,CAAC,YAAY,IAAI,MAAM,MAAM,SAAS,IAAI,MAAM,CAAC,EAAE;gBACrD,MAAM,YAAY,GAA0B,EAAE,CAAC;gBAC/C,KAAK,MAAM,WAAW,KAAK,MAAM,CAAC,OAAO,IAAI,EAAE,GAAG;oBAChD,IAAI,CAAC,CAAC,WAAW,CAAC,KAAK,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,KAAK,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE;AAC7E,wBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;AAChE,wBAAA,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;AAC7G,wBAAA,eAAe,CAAC,IAAI,GAAG,OAAO,CAAC;AAE/B,wBAAA,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;qBACpC;iBACF;AAED,gBAAA,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE;AACzB,oBAAA,gBAAgB,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;iBAChG;aACF;AAAM,iBAAA,IAAI,CAAC,OAAO,IAAI,MAAM,MAAM,OAAO,IAAI,MAAM,CAAC,EAAE;gBACrD,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE;AAC9D,oBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AACtD,oBAAA,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;AAC9F,oBAAA,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC;AAE3B,oBAAA,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBACnC;aACF;SACF;AAED,QAAA,OAAO,gBAAgB,CAAC;KACzB;AAED;;;;;;;AAOG;AACK,IAAA,OAAO,qBAAqB,CAAC,KAAa,EAAE,WAAuC,EAAA;QACzF,IAAI,CAAC,WAAW,EAAE;YAChB,WAAW,GAAG,EAAE,CAAC;SAClB;AAED,QAAA,IAAI,CAAC,CAAC,KAAK,EAAE;AACX,YAAA,MAAM,aAAa,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;YAE/C,IAAI,CAAC,CAAC,aAAa,IAAI,aAAuB,IAAI,CAAC,EAAE;gBACnD,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAE3C,IAAI,CAAC,WAAW,EAAE;AAChB,oBAAA,WAAW,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;iBAC9B;aACF;iBAAM;AACL,gBAAA,WAAW,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;aAClC;SACF;AAED,QAAA,OAAO,WAAW,CAAC;KACpB;AAED;;AAEG;AACH,IAAA,QAAQ,GAAyB,MAAK,GAAG,CAAC;AAE1C;;AAEG;AACH,IAAA,SAAS,GAAc,MAAK,GAAG,CAAC;AAEhC;;;AAGG;AACH,IAAA,UAAU,CAAC,KAAsB,EAAA;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACvC;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAED;;;AAGG;AACH,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC3B,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACvC;AAED;;AAEG;AAEH,IAAA,cAAc,CAAC,KAAU,EAAA;QACvB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC;AAE/C,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B;KACF;AAED;;;AAGG;AAEH,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC5B,QAAA,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC3E,YAAA,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;YAEtB,IAAI,iBAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAC9C,KAAK,CAAC,cAAc,EAAE,CAAC;aACxB;SACF;KACF;AAED;;;AAGG;AAEH,IAAA,OAAO,CAAC,KAAoB,EAAA;AAC1B,QAAA,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC3E,YAAA,MAAM,EAAC,GAAG,EAAC,GAAG,KAAK,CAAC;YAEpB,IAAI,iBAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC9C,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;aACxB;AAAM,iBAAA,IAAI,GAAG,KAAK,KAAK,EAAE;gBACxB,IAAI,CAAC,aAAa,EAAE,CAAC;aACtB;iBAAM;AACL,gBAAA,IAAI,CAAC,yBAAyB,IAAI,GAAG,CAAC;AACtC,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,oBAAA,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAC7B;AAED,gBAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,yBAAyB,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;gBAE3E,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,IAAG;oBACvD,OAAO,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,CAAC,CAAA;AAC5G,iBAAC,CAAC,CAAC;gBAEH,IAAI,eAAe,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;oBACjD,IAAI,CAAC,0BAA0B,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;iBAC3D;aACF;SACF;KACF;AAED;;;AAGG;AAEH,IAAA,OAAO,CAAC,KAAiB,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,MAAM,EAAC,KAAK,EAAE,KAAK,EAAC,GAAG,KAAK,CAAC;YAE7B,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;AAC1B,gBAAA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;gBAC7F,MAAM,cAAc,GAAG,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC;gBACvD,MAAM,cAAc,GAAG,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,MAAM,CAAC;gBACvD,MAAM,WAAW,GAAG,EAAE,cAAc,IAAI,cAAc,CAAC,CAAC;gBAExD,IAAI,WAAW,EAAE;oBACf,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,oBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;iBAC3C;aACF;SACF;KACF;AAED;;;AAGG;AACH,IAAA,aAAa,CAAC,KAAY,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,KAAK,CAAC,wBAAwB,EAAE,CAAC;YAEjC,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SAC3C;KACF;AAED;;;;AAIG;IACH,0BAA0B,CAAC,MAAyB,EAAE,KAAa,EAAA;AACjE,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,MAAM,CAAC,KAAK,EAAE,CAAC;KAChB;AAED;;;;AAIG;IACH,yBAAyB,CAAC,MAAyB,EAAE,KAAa,EAAA;AAChE,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,EAAE;AACjC,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,MAAM,CAAC,KAAK,EAAE,CAAC;SAChB;KACF;AAED;;;;AAIG;IACH,sBAAsB,CAAC,KAAsB,EAAE,QAAiB,EAAA;QAC9D,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SAC3C;KACF;AAED;;;AAGG;AACH,IAAA,YAAY,CAAC,KAAiB,EAAA;QAC5B,KAAK,CAAC,wBAAwB,EAAE,CAAC;AAEjC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACpB;KACF;AAED;;AAEG;IACH,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,KAAqB,EAAA;AACpC,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;YAC5B,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAEzB,YAAA,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE;gBAChC,UAAU,CAAC,MAAK;oBACd,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC;yBAChD,aAAa;AACb,yBAAA,KAAK,EAAE,CAAC;AACb,iBAAC,CAAC,CAAC;aACJ;AAED;;;;AAIG;AACH,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AACzE,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC1E,UAAU,CAAC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;SAC/C;KACF;AAED;;;AAGG;AACH,IAAA,eAAe,CAAC,KAAqB,EAAA;AACnC,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,EAAE;AAC7B,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SACrB;KACF;AAED;;;AAGG;IACH,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,cAAc,GAAG,IAAW,CAAC;QAElC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE;YACxE,MAAM,oBAAoB,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;YAC5D,MAAM,UAAU,GAAG,oBAAoB,CAAC,SAAS,CAAC,MAAM,IAAG;AACzD,gBAAA,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;AAChF,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,cAAc,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,UAAU,GAAG,IAAW,CAAC;SAClE;KACF;AAED;;;;AAIG;AACK,IAAA,0BAA0B,CAAC,KAAsB,EAAA;QACvD,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC1C,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAEnB,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACzB;KACF;AAED,IAAA,mBAAmB,CAAC,KAAU,EAAA;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACrB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzB;AAED;;;AAGG;IACK,oBAAoB,GAAA;AAC1B,QAAA,MAAM,EAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QAChF,MAAM,EAAC,YAAY,EAAC,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;QACvD,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAC1C,QAAA,MAAM,oBAAoB,GAAG,MAAM,CAAC,WAAW,GAAG,0BAA0B,CAAC;QAC7E,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,QAAA,MAAM,gBAAgB,GAAG,YAAY,GAAG,iBAAiB,CAAC,oBAAoB,CAAC;QAC/E,IAAI,eAAuB,EAAE,WAAmB,CAAC;AAEjD,QAAA,IAAI,oBAAoB,GAAG,gBAAgB,EAAE;YAC3C,eAAe,GAAG,UAAU,CAAC;YAC7B,WAAW,GAAG,GAAG,0BAA0B,GAAG,iBAAiB,CAAC,oBAAoB,IAAI,CAAC;SAC1F;AAAM,aAAA,IAAI,iBAAiB,GAAG,gBAAgB,EAAE;YAC/C,eAAe,GAAG,aAAa,CAAC;AAChC,YAAA,WAAW,GAAG,CAAG,EAAA,GAAG,GAAG,gBAAgB,IAAI,CAAC;SAC7C;aAAM;AACL,YAAA,IAAI,YAAY,GAAG,MAAM,CAAC,WAAW,EAAE;gBACrC,WAAW,GAAG,KAAK,CAAC;aACrB;iBAAM;AACL,gBAAA,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,GAAG,YAAY,CAAC;gBACzD,WAAW,GAAG,GAAG,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC,CAAA,EAAA,CAAI,CAAC;aACjD;YAED,eAAe,GAAG,UAAU,CAAC;SAC9B;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,kBAAkB,EAAE,eAAe,CAAC,CAAC;AAC7F,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA,EAAA,CAAI,CAAC,CAAC;AAC7E,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;KAC7E;AAED;;;AAGG;IACK,kBAAkB,GAAA;AACxB,QAAA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;AAC5E,QAAA,MAAM,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;AAE3B,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA,EAAA,CAAI,CAAC,CAAC;KAChF;AAED;;;AAGG;AACK,IAAA,YAAY,CAAC,GAAW,EAAA;QAC9B,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,SAAS,EAAE;AAC5C,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAEhD,YAAA,IAAI,cAAc,KAAK,IAAI,EAAE;AAC3B,gBAAA,IAAI,IAAI,CAAC,MAAM,EAAE;oBACf,cAAc,CAAC,KAAK,EAAE,CAAC;iBACxB;qBAAM;oBACL,IAAI,CAAC,0BAA0B,CAAC,cAAc,CAAC,YAAY,CAAC,YAAY,CAAW,CAAC,CAAC;iBACtF;aACF;SACF;aAAM,IAAI,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,WAAW,EAAE;AACtD,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AAExC,YAAA,IAAI,UAAU,KAAK,IAAI,EAAE;AACvB,gBAAA,IAAI,IAAI,CAAC,MAAM,EAAE;oBACf,UAAU,CAAC,KAAK,EAAE,CAAC;iBACpB;qBAAM;oBACL,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,YAAY,CAAC,YAAY,CAAW,CAAC,CAAC;iBAClF;aACF;SACF;KACF;AAED;;;;;AAKG;IACK,aAAa,GAAA;QACnB,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;AAEpD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AAC9E,QAAA,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrD,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;AAE7C,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACpB,gBAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;gBACxB,MAAM;aACP;SACF;AAED,QAAA,OAAO,IAAI,CAAC,cAAc,KAAK,IAAI;AACjC,cAAE,IAAW;cACX,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC;KACrD;AAED;;;;;AAKG;IACK,iBAAiB,GAAA;QACvB,IAAI,cAAc,GAAsB,IAAW,CAAC;AAEpD,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE;YAChC,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;AAEpD,YAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBACjD,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;AAE7C,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACpB,oBAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;oBACxB,cAAc,GAAG,MAAM,CAAC;oBACxB,MAAM;iBACP;aACF;SACF;AAED,QAAA,OAAO,cAAc,CAAC;KACvB;uGAxrBU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EARjB,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,EAsFa,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,WAAW,EC7I3B,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,uvVAmMA,EDhKc,MAAA,EAAA,CAAA,wyDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACV,OAAO,CAAC,WAAW,EAAE;gBACnB,UAAU,CAAC,eAAe,EAAE;oBAC1B,KAAK,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC/C,oBAAA,OAAO,CAAC,YAAY,EAClB,KAAK,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;iBACjD,CAAC;gBACF,UAAU,CAAC,eAAe,EAAE;oBAC1B,KAAK,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC7C,oBAAA,OAAO,CAAC,YAAY,EAClB,KAAK,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;iBACnD,CAAC;aACH,CAAC;AACH,SAAA,EAAA,CAAA,CAAA;;2FASU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA1B7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAGjB,UAAA,EAAA;wBACV,OAAO,CAAC,WAAW,EAAE;4BACnB,UAAU,CAAC,eAAe,EAAE;gCAC1B,KAAK,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC/C,gCAAA,OAAO,CAAC,YAAY,EAClB,KAAK,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;6BACjD,CAAC;4BACF,UAAU,CAAC,eAAe,EAAE;gCAC1B,KAAK,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC7C,gCAAA,OAAO,CAAC,YAAY,EAClB,KAAK,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;6BACnD,CAAC;yBACH,CAAC;qBACH,EACU,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC;AAChD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,uvVAAA,EAAA,MAAA,EAAA,CAAA,wyDAAA,CAAA,EAAA,CAAA;8GASG,KAAK,EAAA,CAAA;sBADR,KAAK;gBAgBF,OAAO,EAAA,CAAA;sBADV,KAAK;gBAwCN,QAAQ,EAAA,CAAA;sBADP,SAAS;uBAAC,UAAU,CAAA;gBAOrB,cAAc,EAAA,CAAA;sBADb,SAAS;uBAAC,gBAAgB,CAAA;gBAO3B,YAAY,EAAA,CAAA;sBADX,SAAS;uBAAC,cAAc,CAAA;gBAOzB,eAAe,EAAA,CAAA;sBADd,YAAY;uBAAC,gBAAgB,CAAA;gBAO9B,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,WAAW,CAAA;gBAOzB,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;gBASN,SAAS,EAAA,CAAA;sBADR,KAAK;gBAIN,eAAe,EAAA,CAAA;sBADd,KAAK;;;QAQN,MAAM,EAAA,CAAA;sBAFL,MAAM;gBAmPP,cAAc,EAAA,CAAA;sBADb,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAezC,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAgB1C,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAiCxC,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MErc7B,sBAAsB,CAAA;uGAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAAtB,sBAAsB,EAAA,YAAA,EAAA,CAV/B,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAGjB,YAAY;AACZ,YAAA,WAAW,aAGX,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAGR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YAP/B,YAAY;YACZ,WAAW,CAAA,EAAA,CAAA,CAAA;;2FAMF,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAZlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,iBAAiB;AAClB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;AACZ,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,iBAAiB;AAClB,qBAAA;AACF,iBAAA,CAAA;;;ACWD;;AAEG;MA2BU,oBAAoB,CAAA;AAwTX,IAAA,QAAA,CAAA;AAA6B,IAAA,iBAAA,CAAA;AAtTjD;;;AAGG;IACH,IACI,KAAK,CAAC,KAA6B,EAAA;QACrC,IAAI,UAAU,GAA2B,IAAW,CAAC;AACrD,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxB,UAAU,GAAG,EAAE,CAAC;AAChB,YAAA,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE;AAC7B,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AAC5B,oBAAA,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;iBAC/B;AAAM,qBAAA,IAAI,CAAC,OAAO,SAAS,KAAK,QAAQ,MAAM,OAAO,SAAS,KAAK,QAAQ,CAAC,EAAE;AAC7E,oBAAA,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBAC5B;aACF;AAED,YAAA,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC;AAC/D,YAAA,UAAU,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,IAAW,GAAG,aAAa,CAAC;SAClE;AAED,QAAA,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;AACzB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACtC;AAED,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;AAED;;AAEG;IACH,IACI,OAAO,CAAC,OAA+B,EAAA;AACzC,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,OAAO,EAAE;AACX,YAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC5B,gBAAA,MAAM,UAAU,GAAI,MAAiC,CAAC,OAAO,CAAC;gBAC9D,IAAI,UAAU,EAAE;AACd,oBAAA,IAAI,CAAC,WAAW,IAAI,UAAU,CAAC,MAAM,CAAC;iBACvC;qBAAM;oBACL,IAAI,CAAC,WAAW,EAAE,CAAC;iBACpB;aACF;SACF;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;KACvE;AAED;;;;AAIG;AACK,IAAA,OAAgB,WAAW,GAAG,CAAC,CAAC;AAExC;;;AAGG;AACK,IAAA,OAAgB,UAAU,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;AAEzF;;AAEG;IAEH,WAAW,GAA+B,IAAW,CAAC;AAEtD;;AAEG;IAEH,iBAAiB,GAAkC,IAAW,CAAC;AAE/D;;AAEG;IAEH,eAAe,GAA+B,IAAW,CAAC;AAE1D;;AAEG;IAEH,kBAAkB,GAA6C,IAAW,CAAC;AAE3E;;AAEG;IAEH,QAAQ,GAA6B,IAAW,CAAC;AAEjD;;AAEG;IAEH,QAAQ,GAAY,KAAK,CAAC;AAE1B;;AAEG;IAEH,SAAS,GAAW,IAAW,CAAC;IAGhC,eAAe,GAAW,IAAW,CAAC;IAGtC,cAAc,GAAW,IAAW,CAAC;AAGrC,IAAA,IAAI,GAAoB;AACtB,QAAA,WAAW,EAAE,kBAAkB;AAC/B,QAAA,EAAE,EAAE,IAAI;AACR,QAAA,eAAe,EAAE,kBAAkB;KACjB,CAAC;AAErB;;AAEG;IAEH,IAAI,GAAyB,OAAO,CAAC;IAGrC,kBAAkB,GAAW,CAAC,CAAC;IAG/B,cAAc,GAAY,KAAK,CAAC;IAGhC,uBAAuB,GAAqB,IAAW,CAAC;AAExD;;AAEG;;AAGH,IAAA,MAAM,GAAG,IAAI,YAAY,EAA0B,CAAC;AAEpD;;AAEG;AACM,IAAA,QAAQ,GAAG,IAAI,eAAe,CAAyB,IAAW,CAAC,CAAC;AAE7E;;AAEG;AACM,IAAA,cAAc,GAAG,IAAI,eAAe,CAAyB,IAAW,CAAC,CAAC;AAEnF;;AAEG;IACM,eAAe,GAAgE,IAAI,CAAC,QAAQ,CAAC,IAAI,CACxGkB,KAAG,CAAC,OAAO,IAAG;QACZ,IAAI,cAAc,GAAoD,IAAW,CAAC;AAElF,QAAA,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE;YACrB,cAAc,GAAG,EAAE,CAAC;AAEpB,YAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC5B,gBAAA,IAAI,SAAS,IAAI,MAAM,EAAE;AACvB,oBAAA,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,OAAO,EAAE;wBACxC,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;qBACjG;iBACF;AAAM,qBAAA,IAAI,aAAa,IAAI,MAAM,EAAE;oBAClC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;iBACvF;aACF;SACF;AAED,QAAA,OAAO,cAAc,CAAC;KACvB,CAAC,CACH,CAAC;AAEF;;AAEG;IACM,kBAAkB,GAA2C,IAAI,CAAC,cAAc,CAAC,IAAI,CAC5FA,KAAG,CAAC,MAAM,IAAG;QACX,MAAM,iBAAiB,GAAG,EAAS,CAAC;AAEpC,QAAA,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE;AACpB,YAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;gBAC1B,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;aACzC;SACF;AAED,QAAA,OAAO,iBAAiB,CAAC;KAC1B,CAAC,CACH,CAAC;AAEF;;AAEG;IACM,eAAe,GAAuB,IAAI,CAAC,cAAc,CAAC,IAAI,CACrEA,KAAG,CAAC,MAAM,IAAI,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,CACnC,CAAC;AAEF;;AAEG;AACM,IAAA,aAAa,CAAC;AAEvB;;AAEG;IACH,MAAM,GAAG,KAAK,CAAC;AAEf;;AAEG;IACH,MAAM,GAAG,KAAK,CAAC;AAEf;;AAEG;IACH,cAAc,GAAW,IAAW,CAAC;IAErC,WAAW,GAAW,CAAC,CAAC;AAExB;;;AAGG;IACK,MAAM,GAA2B,IAAW,CAAC;AAErD;;;;;AAKG;IACK,OAAO,mBAAmB,CAAC,OAA+B,EAAA;QAChE,MAAM,gBAAgB,GAA2B,EAAE,CAAC;AAEpD,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC5B,YAAA,IAAI,CAAC,YAAY,IAAI,MAAM,MAAM,SAAS,IAAI,MAAM,CAAC,EAAE;gBACrD,MAAM,YAAY,GAA6B,EAAE,CAAC;gBAClD,KAAK,MAAM,WAAW,KAAK,MAAM,CAAC,OAAO,IAAI,EAAE,GAAG;oBAChD,IAAI,CAAC,CAAC,WAAW,CAAC,KAAK,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,KAAK,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE;AAC7E,wBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;AAChE,wBAAA,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;AAC7G,wBAAA,eAAe,CAAC,IAAI,GAAG,OAAO,CAAC;AAE/B,wBAAA,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;qBACpC;iBACF;AAED,gBAAA,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE;AACzB,oBAAA,gBAAgB,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;iBAChG;aACF;AAAM,iBAAA,IAAI,CAAC,OAAO,IAAI,MAAM,MAAM,OAAO,IAAI,MAAM,CAAC,EAAE;gBACrD,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE;AAC9D,oBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AACtD,oBAAA,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;AAC9F,oBAAA,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC;AAE3B,oBAAA,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBACnC;aACF;SACF;AAED,QAAA,OAAO,gBAAgB,CAAC;KACzB;AAED;;;;;;;AAOG;AACK,IAAA,OAAO,qBAAqB,CAAC,KAAa,EAAE,WAAuC,EAAA;QACzF,IAAI,CAAC,WAAW,EAAE;YAChB,WAAW,GAAG,EAAE,CAAC;SAClB;AAED,QAAA,IAAI,CAAC,CAAC,KAAK,EAAE;AACX,YAAA,MAAM,aAAa,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;YAE/C,IAAI,CAAC,CAAC,aAAa,IAAI,aAAuB,IAAI,CAAC,EAAE;gBACnD,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAE3C,IAAI,CAAC,WAAW,EAAE;AAChB,oBAAA,WAAW,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;iBAC9B;aACF;iBAAM;AACL,gBAAA,WAAW,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;aAClC;SACF;AAED,QAAA,OAAO,WAAW,CAAC;KACpB;AAED;;AAEG;AACH,IAAA,QAAQ,GAAyB,MAAK,GAAG,CAAC;AAE1C;;AAEG;AACH,IAAA,SAAS,GAAc,MAAK,GAAG,CAAC;AAEhC;;;;AAIG;IACH,WAAoB,CAAA,QAAmB,EAAU,iBAAoC,EAAA;QAAjE,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAAU,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACnF,MAAM,UAAU,GAAG,gEAAgE,CAAC;QACpF,IAAI,MAAM,GAAG,EAAE,CAAC;AAEhB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAC3B,YAAA,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;SAC5E;AAED,QAAA,IAAI,CAAC,aAAa,GAAG,CAAA,YAAA,EAAe,MAAM,CAAA,EAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;KACrE;AAED;;;AAGG;AACH,IAAA,UAAU,CAAC,KAA6B,EAAA;AACtC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACvC;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAED;;;AAGG;AACH,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC3B,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACvC;AAED;;AAEG;IAEH,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B;KACF;AAED;;;AAGG;AAEH,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC5B,QAAA,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC9E,YAAA,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;YAEtB,IAAI,oBAAoB,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACjD,KAAK,CAAC,cAAc,EAAE,CAAC;aACxB;SACF;KACF;AAED;;;AAGG;AAEH,IAAA,OAAO,CAAC,KAAoB,EAAA;AAC1B,QAAA,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC9E,YAAA,MAAM,EAAC,GAAG,EAAC,GAAG,KAAK,CAAC;YAEpB,IAAI,oBAAoB,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACjD,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;aACxB;iBAAM;AACL,gBAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,oBAAA,IAAI,GAAG,KAAK,KAAK,EAAE;wBACjB,IAAI,CAAC,gBAAgB,EAAE,CAAC;qBACzB;iBACF;aACF;SACF;KACF;AAED;;;AAGG;AAEH,IAAA,OAAO,CAAC,KAAiB,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,MAAM,EAAC,KAAK,EAAE,KAAK,EAAC,GAAG,KAAK,CAAC;YAE7B,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;AAC1B,gBAAA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;gBAChG,MAAM,cAAc,GAAG,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC;gBACvD,MAAM,cAAc,GAAG,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,MAAM,CAAC;gBACvD,MAAM,WAAW,GAAG,EAAE,cAAc,IAAI,cAAc,CAAC,CAAC;gBAExD,IAAI,WAAW,EAAE;oBACf,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxB,oBAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;iBAC9C;aACF;SACF;KACF;AAED;;;AAGG;AACH,IAAA,aAAa,CAAC,KAAY,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,KAAK,CAAC,wBAAwB,EAAE,CAAC;YAEjC,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxB,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SACxC;KACF;AAED;;;;AAIG;IACH,6BAA6B,CAAC,MAAyB,EAAE,KAAa,EAAA;AACpE,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,MAAM,CAAC,KAAK,EAAE,CAAC;KAChB;AAED;;;;AAIG;IACH,4BAA4B,CAAC,MAAyB,EAAE,KAAa,EAAA;AACnE,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,EAAE;AACjC,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,MAAM,CAAC,KAAK,EAAE,CAAC;SAChB;KACF;AAED;;;;AAIG;IACH,yBAAyB,CAAC,KAAsB,EAAE,QAAiB,EAAA;QACjE,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;SAC3C;KACF;AAED;;;AAGG;AACH,IAAA,eAAe,CAAC,KAAiB,EAAA;QAC/B,KAAK,CAAC,wBAAwB,EAAE,CAAC;AAEjC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACpB;KACF;AAED;;AAEG;IACH,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAW,CAAC;KACnC;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,KAAqB,EAAA;AACpC,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;YAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC7B,YAAA,IAAI,CAAC,cAAc,GAAG,IAAW,CAAC;YAElC,UAAU,CAAC,MAAK;AACd,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACpC,gBAAA,IAAI,CAAC,CAAC,MAAM,EAAE;oBACZ,MAAM,CAAC,KAAK,EAAE,CAAC;iBAChB;AACH,aAAC,CAAC,CAAC;AAEH;;;;AAIG;AACH,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC5E,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC7E,UAAU,CAAC,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;SAClD;KACF;AAED;;;AAGG;AACH,IAAA,eAAe,CAAC,KAAqB,EAAA;AACnC,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,EAAE;AAC7B,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SACrB;KACF;AAED;;;;AAIG;AACK,IAAA,6BAA6B,CAAC,KAAsB,EAAA;AAC1D,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;SACtB;aAAM;YACL,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,YAAA,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC;AAE/D,YAAA,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE;AACnB,gBAAA,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;aACjC;iBAAM;AACL,gBAAA,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACvB;AAED,YAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;SACxB;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;AAED;;;AAGG;IACK,uBAAuB,GAAA;AAC7B,QAAA,MAAM,EAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAC,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACnF,MAAM,EAAC,YAAY,EAAC,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;QAC1D,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAC1C,QAAA,MAAM,oBAAoB,GAAG,MAAM,CAAC,WAAW,GAAG,0BAA0B,CAAC;QAC7E,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,QAAA,MAAM,gBAAgB,GAAG,YAAY,GAAG,oBAAoB,CAAC,WAAW,CAAC;QACzE,IAAI,eAAuB,EAAE,WAAmB,CAAC;AAEjD,QAAA,IAAI,oBAAoB,GAAG,gBAAgB,EAAE;YAC3C,eAAe,GAAG,UAAU,CAAC;YAC7B,WAAW,GAAG,GAAG,0BAA0B,GAAG,oBAAoB,CAAC,WAAW,IAAI,CAAC;SACpF;AAAM,aAAA,IAAI,iBAAiB,GAAG,gBAAgB,EAAE;YAC/C,eAAe,GAAG,aAAa,CAAC;AAChC,YAAA,WAAW,GAAG,CAAG,EAAA,GAAG,GAAG,gBAAgB,IAAI,CAAC;SAC7C;aAAM;AACL,YAAA,IAAI,YAAY,GAAG,MAAM,CAAC,WAAW,EAAE;gBACrC,WAAW,GAAG,KAAK,CAAC;aACrB;iBAAM;AACL,gBAAA,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,GAAG,YAAY,CAAC;gBACzD,WAAW,GAAG,GAAG,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC,CAAA,EAAA,CAAI,CAAC;aACjD;YAED,eAAe,GAAG,UAAU,CAAC;SAC9B;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,kBAAkB,EAAE,eAAe,CAAC,CAAC;AAChG,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA,EAAA,CAAI,CAAC,CAAC;AAChF,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;KAChF;AAED;;;AAGG;IACK,qBAAqB,GAAA;AAC3B,QAAA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;AAC/E,QAAA,MAAM,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;AAE3B,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA,EAAA,CAAI,CAAC,CAAC;KACnF;AAED;;;AAGG;AACK,IAAA,YAAY,CAAC,GAAW,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,SAAS,EAAE;AAC5C,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAEhD,gBAAA,IAAI,cAAc,KAAK,IAAI,EAAE;oBAC3B,cAAc,CAAC,KAAK,EAAE,CAAC;iBACxB;aACF;iBAAM,IAAI,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,WAAW,EAAE;AACtD,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AAExC,gBAAA,IAAI,UAAU,KAAK,IAAI,EAAE;oBACvB,UAAU,CAAC,KAAK,EAAE,CAAC;iBACpB;aACF;SACF;KACF;AAED;;;;;AAKG;IACK,aAAa,GAAA;QACnB,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;AAEvD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AAC9E,QAAA,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrD,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;AAE7C,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACpB,gBAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;gBACxB,MAAM;aACP;SACF;AAED,QAAA,OAAO,IAAI,CAAC,cAAc,KAAK,IAAI;AACjC,cAAE,IAAW;cACX,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC;KACrD;AAED;;;;;AAKG;IACK,iBAAiB,GAAA;QACvB,IAAI,cAAc,GAAsB,IAAW,CAAC;AAEpD,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE;YAChC,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;AAEvD,YAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBACjD,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;AAE7C,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACpB,oBAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;oBACxB,cAAc,GAAG,MAAM,CAAC;oBACxB,MAAM;iBACP;aACF;SACF;AAED,QAAA,OAAO,cAAc,CAAC;KACvB;uGAhqBU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EARpB,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACnD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,EA6Fa,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,WAAW,ECnJ3B,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,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,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,unaA2NA,EDzLc,MAAA,EAAA,CAAA,6yEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACV,OAAO,CAAC,WAAW,EAAE;gBACnB,UAAU,CAAC,eAAe,EAAE;oBAC1B,KAAK,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC/C,oBAAA,OAAO,CAAC,YAAY,EAClB,KAAK,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;iBACjD,CAAC;gBACF,UAAU,CAAC,eAAe,EAAE;oBAC1B,KAAK,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC7C,oBAAA,OAAO,CAAC,YAAY,EAClB,KAAK,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;iBACnD,CAAC;aACH,CAAC;AACH,SAAA,EAAA,CAAA,CAAA;;2FASU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBA1BhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAGrB,UAAA,EAAA;wBACV,OAAO,CAAC,WAAW,EAAE;4BACnB,UAAU,CAAC,eAAe,EAAE;gCAC1B,KAAK,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC/C,gCAAA,OAAO,CAAC,YAAY,EAClB,KAAK,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;6BACjD,CAAC;4BACF,UAAU,CAAC,eAAe,EAAE;gCAC1B,KAAK,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC7C,gCAAA,OAAO,CAAC,YAAY,EAClB,KAAK,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;6BACnD,CAAC;yBACH,CAAC;qBACH,EACU,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,0BAA0B,CAAC;AACnD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,unaAAA,EAAA,MAAA,EAAA,CAAA,6yEAAA,CAAA,EAAA,CAAA;8GASG,KAAK,EAAA,CAAA;sBADR,KAAK;gBA6BF,OAAO,EAAA,CAAA;sBADV,KAAK;gBAkCN,WAAW,EAAA,CAAA;sBADV,SAAS;uBAAC,aAAa,CAAA;gBAOxB,iBAAiB,EAAA,CAAA;sBADhB,SAAS;uBAAC,mBAAmB,CAAA;gBAO9B,eAAe,EAAA,CAAA;sBADd,SAAS;uBAAC,iBAAiB,CAAA;gBAO5B,kBAAkB,EAAA,CAAA;sBADjB,YAAY;uBAAC,mBAAmB,CAAA;gBAOjC,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,WAAW,CAAA;gBAOzB,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAON,SAAS,EAAA,CAAA;sBADR,KAAK;gBAIN,eAAe,EAAA,CAAA;sBADd,KAAK;gBAIN,cAAc,EAAA,CAAA;sBADb,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;gBAWN,IAAI,EAAA,CAAA;sBADH,KAAK;gBAIN,kBAAkB,EAAA,CAAA;sBADjB,KAAK;gBAIN,cAAc,EAAA,CAAA;sBADb,KAAK;gBAIN,uBAAuB,EAAA,CAAA;sBADtB,KAAK;;;QAQN,MAAM,EAAA,CAAA;sBAFL,MAAM;gBAgOP,cAAc,EAAA,CAAA;sBADb,YAAY;uBAAC,eAAe,CAAA;gBAa7B,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAgB1C,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAsBxC,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MEvc7B,yBAAyB,CAAA;uGAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,EAJrB,YAAA,EAAA,CAAA,oBAAoB,CACzB,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAEnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAH1B,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAGX,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,oBAAoB,CAAC;oBACpC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAChC,iBAAA,CAAA;;;ACND;;AAEG;MAIU,kBAAkB,CAAA;AAgFT,IAAA,WAAA,CAAA;AA9EpB;;;;AAIG;IACK,OAAgB,YAAY,GAAG;AACrC,QAAA,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW;QACjD,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK;KAC7D,CAAC;AAEF;;;AAGG;IACK,OAAgB,UAAU,GAAG;AACnC,QAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAChD,QAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAChD,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;KAC7B,CAAC;AAEF;;;AAGG;IACK,OAAgB,cAAc,GAAG;AACvC,QAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAChD,QAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAChD,QAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAChD,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;KAClC,CAAC;AAEF;;AAEG;IAEH,UAAU,GAAkE,IAAW,CAAC;AAExF;;AAEG;IAEH,WAAW,GAAG,KAAK,CAAC;AAEpB;;;;AAIG;IACK,OAAO,YAAY,CAAC,GAAW,EAAA;AACrC,QAAA,OAAO,IAAI,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAChD;IAEO,OAAO,UAAU,CAAC,GAAW,EAAA;AACnC,QAAA,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC3C;IAEO,OAAO,cAAc,CAAC,KAAa,EAAA;AACzC,QAAA,OAAO,IAAI,MAAM,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACpE;AAED;;;;;AAKG;IACK,OAAO,UAAU,CAAC,GAAW,EAAA;QACnC,OAAO,kBAAkB,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KAClE;IAEO,OAAO,aAAa,CAAC,GAAW,EAAA;QACtC,OAAO,kBAAkB,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACtE;AAED;;;AAGG;AACH,IAAA,WAAA,CAAoB,WAAyC,EAAA;QAAzC,IAAW,CAAA,WAAA,GAAX,WAAW,CAA8B;KAAK;AAElE;;;AAGG;AAEH,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,cAAc,GAAG,IAAI,CAAC;AAC1B,YAAA,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;YAEtB,IAAI,kBAAkB,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACjD,cAAc,GAAG,KAAK,CAAC;aACxB;iBAAM,IAAI,IAAI,CAAC,WAAW,IAAI,GAAG,KAAK,GAAG,EAAE;gBAC1C,cAAc,GAAG,KAAK,CAAC;aACxB;AAAM,iBAAA,IAAI,IAAI,CAAC,UAAU,KAAK,OAAO,EAAE;gBACtC,cAAc,GAAG,CAAC,kBAAkB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;aACtD;AAAM,iBAAA,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;AACxC,gBAAA,cAAc,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;aAC1E;AAAM,iBAAA,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE;gBACvC,cAAc,GAAG,CAAC,kBAAkB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;aACtD;AAAM,iBAAA,IAAI,IAAI,CAAC,UAAU,KAAK,WAAW,EAAE;gBAC1C,cAAc,GAAG,CAAC,kBAAkB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;aACzD;AAAM,iBAAA,IAAI,IAAI,CAAC,UAAU,KAAK,cAAc,EAAE;gBAC7C,MAAM,SAAS,GAAG,kBAAkB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACrD,MAAM,OAAO,GAAG,kBAAkB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAEnD,gBAAA,cAAc,GAAG,EAAE,SAAS,IAAI,OAAO,CAAC,CAAC;aAC1C;YAED,IAAI,cAAc,EAAE;gBAClB,KAAK,CAAC,cAAc,EAAE,CAAC;aACxB;SACF;KACF;AAED;;;AAGG;AAEH,IAAA,OAAO,CAAC,KAAqB,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,aAAa,GAAiB,IAAW,CAAC;AAE9C,YAAA,IAAI,KAAK,CAAC,aAAa,EAAE;AACvB,gBAAA,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;aACrC;AAAM,iBAAA,IAAI,eAAe,IAAI,MAAM,EAAE;gBACpC,aAAa,GAAI,MAAc,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAC/D;YAED,IAAI,aAAa,EAAE;gBACjB,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAEjD,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,QAAQ,EAAE,EAAE;AACxC,oBAAA,MAAM,OAAO,GAAG,IAAI,KAAK,GAAG,CAAC;oBAC7B,MAAM,OAAO,GAAG,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBACpD,MAAM,SAAS,GAAG,kBAAkB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;oBACxD,MAAM,OAAO,GAAG,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACpD,oBAAA,MAAM,cAAc,GAAG,OAAO,IAAI,OAAO,CAAC;oBAE1C,MAAM,WAAW,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW;AAC9C,yBAAC,IAAI,CAAC,UAAU,KAAK,OAAO,IAAI,OAAO,CAAC;AACxC,yBAAC,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,SAAS,CAAC;AAC5C,yBAAC,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,OAAO,CAAC;yBACxC,IAAI,CAAC,UAAU,KAAK,cAAc,IAAI,cAAc,CAAC,CAAC;oBAEzD,IAAI,CAAC,WAAW,EAAE;wBAChB,KAAK,CAAC,cAAc,EAAE,CAAC;qBACxB;iBACF;aACF;SACF;KACF;IAGD,MAAM,GAAA;QACJ,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;YAC7G,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE,CAAC;SAC3C;KACF;uGAjKU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,CAAA,mBAAA,EAAA,YAAA,CAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAChC,iBAAA,CAAA;+EAsCC,UAAU,EAAA,CAAA;sBADT,KAAK;uBAAC,mBAAmB,CAAA;gBAO1B,WAAW,EAAA,CAAA;sBADV,KAAK;gBA6CN,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAoCnC,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAoCjC,MAAM,EAAA,CAAA;sBADL,YAAY;uBAAC,MAAM,CAAA;;;MC3JT,uBAAuB,CAAA;uGAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,EAJnB,YAAA,EAAA,CAAA,kBAAkB,CACvB,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAEjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,YAHxB,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAGX,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,kBAAkB,CAAC;oBAClC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,kBAAkB,CAAC;AAC9B,iBAAA,CAAA;;;ACJD;;AAEG;MAIU,mBAAmB,CAAA;AAE9B;;;AAGG;AACK,IAAA,OAAgB,aAAa,GAAG,gEAAgE,CAAC;AAEzG;;;AAGG;AACc,IAAA,cAAc,GAAG,IAAI,eAAe,CAAsB,EAAE,CAAC,CAAC;AAE/E;;;;AAIG;IACK,gBAAgB,GAAG,IAAI,CAAC;AAEhC;;;AAGG;AACK,IAAA,OAAO,UAAU,GAAA;QACvB,IAAI,MAAM,GAAG,EAAE,CAAC;AAEhB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YAC3B,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;SAC5F;AAED,QAAA,OAAO,MAAM,CAAC;KACf;AAED;;AAEG;AACH,IAAA,WAAA,GAAA,GAAiB;AAEjB;;;AAGG;AACH,IAAA,GAAG,CAAC,YAA0B,EAAA;AAC5B,QAAA,YAAY,CAAC,EAAE,GAAG,mBAAmB,CAAC,UAAU,EAAE,CAAC;QAEnD,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;AACrD,QAAA,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAEjC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAExC,QAAA,UAAU,CACR,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAY,CAAC,EACxD,IAAI,CAAC,gBAAgB,CACtB,CAAC;KACH;AAED;;;AAGG;AACH,IAAA,kBAAkB,CAAC,EAAU,EAAA;QAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;AACrD,QAAA,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,YAAY,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAEnF,QAAA,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE;AACnB,YAAA,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;SACrC;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACzC;AAED;;AAEG;IACH,gBAAgB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KAC3C;AAED;;;AAGG;AACH,IAAA,mBAAmB,CAAC,YAAoB,EAAA;AACtC,QAAA,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC;KACtC;uGAtFU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA;;2FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACMD;;AAEG;MA6CU,qBAAqB,CAAA;AAOtB,IAAA,OAAA,CAAA;AALV;;;AAGG;AACH,IAAA,WAAA,CACU,OAA4B,EAAA;QAA5B,IAAO,CAAA,OAAA,GAAP,OAAO,CAAqB;AAEpC,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;KAClD;AAGD,IAAA,IAAI,GAAqB;AACvB,QAAA,OAAO,EAAE,SAAS;KACC,CAAC;AAEtB;;AAEG;AACM,IAAA,cAAc,CAAkC;AAEzD;;AAEG;AACM,IAAA,gBAAgB,GAAG;AAC1B,QAAA,SAAS,EAAE,UAAU;AACrB,QAAA,MAAM,EAAE,WAAW;AACnB,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,MAAM,EAAE,WAAW;KACpB,CAAC;AAEF;;AAEG;AACM,IAAA,eAAe,GAAG;AACzB,QAAA,SAAS,EAAE,iBAAiB;AAC5B,QAAA,MAAM,EAAE,uBAAuB;AAC/B,QAAA,OAAO,EAAE,iBAAiB;AAC1B,QAAA,MAAM,EAAE,gBAAgB;KACzB,CAAC;AAEF;;;AAGG;AACH,IAAA,kBAAkB,CAAC,EAAU,EAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;KACrC;uGAhDU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9DlC,+wDAuCA,EDjBc,MAAA,EAAA,CAAA,kJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,UAAA,EAAA;;YAEV,OAAO,CAAC,MAAM,EAAE;gBACd,UAAU,CAAC,QAAQ,EAAE;;AAEnB,oBAAA,KAAK,CACH,QAAQ,EACR,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,CAAC,EAC5B,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnB;iBACF,CAAC;aACH,CAAC;YACF,OAAO,CAAC,OAAO,EAAE;;gBAEf,UAAU,CAAC,QAAQ,EAAE;oBACnB,KAAK,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC9C,oBAAA,OAAO,CAAC,qCAAqC,EAC3C,KAAK,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;iBAChD,CAAC;gBACF,UAAU,CAAC,QAAQ,EAAE;AACnB,oBAAA,KAAK,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACzD,oBAAA,OAAO,CAAC,qCAAqC,EAC3C,KAAK,CAAC;AACJ,wBAAA,SAAS,EAAE,YAAY;AACvB,wBAAA,OAAO,EAAE,CAAC;AACV,wBAAA,MAAM,EAAE,KAAK;AACb,wBAAA,UAAU,EAAE,KAAK;AACjB,wBAAA,SAAS,EAAE,KAAK;AAChB,wBAAA,WAAW,EAAE,KAAK;AAClB,wBAAA,YAAY,EAAE,KAAK;AACnB,wBAAA,WAAW,EAAE,KAAK;AAClB,wBAAA,UAAU,EAAE,KAAK;AACjB,wBAAA,YAAY,EAAE,KAAK;AACnB,wBAAA,aAAa,EAAE,KAAK;AACrB,qBAAA,CAAC,CACH;iBACF,CAAC;aACH,CAAC;AACH,SAAA,EAAA,CAAA,CAAA;;2FAEU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBA5CjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAGrB,UAAA,EAAA;;wBAEV,OAAO,CAAC,MAAM,EAAE;4BACd,UAAU,CAAC,QAAQ,EAAE;;AAEnB,gCAAA,KAAK,CACH,QAAQ,EACR,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,CAAC,EAC5B,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnB;6BACF,CAAC;yBACH,CAAC;wBACF,OAAO,CAAC,OAAO,EAAE;;4BAEf,UAAU,CAAC,QAAQ,EAAE;gCACnB,KAAK,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC9C,gCAAA,OAAO,CAAC,qCAAqC,EAC3C,KAAK,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;6BAChD,CAAC;4BACF,UAAU,CAAC,QAAQ,EAAE;AACnB,gCAAA,KAAK,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACzD,gCAAA,OAAO,CAAC,qCAAqC,EAC3C,KAAK,CAAC;AACJ,oCAAA,SAAS,EAAE,YAAY;AACvB,oCAAA,OAAO,EAAE,CAAC;AACV,oCAAA,MAAM,EAAE,KAAK;AACb,oCAAA,UAAU,EAAE,KAAK;AACjB,oCAAA,SAAS,EAAE,KAAK;AAChB,oCAAA,WAAW,EAAE,KAAK;AAClB,oCAAA,YAAY,EAAE,KAAK;AACnB,oCAAA,WAAW,EAAE,KAAK;AAClB,oCAAA,UAAU,EAAE,KAAK;AACjB,oCAAA,YAAY,EAAE,KAAK;AACnB,oCAAA,aAAa,EAAE,KAAK;AACrB,iCAAA,CAAC,CACH;6BACF,CAAC;yBACH,CAAC;AACH,qBAAA,EAAA,QAAA,EAAA,+wDAAA,EAAA,MAAA,EAAA,CAAA,kJAAA,CAAA,EAAA,CAAA;qFAeD,IAAI,EAAA,CAAA;sBADH,KAAK;;;MEjEK,0BAA0B,CAAA;uGAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,EAJtB,YAAA,EAAA,CAAA,qBAAqB,CAC1B,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,qBAAqB,CAAA,EAAA,CAAA,CAAA;AAEpB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,YAH3B,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAGX,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,qBAAqB,CAAC;oBACrC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,qBAAqB,CAAC;AACjC,iBAAA,CAAA;;;ACiFD;;AAEG;MAaU,mBAAmB,CAAA;AAwWV,IAAA,iBAAA,CAAA;AAtWpB;;;AAGG;IACH,IACI,KAAK,CAAC,KAAiC,EAAA;QACzC,IAAI,KAAK,EAAE,KAAK,IAAI,KAAK,EAAE,GAAG,EAAE;YAC9B,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACvC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAEnC,YAAA,IAAI,SAAS,KAAK,OAAO,EAAE;AACzB,gBAAA,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;aAC5E;AAAM,iBAAA,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;AACjE,gBAAA,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;aAChG;AAED,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACjC;aAAM;AACL,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAW,CAAC,CAAC;YACtC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACjD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SAChD;AAED,QAAA,IAAI,CAAC,MAAM,GAAG,KAAY,CAAC;KAC5B;AAED;;AAEG;IACH,IACI,QAAQ,CAAC,QAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;KAC3B;AAED;;;AAGG;IACH,IACI,SAAS,CAAC,SAAuC,EAAA;AACnD,QAAA,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,CAAC,wBAAwB,EAAE,CAAC;KACjC;AAED;;AAEG;IAEH,cAAc,GAAG,IAAW,CAAC;AAE7B;;AAEG;IAEH,uBAAuB,GAAG,EAAE,CAAC;AAE7B;;AAEG;IAEH,SAAS,GAAG,MAAM,CAAC;AAEnB;;;AAGG;IAEH,UAAU,GAAG,SAAS,CAAC;AAEvB;;AAEG;IAEH,aAAa,GAAG,IAAI,CAAC;AAGrB,IAAA,IAAI,GAAmB;AACrB,QAAA,YAAY,EAAE,8BAA8B;AAC5C,QAAA,UAAU,EAAE,eAAe;AAC3B,QAAA,UAAU,EAAE,eAAe;AAC3B,QAAA,WAAW,EAAE,gBAAgB;AAC7B,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,GAAG,EAAE,KAAK;AACV,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,SAAS,EAAE,WAAW;AACtB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,WAAW,EAAE,IAAI;AACjB,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,cAAc,EAAE,kBAAkB;AAClC,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,kBAAkB,EAAE,sCAAsC;AAC1D,QAAA,cAAc,EAAE,kBAAkB;AAClC,QAAA,QAAQ,EAAE,WAAW;KACJ,CAAC;AAEpB;;AAEG;AAEH,IAAA,YAAY,GAAG,IAAI,YAAY,EAA8B,CAAC;AAE9D;;AAEG;IAEH,eAAe,GAAqB,IAAW,CAAC;AAEhD;;AAEG;AACM,IAAA,WAAW,CAAW;AAE/B;;AAEG;AACM,IAAA,cAAc,GAAG,IAAI,eAAe,CAA6B,IAAW,CAAC,CAAC;AAEvF;;AAEG;AACM,IAAA,uBAAuB,GAAG,IAAI,eAAe,CAA6B,IAAW,CAAC,CAAC;AAEhG;;AAEG;AACM,IAAA,cAAc,GAAG,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC;AAEjD;;AAEG;AACM,IAAA,aAAa,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AAEnD;;AAEG;IACM,aAAa,GAAuB,IAAI,CAAC,cAAc,CAAC,IAAI,CACnEkB,KAAG,CAAC,KAAK,IAAG;AACV,QAAA,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAClD,KAAC,CAAC,EACF,WAAW,EAAE,CACd,CAAC;AAEF;;AAEG;IACM,aAAa,GAAuB,IAAI,CAAC,cAAc,CAAC,IAAI,CACnEA,KAAG,CAAC,KAAK,IAAG;AACV,QAAA,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;AACvD,KAAC,CAAC,EACF,WAAW,EAAE,CACd,CAAC;AAEF;;AAEG;AACM,IAAA,kBAAkB,GAAwB,IAAI,CAAC,aAAa,CAAC,IAAI,CACxEE,gBAAc,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,aAAa,CAAC,EAChEF,KAAG,CAAC,CAAC,CAAC,YAAY,EAAE,iBAAiB,EAAE,YAAY,CAAC,KAAI;QACtD,IAAI,SAAS,GAAG,KAAK,CAAC;AAEtB,QAAA,IAAI,YAAY,GAAG,CAAC,IAAI,iBAAiB,EAAE;YACzC,MAAM,iBAAiB,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;AAC1D,YAAA,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACjD,YAAA,MAAM,iBAAiB,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;AACpD,YAAA,MAAM,eAAe,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;AAEhD,YAAA,SAAS,GAAG,gBAAgB,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;AAChE,gBAAA,gBAAgB,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;SACxD;AAED,QAAA,OAAO,SAAS,CAAC;KAClB,CAAC,CACH,CAAC;AAEF;;AAEG;AACM,IAAA,kBAAkB,GAAwB,IAAI,CAAC,aAAa,CAAC,IAAI,CACxEE,gBAAc,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,aAAa,CAAC,EAChEF,KAAG,CAAC,CAAC,CAAC,YAAY,EAAE,iBAAiB,EAAE,YAAY,CAAC,KAAI;QACtD,IAAI,SAAS,GAAG,KAAK,CAAC;AAEtB,QAAA,IAAI,YAAY,GAAG,CAAC,IAAI,iBAAiB,EAAE;YACzC,MAAM,iBAAiB,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;AAC1D,YAAA,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACjD,YAAA,MAAM,iBAAiB,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;AACpD,YAAA,MAAM,eAAe,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;AAEhD,YAAA,SAAS,GAAG,gBAAgB,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;AAChE,gBAAA,gBAAgB,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;SACxD;AAED,QAAA,OAAO,SAAS,CAAC;KAClB,CAAC,CACH,CAAC;AAEF;;AAEG;AACM,IAAA,eAAe,GAA8B,IAAI,CAAC,uBAAuB,CAAC,IAAI,CACrFA,KAAG,CAAC,iBAAiB,IAAI,mBAAmB,CAAC,iBAAiB,CAC5D,iBAAiB,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,IAAI,EAC/C,iBAAiB,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,IAAI,EAC7C,IAAI,CAAC,WAAW,CAAC,IAAI,CACtB,CAAC,CACH,CAAC;AAEF;;AAEG;IACM,UAAU,GAAgC,aAAa,CAAC;AAC/D,QAAA,IAAI,CAAC,cAAc;AACnB,QAAA,IAAI,CAAC,aAAa;AAClB,QAAA,IAAI,CAAC,uBAAuB;AAC7B,KAAA,CAAC,CAAC,IAAI,CACLA,KAAG,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,iBAAiB,CAAC,KAAI;QACvC,IAAI,SAAS,GAAoB,IAAW,CAAC;QAE7C,IAAI,iBAAiB,EAAE;YACrB,SAAS,GAAG,mBAAmB,CAAC,aAAa,CAC3C,KAAK,EACL,IAAI,EACJ;gBACE,KAAK,EAAE,iBAAiB,CAAC,KAAK;gBAC9B,GAAG,EAAE,iBAAiB,CAAC,GAAG;AAC3B,aAAA,CACF,CAAC;SACH;AAED,QAAA,OAAO,SAAS,CAAC;KAClB,CAAC,CACH,CAAC;AAEF;;;AAGG;IACK,MAAM,GAAG,IAAI,CAAC;AAEtB;;;AAGG;IACK,SAAS,GAAG,KAAK,CAAC;AAE1B;;;;;AAKG;AACK,IAAA,OAAO,iBAAiB,CAAC,OAAe,EAAE,OAAe,EAAE,WAAmB,EAAA;QACpF,IAAI,KAAa,EAAE,GAAW,CAAC;AAC/B,QAAA,IAAI,CAAC,OAAO,IAAI,OAAO,EAAE;AACvB,YAAA,KAAK,GAAG,OAAO,GAAG,EAAE,CAAC;YACrB,GAAG,GAAG,OAAO,CAAC;SACf;AAAM,aAAA,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE;YAC9B,KAAK,GAAG,OAAO,CAAC;AAChB,YAAA,GAAG,GAAG,OAAO,GAAG,EAAE,CAAC;SACpB;AAAM,aAAA,IAAI,OAAO,IAAI,OAAO,EAAE;YAC7B,KAAK,GAAG,OAAO,CAAC;YAChB,GAAG,GAAG,OAAO,CAAC;SACf;aAAM;AACL,YAAA,KAAK,GAAG,WAAW,GAAG,GAAG,CAAC;AAC1B,YAAA,GAAG,GAAG,WAAW,GAAG,EAAE,CAAC;SACxB;QAED,MAAM,KAAK,GAAkB,EAAE,CAAC;AAChC,QAAA,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE;AACjC,YAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACf;AAED,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;;;;;;AAOG;AACK,IAAA,OAAO,aAAa,CAAC,KAAa,EAAE,IAAY,EAAE,iBAA6C,EAAA;QACrG,MAAM,SAAS,GAAoB,EAAE,CAAC;QACtC,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAC9C,QAAA,MAAM,aAAa,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;AAC7E,QAAA,IAAI,UAAU,GAAG,GAAG,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAEpE,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1B,YAAA,MAAM,YAAY,GAAG,GAAG,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACpE,YAAA,MAAM,cAAc,GAAG,GAAG,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAE1E,SAAS,CAAC,IAAI,CAAC;AACb,gBAAA,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC;AACzB,gBAAA,IAAI,EAAE,YAAY,CAAC,WAAW,EAAE;AAChC,gBAAA,UAAU,EAAE,CAAC,gBAAgB,CAAC,YAAY,EAAE,aAAa,CAAC;AACxD,oBAAA,gBAAgB,CAAC,cAAc,EAAE,aAAa,CAAC;AAC/C,oBAAA,gBAAgB,CAAC,YAAY,EAAE,iBAAiB,CAAC;AACjD,oBAAA,gBAAgB,CAAC,cAAc,EAAE,iBAAiB,CAAC;AACrD,gBAAA,KAAK,EAAE,EAAE;AACV,aAAA,CAAC,CAAC;AAEH,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1B,gBAAA,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC9C,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;aAC3C;SACF;AAGD,QAAA,OAAO,SAAS,CAAC;KAClB;AAED;;;;;AAKG;AACK,IAAA,OAAO,WAAW,CAAC,IAAU,EAAE,UAAU,GAAG,KAAK,EAAA;QACvD,OAAO;AACL,YAAA,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE;AAClB,YAAA,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;AACpB,YAAA,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC;AACnB,YAAA,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;AACtB,YAAA,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;AACxB,YAAA,UAAU,EAAE,UAAU;SACvB,CAAC;KACH;AAED;;AAEG;AACH,IAAA,QAAQ,GAAyB,MAAK,GAAG,CAAC;AAE1C;;AAEG;AACH,IAAA,SAAS,GAAc,MAAK,GAAG,CAAC;AAEhC;;;AAGG;AACH,IAAA,WAAA,CAAoB,iBAAoC,EAAA;QAApC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;AACtD,QAAA,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;KACvE;AAED;;AAEG;AACH,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAa,CAAC;KAC3B;AAED;;AAEG;AACH,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AAED;;;AAGG;AACH,IAAA,UAAU,CAAC,KAAiC,EAAA;AAC1C,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACvC;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAED;;;AAGG;AACH,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC3B,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACvC;AAED;;;AAGG;AACH,IAAA,YAAY,CAAC,KAAY,EAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,MAAM,iBAAiB,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAAC;YAClE,IAAI,CAAC,iBAAiB,EAAE;AACtB,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAW,CAAC,CAAC;aACxC;YAED,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAEhC,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACf,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACjD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aAChD;iBAAM;gBACL,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;AACtD,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;aACzD;AAED,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACpC;KACF;AAED;;;;AAIG;IACH,YAAY,CAAC,IAAY,EAAE,UAAmB,EAAA;QAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;QAEnD,IAAI,UAAU,EAAE;AACd,YAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC7D,YAAA,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;YACxC,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC9C,MAAM,YAAY,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;AAExD,YAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;AAE/B,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,gBAAA,UAAU,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC;aACrD;SACF;KACF;AAED;;AAEG;IACH,cAAc,GAAA;AACZ,QAAA,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACzD,QAAA,MAAM,aAAa,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;QACtD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjD,MAAM,YAAY,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;AAEhE,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;AAE/B,QAAA,IAAI,aAAa,CAAC,QAAQ,EAAE,KAAK,YAAY,EAAE;YAC7C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC;SACtD;KACF;AAED;;AAEG;IACH,cAAc,GAAA;AACZ,QAAA,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACzD,QAAA,MAAM,aAAa,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;QACtD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC/C,MAAM,YAAY,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;AAEhE,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;AAE/B,QAAA,IAAI,WAAW,CAAC,QAAQ,EAAE,KAAK,YAAY,EAAE;YAC3C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC;SACtD;KACF;AAED;;AAEG;IACH,iBAAiB,GAAA;QACf,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACpG,QAAA,MAAM,aAAa,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;AAEtD,QAAA,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;QAE7D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KAChD;AAED;;;;AAIG;AACK,IAAA,WAAW,CAAC,KAAiC,EAAA;AACnD,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC;AAErC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAEnB,YAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACrD,gBAAA,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AACjD,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACpC;SACF;KACF;AAED;;;;AAIG;AACK,IAAA,oBAAoB,CAAC,QAAsC,EAAA;QACjE,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;SAC1D;QAED,IAAK,QAAgB,EAAE,KAAK,GAAI,QAAgB,EAAE,GAAG,EAAE;AACrD,YAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;SAC1D;AAED,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;AAChC,YAAA,KAAK,EAAG,QAAgB,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9E,YAAA,GAAG,EAAG,QAAgB,EAAE,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC5E,SAAA,CAAC,CAAC;KACJ;AAED;;;AAGG;IACK,wBAAwB,GAAA;AAC9B,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACzB,MAAM,iBAAiB,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAAC;AAClE,QAAA,MAAM,kBAAkB,GAAG,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;AACtE,QAAA,MAAM,gBAAgB,GAAG,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;QAExE,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,gBAAgB,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;AACnF,YAAA,gBAAgB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;KACzD;uGAjjBU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EARnB,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtGH,qyRAkLA,EAAA,MAAA,EAAA,CAAA,u0DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,gBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FD1Ea,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAZ/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAGrB,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AAClD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,qyRAAA,EAAA,MAAA,EAAA,CAAA,u0DAAA,CAAA,EAAA,CAAA;sFASG,KAAK,EAAA,CAAA;sBADR,KAAK;gBA0BF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAUF,SAAS,EAAA,CAAA;sBADZ,KAAK;gBAUN,cAAc,EAAA,CAAA;sBADb,KAAK;gBAON,uBAAuB,EAAA,CAAA;sBADtB,KAAK;gBAON,SAAS,EAAA,CAAA;sBADR,KAAK;gBAQN,UAAU,EAAA,CAAA;sBADT,KAAK;gBAON,aAAa,EAAA,CAAA;sBADZ,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;gBAoCN,YAAY,EAAA,CAAA;sBADX,MAAM;gBAOP,eAAe,EAAA,CAAA;sBADd,SAAS;uBAAC,iBAAiB,CAAA;;;MEzMjB,wBAAwB,CAAA;uGAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAAxB,wBAAwB,EAAA,YAAA,EAAA,CAXpB,mBAAmB,CAAA,EAAA,OAAA,EAAA,CAE5B,YAAY;YACZ,+BAA+B;YAC/B,WAAW;YACX,UAAU;YACV,qBAAqB;AACrB,YAAA,qBAAqB,aAEjB,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAElB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YAT7B,YAAY;YACZ,+BAA+B;YAC/B,WAAW;YACX,UAAU;YACV,qBAAqB;YACrB,qBAAqB,CAAA,EAAA,CAAA,CAAA;;2FAIhB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAZpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,mBAAmB,CAAC;AACjC,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,+BAA+B;wBAC/B,WAAW;wBACX,UAAU;wBACV,qBAAqB;wBACrB,qBAAqB;AACxB,qBAAA;oBACH,OAAO,EAAE,CAAC,mBAAmB,CAAC;AAC/B,iBAAA,CAAA;;;ACLD;;AAEG;MAaU,oBAAoB,CAAA;AAwJX,IAAA,QAAA,CAAA;AAA6B,IAAA,iBAAA,CAAA;AAtJjD;;;AAGG;IACK,OAAgB,cAAc,GAAG,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAExE;;;AAGG;IACK,OAAgB,eAAe,GAAG,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAEzE;;;AAGG;IACK,OAAgB,mBAAmB,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC;AAE1E;;;AAGG;IACK,OAAgB,eAAe,GAAG;AACxC,QAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO;AACxC,QAAA,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW;AACjD,QAAA,WAAW,EAAE,QAAQ;KACtB,CAAC;AAEF;;;AAGG;IACH,IACI,KAAK,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,SAAS,GAAG,KAAK,IAAI,EAAE,CAAC;QAE5B,IAAI,SAAS,EAAE;AACb,YAAA,oBAAoB,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,CAAC;AAClD,YAAA,oBAAoB,CAAC,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC;AAEnD,YAAA,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YAErD,IAAI,oBAAoB,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACxD,gBAAA,SAAS,GAAG,oBAAoB,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;aAClE;YAED,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;gBACxD,SAAS,GAAG,EAAE,CAAC;aAChB;SACF;AAED,QAAA,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AAExB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;SACnD;KACF;AAED;;;AAGG;IACH,IACI,QAAQ,CAAC,QAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;KAC3B;AAED;;AAEG;IAEH,SAAS,GAAW,IAAW,CAAC;AAGhC,IAAA,IAAI,GAAoB;AACtB,QAAA,WAAW,EAAE,gBAAgB;AAC7B,QAAA,YAAY,EAAE,kBAAkB;KACd,CAAC;AAErB;;AAEG;;AAGH,IAAA,KAAK,GAAG,IAAI,YAAY,EAAU,CAAC;AAEnC;;;AAGG;AAEH,IAAA,aAAa,GAAG,IAAI,YAAY,EAAU,CAAC;AAE3C;;AAEG;IAEH,UAAU,GAAiC,IAAW,CAAC;AAEvD;;AAEG;IACH,MAAM,GAAY,KAAK,CAAC;AAExB;;AAEG;IACH,oBAAoB,GAAY,KAAK,CAAC;AAEtC;;AAEG;IACH,MAAM,GAAG,EAAE,CAAC;AAEZ;;;AAGG;IACH,SAAS,GAAG,KAAK,CAAC;AAElB;;;;AAIG;IACK,OAAO,oBAAoB,CAAC,SAAiB,EAAA;QACnD,IAAI,aAAa,GAAG,EAAE,CAAC;AAEvB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC3B,YAAA,aAAa,IAAI,CAAA,EAAG,SAAS,CAAC,CAAC,CAAC,CAAG,EAAA,SAAS,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC;SACnD;AAED,QAAA,OAAO,aAAa,CAAC;KACtB;AAED;;AAEG;AACH,IAAA,QAAQ,GAAyB,MAAK,GAAG,CAAC;AAE1C;;AAEG;AACH,IAAA,SAAS,GAAc,MAAK,GAAG,CAAC;AAEhC;;;;AAIG;IACH,WAAoB,CAAA,QAAmB,EAAU,iBAAoC,EAAA;QAAjE,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAAU,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;KAAK;AAE1F;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC1D,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;KACpB;AAED;;;AAGG;AACH,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACvC;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAED;;;AAGG;AACH,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC3B,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACvC;AAED;;;AAGG;AACH,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;QACtB,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,MAA0B,CAAC;AAEjF,QAAA,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACzE,YAAA,oBAAoB,CAAC,mBAAmB,CAAC,SAAS,GAAG,CAAC,CAAC;YAEvD,MAAM,cAAc,GAAG,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;AACxE,iBAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,cAAc,KAAK,YAAY,CAAC,CAAC,CAAC;YAE3D,IAAI,cAAc,EAAE;gBAClB,KAAK,CAAC,cAAc,EAAE,CAAC;aACxB;SACF;KACF;AAED;;;;;AAKG;AACH,IAAA,WAAW,CAAC,KAAa,EAAE,iBAAiB,GAAG,KAAK,EAAA;AAClD,QAAA,oBAAoB,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,CAAC;QAClD,IAAI,WAAW,GAAG,KAAK,CAAC;QAExB,IAAI,WAAW,EAAE;YACf,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;SAC5C;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AAC5E,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC;AACtC,YAAA,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;AAEzB,YAAA,IAAI,iBAAiB,KAAK,IAAI,CAAC,MAAM,EAAE;AACrC,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAA,CAAE,CAAC,CAAC;gBAEjC,IAAI,iBAAiB,EAAE;oBACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAI,CAAA,EAAA,WAAW,CAAE,CAAA,CAAC,CAAC;iBAC5C;aACF;SACF;aAAM,IAAI,CAAC,KAAK,EAAE;AACjB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAW,CAAC;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACrB;KACF;AAED;;;AAGG;AACH,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,oBAAoB,CAAC,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC;AACnD,QAAA,oBAAoB,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,CAAC;QAElD,IAAI,oBAAoB,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACpD,YAAA,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;SAC1E;aAAM,IAAI,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC1D,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SAC/B;aAAM;AACL,YAAA,IAAI,CAAC,KAAK,GAAG,IAAW,CAAC;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACrB;KACF;AAED;;;AAGG;AACH,IAAA,WAAW,CAAC,KAAqB,EAAA;QAC/B,KAAK,CAAC,cAAc,EAAE,CAAC;AAEvB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,aAAa,GAAiB,IAAW,CAAC;AAE9C,YAAA,IAAI,KAAK,CAAC,aAAa,EAAE;AACvB,gBAAA,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;aACrC;AAAM,iBAAA,IAAI,eAAe,IAAI,MAAM,EAAE;gBACpC,aAAa,GAAI,MAAc,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAC/D;YAED,IAAI,aAAa,EAAE;AACjB,gBAAA,oBAAoB,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,CAAC;AAClD,gBAAA,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;AAC7C,qBAAA,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAEpB,IAAI,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACxD,oBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;iBAC9B;aACF;SACF;KACF;AAED;;;AAGG;IACK,sBAAsB,GAAA;QAC5B,IAAI,oBAAoB,GAAG,KAAK,CAAC;AAEjC,QAAA,IAAI;YACF,MAAM,YAAY,GAAqB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC5E,YAAA,YAAY,CAAC,IAAI,GAAG,OAAO,CAAC;AAC5B,YAAA,YAAY,CAAC,KAAK,GAAG,GAAG,CAAC;AAEzB,YAAA,oBAAoB,GAAG,YAAY,CAAC,IAAI,KAAK,OAAO,IAAI,YAAY,CAAC,KAAK,KAAK,GAAG,CAAC;SACpF;AAAC,QAAA,OAAO,CAAC,EAAE,GAAG;AAEf,QAAA,OAAO,oBAAoB,CAAC;KAC7B;uGArTU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EARpB,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACnD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5BH,8lDAoCA,EAAA,MAAA,EAAA,CAAA,0iCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,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,CAAA,EAAA,CAAA,CAAA;;2FDNa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAZhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAGtB,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,0BAA0B,CAAC;AACnD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,8lDAAA,EAAA,MAAA,EAAA,CAAA,0iCAAA,CAAA,EAAA,CAAA;8GAqCG,KAAK,EAAA,CAAA;sBADR,KAAK;gBA+BF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBASN,SAAS,EAAA,CAAA;sBADR,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;;;QAWN,KAAK,EAAA,CAAA;sBAFJ,MAAM;gBASP,aAAa,EAAA,CAAA;sBADZ,MAAM;gBAOP,UAAU,EAAA,CAAA;sBADT,SAAS;uBAAC,YAAY,CAAA;;;MEtHZ,yBAAyB,CAAA;uGAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,iBAJrB,oBAAoB,CAAA,EAAA,OAAA,EAAA,CACzB,YAAY,EAAE,WAAW,aACzB,oBAAoB,CAAA,EAAA,CAAA,CAAA;wGAEnB,yBAAyB,EAAA,OAAA,EAAA,CAH1B,YAAY,EAAE,WAAW,CAAA,EAAA,CAAA,CAAA;;2FAGxB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,oBAAoB,CAAC;AACpC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC;oBACpC,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAChC,iBAAA,CAAA;;;ACLD;;AAEG;MAaU,eAAe,CAAA;AAyIN,IAAA,iBAAA,CAAA;AAvIpB;;AAEG;IAEH,WAAW,GAAiC,IAAW,CAAC;AAExD;;;AAGG;IACH,IACI,KAAK,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;AAED;;;AAGG;IACH,IACI,GAAG,CAAC,GAAW,EAAA;AACjB,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;KAClC;AAED;;;AAGG;IACH,IACI,GAAG,CAAC,GAAW,EAAA;AACjB,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;KACpC;AAED;;;AAGG;IACH,IACI,IAAI,CAAC,IAAY,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;KACrC;AAED;;;AAGG;IACH,IACI,QAAQ,CAAC,QAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;KAC3B;AAED;;;AAGG;IACH,IACI,cAAc,CAAC,cAAsB,EAAA;AACvC,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc,GAAG,cAAc,GAAG,iBAAiB,CAAC;KAC5E;AAED;;AAEG;IAEH,IAAI,GAAW,IAAW,CAAC;AAE3B;;AAEG;IAEH,SAAS,GAAW,IAAW,CAAC;AAGhC,IAAA,IAAI,GAAe;AACjB,QAAA,YAAY,EAAE,gBAAgB;AAC9B,QAAA,WAAW,EAAE,eAAe;KACf,CAAC;AAEhB;;AAEG;;AAGH,IAAA,KAAK,GAAG,IAAI,YAAY,EAAU,CAAC;AAEnC;;AAEG;IACH,MAAM,GAAW,IAAW,CAAC;AAE7B;;AAEG;IACH,IAAI,GAAG,CAAC,CAAC;AAET;;AAEG;IACH,IAAI,GAAG,GAAG,CAAC;AAEX;;AAEG;IACH,KAAK,GAAG,CAAC,CAAC;AAEV;;AAEG;IACH,SAAS,GAAY,KAAK,CAAC;AAE3B;;AAEG;IACH,eAAe,GAAG,yIAAyI,CAAC;AAE5J;;AAEG;IACH,WAAW,GAAG,CAAC,CAAC;AAEhB;;AAEG;AACH,IAAA,QAAQ,GAAyB,MAAK,GAAG,CAAC;AAE1C;;AAEG;AACH,IAAA,SAAS,GAAc,MAAK,GAAG,CAAC;AAEhC;;;AAGG;AACH,IAAA,WAAA,CAAoB,iBAAoC,EAAA;QAApC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;KAAK;AAE7D;;AAEG;AACH,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;AAED;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACrB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;SAC/C;KACF;AAED;;;AAGG;AACH,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACvC;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAED;;;AAGG;AACH,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC3B,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACvC;AAED;;;AAGG;AACH,IAAA,WAAW,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,IAAI,UAAkB,CAAC;YAEvB,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE;AACrC,gBAAA,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;aACxB;iBAAM;gBACL,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;aACzC;AAED,YAAA,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU,EAAE;AAC7B,gBAAA,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;gBACxB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAC1D,gBAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;aAC3B;iBAAM;gBACL,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;aAC3D;SACF;KACF;AAED;;;AAGG;AACH,IAAA,YAAY,CAAC,KAAqB,EAAA;QAChC,KAAK,CAAC,cAAc,EAAE,CAAC;KACxB;AAED;;;AAGG;IACK,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,KAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;KAC1F;uGAnOU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EARf,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,eAAe,CAAC;AAC9C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjBH,6xDAqCA,EAAA,MAAA,EAAA,CAAA,smEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,8FAAA,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,YAAA,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,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,CAAA,EAAA,CAAA,CAAA;;2FDlBa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAZ3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAGhB,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,qBAAqB,CAAC;AAC9C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,6xDAAA,EAAA,MAAA,EAAA,CAAA,smEAAA,CAAA,EAAA,CAAA;sFAQD,WAAW,EAAA,CAAA;sBADV,SAAS;uBAAC,aAAa,CAAA;gBAQpB,KAAK,EAAA,CAAA;sBADR,KAAK;gBAWF,GAAG,EAAA,CAAA;sBADN,KAAK;gBAUF,GAAG,EAAA,CAAA;sBADN,KAAK;gBAUF,IAAI,EAAA,CAAA;sBADP,KAAK;gBAUF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAUF,cAAc,EAAA,CAAA;sBADjB,KAAK;gBASN,IAAI,EAAA,CAAA;sBADH,KAAK;gBAON,SAAS,EAAA,CAAA;sBADR,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;;;QAWN,KAAK,EAAA,CAAA;sBAFJ,MAAM;;;MExFI,oBAAoB,CAAA;uGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAApB,oBAAoB,EAAA,YAAA,EAAA,CAThB,eAAe,CAAA,EAAA,OAAA,EAAA,CAK5B,YAAY;AACZ,YAAA,WAAW,aAJX,eAAe,CAAA,EAAA,CAAA,CAAA;AAON,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAJ7B,YAAY;YACZ,WAAW,CAAA,EAAA,CAAA,CAAA;;2FAGF,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAVhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,eAAe,CAAC;AAC/B,oBAAA,OAAO,EAAE;wBACP,eAAe;AAChB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;AACZ,qBAAA;AACF,iBAAA,CAAA;;;MCTY,yBAAyB,CAAA;AACjB,IAAA,WAAA,CAAA;AAAnB,IAAA,WAAA,CAAmB,WAA6B,EAAA;QAA7B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAkB;KAAI;uGADzC,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAzB,yBAAyB,EAAA,QAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4BAA4B;AACvC,iBAAA,CAAA;;;MCCY,wBAAwB,CAAA;AAChB,IAAA,WAAA,CAAA;AAAnB,IAAA,WAAA,CAAmB,WAA6B,EAAA;QAA7B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAkB;KAAI;uGADzC,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAxB,wBAAwB,EAAA,QAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,2BAA2B;AACtC,iBAAA,CAAA;;;MCIY,sBAAsB,CAAA;IAGjC,MAAM,GAAW,IAAW,CAAC;IAG7B,QAAQ,GAAG,KAAK,CAAC;IAGjB,IAAI,GAAG,KAAK,CAAC;IAGb,WAAW,GAAW,IAAW,CAAC;IAGlC,cAAc,GAA6B,IAAW,CAAC;IAGvD,OAAO,GAA8B,IAAW,CAAC;uGAlBtC,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAtB,sBAAsB,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAcnB,wBAAwB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGxB,yBAAyB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAjB5B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAET,oBAAA,QAAQ,EAAE,yBAAyB;AACpC,iBAAA,CAAA;8BAIC,MAAM,EAAA,CAAA;sBADL,KAAK;gBAIN,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;gBAIN,WAAW,EAAA,CAAA;sBADV,KAAK;gBAIN,cAAc,EAAA,CAAA;sBADb,YAAY;uBAAC,wBAAwB,CAAA;gBAItC,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,yBAAyB,CAAA;;;MCP5B,kBAAkB,CAAA;AAC7B,IAAA,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAG7B,QAAQ,GAAG,KAAK,CAAC;IAGjB,MAAM,GAAG,MAAM,CAAC;IAGhB,WAAW,GAAG,+BAA+B,CAAC;IAG9C,SAAS,GAAG,WAAW,CAAC;IAGxB,aAAa,GAAG,oBAAoB,CAAC;IAGrC,YAAY,GAAG,mBAAmB,CAAC;IAGnC,QAAQ,GAAG,IAAI,CAAC;AAGhB,IAAA,IAAI,GAAkB;AACpB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,QAAQ,EAAE,UAAU;KACJ,CAAC;IAGnB,KAAK,GAAsC,IAAW,CAAC;IAGvD,WAAW,GAAmB,IAAW,CAAC;IAE1C,kBAAkB,GAAA;AAChB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAA2B,CAAC;YACzD,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC/B,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;oBAClB,MAAM;iBACP;aACF;SACF;KACF;IAED,eAAe,GAAA;AACb,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAA+B,CAAC;YACnE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAA2B,CAAC;YACzD,IAAI,EAAE,EAAE;gBACN,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;oBACvC,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,YAAY,GAAG,IAAI,CAAC;AAC5C,oBAAA,EAAE,CAAC,UAAU,GAAG,OAAO,CAAC;iBACzB;qBAAM;AACL,oBAAA,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;AACzB,oBAAA,EAAE,CAAC,UAAU,GAAG,MAAM,CAAC;iBACxB;aACF;SACF;KACF;AAED;;AAEG;AACH,IAAA,cAAc,GAAG,CAAC,KAAa,KAAS;QACtC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC5C,KAAC,CAAA;AAED,IAAA,WAAW,GAAG,CAAC,KAAa,KAAU;QACpC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5B,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;AAChE,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,UAAU,GAAG,MAAM,CAAC;SAC/D;aAAM;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACtB,gBAAA,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,oBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;AAC5D,oBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,GAAG,MAAM,CAAC;iBAC3D;aACF;AAED,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACzB,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,CAAG,EAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,YAAY,CAAA,EAAA,CAAI,CAAC;AAC1H,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,UAAU,GAAG,OAAO,CAAC;SAChE;AACH,KAAC,CAAA;uGAzFU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EA8BZ,sBAAsB,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,CAAA,KAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChDzC,w3CAyBA,EAAA,MAAA,EAAA,CAAA,+sBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDPa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;+BACE,oBAAoB,EAAA,eAAA,EAGb,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,w3CAAA,EAAA,MAAA,EAAA,CAAA,+sBAAA,CAAA,EAAA,CAAA;8BAM/C,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAIN,MAAM,EAAA,CAAA;sBADL,KAAK;gBAIN,WAAW,EAAA,CAAA;sBADV,KAAK;gBAIN,SAAS,EAAA,CAAA;sBADR,KAAK;gBAIN,aAAa,EAAA,CAAA;sBADZ,KAAK;gBAIN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAIN,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;gBAON,KAAK,EAAA,CAAA;sBADJ,eAAe;uBAAC,sBAAsB,CAAA;gBAIvC,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,KAAK,CAAA;;;ME5BR,uBAAuB,CAAA;uGAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,iBAbhC,kBAAkB;YAClB,sBAAsB;YACtB,yBAAyB;YACzB,wBAAwB,CAAA,EAAA,OAAA,EAAA,CAEhB,YAAY,CAAA,EAAA,OAAA,EAAA,CAEpB,kBAAkB;YAClB,sBAAsB;YACtB,yBAAyB;YACzB,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAGf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,YARxB,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAQX,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAfnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,kBAAkB;wBAClB,sBAAsB;wBACtB,yBAAyB;wBACzB,wBAAwB;AACzB,qBAAA;oBACD,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,OAAO,EAAE;wBACP,kBAAkB;wBAClB,sBAAsB;wBACtB,yBAAyB;wBACzB,wBAAwB;AACzB,qBAAA;AACF,iBAAA,CAAA;;;ACtBD;AACa,MAAA,cAAc,GAAG;AAC5B,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,YAAY,EAAE,cAAc;;;ACJ9B;;;AAGG;MAEU,mBAAmB,CAAA;AAE9B;;;;AAIG;AACH,IAAA,SAAS,CAAI,GAAW,EAAA;QACtB,MAAM,GAAG,GAAQ,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,GAAG,EAAE;AACP,YAAA,OAAW,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SAC5B;AAED,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;;;AAIG;AACH,IAAA,OAAO,CAAC,GAAW,EAAA;QACjB,OAAO,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;KACvC;AAED;;;;;AAKG;IACH,SAAS,CAAC,GAAW,EAAE,MAAW,EAAA;AAChC,QAAA,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;KACnD;AAED;;;;;AAKG;IACH,OAAO,CAAC,GAAW,EAAE,KAAa,EAAA;AAChC,QAAA,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;KAClC;AAED;;;;AAIG;AACH,IAAA,MAAM,CAAC,GAAW,EAAA;AAChB,QAAA,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;KAC9B;uGApDU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAAnB,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;ACFX;;AAEG;MAIU,2BAA2B,CAAA;AAEtC;;;AAGG;AACc,IAAA,aAAa,GAAG,IAAI,eAAe,CAAO,IAAW,CAAC,CAAC;AAExE;;AAEG;AACH,IAAA,WAAA,GAAA,GAAiB;AAEjB;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KAC3B;AAED;;AAEG;IACH,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;KAC1C;uGAzBU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,cAF1B,MAAM,EAAA,CAAA,CAAA;;2FAEP,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCAY,cAAc,CAAA;AAwCf,IAAA,mBAAA,CAAA;AACA,IAAA,2BAAA,CAAA;;AAtCO,IAAA,eAAe,GAAkB;AAChD,QAAA,cAAc,CAAC,IAAI;AACnB,QAAA,cAAc,CAAC,KAAK;AACpB,QAAA,cAAc,CAAC,OAAO;AACtB,QAAA,cAAc,CAAC,MAAM;AACrB,QAAA,cAAc,CAAC,YAAY;KAC5B,CAAC;AAEF;;AAEG;IACc,SAAS,GAAG,OAAO,CAAC;AAErC;;AAEG;AACK,IAAA,MAAM,GAAG,IAAI,eAAe,CAAU,EAAE,CAAC,CAAC;AAE1C,IAAA,cAAc,GAAG,IAAI,eAAe,CAAQ,IAAW,CAAC,CAAC;AAEjE,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KAC3C;AAGD;;AAEG;IACO,eAAe,GAAW,IAAW,CAAC;AAEhD;;;;;AAKG;IACH,WACU,CAAA,mBAAwC,EACxC,2BAAwD,EAAA;QADxD,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;QACxC,IAA2B,CAAA,2BAAA,GAA3B,2BAA2B,CAA6B;KAEjE;AAED;;;;AAIG;AACK,IAAA,WAAW,CAAC,IAAY,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;KACxD;AAEO,IAAA,WAAW,CAAC,IAAY,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;KACxD;AAEO,IAAA,uBAAuB,CAAC,IAAY,EAAA;AAC1C,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;KAChD;AAED;;;;;AAKG;IACK,kBAAkB,CAAC,KAAa,EAAE,OAAe,EAAA;QACvD,IAAI,QAAQ,GAAG,KAAK,CAAC;AACrB,QAAA,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACpB,YAAA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACvB,QAAQ,GAAG,IAAI,CAAC;SACjB;QAED,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAEhC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,IAAI,OAAO,CAAC;AAC9B,QAAA,IAAI,CAAC,GAAG,GAAG,EAAE;YACX,CAAC,GAAG,GAAG,CAAC;SACT;AAAM,aAAA,IAAI,CAAC,GAAG,CAAC,EAAE;YAChB,CAAC,GAAG,CAAC,CAAC;SACP;AAED,QAAA,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,OAAO,CAAC;AACxC,QAAA,IAAI,CAAC,GAAG,GAAG,EAAE;YACX,CAAC,GAAG,GAAG,CAAC;SACT;AAAM,aAAA,IAAI,CAAC,GAAG,CAAC,EAAE;YAChB,CAAC,GAAG,CAAC,CAAC;SACP;QAED,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,QAAQ,IAAI,OAAO,CAAC;AACnC,QAAA,IAAI,CAAC,GAAG,GAAG,EAAE;YACX,CAAC,GAAG,GAAG,CAAC;SACT;AAAM,aAAA,IAAI,CAAC,GAAG,CAAC,EAAE;YAChB,CAAC,GAAG,CAAC,CAAC;SACP;QAED,IAAI,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;AAEvD,QAAA,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1B,YAAA,QAAQ,GAAG,GAAG,GAAG,QAAQ,CAAC;SAC3B;AAED,QAAA,OAAO,CAAC,QAAQ,GAAG,GAAG,GAAG,EAAE,IAAI,QAAQ,CAAC;KACzC;AAED;;;;AAIG;AACK,IAAA,QAAQ,CAAC,GAAW,EAAA;QAC1B,MAAM,MAAM,GAAG,2CAA2C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrE,OAAO,MAAM,GAAG;YACd,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAC1B,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAC1B,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;SAC3B,GAAG,IAAI,CAAC;KACV;AAED;;AAEG;IACH,cAAc,GAAA;AACZ,QAAA,OAAO,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;KAChE;AAED;;;;;AAKG;IACH,OAAO,CAAC,eAAuB,EAAE,MAAe,EAAA;QAC5C,IAAI,CAAC,eAAe,EAAE;AACpB,YAAA,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACvD;AAED,QAAA,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;AACvC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzB,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;AAED;;AAEG;IACH,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;AAED;;AAEG;IACH,aAAa,GAAA;AACX,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AACjC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;KAC7B;AAED;;;;AAIG;AACH,IAAA,aAAa,CAAC,KAAa,EAAA;QACzB,IAAI,QAAQ,GAAU,EAAW,CAAC;QAClC,IAAI,KAAK,EAAE;YACT,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;;gBAErC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;aAC9B;SACF;aAAM;AACL,YAAA,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,CAAU,CAAC;SACjF;AAED,QAAA,OAAO,QAAQ,CAAC;KACjB;AAED;;AAEG;AACH,IAAA,mBAAmB,CAAC,KAAY,EAAA;QAC9B,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACrC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC7E,gBAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;aAC/D;SACF;AAED,QAAA,OAAO,OAAO,CAAC;KAChB;AAED;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1F,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAEzE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AACrC,YAAA,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,EAAE;AAC7B,gBAAA,OAAO,KAAK,CAAC;aACd;SACF;AAED,QAAA,OAAO,YAAY,CAAC;KACrB;AAED;;;;AAIG;AACH,IAAA,SAAS,CAAC,QAAe,EAAA;AACvB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;KAC7F;AAED;;;;;AAKG;IACH,YAAY,CAAC,KAAY,EAAE,MAAe,EAAA;QACxC,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,GAAG,EAAE,CAAC;SACb;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,QAAQ,GAAG,SAAS,CAAC;;AAGzB,QAAA,IAAI,KAAK,CAAC,YAAY,EAAE;AACtB,YAAA,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;AAClD,gBAAA,IAAI,IAAI,KAAK,WAAW,EAAE;oBACxB,MAAM,KAAK,GAAI,KAAK,CAAC,YAAoB,CAAC,IAAI,CAAW,CAAC;oBAE1D,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACtC,oBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAEnE,oBAAA,QAAQ,IAAI,CAAA,EAAA,EAAK,MAAM,CAAA,EAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAW,QAAA,EAAA,KAAK,GAAG,CAAC;iBACrE;aACF;YAED,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE;gBACpD,IAAI,SAAS,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;oBAC3C,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA,CAAA,EAAI,MAAM,CAAA,EAAG,SAAS,CAAC,SAAS,CAAW,QAAA,EAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA,EAAA,CAAI,CAAC,CAAC,CAAC;iBAClI;AAED,gBAAA,IAAI,SAAS,CAAC,KAAK,EAAE;AACnB,oBAAA,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;wBACxB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;qBACvG;yBAAM;AACL,wBAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAI,CAAA,EAAA,MAAM,GAAG,SAAS,CAAC,SAAS,CAAA,mBAAA,EAAsB,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAuB,qBAAA,CAAA,CAAC,CAAC,CAAC;qBAC5M;oBAED,QAAQ,IAAI,KAAK,MAAM,CAAA,EAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAK,EAAA,EAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAe,CAAC,CAAA,CAAA,CAAG,CAAC;iBAChI;aACF;SACF;;AAGD,QAAA,IAAI,KAAK,CAAC,YAAY,EAAE;AACtB,YAAA,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;gBAClD,MAAM,KAAK,GAAI,KAAK,CAAC,YAAoB,CAAC,IAAI,CAAW,CAAC;AAE1D,gBAAA,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;AAC1D,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,gBAAA,QAAQ,IAAI,CAAA,EAAA,EAAK,MAAM,CAAA,EAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAK,EAAA,EAAA,KAAK,GAAG,CAAC;aAC/D;YAED,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;AAClD,gBAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA,CAAA,EAAI,MAAM,CAAA,kEAAA,CAAoE,CAAC,CAAC,CAAC;AAC3H,gBAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA,CAAA,EAAI,MAAM,CAAA,gEAAA,CAAkE,CAAC,CAAC,CAAC;AACzH,gBAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA,CAAA,EAAI,MAAM,CAAA,6CAAA,CAA+C,CAAC,CAAC,CAAC;aACvG;iBAAM;AACL,gBAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA,CAAA,EAAI,MAAM,CAAA,iEAAA,CAAmE,CAAC,CAAC,CAAC;AAC1H,gBAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA,CAAA,EAAI,MAAM,CAAA,gEAAA,CAAkE,CAAC,CAAC,CAAC;AACzH,gBAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA,CAAA,EAAI,MAAM,CAAA,6CAAA,CAA+C,CAAC,CAAC,CAAC;aACvG;SACF;QAED,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE;AACtD,YAAA,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,cAAc,GAAG,GAAG,GAAG,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC;YACxJ,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,MAAM,CAAA,gBAAA,EAAmB,YAAY,CAAI,CAAA,EAAA,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAA2F,yFAAA,CAAA,CAAC,CAAC,CAAC;YAC3N,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAI,CAAA,EAAA,MAAM,CAAyB,sBAAA,EAAA,YAAY,CAAI,CAAA,EAAA,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAA,kCAAA,EAAqC,KAAK,CAAC,aAAa,CAAC,eAAe,CAAA,EAAA,CAAI,CAAC,CAAC,CAAC;AAElN,YAAA,IAAI,KAAK,CAAC,aAAa,CAAC,YAAY,EAAE;gBACpC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAI,CAAA,EAAA,MAAM,CAAyB,sBAAA,EAAA,YAAY,CAAI,CAAA,EAAA,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAA,kCAAA,EAAqC,KAAK,CAAC,aAAa,CAAC,eAAe,CAAA,EAAA,CAAI,CAAC,CAAC,CAAC;aACnN;SACF;;AAGD,QAAA,IAAI,KAAK,CAAC,kBAAkB,EAAE;AAC5B,YAAA,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE;gBACxD,MAAM,KAAK,GAAI,KAAK,CAAC,kBAA0B,CAAC,IAAI,CAAW,CAAC;AAEhE,gBAAA,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;AAC1D,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAEnE,gBAAA,QAAQ,IAAI,CAAA,EAAA,EAAK,MAAM,CAAA,EAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAK,EAAA,EAAA,KAAK,GAAG,CAAC;aAC/D;SACF;AAED,QAAA,IAAI,KAAK,CAAC,gBAAgB,EAAE;AAC1B,YAAA,IAAI,KAAK,CAAC,gBAAgB,CAAC,aAAa,EAAE;AACxC,gBAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAI,CAAA,EAAA,MAAM,CAAkC,+BAAA,EAAA,KAAK,CAAC,gBAAgB,CAAC,aAAa,CAAI,EAAA,CAAA,CAAC,CAAC,CAAC;aAClI;AAED,YAAA,IAAI,KAAK,CAAC,gBAAgB,CAAC,cAAc,EAAE;AACzC,gBAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAI,CAAA,EAAA,MAAM,CAAmC,gCAAA,EAAA,KAAK,CAAC,gBAAgB,CAAC,cAAc,CAAI,EAAA,CAAA,CAAC,CAAC,CAAC;aACpI;AAED,YAAA,IAAI,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE;AACvC,gBAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAI,CAAA,EAAA,MAAM,wCAAwC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAG,CAAA,CAAA,CAAC,CAAC,CAAC;aACzN;AAED,YAAA,IAAI,KAAK,CAAC,gBAAgB,CAAC,WAAW,EAAE;gBACtC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAI,CAAA,EAAA,MAAM,CAAgC,6BAAA,EAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAA,EAAA,CAAI,CAAC,CAAC,CAAC;AAC/I,gBAAA,QAAQ,IAAI,CAAA,EAAA,EAAK,MAAM,CAAA,gBAAA,EAAmB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC;aACnG;AAED,YAAA,IAAI,KAAK,CAAC,gBAAgB,CAAC,UAAU,EAAE;AACrC,gBAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAI,CAAA,EAAA,MAAM,CAA+B,4BAAA,EAAA,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAuB,qBAAA,CAAA,CAAC,CAAC,CAAC;gBAC9I,QAAQ,IAAI,CAAK,EAAA,EAAA,MAAM,CAAkB,eAAA,EAAA,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAA,CAAA,CAAG,CAAC;aAC/E;AAED,YAAA,IAAI,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE;AACvC,gBAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAI,CAAA,EAAA,MAAM,CAAkC,+BAAA,EAAA,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAI,EAAA,CAAA,CAAC,CAAC,CAAC;gBAChI,QAAQ,IAAI,CAAK,EAAA,EAAA,MAAM,CAAoB,iBAAA,EAAA,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAA,CAAA,CAAG,CAAC;aACnF;AAED,YAAA,IAAI,KAAK,CAAC,gBAAgB,CAAC,WAAW,EAAE;AACtC,gBAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAI,CAAA,EAAA,MAAM,CAA4B,yBAAA,EAAA,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAI,EAAA,CAAA,CAAC,CAAC,CAAC;aAC1H;AAED,YAAA,IAAI,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE;AACvC,gBAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAI,CAAA,EAAA,MAAM,CAA8B,2BAAA,EAAA,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAI,EAAA,CAAA,CAAC,CAAC,CAAC;aAC7H;AAED,YAAA,IAAI,KAAK,CAAC,gBAAgB,CAAC,eAAe,IAAI,KAAK,CAAC,gBAAgB,CAAC,sBAAsB,EAAE;AAC3F,gBAAA,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAgB,CAAC,sBAAsB,CAAC;AAC9D,gBAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,gBAAgB,CAAC,eAAe,CAAC;AACxD,gBAAA,MAAM,UAAU,GAAG,KAAK,CAAC,gBAAgB,CAAC,iBAAiB,CAAC;AAC5D,gBAAA,MAAM,WAAW,GAAG,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,CAAC;gBAC9D,MAAM,SAAS,GAAG,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,IAAI,KAAK,CAAC;gBAEnE,IAAI,YAAY,GAAG,oBAAoB,CAAC;gBAExC,IAAI,OAAO,EAAE;oBACX,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAC7C,oBAAA,YAAY,IAAI,CAAA,OAAA,EAAU,SAAS,CAAA,CAAA,CAAG,CAAC;AACvC,oBAAA,YAAY,IAAI,CAAA,kBAAA,EAAqB,OAAO,CAAA,CAAA,CAAG,CAAC;iBACjD;AAED,gBAAA,IAAI,WAAW,IAAI,UAAU,EAAE;AAC7B,oBAAA,YAAY,IAAI,CAAW,QAAA,EAAA,UAAU,CAAU,OAAA,EAAA,WAAW,GAAG,CAAC;iBAC/D;gBAED,IAAI,QAAQ,EAAE;AACZ,oBAAA,YAAY,IAAI,aAAa,GAAG,QAAQ,GAAG,GAAG,CAAC;iBAChD;gBAED,YAAY,IAAI,GAAG,CAAC;gBACpB,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;gBAEzD,IAAI,eAAe,GAAW,IAAW,CAAC;AAC1C,gBAAA,IAAI,WAAW,IAAI,UAAU,EAAE;oBAC7B,eAAe,GAAG,WAAW,CAAC;iBAC/B;qBAAM,IAAI,OAAO,EAAE;oBAClB,eAAe,GAAG,OAAO,CAAC;iBAC3B;gBAED,IAAI,eAAe,EAAE;AACnB,oBAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA,yDAAA,EAA4D,eAAe,CAAA,sCAAA,EAAyC,SAAS,CAAkB,eAAA,EAAA,SAAS,CAAI,EAAA,CAAA,CAAC,CAAC,CAAC;AACzM,oBAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA,gFAAA,EAAmF,eAAe,CAAA,cAAA,EAAiB,SAAS,CAAkB,eAAA,EAAA,SAAS,CAAI,EAAA,CAAA,CAAC,CAAC,CAAC;AACxM,oBAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA,2CAAA,EAA8C,eAAe,CAAA,mDAAA,EAAsD,SAAS,CAAkB,eAAA,EAAA,SAAS,CAAI,EAAA,CAAA,CAAC,CAAC,CAAC;AACxM,oBAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA,sEAAA,EAAyE,eAAe,CAAA,2BAAA,EAA8B,SAAS,CAAkB,eAAA,EAAA,SAAS,CAAI,EAAA,CAAA,CAAC,CAAC,CAAC;iBAC5M;aACF;SACF;AAED,QAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAEvE,QAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;;AAGnC,QAAA,IAAI,MAAM,KAAK,EAAE,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAClC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,UAA2B,CAAC,CAAC;SAC7E;QAED,QAAQ,IAAI,GAAG,CAAC;QAChB,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrD,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,GAAG,GAAG,EAAE,IAAI,gBAAgB,CAAC,CAAC;AAC1E,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAExB,QAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE,CAAC;KAChD;AAEO,IAAA,WAAW,CAAC,KAAa,EAAA;AAC/B,QAAA,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;KACpD;AAEO,IAAA,QAAQ,CAAC,KAAY,EAAE,IAAqB,EAAE,KAAuB,EAAA;AAC3E,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YAChB,OAAO;SACR;QAED,IAAI,WAAW,GAAc,IAAW,CAAC;AACzC,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,YAAA,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC9C,WAAW,GAAG,IAAI,CAAC;aACpB;YAED,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;gBAChC,IAAI,OAAO,GAAoB,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC9D,gBAAA,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;oBAC3B,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAA2B,wBAAA,EAAA,IAAI,CAAC,EAAE,CAAM,IAAA,CAAA,CAAC,CAAC;iBACxE;qBAAM;AACL,oBAAA,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAAA,wCAAA,EAA2C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA,aAAA,CAAe,CAAC,CAAC;iBACrH;AACD,gBAAA,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AAC1C,gBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;aAC3B;SACF;QAED,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAyB,sBAAA,EAAA,WAAW,CAAC,IAAI,CAAK,EAAA,EAAA,WAAW,CAAC,OAAO,GAAG,OAAO,GAAG,YAAY,CAAA,GAAA,CAAK,CAAC,CAAC,CAAC;KAC7I;IAEO,UAAU,CAAC,IAAqB,EAAE,IAAe,EAAA;AACvD,QAAA,KAAK,MAAM,KAAK,IAAS,IAAI,CAAC,UAAU,EAAE;YACxC,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC7E,gBAAA,OAAO,IAAI,CAAC;aACb;iBAAM,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AAC7E,gBAAA,OAAO,IAAI,CAAC;aACb;SACF;AAED,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,qBAAqB,CAAC,MAAc,EAAA;AAClC,QAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAEvE,QAAA,KAAK,MAAM,KAAK,IAAS,IAAI,CAAC,UAAU,EAAE;YACxC,IAAK,KAAiB,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,GAAG,GAAG,EAAE,IAAI,gBAAgB,EAAE;AAC7E,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACxB,MAAM;aACP;SACF;KACF;AAED;;;;AAIG;AACH,IAAA,WAAW,CAAC,KAAa,EAAA;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACtC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;KAC9C;AAED;;;;;;AAMG;AACK,IAAA,SAAS,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAA;AAC/C,QAAA,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAA;YACjC,CAAC,IAAI,GAAG,CAAC;YACT,OAAO,CAAC,IAAI,OAAO;kBACf,CAAC,GAAG,KAAK;AACX,kBAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,KAAK,EAAE,GAAG,CAAC,CAAC;AACzC,SAAC,CAAC,CAAC;QACH,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;KACtD;AAEO,IAAA,WAAW,CAAC,KAAa,EAAA;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC;KACzD;AAED;;;;;AAKG;IACK,QAAQ,CAAC,IAAS,EAAE,IAAS,EAAA;QACnC,IAAI,QAAQ,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI;AACzD,eAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAEpD,QAAA,IAAI,QAAQ,GAAG,CAAC,EAAE;YAChB,QAAQ,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI;AACrD,mBAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;SACrD;AAED,QAAA,OAAO,QAAQ,CAAC;KACjB;AAED;;;;AAIG;AACH,IAAA,YAAY,CAAC,KAAa,EAAA;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACvC,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAElD,QAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACnC,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;;QAGlD,IAAI,aAAa,GAAG,aAAa,IAAI,aAAa,GAAG,CAAC,EAAE;AACtD,YAAA,OAAO,SAAS,CAAC;SAClB;QAED,OAAO,aAAa,GAAG,aAAa,GAAG,SAAS,GAAG,SAAS,CAAC;KAC9D;AAED;;;;;;AAMG;AACK,IAAA,cAAc,CAAC,KAAuB,EAAE,KAAa,EAAE,SAAiB,EAAA;QAC9E,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;SACR;QAED,IAAI,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACzC,QAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA,CAAA,EAAI,SAAS,CAAA,mBAAA,EAAsB,KAAK,CAAW,QAAA,EAAA,SAAS,CAAuB,qBAAA,CAAA,CAAC,CAAC,CAAC;AAChI,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAC3B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACxD,YAAA,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AAExC,YAAA,KAAK,CAAC,WAAW,CACf,QAAQ,CAAC,cAAc,CAAC,CAAI,CAAA,EAAA,SAAS,CAAU,OAAA,EAAA,CAAC,sBAAsB,QAAQ,CAAA,QAAA,EAAW,SAAS,CAAuB,qBAAA,CAAA,CAAC,CAAC,CAAC;SAC/H;AAED,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAC3B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC9D,YAAA,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AAExC,YAAA,KAAK,CAAC,WAAW,CACf,QAAQ,CAAC,cAAc,CAAC,CAAI,CAAA,EAAA,SAAS,CAAS,MAAA,EAAA,CAAC,sBAAsB,QAAQ,CAAA,QAAA,EAAW,SAAS,CAAuB,qBAAA,CAAA,CAAC,CAAC,CAAC;SAC9H;KACF;IAED,kBAAkB,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;IAEO,cAAc,CAAC,QAAgB,EAAE,QAAuB,EAAA;AAC9D,QAAA,IAAI,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC;QAE5C,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC;AACrC,mBAAA,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC;AACvC,mBAAA,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC;AACzC,mBAAA,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC;mBACxC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,EACjD;gBACA,gBAAgB,GAAG,QAAQ,CAAC;aAC7B;iBAAM;AACL,gBAAA,OAAO,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;aACxF;SACF;QAED,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,QAAA,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE;AACrC,YAAA,QAAQ,IAAI,CAAO,IAAA,EAAA,MAAM,KAAK,CAAC,EAAE,GAAG,CAAC;SACtC;AAED,QAAA,OAAO,QAAQ,CAAC;KACjB;uGAxkBU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAqB,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,2BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA;;2FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACAD;;AAEG;MAKU,gBAAgB,CAAA;AAQjB,IAAA,cAAA,CAAA;AANV;;;;AAIG;AACH,IAAA,WAAA,CACU,cAA8B,EAAA;QAA9B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAEtC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;QAC/C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1G,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,IAAI,CAClD,GAAG,CACD,MAAM,IAAG;YACP,MAAM,OAAO,GAA0B,EAAE,CAAC;AAC1C,YAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;gBAC1B,OAAO,CAAC,IAAI,CAAC;oBACX,KAAK,EAAE,KAAK,CAAC,IAAI;oBACjB,KAAK,EAAE,KAAK,CAAC,OAAO;AACpB,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,WAAW,EAAE;AACX,wBAAA,YAAY,EAAE,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,WAAW,GAAG,SAAS;AAC9E,qBAAA;AACgB,iBAAA,CAAC,CAAC;aACtB;AAED,YAAA,OAAO,OAAO,CAAC;SAChB,CACF,CAAC,CAAC;KACN;AAED;;AAEG;IAEH,WAAW,GAAW,IAAW,CAAC;AAElC;;AAEG;IAEH,QAAQ,GAAW,IAAW,CAAC;AAG/B,IAAA,IAAI,GAAgB;AAClB,QAAA,WAAW,EAAE,mBAAmB;KACjC,CAAA;AAED;;AAEG;IACK,QAAQ,GAAW,IAAW,CAAC;AAEvC;;AAEG;AACM,IAAA,QAAQ,CAAoC;AAE5C,IAAA,OAAO,CAA2B;AAElC,IAAA,cAAc,CAAoB;AAE3C;;AAEG;IACH,WAAW,CAAC,aAA8B,EAAE,MAAoB,EAAA;AAC9D,QAAA,IAAI,QAAQ,CAAC;AACb,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1B,YAAA,IAAI,KAAK,CAAC,OAAO,KAAK,aAAa,EAAE;gBACnC,QAAQ,GAAG,KAAK,CAAC;gBACjB,MAAM;aACP;SACF;QAED,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACxC,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;SAC5C;KACF;uGA/EU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,oICf7B,mtBAgBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAvB,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAwB,iBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAxB,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDDa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,mtBAAA,EAAA,CAAA;gFAuC5B,WAAW,EAAA,CAAA;sBADV,KAAK;gBAON,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;;;ME3BK,qBAAqB,CAAA;uGAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAArB,qBAAqB,EAAA,YAAA,EAAA,CAX9B,gBAAgB,CAAA,EAAA,OAAA,EAAA,CARhB,YAAY;YACZ,aAAa;YACb,WAAW;YACX,mBAAmB;YACnB,uBAAuB;AACvB,YAAA,sBAAsB,aAWtB,gBAAgB,CAAA,EAAA,CAAA,CAAA;AAGP,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,EATrB,SAAA,EAAA;YACT,cAAc;YACd,2BAA2B;YAC3B,mBAAmB;AACpB,SAAA,EAAA,OAAA,EAAA,CAdC,YAAY;YACZ,aAAa;YACb,WAAW;YACX,mBAAmB;YACnB,uBAAuB;YACvB,sBAAsB,CAAA,EAAA,CAAA,CAAA;;2FAcb,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBArBjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,aAAa;wBACb,WAAW;wBACX,mBAAmB;wBACnB,uBAAuB;wBACvB,sBAAsB;AACvB,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACZ,gBAAgB;AACjB,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT,cAAc;wBACd,2BAA2B;wBAC3B,mBAAmB;AACpB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,gBAAgB;AACjB,qBAAA;AACF,iBAAA,CAAA;;;MCZY,kBAAkB,CAAA;IAErB,SAAS,GAAG,OAAO,CAAC;IAE5B,aAAa,GAAG,KAAK,CAAC;IACtB,OAAO,GAAG,KAAK,CAAC;IAEhB,IACI,QAAQ,CAAC,QAAgB,EAAA;QAC3B,IAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AACvF,YAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;SACzC;aAAM;AACL,YAAA,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;SAC1B;KACF;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IAGD,KAAK,GAAG,IAAI,CAAC;IAGb,KAAK,GAAG,OAAO,CAAC;IAGhB,MAAM,GAAG,OAAO,CAAC;IAGjB,OAAO,GAAG,eAAe,CAAC;AAG1B,IAAA,IAAI,GAAkB;AACpB,QAAA,KAAK,EAAE,iBAAiB;KACR,CAAC;AAEnB;;AAEG;IAEH,UAAU,GAAG,GAAG,CAAC;AAGjB,IAAA,MAAM,GAAG,IAAI,YAAY,EAAO,CAAC;AAGjC,IAAA,MAAM,GAAG,IAAI,YAAY,EAAO,CAAC;IAGjC,OAAO,GAAe,IAAW,CAAC;IAElC,kBAAkB,GAAG,KAAK,CAAC;AAE3B,IAAA,WAAA,GAAA;KACC;AAGD,IAAA,QAAQ,CAAC,KAAU,EAAA;QACjB,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;KAC5D;AAEO,IAAA,4BAA4B,CAAC,UAAkB,EAAA;AACrD,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,kBAAkB,GAAG,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,UAAU,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SACxH;KACF;IAED,IAAI,GAAA;QACF,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;KACpB;IAED,KAAK,GAAA;QACH,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAEnB,QAAA,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC;KAC7C;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;aAAM;YACL,IAAI,CAAC,IAAI,EAAE,CAAC;SACb;KACF;IAEO,YAAY,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YACpE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;SAC5C;KACF;IAEO,eAAe,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;YACvE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;SAC/C;KACF;IAED,WAAW,GAAA;QACT,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;IAED,eAAe,GAAA;QACb,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;SACrD,EAAE,GAAG,CAAC,CAAC;KACT;uGAjHU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,6ZCnB/B,m2CAuBA,EAAA,MAAA,EAAA,CAAA,qyCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDJa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,m2CAAA,EAAA,MAAA,EAAA,CAAA,qyCAAA,CAAA,EAAA,CAAA;wDAY1B,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAcN,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAIN,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAIN,MAAM,EAAA,CAAA;sBADL,KAAK;gBAIN,OAAO,EAAA,CAAA;sBADN,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;gBASN,UAAU,EAAA,CAAA;sBADT,KAAK;gBAIN,MAAM,EAAA,CAAA;sBADL,MAAM;gBAIP,MAAM,EAAA,CAAA;sBADL,MAAM;gBAIP,OAAO,EAAA,CAAA;sBADN,SAAS;uBAAC,SAAS,CAAA;gBASpB,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAA;;;ME7D9B,uBAAuB,CAAA;uGAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,EAThC,YAAA,EAAA,CAAA,kBAAkB,CAMlB,EAAA,OAAA,EAAA,CAAA,YAAY,aAHZ,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAMT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,YAHhC,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAGH,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAXnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,kBAAkB;AACnB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,kBAAkB;AACnB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;AACb,qBAAA;AACF,iBAAA,CAAA;;;MCNY,oBAAoB,CAAA;AAqBtB,IAAA,QAAA,CAAA;IAlBT,OAAO,GAAgB,IAAW,CAAC;IAGnC,cAAc,GAAG,GAAG,CAAC;IAGrB,YAAY,GAAG,EAAE,CAAC;AAGlB,IAAA,IAAI,GAAoB;AACtB,QAAA,WAAW,EAAE,oCAAoC;KAC/B,CAAC;AAErB,IAAA,UAAU,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC,CAAC;AAEpC,IAAA,SAAS,CAAM;AAEvB,IAAA,WAAA,CACS,QAAmB,EAAA;QAAnB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;KACxB;IAEJ,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAK;YACjE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAC/C,SAAC,CAAC,CAAC;KACJ;IAED,WAAW,GAAA;QACT,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;IAED,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAClB,gBAAA,GAAG,EAAE,CAAC;AACN,gBAAA,QAAQ,EAAE,QAAQ;AACnB,aAAA,CAAC,CAAC;SACJ;KACF;uGAzCU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,4KCRjC,+oBAaA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDLa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;+BACE,wBAAwB,EAAA,QAAA,EAAA,+oBAAA,EAAA,CAAA;8EAMlC,OAAO,EAAA,CAAA;sBADN,KAAK;gBAIN,cAAc,EAAA,CAAA;sBADb,KAAK;gBAIN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;;;MEJK,yBAAyB,CAAA;uGAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,EATlC,YAAA,EAAA,CAAA,oBAAoB,CAMpB,EAAA,OAAA,EAAA,CAAA,YAAY,aAHZ,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAMX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAHlC,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAGH,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAXrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,oBAAoB;AACrB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,oBAAoB;AACrB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;AACb,qBAAA;AACF,iBAAA,CAAA;;;MCPY,+BAA+B,CAAA;IAG1C,WAAW,GAAqB,IAAW,CAAC;IAG5C,YAAY,GAAqB,IAAW,CAAC;IAG7C,6BAA6B,GAAG,EAAE,CAAC;IAGnC,8BAA8B,GAAG,EAAE,CAAC;IAGpC,kBAAkB,GAAG,KAAK,CAAC;IAG3B,YAAY,GAAW,GAAG,CAAC;IAG3B,YAAY,GAAW,GAAG,CAAC;IAG3B,iBAAiB,GAAW,OAAO,CAAC;IAGpC,UAAU,GAAW,IAAI,CAAC;IAG1B,8BAA8B,GAAG,GAAG,CAAC;IAGrC,kBAAkB,GAAG,EAAE,CAAC;IAGxB,oBAAoB,GAAG,IAAI,CAAC;IAG5B,SAAS,GAAuB,IAAW,CAAC;AAG5C,IAAA,QAAQ,CAAC,KAAU,EAAA;AACjB,QAAA,IAAI,IAAI,CAAC,oBAAoB,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;AAC9F,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;SACxB;KACF;IAEkB,MAAM,GAAG,MAAM,CAAC;AAEnC,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,MAAM,MAAM,GAAW,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YAC1D,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAExC,OAAO,CAAA,aAAA,EAAgB,MAAM,CAAA,GAAA,CAAK,CAAC;KACpC;uGAvDU,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,yvBCP5C,y0EA0DA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAyB,kBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDnDa,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAJ3C,SAAS;+BACE,mCAAmC,EAAA,QAAA,EAAA,y0EAAA,EAAA,CAAA;8BAM7C,WAAW,EAAA,CAAA;sBADV,KAAK;gBAIN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAIN,6BAA6B,EAAA,CAAA;sBAD5B,KAAK;gBAIN,8BAA8B,EAAA,CAAA;sBAD7B,KAAK;gBAIN,kBAAkB,EAAA,CAAA;sBADjB,KAAK;gBAIN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAIN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAIN,iBAAiB,EAAA,CAAA;sBADhB,KAAK;gBAIN,UAAU,EAAA,CAAA;sBADT,KAAK;gBAIN,8BAA8B,EAAA,CAAA;sBAD7B,KAAK;gBAIN,kBAAkB,EAAA,CAAA;sBADjB,KAAK;gBAIN,oBAAoB,EAAA,CAAA;sBADnB,KAAK;gBAIN,SAAS,EAAA,CAAA;sBADR,SAAS;uBAAC,WAAW,CAAA;gBAItB,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MEzC9B,0BAA0B,CAAA;IAGrC,WAAW,GAAqB,IAAW,CAAC;IAG5C,YAAY,GAAqB,IAAW,CAAC;IAG7C,MAAM,GAAqB,IAAW,CAAC;IAGvC,MAAM,GAAqB,IAAW,CAAC;IAGvC,6BAA6B,GAAG,EAAE,CAAC;IAGnC,8BAA8B,GAAG,EAAE,CAAC;IAGpC,eAAe,GAAG,EAAE,CAAC;IAGrB,eAAe,GAAG,EAAE,CAAC;IAGrB,YAAY,GAAW,GAAG,CAAC;IAG3B,YAAY,GAAW,GAAG,CAAC;IAG3B,iBAAiB,GAAW,OAAO,CAAC;IAGpC,UAAU,GAAW,IAAI,CAAC;IAG1B,8BAA8B,GAAG,GAAG,CAAC;IAGrC,kBAAkB,GAAG,EAAE,CAAC;IAGxB,oBAAoB,GAAG,IAAI,CAAC;IAG5B,SAAS,GAAuB,IAAW,CAAC;AAG5C,IAAA,QAAQ,CAAC,KAAU,EAAA;AACjB,QAAA,IAAI,IAAI,CAAC,oBAAoB,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;AAC9F,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;SACxB;KACF;IAEkB,MAAM,GAAG,MAAM,CAAC;AAEnC,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,MAAM,MAAM,GAAW,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YAC1D,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAExC,OAAO,CAAA,aAAA,EAAgB,MAAM,CAAA,GAAA,CAAK,CAAC;KACpC;AAED,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,MAAM,MAAM,GAAW,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YAC1D,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAExC,OAAO,CAAA,YAAA,EAAe,MAAM,CAAA,GAAA,CAAK,CAAC;KACnC;uGAvEU,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,szBCPvC,81EA0DA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,kBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDnDa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,SAAS;+BACE,8BAA8B,EAAA,QAAA,EAAA,81EAAA,EAAA,CAAA;8BAMxC,WAAW,EAAA,CAAA;sBADV,KAAK;gBAIN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAIN,MAAM,EAAA,CAAA;sBADL,KAAK;gBAIN,MAAM,EAAA,CAAA;sBADL,KAAK;gBAIN,6BAA6B,EAAA,CAAA;sBAD5B,KAAK;gBAIN,8BAA8B,EAAA,CAAA;sBAD7B,KAAK;gBAIN,eAAe,EAAA,CAAA;sBADd,KAAK;gBAIN,eAAe,EAAA,CAAA;sBADd,KAAK;gBAIN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAIN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAIN,iBAAiB,EAAA,CAAA;sBADhB,KAAK;gBAIN,UAAU,EAAA,CAAA;sBADT,KAAK;gBAIN,8BAA8B,EAAA,CAAA;sBAD7B,KAAK;gBAIN,kBAAkB,EAAA,CAAA;sBADjB,KAAK;gBAIN,oBAAoB,EAAA,CAAA;sBADnB,KAAK;gBAIN,SAAS,EAAA,CAAA;sBADR,SAAS;uBAAC,WAAW,CAAA;gBAItB,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MErC9B,oBAAoB,CAAA;uGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,iBAZ7B,+BAA+B;AAC/B,YAAA,0BAA0B,aAOtB,YAAY;AACZ,YAAA,uBAAuB,aAL3B,+BAA+B;YAC/B,0BAA0B,CAAA,EAAA,CAAA,CAAA;AAOjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAJzB,YAAY;YACZ,uBAAuB,CAAA,EAAA,CAAA,CAAA;;2FAGlB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAdhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,+BAA+B;wBAC/B,0BAA0B;AAC3B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,+BAA+B;wBAC/B,0BAA0B;AAC3B,qBAAA;AACC,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,uBAAuB;AAC1B,qBAAA;AACJ,iBAAA,CAAA;;;MCJY,qBAAqB,CAAA;AA4DtB,IAAA,iBAAA,CAAA;IA1DF,SAAS,GAAG,IAAI,eAAe,CAAgB;AACrD,QAAA,qBAAqB,EAAE,iBAAiB;AACxC,QAAA,gBAAgB,EAAE,IAAI;AACtB,QAAA,eAAe,EAAE,cAAc;AAC/B,QAAA,kBAAkB,EAAE,qBAAqB;AACzC,QAAA,aAAa,EAAE,KAAK;AACpB,QAAA,YAAY,EAAE,cAAc;AAC5B,QAAA,kBAAkB,EAAE,eAAe;AACnB,KAAA,CAAC,CAAC;AAEpB,IAAA,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;IAEzC,IACI,OAAO,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AACzB,YAAA,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;SACrC;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;AAC5B,YAAA,OAAO,CAAC,eAAe,GAAG,YAAY,CAAC;SACxC;AAED,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC9B;IAGD,QAAQ,GAAY,KAAK,CAAC;;AAI1B,IAAA,MAAM,GAAG,IAAI,YAAY,EAAW,CAAC;IAE7B,MAAM,GAAY,IAAW,CAAC;AAEtC,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IAED,IAAI,KAAK,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,EAAE;AACzB,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACtB;SACF;KACF;AAED;;AAEG;AACH,IAAA,QAAQ,CAAyC;AAEjD;;AAEG;AACH,IAAA,SAAS,CAA2B;AAEpC,IAAA,WAAA,CACU,iBAAoC,EAAA;QAApC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;KACzC;IAEL,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC/B;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAED;;;AAGG;AACH,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC3B,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACvC;AAED,IAAA,UAAU,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,EAAE;AACzB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;SACpB;KACF;uGAjGU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,sIANrB,CAAC;AACV,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA,CAAC,0BCbJ,y4CA6BA,EAAA,MAAA,EAAA,CAAA,qMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDda,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAVjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,aAGvB,CAAC;AACV,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,2BAA2B,CAAC;AACpD,4BAAA,KAAK,EAAE,IAAI;yBACZ,CAAC,EAAA,QAAA,EAAA,y4CAAA,EAAA,MAAA,EAAA,CAAA,qMAAA,CAAA,EAAA,CAAA;sFAiBE,OAAO,EAAA,CAAA;sBADV,KAAK;gBAcN,QAAQ,EAAA,CAAA;sBADP,KAAK;;;QAKN,MAAM,EAAA,CAAA;sBAFL,MAAM;;;ME5BI,0BAA0B,CAAA;uGAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,EAT/B,YAAA,EAAA,CAAA,qBAAqB,CAMrB,EAAA,OAAA,EAAA,CAAA,YAAY,aAHZ,qBAAqB,CAAA,EAAA,CAAA,CAAA;AAMhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,YAH/B,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAGP,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAXtC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV,qBAAqB;AACxB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,qBAAqB;AACxB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,YAAY;AACf,qBAAA;AACJ,iBAAA,CAAA;;;MCCY,iBAAiB,CAAA;AAkDlB,IAAA,iBAAA,CAAA;IAhDV,MAAM,GAAY,KAAK,CAAC;IAChB,SAAS,GAAG,KAAK,CAAC;AAC1B,IAAA,QAAQ,GAAyB,MAAK,GAAG,CAAC;AAC1C,IAAA,SAAS,GAAc,MAAK,GAAG,CAAC;IAEhC,IACI,QAAQ,CAAC,QAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;KAClD;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IAED,IACI,KAAK,CAAC,KAAuB,EAAA;AAC/B,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC;AAC1C,YAAA,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;SACtB;aAAM;AACL,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,YAAA,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;SACvB;KACF;AAED,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;YAC3B,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;QAED,OAAO,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC;KAChC;IAGD,IAAI,GAAW,EAAE,CAAC;IAGlB,OAAO,GAAW,IAAW,CAAC;AAG9B,IAAA,IAAI,GAAiB;AACnB,QAAA,KAAK,EAAE,eAAe;AACtB,QAAA,OAAO,EAAE,iBAAiB;KACX,CAAC;IAElB,IAAI,GAAW,SAAS,CAAC;AAEzB,IAAA,WAAA,CACU,iBAAoC,EAAA;QAApC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;KACzC;AAEL;;;AAGG;AACH,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACvC;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,EAAwB,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAED;;;AAGG;AACH,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC3B,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACvC;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;KACxC;uGA3FU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EARjB,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECfH,+yBAyBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDRa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAZ7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAGlB,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC;AAChD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,+yBAAA,EAAA,CAAA;sFAUG,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAUF,KAAK,EAAA,CAAA;sBADR,KAAK;gBAoBN,IAAI,EAAA,CAAA;sBADH,KAAK;gBAIN,OAAO,EAAA,CAAA;sBADN,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;;;MEvCK,sBAAsB,CAAA;uGAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAAtB,sBAAsB,EAAA,YAAA,EAAA,CAV/B,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAMjB,YAAY;AACZ,YAAA,mBAAmB,aAJnB,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAOR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YAJ/B,YAAY;YACZ,mBAAmB,CAAA,EAAA,CAAA,CAAA;;2FAGV,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAZlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,iBAAiB;AAClB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,iBAAiB;AAClB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;AACpB,qBAAA;AACF,iBAAA,CAAA;;;ACPY,MAAA,wBAAwB,GAAQ;AAC3C,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,kBAAkB,CAAC;AACjD,IAAA,KAAK,EAAE,IAAI;EACX;MAcW,kBAAkB,CAAA;IACpB,IAAI,GAAG,MAAM,CAAC;IACd,QAAQ,GAAG,GAAG,CAAC;IACf,SAAS,GAAG,IAAI,CAAC;AACjB,IAAA,KAAK,CAAM;IACX,OAAO,GAAW,IAAW,CAAC;IAC9B,UAAU,GAAW,IAAW,CAAC;IACjC,WAAW,GAAW,IAAW,CAAC;IAClC,IAAI,GAAW,IAAW,CAAC;IAC3B,SAAS,GAAW,IAAW,CAAC;IAChC,QAAQ,GAAW,IAAW,CAAC;IAC/B,SAAS,GAAW,IAAW,CAAC;IAChC,YAAY,GAAY,IAAW,CAAC;IACpC,QAAQ,GAAY,IAAW,CAAC;IAChC,QAAQ,GAAY,IAAW,CAAC;IAChC,MAAM,GAAY,IAAW,CAAC;IAC9B,IAAI,GAAW,IAAW,CAAC;IAC3B,QAAQ,GAAY,IAAW,CAAC;IAChC,gBAAgB,GAAG,UAAU,CAAC;IAC9B,SAAS,GAAG,KAAK,CAAC;IAClB,YAAY,GAAW,IAAW,CAAC;IACN,cAAc,GAAe,IAAW,CAAC;;AAErE,IAAA,UAAU,GAAsB,IAAI,YAAY,EAAE,CAAC;;AAEnD,IAAA,OAAO,GAAsB,IAAI,YAAY,EAAE,CAAC;;AAEhD,IAAA,MAAM,GAAsB,IAAI,YAAY,EAAE,CAAC;;AAE/C,IAAA,OAAO,GAAsB,IAAI,YAAY,EAAE,CAAC;AAC1D,IAAA,KAAK,CAAM;IACX,KAAK,GAAW,IAAW,CAAC;IAC5B,KAAK,GAAqB,IAAW,CAAC;IACtC,MAAM,GAAG,KAAK,CAAC;AACf,IAAA,IAAI,CAAM;IACV,KAAK,GAAU,IAAW,CAAC;AAC3B,IAAA,eAAe,CAAM;IACrB,eAAe,GAAW,IAAW,CAAC;AACtC,IAAA,sBAAsB,CAAM;IAC5B,GAAG,GAAW,IAAW,CAAC;IAC1B,MAAM,GAAW,IAAW,CAAC;AAC7B,IAAA,MAAM,CAAM;IACZ,aAAa,GAAW,IAAW,CAAC;IACpC,SAAS,GAAW,IAAW,CAAC;AAChC,IAAA,cAAc,CAAM;IACpB,aAAa,GAAG,KAAK,CAAC;IACtB,OAAO,GAAG,KAAK,CAAC;AAChB,IAAA,aAAa,GAAa,MAAK,GAAG,CAAC;AACnC,IAAA,cAAc,GAAa,MAAK,GAAG,CAAC;AACpC,IAAA,WAAA,GAAA,GAAgB;IAChB,QAAQ,GAAA;AACN,QAAA,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC;AAC/B,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;AACD,IAAA,IAAa,IAAI,GAAA;QACf,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IACD,IAAI,IAAI,CAAC,GAAW,EAAA;AAClB,QAAA,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACjB,IAAI,CAAC,QAAQ,EAAE,CAAC;AAChB,QAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACpB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAChC;IACD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QACxC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAW,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG;AACV,YAAA,GAAG,EAAE,OAAO;YACZ,GAAG,EAAE,IAAI,CAAC,gBAAgB;AAC1B,YAAA,GAAG,EAAE,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAQ,MAAA,CAAA;SACtC,CAAC;QACF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACvC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,YAAA,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACxB,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;gBACb,IAAI,CAAC,GAAG,EAAE,CAAC;AACX,gBAAA,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;aAC1B;AAAM,iBAAA,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACvB,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,gBAAA,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE;oBACjC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;iBAC9C;AACD,gBAAA,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE;oBAC5B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;iBACrD;aACF;iBAAM;AACL,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACvB;SACF;AACD,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACjB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,YAAA,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACxB,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACb,gBAAA,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAChB,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC1C;qBAAM;AACL,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBACrB;aACF;SACF;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC3C;AACD,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;AAC5D,YAAA,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;gBAClD,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE,CAAC;aAC9C;iBAAM;gBACL,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;aACtD;YACD,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC;YACzD,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;KACF;AACD,IAAA,gBAAgB,CAAC,EAAY,EAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;KACzB;AACD,IAAA,iBAAiB,CAAC,EAAY,EAAA;AAC5B,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;KAC1B;AACD,IAAA,gBAAgB,CAAC,GAAY,EAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;KACrB;IACD,KAAK,CAAC,KAAc,EAAE,IAAa,EAAA;AACjC,QAAA,IAAI,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,KAAK,QAAQ,CAAC,aAAa,EAAE;YACnH,OAAO;SACR;AACD,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,KAAK,GAAG,KAAK,CAAC;AACd,YAAA,GAAG,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC;YAChD,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,iBAAiB,EAAE;gBACvD,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;aACjE;iBAAM,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE;gBAC/D,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,CAAC;AAC/D,gBAAA,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrB,gBAAA,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAChC,gBAAA,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;gBACpC,KAAK,CAAC,MAAM,EAAE,CAAC;aAChB;SACF;aAAM;YACL,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,iBAAiB,EAAE;gBACvD,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,cAAc,CAAC;gBACzD,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,YAAY,CAAC;aACtD;AAAM,iBAAA,IAAK,QAAgB,CAAC,WAAW,CAAC,IAAK,QAAgB,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE;gBACvF,KAAK,GAAI,QAAgB,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;AACrD,gBAAA,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC;gBAC9D,GAAG,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;aACjC;YACD,OAAO,EAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAC,CAAC;SACjC;AACD,QAAA,OAAO,IAAI,CAAC;KACb;IACD,WAAW,GAAA;AACT,QAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAAE,EAAE;YACxE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;AAC9D,gBAAA,OAAO,KAAK,CAAC;aACd;SACF;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AACD,IAAA,cAAc,CAAC,CAAS,EAAA;QACtB,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SAChC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KAChC;AACD,IAAA,QAAQ,CAAC,GAAW,EAAA;AAClB,QAAA,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAE;AAC/C,QAAA,OAAO,GAAG,CAAC;KACZ;AACD,IAAA,QAAQ,CAAC,GAAW,EAAA;AAClB,QAAA,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAE;AACzC,QAAA,OAAO,GAAG,CAAC;KACZ;IACD,MAAM,CAAC,KAAa,EAAE,GAAW,EAAA;QAC/B,IAAI,CAAC,EAAE,CAAC,CAAC;AACT,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE;YACb,OAAO;SACR;QACD,KAAK,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;AACzD,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBACjB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACtD,oBAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAChC,oBAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;iBACzC;qBAAM;oBACL,MAAM;iBACP;AACD,gBAAA,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;aACtB;SACF;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;KACnD;AACD,IAAA,MAAM,CAAC,GAAW,EAAA;AAChB,QAAA,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;AAC7D,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACjB,gBAAA,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrB,gBAAA,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACnB,gBAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,gBAAA,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;oBACzC,CAAC,GAAG,CAAC,CAAC;iBACP;qBAAM;oBACL,MAAM;iBACP;aACF;SACF;KACF;AACD,IAAA,kBAAkB,CAAC,CAAQ,EAAA;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC;AACvD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAS,CAAC;QAChC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAG;;AAE5E,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACpB,YAAA,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE;gBAClD,GAAG,CAAC,KAAK,EAAE,CAAC;aACb;AACD,YAAA,IAAI,GAAG,CAAC,KAAK,KAAK,CAAC,EAAE;AACnB,gBAAA,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;oBACjE,GAAG,CAAC,KAAK,EAAE,CAAC;iBACb;aACF;YACD,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AACjC,gBAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACpB,gBAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;iBACxB;aACF,EAAE,CAAC,CAAC,CAAC;SACP;aAAM;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACpB,YAAA,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACrD,GAAG,CAAC,KAAK,EAAE,CAAC;aACb;YACD,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AACjC,gBAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACpB,gBAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;iBACxB;aACF,EAAE,CAAC,CAAC,CAAC;SACP;KACF;AACD,IAAA,WAAW,CAAC,CAAQ,EAAA;AAClB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;AACxH,YAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACpB,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YACjD,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YACvC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SACxD;KACF;AACD,IAAA,SAAS,CAAC,CAAgB,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO;SACR;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC;AAC/B,QAAA,IAAI,GAAG,EACL,KAAK,EACL,GAAG,CAAC;QACN,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC;;AAEtD,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,MAAM,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE;AAChD,YAAA,GAAG,GAAG,IAAI,CAAC,KAAK,EAAS,CAAC;AAC1B,YAAA,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;AAClB,YAAA,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;AACd,YAAA,IAAI,GAAG,GAAG,KAAK,KAAK,CAAC,EAAE;AACrB,gBAAA,KAAK,GAAG,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3E,gBAAA,GAAG,GAAG,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;aAC3C;AACD,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;AAC5B,YAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC,CAAC,cAAc,EAAE,CAAC;SACpB;AAAM,aAAA,IAAK,CAAC,KAAK,EAAE,EAAG;AACrB,YAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;SACrB;AAAM,aAAA,IAAI,CAAC,KAAK,EAAE,EAAE;YACnB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;YACzD,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/B,YAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC,CAAC,cAAc,EAAE,CAAC;SACpB;AAAM,aAAA,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,EAAE;YAChC,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,aAAiC,CAAC;YAC/F,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACvC,YAAA,IAAI,cAAc,KAAK,YAAY,IAAI,CAAC,cAAqB,GAAG,CAAC,IAAI,UAAU,EAAE;AAC/E,gBAAA,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;gBACnC,CAAC,CAAC,cAAc,EAAE,CAAC;aACpB;SACF;AAAM,aAAA,IAAI,CAAC,CAAC,GAAG,KAAK,YAAY,EAAE;YACjC,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,aAAiC,CAAC;YAC/F,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACvC,YAAA,IAAI,cAAc,KAAK,YAAY,IAAI,CAAC,cAAqB,GAAG,CAAC,IAAI,UAAU,EAAE;AAC/E,gBAAA,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;gBACnC,CAAC,CAAC,cAAc,EAAE,CAAC;aACpB;SACF;KACF;AACD,IAAA,UAAU,CAAC,CAAgB,EAAA;AACzB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO;SACR;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC;AAC/B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAS,CAAC;QAChC,IAAI,IAAI,GAAG,CAAC,CAAC;AACb,QAAA,IAAI,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;AACpB,QAAA,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,KAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE;YACvE,OAAO;SACR;AAAM,aAAA,IAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAG;YAC1B,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,KAAK,CAAC,EAAE;gBAC7B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACrC,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;aACrC;YACD,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACjC,YAAA,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;AAChB,gBAAA,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC3B,gBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACzB,oBAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACf,oBAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBACnB,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,oBAAA,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACxB,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;;wBAExC,MAAM,KAAK,GAAG,MAAW;AACvB,4BAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnB,yBAAC,CAAC;AACF,wBAAA,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;qBACtB;yBAAM;AACL,wBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;qBAClB;oBACD,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC5C,wBAAA,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;qBAChC;iBACF;aACF;YACD,CAAC,CAAC,cAAc,EAAE,CAAC;SACpB;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;SACxB;KACF;AACD;;AAEG;IACH,OAAO,GAAA;QACL,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,aAAiC,CAAC;QAC/F,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,cAAc,KAAK,YAAY,IAAI,cAAqB,GAAG,UAAU,EAAE;AACzE,YAAA,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;SACpC;KACF;IACD,WAAW,CAAC,KAAa,EAAE,GAAW,EAAA;AACpC,QAAA,IAAI,CAAC,CAAC;AACN,QAAA,KAAK,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;AAC5C,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACjB,gBAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;aACzC;SACF;KACF;IACD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAChE;AACD,IAAA,QAAQ,CAAC,KAAe,EAAA;;QAEtB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC;QACrD,IAAI,SAAS,GAAG,CAAC,CAAC,EAChB,CAAC,EACD,CAAC,EACD,GAAG,CAAC;AACN,QAAA,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;AACtC,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACjB,gBAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AACxC,gBAAA,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;oBAC1B,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACzB,oBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACzB,wBAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;wBACnB,SAAS,GAAG,CAAC,CAAC;wBACd,MAAM;qBACP;iBACF;AACD,gBAAA,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;oBACrB,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClC,MAAM;iBACP;aACF;iBAAM;AACL,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AACvC,oBAAA,GAAG,EAAE,CAAC;iBACP;AACD,gBAAA,IAAK,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE;oBAC7B,SAAS,GAAG,CAAC,CAAC;iBACf;aACF;SACF;QACD,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;aAAM,IAAI,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE;AAC/C,YAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,aAAa,EAAE;;;gBAGjE,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,EAAE;oBAC3C,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE,CAAC;iBAC9C;gBACD,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;aAC/B;iBAAM;;;gBAGL,IAAI,CAAC,WAAW,EAAE,CAAC;aACpB;SACF;aAAM;YACL,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;SAC/G;AACD,QAAA,QAAQ,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE;KAC1D;AACD,IAAA,YAAY,CAAC,KAAY,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO;SACR;AACD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAClC,QAAA,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC;AACzD,QAAA,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,MAAK;YACpC,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,KAAK,QAAQ,CAAC,aAAa,EAAE;gBAChE,OAAO;aACR;YACD,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,YAAA,IAAI,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;AAC7C,gBAAA,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;aACpB;iBAAM;AACL,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aACjB;SACF,EAAE,EAAE,CAAC,CAAC;AACP,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1B;AACD,IAAA,aAAa,CAAC,KAAY,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;SAChC;aAAM;AACL,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;SAC/B;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1B;AACD,IAAA,iBAAiB,CAAC,KAAY,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO;SACR;QACD,UAAU,CAAC,MAAK;YACd,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAChC,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAChB,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACxB,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;aACxB;SACF,EAAE,CAAC,CAAC,CAAC;KACP;IACD,gBAAgB,GAAA;QACd,MAAM,cAAc,GAAG,EAAE,CAAC;AAC1B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACzB,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;AACjD,gBAAA,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACxB;SACF;AACD,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAChC;AACD,IAAA,WAAW,CAAC,CAAM,EAAA;QAChB,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC;QAC7E,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS,EAAE;AACvD,YAAA,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;AAC1B,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAChC;KACF;IACD,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,KAAK,EAAE,CAAC;KACnG;IACD,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KAC3C;uGA3eU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAFlB,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,OAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CAAC,wBAAwB,CAAC,EAT3B,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;AAGiG,4GAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAQhG,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAb9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,CAAA;;;AAGiG,4GAAA,CAAA;;AAE3G,oBAAA,IAAI,EAAE;AACJ,wBAAA,gCAAgC,EAAE,QAAQ;AAC1C,wBAAA,+BAA+B,EAAE,OAAO;AACzC,qBAAA;oBACD,SAAS,EAAE,CAAC,wBAAwB,CAAC;AACtC,iBAAA,CAAA;wDAEU,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACgC,cAAc,EAAA,CAAA;sBAAnD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAE1B,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBAEG,OAAO,EAAA,CAAA;sBAAhB,MAAM;gBAEG,MAAM,EAAA,CAAA;sBAAf,MAAM;gBAEG,OAAO,EAAA,CAAA;sBAAhB,MAAM;gBA0BM,IAAI,EAAA,CAAA;sBAAhB,KAAK;;;MC3EK,uBAAuB,CAAA;uGAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,EAFnB,YAAA,EAAA,CAAA,kBAAkB,CAFvB,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAGjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,YAJxB,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAIX,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,kBAAkB,CAAC;oBAC7B,YAAY,EAAE,CAAC,kBAAkB,CAAC;AACnC,iBAAA,CAAA;;;MCDY,oBAAoB,CAAA;IAEvB,gBAAgB,GAAW,CAAC,CAAC;IAErC,IACI,eAAe,CAAC,eAAuB,EAAA;QACzC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;KACrD;AAED,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAC9B;IAGD,oBAAoB,GAAW,sBAAsB,CAAC;IAGtD,kBAAkB,GAAW,SAAS,CAAC;IAGvC,mBAAmB,GAAY,IAAI,CAAC;IAGpC,YAAY,GAAW,IAAI,CAAC;IAG5B,MAAM,GAAW,EAAE,CAAC;IAGpB,UAAU,GAAY,IAAI,CAAC;IAG3B,YAAY,GAAY,KAAK,CAAC;AAE9B,IAAA,WAAA,GAAA,GAAiB;uGAlCN,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,yVCPjC,uvBAiBA,EAAA,MAAA,EAAA,CAAA,48OAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDVa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,uBAAuB,EAAA,QAAA,EAAA,uvBAAA,EAAA,MAAA,EAAA,CAAA,48OAAA,CAAA,EAAA,CAAA;wDAS7B,eAAe,EAAA,CAAA;sBADlB,KAAK;gBAUN,oBAAoB,EAAA,CAAA;sBADnB,KAAK;gBAIN,kBAAkB,EAAA,CAAA;sBADjB,KAAK;gBAIN,mBAAmB,EAAA,CAAA;sBADlB,KAAK;gBAIN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAIN,MAAM,EAAA,CAAA;sBADL,KAAK;gBAIN,UAAU,EAAA,CAAA;sBADT,KAAK;gBAIN,YAAY,EAAA,CAAA;sBADX,KAAK;;;MEvBK,yBAAyB,CAAA;uGAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,EATlC,YAAA,EAAA,CAAA,oBAAoB,CAGpB,EAAA,OAAA,EAAA,CAAA,YAAY,aAGZ,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAGX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YANlC,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAMH,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAXrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,oBAAoB;AACrB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;AACb,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,oBAAoB;AACrB,qBAAA;AACF,iBAAA,CAAA;;;MCNY,eAAe,CAAA;AAG1B,IAAA,IAAI,GAAe;AACjB,QAAA,WAAW,EAAE,SAAS;KACT,CAAC;IAGhB,WAAW,GAAY,KAAK,CAAC;AAEnB,IAAA,eAAe,CAAqB;AAEtC,IAAA,OAAO,CAA4B;IAE3C,IACI,MAAM,CAAC,MAAqB,EAAA;AAC9B,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;YACtB,IAAI,CAAC,eAAe,GAAG,8CAA8C,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,2BAA2B,CAAC;SAChK;KACF;uGApBU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,+HCR5B,+wBAaA,EAAA,MAAA,EAAA,CAAA,+wEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDLa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,+wBAAA,EAAA,MAAA,EAAA,CAAA,+wEAAA,CAAA,EAAA,CAAA;8BAO3B,IAAI,EAAA,CAAA;sBADH,KAAK;gBAMN,WAAW,EAAA,CAAA;sBADV,KAAK;gBAQF,MAAM,EAAA,CAAA;sBADT,KAAK;;;MELK,oBAAoB,CAAA;uGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAT7B,YAAA,EAAA,CAAA,eAAe,CAGf,EAAA,OAAA,EAAA,CAAA,YAAY,aAGZ,eAAe,CAAA,EAAA,CAAA,CAAA;AAGN,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAN7B,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAMH,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAXhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,eAAe;AAChB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;AACb,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,eAAe;AAChB,qBAAA;AACF,iBAAA,CAAA;;;ACZD;;AAEG;MAEU,eAAe,CAAA;AAE1B;;;;;AAKG;IACH,SAAS,CAAC,GAAqB,EAAE,IAAiB,EAAA;AAChD,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,EAAC,UAAU,EAAE,EAAC,cAAc,EAAE,kBAAkB,EAAC,EAAC,CAAC,CAAC;AAC5E,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAC3B;uGAXU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAAf,eAAe,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;;ACHX;;;;AAIG;MACU,eAAe,CAAA;AAwBJ,IAAA,IAAA,CAAA;AAtBtB;;AAEG;IACO,UAAU,GAAA;AAClB,QAAA,OAAO,EAAE,CAAC;KACX;AAED;;;;;AAKG;IACO,oBAAoB,GAAA;AAC5B,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;;;AAIG;AACH,IAAA,WAAA,CAAsB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;KACrC;AAED;;;;;AAKG;IACH,SAAS,CAAC,GAAW,EAAE,MAAmB,EAAA;QACxC,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;KACnD;AAED;;;;AAIG;AACH,IAAA,YAAY,CAAC,GAAW,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAC7BP,KAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EACX,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAC1E,CAAC;KACH;AAED;;;;AAIG;AACH,IAAA,aAAa,CAAC,GAAW,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAC7BA,KAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAChB,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAC1E,CAAC;KACH;AAED;;;;;AAKG;IACH,aAAa,CAAC,GAAW,EAAE,MAAmB,EAAA;QAC5C,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;KAClD;AAED;;;;;;AAMG;AACK,IAAA,iBAAiB,CAAC,GAAW,EAAE,cAAuB,EAAE,MAAmB,EAAA;QACjF,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AAChD,QAAA,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;AAExB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,GAAG,EAAE,OAAO,CAAC;AACnD,aAAA,IAAI,CACHA,KAAG,CAAC,GAAG,IAAI,GAAG,CAAC,EACf,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAC1E,CAAC;KACL;AAED;;;;;AAKG;IACH,UAAU,CAAC,GAAW,EAAE,OAAY,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;KAC3D;AAED;;;;;AAKG;IACH,0BAA0B,CAAC,GAAW,EAAE,OAAY,EAAA;AAClD,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;KAC1D;AAED;;;;;;;AAOG;AACK,IAAA,kBAAkB,CAAC,GAAW,EAAE,OAAY,EAAE,MAAe,EAAE,cAAuB,EAAA;QAC5F,IAAI,YAAY,GAAG,OAAO,CAAC;QAC3B,IAAI,MAAM,EAAE;AACV,YAAA,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;SACxC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,IAAI,CAAC,UAAU,EAAE,GAAG,GAAG,EACvB,YAAY,EACZ,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CACnCA,KAAG,CAAC,GAAG,IAAI,GAAG,CAAC,EACf,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAC1E,CAAC;KACL;AAED;;;;;AAKG;IACH,SAAS,CAAC,GAAW,EAAE,OAAY,EAAA;QACjC,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;KACnD;AAED;;;;;;AAMG;AACK,IAAA,iBAAiB,CAAC,GAAW,EAAE,OAAY,EAAE,MAAe,EAAA;QAClE,IAAI,YAAY,GAAG,OAAO,CAAC;QAC3B,IAAI,MAAM,EAAE;AACV,YAAA,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;SACxC;AAED,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AAC3E,aAAA,IAAI,CACHA,KAAG,CAAC,GAAG,IAAI,GAAG,CAAC,EACf,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAC1E,CAAC;KACL;AAED;;;;AAIG;AACH,IAAA,YAAY,CAAC,GAAW,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC;AAC7C,aAAA,IAAI,CACHA,KAAG,CAAC,GAAG,IAAI,GAAG,CAAC,EACf,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAC1E,CAAC;KACL;AAED;;;;AAIG;AACH,IAAA,qBAAqB,CAAC,KAAwB,EAAA;QAC5C,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;AACrD,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;KACjB;AAED;;;;;AAKG;IACH,WAAW,CAAC,KAAwB,EAAE,oBAA6B,EAAA;QACjE,IAAI,oBAAoB,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;AAChD,YAAA,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;SACf;AAED,QAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,QAAA,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC;KAChC;AAED;;;;AAIG;AACH,IAAA,QAAQ,CAAI,CAAI,EAAA;QACd,OAAW,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;KAC1C;AAED;;;;AAIG;AACK,IAAA,UAAU,CAAC,cAAwB,EAAA;QACzC,MAAM,OAAO,GAAQ,EAAE,CAAC;AACxB,QAAA,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC;QAE9B,IAAI,cAAc,EAAE;AAClB,YAAA,OAAO,CAAC,YAAY,GAAG,aAAa,CAAC;SACtC;AAED,QAAA,OAAO,OAAO,CAAC;KAChB;AAEF;;MCxOY,mBAAmB,CAAA;AAEtB,IAAA,QAAQ,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AAC5B,IAAA,IAAI,CAAgB;AAErC,IAAA,WAAA,CAAY,GAAkB,EAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAC5B,QAAQ,CAAC,MAAM,GAAG,CAAC,CACpB,CAAC;KACH;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC1B;AAED,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;KAClB;AAEF;;ACrBD;;AAEG;IACS,eAKX;AALD,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,cAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,IAAA,cAAA,CAAA,cAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,IAAA,cAAA,CAAA,cAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAS,CAAA;AACT,IAAA,cAAA,CAAA,cAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACP,CAAC,EALW,cAAc,KAAd,cAAc,GAKzB,EAAA,CAAA,CAAA;;ACRD;;ACAA;;AAEG;;;;"}
1
+ {"version":3,"file":"entake-particle.mjs","sources":["../../src/app/modules/background-carousel/carousel-options.model.ts","../../src/app/modules/background-carousel/background-carousel.directive.ts","../../src/app/modules/background-carousel/particle-background-carousel.module.ts","../../src/app/modules/paginator/pagination-event.model.ts","../../src/app/modules/popover/popover.component.ts","../../src/app/modules/popover/popover.component.html","../../src/app/modules/paginator/paginator.component.ts","../../src/app/modules/paginator/paginator.component.html","../../src/app/modules/popover/popover.module.ts","../../src/app/modules/paginator/particle-paginator.module.ts","../../src/app/modules/tooltip/tooltip.directive.ts","../../src/app/modules/profile-pic/profile-pic.component.ts","../../src/app/modules/tooltip/tooltip.module.ts","../../src/app/modules/profile-pic/particle-profile-pic.module.ts","../../src/app/modules/push-container/push-container.component.ts","../../src/app/modules/push-container/push-container.component.html","../../src/app/modules/push-container/particle-push-container.module.ts","../../src/app/shared/services/dialog.service.ts","../../src/app/modules/dialog/dialog.component.ts","../../src/app/modules/dialog/dialog.component.html","../../src/app/modules/rich-text/rich-text.component.ts","../../src/app/modules/rich-text/rich-text.component.html","../../src/app/modules/rich-text/render-rich-text.component.ts","../../src/app/modules/dialog/dialog.module.ts","../../src/app/modules/rich-text/particle-rich-text.module.ts","../../src/app/modules/icons/models/particle-icons-regular.model.ts","../../src/app/modules/icons/models/particle-icons-brands.model.ts","../../src/app/modules/icons/models/particle-icons-solid.model.ts","../../src/app/modules/icons/models/fontawesome-icons-brands.model.ts","../../src/app/modules/icons/models/fontawesome-icons-regular.model.ts","../../src/app/modules/icons/models/fontawesome-icons-solid.model.ts","../../src/app/modules/icons/services/icons.service.ts","../../src/app/modules/endpoint-state/components/endpoint-state.component.ts","../../src/app/modules/endpoint-state/components/endpoint-state.component.html","../../src/app/modules/icons/components/icon-select.component.ts","../../src/app/modules/icons/components/icon-select.component.html","../../src/app/modules/endpoint-state/endpoint-state.module.ts","../../src/app/modules/icons/particle-icons.module.ts","../../src/app/modules/idle-timeout/idle-timer.ts","../../src/app/modules/idle-timeout/idle-timeout.component.ts","../../src/app/modules/idle-timeout/idle-timeout.component.html","../../src/app/modules/idle-timeout/particle-idle-timeout.module.ts","../../src/app/modules/ordinal-number-pipe/ordinal-number.pipe.ts","../../src/app/modules/date-picker/components/calendar/calendar.component.ts","../../src/app/modules/date-picker/components/calendar/calendar.component.html","../../src/app/modules/date-picker/date-picker.component.ts","../../src/app/modules/date-picker/date-picker.component.html","../../src/app/modules/ordinal-number-pipe/ordinal-number-pipe.module.ts","../../src/app/modules/date-picker/components/date-range-picker/date-range-picker.component.ts","../../src/app/modules/date-picker/components/date-range-picker/date-range-picker.component.html","../../src/app/modules/date-picker/date-picker.module.ts","../../src/app/modules/dropdown/dropdown.component.ts","../../src/app/modules/dropdown/dropdown.component.html","../../src/app/modules/dropdown/dropdown.module.ts","../../src/app/modules/multi-select/multi-select.component.ts","../../src/app/modules/multi-select/multi-select.component.html","../../src/app/modules/multi-select/multi-select.module.ts","../../src/app/modules/keyfilter/keyfilter.directive.ts","../../src/app/modules/keyfilter/keyfilter.module.ts","../../src/app/modules/notification/services/notification.service.ts","../../src/app/modules/notification/notification.component.ts","../../src/app/modules/notification/notification.component.html","../../src/app/modules/notification/notification.module.ts","../../src/app/modules/week-picker/week-picker.component.ts","../../src/app/modules/week-picker/week-picker.component.html","../../src/app/modules/week-picker/week-picker.module.ts","../../src/app/modules/color-picker/color-picker.component.ts","../../src/app/modules/color-picker/color-picker.component.html","../../src/app/modules/color-picker/color-picker.module.ts","../../src/app/modules/slider/slider.component.ts","../../src/app/modules/slider/slider.component.html","../../src/app/modules/slider/slider.module.ts","../../src/app/modules/accordion/directives/accordion-content.directive.ts","../../src/app/modules/accordion/directives/accordion-header.directive.ts","../../src/app/modules/accordion/directives/accordion-item.directive.ts","../../src/app/modules/accordion/accordion.component.ts","../../src/app/modules/accordion/accordion.component.html","../../src/app/modules/accordion/accordion.module.ts","../../src/app/modules/theming/models/theme.model.ts","../../src/app/shared/services/local-storage.service.ts","../../src/app/modules/theming/services/theme-change-detection.service.ts","../../src/app/modules/theming/services/theming.service.ts","../../src/app/modules/theming/components/theming.component.ts","../../src/app/modules/theming/components/theming.component.html","../../src/app/modules/theming/theming.module.ts","../../src/app/modules/slideover/slideover.component.ts","../../src/app/modules/slideover/slideover.component.html","../../src/app/modules/slideover/particle-slideover.module.ts","../../src/app/modules/scroll-to-top/scroll-to-top.component.ts","../../src/app/modules/scroll-to-top/scroll-to-top.component.html","../../src/app/modules/scroll-to-top/particle-scroll-to-top.module.ts","../../src/app/modules/layout/components/layout-fullwidth-sidebar/layout-fullwidth-sidebar.component.ts","../../src/app/modules/layout/components/layout-fullwidth-sidebar/layout-fullwidth-sidebar.component.html","../../src/app/modules/layout/components/layout-full-framing/layout-full-framing.component.ts","../../src/app/modules/layout/components/layout-full-framing/layout-full-framing.component.html","../../src/app/modules/layout/layout.module.ts","../../src/app/modules/toggle-switch/toggle-switch.component.ts","../../src/app/modules/toggle-switch/toggle-switch.component.html","../../src/app/modules/toggle-switch/toggle-switch.module.ts","../../src/app/modules/checkbox/checkbox.component.ts","../../src/app/modules/checkbox/checkbox.component.html","../../src/app/modules/checkbox/checkbox.module.ts","../../src/app/modules/input-mask/input-mask.component.ts","../../src/app/modules/input-mask/input-mask.module.ts","../../src/app/modules/progress-bar/progress-bar.component.ts","../../src/app/modules/progress-bar/progress-bar.component.html","../../src/app/modules/progress-bar/progress-bar.module.ts","../../src/app/modules/loader/components/loader.component.ts","../../src/app/modules/loader/components/loader.component.html","../../src/app/modules/loader/loader.module.ts","../../src/app/shared/interceptors/json.interceptor.ts","../../src/app/shared/services/base-data.service.ts","../../src/app/shared/models/observable-container.ts","../../src/app/shared/enums/endpoint-status.enum.ts","../../src/public_api.ts","../../src/entake-particle.ts"],"sourcesContent":["/**\n * Carousel Options for the Background Carousel Directive\n */\nexport class CarouselOptions {\n /**\n * Image locations to loop through\n */\n images: string[];\n\n /**\n * Transition Time (in seconds)\n */\n transitionTime: number;\n\n /**\n * Length of Time to display each background (in seconds)\n */\n viewTime: number;\n\n /**\n * Whether or not to reset the interval on init.\n */\n resetInterval: boolean;\n\n /**\n * Constructor to help with initializing the associated directive\n *\n * @param images\n * @param transitionTime\n * @param viewTime\n * @param resetInterval\n */\n constructor(images: string[], transitionTime: number, viewTime: number, resetInterval: boolean) {\n this.images = images;\n this.transitionTime = transitionTime;\n this.viewTime = viewTime;\n this.resetInterval = resetInterval;\n }\n}\n","import {Directive, ElementRef, Input, OnDestroy} from '@angular/core';\r\nimport {BehaviorSubject} from 'rxjs';\r\nimport {CarouselOptions} from './carousel-options.model';\r\n\r\n/**\r\n * This directive when applied to a div will hijack its background and apply a carousel of images.\r\n */\r\n@Directive({\r\n selector: '[particleCarousel]'\r\n})\r\nexport class BackgroundCarouselDirective implements OnDestroy {\r\n\r\n /**\r\n * Carousel Options\r\n */\r\n private _options = new BehaviorSubject<CarouselOptions>(new CarouselOptions([], 2 , 10, false));\r\n\r\n /**\r\n * Reference to the interval for swapping the background image.\r\n */\r\n private _interval: any;\r\n\r\n /**\r\n * Sets the options for the carousel\r\n *\r\n * @param value\r\n */\r\n @Input('particleCarouselOptions')\r\n set options(value: CarouselOptions) {\r\n this._options.next(value);\r\n }\r\n\r\n /**\r\n * Gets the options for the carousel\r\n */\r\n get options(): CarouselOptions {\r\n return this._options.getValue();\r\n }\r\n\r\n /**\r\n * Constructor will set up all of the behavior for the carousel based on the options supplied by the user.\r\n *\r\n * @param el\r\n */\r\n constructor(el: ElementRef) {\r\n this._options.subscribe(\r\n () => {\r\n this.initOptions();\r\n\r\n if (this.options.resetInterval) {\r\n clearInterval(this._interval);\r\n el.nativeElement.style.backgroundImage = null;\r\n this._interval = null;\r\n }\r\n\r\n if (this.options.images.length > 0 && !this._interval) {\r\n let imagePointer = 0;\r\n el.nativeElement.style.backgroundSize = 'cover';\r\n el.nativeElement.style.backgroundPosition = 'center center';\r\n el.nativeElement.style.backgroundRepeat = 'no-repeat';\r\n el.nativeElement.style.transition = `all ${this.options.transitionTime}s ease`;\r\n el.nativeElement.style.backgroundImage = `url(${this.options.images[imagePointer++]})`;\r\n\r\n if (!this._interval) {\r\n this._interval = setInterval(() => {\r\n el.nativeElement.style.backgroundImage = `url(${this.options.images[imagePointer++ % this.options.images.length]})`;\r\n }, this.options.viewTime * 1000);\r\n }\r\n }\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Initializes the options to default settings for whatever isn't provided by the developer\r\n */\r\n private initOptions(): void {\r\n if (!this.options.images) {\r\n this.options.images = [];\r\n }\r\n\r\n if (!this.options.transitionTime) {\r\n this.options.transitionTime = 2;\r\n }\r\n\r\n if (!this.options.viewTime) {\r\n this.options.viewTime = 10;\r\n }\r\n }\r\n\r\n /**\r\n * Clears the interval when the component is destroyed.\r\n */\r\n ngOnDestroy(): void {\r\n clearInterval(this._interval);\r\n }\r\n}\r\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {BackgroundCarouselDirective} from './background-carousel.directive';\n\n@NgModule({\n declarations: [\n BackgroundCarouselDirective\n ],\n imports: [\n CommonModule\n ],\n exports: [\n BackgroundCarouselDirective\n ]\n})\nexport class ParticleBackgroundCarouselModule {\n}\n","/**\n * Representation of a pagination event\n */\nexport class PaginationEvent {\n\n /**\n * Current Page\n */\n activePage: number;\n\n /**\n * Size of a Page\n */\n pageSize: number;\n\n /**\n * Total Size to paginate over\n */\n totalLength: number;\n\n /**\n * Constructor that takes all variables to easily emit it in the event of pagination or page size change.\n * @param activePage\n * @param pageSize\n * @param totalLength\n */\n constructor(activePage: number, pageSize: number, totalLength: number) {\n this.activePage = activePage;\n this.pageSize = pageSize;\n this.totalLength = totalLength;\n }\n\n}\n","import { animate, AnimationEvent, style, transition, trigger } from '@angular/animations';\r\nimport { Component, EventEmitter, HostListener, Input, OnDestroy, Output, Renderer2 } from '@angular/core';\r\n\r\n/**\r\n * Component to display a popover with custom content\r\n */\r\n@Component({\r\n selector: 'particle-popover',\r\n templateUrl: './popover.component.html',\r\n styleUrls: ['./popover.component.css'],\r\n animations: [\r\n trigger('openClose', [\r\n transition('void => open', [\r\n style({ transform: 'scaleY(0.5)', opacity: 0 }),\r\n animate('200ms ease',\r\n style({ transform: 'scaleY(1)', opacity: 1 }))\r\n ]),\r\n transition('open => close', [\r\n style({ transform: 'scaleY(1)', opacity: 1 }),\r\n animate('200ms ease',\r\n style({ transform: 'scaleY(0.5)', opacity: 0 }))\r\n ]),\r\n ])\r\n ]\r\n})\r\nexport class PopoverComponent implements OnDestroy {\r\n\r\n protected readonly window = window;\r\n\r\n /**\r\n * The offset of the popover from its target (in pixels)\r\n */\r\n @Input()\r\n offset = 5;\r\n\r\n /**\r\n * Set the width of the popover in pixels (defaults to auto)\r\n */\r\n @Input()\r\n set width(width: string) {\r\n this._width = !width ? 'auto' : `${width}px`;\r\n }\r\n\r\n get width(): string {\r\n return this._width;\r\n }\r\n\r\n /**\r\n * Set the height of the popover in pixels (defaults to auto)\r\n */\r\n @Input()\r\n set height(height: string) {\r\n this._height = !height ? 'auto' : `${height}px`;\r\n }\r\n\r\n get height(): string {\r\n return this._height;\r\n }\r\n\r\n /**\r\n * A class-list to apply to the popover content\r\n */\r\n @Input()\r\n classList = 'content_color particle_popover_shadow';\r\n\r\n @Input()\r\n targetOverride: EventTarget = null as any;\r\n\r\n @Input()\r\n openDirection: 'above' | 'below' = 'above';\r\n\r\n @Input()\r\n alignment: 'left' | 'center' = 'left';\r\n\r\n @Input()\r\n scaleForMobile = '1';\r\n\r\n /**\r\n * Event emitted on popover open\r\n */\r\n @Output()\r\n opened = new EventEmitter<void>();\r\n\r\n /**\r\n * Event emitted on popover close\r\n */\r\n @Output()\r\n closed = new EventEmitter<void>();\r\n\r\n /**\r\n * Whether the popover should render\r\n */\r\n render: boolean = false;\r\n\r\n /**\r\n * Whether the popover is visible\r\n */\r\n visible: boolean = false;\r\n\r\n /**\r\n * The width of the popover\r\n */\r\n private _width = 'auto';\r\n\r\n /**\r\n * The height of the popover\r\n */\r\n private _height = 'auto';\r\n\r\n /**\r\n * The element to target\r\n * @private\r\n */\r\n private target: EventTarget = null as any;\r\n\r\n /**\r\n * The popover content container\r\n * @private\r\n */\r\n private container: HTMLDivElement = null as any;\r\n\r\n /**\r\n * Array of escape keyup unlisten functions\r\n * @private\r\n */\r\n private escapeKeyUpUnlisteners: Array<() => void> = [];\r\n\r\n /**\r\n * Dependency injection site\r\n * @param renderer the Angular renderer\r\n */\r\n constructor(private renderer: Renderer2) { }\r\n\r\n /**\r\n * Destroy component, clean up event listeners\r\n */\r\n ngOnDestroy(): void {\r\n this.removeEventListeners();\r\n }\r\n\r\n /**\r\n * Close popover on click\r\n * @param event the click MouseEvent\r\n */\r\n @HostListener('window:click', ['$event'])\r\n onClick(event: MouseEvent): void {\r\n if (this.visible) {\r\n const {pageX, pageY} = event;\r\n\r\n if (pageX > 0 && pageY > 0) {\r\n const { left, right, top, bottom } = this.container.getBoundingClientRect();\r\n const xPositionValid = pageX >= left && pageX <= right;\r\n const yPositionValid = pageY >= top && pageY <= bottom;\r\n const shouldClose = !(xPositionValid && yPositionValid);\r\n\r\n if (shouldClose) {\r\n this.close();\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Re-position popover on window resize\r\n */\r\n @HostListener('window:resize')\r\n onWindowResize(): void {\r\n if (this.visible) {\r\n this.positionPopover();\r\n }\r\n }\r\n\r\n /**\r\n * Toggle the popover from open to closed or closed to open\r\n * @param event the event whose target element will act as\r\n * the popover target. If an event is not provided,\r\n * the popover will close\r\n */\r\n toggle(event?: Event): void {\r\n if (this.targetOverride) {\r\n this.target = this.targetOverride;\r\n } else {\r\n if (event) {\r\n this.target = event.currentTarget ?? event.target as EventTarget;\r\n event.stopImmediatePropagation();\r\n } else {\r\n this.target = null as any;\r\n }\r\n }\r\n\r\n if (!this.visible && this.target) {\r\n this.open();\r\n } else {\r\n this.close();\r\n }\r\n }\r\n\r\n /**\r\n * Handle animation start\r\n * @param event the AnimationEvent\r\n */\r\n onAnimationStart(event: AnimationEvent): void {\r\n if (event.toState === 'open') {\r\n this.container = event.element;\r\n this.addEventListeners();\r\n this.positionPopover();\r\n this.opened.emit();\r\n }\r\n }\r\n\r\n /**\r\n * Handle animation end\r\n * @param event the AnimationEvent\r\n */\r\n onAnimationDone(event: AnimationEvent): void {\r\n if (event.toState === 'close') {\r\n this.render = false;\r\n this.removeEventListeners();\r\n this.closed.emit();\r\n }\r\n }\r\n\r\n /**\r\n * Open the popover\r\n * @private\r\n */\r\n private open(): void {\r\n this.render = true;\r\n this.visible = true;\r\n }\r\n\r\n /**\r\n * Close the popover\r\n */\r\n public close(): void {\r\n this.visible = false;\r\n }\r\n\r\n /**\r\n * Position the popover\r\n * @private\r\n */\r\n private positionPopover(): void {\r\n const {left, top, bottom, width} = (this.target as HTMLElement).getBoundingClientRect();\r\n const {offsetHeight, offsetWidth} = this.container;\r\n const popoverBottomLeftAnchor = bottom;\r\n const availableBottomSpace = window.innerHeight - popoverBottomLeftAnchor;\r\n const availableTopSpace = top;\r\n const offsetListHeight = offsetHeight + this.offset;\r\n let transformOrigin: string = null as any;\r\n let positionTop: string = null as any;\r\n\r\n const canOpenAbove = availableTopSpace > offsetListHeight;\r\n const canOpenBelow = availableBottomSpace > offsetListHeight;\r\n\r\n if (canOpenAbove && this.openDirection === 'above') {\r\n transformOrigin = 'bottom left';\r\n positionTop = `${top - offsetListHeight}px`;\r\n }\r\n\r\n if (canOpenBelow && this.openDirection === 'below') {\r\n transformOrigin = 'top left';\r\n positionTop = `${popoverBottomLeftAnchor + this.offset}px`;\r\n }\r\n\r\n if (!transformOrigin) {\r\n if (availableTopSpace > offsetListHeight) {\r\n transformOrigin = 'bottom left';\r\n positionTop = `${top - offsetListHeight}px`;\r\n } else if (availableBottomSpace > offsetListHeight) {\r\n transformOrigin = 'top left';\r\n positionTop = `${popoverBottomLeftAnchor + this.offset}px`;\r\n } else {\r\n if (offsetHeight > window.innerHeight) {\r\n positionTop = '0px';\r\n } else {\r\n const availableSpace = window.innerHeight - offsetHeight;\r\n positionTop = `${String(availableSpace / 2)}px`;\r\n }\r\n\r\n transformOrigin = 'top left';\r\n }\r\n }\r\n\r\n let leftPosition = left;\r\n\r\n if (this.alignment === 'center') {\r\n leftPosition = (leftPosition - (offsetWidth/2)) + (width/2);\r\n }\r\n\r\n if ((left + offsetWidth) > window.innerWidth) {\r\n leftPosition = left - ((left + offsetWidth) - window.innerWidth) - 10;\r\n }\r\n\r\n if (leftPosition < 0) {\r\n leftPosition = 0;\r\n }\r\n\r\n this.renderer.setStyle(this.container, 'transform-origin', transformOrigin);\r\n this.renderer.setStyle(this.container, 'left', `${leftPosition}px`);\r\n this.renderer.setStyle(this.container, 'top', positionTop);\r\n }\r\n\r\n /**\r\n * Add escape keyup listeners to all focusable elements to close\r\n * the popover\r\n * @private\r\n */\r\n private addEventListeners(): void {\r\n const focusableElements = this.getFocusableElements(this.container);\r\n\r\n for (const element of focusableElements) {\r\n this.renderer.setAttribute(element, 'data-dialog-close-override', 'true');\r\n this.escapeKeyUpUnlisteners.push(\r\n this.renderer.listen(element, 'keyup', (event: KeyboardEvent) => {\r\n if (this.visible) {\r\n event.stopImmediatePropagation();\r\n\r\n const { key } = event;\r\n\r\n if (key === 'Esc' || key === 'Escape') {\r\n this.close();\r\n }\r\n }\r\n })\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Get all focusable child elements of the input node\r\n * @param node the node to query for focusable children\r\n * @param elements the found focusable elements\r\n * @private\r\n */\r\n private getFocusableElements(node: Node, elements: Array<Element> = []): Array<any> {\r\n if (node.hasChildNodes()) {\r\n node.childNodes.forEach(child => elements.concat(this.getFocusableElements(child, elements)));\r\n\r\n if ('tabIndex' in node) {\r\n const { tabIndex } = node as unknown as HTMLOrSVGElement;\r\n\r\n if (tabIndex >= 0) {\r\n elements.push(node as any);\r\n }\r\n }\r\n\r\n return elements;\r\n } else {\r\n if ('tabIndex' in node) {\r\n const { tabIndex } = node as unknown as HTMLOrSVGElement;\r\n\r\n if (tabIndex >= 0) {\r\n elements.push(node as any);\r\n }\r\n }\r\n\r\n return elements;\r\n }\r\n }\r\n\r\n /**\r\n * Invoke escape keyup unlisten functions\r\n * @private\r\n */\r\n private removeEventListeners(): void {\r\n for (const unlistener of this.escapeKeyUpUnlisteners) {\r\n unlistener();\r\n }\r\n\r\n this.escapeKeyUpUnlisteners = [];\r\n }\r\n\r\n}\r\n","<div *ngIf=\"render\" class=\"particle_popover_overlay\" [style.scale]=\"window.innerWidth > 768 ? 1 : scaleForMobile\">\n <div [cdkTrapFocus]=\"render && visible\"\n [cdkTrapFocusAutoCapture]=\"true\"\n [@openClose]=\"visible ? 'open' : 'close'\"\n [ngStyle]=\"{ 'width': width, 'height': height }\"\n [ngClass]=\"classList\"\n (@openClose.start)=\"onAnimationStart($event)\"\n (@openClose.done)=\"onAnimationDone($event)\"\n class=\"position_absolute particle_popover\">\n <ng-content></ng-content>\n </div>\n</div>\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n OnChanges,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {PaginationEvent} from './pagination-event.model';\r\nimport {PaginatorText} from '../../shared/models/particle-component-text.model';\r\nimport {PopoverComponent} from '../popover/popover.component';\r\n\r\n/**\r\n * A Particle paginator, because we hated the other ones on the market.\r\n */\r\n@Component({\r\n selector: 'particle-paginator',\r\n templateUrl: 'paginator.component.html',\r\n styleUrls: ['./paginator.component.css']\r\n})\r\nexport class PaginatorComponent implements OnChanges, AfterViewInit {\r\n\r\n private _pageSize: number = null as any;\r\n\r\n /**\r\n * An array of potential page sizes.\r\n */\r\n @Input()\r\n pageSizeOptions: Array<number> = null as any;\r\n\r\n /**\r\n * Current page size\r\n */\r\n @Input()\r\n set pageSize(pageSize: number) {\r\n this._pageSize = pageSize;\r\n this.resetPageStartEndValues();\r\n }\r\n\r\n get pageSize(): number {\r\n return this._pageSize;\r\n }\r\n\r\n /**\r\n * Total number of items\r\n */\r\n @Input()\r\n totalLength: number = null as any;\r\n\r\n @Input()\r\n showPages = false;\r\n\r\n @Input()\r\n showFirstLast = false;\r\n\r\n @Input()\r\n showButtonLabels = true;\r\n\r\n @Input()\r\n showResultsPanel = true;\r\n\r\n @Input()\r\n text: PaginatorText = {\r\n itemsPerPage: 'Items Per Page',\r\n choosePageSize: 'Choose Page Size',\r\n previousPage: 'Previous',\r\n nextPage: 'Next',\r\n disabled: 'Disabled',\r\n firstPage: 'First',\r\n lastPage: 'Last',\r\n jumpToPage: 'Jump to Page',\r\n page: 'Page',\r\n outOf: 'out of',\r\n of: 'of',\r\n results: 'Results'\r\n } as PaginatorText;\r\n\r\n /**\r\n * Event Emitter for pagination or page size change.\r\n */\r\n @Output()\r\n paginate: EventEmitter<any> = new EventEmitter();\r\n\r\n /**\r\n * Currently active page\r\n */\r\n activePage = 0;\r\n\r\n /**\r\n * For the page jump text input\r\n */\r\n pageJumpInput = '';\r\n\r\n /**\r\n * Number of pages\r\n */\r\n numberOfPages: number = null as any;\r\n\r\n pageStartingValue: number = 0;\r\n pageEndingValue: number = 0;\r\n\r\n Math = Math;\r\n\r\n /**\r\n * Recalculate number of pages on input change\r\n */\r\n ngOnChanges(): void {\r\n this.numberOfPages = this.getNumberOfPages();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.resetPageStartEndValues();\r\n }\r\n\r\n private resetPageStartEndValues(): void {\r\n this.pageStartingValue = 1;\r\n this.pageEndingValue = this.pageSize;\r\n this.numberOfPages = this.getNumberOfPages();\r\n }\r\n\r\n /**\r\n * Goes to the first page\r\n */\r\n goToFirst(): void {\r\n this.goToPage(0);\r\n }\r\n\r\n /**\r\n * Goes to the last page\r\n */\r\n goToLast(): void {\r\n this.goToPage(this.getNumberOfPages() - 1);\r\n }\r\n\r\n /**\r\n * Calculates the number of pages\r\n */\r\n getNumberOfPages(): number {\r\n return Math.ceil(this.totalLength / this.pageSize);\r\n }\r\n\r\n /**\r\n * Goes to a given page and emits a pagination event\r\n *\r\n * @param pageNumber\r\n * @param inputFocus\r\n */\r\n goToPage(pageNumber: number, inputFocus?: boolean): void {\r\n this.activePage = pageNumber;\r\n this.pageStartingValue = this.getStartingValueForPage(this.activePage);\r\n this.pageEndingValue = this.getEndingValueForPage(this.activePage);\r\n\r\n if (inputFocus) {\r\n const element: HTMLElement = document.getElementById('activePage') as HTMLElement;\r\n if (element) {\r\n element.focus();\r\n }\r\n }\r\n\r\n this.emitEvent();\r\n }\r\n\r\n /**\r\n * Emits a pagination event with the current paginator data\r\n */\r\n emitEvent(): void {\r\n this.paginate.emit(new PaginationEvent(this.activePage, this.pageSize, this.totalLength));\r\n }\r\n\r\n /**\r\n * Determines whether a given page exists or not.\r\n *\r\n * @param pageNumber\r\n */\r\n hasPage(pageNumber: number): boolean {\r\n if (pageNumber < 0) {\r\n return false;\r\n }\r\n\r\n return !(pageNumber >= this.getNumberOfPages());\r\n }\r\n\r\n /**\r\n * Gets the first value for a given page\r\n *\r\n * @param pageNumber\r\n */\r\n getStartingValueForPage(pageNumber: number): number {\r\n return (pageNumber * this.pageSize) + 1;\r\n }\r\n\r\n /**\r\n * Gets the last value for a given page\r\n *\r\n * @param pageNumber\r\n */\r\n getEndingValueForPage(pageNumber: number): number {\r\n // If it's the last page, return the total length\r\n if (pageNumber === this.getNumberOfPages() - 1) {\r\n return this.totalLength;\r\n }\r\n\r\n return (pageNumber + 1) * this.pageSize;\r\n }\r\n\r\n /**\r\n * When a page size is changed, go back to the first page and emit a pagination event\r\n */\r\n pageSizeChange(): void {\r\n this.goToFirst();\r\n this.numberOfPages = this.getNumberOfPages();\r\n }\r\n\r\n /**\r\n * Jump to a page based on user input\r\n */\r\n jumpPage(): void {\r\n let page: number = +this.pageJumpInput;\r\n page--;\r\n\r\n if (isNaN(page)) {\r\n this.pageJumpInput = '';\r\n return;\r\n }\r\n\r\n if (this.hasPage(page)) {\r\n this.goToPage(page);\r\n }\r\n\r\n if (page > this.getNumberOfPages()) {\r\n this.goToLast();\r\n }\r\n\r\n if (page <= 0) {\r\n this.goToFirst();\r\n }\r\n\r\n this.pageJumpInput = '';\r\n }\r\n\r\n}\r\n","<div class=\"row wrap_reverse center_center\">\r\n <ng-container *ngIf=\"!showPages && showResultsPanel\">\r\n <div class=\"col min_w200\">\r\n <div class=\"row v_center ptl_brdr_size ptl_brdr_radius ptl_brdr_color content_color mar_right5 mar_left5 pad_3 ent_r2l_row\">\r\n <div class=\"col size_1 center_center pad_left5 pad_right5\">\r\n <ng-container *ngIf=\"totalLength > 0 else noResults\">\r\n <div class=\"text sm ent_r2l_txt\" style=\"user-select: none\">\r\n {{pageStartingValue}} - {{pageEndingValue > totalLength ? totalLength : pageEndingValue}} {{text.of}} {{totalLength}} {{text.results}}\r\n </div>\r\n </ng-container>\r\n <ng-template #noResults>\r\n <div class=\"text sm ent_r2l_txt\" style=\"user-select: none\">\r\n 0 - 0 {{text.of}} 0 {{text.results}}\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div class=\"col center_center pad_lr5\">\r\n <button class=\"access btn clear circle_20px \" tabindex=\"0\" [attr.aria-label]=\"text.jumpToPage\"\r\n (click)=\"config.toggle($event)\">\r\n <i class=\"fas fa-cog\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"col pad_5\">\r\n <div class=\"row wrap_reverse center_center ent_r2l_row\">\r\n\r\n <ng-container *ngIf=\"showFirstLast\">\r\n <div class=\"col pad_5\">\r\n <!-- first -->\r\n <button class=\"access btnset clear\"\r\n [attr.aria-label]=\"text.firstPage\"\r\n [disabled]=\"activePage === 0\"\r\n (click)=\"goToFirst()\">\r\n <div class=\"col pad_tb5 pad_lr10 hov_glow previous_button_color ptl_brdr_radius ent_r2l_dir rc_gap\">\r\n <div [ngClass]=\"showButtonLabels ? '' : ''\">\r\n <i class=\"fas fa-angle-double-left ent_r2l_ico\"></i>\r\n </div>\r\n <div class=\"text ent_r2l_txt\" *ngIf=\"showButtonLabels\">{{text.firstPage}}</div>\r\n </div>\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"col pad_5\">\r\n <!-- previous -->\r\n <button class=\"access btnset clear\"\r\n [attr.aria-label]=\"text.previousPage\"\r\n [disabled]=\"activePage === 0\"\r\n (click)=\"hasPage(activePage - 1) ? goToPage(activePage - 1) : goToPage(activePage)\">\r\n <div class=\"col pad_tb5 pad_lr10 hov_glow previous_button_color ptl_brdr_radius ent_r2l_dir rc_gap\">\r\n <div [ngClass]=\"showButtonLabels ? '' : ''\">\r\n <i class=\"fas fa-chevron-left ent_r2l_ico\"></i>\r\n </div>\r\n <div class=\"text ent_r2l_txt\" *ngIf=\"showButtonLabels\">{{text.previousPage}}</div>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <ng-container *ngIf=\"showPages\">\r\n <div class=\"col pad_5\">\r\n <!-- navigation -->\r\n <div class=\"row v_center pad_left5 pad_right5 bg_overlay brdr content_color ptl_brdr_radius ent_r2l_dir\"\r\n style=\"flex:1 1 auto;\">\r\n <!-- jump button -->\r\n <div class=\"center_right\" style=\"width:20px;min-width:20px;\">\r\n <button class=\"access btn underline_md pag_btn clear\" tabindex=\"0\"\r\n [attr.aria-label]=\"text.jumpToPage\" *ngIf=\"activePage > 3\"\r\n (click)=\"op.toggle($event)\">...</button>\r\n </div>\r\n <!-- nav buttons -->\r\n <div class=\"center_center\" style=\"min-width:180px;\">\r\n <!-- first -->\r\n <button class=\"access btn underline_md pag_btn clear\"\r\n [attr.aria-label]=\"text.page + ' ' + (activePage - 1)\"\r\n *ngIf=\"(activePage-2 >= 0 && activePage-2 < numberOfPages)\"\r\n (click)=\"goToPage(activePage - 2, true)\">\r\n {{activePage - 1}}\r\n </button>\r\n <!-- second -->\r\n <button class=\"access btn underline_md pag_btn clear\"\r\n [attr.aria-label]=\"text.page + ' ' + (activePage)\"\r\n *ngIf=\"(activePage-1 >= 0 && activePage-1 < numberOfPages)\"\r\n (click)=\"goToPage(activePage - 1, true)\">\r\n {{activePage}}\r\n </button>\r\n <!-- active page -->\r\n <div class=\"row pag_btn active brad_3 content_color\">\r\n <button style=\"cursor:default\"\r\n class=\"access col size_1 btn center_center brad_3 bg_overlay_rev brdr\" id=\"activePage\"\r\n [attr.aria-label]=\"text.page + ' ' + (activePage + 1)\" >\r\n {{activePage + 1}}\r\n </button>\r\n </div>\r\n <!-- fourth -->\r\n <button class=\"access btn underline_md pag_btn clear\"\r\n [attr.aria-label]=\"text.page + ' ' + (activePage + 2)\"\r\n *ngIf=\"(activePage+1 >= 0 && activePage+1 < numberOfPages)\"\r\n (click)=\"goToPage(activePage + 1, true)\">\r\n {{activePage + 2}}\r\n </button>\r\n <!-- fifth -->\r\n <button class=\"access btn underline_md pag_btn clear\"\r\n [attr.aria-label]=\"text.page + ' ' + (activePage + 3)\"\r\n *ngIf=\"(activePage+2 >= 0 && activePage+2 < numberOfPages)\"\r\n (click)=\"goToPage(activePage + 2, true)\">\r\n {{activePage + 3}}\r\n </button>\r\n </div>\r\n <!-- jump button -->\r\n <div class=\"center_left\" style=\"width:20px;min-width:20px;\">\r\n <button class=\"access btn underline_md pag_btn clear\"\r\n [attr.aria-label]=\"text.jumpToPage\" *ngIf=\"activePage < getNumberOfPages() - 4\"\r\n (click)=\"op.toggle($event)\" >...</button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"col pad_5\">\r\n <!-- next -->\r\n <button class=\"access btnset clear\"\r\n [attr.aria-label]=\"text.nextPage\"\r\n [disabled]=\"activePage === numberOfPages - 1 || totalLength === 0\"\r\n (click)=\"hasPage(activePage + 1) ? goToPage(activePage + 1) : goToPage(activePage)\">\r\n <div class=\"col pad_tb5 pad_lr10 hov_glow next_button_color ptl_brdr_radius ent_r2l_dir rc_gap\">\r\n <div class=\"text ent_r2l_txt\" *ngIf=\"showButtonLabels\">{{text.nextPage}}</div>\r\n <div [ngClass]=\"showButtonLabels ? '' : ''\">\r\n <i class=\"fas fa-chevron-right ent_r2l_ico\"></i>\r\n </div>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <ng-container *ngIf=\"showFirstLast\">\r\n <div class=\"col pad_5\">\r\n <!-- last -->\r\n <button class=\"access btnset clear\"\r\n [attr.aria-label]=\"text.lastPage\"\r\n [disabled]=\"activePage === numberOfPages - 1\"\r\n (click)=\"goToLast()\">\r\n <div class=\"col pad_tb5 pad_lr10 hov_glow next_button_color ptl_brdr_radius ent_r2l_dir rc_gap\">\r\n <div class=\"text ent_r2l_txt\" *ngIf=\"showButtonLabels\">{{text.lastPage}}</div>\r\n <div [ngClass]=\"showButtonLabels ? '' : ''\">\r\n <i class=\"fas fa-angle-double-right ent_r2l_ico\"></i>\r\n </div>\r\n </div>\r\n </button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- Jump to popover -->\r\n<particle-popover #op>\r\n <ng-container *ngTemplateOutlet=\"jumpTo\"></ng-container>\r\n</particle-popover>\r\n\r\n<particle-popover #config>\r\n <ng-container *ngTemplateOutlet=\"jumpTo\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"pageSizeTemplate\"></ng-container>\r\n</particle-popover>\r\n\r\n<ng-template #jumpTo>\r\n <ng-container *ngIf=\"numberOfPages > 0\">\r\n <div class=\"row_block pad_10 center\">\r\n <div class=\"text sm text_center ent_r2l_txt\" style=\"text-align: center !important;\"><label for=\"pageJump\">{{text.jumpToPage}} ({{text.outOf}} {{numberOfPages}}):</label></div>\r\n <div class=\"row rc_gap center_center mar_top10 ent_r2l_dir\">\r\n <div class=\"col\">\r\n <input class=\"access fullwidth_input sm\" style=\"width:50px;\" maxlength=\"4\" id=\"pageJump\"\r\n type=\"text\" [attr.aria-label]=\"text.page\" name=\"pagejump\" [placeholder]=\"text.page\" [(ngModel)]=\"pageJumpInput\" />\r\n </div>\r\n <div class=\"col\">\r\n <button class=\"access btn clear\" [attr.aria-label]=\"text.jumpToPage\"\r\n (click)=\"jumpPage();op.close();config.close();\">\r\n <i class=\"fas fa-chevron-right ent_r2l_ico\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #pageSizeTemplate>\r\n <div class=\"row_block pad_10 center\">\r\n <div class=\"text sm text_center ent_r2l_txt\" style=\"text-align: center !important;\"><label for=\"pageSize\">{{text.itemsPerPage}}:</label></div>\r\n <div class=\"row rc_gap center_center mar_top10 ent_r2l_dir\">\r\n <div class=\"col\">\r\n <select class=\"access fullwidth_input content_color text sm\" style=\"width:50px;\"\r\n [(ngModel)]=\"pageSize\" (ngModelChange)=\"pageSizeChange();config.close();\" [title]=\"text.choosePageSize\" id=\"pageSize\">\r\n <option *ngFor=\"let option of pageSizeOptions\" [value]=\"option\" [attr.aria-label]=\"option\">\r\n {{option}}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PopoverComponent} from './popover.component';\n\n@NgModule({\n declarations: [PopoverComponent],\n imports: [\n CommonModule,\n A11yModule\n ],\n exports: [PopoverComponent]\n})\nexport class ParticlePopoverModule { }\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {PaginatorComponent} from './paginator.component';\nimport {BrowserModule} from '@angular/platform-browser';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {HttpClientModule} from '@angular/common/http';\nimport {BrowserAnimationsModule} from '@angular/platform-browser/animations';\nimport {ParticlePopoverModule} from '../popover/popover.module';\n\n@NgModule({\n imports: [\n CommonModule,\n BrowserModule,\n FormsModule,\n ReactiveFormsModule,\n HttpClientModule,\n BrowserAnimationsModule,\n ParticlePopoverModule\n ],\n declarations: [\n PaginatorComponent\n ],\n providers: [\n ],\n exports: [\n PaginatorComponent\n ]\n})\nexport class ParticlePaginatorModule {\n}\n","import {Directive, ElementRef, HostListener, Input, OnDestroy, Renderer2} from '@angular/core';\r\n\r\n/**\r\n * Directive to create a tooltip around the host element\r\n * TODO: Open/Close animation with AnimationFactory\r\n */\r\n@Directive({\r\n selector: '[particleTooltip]'\r\n\r\n})\r\nexport class TooltipDirective implements OnDestroy {\r\n\r\n /**\r\n * The number of pixels from the host to offset the tooltip\r\n * @private\r\n */\r\n private readonly TOOLTIP_OFFSET = 15;\r\n\r\n /**\r\n * Tooltip text input\r\n * @param text the text to set for the tooltip\r\n */\r\n @Input()\r\n set particleTooltip(text: string) {\r\n this._text = text;\r\n\r\n if (!!text) {\r\n if (!!this.tooltip?.parentElement) {\r\n this.setTooltipText();\r\n this.alignTooltip();\r\n }\r\n } else {\r\n this.deleteTooltip();\r\n }\r\n }\r\n get particleTooltip(): string { return this._text; }\r\n\r\n /**\r\n * The direction of the tooltip around the host element\r\n */\r\n @Input()\r\n tooltipPosition: 'left' | 'right' | 'top' | 'bottom' = 'bottom';\r\n\r\n /**\r\n * Whether to disable the tooltip\r\n * @param disabled disabled or not\r\n */\r\n @Input()\r\n set tooltipDisabled(disabled: boolean) {\r\n this._tooltipDisabled = disabled;\r\n if (disabled && !!this.tooltip?.parentElement) {\r\n this.deleteTooltip();\r\n }\r\n }\r\n\r\n get tooltipDisabled(): boolean {\r\n return this._tooltipDisabled;\r\n }\r\n\r\n /**\r\n * The DIV element housing the tooltip\r\n * @private\r\n */\r\n private tooltip: HTMLDivElement = null as any;\r\n\r\n /**\r\n * The tooltip text\r\n * @private\r\n */\r\n private _text: string = null as any;\r\n\r\n /**\r\n * Whether or not the tooltip is disabled\r\n * @private\r\n */\r\n private _tooltipDisabled: boolean = false;\r\n\r\n /**\r\n * Array of scroll unlisten functions\r\n * @private\r\n */\r\n private scrollUnlisteners: Array<() => void> = [];\r\n\r\n /**\r\n * Get window scroll top\r\n * @private\r\n */\r\n private static getWindowScrollTop(): number {\r\n const { scrollTop, clientTop } = document.documentElement;\r\n return (window.scrollY ?? scrollTop) - (clientTop ?? 0);\r\n }\r\n\r\n /**\r\n * Get window scroll left\r\n * @private\r\n */\r\n private static getWindowScrollLeft(): number {\r\n const { scrollLeft, clientLeft } = document.documentElement;\r\n return (window.scrollX ?? scrollLeft) - (clientLeft ?? 0);\r\n }\r\n\r\n /**\r\n * Dependency injection site\r\n * @param element the host element\r\n * @param renderer the Angular renderer\r\n */\r\n constructor(private element: ElementRef<HTMLElement>, private renderer: Renderer2) { }\r\n\r\n /**\r\n * Destroy directive, invoke scroll unlisteners\r\n */\r\n ngOnDestroy(): void {\r\n this.removeScrollListeners();\r\n }\r\n\r\n /**\r\n * Handle host mouse enter event\r\n */\r\n @HostListener('mouseenter')\r\n onMouseEnter(): void {\r\n this.showTooltip();\r\n }\r\n\r\n /**\r\n * Handle host mouse leave event\r\n */\r\n @HostListener('mouseleave')\r\n onMouseLeave(): void {\r\n this.deleteTooltip();\r\n }\r\n\r\n /**\r\n * Handle host click event\r\n */\r\n @HostListener('click')\r\n onClick(): void {\r\n this.deleteTooltip();\r\n }\r\n\r\n /**\r\n * Create tooltip, set the text and align it\r\n * @private\r\n */\r\n private showTooltip(): void {\r\n if (!this.tooltipDisabled) {\r\n this.createTooltip();\r\n this.setTooltipText();\r\n this.alignTooltip();\r\n\r\n this.addScrollListeners();\r\n }\r\n }\r\n\r\n /**\r\n * Add the tooltip to the DOM\r\n * @private\r\n */\r\n private createTooltip(): void {\r\n this.deleteTooltip();\r\n\r\n this.tooltip = this.renderer.createElement('div');\r\n this.renderer.appendChild(document.body, this.tooltip);\r\n this.renderer.addClass(this.tooltip, 'particle_tooltip');\r\n }\r\n\r\n /**\r\n * Set tooltip text\r\n * @private\r\n */\r\n private setTooltipText(): void {\r\n this.renderer.setProperty(this.tooltip, 'innerHTML', this.particleTooltip);\r\n }\r\n\r\n /**\r\n * Align the tooltip to the input position or the next best fit\r\n * @private\r\n */\r\n private alignTooltip(): void {\r\n switch (this.tooltipPosition) {\r\n case 'left':\r\n this.renderer.addClass(this.tooltip, 'left');\r\n this.alignLeft();\r\n\r\n if (this.tooltipOutOfWindow()) {\r\n this.renderer.removeClass(this.tooltip, 'left');\r\n this.renderer.addClass(this.tooltip, 'top');\r\n this.alignTop();\r\n\r\n if (this.tooltipOutOfWindow()) {\r\n this.renderer.removeClass(this.tooltip, 'top');\r\n this.renderer.addClass(this.tooltip, 'right');\r\n this.alignRight();\r\n\r\n if (this.tooltipOutOfWindow()) {\r\n this.renderer.removeClass(this.tooltip, 'right');\r\n this.renderer.addClass(this.tooltip, 'bottom');\r\n this.alignBottom();\r\n }\r\n }\r\n }\r\n break;\r\n case 'top':\r\n this.renderer.addClass(this.tooltip, 'top');\r\n this.alignTop();\r\n\r\n if (this.tooltipOutOfWindow()) {\r\n this.renderer.removeClass(this.tooltip, 'top');\r\n this.renderer.addClass(this.tooltip, 'right');\r\n this.alignRight();\r\n\r\n if (this.tooltipOutOfWindow()) {\r\n this.renderer.removeClass(this.tooltip, 'right');\r\n this.renderer.addClass(this.tooltip, 'bottom');\r\n this.alignBottom();\r\n\r\n if (this.tooltipOutOfWindow()) {\r\n this.renderer.removeClass(this.tooltip, 'bottom');\r\n this.renderer.addClass(this.tooltip, 'left');\r\n this.alignLeft();\r\n }\r\n }\r\n }\r\n break;\r\n case 'right':\r\n this.renderer.addClass(this.tooltip, 'right');\r\n this.alignRight();\r\n\r\n if (this.tooltipOutOfWindow()) {\r\n this.renderer.removeClass(this.tooltip, 'right');\r\n this.renderer.addClass(this.tooltip, 'bottom');\r\n this.alignBottom();\r\n\r\n if (this.tooltipOutOfWindow()) {\r\n this.renderer.removeClass(this.tooltip, 'bottom');\r\n this.renderer.addClass(this.tooltip, 'left');\r\n this.alignLeft();\r\n\r\n if (this.tooltipOutOfWindow()) {\r\n this.renderer.removeClass(this.tooltip, 'left');\r\n this.renderer.addClass(this.tooltip, 'top');\r\n this.alignTop();\r\n }\r\n }\r\n }\r\n break;\r\n case 'bottom':\r\n this.renderer.addClass(this.tooltip, 'bottom');\r\n this.alignBottom();\r\n\r\n if (this.tooltipOutOfWindow()) {\r\n this.renderer.removeClass(this.tooltip, 'bottom');\r\n this.renderer.addClass(this.tooltip, 'left');\r\n this.alignLeft();\r\n\r\n if (this.tooltipOutOfWindow()) {\r\n this.renderer.removeClass(this.tooltip, 'left');\r\n this.renderer.addClass(this.tooltip, 'top');\r\n this.alignTop();\r\n\r\n if (this.tooltipOutOfWindow()) {\r\n this.renderer.removeClass(this.tooltip, 'top');\r\n this.renderer.addClass(this.tooltip, 'right');\r\n this.alignRight();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Align the tooltip to the left of the host\r\n * @private\r\n */\r\n private alignLeft(): void {\r\n const hostOffset = this.getHostOffset();\r\n const left = hostOffset.left - this.tooltip.offsetWidth - this.TOOLTIP_OFFSET;\r\n const top = hostOffset.top + (this.element.nativeElement.offsetHeight - this.tooltip.offsetHeight) / 2;\r\n\r\n this.renderer.setStyle(this.tooltip, 'left', `${left}px`);\r\n this.renderer.setStyle(this.tooltip, 'top', `${top}px`);\r\n }\r\n\r\n /**\r\n * Align the tooltip to the right of the host\r\n * @private\r\n */\r\n private alignRight(): void {\r\n const hostOffset = this.getHostOffset();\r\n const left = hostOffset.left + this.element.nativeElement.offsetWidth + this.TOOLTIP_OFFSET;\r\n const top = hostOffset.top + (this.element.nativeElement.offsetHeight - this.tooltip.offsetHeight) / 2;\r\n\r\n this.renderer.setStyle(this.tooltip, 'left', `${left}px`);\r\n this.renderer.setStyle(this.tooltip, 'top', `${top}px`);\r\n }\r\n\r\n /**\r\n * Align the tooltip to the top of the host\r\n * @private\r\n */\r\n private alignTop(): void {\r\n const hostOffset = this.getHostOffset();\r\n const left = hostOffset.left + (this.element.nativeElement.offsetWidth - this.tooltip.offsetWidth) / 2;\r\n const top = hostOffset.top - this.tooltip.offsetHeight - this.TOOLTIP_OFFSET;\r\n\r\n this.renderer.setStyle(this.tooltip, 'left', `${left}px`);\r\n this.renderer.setStyle(this.tooltip, 'top', `${top}px`);\r\n }\r\n\r\n /**\r\n * Align the tooltip to the bottom of the host\r\n * @private\r\n */\r\n private alignBottom(): void {\r\n const hostOffset = this.getHostOffset();\r\n const left = hostOffset.left + (this.element.nativeElement.offsetWidth - this.tooltip.offsetWidth) / 2;\r\n const top = hostOffset.top + this.element.nativeElement.offsetHeight + this.TOOLTIP_OFFSET;\r\n\r\n this.renderer.setStyle(this.tooltip, 'left', `${left}px`);\r\n this.renderer.setStyle(this.tooltip, 'top', `${top}px`);\r\n }\r\n\r\n /**\r\n * Get the host's top and left position offset by window scroll\r\n * @private\r\n */\r\n private getHostOffset(): { left: number, top: number } {\r\n const { left, top } = this.element.nativeElement.getBoundingClientRect();\r\n const targetLeft = left + TooltipDirective.getWindowScrollLeft();\r\n const targetTop = top + TooltipDirective.getWindowScrollTop();\r\n\r\n return { left: targetLeft, top: targetTop };\r\n }\r\n\r\n /**\r\n * Remove the tooltip from the DOM\r\n * @private\r\n */\r\n private deleteTooltip(): void {\r\n if (!!this.tooltip?.parentElement) {\r\n this.renderer.removeChild(document.body, this.tooltip);\r\n this.tooltip = null as any;\r\n }\r\n\r\n this.removeScrollListeners();\r\n }\r\n\r\n /**\r\n * Checks if the tooltip fits in the window\r\n * @private\r\n */\r\n private tooltipOutOfWindow(): boolean {\r\n const { top, left } = this.tooltip.getBoundingClientRect();\r\n const { offsetWidth, offsetHeight } = this.tooltip;\r\n const { innerWidth, innerHeight } = window;\r\n\r\n return (left + offsetWidth > innerWidth) || (left < 0) || (top < 0) || (top + offsetHeight > innerHeight);\r\n }\r\n\r\n /**\r\n * Listen for scrolling on all scrollable parents of the host element\r\n * @private\r\n */\r\n private addScrollListeners(): void {\r\n const overflowRegex = /(auto|scroll)/;\r\n const overflowCheck = (node: any): boolean => {\r\n overflowRegex.lastIndex = 0;\r\n const styleDeclaration = window['getComputedStyle'](node, null);\r\n return overflowRegex.test(styleDeclaration.getPropertyValue('overflow')) ||\r\n overflowRegex.test(styleDeclaration.getPropertyValue('overflowX')) ||\r\n overflowRegex.test(styleDeclaration.getPropertyValue('overflowY'));\r\n };\r\n\r\n const parents = this.getParentElements(this.element.nativeElement);\r\n for (const parent of parents) {\r\n const scrollSelectors = parent.nodeType === 1 && parent.dataset['scrollselectors'];\r\n if (scrollSelectors) {\r\n const selectors = scrollSelectors.split(',');\r\n for (const selector of selectors) {\r\n const el = parent.querySelector(selector);\r\n if (el && overflowCheck(el)) {\r\n this.scrollUnlisteners.push(\r\n this.renderer.listen(el, 'scroll', () => this.deleteTooltip())\r\n );\r\n }\r\n }\r\n } else if (parent.nodeType !== 9 && overflowCheck(parent)) {\r\n this.scrollUnlisteners.push(\r\n this.renderer.listen(parent, 'scroll', () => this.deleteTooltip())\r\n );\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Invoke scroll unlisten functions and clear unlisteners list\r\n * @private\r\n */\r\n private removeScrollListeners(): void {\r\n for (const unlisten of this.scrollUnlisteners) {\r\n unlisten();\r\n }\r\n\r\n this.scrollUnlisteners = [];\r\n }\r\n\r\n /**\r\n * Get the parent elements for the input element\r\n * @param element the element to get parents for\r\n * @param parents the parent elements\r\n * @private\r\n */\r\n private getParentElements(element: any, parents: Array<any> = []): Array<any> {\r\n const { parentNode } = element;\r\n return !parentNode\r\n ? parents\r\n : this.getParentElements(parentNode, parents.concat([parentNode]));\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {Md5} from 'md5-typescript';\r\n\r\n/**\r\n * Profile Pic display shortcut\r\n */\r\n@Component({\r\n selector: 'particle-profile-pic',\r\n styleUrls: ['./profile-pic.component.css'],\r\n template: `\r\n <div class=\"ptl_profile_pic\"\r\n [style.height]=\"size\"\r\n [style.width]=\"size\"\r\n [style.margin]=\"margin\"\r\n [style.background-image]=\"url\"\r\n [particleTooltip]=\"toolTip\"\r\n [tooltipDisabled]=\"tooltipDisabled\"\r\n tooltipPosition=\"top\">\r\n </div>`\r\n})\r\nexport class ProfilePicComponent {\r\n\r\n /**\r\n * Size of the profile pic circle (default to 50px)\r\n */\r\n @Input()\r\n size = '50px';\r\n\r\n /**\r\n * Configurable CSS Margin\r\n */\r\n @Input()\r\n margin = '0';\r\n\r\n /**\r\n * Tooltip to explain what the picture is\r\n */\r\n @Input()\r\n toolTip: string = null as any;\r\n\r\n /**\r\n * Disable the tooltip\r\n */\r\n @Input()\r\n tooltipDisabled: boolean = false;\r\n\r\n /**\r\n * Use gravatar instead of a custom image\r\n */\r\n @Input()\r\n set gravatarEmail(gravatarEmail: string) {\r\n this.url = `url(https://www.gravatar.com/avatar/${Md5.init(gravatarEmail.trim().toLowerCase())}?d=retro&s=${this.size.substring(0, this.size.length - 2)})`;\r\n }\r\n\r\n /**\r\n * Image URL of the profile pic\r\n */\r\n @Input()\r\n set imageUrl(imageUrl: string) {\r\n this.url = `url(${imageUrl})`;\r\n }\r\n\r\n url: string = null as any;\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TooltipDirective } from './tooltip.directive';\n\n@NgModule({\n declarations: [TooltipDirective],\n imports: [CommonModule],\n exports: [TooltipDirective]\n})\nexport class ParticleTooltipModule { }\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {ProfilePicComponent} from './profile-pic.component';\r\nimport {ParticleTooltipModule} from '../tooltip/tooltip.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n ProfilePicComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n ParticleTooltipModule\r\n ],\r\n exports: [\r\n ProfilePicComponent\r\n ]\r\n})\r\nexport class ParticleProfilePicModule {\r\n}\r\n","import {AfterViewInit, Component, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output} from '@angular/core';\r\nimport {PushContainerState} from './push-container-state.model';\r\nimport {BehaviorSubject} from 'rxjs';\r\nimport {PushContainerText} from '../../shared/models/particle-component-text.model';\r\n\r\n/**\r\n * Push Container that'll either push the content or overlay the content based on screen width.\r\n */\r\n@Component({\r\n selector: 'particle-push-container',\r\n templateUrl: './push-container.component.html',\r\n styleUrls: ['./push-container.component.css']\r\n})\r\nexport class PushContainerComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n private _width = 230;\r\n\r\n /**\r\n * Width of the container in pixels.\r\n */\r\n @Input()\r\n set width(width: number) {\r\n this._width = width;\r\n this.setMargin(width + 'px');\r\n this.updateContainerState();\r\n }\r\n\r\n get width(): number {\r\n return this._width;\r\n }\r\n\r\n /**\r\n * Show the side panel on load?\r\n */\r\n @Input()\r\n showSidePanel = false;\r\n\r\n /**\r\n * Main Content ID that will be pushed by this\r\n */\r\n @Input()\r\n mainContentId: string = null as any;\r\n\r\n /**\r\n * Side to push from (left/right)\r\n */\r\n @Input()\r\n side = 'left';\r\n\r\n /**\r\n * Top offset to account for a nav bar\r\n */\r\n @Input()\r\n set topOffset(topOffset: string) {\r\n this._topOffset = topOffset;\r\n this._originalTopOffset = topOffset;\r\n this.setDefaultHeight();\r\n this.updateContainerState();\r\n }\r\n\r\n get topOffset(): string {\r\n return this._topOffset;\r\n }\r\n\r\n private _topOffset = '0px';\r\n\r\n @Input()\r\n set bottomOffset(bottomOffset: string) {\r\n this._bottomOffset = bottomOffset;\r\n this.setDefaultHeight();\r\n this.updateContainerState();\r\n }\r\n\r\n get bottomOffset(): string {\r\n return this._bottomOffset;\r\n }\r\n\r\n private _bottomOffset = '0px';\r\n\r\n /**\r\n * If the screen resizes, it will either overlay or close depending on this variable\r\n */\r\n @Input()\r\n closeOnResize = false;\r\n\r\n /**\r\n * Background color for the container\r\n */\r\n @Input()\r\n backgroundColorClass = 'content_color';\r\n\r\n /**\r\n * Breakpoint that will make the container take over the screen when it's crossed.\r\n */\r\n @Input()\r\n breakpoint = 769;\r\n\r\n /**\r\n * Whether to always hide the close button, defaults to false.\r\n */\r\n @Input()\r\n hideCloseButton = false;\r\n\r\n @Input()\r\n showTabOnClose = false;\r\n\r\n @Input()\r\n tabColorClass = 'content_color_dark_2';\r\n\r\n @Input()\r\n text: PushContainerText = {\r\n close: 'Close',\r\n expand: 'Expand'\r\n } as PushContainerText;\r\n\r\n /**\r\n * Event emitter for open\r\n */\r\n @Output()\r\n opened: EventEmitter<any> = new EventEmitter();\r\n\r\n /**\r\n * Event emitter for close\r\n */\r\n @Output()\r\n closed: EventEmitter<any> = new EventEmitter();\r\n\r\n /**\r\n * Visibility variable for accessibility\r\n */\r\n visibility = false;\r\n\r\n private unclickable: boolean = false;\r\n\r\n /**\r\n * Private variable to detect if the breakpoint is exceeded\r\n */\r\n breakpointExceeded = false;\r\n\r\n containerState: BehaviorSubject<PushContainerState> = new BehaviorSubject<PushContainerState>({} as PushContainerState);\r\n\r\n zIndex: string = null as any;\r\n private _height: string = null as any;\r\n\r\n private _lastWidth = 0;\r\n private _originalTopOffset: string = null as any;\r\n private _originalHideCloseButton: boolean = null as any;\r\n\r\n /**\r\n * Constructor\r\n */\r\n ngOnInit(): void {\r\n this.visibility = this.showSidePanel;\r\n }\r\n\r\n /**\r\n * Show or close the push container on load depending on the state passed in.\r\n */\r\n ngAfterViewInit(): void {\r\n this._lastWidth = window.innerWidth;\r\n this._originalTopOffset = this.topOffset + '';\r\n this._originalHideCloseButton = Boolean(this.hideCloseButton);\r\n this.setDefaultHeight();\r\n\r\n const element = document.getElementById(this.mainContentId);\r\n\r\n if (element) {\r\n element.style.transition = 'all 0.2s ease-in-out';\r\n }\r\n\r\n if (window.innerWidth > 768 && this.showSidePanel) {\r\n this.setMargin(this.width + 'px');\r\n } else {\r\n setTimeout(() => {\r\n this.close();\r\n }, 100);\r\n }\r\n\r\n setTimeout(() => {\r\n if (this.breakpoint && (window.innerWidth <= this.breakpoint)) {\r\n this.breakpointExceeded = true;\r\n }\r\n\r\n this.updateContainerState();\r\n });\r\n }\r\n\r\n /**\r\n * Close the push container on destroy\r\n */\r\n ngOnDestroy(): void {\r\n this.showTabOnClose = false;\r\n this.close();\r\n }\r\n\r\n /**\r\n * Monitor the screen size and perform actions as specified by the input options\r\n *\r\n * @param event\r\n */\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event: any): void {\r\n if (event.target.innerWidth <= 768 && this._lastWidth > 768 && this.showSidePanel) {\r\n if (this.closeOnResize) {\r\n this.showSidePanel = false;\r\n setTimeout(() => this.visibility = false, 200);\r\n this.closed.emit();\r\n }\r\n\r\n this.setMargin('0px');\r\n } else if (event.target.innerWidth > 768 && this.showSidePanel) {\r\n this.setMargin(this.width + 'px');\r\n this.topOffset = this._originalTopOffset + '';\r\n this.hideCloseButton = Boolean(this._originalHideCloseButton);\r\n this.zIndex = null as any;\r\n this.setDefaultHeight();\r\n }\r\n\r\n if (event.target.innerWidth > 768 && this._lastWidth <= 768 && this.closeOnResize) {\r\n this.showSidePanel = true;\r\n this.visibility = true;\r\n this.opened.emit();\r\n\r\n this.setMargin(this.width + 'px');\r\n }\r\n\r\n if (this.breakpoint) {\r\n this.breakpointExceeded = event.target.innerWidth < this.breakpoint;\r\n }\r\n\r\n this.updateContainerState();\r\n this._lastWidth = event.target.innerWidth;\r\n }\r\n\r\n /**\r\n * Open or close based on current state.\r\n */\r\n toggle(): void {\r\n if (!this.unclickable) {\r\n this.unclickable = true;\r\n setTimeout(() => this.unclickable = false, 500);\r\n\r\n if (this.showSidePanel) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Open the push container\r\n *\r\n * @param init\r\n */\r\n open(init?: boolean): void {\r\n if (init && window.innerWidth <= 768) {\r\n return;\r\n }\r\n\r\n this.visibility = true;\r\n this.showSidePanel = true;\r\n this.opened.emit({});\r\n\r\n if (window.innerWidth > 768) {\r\n this.setMargin(this.width + 'px');\r\n this._topOffset = this._originalTopOffset;\r\n } else {\r\n this._topOffset = '0';\r\n this.zIndex = 'var(--z-overlay)';\r\n this.hideCloseButton = false;\r\n this._height = '100%';\r\n }\r\n\r\n this.updateContainerState();\r\n }\r\n\r\n /**\r\n * Close the push container\r\n */\r\n close(): void {\r\n this.showSidePanel = false;\r\n this.closed.emit({});\r\n this.setMargin('0px');\r\n this.setDefaultHeight();\r\n this.updateContainerState();\r\n\r\n setTimeout(() => {\r\n this.visibility = false;\r\n this.topOffset = this._originalTopOffset + '';\r\n this.hideCloseButton = Boolean(this._originalHideCloseButton);\r\n this.zIndex = null as any;\r\n }, 200);\r\n }\r\n\r\n /**\r\n * Set the margin\r\n *\r\n * @param size\r\n */\r\n private setMargin(size: string): void {\r\n const element = document.getElementById(this.mainContentId);\r\n if (!element) {\r\n return;\r\n }\r\n\r\n if (this.showTabOnClose && size === '0px' && window.innerWidth > 768) {\r\n size = '15px';\r\n }\r\n\r\n if (this.side.toLowerCase() === 'left') {\r\n element.style.marginLeft = size;\r\n\r\n if (size === '0px') {\r\n element.style.removeProperty('margin-left');\r\n }\r\n } else if (this.side.toLowerCase() === 'right') {\r\n element.style.marginRight = size;\r\n\r\n if (size === '0px') {\r\n element.style.removeProperty('margin-right');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get the width of the container\r\n */\r\n getWidth(): string {\r\n if (this.breakpointExceeded && this.showSidePanel) {\r\n return '100%';\r\n } else {\r\n return this.width + 'px';\r\n }\r\n }\r\n\r\n /**\r\n * Get the side panel class based on the current state.\r\n */\r\n private getSidePanelClass(): string {\r\n if (this.showSidePanel) {\r\n return this.backgroundColorClass + ' layout_sidebar_active_' + this.side.toLowerCase();\r\n } else {\r\n return this.backgroundColorClass + ' layout_sidebar_inactive_' + this.side.toLowerCase();\r\n }\r\n }\r\n\r\n /**\r\n * Get the left size based on the options\r\n */\r\n private getLeftProperty(): string {\r\n if (this.side !== 'left') {\r\n return '';\r\n } else {\r\n if (this.showSidePanel) {\r\n return '0';\r\n } else {\r\n return '-' + this.width + 'px';\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get the right size based on the options\r\n */\r\n private getRightProperty(): string {\r\n if (this.side !== 'right') {\r\n return '';\r\n } else {\r\n if (this.showSidePanel) {\r\n return '0';\r\n } else {\r\n return '-' + (this.width + 20) + 'px';\r\n }\r\n }\r\n }\r\n\r\n private updateContainerState(): void {\r\n this.containerState.next({\r\n right: this.getRightProperty(),\r\n left: this.getLeftProperty(),\r\n sidePanelClass: this.getSidePanelClass(),\r\n height: this._height,\r\n topOffset: this._topOffset\r\n } as PushContainerState);\r\n }\r\n\r\n private setDefaultHeight(): void {\r\n const offset: number = +this.topOffset.replace(/\\D/g, \"\") +\r\n +this.bottomOffset.replace(/\\D/g, \"\");\r\n\r\n this._height = `calc(100% - ${offset}px)`;\r\n }\r\n\r\n}\r\n","<ng-container *ngIf=\"containerState | async as state\">\r\n <div class=\"layout_sidebar\"\r\n [ngClass]=\"state.sidePanelClass\"\r\n [style.top]=\"state.topOffset\"\r\n [style.height]=\"state.height\"\r\n [style.width]=\"(breakpointExceeded && showSidePanel) ? '100%' : width + 'px'\"\r\n [style.left]=\"state.left\"\r\n [style.right]=\"state.right\"\r\n [style.visibility]=\"visibility ? 'visible' : 'hidden'\"\r\n [style.z-index]=\"zIndex\">\r\n <div class=\"push_close_bar\" *ngIf=\"(!hideCloseButton || breakpointExceeded) && !hideCloseButton\">\r\n <button (click)=\"close()\" class=\"data_hide_button access\" tabindex=\"0\" [attr.aria-label]=\"text.close\">\r\n <i class=\"fas fa-times\"></i>\r\n </button>\r\n </div>\r\n <ng-container *ngIf=\"showSidePanel\">\r\n <ng-content></ng-content>\r\n </ng-container>\r\n </div>\r\n <button\r\n *ngIf=\"!visibility && showTabOnClose\"\r\n class=\"btn md side_panel_tab center_center hide_element access\"\r\n [ngClass]=\"tabColorClass\"\r\n [style.top]=\"state.topOffset\"\r\n [style.height]=\"'calc(100% - ' + state.topOffset + ')'\"\r\n (click)=\"open()\"\r\n [style.left]=\"side === 'left' ? 0 : undefined\"\r\n [style.right]=\"side !== 'left' ? 0 : undefined\"\r\n [particleTooltip]=\"text.expand\"\r\n [attr.aria-label]=\"text.expand\"\r\n tooltipPosition=\"right\"\r\n >\r\n <div class=\"text md\">\r\n <i [ngClass]=\"side === 'left' ? 'fas fa-angle-right' : 'fas fa-angle-left'\"></i>\r\n </div>\r\n </button>\r\n</ng-container>\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {PushContainerComponent} from './push-container.component';\r\nimport {ParticleTooltipModule} from '../tooltip/tooltip.module';\r\n\r\n@NgModule({\r\n declarations: [PushContainerComponent],\r\n imports: [\r\n CommonModule,\r\n ParticleTooltipModule\r\n ],\r\n exports: [\r\n PushContainerComponent\r\n ]\r\n})\r\nexport class ParticlePushContainerModule {\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {DialogComponent} from '../../modules/dialog/dialog.component';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DialogService {\r\n\r\n dialogs: DialogComponent[] = [];\r\n\r\n private escapeListener: (event: any) => void = event => {\r\n if (event.key === 'Esc' || event.key === 'Escape') {\r\n if (this.dialogs && this.dialogs.length) {\r\n let closeOverride = null;\r\n if ('getAttribute' in event.target) {\r\n closeOverride = (event.target as HTMLElement).getAttribute(\r\n 'data-dialog-close-override'\r\n );\r\n }\r\n\r\n if (closeOverride === null || closeOverride === '') {\r\n const topDialog = this.dialogs[this.dialogs.length - 1];\r\n\r\n if (topDialog.allowClose) {\r\n this.dialogs.pop();\r\n topDialog.close();\r\n event.stopPropagation();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n registerDialog(dialog: DialogComponent): void {\r\n if (dialog) {\r\n if (this.dialogs.length === 0) {\r\n window.addEventListener( 'keyup', this.escapeListener);\r\n document.body.classList.add('scroll_none');\r\n }\r\n this.dialogs.push(dialog);\r\n }\r\n }\r\n\r\n unregisterDialog(dialog: DialogComponent): void {\r\n if (this.dialogs.includes(dialog)) {\r\n this.dialogs = this.dialogs.filter(d => d !== dialog);\r\n }\r\n if (this.dialogs.length === 0) {\r\n window.removeEventListener( 'keyup', this.escapeListener);\r\n document.body.classList.remove('scroll_none');\r\n }\r\n }\r\n\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, Output, ViewChild} from '@angular/core';\r\nimport {DialogService} from '../../shared/services/dialog.service';\r\nimport {fromEvent, Observable} from 'rxjs';\r\nimport {map, startWith} from 'rxjs/operators';\r\nimport { animate, AnimationEvent, state, style, transition, trigger } from '@angular/animations';\r\nimport {DialogText} from '../../shared/models/particle-component-text.model';\r\n\r\n/**\r\n * Component to display a dialog with dynamic content\r\n */\r\n@Component({\r\n selector: 'particle-dialog',\r\n templateUrl: 'dialog.component.html',\r\n styleUrls: ['dialog.component.css'],\r\n animations: [\r\n trigger('dialog', [\r\n state('void', style({ transform: 'scale(0.5)', opacity: '0' })),\r\n transition('void => *', [\r\n style({ height: '*', width: '*' }),\r\n animate('.15s 0ms ease-in-out', style({ transform: 'scale(1)', opacity: '1' }) )\r\n ]),\r\n transition(':leave', [\r\n animate('.15s 0ms ease-in-out', style({ transform: 'scale(0.5)', opacity: '0' }))\r\n ]),\r\n ])\r\n ]\r\n})\r\nexport class DialogComponent {\r\n\r\n /**\r\n * Element reference to the dialog close button\r\n */\r\n @ViewChild('closeButton')\r\n closeButton: ElementRef<HTMLButtonElement> = null as any;\r\n\r\n /**\r\n * Observable to update the effective width of the dialog on screen resize\r\n */\r\n effectiveWidth$: Observable<string> = fromEvent(window, 'resize').pipe(\r\n startWith(window.innerWidth),\r\n map(_______ => window.innerWidth),\r\n map(windowWidth => {\r\n let width: number;\r\n if (this.width.includes('px')) {\r\n width = parseInt(this.width.substring(0, this.width.length - 2), 10);\r\n if (width > windowWidth) {\r\n width = windowWidth;\r\n }\r\n return width + 'px';\r\n }\r\n return this.width;\r\n })\r\n );\r\n\r\n /**\r\n * Object to operate whether the dialog is open/closed\r\n */\r\n private _object: any;\r\n\r\n /**\r\n * Object to operate whether the dialog is open/closed\r\n */\r\n @Input()\r\n set object(value: any) {\r\n if (this._object && !value) {\r\n this.dialogService.unregisterDialog(this);\r\n }\r\n if (!this._object && value) {\r\n this.dialogService.registerDialog(this);\r\n }\r\n this._object = value;\r\n }\r\n\r\n get object(): any {\r\n return this._object;\r\n }\r\n\r\n /**\r\n * Title to show at the top of the dialog\r\n */\r\n @Input()\r\n title: string = null as any;\r\n\r\n /**\r\n * Class to apply to the title of the dialog\r\n */\r\n @Input()\r\n titleClass = 'header_color';\r\n\r\n /**\r\n * Show or hide the title bar\r\n */\r\n @Input()\r\n showTitle = true;\r\n\r\n /**\r\n * Whether to show close button and allow escape to close\r\n */\r\n @Input()\r\n allowClose = true;\r\n\r\n /**\r\n * Class to apply to the body of the dialog\r\n */\r\n @Input()\r\n bodyClass = 'content_color';\r\n\r\n /**\r\n * Height of the dialog (can use any height measurement)\r\n */\r\n @Input()\r\n height = '500px';\r\n\r\n /**\r\n * Width of the dialog (can use any width measurement)\r\n */\r\n @Input()\r\n width = '900px';\r\n\r\n @Input()\r\n borderRadius = '0px';\r\n\r\n @Input()\r\n text: DialogText = {\r\n close: 'Close Dialog'\r\n } as DialogText;\r\n\r\n /**\r\n * Event Emitter for when the dialog is closed\r\n */\r\n @Output()\r\n closed: EventEmitter<any> = new EventEmitter();\r\n\r\n /**\r\n * Event emitted when dialog has finished opening\r\n */\r\n @Output()\r\n opened = new EventEmitter<void>();\r\n\r\n /**\r\n * Dependency injection site\r\n * @param dialogService the dialog service\r\n */\r\n constructor(private dialogService: DialogService) { }\r\n\r\n /**\r\n * Null the object to close the dialog, emit the close event.\r\n */\r\n close(): void {\r\n this._object = null;\r\n this.dialogService.unregisterDialog(this);\r\n }\r\n\r\n /**\r\n * Method for compatibility with legacy dialog API. Method does nothing.\r\n */\r\n open(): void { }\r\n\r\n /**\r\n * Emit closed/opened events based on state when dialog animation ends\r\n * @param event\r\n */\r\n onAnimationDone(event: AnimationEvent): void {\r\n if (event.fromState === 'void') {\r\n this.opened.emit();\r\n } else if (event.toState === 'void') {\r\n this.closed.emit();\r\n }\r\n }\r\n}\r\n","<div [ngClass]=\"{'particle_dialog_overlay' : object}\">\r\n <div *ngIf=\"object\"\r\n [@dialog] class=\"particle_dialog_container\"\r\n (@dialog.done)=\"onAnimationDone($event)\"\r\n [cdkTrapFocus]=\"true\"\r\n [cdkTrapFocusAutoCapture]=\"true\">\r\n <div class=\"col shadow particle_dialog_box\" [style.border-radius]=\"borderRadius\"\r\n *ngIf=\"effectiveWidth$ | async as effectiveWidth\"\r\n [ngStyle]=\"{'width': effectiveWidth, 'height': height}\">\r\n <!-- dialog header -->\r\n <div *ngIf=\"showTitle\" class=\"col\" [ngClass]=\"titleClass\">\r\n <div class=\"row v_center pad_5 space_between\">\r\n <div class=\"text lg bold paragraph\">\r\n {{title}}\r\n </div>\r\n <div>\r\n <ng-container *ngIf=\"allowClose\">\r\n <button class=\"access btnset clear\"\r\n [attr.aria-label]=\"text.close\"\r\n (click)=\"close()\">\r\n <div class=\"circle_20px ptl_brdr_color ptl_brdr_size ptl_input_bg_color\">\r\n <i class=\"fas fa-times\"></i>\r\n </div>\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <!-- dialog container -->\r\n <div class=\"row scroll_yauto center_center\" [ngClass]=\"bodyClass\">\r\n <div class=\"row_block width100 height100\">\r\n <!-- content -->\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n","import {AfterViewInit, Component, EventEmitter, forwardRef, Input, Output, ViewEncapsulation} from '@angular/core';\r\nimport {Editor} from '@tiptap/core';\r\nimport StarterKit from '@tiptap/starter-kit';\r\nimport Link from '@tiptap/extension-link';\r\nimport Placeholder from '@tiptap/extension-placeholder';\r\nimport TextAlign from '@tiptap/extension-text-align';\r\nimport Image from '@tiptap/extension-image';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {RichTextEditorText} from '../../shared/models/particle-component-text.model';\r\nimport {RichTextCapabilities} from './rich-text-capabilities.model';\r\n\r\nexport const RICH_TEXT_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RichTextComponent),\r\n multi: true\r\n};\r\n\r\n@Component({\r\n selector: 'particle-rich-text',\r\n templateUrl: './rich-text.component.html',\r\n styleUrls: ['./rich-text.component.css'],\r\n providers: [RICH_TEXT_VALUE_ACCESSOR],\r\n encapsulation: ViewEncapsulation.None\r\n\r\n})\r\nexport class RichTextComponent implements ControlValueAccessor, AfterViewInit {\r\n\r\n @Input()\r\n placeholder = '';\r\n\r\n @Input()\r\n hideControls = false;\r\n\r\n @Input()\r\n height = '100px';\r\n\r\n @Input()\r\n get readonly(): boolean {\r\n return this._editable;\r\n }\r\n\r\n set readonly(readonly: boolean) {\r\n this._editable = !readonly;\r\n this.editor.setEditable(this._editable);\r\n }\r\n\r\n @Input()\r\n text: RichTextEditorText = {\r\n heading1: 'Heading 1',\r\n heading2: 'Heading 2',\r\n bold: 'Bold',\r\n italic: 'Italic',\r\n strike: 'Strike',\r\n bulletedList: 'Bulleted List',\r\n orderedList: 'Ordered List',\r\n leftAlign: 'Left Align',\r\n centerAlign: 'Center Align',\r\n rightAlign: 'Right Align',\r\n justifyAlign: 'Justify Align',\r\n setLink: 'Set Link',\r\n removeLink: 'Remove Link',\r\n clearFormat: 'Clear Format',\r\n modifyLink: 'Modify Link',\r\n cancel: 'Cancel',\r\n update: 'Update',\r\n url: 'URL',\r\n addImage: 'Add Image',\r\n modifyImage: 'Modify Image'\r\n } as RichTextEditorText;\r\n\r\n @Input()\r\n capabilities = {\r\n heading: true,\r\n textDecoration: true,\r\n list: true,\r\n alignment: true,\r\n link: true,\r\n images: false\r\n } as RichTextCapabilities;\r\n\r\n @Input()\r\n borderRadius = '0px';\r\n\r\n @Output()\r\n textChanged = new EventEmitter<{\r\n htmlValue: string,\r\n textValue: string\r\n }>();\r\n\r\n showDialog: any = null;\r\n dialogLink: string = null as any;\r\n dialogType: string = null as any;\r\n\r\n /**\r\n * Function called on change\r\n */\r\n onChange: ((value: string) => void) | undefined;\r\n\r\n /**\r\n * Function called on touch\r\n */\r\n onTouched: (() => void) | undefined;\r\n\r\n private _value: string = null as any;\r\n private _editable = true;\r\n\r\n protected readonly window = window;\r\n\r\n editor = new Editor({\r\n extensions: [\r\n StarterKit,\r\n Link.configure({\r\n openOnClick: false,\r\n HTMLAttributes: {\r\n class: 'rich-text-link',\r\n target: '_blank'\r\n },\r\n }),\r\n TextAlign.configure({\r\n types: ['heading', 'paragraph'],\r\n\r\n }),\r\n Placeholder.configure({\r\n placeholder: () => this.placeholder\r\n }),\r\n Image\r\n ],\r\n editorProps: {\r\n attributes: {\r\n class: '',\r\n spellcheck: 'true',\r\n },\r\n },\r\n enablePasteRules: [Link, StarterKit, TextAlign]\r\n });\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n set value(value: string) {\r\n if (value === '<p></p>') {\r\n return;\r\n }\r\n\r\n if (value !== this._value) {\r\n this._value = value;\r\n if (this.onChange) {\r\n this.onChange(value);\r\n }\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.editor.setEditable(this._editable);\r\n\r\n this.editor.on('update', ({editor}) => {\r\n this.textChanged.emit({\r\n textValue: editor.getText(),\r\n htmlValue: this._value\r\n });\r\n });\r\n }\r\n\r\n onBlur(): void {\r\n if (this.onTouched) {\r\n this.onTouched();\r\n }\r\n }\r\n\r\n writeValue(value: string): void {\r\n if (value !== this._value) {\r\n this._value = value;\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.editor.setEditable(isDisabled);\r\n }\r\n\r\n openLinkDialog(): void {\r\n const previousUrl = this.editor.getAttributes('link').href;\r\n this.showDialog = {};\r\n this.dialogLink = previousUrl;\r\n this.dialogType = 'link';\r\n }\r\n\r\n openImageDialog(): void {\r\n const previousUrl = this.editor.getAttributes('image').src;\r\n this.showDialog = {};\r\n this.dialogLink = previousUrl;\r\n this.dialogType = 'image';\r\n }\r\n\r\n changeEditorLink(action: string): void {\r\n switch (action) {\r\n case 'remove':\r\n this.editor.chain().focus().extendMarkRange('link').unsetLink().run();\r\n break;\r\n case 'save':\r\n if (this.dialogType === 'link') {\r\n this.editor.chain().focus().extendMarkRange('link').setLink({\r\n href: this.dialogLink,\r\n target: this.dialogLink && !this.dialogLink.startsWith('/') ? '_blank' : '_self'\r\n }).run();\r\n } else if (this.dialogType === 'image') {\r\n this.editor.chain().focus().setImage({ src: this.dialogLink }).run()\r\n }\r\n break;\r\n default:\r\n console.log(action);\r\n }\r\n\r\n this.dialogLink = null as any;\r\n this.dialogType = null as any;\r\n this.showDialog = null as any;\r\n }\r\n\r\n focus(position?: any): void {\r\n if (!position) {\r\n position = 'start';\r\n }\r\n\r\n this.editor.commands.focus(position);\r\n }\r\n\r\n}\r\n","<div class=\"row_block width100 content_color ptl_brdr_radius ptl_brdr_color ptl_brdr_size\" style=\"overflow: hidden\">\r\n <ng-container *ngIf=\"!this.hideControls && this.editor.isEditable\">\r\n <div class=\"row ptl_input_bg_color ptl_brdr_color ptl_brdr_size border_bottom wrap hide_element\">\r\n <ng-container *ngIf=\"capabilities.heading\">\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\">\r\n <button\r\n id=\"heading1\"\r\n [attr.aria-label]=\"text.heading1\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right5 mar_left5 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.heading1\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleHeading({ level: 1 }).run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('heading', { level: 1 }) }\"\r\n >\r\n <i class=\"fas fa-header fa-fw\"></i>1\r\n </button>\r\n <button\r\n id=\"heading2\"\r\n [attr.aria-label]=\"text.heading2\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right5 mar_left5 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.heading2\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleHeading({ level: 2 }).run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('heading', { level: 2 }) }\"\r\n >\r\n <i class=\"fas fa-header fa-fw\"></i>2\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"capabilities.textDecoration\">\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\">\r\n <button\r\n id=\"bold\"\r\n [attr.aria-label]=\"text.bold\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.bold\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleBold().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('bold') }\"\r\n >\r\n <i class=\"fas fa-bold fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"italic\"\r\n [attr.aria-label]=\"text.italic\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.italic\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleItalic().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('italic') }\"\r\n >\r\n <i class=\"fas fa-italic fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"strike\"\r\n [attr.aria-label]=\"text.strike\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.strike\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleStrike().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('strike') }\"\r\n >\r\n <i class=\"fas fa-strikethrough fa-fw\"></i>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"capabilities.list\">\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\">\r\n <button\r\n id=\"bullet-list\"\r\n [attr.aria-label]=\"text.bulletedList\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.bulletedList\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleBulletList().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('bullet-list') }\"\r\n >\r\n <i class=\"fas fa-list fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"ordered-list\"\r\n [attr.aria-label]=\"text.orderedList\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.orderedList\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleOrderedList().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('ordered-list') }\"\r\n >\r\n <i class=\"fas fa-list-ol fa-fw\"></i>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"capabilities.alignment\">\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\">\r\n <button\r\n id=\"left-align\"\r\n [attr.aria-label]=\"text.leftAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.leftAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('left').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'left' }) }\"\r\n >\r\n <i class=\"fas fa-align-left fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"center-align\"\r\n [attr.aria-label]=\"text.centerAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.centerAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('center').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'center' }) }\"\r\n >\r\n <i class=\"fas fa-align-center fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"right-align\"\r\n [attr.aria-label]=\"text.rightAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.rightAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('right').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'right' }) }\"\r\n >\r\n <i class=\"fas fa-align-right fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"justify-align\"\r\n [attr.aria-label]=\"text.justifyAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.justifyAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('justify').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'justify' }) }\"\r\n >\r\n <i class=\"fas fa-align-justify fa-fw\"></i>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"capabilities.link\">\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\">\r\n <button\r\n id=\"link\"\r\n [attr.aria-label]=\"text.setLink\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.setLink\" tooltipPosition=\"top\"\r\n (click)=\"openLinkDialog()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('link') }\"\r\n >\r\n <i class=\"fas fa-link fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"unlink\"\r\n [attr.aria-label]=\"text.removeLink\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.removeLink\" tooltipPosition=\"top\"\r\n (click)=\"this.editor.isActive('link') ? changeEditorLink('remove') : null\"\r\n [disabled]=\"!this.editor.isActive('link')\"\r\n >\r\n <i class=\"fas fa-unlink fa-fw\"></i>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"capabilities.images\">\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\">\r\n <button\r\n id=\"image\"\r\n [attr.aria-label]=\"this.editor.isActive('image') ? text.modifyImage : text.addImage\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n (click)=\"openImageDialog()\"\r\n [particleTooltip]=\"this.editor.isActive('image') ? text.modifyImage : text.addImage\"\r\n tooltipPosition=\"top\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('image') }\"\r\n >\r\n <i class=\"far fa-image fa-fw\"></i>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <div class=\"col v_center pad_5\">\r\n <button\r\n id=\"clear-format\"\r\n [attr.aria-label]=\"text.clearFormat\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.clearFormat\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().clearNodes().unsetAllMarks().run()\"\r\n >\r\n <i class=\"fas fa-text-slash fa-fw\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"pad_10 ptl_input_text_size scroll_yauto\" [style.height]=\"this.height\">\r\n <tiptap-editor [editor]=\"editor\" [(ngModel)]=\"value\"></tiptap-editor>\r\n </div>\r\n</div>\r\n\r\n<particle-dialog\r\n [title]=\"dialogType === 'link' ? text.modifyLink : text.modifyImage\"\r\n titleClass=\"header_color min_h40\"\r\n [object]=\"showDialog\"\r\n [allowClose]=\"false\"\r\n [borderRadius]=\"borderRadius\"\r\n width=\"400px\"\r\n height=\"150px\"\r\n>\r\n <div class=\"pad_15 ptl_input_text_size\" [style.height]=\"window.innerWidth > 768 ? '70px' : 'calc(100% - 40px)'\">\r\n <input class=\"access input md\"\r\n [(ngModel)]=\"dialogLink\"\r\n [attr.aria-label]=\"text.url\"\r\n placeholder=\"eg. https://www.google.com\"\r\n (keyup.enter)=\"changeEditorLink('save')\"\r\n />\r\n </div>\r\n <div class=\"col min_h40 footer_color\">\r\n <div class=\"row center_right pad_right15 pad_left15\">\r\n <div class=\"col\">\r\n <button class=\"access btnset clear\" [attr.aria-label]=\"text.cancel\" (click)=\"changeEditorLink('cancel')\">\r\n <div class=\" pad_5\">{{text.cancel}}</div>\r\n </button>\r\n <div class=\"mar_lr5 ptl_brdr_size ptl_brdr_color border_left\">\r\n </div>\r\n <button\r\n type=\"button\"\r\n class=\"access btnset spaced md hov_glow ok_button_color ptl_brdr_radius\"\r\n [attr.aria-label]=\"text.update\"\r\n (click)=\"changeEditorLink('save')\"\r\n >\r\n <div class=\"brdr border_right mar_right5 pad_right5\"><i class=\"fas fa-check\"></i></div>\r\n <div>{{text.update}}</div>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</particle-dialog>\r\n","import {Component, Input} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'particle-render-rich-text',\r\n template: `<div class=\"ent_r2l_txt\" [innerHTML]=\"html | dompurify\"></div>`\r\n})\r\nexport class RenderRichTextComponent {\r\n\r\n @Input()\r\n html = '';\r\n\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {DialogComponent} from './dialog.component';\r\nimport {A11yModule} from '@angular/cdk/a11y';\r\n\r\n@NgModule({\r\n declarations: [\r\n DialogComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n A11yModule,\r\n ],\r\n exports: [\r\n DialogComponent\r\n ]\r\n})\r\nexport class ParticleDialogModule {\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {RichTextComponent} from './rich-text.component';\r\nimport {ParticleTooltipModule} from '../tooltip/tooltip.module';\r\nimport {NgxTiptapModule} from 'ngx-tiptap';\r\nimport {FormsModule} from '@angular/forms';\r\nimport {BrowserModule} from '@angular/platform-browser';\r\nimport {RenderRichTextComponent} from './render-rich-text.component';\r\nimport {DOMPURIFY_CONFIG, NgDompurifyModule} from '@tinkoff/ng-dompurify';\r\nimport {ParticleDialogModule} from '../dialog/dialog.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n RichTextComponent,\r\n RenderRichTextComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n ParticleTooltipModule,\r\n NgxTiptapModule,\r\n FormsModule,\r\n BrowserModule,\r\n NgDompurifyModule,\r\n ParticleDialogModule\r\n ],\r\n providers: [\r\n {\r\n provide: DOMPURIFY_CONFIG,\r\n useValue: {ADD_ATTR: ['target']},\r\n },\r\n ],\r\n exports: [\r\n RichTextComponent,\r\n RenderRichTextComponent\r\n ]\r\n})\r\nexport class ParticleRichTextModule {\r\n}\r\n","/**\n * Particle Icons - Regular\n */\nexport class ParticleIconsRegular {\n\n /**\n * ptr fa-multi-select\n */\n static ptrMultiSelect = {\n prefix: 'ptr',\n iconName: 'multi-select',\n icon: [\n 24, 24,\n [],\n null, 'M8.5,2h-4A2.5026,2.5026,0,0,0,2,4.5v4A2.5026,2.5026,0,0,0,4.5,11h4A2.5026,2.5026,0,0,0,11,8.5v-4A2.5026,2.5026,0,0,0,8.5,2Zm0,7h-4A.5006.5006,0,0,1,4,8.5v-4A.5006.5006,0,0,1,4.5,4h4a.467.467,0,0,1,.0715.0145L6.5,6.0859,5.707,5.293,4.293,6.707,6.5,8.9141l2.5-2.5V8.5A.5006.5006,0,0,1,8.5,9Zm0,4h-4A2.5023,2.5023,0,0,0,2,15.5v4A2.5023,2.5023,0,0,0,4.5,22h4A2.5023,2.5023,0,0,0,11,19.5v-4A2.5023,2.5023,0,0,0,8.5,13Zm0,7h-4a.501.501,0,0,1-.5-.5v-4a.501.501,0,0,1,.5-.5h4a.4646.4646,0,0,1,.0715.0145L6.5,17.0859l-.793-.7929L4.293,17.707,6.5,19.9141l2.5-2.5V19.5A.501.501,0,0,1,8.5,20ZM12,4H22V6H12Zm0,11H22v2H12Zm8-5H12V8h8Zm-8,9h8v2H12Z'\n ]\n };\n\n /**\n * ptr fa-phone\n */\n static ptrPhone = {\n prefix: 'ptr',\n iconName: 'phone',\n icon: [\n 24, 24,\n [],\n null, 'M19.5791,6H10.95A2.5038,2.5038,0,0,0,8.5,4h-1A2.5038,2.5038,0,0,0,5.0505,6h-.63A2.4057,2.4057,0,0,0,2,8.3848v9.23A2.4054,2.4054,0,0,0,4.4209,20H19.5791A2.4054,2.4054,0,0,0,22,17.6152v-9.23A2.4057,2.4057,0,0,0,19.5791,6ZM17.5,8v.5A.5006.5006,0,0,1,17,9H14a.5006.5006,0,0,1-.5-.5V8ZM7.5,6h1a.5006.5006,0,0,1,.5.5v8a.501.501,0,0,1-.5.5h-1a.501.501,0,0,1-.5-.5v-8A.5006.5006,0,0,1,7.5,6ZM20,17.6152A.4045.4045,0,0,1,19.5791,18H4.4209A.4045.4045,0,0,1,4,17.6152v-9.23A.4045.4045,0,0,1,4.4209,8H5v6.5A2.5023,2.5023,0,0,0,7.5,17h1A2.5023,2.5023,0,0,0,11,14.5V8h.5v.5A2.5026,2.5026,0,0,0,14,11h3a2.5026,2.5026,0,0,0,2.5-2.5V8h.0791A.4045.4045,0,0,1,20,8.3848ZM13,12h2v2H13Zm3,0h2v2H16Zm-3,3h2v2H13Zm3,0h2v2H16Z'\n ]\n };\n\n /**\n * ptr fa-radio-buttons\n */\n static ptrRadioButtons = {\n prefix: 'ptr',\n iconName: 'radio-buttons',\n icon: [\n 24, 24,\n [],\n null, 'M8,6.5A1.5,1.5,0,1,1,6.5,5,1.5,1.5,0,0,1,8,6.5Zm3,0A4.5,4.5,0,1,1,6.5,2,4.505,4.505,0,0,1,11,6.5Zm-2,0A2.5,2.5,0,1,0,6.5,9,2.5026,2.5026,0,0,0,9,6.5Zm2,11A4.5,4.5,0,1,1,6.5,13,4.505,4.505,0,0,1,11,17.5Zm-2,0A2.5,2.5,0,1,0,6.5,20,2.5023,2.5023,0,0,0,9,17.5ZM12,5H22V3H12Zm0,11H22V14H12Zm8-9H12V9h8ZM12,20h8V18H12Z'\n ]\n };\n\n\n /**\n * Full list of regular icons.\n */\n static icons = [\n ParticleIconsRegular.ptrMultiSelect,\n ParticleIconsRegular.ptrPhone,\n ParticleIconsRegular.ptrRadioButtons,\n ];\n\n}\n","/**\n * Particle Icons - Brand\n */\nexport class ParticleIconsBrand {\n\n /**\n * ptl fa-entake\n */\n static ptbEntake = {\n prefix: 'ptb',\n iconName: 'entake',\n icon: [\n 1024, 1024,\n [],\n null, 'M635.904 139.264c-8.704 63.488-32.256 131.584-59.904 173.056-37.888 57.344-83.968 87.552-160.768 107.52-122.88 31.232-179.712 57.344-230.912 105.984-35.328 33.28-71.168 86.016-63.488 93.696 2.56 2.048 29.696 15.872 60.416 29.696l55.808 25.6 13.824-18.432c16.896-23.552 50.688-54.272 71.168-65.024 52.736-27.136 162.304-62.976 220.672-72.192l22.528-3.072-27.648 29.696c-14.848 16.896-35.84 43.52-46.592 59.392-17.408 27.648-48.128 95.232-44.544 99.328 1.024 1.024 18.944-8.704 39.936-20.992 66.56-39.936 115.712-53.248 169.984-46.592 44.032 5.632 45.056 7.68 17.92 45.568-13.312 18.432-31.744 49.152-41.984 68.096-17.408 34.816-32.768 86.528-26.624 92.16 1.536 1.536 14.848-6.144 30.208-17.408 30.72-23.552 49.152-31.744 71.168-31.744 16.384 0 18.944 5.632 6.656 15.872-10.24 8.704-32.768 52.736-32.768 64.512 0 6.656 11.776 15.36 37.888 28.16l37.888 18.944 12.8-13.824c53.76-57.856 88.576-185.344 76.8-285.184l-4.096-35.84-25.088 46.080c-24.064 43.008-67.072 94.72-79.872 94.72-3.584 0-5.12-1.536-4.096-4.096 39.424-76.288 52.736-118.784 58.368-185.344 3.584-39.424-4.608-111.104-13.312-119.808-3.584-3.584-5.12-2.048-5.12 2.56 0 15.872-40.96 92.16-61.952 114.688-11.776 12.8-23.040 23.040-25.6 23.040-2.048 0 2.56-15.872 10.752-35.328 29.696-69.12 37.888-109.568 38.4-182.272 0-72.192-9.216-113.664-36.864-168.96-15.872-31.232-47.616-79.36-52.224-79.36-2.048 0-6.144 20.992-9.728 47.104z'\n ]\n };\n\n /**\n * Full list of light icons\n */\n static icons = [\n ParticleIconsBrand.ptbEntake\n ];\n\n}\n","/**\n * Particle Solid Icons to be added to Font Awesome.\n */\nexport class ParticleIconsSolid {\n\n /**\n * pts fa-divider\n */\n static ptsDivider = {\n prefix: 'pts',\n iconName: 'divider',\n icon: [\n 512, 512,\n [],\n null, 'M512,254v34H14A14,14,0,0,1,0,274V254a14,14,0,0,1,14-14H498A14,14,0,0,1,512,254ZM256,108.28l79.5,79.5,28.28-28.28L256,51.72,148.22,159.5l28.28,28.28Zm0,311.44-79.5-79.5L148.22,368.5,256,476.28,363.78,368.5,335.5,340.22Z'\n ]\n };\n\n /**\n * pts fa-multi-select\n */\n static ptsMultiSelect = {\n prefix: 'pts',\n iconName: 'multi-select',\n icon: [\n 24, 24,\n [],\n null, 'M13,4h9V6H13Zm0,13h9V15H13ZM3.5,11h6A1.5,1.5,0,0,0,11,9.5V4.4141l-4.5,4.5L3.293,5.707,4.707,4.293,6.5,6.0859l3.8329-3.8328A1.4926,1.4926,0,0,0,9.5,2h-6A1.5,1.5,0,0,0,2,3.5v6A1.5,1.5,0,0,0,3.5,11Zm0,11h6A1.5,1.5,0,0,0,11,20.5V15.4141l-4.5,4.5L3.293,16.707l1.414-1.414L6.5,17.0859l3.8329-3.8328A1.4926,1.4926,0,0,0,9.5,13h-6A1.5,1.5,0,0,0,2,14.5v6A1.5,1.5,0,0,0,3.5,22ZM20,8H13v2h7Zm0,11H13v2h7Z'\n ]\n };\n\n /**\n * pts fa-phone\n */\n static ptsPhone = {\n prefix: 'pts',\n iconName: 'phone',\n icon: [\n 512, 512,\n [],\n null, 'M463.56,112.5H192V96A80,80,0,0,0,32,96v19.35A48.94,48.94,0,0,0-.5,161.44V431.56A48.94,48.94,0,0,0,48.44,480.5H512.5V161.44A48.94,48.94,0,0,0,463.56,112.5ZM48,96a64,64,0,0,1,64-64h0a64,64,0,0,1,64,64V337a64,64,0,0,1-64,64h0a64,64,0,0,1-64-64V96ZM288,400H249.3a9.3,9.3,0,0,1-9.3-9.3V377.3a9.3,9.3,0,0,1,9.3-9.3h29.4a9.3,9.3,0,0,1,9.3,9.3Zm0-48H249.3a9.3,9.3,0,0,1-9.3-9.3V329.3a9.3,9.3,0,0,1,9.3-9.3h29.4a9.3,9.3,0,0,1,9.3,9.3Zm0-48H249.3a9.3,9.3,0,0,1-9.3-9.3V281.3a9.3,9.3,0,0,1,9.3-9.3h29.4a9.3,9.3,0,0,1,9.3,9.3Zm80,96H329.3a9.3,9.3,0,0,1-9.3-9.3V377.3a9.3,9.3,0,0,1,9.3-9.3h29.4a9.3,9.3,0,0,1,9.3,9.3Zm0-48H329.3a9.3,9.3,0,0,1-9.3-9.3V329.3a9.3,9.3,0,0,1,9.3-9.3h29.4a9.3,9.3,0,0,1,9.3,9.3Zm0-48H329.3a9.3,9.3,0,0,1-9.3-9.3V281.3a9.3,9.3,0,0,1,9.3-9.3h29.4a9.3,9.3,0,0,1,9.3,9.3Zm80,96H409.3a9.3,9.3,0,0,1-9.3-9.3V377.3a9.3,9.3,0,0,1,9.3-9.3h29.4a9.3,9.3,0,0,1,9.3,9.3Zm0-48H409.3a9.3,9.3,0,0,1-9.3-9.3V329.3a9.3,9.3,0,0,1,9.3-9.3h29.4a9.3,9.3,0,0,1,9.3,9.3Zm0-48H409.3a9.3,9.3,0,0,1-9.3-9.3V281.3a9.3,9.3,0,0,1,9.3-9.3h29.4a9.3,9.3,0,0,1,9.3,9.3Zm0-100.35A36.34,36.34,0,0,1,411.65,240H276.35A36.34,36.34,0,0,1,240,203.65V176.81A16.82,16.82,0,0,1,256.81,160H431.19A16.82,16.82,0,0,1,448,176.81Z'\n ]\n };\n\n /**\n * pts fa-physical-address\n */\n static ptsPhysicalAddress = {\n prefix: 'pts',\n iconName: 'physical-address',\n icon: [\n 512, 512,\n [],\n null, 'M457.12,354.13,336,284.4l-52.13,30h0l-47.59,27.39-21.4,12.32,16,27.74h0l22.91-13.2h0l2.23-1.29V480H416V367.38l25.15,14.49ZM352,432H320V384h32ZM217,389.85l-16-27.73-8-13.87,13.87-8,92-53,17.87-32.23A142.7,142.7,0,0,0,292.91,84.91h0a142.71,142.71,0,0,0-201.82,0h0A142.7,142.7,0,0,0,67.21,255.06L192,480l46.71-84.2L225,403.72ZM128,176a64,64,0,1,1,64,64A64,64,0,0,1,128,176Z'\n ]\n };\n\n /**\n * pts fa-radio-buttons\n */\n static ptsRadioButtons = {\n prefix: 'pts',\n iconName: 'radio-buttons',\n icon: [\n 24, 24,\n [],\n null, 'M6.5,11A4.5,4.5,0,1,0,2,6.5,4.5,4.5,0,0,0,6.5,11Zm0-6A1.5,1.5,0,1,1,5,6.5,1.5,1.5,0,0,1,6.5,5ZM2,17.5A4.5,4.5,0,1,1,6.5,22,4.5,4.5,0,0,1,2,17.5ZM22,5H13V3h9Zm0,11H13V14h9ZM20,7V9H13V7Zm0,13H13V18h7Z'\n ]\n };\n\n /**\n * pts fa-routing-number\n */\n static ptsRoutingNumber = {\n prefix: 'pts',\n iconName: 'routing-number',\n icon: [\n 512, 512,\n [],\n null, 'M512,480h0a16,16,0,0,1-16,16H16A16,16,0,0,1,0,480H0a16,16,0,0,1,16-16H496A16,16,0,0,1,512,480ZM32,448H496V416a16,16,0,0,0-16-16H464V224H430.68A30.69,30.69,0,0,0,400,254.68V400H352V224H318.68A30.69,30.69,0,0,0,288,254.68V400H224V224H190.68A30.69,30.69,0,0,0,160,254.68V400H112V224H78.68A30.69,30.69,0,0,0,48,254.68V400H32a16,16,0,0,0-16,16v16A16,16,0,0,0,32,448ZM248.5,57.34c-10.1,2-14.37,8.19-14.37,15.67,0,8.18,6.09,12,14.37,15Zm26.9,70.38c0-7.44-4.9-11.35-11.9-14.19v28.56C271.76,139.74,275.4,134.35,275.4,127.72ZM16,178.39V166.57A16.81,16.81,0,0,1,24.57,152L256,0,487.89,151.86A16.83,16.83,0,0,1,496,166.23v12.89A13,13,0,0,1,483,192H29.75A13.68,13.68,0,0,1,16,178.39Zm232.5-69.58v34.32a50.38,50.38,0,0,1-28.6-13l-6.47,17.37c7.52,7.76,21,13.26,35.07,14.27V176h15V161.08c20.51-3.65,30.31-18.24,30.31-34.91,0-22.34-15.24-29.13-30.31-33.69V57.39a52.1,52.1,0,0,1,20.24,8.74l5.9-17.38c-7-5.49-16.47-9-26.14-10.2V32h-15v6.55C226.13,41.33,215.58,56.49,215.58,74,215.58,97.91,232.61,104.19,248.5,108.81Z'\n ]\n };\n\n /**\n * The list of exported Solid icons\n */\n static icons = [\n ParticleIconsSolid.ptsDivider,\n ParticleIconsSolid.ptsMultiSelect,\n ParticleIconsSolid.ptsPhone,\n ParticleIconsSolid.ptsPhysicalAddress,\n ParticleIconsSolid.ptsRadioButtons,\n ParticleIconsSolid.ptsRoutingNumber,\n ];\n\n}\n","/**\r\n * Model representing Fontawesome's brands icons\r\n */\r\nexport class FontawesomeIconsBrands {\r\n\r\n /**\r\n * The brands icon prefix\r\n */\r\n static readonly PREFIX = 'fab';\r\n\r\n /**\r\n * Icon classes\r\n */\r\n static readonly ICONS = [\r\n 'fa-500px',\r\n 'fa-accessible-icon',\r\n 'fa-accusoft',\r\n 'fa-adn',\r\n 'fa-adversal',\r\n 'fa-affiliatetheme',\r\n 'fa-airbnb',\r\n 'fa-algolia',\r\n 'fa-alipay',\r\n 'fa-amazon',\r\n 'fa-amazon-pay',\r\n 'fa-amilia',\r\n 'fa-android',\r\n 'fa-angellist',\r\n 'fa-angrycreative',\r\n 'fa-angular',\r\n 'fa-app-store',\r\n 'fa-app-store-ios',\r\n 'fa-apper',\r\n 'fa-apple',\r\n 'fa-apple-pay',\r\n 'fa-artstation',\r\n 'fa-asymmetrik',\r\n 'fa-atlassian',\r\n 'fa-audible',\r\n 'fa-autoprefixer',\r\n 'fa-avianex',\r\n 'fa-aviato',\r\n 'fa-aws',\r\n 'fa-bandcamp',\r\n 'fa-battle-net',\r\n 'fa-behance',\r\n 'fa-behance-square',\r\n 'fa-bimobject',\r\n 'fa-bitbucket',\r\n 'fa-bitcoin',\r\n 'fa-bity',\r\n 'fa-black-tie',\r\n 'fa-blackberry',\r\n 'fa-blogger',\r\n 'fa-blogger-b',\r\n 'fa-bluetooth',\r\n 'fa-bluetooth-b',\r\n 'fa-bootstrap',\r\n 'fa-btc',\r\n 'fa-buffer',\r\n 'fa-buromobelexperte',\r\n 'fa-buy-n-large',\r\n 'fa-buysellads',\r\n 'fa-canadian-maple-leaf',\r\n 'fa-cc-amazon-pay',\r\n 'fa-cc-amex',\r\n 'fa-cc-apple-pay',\r\n 'fa-cc-diners-club',\r\n 'fa-cc-discover',\r\n 'fa-cc-jcb',\r\n 'fa-cc-mastercard',\r\n 'fa-cc-paypal',\r\n 'fa-cc-stripe',\r\n 'fa-cc-visa',\r\n 'fa-centercode',\r\n 'fa-centos',\r\n 'fa-chrome',\r\n 'fa-chromecast',\r\n 'fa-cloudflare',\r\n 'fa-cloudscale',\r\n 'fa-cloudsmith',\r\n 'fa-cloudversify',\r\n 'fa-codepen',\r\n 'fa-codiepie',\r\n 'fa-confluence',\r\n 'fa-connectdevelop',\r\n 'fa-contao',\r\n 'fa-cotton-bureau',\r\n 'fa-cpanel',\r\n 'fa-creative-commons',\r\n 'fa-creative-commons-by',\r\n 'fa-creative-commons-nc',\r\n 'fa-creative-commons-nc-eu',\r\n 'fa-creative-commons-nc-jp',\r\n 'fa-creative-commons-nd',\r\n 'fa-creative-commons-pd',\r\n 'fa-creative-commons-pd-alt',\r\n 'fa-creative-commons-remix',\r\n 'fa-creative-commons-sa',\r\n 'fa-creative-commons-sampling',\r\n 'fa-creative-commons-sampling-plus',\r\n 'fa-creative-commons-share',\r\n 'fa-creative-commons-zero',\r\n 'fa-critical-role',\r\n 'fa-css3',\r\n 'fa-css3-alt',\r\n 'fa-cuttlefish',\r\n 'fa-d-and-d',\r\n 'fa-d-and-d-beyond',\r\n 'fa-dailymotion',\r\n 'fa-dashcube',\r\n 'fa-deezer',\r\n 'fa-delicious',\r\n 'fa-deploydog',\r\n 'fa-deskpro',\r\n 'fa-dev',\r\n 'fa-deviantart',\r\n 'fa-dhl',\r\n 'fa-diaspora',\r\n 'fa-digg',\r\n 'fa-digital-ocean',\r\n 'fa-discord',\r\n 'fa-discourse',\r\n 'fa-dochub',\r\n 'fa-docker',\r\n 'fa-draft2digital',\r\n 'fa-dribbble',\r\n 'fa-dribbble-square',\r\n 'fa-dropbox',\r\n 'fa-drupal',\r\n 'fa-dyalog',\r\n 'fa-earlybirds',\r\n 'fa-ebay',\r\n 'fa-edge',\r\n 'fa-edge-legacy',\r\n 'fa-elementor',\r\n 'fa-ello',\r\n 'fa-ember',\r\n 'fa-empire',\r\n 'fa-envira',\r\n 'fa-erlang',\r\n 'fa-ethereum',\r\n 'fa-etsy',\r\n 'fa-evernote',\r\n 'fa-expeditedssl',\r\n 'fa-facebook',\r\n 'fa-facebook-f',\r\n 'fa-facebook-messenger',\r\n 'fa-facebook-square',\r\n 'fa-fantasy-flight-games',\r\n 'fa-fedex',\r\n 'fa-fedora',\r\n 'fa-figma',\r\n 'fa-firefox',\r\n 'fa-firefox-browser',\r\n 'fa-first-order',\r\n 'fa-first-order-alt',\r\n 'fa-firstdraft',\r\n 'fa-flickr',\r\n 'fa-flipboard',\r\n 'fa-fly',\r\n 'fa-font-awesome',\r\n 'fa-font-awesome-alt',\r\n 'fa-font-awesome-flag',\r\n 'fa-fonticons',\r\n 'fa-fonticons-fi',\r\n 'fa-fort-awesome',\r\n 'fa-fort-awesome-alt',\r\n 'fa-forumbee',\r\n 'fa-foursquare',\r\n 'fa-free-code-camp',\r\n 'fa-freebsd',\r\n 'fa-fulcrum',\r\n 'fa-galactic-republic',\r\n 'fa-galactic-senate',\r\n 'fa-get-pocket',\r\n 'fa-gg',\r\n 'fa-gg-circle',\r\n 'fa-git',\r\n 'fa-git-alt',\r\n 'fa-git-square',\r\n 'fa-github',\r\n 'fa-github-alt',\r\n 'fa-github-square',\r\n 'fa-gitkraken',\r\n 'fa-gitlab',\r\n 'fa-gitter',\r\n 'fa-glide',\r\n 'fa-glide-g',\r\n 'fa-gofore',\r\n 'fa-goodreads',\r\n 'fa-goodreads-g',\r\n 'fa-google',\r\n 'fa-google-drive',\r\n 'fa-google-pay',\r\n 'fa-google-play',\r\n 'fa-google-plus',\r\n 'fa-google-plus-g',\r\n 'fa-google-plus-square',\r\n 'fa-google-wallet',\r\n 'fa-gratipay',\r\n 'fa-grav',\r\n 'fa-gripfire',\r\n 'fa-grunt',\r\n 'fa-guilded',\r\n 'fa-gulp',\r\n 'fa-hacker-news',\r\n 'fa-hacker-news-square',\r\n 'fa-hackerrank',\r\n 'fa-hips',\r\n 'fa-hire-a-helper',\r\n 'fa-hive',\r\n 'fa-hooli',\r\n 'fa-hornbill',\r\n 'fa-hotjar',\r\n 'fa-houzz',\r\n 'fa-html5',\r\n 'fa-hubspot',\r\n 'fa-ideal',\r\n 'fa-imdb',\r\n 'fa-innosoft',\r\n 'fa-instagram',\r\n 'fa-instagram-square',\r\n 'fa-instalod',\r\n 'fa-intercom',\r\n 'fa-internet-explorer',\r\n 'fa-invision',\r\n 'fa-ioxhost',\r\n 'fa-itch-io',\r\n 'fa-itunes',\r\n 'fa-itunes-note',\r\n 'fa-java',\r\n 'fa-jedi-order',\r\n 'fa-jenkins',\r\n 'fa-jira',\r\n 'fa-joget',\r\n 'fa-joomla',\r\n 'fa-js',\r\n 'fa-js-square',\r\n 'fa-jsfiddle',\r\n 'fa-kaggle',\r\n 'fa-keybase',\r\n 'fa-keycdn',\r\n 'fa-kickstarter',\r\n 'fa-kickstarter-k',\r\n 'fa-korvue',\r\n 'fa-laravel',\r\n 'fa-lastfm',\r\n 'fa-lastfm-square',\r\n 'fa-leanpub',\r\n 'fa-less',\r\n 'fa-line',\r\n 'fa-linkedin',\r\n 'fa-linkedin-in',\r\n 'fa-linode',\r\n 'fa-linux',\r\n 'fa-lyft',\r\n 'fa-magento',\r\n 'fa-mailchimp',\r\n 'fa-mandalorian',\r\n 'fa-markdown',\r\n 'fa-mastodon',\r\n 'fa-maxcdn',\r\n 'fa-mdb',\r\n 'fa-medapps',\r\n 'fa-medium',\r\n 'fa-medium-m',\r\n 'fa-medrt',\r\n 'fa-meetup',\r\n 'fa-megaport',\r\n 'fa-mendeley',\r\n 'fa-microblog',\r\n 'fa-microsoft',\r\n 'fa-mix',\r\n 'fa-mixcloud',\r\n 'fa-mixer',\r\n 'fa-mizuni',\r\n 'fa-modx',\r\n 'fa-monero',\r\n 'fa-napster',\r\n 'fa-neos',\r\n 'fa-nimblr',\r\n 'fa-node',\r\n 'fa-node-js',\r\n 'fa-npm',\r\n 'fa-ns8',\r\n 'fa-nutritionix',\r\n 'fa-octopus-deploy',\r\n 'fa-odnoklassniki',\r\n 'fa-odnoklassniki-square',\r\n 'fa-old-republic',\r\n 'fa-opencart',\r\n 'fa-openid',\r\n 'fa-opera',\r\n 'fa-optin-monster',\r\n 'fa-orcid',\r\n 'fa-osi',\r\n 'fa-page4',\r\n 'fa-pagelines',\r\n 'fa-palfed',\r\n 'fa-patreon',\r\n 'fa-paypal',\r\n 'fa-penny-arcade',\r\n 'fa-perbyte',\r\n 'fa-periscope',\r\n 'fa-phabricator',\r\n 'fa-phoenix-framework',\r\n 'fa-phoenix-squadron',\r\n 'fa-php',\r\n 'fa-pied-piper',\r\n 'fa-pied-piper-alt',\r\n 'fa-pied-piper-hat',\r\n 'fa-pied-piper-pp',\r\n 'fa-pied-piper-square',\r\n 'fa-pinterest',\r\n 'fa-pinterest-p',\r\n 'fa-pinterest-square',\r\n 'fa-playstation',\r\n 'fa-product-hunt',\r\n 'fa-pushed',\r\n 'fa-python',\r\n 'fa-qq',\r\n 'fa-quinscape',\r\n 'fa-quora',\r\n 'fa-r-project',\r\n 'fa-raspberry-pi',\r\n 'fa-ravelry',\r\n 'fa-react',\r\n 'fa-reacteurope',\r\n 'fa-readme',\r\n 'fa-rebel',\r\n 'fa-red-river',\r\n 'fa-reddit',\r\n 'fa-reddit-alien',\r\n 'fa-reddit-square',\r\n 'fa-redhat',\r\n 'fa-renren',\r\n 'fa-replyd',\r\n 'fa-researchgate',\r\n 'fa-resolving',\r\n 'fa-rev',\r\n 'fa-rocketchat',\r\n 'fa-rockrms',\r\n 'fa-rust',\r\n 'fa-safari',\r\n 'fa-salesforce',\r\n 'fa-sass',\r\n 'fa-schlix',\r\n 'fa-scribd',\r\n 'fa-searchengin',\r\n 'fa-sellcast',\r\n 'fa-sellsy',\r\n 'fa-servicestack',\r\n 'fa-shirtsinbulk',\r\n 'fa-shopify',\r\n 'fa-shopware',\r\n 'fa-simplybuilt',\r\n 'fa-sistrix',\r\n 'fa-sith',\r\n 'fa-sketch',\r\n 'fa-skyatlas',\r\n 'fa-skype',\r\n 'fa-slack',\r\n 'fa-slack-hash',\r\n 'fa-slideshare',\r\n 'fa-snapchat',\r\n 'fa-snapchat-ghost',\r\n 'fa-snapchat-square',\r\n 'fa-soundcloud',\r\n 'fa-sourcetree',\r\n 'fa-speakap',\r\n 'fa-speaker-deck',\r\n 'fa-spotify',\r\n 'fa-squarespace',\r\n 'fa-stack-exchange',\r\n 'fa-stack-overflow',\r\n 'fa-stackpath',\r\n 'fa-staylinked',\r\n 'fa-steam',\r\n 'fa-steam-square',\r\n 'fa-steam-symbol',\r\n 'fa-sticker-mule',\r\n 'fa-strava',\r\n 'fa-stripe',\r\n 'fa-stripe-s',\r\n 'fa-studiovinari',\r\n 'fa-stumbleupon',\r\n 'fa-stumbleupon-circle',\r\n 'fa-superpowers',\r\n 'fa-supple',\r\n 'fa-suse',\r\n 'fa-swift',\r\n 'fa-symfony',\r\n 'fa-teamspeak',\r\n 'fa-telegram',\r\n 'fa-telegram-plane',\r\n 'fa-tencent-weibo',\r\n 'fa-the-red-yeti',\r\n 'fa-themeco',\r\n 'fa-themeisle',\r\n 'fa-think-peaks',\r\n 'fa-tiktok',\r\n 'fa-trade-federation',\r\n 'fa-trello',\r\n 'fa-tripadvisor',\r\n 'fa-tumblr',\r\n 'fa-tumblr-square',\r\n 'fa-twitch',\r\n 'fa-twitter',\r\n 'fa-twitter-square',\r\n 'fa-typo3',\r\n 'fa-uber',\r\n 'fa-ubuntu',\r\n 'fa-uikit',\r\n 'fa-umbraco',\r\n 'fa-uncharted',\r\n 'fa-uniregistry',\r\n 'fa-unity',\r\n 'fa-unsplash',\r\n 'fa-untappd',\r\n 'fa-ups',\r\n 'fa-usb',\r\n 'fa-usps',\r\n 'fa-ussunnah',\r\n 'fa-vaadin',\r\n 'fa-viacoin',\r\n 'fa-viadeo',\r\n 'fa-viadeo-square',\r\n 'fa-viber',\r\n 'fa-vimeo',\r\n 'fa-vimeo-square',\r\n 'fa-vimeo-v',\r\n 'fa-vine',\r\n 'fa-vk',\r\n 'fa-vnv',\r\n 'fa-vuejs',\r\n 'fa-watchman-monitoring',\r\n 'fa-waze',\r\n 'fa-weebly',\r\n 'fa-weibo',\r\n 'fa-weixin',\r\n 'fa-whatsapp',\r\n 'fa-whatsapp-square',\r\n 'fa-whmcs',\r\n 'fa-wikipedia-w',\r\n 'fa-windows',\r\n 'fa-wix',\r\n 'fa-wizards-of-the-coast',\r\n 'fa-wodu',\r\n 'fa-wolf-pack-battalion',\r\n 'fa-wordpress',\r\n 'fa-wordpress-simple',\r\n 'fa-wpbeginner',\r\n 'fa-wpexplorer',\r\n 'fa-wpforms',\r\n 'fa-wpressr',\r\n 'fa-xbox',\r\n 'fa-xing',\r\n 'fa-xing-square',\r\n 'fa-y-combinator',\r\n 'fa-yahoo',\r\n 'fa-yammer',\r\n 'fa-yandex',\r\n 'fa-yandex-international',\r\n 'fa-yarn',\r\n 'fa-yelp',\r\n 'fa-yoast',\r\n 'fa-youtube',\r\n 'fa-youtube-square',\r\n 'fa-zhihu',\r\n ];\r\n}\r\n","/**\n * Model representing Fontawesome's regular icons\n */\nexport class FontawesomeIconsRegular {\n\n /**\n * The regular icon prefix\n */\n static readonly PREFIX = 'far';\n\n /**\n * Icon classes\n */\n static readonly ICONS = [\n 'fa-address-book',\n 'fa-address-card',\n 'fa-angry',\n 'fa-arrow-alt-circle-down',\n 'fa-arrow-alt-circle-left',\n 'fa-arrow-alt-circle-right',\n 'fa-arrow-alt-circle-up',\n 'fa-bell',\n 'fa-bell-slash',\n 'fa-bookmark',\n 'fa-building',\n 'fa-calendar',\n 'fa-calendar-alt',\n 'fa-calendar-check',\n 'fa-calendar-minus',\n 'fa-calendar-plus',\n 'fa-calendar-times',\n 'fa-caret-square-down',\n 'fa-caret-square-left',\n 'fa-caret-square-right',\n 'fa-caret-square-up',\n 'fa-chart-bar',\n 'fa-check-circle',\n 'fa-check-square',\n 'fa-circle',\n 'fa-clipboard',\n 'fa-clock',\n 'fa-clone',\n 'fa-closed-captioning',\n 'fa-comment',\n 'fa-comment-alt',\n 'fa-comment-dots',\n 'fa-comments',\n 'fa-compass',\n 'fa-copy',\n 'fa-copyright',\n 'fa-credit-card',\n 'fa-dizzy',\n 'fa-dot-circle',\n 'fa-edit',\n 'fa-envelope',\n 'fa-envelope-open',\n 'fa-eye',\n 'fa-eye-slash',\n 'fa-file',\n 'fa-file-alt',\n 'fa-file-archive',\n 'fa-file-audio',\n 'fa-file-code',\n 'fa-file-excel',\n 'fa-file-image',\n 'fa-file-pdf',\n 'fa-file-powerpoint',\n 'fa-file-video',\n 'fa-file-word',\n 'fa-flag',\n 'fa-flushed',\n 'fa-folder',\n 'fa-folder-open',\n 'fa-frown',\n 'fa-frown-open',\n 'fa-futbol',\n 'fa-gem',\n 'fa-grimace',\n 'fa-grin',\n 'fa-grin-alt',\n 'fa-grin-beam',\n 'fa-grin-beam-sweat',\n 'fa-grin-hearts',\n 'fa-grin-squint',\n 'fa-grin-squint-tears',\n 'fa-grin-stars',\n 'fa-grin-tears',\n 'fa-grin-tongue',\n 'fa-grin-tongue-squint',\n 'fa-grin-tongue-wink',\n 'fa-grin-wink',\n 'fa-hand-lizard',\n 'fa-hand-paper',\n 'fa-hand-peace',\n 'fa-hand-point-down',\n 'fa-hand-point-left',\n 'fa-hand-point-right',\n 'fa-hand-point-up',\n 'fa-hand-pointer',\n 'fa-hand-rock',\n 'fa-hand-scissors',\n 'fa-hand-spock',\n 'fa-handshake',\n 'fa-hdd',\n 'fa-heart',\n 'fa-hospital',\n 'fa-hourglass',\n 'fa-id-badge',\n 'fa-id-card',\n 'fa-image',\n 'fa-images',\n 'fa-keyboard',\n 'fa-kiss',\n 'fa-kiss-beam',\n 'fa-kiss-wink-heart',\n 'fa-laugh',\n 'fa-laugh-beam',\n 'fa-laugh-squint',\n 'fa-laugh-wink',\n 'fa-lemon',\n 'fa-life-ring',\n 'fa-lightbulb',\n 'fa-list-alt',\n 'fa-map',\n 'fa-meh',\n 'fa-meh-blank',\n 'fa-meh-rolling-eyes',\n 'fa-minus-square',\n 'fa-money-bill-alt',\n 'fa-moon',\n 'fa-newspaper',\n 'fa-object-group',\n 'fa-object-ungroup',\n 'fa-paper-plane',\n 'fa-pause-circle',\n 'fa-play-circle',\n 'fa-plus-square',\n 'fa-question-circle',\n 'fa-registered',\n 'fa-sad-cry',\n 'fa-sad-tear',\n 'fa-save',\n 'fa-share-square',\n 'fa-smile',\n 'fa-smile-beam',\n 'fa-smile-wink',\n 'fa-snowflake',\n 'fa-square',\n 'fa-star',\n 'fa-star-half',\n 'fa-sticky-note',\n 'fa-stop-circle',\n 'fa-sun',\n 'fa-surprise',\n 'fa-thumbs-down',\n 'fa-thumbs-up',\n 'fa-times-circle',\n 'fa-tired',\n 'fa-trash-alt',\n 'fa-user',\n 'fa-user-circle',\n 'fa-window-close',\n 'fa-window-maximize',\n 'fa-window-minimize',\n 'fa-window-restore',\n ];\n}\n","/**\n * Model representing Fontawesome's solid icons\n */\nexport class FontawesomeIconsSolid {\n\n /**\n * The solid icon prefix\n */\n static readonly PREFIX = 'fas';\n\n /**\n * Icon classes\n */\n static readonly ICONS = [\n 'fa-ad',\n 'fa-address-book',\n 'fa-address-card',\n 'fa-adjust',\n 'fa-air-freshener',\n 'fa-align-center',\n 'fa-align-justify',\n 'fa-align-left',\n 'fa-align-right',\n 'fa-allergies',\n 'fa-ambulance',\n 'fa-american-sign-language-interpreting',\n 'fa-anchor',\n 'fa-angle-double-down',\n 'fa-angle-double-left',\n 'fa-angle-double-right',\n 'fa-angle-double-up',\n 'fa-angle-down',\n 'fa-angle-left',\n 'fa-angle-right',\n 'fa-angle-up',\n 'fa-angry',\n 'fa-ankh',\n 'fa-apple-alt',\n 'fa-archive',\n 'fa-archway',\n 'fa-arrow-alt-circle-down',\n 'fa-arrow-alt-circle-left',\n 'fa-arrow-alt-circle-right',\n 'fa-arrow-alt-circle-up',\n 'fa-arrow-circle-down',\n 'fa-arrow-circle-left',\n 'fa-arrow-circle-right',\n 'fa-arrow-circle-up',\n 'fa-arrow-down',\n 'fa-arrow-left',\n 'fa-arrow-right',\n 'fa-arrow-up',\n 'fa-arrows-alt',\n 'fa-arrows-alt-h',\n 'fa-arrows-alt-v',\n 'fa-assistive-listening-systems',\n 'fa-asterisk',\n 'fa-at',\n 'fa-atlas',\n 'fa-atom',\n 'fa-audio-description',\n 'fa-award',\n 'fa-baby',\n 'fa-baby-carriage',\n 'fa-backspace',\n 'fa-backward',\n 'fa-bacon',\n 'fa-bacteria',\n 'fa-bacterium',\n 'fa-bahai',\n 'fa-balance-scale',\n 'fa-balance-scale-left',\n 'fa-balance-scale-right',\n 'fa-ban',\n 'fa-band-aid',\n 'fa-barcode',\n 'fa-bars',\n 'fa-baseball-ball',\n 'fa-basketball-ball',\n 'fa-bath',\n 'fa-battery-empty',\n 'fa-battery-full',\n 'fa-battery-half',\n 'fa-battery-quarter',\n 'fa-battery-three-quarters',\n 'fa-bed',\n 'fa-beer',\n 'fa-bell',\n 'fa-bell-slash',\n 'fa-bezier-curve',\n 'fa-bible',\n 'fa-bicycle',\n 'fa-biking',\n 'fa-binoculars',\n 'fa-biohazard',\n 'fa-birthday-cake',\n 'fa-blender',\n 'fa-blender-phone',\n 'fa-blind',\n 'fa-blog',\n 'fa-bold',\n 'fa-bolt',\n 'fa-bomb',\n 'fa-bone',\n 'fa-bong',\n 'fa-book',\n 'fa-book-dead',\n 'fa-book-medical',\n 'fa-book-open',\n 'fa-book-reader',\n 'fa-bookmark',\n 'fa-border-all',\n 'fa-border-none',\n 'fa-border-style',\n 'fa-bowling-ball',\n 'fa-box',\n 'fa-box-open',\n 'fa-box-tissue',\n 'fa-boxes',\n 'fa-braille',\n 'fa-brain',\n 'fa-bread-slice',\n 'fa-briefcase',\n 'fa-briefcase-medical',\n 'fa-broadcast-tower',\n 'fa-broom',\n 'fa-brush',\n 'fa-bug',\n 'fa-building',\n 'fa-bullhorn',\n 'fa-bullseye',\n 'fa-burn',\n 'fa-bus',\n 'fa-bus-alt',\n 'fa-business-time',\n 'fa-calculator',\n 'fa-calendar',\n 'fa-calendar-alt',\n 'fa-calendar-check',\n 'fa-calendar-day',\n 'fa-calendar-minus',\n 'fa-calendar-plus',\n 'fa-calendar-times',\n 'fa-calendar-week',\n 'fa-camera',\n 'fa-camera-retro',\n 'fa-campground',\n 'fa-candy-cane',\n 'fa-cannabis',\n 'fa-capsules',\n 'fa-car',\n 'fa-car-alt',\n 'fa-car-battery',\n 'fa-car-crash',\n 'fa-car-side',\n 'fa-caravan',\n 'fa-caret-down',\n 'fa-caret-left',\n 'fa-caret-right',\n 'fa-caret-square-down',\n 'fa-caret-square-left',\n 'fa-caret-square-right',\n 'fa-caret-square-up',\n 'fa-caret-up',\n 'fa-carrot',\n 'fa-cart-arrow-down',\n 'fa-cart-plus',\n 'fa-cash-register',\n 'fa-cat',\n 'fa-certificate',\n 'fa-chair',\n 'fa-chalkboard',\n 'fa-chalkboard-teacher',\n 'fa-charging-station',\n 'fa-chart-area',\n 'fa-chart-bar',\n 'fa-chart-line',\n 'fa-chart-pie',\n 'fa-check',\n 'fa-check-circle',\n 'fa-check-double',\n 'fa-check-square',\n 'fa-cheese',\n 'fa-chess',\n 'fa-chess-bishop',\n 'fa-chess-board',\n 'fa-chess-king',\n 'fa-chess-knight',\n 'fa-chess-pawn',\n 'fa-chess-queen',\n 'fa-chess-rook',\n 'fa-chevron-circle-down',\n 'fa-chevron-circle-left',\n 'fa-chevron-circle-right',\n 'fa-chevron-circle-up',\n 'fa-chevron-down',\n 'fa-chevron-left',\n 'fa-chevron-right',\n 'fa-chevron-up',\n 'fa-child',\n 'fa-church',\n 'fa-circle',\n 'fa-circle-notch',\n 'fa-city',\n 'fa-clinic-medical',\n 'fa-clipboard',\n 'fa-clipboard-check',\n 'fa-clipboard-list',\n 'fa-clock',\n 'fa-clone',\n 'fa-closed-captioning',\n 'fa-cloud',\n 'fa-cloud-download-alt',\n 'fa-cloud-meatball',\n 'fa-cloud-moon',\n 'fa-cloud-moon-rain',\n 'fa-cloud-rain',\n 'fa-cloud-showers-heavy',\n 'fa-cloud-sun',\n 'fa-cloud-sun-rain',\n 'fa-cloud-upload-alt',\n 'fa-cocktail',\n 'fa-code',\n 'fa-code-branch',\n 'fa-coffee',\n 'fa-cog',\n 'fa-cogs',\n 'fa-coins',\n 'fa-columns',\n 'fa-comment',\n 'fa-comment-alt',\n 'fa-comment-dollar',\n 'fa-comment-dots',\n 'fa-comment-medical',\n 'fa-comment-slash',\n 'fa-comments',\n 'fa-comments-dollar',\n 'fa-compact-disc',\n 'fa-compass',\n 'fa-compress',\n 'fa-compress-alt',\n 'fa-compress-arrows-alt',\n 'fa-concierge-bell',\n 'fa-cookie',\n 'fa-cookie-bite',\n 'fa-copy',\n 'fa-copyright',\n 'fa-couch',\n 'fa-credit-card',\n 'fa-crop',\n 'fa-crop-alt',\n 'fa-cross',\n 'fa-crosshairs',\n 'fa-crow',\n 'fa-crown',\n 'fa-crutch',\n 'fa-cube',\n 'fa-cubes',\n 'fa-cut',\n 'fa-database',\n 'fa-deaf',\n 'fa-democrat',\n 'fa-desktop',\n 'fa-dharmachakra',\n 'fa-diagnoses',\n 'fa-dice',\n 'fa-dice-d20',\n 'fa-dice-d6',\n 'fa-dice-five',\n 'fa-dice-four',\n 'fa-dice-one',\n 'fa-dice-six',\n 'fa-dice-three',\n 'fa-dice-two',\n 'fa-digital-tachograph',\n 'fa-directions',\n 'fa-disease',\n 'fa-divide',\n 'fa-dizzy',\n 'fa-dna',\n 'fa-dog',\n 'fa-dollar-sign',\n 'fa-dolly',\n 'fa-dolly-flatbed',\n 'fa-donate',\n 'fa-door-closed',\n 'fa-door-open',\n 'fa-dot-circle',\n 'fa-dove',\n 'fa-download',\n 'fa-drafting-compass',\n 'fa-dragon',\n 'fa-draw-polygon',\n 'fa-drum',\n 'fa-drum-steelpan',\n 'fa-drumstick-bite',\n 'fa-dumbbell',\n 'fa-dumpster',\n 'fa-dumpster-fire',\n 'fa-dungeon',\n 'fa-edit',\n 'fa-egg',\n 'fa-eject',\n 'fa-ellipsis-h',\n 'fa-ellipsis-v',\n 'fa-envelope',\n 'fa-envelope-open',\n 'fa-envelope-open-text',\n 'fa-envelope-square',\n 'fa-equals',\n 'fa-eraser',\n 'fa-ethernet',\n 'fa-euro-sign',\n 'fa-exchange-alt',\n 'fa-exclamation',\n 'fa-exclamation-circle',\n 'fa-exclamation-triangle',\n 'fa-expand',\n 'fa-expand-alt',\n 'fa-expand-arrows-alt',\n 'fa-external-link-alt',\n 'fa-external-link-square-alt',\n 'fa-eye',\n 'fa-eye-dropper',\n 'fa-eye-slash',\n 'fa-fan',\n 'fa-fast-backward',\n 'fa-fast-forward',\n 'fa-faucet',\n 'fa-fax',\n 'fa-feather',\n 'fa-feather-alt',\n 'fa-female',\n 'fa-fighter-jet',\n 'fa-file',\n 'fa-file-alt',\n 'fa-file-archive',\n 'fa-file-audio',\n 'fa-file-code',\n 'fa-file-contract',\n 'fa-file-csv',\n 'fa-file-download',\n 'fa-file-excel',\n 'fa-file-export',\n 'fa-file-image',\n 'fa-file-import',\n 'fa-file-invoice',\n 'fa-file-invoice-dollar',\n 'fa-file-medical',\n 'fa-file-medical-alt',\n 'fa-file-pdf',\n 'fa-file-powerpoint',\n 'fa-file-prescription',\n 'fa-file-signature',\n 'fa-file-upload',\n 'fa-file-video',\n 'fa-file-word',\n 'fa-fill',\n 'fa-fill-drip',\n 'fa-film',\n 'fa-filter',\n 'fa-fingerprint',\n 'fa-fire',\n 'fa-fire-alt',\n 'fa-fire-extinguisher',\n 'fa-first-aid',\n 'fa-fish',\n 'fa-fist-raised',\n 'fa-flag',\n 'fa-flag-checkered',\n 'fa-flag-usa',\n 'fa-flask',\n 'fa-flushed',\n 'fa-folder',\n 'fa-folder-minus',\n 'fa-folder-open',\n 'fa-folder-plus',\n 'fa-font',\n 'fa-football-ball',\n 'fa-forward',\n 'fa-frog',\n 'fa-frown',\n 'fa-frown-open',\n 'fa-funnel-dollar',\n 'fa-futbol',\n 'fa-gamepad',\n 'fa-gas-pump',\n 'fa-gavel',\n 'fa-gem',\n 'fa-genderless',\n 'fa-ghost',\n 'fa-gift',\n 'fa-gifts',\n 'fa-glass-cheers',\n 'fa-glass-martini',\n 'fa-glass-martini-alt',\n 'fa-glass-whiskey',\n 'fa-glasses',\n 'fa-globe',\n 'fa-globe-africa',\n 'fa-globe-americas',\n 'fa-globe-asia',\n 'fa-globe-europe',\n 'fa-golf-ball',\n 'fa-gopuram',\n 'fa-graduation-cap',\n 'fa-greater-than',\n 'fa-greater-than-equal',\n 'fa-grimace',\n 'fa-grin',\n 'fa-grin-alt',\n 'fa-grin-beam',\n 'fa-grin-beam-sweat',\n 'fa-grin-hearts',\n 'fa-grin-squint',\n 'fa-grin-squint-tears',\n 'fa-grin-stars',\n 'fa-grin-tears',\n 'fa-grin-tongue',\n 'fa-grin-tongue-squint',\n 'fa-grin-tongue-wink',\n 'fa-grin-wink',\n 'fa-grip-horizontal',\n 'fa-grip-lines',\n 'fa-grip-lines-vertical',\n 'fa-grip-vertical',\n 'fa-guitar',\n 'fa-h-square',\n 'fa-hamburger',\n 'fa-hammer',\n 'fa-hamsa',\n 'fa-hand-holding',\n 'fa-hand-holding-heart',\n 'fa-hand-holding-medical',\n 'fa-hand-holding-usd',\n 'fa-hand-holding-water',\n 'fa-hand-lizard',\n 'fa-hand-middle-finger',\n 'fa-hand-paper',\n 'fa-hand-peace',\n 'fa-hand-point-down',\n 'fa-hand-point-left',\n 'fa-hand-point-right',\n 'fa-hand-point-up',\n 'fa-hand-pointer',\n 'fa-hand-rock',\n 'fa-hand-scissors',\n 'fa-hand-sparkles',\n 'fa-hand-spock',\n 'fa-hands',\n 'fa-hands-helping',\n 'fa-hands-wash',\n 'fa-handshake',\n 'fa-handshake-alt-slash',\n 'fa-handshake-slash',\n 'fa-hanukiah',\n 'fa-hard-hat',\n 'fa-hashtag',\n 'fa-hat-cowboy',\n 'fa-hat-cowboy-side',\n 'fa-hat-wizard',\n 'fa-hdd',\n 'fa-head-side-cough',\n 'fa-head-side-cough-slash',\n 'fa-head-side-mask',\n 'fa-head-side-virus',\n 'fa-heading',\n 'fa-headphones',\n 'fa-headphones-alt',\n 'fa-headset',\n 'fa-heart',\n 'fa-heart-broken',\n 'fa-heartbeat',\n 'fa-helicopter',\n 'fa-highlighter',\n 'fa-hiking',\n 'fa-hippo',\n 'fa-history',\n 'fa-hockey-puck',\n 'fa-holly-berry',\n 'fa-home',\n 'fa-horse',\n 'fa-horse-head',\n 'fa-hospital',\n 'fa-hospital-alt',\n 'fa-hospital-symbol',\n 'fa-hospital-user',\n 'fa-hot-tub',\n 'fa-hotdog',\n 'fa-hotel',\n 'fa-hourglass',\n 'fa-hourglass-end',\n 'fa-hourglass-half',\n 'fa-hourglass-start',\n 'fa-house-damage',\n 'fa-house-user',\n 'fa-hryvnia',\n 'fa-i-cursor',\n 'fa-ice-cream',\n 'fa-icicles',\n 'fa-icons',\n 'fa-id-badge',\n 'fa-id-card',\n 'fa-id-card-alt',\n 'fa-igloo',\n 'fa-image',\n 'fa-images',\n 'fa-inbox',\n 'fa-indent',\n 'fa-industry',\n 'fa-infinity',\n 'fa-info',\n 'fa-info-circle',\n 'fa-italic',\n 'fa-jedi',\n 'fa-joint',\n 'fa-journal-whills',\n 'fa-kaaba',\n 'fa-key',\n 'fa-keyboard',\n 'fa-khanda',\n 'fa-kiss',\n 'fa-kiss-beam',\n 'fa-kiss-wink-heart',\n 'fa-kiwi-bird',\n 'fa-landmark',\n 'fa-language',\n 'fa-laptop',\n 'fa-laptop-code',\n 'fa-laptop-house',\n 'fa-laptop-medical',\n 'fa-laugh',\n 'fa-laugh-beam',\n 'fa-laugh-squint',\n 'fa-laugh-wink',\n 'fa-layer-group',\n 'fa-leaf',\n 'fa-lemon',\n 'fa-less-than',\n 'fa-less-than-equal',\n 'fa-level-down-alt',\n 'fa-level-up-alt',\n 'fa-life-ring',\n 'fa-lightbulb',\n 'fa-link',\n 'fa-lira-sign',\n 'fa-list',\n 'fa-list-alt',\n 'fa-list-ol',\n 'fa-list-ul',\n 'fa-location-arrow',\n 'fa-lock',\n 'fa-lock-open',\n 'fa-long-arrow-alt-down',\n 'fa-long-arrow-alt-left',\n 'fa-long-arrow-alt-right',\n 'fa-long-arrow-alt-up',\n 'fa-low-vision',\n 'fa-luggage-cart',\n 'fa-lungs',\n 'fa-lungs-virus',\n 'fa-magic',\n 'fa-magnet',\n 'fa-mail-bulk',\n 'fa-male',\n 'fa-map',\n 'fa-map-marked',\n 'fa-map-marked-alt',\n 'fa-map-marker',\n 'fa-map-marker-alt',\n 'fa-map-pin',\n 'fa-map-signs',\n 'fa-marker',\n 'fa-mars',\n 'fa-mars-double',\n 'fa-mars-stroke',\n 'fa-mars-stroke-h',\n 'fa-mars-stroke-v',\n 'fa-mask',\n 'fa-medal',\n 'fa-medkit',\n 'fa-meh',\n 'fa-meh-blank',\n 'fa-meh-rolling-eyes',\n 'fa-memory',\n 'fa-menorah',\n 'fa-mercury',\n 'fa-meteor',\n 'fa-microchip',\n 'fa-microphone',\n 'fa-microphone-alt',\n 'fa-microphone-alt-slash',\n 'fa-microphone-slash',\n 'fa-microscope',\n 'fa-minus',\n 'fa-minus-circle',\n 'fa-minus-square',\n 'fa-mitten',\n 'fa-mobile',\n 'fa-mobile-alt',\n 'fa-money-bill',\n 'fa-money-bill-alt',\n 'fa-money-bill-wave',\n 'fa-money-bill-wave-alt',\n 'fa-money-check',\n 'fa-money-check-alt',\n 'fa-monument',\n 'fa-moon',\n 'fa-mortar-pestle',\n 'fa-mosque',\n 'fa-motorcycle',\n 'fa-mountain',\n 'fa-mouse',\n 'fa-mouse-pointer',\n 'fa-mug-hot',\n 'fa-music',\n 'fa-network-wired',\n 'fa-neuter',\n 'fa-newspaper',\n 'fa-not-equal',\n 'fa-notes-medical',\n 'fa-object-group',\n 'fa-object-ungroup',\n 'fa-oil-can',\n 'fa-om',\n 'fa-otter',\n 'fa-outdent',\n 'fa-pager',\n 'fa-paint-brush',\n 'fa-paint-roller',\n 'fa-palette',\n 'fa-pallet',\n 'fa-paper-plane',\n 'fa-paperclip',\n 'fa-parachute-box',\n 'fa-paragraph',\n 'fa-parking',\n 'fa-passport',\n 'fa-pastafarianism',\n 'fa-paste',\n 'fa-pause',\n 'fa-pause-circle',\n 'fa-paw',\n 'fa-peace',\n 'fa-pen',\n 'fa-pen-alt',\n 'fa-pen-fancy',\n 'fa-pen-nib',\n 'fa-pen-square',\n 'fa-pencil-alt',\n 'fa-pencil-ruler',\n 'fa-people-arrows',\n 'fa-people-carry',\n 'fa-pepper-hot',\n 'fa-percent',\n 'fa-percentage',\n 'fa-person-booth',\n 'fa-phone',\n 'fa-phone-alt',\n 'fa-phone-slash',\n 'fa-phone-square',\n 'fa-phone-square-alt',\n 'fa-phone-volume',\n 'fa-photo-video',\n 'fa-piggy-bank',\n 'fa-pills',\n 'fa-pizza-slice',\n 'fa-place-of-worship',\n 'fa-plane',\n 'fa-plane-arrival',\n 'fa-plane-departure',\n 'fa-plane-slash',\n 'fa-play',\n 'fa-play-circle',\n 'fa-plug',\n 'fa-plus',\n 'fa-plus-circle',\n 'fa-plus-square',\n 'fa-podcast',\n 'fa-poll',\n 'fa-poll-h',\n 'fa-poo',\n 'fa-poo-storm',\n 'fa-poop',\n 'fa-portrait',\n 'fa-pound-sign',\n 'fa-power-off',\n 'fa-pray',\n 'fa-praying-hands',\n 'fa-prescription',\n 'fa-prescription-bottle',\n 'fa-prescription-bottle-alt',\n 'fa-print',\n 'fa-procedures',\n 'fa-project-diagram',\n 'fa-pump-medical',\n 'fa-pump-soap',\n 'fa-puzzle-piece',\n 'fa-qrcode',\n 'fa-question',\n 'fa-question-circle',\n 'fa-quidditch',\n 'fa-quote-left',\n 'fa-quote-right',\n 'fa-quran',\n 'fa-radiation',\n 'fa-radiation-alt',\n 'fa-rainbow',\n 'fa-random',\n 'fa-receipt',\n 'fa-record-vinyl',\n 'fa-recycle',\n 'fa-redo',\n 'fa-redo-alt',\n 'fa-registered',\n 'fa-remove-format',\n 'fa-reply',\n 'fa-reply-all',\n 'fa-republican',\n 'fa-restroom',\n 'fa-retweet',\n 'fa-ribbon',\n 'fa-ring',\n 'fa-road',\n 'fa-robot',\n 'fa-rocket',\n 'fa-route',\n 'fa-rss',\n 'fa-rss-square',\n 'fa-ruble-sign',\n 'fa-ruler',\n 'fa-ruler-combined',\n 'fa-ruler-horizontal',\n 'fa-ruler-vertical',\n 'fa-running',\n 'fa-rupee-sign',\n 'fa-sad-cry',\n 'fa-sad-tear',\n 'fa-satellite',\n 'fa-satellite-dish',\n 'fa-save',\n 'fa-school',\n 'fa-screwdriver',\n 'fa-scroll',\n 'fa-sd-card',\n 'fa-search',\n 'fa-search-dollar',\n 'fa-search-location',\n 'fa-search-minus',\n 'fa-search-plus',\n 'fa-seedling',\n 'fa-server',\n 'fa-shapes',\n 'fa-share',\n 'fa-share-alt',\n 'fa-share-alt-square',\n 'fa-share-square',\n 'fa-shekel-sign',\n 'fa-shield-alt',\n 'fa-shield-virus',\n 'fa-ship',\n 'fa-shipping-fast',\n 'fa-shoe-prints',\n 'fa-shopping-bag',\n 'fa-shopping-basket',\n 'fa-shopping-cart',\n 'fa-shower',\n 'fa-shuttle-van',\n 'fa-sign',\n 'fa-sign-in-alt',\n 'fa-sign-language',\n 'fa-sign-out-alt',\n 'fa-signal',\n 'fa-signature',\n 'fa-sim-card',\n 'fa-sink',\n 'fa-sitemap',\n 'fa-skating',\n 'fa-skiing',\n 'fa-skiing-nordic',\n 'fa-skull',\n 'fa-skull-crossbones',\n 'fa-slash',\n 'fa-sleigh',\n 'fa-sliders-h',\n 'fa-smile',\n 'fa-smile-beam',\n 'fa-smile-wink',\n 'fa-smog',\n 'fa-smoking',\n 'fa-smoking-ban',\n 'fa-sms',\n 'fa-snowboarding',\n 'fa-snowflake',\n 'fa-snowman',\n 'fa-snowplow',\n 'fa-soap',\n 'fa-socks',\n 'fa-solar-panel',\n 'fa-sort',\n 'fa-sort-alpha-down',\n 'fa-sort-alpha-down-alt',\n 'fa-sort-alpha-up',\n 'fa-sort-alpha-up-alt',\n 'fa-sort-amount-down',\n 'fa-sort-amount-down-alt',\n 'fa-sort-amount-up',\n 'fa-sort-amount-up-alt',\n 'fa-sort-down',\n 'fa-sort-numeric-down',\n 'fa-sort-numeric-down-alt',\n 'fa-sort-numeric-up',\n 'fa-sort-numeric-up-alt',\n 'fa-sort-up',\n 'fa-spa',\n 'fa-space-shuttle',\n 'fa-spell-check',\n 'fa-spider',\n 'fa-spinner',\n 'fa-splotch',\n 'fa-spray-can',\n 'fa-square',\n 'fa-square-full',\n 'fa-square-root-alt',\n 'fa-stamp',\n 'fa-star',\n 'fa-star-and-crescent',\n 'fa-star-half',\n 'fa-star-half-alt',\n 'fa-star-of-david',\n 'fa-star-of-life',\n 'fa-step-backward',\n 'fa-step-forward',\n 'fa-stethoscope',\n 'fa-sticky-note',\n 'fa-stop',\n 'fa-stop-circle',\n 'fa-stopwatch',\n 'fa-stopwatch-20',\n 'fa-store',\n 'fa-store-alt',\n 'fa-store-alt-slash',\n 'fa-store-slash',\n 'fa-stream',\n 'fa-street-view',\n 'fa-strikethrough',\n 'fa-stroopwafel',\n 'fa-subscript',\n 'fa-subway',\n 'fa-suitcase',\n 'fa-suitcase-rolling',\n 'fa-sun',\n 'fa-superscript',\n 'fa-surprise',\n 'fa-swatchbook',\n 'fa-swimmer',\n 'fa-swimming-pool',\n 'fa-synagogue',\n 'fa-sync',\n 'fa-sync-alt',\n 'fa-syringe',\n 'fa-table',\n 'fa-table-tennis',\n 'fa-tablet',\n 'fa-tablet-alt',\n 'fa-tablets',\n 'fa-tachometer-alt',\n 'fa-tag',\n 'fa-tags',\n 'fa-tape',\n 'fa-tasks',\n 'fa-taxi',\n 'fa-teeth',\n 'fa-teeth-open',\n 'fa-temperature-high',\n 'fa-temperature-low',\n 'fa-tenge',\n 'fa-terminal',\n 'fa-text-height',\n 'fa-text-width',\n 'fa-th',\n 'fa-th-large',\n 'fa-th-list',\n 'fa-theater-masks',\n 'fa-thermometer',\n 'fa-thermometer-empty',\n 'fa-thermometer-full',\n 'fa-thermometer-half',\n 'fa-thermometer-quarter',\n 'fa-thermometer-three-quarters',\n 'fa-thumbs-down',\n 'fa-thumbs-up',\n 'fa-thumbtack',\n 'fa-ticket-alt',\n 'fa-times',\n 'fa-times-circle',\n 'fa-tint',\n 'fa-tint-slash',\n 'fa-tired',\n 'fa-toggle-off',\n 'fa-toggle-on',\n 'fa-toilet',\n 'fa-toilet-paper',\n 'fa-toilet-paper-slash',\n 'fa-toolbox',\n 'fa-tools',\n 'fa-tooth',\n 'fa-torah',\n 'fa-torii-gate',\n 'fa-tractor',\n 'fa-trademark',\n 'fa-traffic-light',\n 'fa-trailer',\n 'fa-train',\n 'fa-tram',\n 'fa-transgender',\n 'fa-transgender-alt',\n 'fa-trash',\n 'fa-trash-alt',\n 'fa-trash-restore',\n 'fa-trash-restore-alt',\n 'fa-tree',\n 'fa-trophy',\n 'fa-truck',\n 'fa-truck-loading',\n 'fa-truck-monster',\n 'fa-truck-moving',\n 'fa-truck-pickup',\n 'fa-tshirt',\n 'fa-tty',\n 'fa-tv',\n 'fa-umbrella',\n 'fa-umbrella-beach',\n 'fa-underline',\n 'fa-undo',\n 'fa-undo-alt',\n 'fa-universal-access',\n 'fa-university',\n 'fa-unlink',\n 'fa-unlock',\n 'fa-unlock-alt',\n 'fa-upload',\n 'fa-user',\n 'fa-user-alt',\n 'fa-user-alt-slash',\n 'fa-user-astronaut',\n 'fa-user-check',\n 'fa-user-circle',\n 'fa-user-clock',\n 'fa-user-cog',\n 'fa-user-edit',\n 'fa-user-friends',\n 'fa-user-graduate',\n 'fa-user-injured',\n 'fa-user-lock',\n 'fa-user-md',\n 'fa-user-minus',\n 'fa-user-ninja',\n 'fa-user-nurse',\n 'fa-user-plus',\n 'fa-user-secret',\n 'fa-user-shield',\n 'fa-user-slash',\n 'fa-user-tag',\n 'fa-user-tie',\n 'fa-user-times',\n 'fa-users',\n 'fa-users-cog',\n 'fa-users-slash',\n 'fa-utensil-spoon',\n 'fa-utensils',\n 'fa-vector-square',\n 'fa-venus',\n 'fa-venus-double',\n 'fa-venus-mars',\n 'fa-vest',\n 'fa-vest-patches',\n 'fa-vial',\n 'fa-vials',\n 'fa-video',\n 'fa-video-slash',\n 'fa-vihara',\n 'fa-virus',\n 'fa-virus-slash',\n 'fa-viruses',\n 'fa-voicemail',\n 'fa-volleyball-ball',\n 'fa-volume-down',\n 'fa-volume-mute',\n 'fa-volume-off',\n 'fa-volume-up',\n 'fa-vote-yea',\n 'fa-vr-cardboard',\n 'fa-walking',\n 'fa-wallet',\n 'fa-warehouse',\n 'fa-water',\n 'fa-wave-square',\n 'fa-weight',\n 'fa-weight-hanging',\n 'fa-wheelchair',\n 'fa-wifi',\n 'fa-wind',\n 'fa-window-close',\n 'fa-window-maximize',\n 'fa-window-minimize',\n 'fa-window-restore',\n 'fa-wine-bottle',\n 'fa-wine-glass',\n 'fa-wine-glass-alt',\n 'fa-won-sign',\n 'fa-wrench',\n 'fa-x-ray',\n 'fa-yen-sign',\n 'fa-yin-yang'\n ];\n}\n","import { Injectable } from '@angular/core';\nimport { FontawesomeIconsBrands } from '../models/fontawesome-icons-brands.model';\nimport { FontawesomeIconsRegular } from '../models/fontawesome-icons-regular.model';\nimport { FontawesomeIconsSolid } from '../models/fontawesome-icons-solid.model';\nimport { ParticleIconsBrand } from '../models/particle-icons-brands.model';\nimport { ParticleIconsRegular } from '../models/particle-icons-regular.model';\nimport { ParticleIconsSolid } from '../models/particle-icons-solid.model';\n\n/**\n * Type representing the available Particle icon filter options\n */\ndeclare type ParticleIconFilterOption = 'all' | 'solid' | 'regular' | 'brands';\n\n/**\n * Type representing the available Fontawesome icon filter options\n */\ndeclare type FontawesomeIconFilterOption = 'all' | 'solid' | 'regular' | 'brands';\n\n/**\n * Service for filtering Particle/Fontawesome icons\n */\n@Injectable()\nexport class IconsService {\n\n /**\n * Get Fontawesome icons filtered by icon type\n * @param filter the icon type to filter by\n * @private\n */\n private static getFontawesomeIcons(filter: FontawesomeIconFilterOption): Array<{ prefix: string, name: string }> {\n const icons: Array<{ prefix: string, name: string }> = [];\n\n if (filter === 'all' || filter === 'solid') {\n icons.push(...FontawesomeIconsSolid.ICONS.map(icon => ({ prefix: FontawesomeIconsSolid.PREFIX, name: icon })));\n }\n\n if (filter === 'all' || filter === 'regular') {\n icons.push(...FontawesomeIconsRegular.ICONS.map(icon => ({ prefix: FontawesomeIconsRegular.PREFIX, name: icon })));\n }\n\n if (filter === 'all' || filter === 'brands') {\n icons.push(...FontawesomeIconsBrands.ICONS.map(icon => ({ prefix: FontawesomeIconsBrands.PREFIX, name: icon })));\n }\n\n return icons;\n }\n\n /**\n * Get Particle icons filtered by icon type\n * @param filter the icon type to filter by\n * @private\n */\n private static getParticleIcons(filter: ParticleIconFilterOption): Array<{ prefix: string, name: string }> {\n const icons: Array<{ prefix: string, name: string }> = [];\n\n if (filter === 'all' || filter === 'solid') {\n icons.push(...ParticleIconsSolid.icons.map(icon => ({ prefix: icon.prefix, name: `fa-${icon.iconName}` })));\n }\n\n if (filter === 'all' || filter === 'regular') {\n icons.push(...ParticleIconsRegular.icons.map(icon => ({ prefix: icon.prefix, name: `fa-${icon.iconName}` })));\n }\n\n if (filter === 'all' || filter === 'brands') {\n icons.push(...ParticleIconsBrand.icons.map(icon => ({ prefix: icon.prefix, name: `fa-${icon.iconName}` })));\n }\n\n return icons;\n }\n\n /**\n * Get a list of icons (as strings) containing both Particle icons\n * and Fontawesome icons that match their respective filter criteria\n * @param iconType the type of icon, or all icons\n * @param filter the icon styling to filter by\n * @param searchText the search text to filter icons by\n */\n getIcons(\n iconType: 'all' | 'particle' | 'fontawesome',\n filter: ParticleIconFilterOption | FontawesomeIconFilterOption,\n searchText = ''\n ): Array<{ prefix: string, name: string }> {\n let icons: Array<{ prefix: string, name: string }> = [];\n\n if (iconType === 'all' || iconType === 'particle') {\n const particleIcons = IconsService.getParticleIcons(filter as ParticleIconFilterOption);\n\n if (particleIcons.length) {\n icons.push(...particleIcons);\n }\n }\n\n if (iconType === 'all' || iconType === 'fontawesome') {\n const fontawesomeIcons = IconsService.getFontawesomeIcons(filter as FontawesomeIconFilterOption);\n\n if (fontawesomeIcons.length) {\n icons.push(...fontawesomeIcons);\n }\n }\n\n const trimmedSearchText = searchText.trim().toLowerCase();\n if (trimmedSearchText) {\n icons = icons.filter(icon => icon.name.includes(trimmedSearchText));\n }\n\n return icons;\n }\n}\n","import {Component, Input} from '@angular/core';\r\nimport {EndpointStateText} from '../../../shared/models/particle-component-text.model';\r\n\r\n/**\r\n * Component to display different endpoint states\r\n */\r\n@Component({\r\n selector: 'particle-endpoint-state',\r\n templateUrl: './endpoint-state.component.html',\r\n styleUrls: ['./endpoint-state.component.css']\r\n})\r\nexport class EndpointStateComponent {\r\n\r\n /**\r\n * Flag to determine if in loading state\r\n */\r\n @Input()\r\n loading: boolean = false;\r\n\r\n /**\r\n * Icon for loading state\r\n */\r\n @Input()\r\n loadingIcon: 'double_helix' | string = 'double_helix';\r\n\r\n /**\r\n * Flag to determine if in empty state\r\n */\r\n @Input()\r\n empty: boolean = false;\r\n\r\n /**\r\n * Icon for empty state\r\n */\r\n @Input()\r\n emptyIcon = 'fas fa-folder-open fa-fw fa-3x';\r\n\r\n /**\r\n * Flag to determine if in error state\r\n */\r\n @Input()\r\n error: boolean = false;\r\n\r\n /**\r\n * Icon for error state\r\n */\r\n @Input()\r\n errorIcon = 'fas fa-bomb fa-fw fa-3x';\r\n\r\n /**\r\n * Flag to determine if overlay spinner\r\n */\r\n @Input()\r\n loadingOverlay: boolean = false;\r\n\r\n /**\r\n * The icon on the overlay spinner\r\n */\r\n @Input()\r\n loadingOverlayIcon = 'fas fa-spinner fa-spin';\r\n\r\n @Input()\r\n text: EndpointStateText = {\r\n loadingText: 'Loading',\r\n emptyText: 'There\\'s nothing here yet.',\r\n errorText: 'An error has occurred',\r\n errorSubtext: 'Please try again'\r\n } as EndpointStateText;\r\n\r\n /**\r\n * Component constructor\r\n */\r\n constructor() { }\r\n\r\n}\r\n","<!-- loading -->\r\n<div class=\"row column center_center\" *ngIf=\"loading\">\r\n <ng-container [ngSwitch]=\"loadingIcon\">\r\n <!-- bars_bounce -->\r\n <ng-container *ngSwitchCase=\"'double_helix'\">\r\n <div class=\"center_center square_60px\">\r\n <div class=\"endpoint_spin\" style=\"position: absolute\">\r\n <div class=\"bars_vertical\">\r\n <div class=\"col endpoint_shape header_color bar1\"></div>\r\n <div class=\"col endpoint_shape header_color bar2\"></div>\r\n <div class=\"col endpoint_shape header_color_light_7 bar3\"></div>\r\n <div class=\"col endpoint_shape header_color bar4\"></div>\r\n <div class=\"col endpoint_shape header_color bar5\"></div>\r\n </div>\r\n </div>\r\n <div class=\"endpoint_spin_rev\" style=\"position: absolute\">\r\n <div class=\"bars_vertical\">\r\n <div class=\"col endpoint_shape header_color bar5\"></div>\r\n <div class=\"col endpoint_shape header_color bar4\"></div>\r\n <div class=\"col endpoint_shape header_color_light_7 bar3\"></div>\r\n <div class=\"col endpoint_shape header_color bar2\"></div>\r\n <div class=\"col endpoint_shape header_color bar1\"></div>\r\n </div>\r\n </div>\r\n <div class=\"circle_30px ptl_brdr_color ptl_brdr_size\" style=\"position: absolute\"></div>\r\n </div>\r\n <div *ngIf=\"text.loadingText\" class=\"text md bold center mar_top15\" style=\"user-select: none\">{{text.loadingText}}<span class=\"one\">.</span><span class=\"two\">.</span><span class=\"three\">.</span></div>\r\n <div *ngIf=\"text.loadingSubtext\" class=\"text sm center mar_top5\" style=\"user-select: none\">{{text.loadingSubtext}}</div>\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngSwitchCase=\"'double_helix_old'\">\r\n <div class=\"bars_vertical\">\r\n <div class=\"col size_1 bg_overlay brdr bar1\"></div>\r\n <div class=\"col size_1 bg_overlay brdr bar2\"></div>\r\n <div class=\"col size_1 bg_overlay brdr bar3\"></div>\r\n <div class=\"col size_1 bg_overlay brdr bar4\"></div>\r\n <div class=\"col size_1 bg_overlay brdr bar5\"></div>\r\n </div>\r\n <div *ngIf=\"text.loadingText\" class=\"text md bold center mar_top5\">{{text.loadingText}}<span class=\"one\">.</span><span class=\"two\">.</span><span class=\"three\">.</span></div>\r\n <div *ngIf=\"text.loadingSubtext\" class=\"text sm center mar_top5\">{{text.loadingSubtext}}</div>\r\n </ng-container>\r\n\r\n <div *ngSwitchDefault>\r\n <i class=\"{{loadingIcon}} fa-fw fa-3x opac_80\"></i>\r\n <div *ngIf=\"text.loadingText\" class=\"text md bold center mar_top5\">{{text.loadingText}}<span class=\"one\">.</span><span class=\"two\">.</span><span class=\"three\">.</span></div>\r\n <div *ngIf=\"text.loadingSubtext\" class=\"text sm center mar_top5\">{{text.loadingSubtext}}</div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n\r\n<!-- loading overlay -->\r\n<ng-container *ngIf=\"loadingOverlay\">\r\n <div id=\"overlay\">\r\n </div>\r\n <div class=\"row column center_center content_color brad_5 shadow min_w280\" style=\"padding:25px;\" id=\"spinner\">\r\n <div class=\"bars_vertical\">\r\n <div class=\"col size_1 bg_overlay brdr bar1\"></div>\r\n <div class=\"col size_1 bg_overlay brdr bar2\"></div>\r\n <div class=\"col size_1 bg_overlay brdr bar3\"></div>\r\n <div class=\"col size_1 bg_overlay brdr bar4\"></div>\r\n </div>\r\n <div *ngIf=\"text.loadingOverlayText\" class=\"text xlg bold center\" style=\"margin-top:20px;\">{{text.loadingOverlayText}}</div>\r\n <div *ngIf=\"text.loadingOverlaySubtext\" class=\"text md center mar_top5\">{{text.loadingOverlaySubtext}}</div>\r\n </div>\r\n</ng-container>\r\n\r\n<!-- empty -->\r\n<div class=\"row_block\" *ngIf=\"empty\">\r\n <div *ngIf=\"emptyIcon\" class=\"h_center\"><i class=\"{{emptyIcon}}\" style=\"opacity:0.8;\"></i></div>\r\n <div *ngIf=\"text.emptyText\" class=\"text md bold center mar_top5\">{{text.emptyText}}</div>\r\n <div *ngIf=\"text.emptySubtext\" class=\"text sm center mar_top5\">{{text.emptySubtext}}</div>\r\n</div>\r\n\r\n<!-- error -->\r\n<div class=\"row_block\" *ngIf=\"error\">\r\n <div *ngIf=\"errorIcon\" class=\"h_center\"><i class=\"{{errorIcon}}\" style=\"opacity:0.8;\"></i></div>\r\n <div *ngIf=\"text.errorText\" class=\"text md bold center mar_top5\">{{text.errorText}}</div>\r\n <div *ngIf=\"text.errorSubtext\" class=\"text sm center mar_top5\">{{text.errorSubtext}}</div>\r\n</div>\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n OnDestroy,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { BehaviorSubject, combineLatest, Observable, Subject, Subscription } from 'rxjs';\r\nimport { map, tap, withLatestFrom } from 'rxjs/operators';\r\nimport { IconsService } from '../services/icons.service';\r\nimport {IconSelectText} from '../../../shared/models/particle-component-text.model';\r\n\r\n/**\r\n * Particle Icon Select component provides a button and an icon picker that includes all of the Particle Icons as well as the FAS icons.\r\n */\r\n@Component({\r\n selector: 'particle-icon-select',\r\n templateUrl: 'icon-select.component.html',\r\n styleUrls: ['./icon-select.component.css'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => IconSelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class IconSelectComponent implements ControlValueAccessor, OnDestroy {\r\n\r\n /**\r\n * The number of items to display per page\r\n * @private\r\n */\r\n private static readonly PAGE_SIZE = 48;\r\n\r\n /**\r\n * Set the value of the icon select\r\n * @param value the value to set\r\n */\r\n @Input()\r\n set value(value: string) {\r\n this._value = value;\r\n\r\n if (value) {\r\n const [prefix, name] = value.split(' ');\r\n this._internalValue.next({ prefix, name });\r\n this.showIconSelectionPreview = true;\r\n }\r\n }\r\n\r\n /**\r\n * Set disabled\r\n * @param disabled whether or not the icon picker should be disabled\r\n */\r\n @Input()\r\n set disabled(disabled: boolean) {\r\n this._disabled = disabled;\r\n }\r\n\r\n /**\r\n * Color class of the button\r\n */\r\n @Input()\r\n buttonColorClass: string = null as any;\r\n\r\n /**\r\n * The value to set to the button's width, min-width, height and min-height\r\n */\r\n @Input()\r\n buttonSizing = '40px';\r\n\r\n @Input()\r\n text: IconSelectText = {\r\n selectAnIcon: 'Select an Icon',\r\n seeAllIcons: 'See All Icons',\r\n fontAwesomeIcons: 'Font Awesome Icons',\r\n all: 'All',\r\n solid: 'Solid',\r\n regular: 'Regular',\r\n brands: 'Brands',\r\n customIcons: 'Custom Icons',\r\n previousPage: 'Previous Page',\r\n nextPage: 'Next Page',\r\n searchIcons: 'Search Icons',\r\n submitSearch: 'Submit Search',\r\n clearResults: 'Clear Results',\r\n couldntFindAnything: 'We couldn\\'t find anything',\r\n modifySearchCriteria: 'Please try modifying your search criteria',\r\n selection: 'Selection',\r\n confirm: 'Confirm',\r\n select: 'Select',\r\n close: 'Close'\r\n } as IconSelectText;\r\n\r\n /**\r\n * Icon select opened event emitter\r\n */\r\n @Output()\r\n opened = new EventEmitter<void>();\r\n\r\n /**\r\n * Icon selected event emitter\r\n */\r\n @Output()\r\n selected: EventEmitter<any> = new EventEmitter();\r\n\r\n /**\r\n * Dialog closed event emitter\r\n */\r\n @Output()\r\n closed = new EventEmitter<any>();\r\n\r\n /**\r\n * The scrollable icon container\r\n */\r\n @ViewChild('iconScrollContainer')\r\n iconScrollContainer: ElementRef<HTMLDivElement> = null as any;\r\n\r\n /**\r\n * BehaviorSubject tracking the input value destructed into its prefix and class name\r\n */\r\n readonly _internalValue = new BehaviorSubject<{ prefix: string, name: string }>(null as any);\r\n\r\n /**\r\n * BehaviorSubject tracking the current filter value selection for icons\r\n */\r\n readonly _filter = new BehaviorSubject< {\r\n style: 'all' | 'solid' | 'regular' | 'brands',\r\n type: 'all' | 'particle' | 'fontawesome'\r\n }>({ style: 'all', type: 'all' });\r\n\r\n /**\r\n * BehaviorSubject tracking the current icon search text value\r\n */\r\n readonly _searchText = new BehaviorSubject('');\r\n\r\n /**\r\n * BehaviorSubject that emits when search button has been clicked\r\n */\r\n readonly _searchClick = new BehaviorSubject('');\r\n\r\n /**\r\n * BehaviorSubject tracking the active pagination page\r\n */\r\n readonly _activePage = new BehaviorSubject(0);\r\n\r\n /**\r\n * Subject that emits on search input enter keyup\r\n */\r\n readonly _searchInputEnterKeyup = new Subject<void>();\r\n\r\n /**\r\n * An array of all icons (as strings) that meet the current filter/search criteria as an Observable\r\n * @private\r\n */\r\n private readonly icons$: Observable<Array<{ prefix: string, name: string }>> = combineLatest([\r\n this._filter,\r\n this._searchClick\r\n ]).pipe(\r\n map(([filter, searchText]) => this.service.getIcons(\r\n filter.type,\r\n filter.style,\r\n searchText\r\n ))\r\n );\r\n\r\n /**\r\n * The count of total paginator pages as an Observable\r\n */\r\n readonly totalPages$: Observable<number> = this.icons$.pipe(\r\n map(icons => icons.length\r\n ? Math.ceil(icons.length / IconSelectComponent.PAGE_SIZE)\r\n : 0\r\n )\r\n );\r\n\r\n /**\r\n * Observable boolean indicating whether or not the user can perform an icon text search\r\n */\r\n readonly canSearch$: Observable<boolean> = this._searchText.pipe(\r\n map(searchText => !!searchText.trim().length)\r\n );\r\n\r\n /**\r\n * Observable boolean indicating whether or not the user can paginate to the previous page\r\n */\r\n readonly canPaginatePrevious$: Observable<boolean> = this._activePage.pipe(\r\n map(activePage => activePage > 0)\r\n );\r\n\r\n /**\r\n * Observable boolean indicating whether or not the user can paginate to the next page\r\n */\r\n readonly canPaginateNext$: Observable<boolean> = this.totalPages$.pipe(\r\n withLatestFrom(this._activePage),\r\n map(([totalPages, activePage]) => activePage < (totalPages - 1))\r\n );\r\n\r\n /**\r\n * Paginated icons array as an Observable\r\n */\r\n readonly paginatedIcons$: Observable<Array<{ prefix: string, name: string }>> = combineLatest([\r\n this._activePage,\r\n this.icons$\r\n ]).pipe(\r\n map(([activePage, icons]) => {\r\n let paginatedIcons: Array<{ prefix: string, name: string }> = null as any;\r\n\r\n if (activePage >= 0 && icons.length) {\r\n paginatedIcons = icons.slice(\r\n IconSelectComponent.PAGE_SIZE * activePage,\r\n IconSelectComponent.PAGE_SIZE * (activePage + 1)\r\n );\r\n }\r\n\r\n return paginatedIcons;\r\n }),\r\n tap(() => {\r\n if (this.iconScrollContainer) {\r\n this.iconScrollContainer.nativeElement.scrollTop = 0;\r\n }\r\n })\r\n );\r\n\r\n /**\r\n * Object that controls whether to show the dialog or not\r\n */\r\n showDialog: any;\r\n\r\n /**\r\n * Whether or not to show the icon selection preview\r\n */\r\n showIconSelectionPreview = false;\r\n\r\n /**\r\n * Subscription object to store search input enter keyup subscription\r\n * @private\r\n */\r\n private readonly subscription: Subscription;\r\n\r\n /**\r\n * The value of the icon select\r\n * @private\r\n */\r\n private _value: string = null as any;\r\n\r\n /**\r\n * Whether or not the icon picker is disabled\r\n * @private\r\n */\r\n private _disabled: boolean = false;\r\n\r\n /**\r\n * Function to call on change\r\n */\r\n onChange: (value: any) => void = () => {};\r\n\r\n /**\r\n * Function to call on touch\r\n */\r\n onTouched: () => any = () => {};\r\n\r\n /**\r\n * Dependency injection site\r\n * @param service the IconsService\r\n * @param changeDetectorRef the Angular ChangeDetectorRef\r\n */\r\n constructor(private service: IconsService, private changeDetectorRef: ChangeDetectorRef) {\r\n this.subscription = this._searchInputEnterKeyup.pipe(\r\n withLatestFrom(this.canSearch$)\r\n ).subscribe(([___, canSearch]) => {\r\n if (canSearch) {\r\n this._searchClick.next(this._searchText.getValue());\r\n this._activePage.next(0);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Get disabled\r\n */\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n /**\r\n * Destroy component, unsubscribe from search input enter keyup subscription\r\n */\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n /**\r\n * Write the input value\r\n * @param value the value to write\r\n */\r\n writeValue(value: string): void {\r\n this.value = value;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Register onChange function\r\n * @param fn the function to register\r\n */\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Register onTouched function\r\n * @param fn the function to register\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Set disabled state\r\n * @param isDisabled whether or not the icon picker should be disabled\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Open the icon select dialog\r\n */\r\n openDialog(): void {\r\n if (!this.disabled) {\r\n this.reset();\r\n this.showDialog = {};\r\n this.opened.emit();\r\n\r\n if (this.value) {\r\n this.showIconSelectionPreview = true;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Close the icon select dialog\r\n */\r\n closeDialog(): void {\r\n let internalValue = null;\r\n if (this._value) {\r\n const [prefix, name] = this._value.split(' ');\r\n internalValue = { prefix, name };\r\n }\r\n\r\n this._internalValue.next(internalValue as any);\r\n this.showDialog = null;\r\n this.closed.emit();\r\n }\r\n\r\n /**\r\n * Handle filter select\r\n * @param filter the selected filter\r\n */\r\n handleFilterSelect(\r\n filter: { style: 'all' | 'solid' | 'regular' | 'brands',\r\n type: 'all' | 'particle' | 'fontawesome' }\r\n ): void {\r\n this._filter.next(filter);\r\n this._activePage.next(0);\r\n }\r\n\r\n /**\r\n * Update internal value on icon select\r\n * @param icon the selected icon\r\n */\r\n handleIconSelect(icon: { prefix: string, name: string }): void {\r\n this._internalValue.next(icon);\r\n this.showIconSelectionPreview = false;\r\n setTimeout(() => this.showIconSelectionPreview = true);\r\n }\r\n\r\n /**\r\n * Write value on confirm\r\n */\r\n handleIconSelectConfirm(): void {\r\n const icon = this._internalValue.getValue();\r\n this.updateModel(`${icon.prefix} ${icon.name}`);\r\n this.closeDialog();\r\n }\r\n\r\n /**\r\n * Go to the next pagination page\r\n */\r\n paginateNext(): void {\r\n this._activePage.next(this._activePage.getValue() + 1);\r\n }\r\n\r\n /**\r\n * Go to the previous pagination page\r\n */\r\n paginatePrevious(): void {\r\n this._activePage.next(this._activePage.getValue() - 1);\r\n }\r\n\r\n /**\r\n * Clear search text and reset paginator\r\n */\r\n clearSearch(): void {\r\n this._searchText.next('');\r\n this._searchClick.next('');\r\n this._activePage.next(0);\r\n }\r\n\r\n /**\r\n * Update model\r\n * @param value the new value of the model\r\n * @private\r\n */\r\n private updateModel(value: string): void {\r\n const valueBeforeUpdate = this._value;\r\n\r\n if (!this.disabled) {\r\n this.value = value;\r\n\r\n if (valueBeforeUpdate !== this._value) {\r\n this.onChange(this._value);\r\n }\r\n\r\n this.selected.emit({ value: this._value });\r\n }\r\n }\r\n\r\n /**\r\n * Reset filtering/pagination BehaviorSubject values\r\n * @private\r\n */\r\n private reset(): void {\r\n this._filter.next({ style: 'all', type: 'all' });\r\n this._searchText.next('');\r\n this._searchClick.next('');\r\n this._activePage.next(0);\r\n }\r\n}\r\n","<!-- choose button -->\r\n<button [ngClass]=\"buttonColorClass ? buttonColorClass : 'content_color'\"\r\n [ngStyle]=\"{\r\n 'width': buttonSizing,\r\n 'min-width': buttonSizing,\r\n 'height': buttonSizing,\r\n 'min-height': buttonSizing\r\n }\"\r\n (click)=\"openDialog()\"\r\n [particleTooltip]=\"(_internalValue | async)?.prefix + ' ' + (_internalValue | async)?.name\"\r\n [tooltipDisabled]=\"(_internalValue | async) === undefined\"\r\n [disabled]=\"disabled\"\r\n class=\"access wis_button bg_overlay brdr brad_3\"\r\n [attr.aria-label]=\"text.selectAnIcon\">\r\n <ng-container *ngIf=\"!showDialog else placeholderIcon\">\r\n <div *ngIf=\"_internalValue | async as selectedIcon else noSelection\">\r\n <i class=\"{{selectedIcon.prefix}} {{selectedIcon.name}} wis_icon\"></i>\r\n </div>\r\n <ng-template #noSelection>\r\n <div><i class=\"fas fa-icons opacity_20\"></i></div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #placeholderIcon>\r\n <div><i class=\"fas fa-spinner fa-spin\"></i></div>\r\n </ng-template>\r\n</button>\r\n\r\n<!-- TODO: at some point, maybe implement infinite scroll to icons -->\r\n\r\n<!-- picker dialog -->\r\n<particle-dialog [title]=\"text.selectAnIcon\"\r\n [object]=\"showDialog\"\r\n [width]=\"'850px'\"\r\n [height]=\"'500px'\"\r\n (closed)=\"closeDialog()\">\r\n <div class=\"row height100\">\r\n\r\n <!-- FILTERS -->\r\n <div class=\"col min_w250 bg_overlay brdr border_right mobile_hide\">\r\n <div class=\"row_block width100\">\r\n <ng-container *ngIf=\"_filter | async as filter\">\r\n <!-- all icons -->\r\n <div class=\"mar_5 pad_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'all', type: 'all' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'all' && filter.style === 'all' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.seeAllIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'all' && filter.style === 'all'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.seeAllIcons}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"bg_overlay brdr hr mar_10\"></div>\r\n <!-- fontawesome icons -->\r\n <div class=\"mar_5\">\r\n <div class=\"text md bolder\" style=\"padding:10px 10px 5px 15px;\">{{text.fontAwesomeIcons}}</div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'all', type: 'fontawesome' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'fontawesome' && filter.style === 'all' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.fontAwesomeIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'fontawesome' && filter.style === 'all'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.all}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'solid', type: 'fontawesome' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'fontawesome' && filter.style === 'solid' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.solid + ' ' + text.fontAwesomeIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'fontawesome' && filter.style === 'solid'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.solid}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'regular', type: 'fontawesome' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'fontawesome' && filter.style === 'regular' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.regular + ' ' + text.fontAwesomeIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'fontawesome' && filter.style === 'regular'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.regular}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'brands', type: 'fontawesome' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'fontawesome' && filter.style === 'brands' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.brands + ' ' + text.fontAwesomeIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'fontawesome' && filter.style === 'brands'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.brands}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"bg_overlay brdr hr mar_10\"></div>\r\n <!-- custom icons -->\r\n <div class=\"mar_5\">\r\n <div class=\"text md bolder\" style=\"padding:10px 10px 5px 15px;\">{{text.customIcons}}</div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'all', type: 'particle' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'particle' && filter.style === 'all' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.customIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'particle' && filter.style === 'all'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">All</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'solid', type: 'particle' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'particle' && filter.style === 'solid' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.solid + ' ' + text.customIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'particle' && filter.style === 'solid'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.solid}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'regular', type: 'particle' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'particle' && filter.style === 'regular' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.regular + ' ' + text.customIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'particle' && filter.style === 'regular'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.regular}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'brands', type: 'particle' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'particle' && filter.style === 'brands' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.brands + ' ' + text.customIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'particle' && filter.style === 'brands'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.brands}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <!-- ICONS -->\r\n <div class=\"col size_2 column\">\r\n <div class=\"col content_color_dark_1 pad_x5\">\r\n <!-- paginator -->\r\n <div *ngIf=\"totalPages$ | async as totalPages\"\r\n class=\"col v_center mar_10\">\r\n <button *ngIf=\"canPaginatePrevious$ | async else disabledPreviousButton\"\r\n (click)=\"paginatePrevious()\"\r\n class=\"access btn square_24px bg_overlay brdr ok_button_color\"\r\n [attr.aria-label]=\"text.previousPage\">\r\n <span class=\"icon slide_left\"><i class=\"fas fa-arrow-left\"></i></span>\r\n </button>\r\n <ng-template #disabledPreviousButton>\r\n <button disabled class=\"access btn square_24px bg_overlay brdr ok_button_color\"\r\n [attr.aria-label]=\"text.previousPage\">\r\n <span class=\"icon slide_left\"><i class=\"fas fa-arrow-left\"></i></span>\r\n </button>\r\n </ng-template>\r\n <div\r\n class=\"text sm bolder center\"\r\n style=\"min-width:65px;\">\r\n {{(_activePage | async)! + 1}} / {{totalPages}}\r\n </div>\r\n <button *ngIf=\"canPaginateNext$ | async else disabledNextButton\"\r\n (click)=\"paginateNext()\"\r\n class=\"access btn square_24px bg_overlay brdr ok_button_color\"\r\n [attr.aria-label]=\"text.nextPage\">\r\n <span class=\"icon slide_right\"><i class=\"fas fa-arrow-right\"></i></span>\r\n </button>\r\n <ng-template #disabledNextButton>\r\n <button disabled class=\"access btn square_24px bg_overlay brdr ok_button_color\"\r\n [attr.aria-label]=\"text.nextPage\">\r\n <span class=\"icon slide_right\"><i class=\"fas fa-arrow-right\"></i></span>\r\n </button>\r\n </ng-template>\r\n </div>\r\n <!-- search -->\r\n <div class=\"col size_1 wis_search mar_10\">\r\n <input #iconSearchInput\r\n [ngModel]=\"_searchText | async\"\r\n (input)=\"_searchText.next(iconSearchInput.value)\"\r\n (keyup.enter)=\"_searchInputEnterKeyup.next($any(null))\"\r\n class=\"access input md bg_overlay brdr content_color\"\r\n [attr.aria-label]=\"text.searchIcons\" [placeholder]=\"text.searchIcons + '...'\" />\r\n <button *ngIf=\"(canSearch$ | async) && (_searchClick | async)\"\r\n (click)=\"clearSearch()\" aria-label=\"Clear search\"\r\n class=\"access btn circle_18px overlay wis_clear_btn\">\r\n <span class=\"icon grow\"><i class=\"fas fa-times fa-sm\"></i></span>\r\n </button>\r\n <button *ngIf=\"canSearch$ | async else disabledSearchButton\"\r\n (click)=\"_searchClick.next(iconSearchInput.value); _activePage.next(0)\"\r\n class=\"access btn square_28px bg_overlay brdr ok_button_color brad_3 wis_search_btn\"\r\n [attr.aria-label]=\"text.submitSearch\" type=\"submit\">\r\n <span class=\"icon grow\"><i class=\"fas fa-search fa-sm\"></i></span>\r\n </button>\r\n <ng-template #disabledSearchButton>\r\n <button disabled\r\n class=\"access btn square_28px bg_overlay brdr ok_button_color brad_3 wis_search_btn\"\r\n [attr.aria-label]=\"text.submitSearch\" type=\"submit\">\r\n <span class=\"icon grow\"><i class=\"fas fa-search fa-sm\"></i></span>\r\n </button>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <!-- icons -->\r\n <div #iconScrollContainer class=\"col size_1 top_left scroll_y pad_5\" style=\"scroll-behavior: smooth\">\r\n <ng-container *ngIf=\"paginatedIcons$ | async as icons else noResults\">\r\n <div class=\"row wrap top_left\" style=\"align-items:stretch;\">\r\n <ng-container *ngFor=\"let icon of paginatedIcons$ | async\">\r\n <div class=\"col size_1 min_w75 mar_5\">\r\n <button class=\"access wis_icon_btn\" (click)=\"handleIconSelect(icon)\" [attr.aria-label]=\"text.select + ' ' + icon.name\">\r\n <div [ngClass]=\"((_internalValue | async)?.prefix === icon.prefix) && ((_internalValue | async)?.name === icon.name) ? 'ok_button_color' : 'content_color'\"\r\n class=\"wis_icon_btn_preview square_50px brad_3 bg_overlay brdr mar_bot5\">\r\n <i class=\"{{icon.prefix}} {{icon.name}}\"></i>\r\n </div>\r\n <div class=\"text sm center faded\">{{icon.name}}</div>\r\n </button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-template #noResults>\r\n <div class=\"row column min_h300 center_center\">\r\n <particle-endpoint-state\r\n [empty]=\"true\"\r\n [emptyIcon]=\"'fas fa-search fa-3x mar_bot5'\"\r\n [text]=\"{emptyText: text.couldntFindAnything, emptySubtext: text.modifySearchCriteria}\">\r\n </particle-endpoint-state>\r\n <button class=\"access btnset clear mar_10\"\r\n [attr.aria-label]=\"text.close\"\r\n (click)=\"clearSearch()\">\r\n <div class=\"circle_20px ptl_brdr_color ptl_brdr_size ptl_input_bg_color\">\r\n <i class=\"fas fa-times\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div *ngIf=\"_internalValue | async as selectedIcon\"\r\n class=\"col space_between bg_overlay brdr border_top pad_x5 wis_selection_bar\">\r\n <div class=\"col v_center mar_10\">\r\n <div class=\"text md faded mar_right10 mobile_hide\">{{text.selection}}:</div>\r\n <div class=\"v_center\" *ngIf=\"showIconSelectionPreview\">\r\n <i class=\"{{selectedIcon.prefix}} {{selectedIcon.name}} fa-fw mar_right5\" style=\"font-size:16px;\"></i>\r\n <div class=\"text md bold\">{{selectedIcon.prefix}} {{selectedIcon.name}}</div>\r\n </div>\r\n </div>\r\n <div class=\"col v_center mar_10\">\r\n <button\r\n type=\"button\"\r\n class=\"access btnset spaced md hov_glow save_button_color ptl_brdr_radius\"\r\n [attr.aria-label]=\"text.confirm\"\r\n (click)=\"handleIconSelectConfirm()\"\r\n >\r\n <div>{{text.confirm}}</div>\r\n <div class=\"brdr border_left mar_left10 pad_left10\"><i class=\"fas fa-check\"></i></div>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</particle-dialog>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EndpointStateComponent } from './components/endpoint-state.component';\n\n\n\n@NgModule({\n declarations: [EndpointStateComponent],\n exports: [\n EndpointStateComponent\n ],\n imports: [\n CommonModule\n ]\n})\nexport class ParticleEndpointStateModule { }\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {ParticleTooltipModule} from '../tooltip/tooltip.module';\r\nimport {ParticleIconsRegular} from './models/particle-icons-regular.model';\r\nimport {ParticleIconsBrand} from './models/particle-icons-brands.model';\r\nimport {ParticleIconsSolid} from './models/particle-icons-solid.model';\r\nimport {IconSelectComponent} from './components/icon-select.component';\r\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\r\nimport {ParticleDialogModule} from '../dialog/dialog.module';\r\nimport {IconsService} from './services/icons.service';\r\nimport {ParticleEndpointStateModule} from '../endpoint-state/endpoint-state.module';\r\n\r\n/**\r\n * Reference to the Font Awesome variable to add icons\r\n */\r\nconst FontAwesome = window['FontAwesome' as any] as any;\r\n\r\n@NgModule({\r\n declarations: [\r\n IconSelectComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n ParticleTooltipModule,\r\n ParticleDialogModule,\r\n ParticleEndpointStateModule\r\n ],\r\n exports: [\r\n IconSelectComponent\r\n ],\r\n providers: [IconsService]\r\n})\r\nexport class ParticleIconsModule {\r\n\r\n constructor() {\r\n if (!FontAwesome) {\r\n return;\r\n }\r\n\r\n for (const icon of ParticleIconsBrand.icons) {\r\n FontAwesome.library.add(icon);\r\n }\r\n\r\n for (const icon of ParticleIconsRegular.icons) {\r\n FontAwesome.library.add(icon);\r\n }\r\n\r\n for (const icon of ParticleIconsSolid.icons) {\r\n FontAwesome.library.add(icon);\r\n }\r\n }\r\n\r\n}\r\n","export class IdleTimer {\r\n private interval: any;\r\n private timeoutTracker: any;\r\n private readonly eventHandler: any;\r\n private readonly timeout: number;\r\n private readonly onTimeout: any;\r\n\r\n constructor(timeout: number, onTimeout: any) {\r\n this.timeout = timeout;\r\n this.onTimeout = onTimeout;\r\n this.eventHandler = this.updateExpiredTime.bind(this);\r\n this.tracker();\r\n this.startInterval();\r\n }\r\n\r\n private startInterval(): void {\r\n this.updateExpiredTime();\r\n\r\n this.interval = setInterval(() => {\r\n if (this.isTimerExpired() && this.onTimeout) {\r\n this.onTimeout();\r\n this.cleanUp();\r\n }\r\n }, 1000);\r\n }\r\n\r\n private updateExpiredTime(): void {\r\n if (this.timeoutTracker) {\r\n clearTimeout(this.timeoutTracker);\r\n }\r\n this.timeoutTracker = setTimeout(() => {\r\n localStorage.setItem('_expiredTime', (Date.now() + this.timeout * 1000) + '');\r\n }, 300);\r\n }\r\n\r\n private tracker(): void {\r\n localStorage.removeItem('_expiredTime');\r\n window.addEventListener('mousemove', this.eventHandler);\r\n window.addEventListener('scroll', this.eventHandler);\r\n window.addEventListener('keydown', this.eventHandler);\r\n window.addEventListener('resize', this.eventHandler);\r\n document.addEventListener('click', this.eventHandler);\r\n document.addEventListener('mousedown', this.eventHandler);\r\n document.addEventListener('DOMMouseScroll', this.eventHandler);\r\n document.addEventListener('mousewheel', this.eventHandler);\r\n document.addEventListener('touchmove', this.eventHandler);\r\n document.addEventListener('MSPointerMove', this.eventHandler);\r\n }\r\n\r\n cleanUp(): void {\r\n clearInterval(this.interval);\r\n window.removeEventListener('mousemove', this.eventHandler);\r\n window.removeEventListener('scroll', this.eventHandler);\r\n window.removeEventListener('keydown', this.eventHandler);\r\n window.removeEventListener('resize', this.eventHandler);\r\n document.removeEventListener('click', this.eventHandler);\r\n document.removeEventListener('mousedown', this.eventHandler);\r\n document.removeEventListener('DOMMouseScroll', this.eventHandler);\r\n document.removeEventListener('mousewheel', this.eventHandler);\r\n document.removeEventListener('touchmove', this.eventHandler);\r\n document.removeEventListener('MSPointerMove', this.eventHandler);\r\n }\r\n\r\n resetTimer(): void {\r\n this.tracker();\r\n this.startInterval();\r\n }\r\n\r\n isTimerExpired(): boolean {\r\n const expiredTime = parseInt(localStorage.getItem('_expiredTime') as string, 10);\r\n return expiredTime < Date.now();\r\n }\r\n}\r\n","import {Component, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport {DialogComponent} from '../dialog/dialog.component';\r\nimport {IdleTimer} from './idle-timer';\r\nimport {IdleTimeoutText} from '../../shared/models/particle-component-text.model';\r\n\r\n@Component({\r\n selector: 'particle-idle-timeout',\r\n templateUrl: './idle-timeout.component.html'\r\n})\r\nexport class IdleTimeoutComponent implements OnInit {\r\n\r\n @Input()\r\n borderRadius: string = '0px';\r\n\r\n @Input()\r\n timeoutInSeconds = 600;\r\n\r\n @Input()\r\n text: IdleTimeoutText = {\r\n sessionExpiring: 'Your Session is Expiring',\r\n second: 'second',\r\n seconds: 'seconds',\r\n stayLoggedIn: 'Click to stay logged in'\r\n } as IdleTimeoutText;\r\n\r\n @Output()\r\n timerEnd: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n /**\r\n * Timeout Dialog - shows when the inactivity timer has 1 minute left, giving the user the ability to confirm they're still active.\r\n */\r\n @ViewChild('timeoutDialog')\r\n timeoutDialog: DialogComponent = null as any;\r\n\r\n /**\r\n * Used for the countdown to user auto-logout\r\n */\r\n count = 0;\r\n\r\n /**\r\n * Controls showing the dialog\r\n */\r\n showDialog: any;\r\n\r\n idleTimer: IdleTimer = null as any;\r\n\r\n private readonly COUNTDOWN_LENGTH = 60;\r\n\r\n private finalCountdown: any;\r\n\r\n private timerReset = false;\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.idleTimer = new IdleTimer(this.timeoutInSeconds - 60, () => {this.openDialog()});\r\n }\r\n\r\n openDialog(): void {\r\n this.showDialog = {};\r\n this.timerReset = false;\r\n this.timeoutDialog.open();\r\n this.setupFinalCountdown();\r\n }\r\n\r\n private setupFinalCountdown(): void {\r\n this.count = this.COUNTDOWN_LENGTH;\r\n this.finalCountdown = setInterval(() => {\r\n this.count--;\r\n if (this.count === 0 || !this.idleTimer.isTimerExpired()) {\r\n this.handleTimerEnd();\r\n }\r\n }, 1000);\r\n }\r\n\r\n private handleTimerEnd(): void {\r\n clearInterval(this.finalCountdown);\r\n this.showDialog = null;\r\n this.timeoutDialog.close();\r\n\r\n if (this.idleTimer.isTimerExpired()) {\r\n this.timerEnd.emit();\r\n }\r\n }\r\n\r\n resetTimer(): void {\r\n if (!this.timerReset) {\r\n this.timerReset = true;\r\n clearInterval(this.finalCountdown);\r\n this.idleTimer.resetTimer();\r\n this.showDialog = null;\r\n }\r\n }\r\n\r\n}\r\n","<!-- timeout dialog -->\r\n<particle-dialog [title]=\"text.sessionExpiring\"\r\n [object]=\"showDialog\"\r\n [borderRadius]=\"borderRadius\"\r\n (closed)=\"resetTimer()\"\r\n width=\"350px\" height=\"150px\"\r\n #timeoutDialog>\r\n <div class=\"row column center_center height100\">\r\n <div class=\"header sm bold center mar_bot10\">{{count}} {{count !== 1 ? text.seconds : text.second}}</div>\r\n <button class=\"access btn md bg_overlay brdr ok_button_color\" [attr.aria-label]=\"text.stayLoggedIn\"\r\n (click)=\"resetTimer()\">\r\n <span class=\"text\">{{text.stayLoggedIn}}</span>\r\n </button>\r\n </div>\r\n</particle-dialog>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IdleTimeoutComponent } from './idle-timeout.component';\r\nimport {ParticleDialogModule} from '../dialog/dialog.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n IdleTimeoutComponent\r\n ],\r\n exports: [\r\n IdleTimeoutComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n ParticleDialogModule\r\n ]\r\n})\r\nexport class ParticleIdleTimeoutModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/**\r\n * Pipe to transform an input number into its ordinal format\r\n */\r\n@Pipe({\r\n name: 'ordinalNumber'\r\n})\r\nexport class OrdinalNumberPipe implements PipeTransform {\r\n\r\n /**\r\n * Transform the input number/string (must be a valid number if string)\r\n * into Ordinal format (1 -> 1st, 2 -> 2nd, etc)\r\n * @param value the number to transform\r\n */\r\n transform(value: number | string): string {\r\n let stringifiedNumber: string = '';\r\n if (typeof value === 'string' && !isNaN(Number(value))) {\r\n stringifiedNumber = value;\r\n } else if (typeof value === 'number') {\r\n stringifiedNumber = String(value);\r\n }\r\n\r\n let ordinalSuffix: string;\r\n if (stringifiedNumber.endsWith('11') ||\r\n stringifiedNumber.endsWith('12') ||\r\n stringifiedNumber.endsWith('13')\r\n ) {\r\n ordinalSuffix = 'th';\r\n } else if (stringifiedNumber.endsWith('1')) {\r\n ordinalSuffix = 'st';\r\n } else if (stringifiedNumber.endsWith('2')) {\r\n ordinalSuffix = 'nd';\r\n } else if (stringifiedNumber.endsWith('3')) {\r\n ordinalSuffix = 'rd';\r\n } else {\r\n ordinalSuffix = 'th';\r\n }\r\n\r\n return stringifiedNumber + ordinalSuffix;\r\n }\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n QueryList,\r\n Renderer2,\r\n ViewChild,\r\n ViewChildren\r\n} from '@angular/core';\r\nimport { addDays, endOfMonth, isWithinInterval, subDays } from 'date-fns';\r\nimport { BehaviorSubject, combineLatest, Observable, Subscription } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport {CalendarText} from '../../../../shared/models/particle-component-text.model';\r\n\r\n/**\r\n * Interface representing a date interval\r\n */\r\nexport declare interface Interval {\r\n start: Date | number;\r\n end: Date | number;\r\n}\r\n\r\n/**\r\n * Interface representing a Date broken down by date/month/year\r\n * with extended metadata\r\n */\r\ndeclare interface MetaDate {\r\n\r\n /**\r\n * The day of the week (starting at 0)\r\n */\r\n day: number;\r\n\r\n /**\r\n * The day of the month (starting at 1)\r\n */\r\n date: number;\r\n\r\n /**\r\n * The month (starting at 0)\r\n */\r\n month: number;\r\n\r\n /**\r\n * The full year\r\n */\r\n year: number;\r\n\r\n /**\r\n * Whether the day is selectable\r\n */\r\n selectable: boolean;\r\n}\r\n\r\n/**\r\n * Component that allows a user to select a date from a calendar\r\n */\r\n@Component({\r\n selector: 'particle-calendar',\r\n templateUrl: './calendar.component.html',\r\n styleUrls: ['./calendar.component.css']\r\n})\r\nexport class CalendarComponent implements OnDestroy, OnInit {\r\n\r\n /**\r\n * The keyboard arrow keys\r\n * @private\r\n */\r\n private static readonly ARROW_KEYS = ['ArrowLeft', 'ArrowUp', 'ArrowRight', 'ArrowDown'];\r\n\r\n /**\r\n * ViewChild of the calendar widget parent div element\r\n */\r\n @ViewChild('calendarWidgetDiv')\r\n calendarWidgetDiv: ElementRef<HTMLDivElement> = null as any;\r\n\r\n /**\r\n * ViewChild of the month select element\r\n */\r\n @ViewChild('yearSelect')\r\n yearSelect: ElementRef<HTMLSelectElement> = null as any;\r\n\r\n /**\r\n * ViewChild of the done button\r\n */\r\n @ViewChild('doneButton')\r\n doneButton: ElementRef<HTMLButtonElement> = null as any;\r\n\r\n /**\r\n * QueryList of the calendar date buttons for the currently selected month/year\r\n */\r\n @ViewChildren('calendarDate')\r\n calendarDates: QueryList<ElementRef<HTMLButtonElement>> = null as any;\r\n\r\n /**\r\n * The selected date value\r\n */\r\n @Input()\r\n set value(value: Date) {\r\n let metaDateValue: MetaDate = null as any\r\n\r\n if (!!value) {\r\n metaDateValue = {\r\n day: value.getDay(),\r\n date: value.getDate(),\r\n month: value.getMonth(),\r\n year: value.getFullYear(),\r\n selectable: true\r\n };\r\n }\r\n\r\n this._value.next(metaDateValue);\r\n }\r\n\r\n /**\r\n * The range of available dates to choose from\r\n */\r\n @Input()\r\n set dateRange(dateRange: { minDate: Date, maxDate: Date }) {\r\n if (dateRange?.minDate > dateRange?.maxDate) {\r\n throw new Error(this.text.minGreaterThenMax);\r\n }\r\n\r\n const {year} = this.currentDate;\r\n this._validSelectionInterval.next({\r\n start: dateRange?.minDate ?? new Date(year - 100, 0, 1),\r\n end: dateRange?.maxDate ?? new Date(year + 50, 11, 31)\r\n });\r\n }\r\n\r\n @Input()\r\n set text(text: CalendarText) {\r\n if (text) {\r\n this._text = text;\r\n this.weekDays = [\r\n text.sunday,\r\n text.monday,\r\n text.tuesday,\r\n text.wednesday,\r\n text.thursday,\r\n text.friday,\r\n text.saturday\r\n ];\r\n }\r\n }\r\n\r\n get text(): CalendarText {\r\n return this._text;\r\n }\r\n\r\n @Input()\r\n showControls = true;\r\n\r\n private _text: CalendarText = {\r\n selectAYear: 'Select a Year',\r\n selectAMonth: 'Select a Month',\r\n january: 'January',\r\n february: 'February',\r\n march: 'March',\r\n april: 'April',\r\n may: 'May',\r\n june: 'June',\r\n july: 'July',\r\n august: 'August',\r\n september: 'September',\r\n october: 'October',\r\n november: 'November',\r\n december: 'December',\r\n sundayAbbr: 'Su',\r\n mondayAbbr: 'Mo',\r\n tuesdayAbbr: 'Tu',\r\n wednesdayAbbr: 'We',\r\n thursdayAbbr: 'Th',\r\n fridayAbbr: 'Fr',\r\n saturdayAbbr: 'Sa',\r\n sunday: 'Sunday',\r\n monday: 'Monday',\r\n tuesday: 'Tuesday',\r\n wednesday: 'Wednesday',\r\n thursday: 'Thursday',\r\n friday: 'Friday',\r\n saturday: 'Saturday',\r\n select: 'Select',\r\n the: 'the',\r\n resetDateToToday: 'Reset date selection to today\\'s date',\r\n selectToday: 'Select Today',\r\n saveDate: 'Save date selection',\r\n done: 'Done',\r\n minGreaterThenMax: 'Min date must be less than max date'\r\n } as CalendarText;\r\n\r\n /**\r\n * Event emitted on date select\r\n */\r\n @Output()\r\n selected = new EventEmitter<Date>();\r\n\r\n /**\r\n * Event emitted on close (either through the button, escape keyup or click off of widget).\r\n * Note: it is the parent component's job to actually hide the calendar, this event\r\n * acts as a signal that that action should be taken\r\n */\r\n @Output()\r\n closed = new EventEmitter<void>();\r\n\r\n /**\r\n * The current Date broken down by day/month/year\r\n */\r\n readonly currentDate: MetaDate;\r\n\r\n /**\r\n * Array of days of the week\r\n */\r\n weekDays = [\r\n this.text.sunday,\r\n this.text.monday,\r\n this.text.tuesday,\r\n this.text.wednesday,\r\n this.text.thursday,\r\n this.text.friday,\r\n this.text.saturday\r\n ];\r\n\r\n /**\r\n * BehaviorSubject tracking the current value\r\n */\r\n readonly _value = new BehaviorSubject<MetaDate>(null as any);\r\n\r\n /**\r\n * BehaviorSubject tracking the valid selection interval\r\n */\r\n readonly _validSelectionInterval = new BehaviorSubject<Interval>(null as any);\r\n\r\n /**\r\n * BehaviorSubject tracking the currently selected month\r\n */\r\n readonly _selectedMonth = new BehaviorSubject(0);\r\n\r\n /**\r\n * BehaviorSubject tracking the currently selected year\r\n */\r\n readonly _selectedYear = new BehaviorSubject(1970);\r\n\r\n /**\r\n * The full month for the current selected month/year\r\n */\r\n readonly fullMonth$: Observable<Array<MetaDate>> = combineLatest([\r\n this._selectedMonth,\r\n this._selectedYear,\r\n this._validSelectionInterval\r\n ]).pipe(\r\n map(([selectedMonth, selectedYear, validSelectionInterval]) => {\r\n return CalendarComponent.generateMonth(\r\n selectedMonth,\r\n selectedYear,\r\n validSelectionInterval\r\n );\r\n })\r\n );\r\n\r\n /**\r\n * The range of selectable years as an Observable\r\n */\r\n readonly validYearRange$: Observable<Array<number>> = this._validSelectionInterval.pipe(\r\n map(selectionInterval => {\r\n\r\n if (this._selectedYear.getValue() < (selectionInterval?.start as Date)?.getFullYear()) {\r\n this._selectedYear.next((selectionInterval?.start as Date)?.getFullYear());\r\n }\r\n return CalendarComponent.generateYearRange(\r\n (selectionInterval?.start as Date)?.getFullYear() ?? null,\r\n (selectionInterval?.end as Date)?.getFullYear() ?? null,\r\n this.currentDate.year\r\n );\r\n\r\n // check if the _selectedYear is valid in the new date range, if not update to min year of range\r\n })\r\n );\r\n\r\n /**\r\n * Subscription for the combination of value and valid selection interval\r\n * @private\r\n */\r\n private readonly subscription = new Subscription();\r\n\r\n /**\r\n * The currently selected date\r\n */\r\n selectedDate: MetaDate | null = null;\r\n\r\n /**\r\n * Generate a 42 element array representing the input month's days with\r\n * padding from the previous/following month\r\n * @param month the month to generate dates for\r\n * @param year the year to generate the month for\r\n * @param selectionInterval the selection interval\r\n */\r\n private static generateMonth(\r\n month: number,\r\n year: number,\r\n selectionInterval: Interval\r\n ): Array<MetaDate> {\r\n if (!!selectionInterval) {\r\n const beginningOfMonthDate = new Date(year, month, 1);\r\n const endOfMonthDate = endOfMonth(beginningOfMonthDate);\r\n\r\n const fullMonth: Array<MetaDate> = [];\r\n let dayOfMonth = beginningOfMonthDate.getDay();\r\n for (let i = 1; i <= endOfMonthDate.getDate(); i++) {\r\n const dateOfMonth = new Date(year, month, i);\r\n fullMonth.push({\r\n day: dayOfMonth,\r\n date: i,\r\n month,\r\n year,\r\n selectable: isWithinInterval(dateOfMonth, selectionInterval)\r\n });\r\n\r\n dayOfMonth = dayOfMonth === 6 ? 0 : dayOfMonth + 1;\r\n }\r\n\r\n if (beginningOfMonthDate.getDay() > 0) {\r\n const lastMonthDates: Array<MetaDate> = [];\r\n for (let i = beginningOfMonthDate.getDay(); i > 0; i--) {\r\n const subtractedDate = subDays(beginningOfMonthDate, i);\r\n lastMonthDates.push({\r\n day: subtractedDate.getDay(),\r\n date: subtractedDate.getDate(),\r\n month: subtractedDate.getMonth(),\r\n year: subtractedDate.getFullYear(),\r\n selectable: false\r\n });\r\n }\r\n\r\n fullMonth.unshift(...lastMonthDates);\r\n }\r\n\r\n let daysToAdd = 1;\r\n while (fullMonth.length < 42) {\r\n const addedDate = addDays(endOfMonthDate, daysToAdd++);\r\n fullMonth.push({\r\n day: addedDate.getDay(),\r\n date: addedDate.getDate(),\r\n month: addedDate.getMonth(),\r\n year: addedDate.getFullYear(),\r\n selectable: false\r\n });\r\n }\r\n\r\n return fullMonth;\r\n }\r\n\r\n return null as any;\r\n }\r\n\r\n /**\r\n * Generate an Array of numbers representing the span of years between the input\r\n * @param minYear the start of the range\r\n * @param maxYear the end of the range\r\n * @param currentYear the current year\r\n */\r\n private static generateYearRange(minYear: number, maxYear: number, currentYear: number): Array<number> {\r\n let start: number, end: number;\r\n if (!minYear && !!maxYear) {\r\n start = maxYear = 50;\r\n end = maxYear;\r\n } else if (!!minYear && !maxYear) {\r\n start = minYear;\r\n end = minYear + 50;\r\n } else if (!!minYear && !!maxYear) {\r\n start = minYear;\r\n end = maxYear;\r\n } else {\r\n start = currentYear - 100;\r\n end = currentYear + 50;\r\n }\r\n\r\n const range: Array<number> = [];\r\n for (let i = start; i <= end; i++) {\r\n range.push(i);\r\n }\r\n\r\n return range;\r\n }\r\n\r\n /**\r\n * Dependency injection site\r\n * @param renderer the Angular renderer\r\n */\r\n constructor(private renderer: Renderer2) {\r\n const currentDate = new Date();\r\n this.currentDate = {\r\n day: currentDate.getDay(),\r\n date: currentDate.getDate(),\r\n month: currentDate.getMonth(),\r\n year: currentDate.getFullYear(),\r\n selectable: true\r\n };\r\n }\r\n\r\n /**\r\n * Init component\r\n */\r\n ngOnInit(): void {\r\n this.subscription.add(\r\n combineLatest([this._value, this._validSelectionInterval]).subscribe(\r\n ([value, validSelectionInterval]) => {\r\n let selectionInterval = validSelectionInterval;\r\n\r\n if (!selectionInterval) {\r\n const {year} = this.currentDate;\r\n selectionInterval = {\r\n start: new Date(year - 100, 0, 1),\r\n end: new Date(year + 50, 11, 31)\r\n };\r\n\r\n this.currentDate.selectable = isWithinInterval(\r\n new Date(this.currentDate.year, this.currentDate.month, this.currentDate.date),\r\n selectionInterval\r\n );\r\n }\r\n\r\n if (!!value) {\r\n const valueDate = new Date(value.year, value.month, value.date);\r\n if (isWithinInterval(valueDate, selectionInterval)) {\r\n this.selectedDate = value;\r\n this._selectedMonth.next(value.month);\r\n this._selectedYear.next(value.year);\r\n } else {\r\n this._value.next(null as any);\r\n this.selectedDate = null as any;\r\n }\r\n } else {\r\n this._selectedMonth.next(this.currentDate.month);\r\n this._selectedYear.next(this.currentDate.year);\r\n }\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Destroy component, unsubscribe from any active subscriptions\r\n */\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n /**\r\n * Handle window keyup events\r\n * @param event the keyup KeyboardEvent\r\n */\r\n @HostListener('window:keyup', ['$event'])\r\n onKeyUp(event: KeyboardEvent): void {\r\n const {key} = event;\r\n\r\n if (CalendarComponent.ARROW_KEYS.includes(key)) {\r\n this.onArrowKeyUp(key);\r\n }\r\n }\r\n\r\n /**\r\n * Emit closed event on click if clicked outside calendar widget\r\n * @param event the click MouseEvent\r\n */\r\n @HostListener('window:click', ['$event'])\r\n handleClick(event: MouseEvent): void {\r\n const {pageX, pageY} = event;\r\n\r\n // this check is to prevent the click event from firing on keypress when focused on a button\r\n if (pageX > 0 && pageY > 0) {\r\n const {top, bottom, left, right} = this.calendarWidgetDiv.nativeElement.getBoundingClientRect();\r\n\r\n const insideX = (pageX >= left) && (pageX <= right);\r\n const insideY = (pageY >= top) && (pageY <= bottom);\r\n\r\n // this check is for IE11 where option values might render outside of the calendar\r\n const tagName = (event.target as HTMLElement).tagName;\r\n const shouldClose = !(insideX && insideY) && tagName !== 'OPTION';\r\n\r\n if (shouldClose) {\r\n this.closed.emit();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Update selected date and emit selection event\r\n * @param selectedDate the selected date\r\n */\r\n handleDateSelection(selectedDate: MetaDate): void {\r\n this.selectedDate = selectedDate;\r\n this.selected.emit(new Date(selectedDate.year, selectedDate.month, selectedDate.date));\r\n }\r\n\r\n /**\r\n * Select the current date and toggle selected month/year to match\r\n */\r\n selectToday(): void {\r\n this.handleDateSelection(this.currentDate);\r\n this._selectedMonth.next(this.currentDate.month);\r\n this._selectedYear.next(this.currentDate.year);\r\n this.doneButton.nativeElement.focus();\r\n }\r\n\r\n /**\r\n * Handle arrow key navigation for calendar date buttons\r\n * @param key the pressed arrow key\r\n * @private\r\n */\r\n private onArrowKeyUp(key: string): void {\r\n const { activeElement } = document;\r\n\r\n if (!!activeElement) {\r\n const activeDate = activeElement.getAttribute('data-date');\r\n\r\n if (activeDate !== null && activeDate !== '') {\r\n if (key === 'ArrowLeft') {\r\n this.navigateLeft(Number.parseInt(activeDate, 10));\r\n } else if (key === 'ArrowRight') {\r\n this.navigateRight(Number.parseInt(activeDate, 10));\r\n } else if (key === 'ArrowUp') {\r\n this.navigateUp(Number.parseInt(activeDate, 10));\r\n } else if (key === 'ArrowDown') {\r\n this.navigateDown(Number.parseInt(activeDate, 10));\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Attempt to focus on date indexed immediately to the left of the input date\r\n * @param date the day of the month\r\n * @private\r\n */\r\n private navigateLeft(date: number): void {\r\n if (date > 1) {\r\n const calendarDates = this.calendarDates.toArray();\r\n const foundIndex = calendarDates.findIndex(calendarDate => {\r\n return date === Number.parseInt(\r\n calendarDate.nativeElement.getAttribute('data-date') as string,\r\n 10\r\n );\r\n });\r\n\r\n if (foundIndex > 0) {\r\n calendarDates[foundIndex - 1].nativeElement.focus();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Attempt to focus on date indexed immediately to the right of the input date\r\n * @param date the day of the month\r\n * @private\r\n */\r\n private navigateRight(date: number): void {\r\n const calendarDates = this.calendarDates.toArray();\r\n const foundIndex = calendarDates.findIndex(calendarDate => {\r\n return date === Number.parseInt(\r\n calendarDate.nativeElement.getAttribute('data-date') as string,\r\n 10\r\n );\r\n });\r\n\r\n if ((foundIndex > -1) && (foundIndex < (calendarDates.length - 1))) {\r\n calendarDates[foundIndex + 1].nativeElement.focus();\r\n }\r\n }\r\n\r\n /**\r\n * Attempt to navigate one week in the past from the input date\r\n * @param date the day of the month\r\n * @private\r\n */\r\n private navigateUp(date: number): void {\r\n const calendarDates = this.calendarDates.toArray();\r\n const foundIndex = calendarDates.findIndex(calendarDate => {\r\n return date === Number.parseInt(\r\n calendarDate.nativeElement.getAttribute('data-date') as string,\r\n 10\r\n );\r\n });\r\n\r\n if ((foundIndex > -1) && (foundIndex - 7 >= 0)) {\r\n calendarDates[foundIndex - 7].nativeElement.focus();\r\n }\r\n }\r\n\r\n /**\r\n * Attempt to navigate one week in the future from the input date\r\n * @param date the day of the month\r\n * @private\r\n */\r\n private navigateDown(date: number): void {\r\n const calendarDates = this.calendarDates.toArray();\r\n const foundIndex = calendarDates.findIndex(calendarDate => {\r\n return date === Number.parseInt(\r\n calendarDate.nativeElement.getAttribute('data-date') as string,\r\n 10\r\n );\r\n });\r\n\r\n if ((foundIndex > -1) && ((foundIndex + 7) < (calendarDates.length))) {\r\n calendarDates[foundIndex + 7].nativeElement.focus();\r\n }\r\n }\r\n\r\n clear(): void {\r\n this.selectedDate = null;\r\n }\r\n}\r\n","<div #calendarWidgetDiv\r\n cdkTrapFocus\r\n cdkTrapFocusAutoCapture\r\n class=\"particle_datepicker_options\"\r\n role=\"application\">\r\n <!-- month / year select -->\r\n <div class=\"content_color pad_5 pad_bot0\">\r\n <div class=\"row space_between\">\r\n <div class=\"col size_1 mar_5\">\r\n <select #yearSelect\r\n [ngModel]=\"_selectedYear | async\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n (change)=\"_selectedYear.next(+yearSelect.value)\"\r\n (keyup.escape)=\"closed.emit()\"\r\n class=\"access input sm content_color\"\r\n [attr.aria-label]=\"text.selectAYear\">\r\n <option *ngFor=\"let year of validYearRange$ | async\"\r\n [value]=\"year\">\r\n {{year}}\r\n </option>\r\n </select>\r\n </div>\r\n <div class=\"col size_2 mar_5\">\r\n <select #monthSelect\r\n [ngModel]=\"_selectedMonth | async\"\r\n (change)=\"_selectedMonth.next(+monthSelect.value)\"\r\n (keyup.escape)=\"closed.emit()\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n class=\"access input sm content_color\"\r\n [attr.aria-label]=\"text.selectAMonth\">\r\n <option value=\"0\">{{text.january}}</option>\r\n <option value=\"1\">{{text.february}}</option>\r\n <option value=\"2\">{{text.march}}</option>\r\n <option value=\"3\">{{text.april}}</option>\r\n <option value=\"4\">{{text.may}}</option>\r\n <option value=\"5\">{{text.june}}</option>\r\n <option value=\"6\">{{text.july}}</option>\r\n <option value=\"7\">{{text.august}}</option>\r\n <option value=\"8\">{{text.september}}</option>\r\n <option value=\"9\">{{text.october}}</option>\r\n <option value=\"10\">{{text.november}}</option>\r\n <option value=\"11\">{{text.december}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"content_color pad_5\">\r\n <!-- weekdays -->\r\n <div class=\"mar_5 mar_bot10\">\r\n <div class=\"row wrap space_between ptl_input_bg_color ptl_brdr_color border_bottom brad_3 mar_bot5\">\r\n <div class=\"particle_datepicker_weekday\">{{text.sundayAbbr}}</div>\r\n <div class=\"particle_datepicker_weekday\">{{text.mondayAbbr}}</div>\r\n <div class=\"particle_datepicker_weekday\">{{text.tuesdayAbbr}}</div>\r\n <div class=\"particle_datepicker_weekday\">{{text.wednesdayAbbr}}</div>\r\n <div class=\"particle_datepicker_weekday\">{{text.thursdayAbbr}}</div>\r\n <div class=\"particle_datepicker_weekday\">{{text.fridayAbbr}}</div>\r\n <div class=\"particle_datepicker_weekday\">{{text.saturdayAbbr}}</div>\r\n </div>\r\n <!-- days -->\r\n <div class=\"row wrap space_between\">\r\n <ng-container *ngFor=\"let dayInMonth of fullMonth$ | async\">\r\n <div [ngClass]=\"{'today': (dayInMonth.date === currentDate.date && dayInMonth.month === currentDate.month && dayInMonth.year === currentDate.year)}\"\r\n class=\"particle_datepicker_day\">\r\n <ng-container *ngIf=\"dayInMonth.selectable else disabledDate\">\r\n <button #calendarDate\r\n (click)=\"handleDateSelection(dayInMonth)\"\r\n (keyup.escape)=\"closed.emit()\"\r\n [attr.data-date]=\"dayInMonth.date\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n [attr.aria-label]=\"text.select + ' ' + weekDays[dayInMonth.day] + ' ' + text.the + ' ' + (dayInMonth.date | ordinalNumber)\"\r\n [ngClass]=\"{\r\n 'ok_button_color': (dayInMonth.date === selectedDate?.date && dayInMonth.month === selectedDate?.month && dayInMonth.year === selectedDate?.year),\r\n 'bg_overlay_rev brdr hov_bg': (dayInMonth.date !== selectedDate?.date || dayInMonth.month !== selectedDate?.month || dayInMonth.year !== selectedDate?.year)\r\n }\"\r\n class=\"access day_button\">\r\n {{dayInMonth.date}}\r\n </button>\r\n </ng-container>\r\n <ng-template #disabledDate>\r\n <div class=\"day_disabled\">\r\n {{dayInMonth.date}}\r\n </div>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"showControls\">\r\n <div class=\"bg_overlay brdr hr mar_5\"></div>\r\n <div class=\"row space_between\">\r\n <ng-container *ngIf=\"currentDate.selectable\">\r\n <button *ngIf=\"(currentDate.date === selectedDate?.date && currentDate.month === selectedDate?.month && currentDate.year === selectedDate?.year) else selectTodayButton\"\r\n disabled\r\n class=\"access btn sm bg_overlay_rev brdr hov_bg mar_5\"\r\n [attr.aria-label]=\"text.resetDateToToday\">\r\n <span class=\"text bold\">{{text.selectToday}}</span>\r\n </button>\r\n <ng-template #selectTodayButton>\r\n <button (keyup.escape)=\"closed.emit()\"\r\n (click)=\"selectToday()\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n class=\"access btn sm bg_overlay_rev brdr hov_bg mar_5\"\r\n [attr.aria-label]=\"text.resetDateToToday\">\r\n <span class=\"text bold\">{{text.selectToday}}</span>\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n <button #doneButton\r\n (keyup.escape)=\"closed.emit()\"\r\n (click)=\"closed.emit()\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n class=\"access btn sm bg_overlay_rev brdr mar_5 hov_bg\"\r\n [attr.aria-label]=\"text.saveDate\">\r\n <i class=\"fas fa-check mar_right5\"></i><span class=\"text bold\">{{text.done}}</span>\r\n </button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n","import { animate, AnimationEvent, style, transition, trigger } from '@angular/animations';\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef, HostListener,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n Renderer2,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { format, isEqual, isValid, isWithinInterval, parse } from 'date-fns';\r\nimport {DatePickerText} from '../../shared/models/particle-component-text.model';\r\nimport {PopoverComponent} from '../popover/popover.component';\r\n\r\n/**\r\n * Component to allow a user to input/select a date\r\n */\r\n@Component({\r\n selector: 'particle-date-picker',\r\n templateUrl: './date-picker.component.html',\r\n styleUrls: ['./date-picker.component.css'],\r\n animations: [\r\n trigger('openClose', [\r\n transition('void => open', [\r\n style({ transform: 'scaleY(0.5)', opacity: 0 }),\r\n animate('200ms ease',\r\n style({ transform: 'scaleY(1)', opacity: 1 }))\r\n ]),\r\n transition('open => close', [\r\n style({ transform: 'scaleY(1)', opacity: 1 }),\r\n animate('200ms ease',\r\n style({ transform: 'scaleY(0.5)', opacity: 0 }))\r\n ]),\r\n ])\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DatePickerComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class DatePickerComponent implements ControlValueAccessor, OnDestroy, OnInit {\r\n\r\n /**\r\n * Allowed keys for date input\r\n */\r\n private static readonly ALLOWED_KEYS = [\r\n '0', '1', '2', '3', '4', '5', '6', '7',\r\n '8', '9', 'Tab', 'Enter', '/', 'ArrowLeft',\r\n 'ArrowUp', 'ArrowRight', 'ArrowDown',\r\n 'ShiftLeft', 'ShiftRight', 'Backspace',\r\n 'Delete'\r\n ];\r\n\r\n /**\r\n * Matches YYYY-MM-DD\r\n * @private\r\n */\r\n private static readonly BROWSER_DATE_PICKER_FORMAT = new RegExp('^\\\\d\\\\d\\\\d\\\\d-\\\\d\\\\d-\\\\d\\\\d$');\r\n\r\n /**\r\n * Matches MM/DD/YYYY\r\n * @private\r\n */\r\n private static readonly FULL_DATE_FORMAT = new RegExp('^\\\\d\\\\d\\\\/\\\\d\\\\d\\\\/\\\\d\\\\d\\\\d\\\\d$');\r\n\r\n /**\r\n * Matches M/D/YYYY\r\n * @private\r\n */\r\n private static readonly SHORT_DATE_FORMAT = new RegExp('^\\\\d\\\\/\\\\d\\\\/\\\\d\\\\d\\\\d\\\\d$');\r\n\r\n /**\r\n * Matches M/DD/YYYY\r\n * @private\r\n */\r\n private static readonly SHORT_MONTH_DATE_FORMAT = new RegExp('^\\\\d\\\\/\\\\d\\\\d\\\\/\\\\d\\\\d\\\\d\\\\d$');\r\n\r\n /**\r\n * Matches MM/D/YYYY\r\n * @private\r\n */\r\n private static readonly SHORT_DAY_DATE_FORMAT = new RegExp('^\\\\d\\\\d\\\\/\\\\d\\\\/\\\\d\\\\d\\\\d\\\\d$');\r\n\r\n /**\r\n * A reference date with all fields set to 0\r\n * @private\r\n */\r\n private static readonly referenceDate = new Date(0, 0, 0, 0, 0, 0, 0);\r\n\r\n /**\r\n * Value input setter\r\n */\r\n @Input()\r\n set value(value: Date) {\r\n if (!value) {\r\n this._value = null as any;\r\n this.dateString = null as any;\r\n this.mobileDateString = null as any;\r\n } else if (!isEqual(value, this._value)) {\r\n this._value = value;\r\n this.dateString = this.dateString = DatePickerComponent.parseDate(value);\r\n this.setMobileValue();\r\n }\r\n }\r\n\r\n @Input()\r\n set disabled(disabled: boolean) {\r\n this._disabled = coerceBooleanProperty(disabled);\r\n }\r\n\r\n @Input()\r\n set dateRange(dateRange: { minDate: Date, maxDate: Date }) {\r\n if (dateRange?.minDate > dateRange?.maxDate) {\r\n throw new Error('Min date must be less than max date');\r\n }\r\n\r\n const year = this.currentDate.getFullYear();\r\n this.validSelectionInterval = {\r\n start: dateRange?.minDate ?? new Date(year - 100, 0, 1),\r\n end: dateRange?.maxDate ?? new Date(year + 50, 11, 31)\r\n };\r\n }\r\n\r\n /**\r\n * The ID to set on the input\r\n */\r\n @Input()\r\n inputId: string = null as any;\r\n\r\n /**\r\n * Value to use as the date picker input's aria label\r\n */\r\n @Input()\r\n ariaLabel = 'Date';\r\n\r\n /**\r\n * Optional class-list to add to the date picker input\r\n */\r\n @Input()\r\n inputClassList = null as any;\r\n\r\n /**\r\n * Optional class-list to add to the calendar button\r\n */\r\n @Input()\r\n calendarButtonClassList = '';\r\n\r\n /**\r\n * Close the picker when a selection is made\r\n */\r\n @Input()\r\n closeOnSelect: boolean = true;\r\n\r\n /**\r\n * Placeholder override\r\n */\r\n @Input()\r\n placeholder = 'mm/dd/yyyy';\r\n\r\n @Input()\r\n inputOnly = false;\r\n\r\n private _text: DatePickerText = {\r\n enterInFormat: 'enter in format',\r\n openCalendar: 'Open the calendar'\r\n } as DatePickerText;\r\n\r\n @Input()\r\n set text(text: DatePickerText) {\r\n if (text) {\r\n this._text = text;\r\n }\r\n }\r\n\r\n get text(): DatePickerText {\r\n return this._text;\r\n }\r\n\r\n /**\r\n * Event emitted on date picker input\r\n */\r\n @Output()\r\n // eslint-disable-next-line @angular-eslint/no-output-native\r\n input = new EventEmitter<void>();\r\n\r\n /**\r\n * Event emitted on valid date selection/input\r\n */\r\n @Output()\r\n dateSelected = new EventEmitter<Date>();\r\n\r\n /**\r\n * ViewChild of the date picker div\r\n */\r\n @ViewChild('datePickerDiv')\r\n datePickerDiv: ElementRef<HTMLDivElement> = null as any;\r\n\r\n /**\r\n * ViewChild of the calendar div\r\n */\r\n @ViewChild('calendarDiv')\r\n calendarDiv: ElementRef<HTMLDivElement> = null as any;\r\n\r\n @ViewChild('calendarPopover')\r\n calendarPopover: PopoverComponent = null as any;\r\n\r\n /**\r\n * The current date\r\n */\r\n private readonly currentDate = new Date();\r\n\r\n /**\r\n * The fixed height of the calendar widget\r\n */\r\n private readonly calendarHeight = 340;\r\n\r\n /**\r\n * The fixed width of the calendar widget\r\n */\r\n private readonly calendarWidth = 300;\r\n\r\n /**\r\n * The amount of padding to apply between the date picker input and the calendar widget\r\n */\r\n private readonly calendarPadding = 0;\r\n\r\n /**\r\n * String tracking date picker input\r\n */\r\n dateString = '';\r\n\r\n mobileDateString = '';\r\n\r\n /**\r\n * Whether to show the calendar\r\n */\r\n showCalendar: { currentValue: Date } = null as any;\r\n\r\n /**\r\n * In mobile (screen width is less than 768), swap to a native input\r\n */\r\n isMobile = window.innerWidth <= 768;\r\n\r\n /**\r\n * The valid selection interval\r\n * @private\r\n */\r\n validSelectionInterval = {\r\n start: new Date(this.currentDate.getFullYear() - 100, 0, 1),\r\n end: new Date(this.currentDate.getFullYear() + 50, 0, 1)\r\n };\r\n\r\n /**\r\n * The internal control accessor value\r\n * @private\r\n */\r\n private _value: Date = null as any;\r\n\r\n /**\r\n * The internal disabled state\r\n * @private\r\n */\r\n private _disabled = false;\r\n\r\n /**\r\n * Window resize unlisten function\r\n */\r\n private resizeListener: (() => void) | undefined;\r\n\r\n /**\r\n * Parse the input Date value into a string\r\n * @param value the value to parse\r\n * @private\r\n */\r\n private static parseDate(value: Date): string {\r\n return !value ? null as any : format(value, 'MM/dd/yyyy');\r\n }\r\n\r\n /**\r\n * Parse the input date string into a Date\r\n * @param dateString the string to parse\r\n * @private\r\n */\r\n private static parseDateString(dateString: string): Date {\r\n let parsedDate: Date;\r\n try {\r\n parsedDate = parse(dateString, DatePickerComponent.getDateFormat(dateString), this.referenceDate);\r\n } catch (e) {\r\n parsedDate = null as any;\r\n }\r\n\r\n return isValid(parsedDate) ? parsedDate : null as any;\r\n }\r\n\r\n /**\r\n * Get the date format that matches the input date string, null if no match\r\n * @param dateString the string to test\r\n * @private\r\n */\r\n private static getDateFormat(dateString: string): string {\r\n this.FULL_DATE_FORMAT.lastIndex = 0;\r\n this.SHORT_MONTH_DATE_FORMAT.lastIndex = 0;\r\n this.SHORT_DAY_DATE_FORMAT.lastIndex = 0;\r\n this.SHORT_DATE_FORMAT.lastIndex = 0;\r\n this.BROWSER_DATE_PICKER_FORMAT.lastIndex = 0;\r\n\r\n let dateFormat: string = null as any;\r\n if (this.FULL_DATE_FORMAT.test(dateString)) {\r\n dateFormat = 'MM/dd/yyyy';\r\n } else if (this.SHORT_MONTH_DATE_FORMAT.test(dateString)) {\r\n dateFormat = 'M/dd/yyyy';\r\n } else if (this.SHORT_DAY_DATE_FORMAT.test(dateString)) {\r\n dateFormat = 'MM/d/yyyy';\r\n } else if (this.SHORT_DATE_FORMAT.test(dateString)) {\r\n dateFormat = 'M/d/yyyy';\r\n } else if (this.BROWSER_DATE_PICKER_FORMAT.test(dateString)) {\r\n dateFormat ='yyyy-MM-dd';\r\n }\r\n\r\n return dateFormat;\r\n }\r\n\r\n /**\r\n * Function to call on change\r\n */\r\n onChange: (value: any) => void = () => {};\r\n\r\n /**\r\n * Function to call on touch\r\n */\r\n onTouched: () => any = () => {};\r\n\r\n /**\r\n * Dependency injection site\r\n * @param renderer the Angular renderer\r\n * @param changeDetectorRef the Angular change detector\r\n */\r\n constructor(private renderer: Renderer2, private changeDetectorRef: ChangeDetectorRef) { }\r\n\r\n /**\r\n * Value getter\r\n */\r\n get value(): Date {\r\n return DatePickerComponent.parseDateString(this.dateString);\r\n }\r\n\r\n /**\r\n * Disabled getter\r\n */\r\n get disabled(): boolean { return this._disabled; }\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onWindowResize(event: any): void {\r\n this.isMobile = event.target.innerWidth <= 768;\r\n }\r\n\r\n /**\r\n * Init component, set up window resize listener\r\n */\r\n ngOnInit(): void {\r\n this.resizeListener = this.renderer.listen(window, 'resize', () => {\r\n if (this.showCalendar) {\r\n this.setCalendarPosition();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Destroy component, invoke window resize unlisten function\r\n */\r\n ngOnDestroy(): void {\r\n if (this.resizeListener) {\r\n this.resizeListener();\r\n }\r\n }\r\n\r\n /**\r\n * Write value\r\n * @param value the value to write\r\n */\r\n writeValue(value: Date): void {\r\n if (value !== null && isWithinInterval(value, this.validSelectionInterval)) {\r\n this.value = value;\r\n } else {\r\n this.value = null as any;\r\n }\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Register control value accessor change function\r\n * @param fn the function to register\r\n */\r\n registerOnChange(fn: (value: any) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Register touch handler\r\n * @param fn the touch handler to register\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Set the disabled state\r\n * @param isDisabled whether or not the component should be disabled\r\n */\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Only allow input from digits, forward slashes, and navigation keys\r\n */\r\n filterInput(event: KeyboardEvent): void {\r\n const {key} = event;\r\n if (!DatePickerComponent.ALLOWED_KEYS.includes(key) && !event.ctrlKey) {\r\n event.preventDefault();\r\n }\r\n\r\n if (key === 'Enter') {\r\n setTimeout(() => this.openCalendar(), 0);\r\n }\r\n }\r\n\r\n /**\r\n * Clear value if no input, write parsed date if input requirements fulfilled\r\n */\r\n handleBlur(): void {\r\n try {\r\n this.updateModel(DatePickerComponent.parseDateString(this.dateString));\r\n } catch (e) {\r\n this.updateModel(null as any);\r\n }\r\n }\r\n\r\n /**\r\n * Write on input if valid date within interval\r\n */\r\n handleInput(): void {\r\n try {\r\n const parsedDate = DatePickerComponent.parseDateString(this.dateString);\r\n if (parsedDate !== null && isWithinInterval(parsedDate, this.validSelectionInterval)) {\r\n this.updateModel(parsedDate);\r\n }\r\n } catch (e) { }\r\n\r\n this.input.emit();\r\n }\r\n\r\n handleMobileInput(): void {\r\n this.dateString = this.mobileDateString;\r\n this.handleInput();\r\n }\r\n\r\n setMobileValue(): void {\r\n if (this.value) {\r\n const offset = this.value.getTimezoneOffset();\r\n const dateForFormatting = new Date(this.value.getTime() - (offset * 60 * 1000));\r\n this.mobileDateString = dateForFormatting.toISOString().split('T')[0];\r\n }\r\n }\r\n\r\n /**\r\n * Update the model value\r\n * @param value the value to update the model to\r\n */\r\n updateModel(value: Date): void {\r\n const valueBeforeUpdate = this._value;\r\n\r\n if (!this.disabled) {\r\n if (value !== null && isWithinInterval(value, this.validSelectionInterval)) {\r\n this.value = value;\r\n\r\n if (!isEqual(this.value, valueBeforeUpdate)) {\r\n this.dateSelected.emit(value);\r\n\r\n if (this.closeOnSelect) {\r\n setTimeout(() => this.handleCalendarClose(), 200);\r\n }\r\n }\r\n } else {\r\n this.value = null as any;\r\n }\r\n\r\n if (!isEqual(this.value, valueBeforeUpdate)) {\r\n this.onChange(this.value);\r\n this.setMobileValue();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Open the calendar widget\r\n * @param event the click MouseEvent\r\n */\r\n openCalendar(event?: MouseEvent): void {\r\n if (event) {\r\n event.stopImmediatePropagation();\r\n }\r\n\r\n this.showCalendar = { currentValue: this.value };\r\n this.calendarPopover.toggle(event);\r\n }\r\n\r\n /**\r\n * Hide calendar overlay and remove calendar from the DOM\r\n */\r\n handleCalendarClose(): void {\r\n this.showCalendar = null as any;\r\n if (this.calendarPopover) {\r\n this.calendarPopover.close();\r\n }\r\n }\r\n\r\n /**\r\n * Calculate and set the calendar's position based on the screen height.\r\n * Positioning prefers to open at the bottom, if not enough room on bottom,\r\n * positioning is attempted at the top, otherwise it attempts to vertically\r\n * center\r\n */\r\n private setCalendarPosition(): void {\r\n const {left, top, bottom} = this.datePickerDiv.nativeElement.getBoundingClientRect();\r\n const datePickerBottomLeftAnchor = bottom;\r\n const availableBottomSpace = window.innerHeight - datePickerBottomLeftAnchor;\r\n const availableTopSpace = top;\r\n const offsetCalendarHeight = this.calendarHeight + this.calendarPadding;\r\n let leftPosition: number, topPosition: number, transformOrigin: string;\r\n\r\n if (availableBottomSpace > offsetCalendarHeight) {\r\n transformOrigin = 'top left';\r\n topPosition = datePickerBottomLeftAnchor + this.calendarPadding;\r\n } else if (availableTopSpace > offsetCalendarHeight) {\r\n transformOrigin = 'bottom left';\r\n topPosition = top - offsetCalendarHeight;\r\n } else {\r\n transformOrigin = 'top left';\r\n\r\n if (this.calendarHeight > window.innerHeight) {\r\n topPosition = 0;\r\n } else {\r\n const availableSpace = window.innerHeight - this.calendarHeight;\r\n topPosition = availableSpace / 2;\r\n }\r\n }\r\n\r\n leftPosition = left;\r\n if ((left + this.calendarWidth) > window.innerWidth) {\r\n leftPosition = left - ((left + this.calendarWidth) - window.innerWidth) - 10;\r\n }\r\n\r\n this.renderer.setStyle(this.calendarDiv.nativeElement, 'transform-origin', transformOrigin);\r\n this.renderer.setStyle(this.calendarDiv.nativeElement, 'left', `${leftPosition}px`);\r\n this.renderer.setStyle(this.calendarDiv.nativeElement, 'top', `${topPosition}px`);\r\n }\r\n}\r\n","<ng-container *ngIf=\"!isMobile else mobile\">\r\n <div #datePickerDiv\r\n style=\"overflow: hidden;\"\r\n [style.filter]=\"disabled ? 'brightness(.95)' : ''\"\r\n [ngClass]=\"inputClassList ? '' : 'row ptl_input ptl_input_height ptl_input_bg_color ptl_brdr_color ptl_brdr_size ptl_brdr_radius ent_r2l_dir'\"\r\n >\r\n <div class=\"col size_1 height100 width100\">\r\n <input #dateInput\r\n [(ngModel)]=\"dateString\"\r\n [id]=\"inputId\"\r\n (keydown)=\"filterInput($event)\"\r\n (input)=\"handleInput()\"\r\n (blur)=\"onTouched(); handleBlur()\"\r\n type=\"text\"\r\n [placeholder]=\"placeholder\"\r\n maxlength=\"10\"\r\n [attr.aria-label]=\"ariaLabel + ', ' + text.enterInFormat + ' mm/dd/yyyy'\"\r\n [disabled]=\"disabled\"\r\n [ngClass]=\"inputClassList ? inputClassList : 'ptl_input_text_size ptl_input_padding border_none'\"\r\n style=\"outline-offset: -2px;\"\r\n class=\"access height100 width100\"/>\r\n </div>\r\n <div class=\"col center_center min_w50 height100 ptl_brdr_color border_left\" *ngIf=\"!inputOnly\">\r\n <button type=\"button\"\r\n (click)=\"openCalendar($event)\"\r\n [disabled]=\"disabled\"\r\n [ngClass]=\"calendarButtonClassList ? calendarButtonClassList : 'clear'\"\r\n class=\"access btnset center_center height100 width100\"\r\n style=\"outline-offset: -2px;\"\r\n [attr.aria-label]=\"text.openCalendar\" aria-haspopup=\"dialog\">\r\n <i class=\"fas fa-calendar-day\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- calendar widget -->\r\n <particle-popover [targetOverride]=\"dateInput\" #calendarPopover>\r\n <particle-calendar [value]=\"showCalendar ? showCalendar.currentValue : $any(null)\"\r\n [text]=\"$any(text.calendarText)\"\r\n [dateRange]=\"{ minDate: validSelectionInterval.start!, maxDate: validSelectionInterval.end! }\"\r\n (selected)=\"updateModel($event)\"\r\n (closed)=\"handleCalendarClose()\">\r\n </particle-calendar>\r\n </particle-popover>\r\n</ng-container>\r\n\r\n<ng-template #mobile>\r\n <div style=\"overflow: hidden;\"\r\n [style.filter]=\"disabled ? 'brightness(.95)' : ''\"\r\n [ngClass]=\"inputClassList ? '' : 'ptl_input ptl_input_height ptl_input_bg_color ptl_brdr_color ptl_brdr_size ptl_brdr_radius'\"\r\n >\r\n <div class=\"col size_1 height100 width100\">\r\n <input [(ngModel)]=\"mobileDateString\"\r\n [id]=\"inputId\"\r\n (input)=\"handleMobileInput()\"\r\n (blur)=\"onTouched()\"\r\n type=\"date\"\r\n [placeholder]=\"placeholder\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [disabled]=\"disabled\"\r\n [ngClass]=\"inputClassList ? inputClassList : 'ptl_input_text_size ptl_input_padding border_none'\"\r\n style=\"outline-offset: -2px;\"\r\n class=\"access height100 width100\"/>\r\n </div>\r\n </div>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OrdinalNumberPipe } from './ordinal-number.pipe';\n\n@NgModule({\n declarations: [OrdinalNumberPipe],\n imports: [\n CommonModule\n ],\n exports: [OrdinalNumberPipe]\n})\nexport class ParticleOrdinalNumberPipeModule { }\n","import {AfterViewInit, ChangeDetectorRef, Component, forwardRef, Input, ViewChild} from '@angular/core';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {BehaviorSubject, tap} from 'rxjs';\r\nimport {DateRangePickerText} from '../../../../shared/models/particle-component-text.model';\r\nimport {PopoverComponent} from '../../../popover/popover.component';\r\nimport {CalendarComponent} from '../calendar/calendar.component';\r\n\r\n@Component({\r\n selector: 'particle-date-range-picker',\r\n templateUrl: './date-range-picker.component.html',\r\n styleUrls: ['./date-range-picker.component.css'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DateRangePickerComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class DateRangePickerComponent implements ControlValueAccessor, AfterViewInit {\r\n\r\n currentYear = new Date().getFullYear();\r\n _disabled = false;\r\n\r\n private _value$ = new BehaviorSubject<any>(null);\r\n\r\n private _lastValue: any = null as any;\r\n private _init = false;\r\n\r\n valueObs$ = this._value$.asObservable().pipe(tap(\r\n value => {\r\n let newValue = {start: null, end: null};\r\n if (value && value.start && value.end) {\r\n newValue = {start: value.start, end: value.end};\r\n }\r\n\r\n if (newValue !== this._lastValue) {\r\n this._lastValue = newValue;\r\n\r\n if (this._init) {\r\n this.onChange(this._lastValue);\r\n }\r\n }\r\n }\r\n ));\r\n\r\n @Input()\r\n inputId: string = null as any;\r\n\r\n @Input()\r\n inputClassList = '';\r\n\r\n @Input()\r\n calendarButtonClassList = '';\r\n\r\n @Input()\r\n text: DateRangePickerText = {\r\n begin: 'Begin',\r\n end: 'End',\r\n done: 'Done',\r\n clear: 'Clear',\r\n openCalendar: 'Open Calendar',\r\n selectRange: 'Choose a Range'\r\n } as DateRangePickerText;\r\n\r\n @Input()\r\n set dateRange(value: {minDate: Date, maxDate: Date}) {\r\n this._dateRange = value;\r\n\r\n if (this.value && this.value.start) {\r\n this._endDateRange = {\r\n minDate: this.value.start,\r\n maxDate: value.maxDate\r\n };\r\n } else {\r\n this._endDateRange = value;\r\n }\r\n }\r\n\r\n get dateRange(): {minDate: Date, maxDate: Date} {\r\n return this._dateRange;\r\n }\r\n\r\n get endDateRange(): {minDate: Date, maxDate: Date} {\r\n return this._endDateRange;\r\n }\r\n\r\n private _dateRange = {\r\n minDate: new Date(this.currentYear - 100, 0, 1),\r\n maxDate: new Date(this.currentYear + 100, 11, 31)\r\n };\r\n\r\n private _endDateRange = {\r\n minDate: new Date(this.currentYear - 100, 0, 1),\r\n maxDate: new Date(this.currentYear + 100, 11, 31)\r\n }\r\n\r\n @Input()\r\n set value(value: { start: Date, end: Date }) {\r\n if (!value) {\r\n value = {start: null as any, end: null as any};\r\n }\r\n\r\n this._value$.next(value);\r\n\r\n if (value) {\r\n this.beginDate = value.start;\r\n }\r\n }\r\n\r\n get value(): {start: Date, end: Date} {\r\n return this._lastValue;\r\n }\r\n\r\n @Input()\r\n set disabled(disabled: boolean) {\r\n this._disabled = disabled;\r\n }\r\n\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n @Input()\r\n ariaLabel: string = null as any;\r\n\r\n /**\r\n * Format for the selected date range in the selection preview. Must\r\n * be a valid Angular DatePipe format\r\n */\r\n @Input()\r\n dateFormat = 'MM/dd/y';\r\n\r\n @ViewChild('calendarPopover')\r\n calendarPopover: PopoverComponent = null as any;\r\n\r\n @ViewChild('beginCalendar')\r\n beginCalendar: CalendarComponent = null as any;\r\n\r\n @ViewChild('endCalendar')\r\n endCalendar: CalendarComponent = null as any;\r\n\r\n ngAfterViewInit(): void {\r\n this._init = true;\r\n }\r\n\r\n get beginDate(): Date {\r\n if (this._value$.value) {\r\n return this._value$.value.start;\r\n }\r\n\r\n return null as any;\r\n }\r\n\r\n set beginDate(beginDate: Date) {\r\n let value = this._value$.value;\r\n value.start = beginDate;\r\n\r\n if (!beginDate && this.beginCalendar) {\r\n if (this.beginCalendar) {\r\n this.beginCalendar.clear();\r\n }\r\n }\r\n\r\n this._value$.next(value);\r\n\r\n if (!beginDate || beginDate > this.endDate) {\r\n this.endDate = null as any;\r\n }\r\n\r\n this._endDateRange = {\r\n minDate: beginDate,\r\n maxDate: this.dateRange.maxDate\r\n };\r\n }\r\n\r\n get endDate(): Date {\r\n if (this._value$.value) {\r\n return this._value$.value.end;\r\n }\r\n\r\n return null as any;\r\n }\r\n\r\n set endDate(endDate: Date) {\r\n if (this._value$.value && endDate < this._value$.value.start) {\r\n endDate = null as any;\r\n if (this.endCalendar) {\r\n this.endCalendar.clear();\r\n }\r\n }\r\n\r\n let value = this._value$.value;\r\n value.end = endDate;\r\n\r\n if (!endDate && this.endCalendar) {\r\n if (this.endCalendar) {\r\n this.endCalendar.clear();\r\n }\r\n }\r\n\r\n this._value$.next(value);\r\n }\r\n\r\n /**\r\n * Function to call on change\r\n */\r\n onChange: (value: any) => void = () => {};\r\n\r\n /**\r\n * Function to call on touch\r\n */\r\n onTouched: () => any = () => {};\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n\r\n }\r\n\r\n /**\r\n * Write value\r\n * @param value the value to write\r\n */\r\n writeValue(value: { start: Date, end: Date }): void {\r\n this.value = value;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Register function on change\r\n * @param fn the function to change\r\n */\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Register function on touch\r\n * @param fn the function to register\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Set disabled state\r\n * @param isDisabled whether or not the control is disabled\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n openCalendar(event: Event): void {\r\n if (!this.disabled) {\r\n this.calendarPopover.toggle(event);\r\n }\r\n }\r\n\r\n updateModel(isBegin: boolean, date: Date): void {\r\n if (isBegin) {\r\n this.beginDate = date;\r\n } else {\r\n this.endDate = date;\r\n }\r\n }\r\n\r\n checkState(): void {\r\n const val = this._value$.value;\r\n if (val && ((val.start > val.end) || !(val.start && val.end))) {\r\n this.clear();\r\n }\r\n }\r\n\r\n clear(): void {\r\n this.value = null as any;\r\n }\r\n\r\n}\r\n","<div style=\"cursor:default;overflow: hidden;\"\r\n [ngClass]=\"inputClassList ? '' : 'row ptl_input ptl_input_height ptl_input_bg_color ptl_brdr_color ptl_brdr_size ptl_brdr_radius ent_r2l_dir'\"\r\n [style.filter]=\"disabled ? 'brightness(.95)' : ''\">\r\n <button (click)=\"openCalendar($event)\"\r\n type=\"button\"\r\n aria-haspopup=\"dialog\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-label]=\"(ariaLabel ? ariaLabel + ', ' : '') + text.openCalendar\"\r\n [attr.aria-expanded]=\"calendarPopover.visible\"\r\n [ngClass]=\"inputClassList ? inputClassList : 'clear'\"\r\n class=\"access btnset width100 height100 center_center\"\r\n style=\"outline-offset: -2px;\"\r\n >\r\n <div class=\"col size_1 height100 width100 ptl_input_text_size ptl_input_padding v_center\">\r\n <ng-container *ngIf=\"valueObs$ | async as value\">\r\n <ng-container *ngIf=\"value.start && value.end else placeholderTemplate\">\r\n {{value.start | date: dateFormat}} - {{value.end | date: dateFormat}}\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #placeholderTemplate>\r\n <div class=\"ent_r2l_txt\">{{text.selectRange}}...</div>\r\n </ng-template>\r\n </div>\r\n <div class=\"col min_w50 height100 center_center border_left\"\r\n [ngClass]=\"calendarButtonClassList ? calendarButtonClassList : 'bg_overlay ptl_brdr_color ptl_input_text_size'\">\r\n <div class=\"width100 height100 center_center\">\r\n <i class=\"fas fa-calendar-days ptl_input_text_size\"></i>\r\n </div>\r\n </div>\r\n </button>\r\n</div>\r\n\r\n<particle-popover (closed)=\"checkState()\" #calendarPopover>\r\n <div class=\"width100 space_between\">\r\n <div>\r\n <div class=\"pad_10 pad_bot0\">\r\n <div>{{text.begin}}:</div>\r\n <div>\r\n <particle-date-picker\r\n inputClassList=\"access input sm content_color\"\r\n [inputOnly]=\"true\"\r\n [(ngModel)]=\"beginDate\"\r\n [dateRange]=\"dateRange\">\r\n </particle-date-picker>\r\n </div>\r\n </div>\r\n <particle-calendar [value]=\"beginDate\"\r\n [text]=\"$any(text.calendarText)\"\r\n [dateRange]=\"dateRange\"\r\n [showControls]=\"false\"\r\n class=\"hide_element\"\r\n (selected)=\"updateModel(true, $event)\"\r\n #beginCalendar>\r\n </particle-calendar>\r\n </div>\r\n <div>\r\n <div class=\"pad_10 pad_bot0\">\r\n <div>{{text.end}}:</div>\r\n <div>\r\n <particle-date-picker\r\n inputClassList=\"access input sm content_color\"\r\n [inputOnly]=\"true\"\r\n [dateRange]=\"endDateRange\"\r\n [(ngModel)]=\"endDate\">\r\n </particle-date-picker>\r\n </div>\r\n </div>\r\n <particle-calendar [value]=\"endDate\"\r\n [text]=\"$any(text.calendarText)\"\r\n [dateRange]=\"endDateRange\"\r\n [showControls]=\"false\"\r\n class=\"hide_element\"\r\n (selected)=\"updateModel(false, $event)\"\r\n #endCalendar>\r\n </particle-calendar>\r\n <div class=\"mobile_only pad_bot10\"></div>\r\n </div>\r\n </div>\r\n <div class=\"bg_overlay brdr hr mar_5 mar_top0\"></div>\r\n <div class=\"row space_between\">\r\n <button (click)=\"clear()\"\r\n class=\"access btn sm bg_overlay_rev brdr mar_5 hov_bg\"\r\n [attr.aria-label]=\"text.clear\">\r\n <i class=\"fas fa-x mar_right5\"></i><span class=\"text bold\">{{text.clear}}</span>\r\n </button>\r\n\r\n <button (keyup.escape)=\"calendarPopover.close()\"\r\n (click)=\"calendarPopover.close()\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n class=\"access btn sm bg_overlay_rev brdr mar_5 hov_bg\"\r\n [attr.aria-label]=\"text.done\">\r\n <i class=\"fas fa-check mar_right5\"></i><span class=\"text bold\">{{text.done}}</span>\r\n </button>\r\n </div>\r\n</particle-popover>\r\n\r\n","import {A11yModule} from '@angular/cdk/a11y';\r\nimport {CommonModule} from '@angular/common';\r\nimport {NgModule} from '@angular/core';\r\nimport {FormsModule} from '@angular/forms';\r\nimport {BrowserAnimationsModule} from '@angular/platform-browser/animations';\r\nimport {CalendarComponent} from './components/calendar/calendar.component';\r\nimport {DatePickerComponent} from './date-picker.component';\r\nimport {OrdinalNumberPipe} from '../ordinal-number-pipe/ordinal-number.pipe';\r\nimport {ParticleOrdinalNumberPipeModule} from '../ordinal-number-pipe/ordinal-number-pipe.module';\r\nimport {DateRangePickerComponent} from './components/date-range-picker/date-range-picker.component';\r\nimport {ParticlePopoverModule} from '../popover/popover.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n DatePickerComponent,\r\n CalendarComponent,\r\n DateRangePickerComponent\r\n ],\r\n imports: [\r\n A11yModule,\r\n BrowserAnimationsModule,\r\n CommonModule,\r\n FormsModule,\r\n ParticleOrdinalNumberPipeModule,\r\n ParticlePopoverModule\r\n ],\r\n exports: [\r\n DatePickerComponent,\r\n CalendarComponent,\r\n DateRangePickerComponent\r\n ],\r\n providers: [OrdinalNumberPipe]\r\n})\r\nexport class ParticleDatePickerModule {\r\n}\r\n","import { animate, AnimationEvent, style, transition, trigger } from '@angular/animations';\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChild,\r\n ElementRef,\r\n EventEmitter, forwardRef,\r\n HostListener,\r\n Input,\r\n Output,\r\n QueryList,\r\n Renderer2,\r\n TemplateRef,\r\n ViewChild,\r\n ViewChildren\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport {BehaviorSubject, Observable} from 'rxjs';\r\nimport {map, withLatestFrom} from 'rxjs/operators';\r\nimport {DropdownOption} from './models/dropdown-option.model';\r\nimport {DropdownOptionGroup} from './models/dropdown-option-group.model';\r\nimport {DropdownText} from '../../shared/models/particle-component-text.model';\r\n\r\n/**\r\n * Type representing the dropdown component option input\r\n */\r\ndeclare type DropdownOptionInput = Array<DropdownOption | DropdownOptionGroup>;\r\n\r\n/**\r\n * Dropdown component\r\n */\r\n@Component({\r\n selector: 'particle-dropdown',\r\n templateUrl: './dropdown.component.html',\r\n styleUrls: ['./dropdown.component.css'],\r\n animations: [\r\n trigger('openClose', [\r\n transition('close => open', [\r\n style({ transform: 'scaleY(0.5)', opacity: 0 }),\r\n animate('200ms ease',\r\n style({ transform: 'scaleY(1)', opacity: 1 }))\r\n ]),\r\n transition('open => close', [\r\n style({ transform: 'scaleY(1)', opacity: 1 }),\r\n animate('200ms ease',\r\n style({ transform: 'scaleY(0.5)', opacity: 0 }))\r\n ]),\r\n ])\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DropdownComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class DropdownComponent implements ControlValueAccessor {\r\n\r\n /**\r\n * Set the value of the dropdown\r\n * @param value the value to set\r\n */\r\n @Input()\r\n set value(value: string | number) {\r\n this._value = value;\r\n this._internalValue.next(value);\r\n\r\n this.setSelectionIndex();\r\n }\r\n\r\n get value(): string | number {\r\n return this._value;\r\n }\r\n\r\n /**\r\n * The dropdown options/option groups\r\n */\r\n @Input()\r\n set options(options: DropdownOptionInput) {\r\n this._options.next(DropdownComponent.sanitizeOptionInput(options));\r\n this._allOptions = DropdownComponent.getAllOptions(this._options.value);\r\n this.setSelectionIndex();\r\n }\r\n\r\n /**\r\n * Dependency injection site\r\n * @param renderer the Angular renderer\r\n * @param changeDetectorRef reference to the Angular change detector\r\n */\r\n constructor(private renderer: Renderer2, private changeDetectorRef: ChangeDetectorRef) {\r\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\r\n let result = '';\r\n\r\n for (let i = 0; i < 10; i++) {\r\n result += characters.charAt(Math.floor(Math.random() * characters.length));\r\n }\r\n\r\n this.dropdownId = `dropdown-${result}${new Date().getTime()}`;\r\n }\r\n\r\n /**\r\n * The amount of offset (in pixels) to place between the dropdown\r\n * and its list overlay\r\n * @private\r\n */\r\n private static readonly DROPDOWN_LIST_OFFSET = 0;\r\n\r\n /**\r\n * List of arrow key keycodes\r\n * @private\r\n */\r\n private static readonly ARROW_KEYS = ['ArrowLeft', 'ArrowUp', 'ArrowRight', 'ArrowDown'];\r\n\r\n /**\r\n * ViewChild of the dropdown\r\n */\r\n @ViewChild('dropdown')\r\n dropdown: ElementRef<HTMLDivElement> = null as any;\r\n\r\n /**\r\n * ViewChild of the dropdown button\r\n */\r\n @ViewChild('dropdownButton')\r\n dropdownButton: ElementRef<HTMLButtonElement> = null as any;\r\n\r\n /**\r\n * ViewChild of the dropdown list\r\n */\r\n @ViewChild('dropdownList')\r\n dropdownList: ElementRef<HTMLDivElement> = null as any;\r\n\r\n /**\r\n * QueryList of dropdown option ViewChildren\r\n */\r\n @ViewChildren('dropdownOption')\r\n dropdownOptions: QueryList<ElementRef<HTMLButtonElement>> = null as any;\r\n\r\n /**\r\n * ContentChild of the dropdown option template\r\n */\r\n @ContentChild(TemplateRef)\r\n template: TemplateRef<HTMLElement> = null as any;\r\n\r\n /**\r\n * Whether the dropdown should be disabled\r\n */\r\n @Input()\r\n disabled: boolean = false;\r\n\r\n @Input()\r\n text: DropdownText = {\r\n placeholder: 'Make a selection'\r\n }\r\n\r\n /**\r\n * Class list to assign to the dropdown\r\n */\r\n @Input()\r\n classList: string = null as any;\r\n\r\n @Input()\r\n buttonClassList: string = null as any;\r\n\r\n /**\r\n * Event emitted on value change, emits the new value\r\n */\r\n @Output()\r\n // eslint-disable-next-line @angular-eslint/no-output-native\r\n change = new EventEmitter<string | number>();\r\n\r\n /**\r\n * BehaviorSubject tracking the input dropdown options/option groups\r\n */\r\n readonly _options = new BehaviorSubject<DropdownOptionInput>(null as any);\r\n\r\n /**\r\n * Full list of all active options, whether they are in a group or not\r\n * @private\r\n */\r\n private _allOptions: Array<DropdownOption> = null as any;\r\n\r\n /**\r\n * Typeahead string while users are typing into the input field\r\n * @private\r\n */\r\n private _fullPredictiveTextString = '';\r\n\r\n /**\r\n * Timeout to clear the _fullPredictiveTextString after a user stops typing for a certain amount of time\r\n * @private\r\n */\r\n private _timeout = null as any;\r\n\r\n\r\n /**\r\n * BehaviorSubject tracking the current value of the dropdown\r\n */\r\n readonly _internalValue = new BehaviorSubject<number | string>(null as any);\r\n\r\n /**\r\n * Observable map of option value (stringified if a number) to data context\r\n */\r\n private readonly dataContextMap$: Observable<{ [value: string]: { [key: string]: unknown } }> = this._options.pipe(\r\n map(options => {\r\n let dataContextMap: { [value: string]: { [key: string]: unknown } } = null as any;\r\n\r\n if (!!options?.length) {\r\n dataContextMap = {};\r\n\r\n for (const option of options) {\r\n if ('options' in option) {\r\n for (const groupOption of option.options) {\r\n dataContextMap[String(groupOption.value)] = JSON.parse(JSON.stringify(groupOption.dataContext));\r\n }\r\n } else if ('dataContext' in option) {\r\n dataContextMap[String(option.value)] = JSON.parse(JSON.stringify(option.dataContext));\r\n }\r\n }\r\n }\r\n\r\n return dataContextMap;\r\n })\r\n );\r\n\r\n /**\r\n * The data context of the selected option as an Observable\r\n */\r\n readonly selectedDataContext$: Observable<{ [key: string]: unknown }> = this._internalValue.pipe(\r\n withLatestFrom(this.dataContextMap$),\r\n map(([value, dataContextMap]) => {\r\n let dataContext: { [key: string]: unknown } = null as any;\r\n\r\n if (value !== null && dataContextMap !== null) {\r\n const entry = dataContextMap[String(value)];\r\n\r\n if (!!entry) {\r\n dataContext = JSON.parse(JSON.stringify(entry));\r\n }\r\n }\r\n\r\n return dataContext;\r\n })\r\n );\r\n\r\n private static getAllOptions(options: DropdownOptionInput): Array<DropdownOption> {\r\n const allOptions: Array<DropdownOption> = [];\r\n for (const option of options) {\r\n if (option.type === 'group') {\r\n for (const groupOption of option.options) {\r\n if (!groupOption.disabled) {\r\n allOptions.push(groupOption);\r\n }\r\n }\r\n } else if (option.type === 'option' && !option.disabled) {\r\n allOptions.push(option as DropdownOption);\r\n }\r\n }\r\n\r\n return allOptions;\r\n }\r\n\r\n /**\r\n * Unique ID to assign to the dropdown\r\n */\r\n readonly dropdownId;\r\n\r\n /**\r\n * Whether the dropdown should be rendered\r\n */\r\n render = false;\r\n\r\n /**\r\n * Whether the dropdown is open\r\n */\r\n opened = false;\r\n\r\n /**\r\n * The index of the focused option in the dropdown list\r\n */\r\n selectionIndex: number = null as any;\r\n\r\n /**\r\n * In mobile (screen width is less than 768), swap to a native input\r\n */\r\n isMobile = window.innerWidth <= 768;\r\n\r\n /**\r\n * The current value of the dropdown\r\n * @private\r\n */\r\n private _value: string | number = null as any;\r\n\r\n /**\r\n * Removes options that do not have both a label and a value,\r\n * also removes empty groups (or groups that have no valid options)\r\n * @param options the options to sanitize\r\n * @private\r\n */\r\n private static sanitizeOptionInput(options: DropdownOptionInput): DropdownOptionInput {\r\n const sanitizedOptions: DropdownOptionInput = [];\r\n\r\n for (const option of options) {\r\n if (('groupLabel' in option) && ('options' in option)) {\r\n const validOptions: Array<DropdownOption> = [];\r\n for (const groupOption of (option.options ?? [])) {\r\n if (!!groupOption.label && (!!groupOption.value || (+groupOption.value >= 0))) {\r\n const groupOptionCopy = JSON.parse(JSON.stringify(groupOption));\r\n groupOptionCopy.dataContext = this.addLabelToDataContext(groupOptionCopy.label, groupOptionCopy.dataContext);\r\n groupOptionCopy.type = 'group';\r\n\r\n validOptions.push(groupOptionCopy);\r\n }\r\n }\r\n\r\n if (!!validOptions.length) {\r\n sanitizedOptions.push({ groupLabel: option.groupLabel, options: validOptions, type: 'group' });\r\n }\r\n } else if (('label' in option) && ('value' in option)) {\r\n if (!!option.label && (!!option.value || (+option.value >= 0))) {\r\n const optionCopy = JSON.parse(JSON.stringify(option));\r\n optionCopy.dataContext = this.addLabelToDataContext(optionCopy.label, optionCopy.dataContext);\r\n optionCopy.type = 'option';\r\n\r\n sanitizedOptions.push(optionCopy);\r\n }\r\n }\r\n }\r\n\r\n return sanitizedOptions;\r\n }\r\n\r\n /**\r\n * Add option label to data context if not present. If $implicit\r\n * value is not present, it will be added with the label as its value.\r\n * If $implicit is already present, it will add a label key to the context\r\n * @param label the option label\r\n * @param dataContext the option data context\r\n * @private\r\n */\r\n private static addLabelToDataContext(label: string, dataContext: { [key: string]: unknown }): { [key: string]: unknown } {\r\n if (!dataContext) {\r\n dataContext = {};\r\n }\r\n\r\n if (!!label) {\r\n const implicitValue = dataContext['$implicit'];\r\n\r\n if (!!implicitValue || implicitValue as number >= 0) {\r\n const labelExists = !!dataContext['label'];\r\n\r\n if (!labelExists) {\r\n dataContext['label'] = label;\r\n }\r\n } else {\r\n dataContext['$implicit'] = label;\r\n }\r\n }\r\n\r\n return dataContext;\r\n }\r\n\r\n /**\r\n * Function to call on change\r\n */\r\n onChange: (value: any) => void = () => {};\r\n\r\n /**\r\n * Function to call on touch\r\n */\r\n onTouched: () => any = () => {};\r\n\r\n /**\r\n * Write value\r\n * @param value the value to write\r\n */\r\n writeValue(value: string | number): void {\r\n this.value = value;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Register function on change\r\n * @param fn the function to register\r\n */\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Register function on touch\r\n * @param fn the function to register\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Set the disabled state\r\n * @param isDisabled disabled or not\r\n */\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Reposition and resize the dropdown on window resize\r\n */\r\n @HostListener('window:resize', ['$event'])\r\n onWindowResize(event: any): void {\r\n this.isMobile = event.target.innerWidth <= 768;\r\n\r\n if (this.opened) {\r\n this.positionDropdownList();\r\n this.resizeDropdownList();\r\n }\r\n }\r\n\r\n /**\r\n * Prevent default behavior for arrow key keydown event\r\n * @param event the keydown KeyboardEvent\r\n */\r\n @HostListener('window:keydown', ['$event'])\r\n onKeyDown(event: KeyboardEvent): void {\r\n if (document.activeElement?.id?.includes(this.dropdownId) && !this.disabled) {\r\n const { key } = event;\r\n\r\n if (DropdownComponent.ARROW_KEYS.includes(key)) {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Close the dropdown list on tab and handle arrow key navigation\r\n * @param event the keyup KeyboardEvent\r\n */\r\n @HostListener('window:keyup', ['$event'])\r\n onKeyUp(event: KeyboardEvent): void {\r\n if (document.activeElement?.id?.includes(this.dropdownId) && !this.disabled) {\r\n const {key} = event;\r\n\r\n if (DropdownComponent.ARROW_KEYS.includes(key)) {\r\n this.onArrowKeyUp(key);\r\n } else if (key === 'Tab') {\r\n this.closeDropdown();\r\n } else {\r\n this._fullPredictiveTextString += key;\r\n if (this._timeout) {\r\n clearTimeout(this._timeout);\r\n }\r\n\r\n this._timeout = setTimeout(() => this._fullPredictiveTextString = '', 500);\r\n\r\n const filteredOptions = this._allOptions.filter(option => {\r\n return option.label && option.label.toLowerCase().startsWith(this._fullPredictiveTextString.toLowerCase())\r\n });\r\n\r\n if (filteredOptions && filteredOptions.length > 0) {\r\n this.handleDropdownOptionSelect(filteredOptions[0].value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Close the dropdown list (if opened) on click if outside the list\r\n * @param event the click MouseEvent\r\n */\r\n @HostListener('window:click', ['$event'])\r\n onClick(event: MouseEvent): void {\r\n if (this.opened) {\r\n const {pageX, pageY} = event;\r\n\r\n if (pageX > 0 && pageY > 0) {\r\n const { left, right, top, bottom } = this.dropdownList.nativeElement.getBoundingClientRect();\r\n const xPositionValid = pageX >= left && pageX <= right;\r\n const yPositionValid = pageY >= top && pageY <= bottom;\r\n const shouldClose = !(xPositionValid && yPositionValid);\r\n\r\n if (shouldClose) {\r\n this.closeDropdown();\r\n this.dropdownButton.nativeElement.focus();\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Close dropdown on escape keyup and focus on dropdown button\r\n * @param event the keyup KeyboardEvent\r\n */\r\n onEscapeKeyUp(event: Event): void {\r\n if (this.opened) {\r\n event.stopImmediatePropagation();\r\n\r\n this.closeDropdown();\r\n this.dropdownButton.nativeElement.focus();\r\n }\r\n }\r\n\r\n /**\r\n * Set focus to dropdown option on mouse enter and update selected index\r\n * @param option the dropdown option to focus\r\n * @param index the index of the option to focus\r\n */\r\n onDropdownOptionMouseEnter(option: HTMLButtonElement, index: number): void {\r\n this.selectionIndex = index;\r\n option.focus();\r\n }\r\n\r\n /**\r\n * Set focus to dropdown option on mouse move and update selected index\r\n * @param option the dropdown option to focus\r\n * @param index the index of the option to focus\r\n */\r\n onDropdownOptionMouseMove(option: HTMLButtonElement, index: number): void {\r\n if (this.selectionIndex !== index) {\r\n this.selectionIndex = index;\r\n option.focus();\r\n }\r\n }\r\n\r\n /**\r\n * Write value and close dropdown on option select\r\n * @param value the value to write\r\n * @param disabled whether or not the selected option is disabled\r\n */\r\n onDropdownOptionSelect(value: string | number, disabled: boolean): void {\r\n if (!disabled) {\r\n this.handleDropdownOptionSelect(value);\r\n this.closeDropdown();\r\n this.dropdownButton.nativeElement.focus();\r\n }\r\n }\r\n\r\n /**\r\n * Open the dropdown list and align it\r\n * @param event the click MouseEvent\r\n */\r\n openDropdown(event: MouseEvent): void {\r\n event.stopImmediatePropagation();\r\n\r\n if (!this.disabled) {\r\n this.render = true;\r\n this.opened = true;\r\n }\r\n }\r\n\r\n /**\r\n * Close the dropdown list\r\n */\r\n closeDropdown(): void {\r\n this.opened = false;\r\n }\r\n\r\n /**\r\n * Position and resize dropdown list on animation start if toState is open\r\n * @param event the Angular AnimationEvent\r\n */\r\n onAnimationStart(event: AnimationEvent): void {\r\n if (event.toState === 'open') {\r\n this.resizeDropdownList();\r\n this.setSelectionIndex();\r\n\r\n if (this.selectionIndex !== null) {\r\n setTimeout(() => {\r\n this.dropdownOptions.toArray()[this.selectionIndex]\r\n .nativeElement\r\n .focus();\r\n });\r\n }\r\n\r\n /*\r\n The height of the dropdown list is zero at the point where the above code executes,\r\n this is a workaround to align the list after its height is known to avoid a frame\r\n or two of the list at origin\r\n */\r\n this.renderer.setStyle(this.dropdownList.nativeElement, 'top', '-999px');\r\n this.renderer.setStyle(this.dropdownList.nativeElement, 'left', '-999px');\r\n setTimeout(() => this.positionDropdownList());\r\n }\r\n }\r\n\r\n /**\r\n * Stop rendering dropdown list on animation done if toState is close\r\n * @param event the Angular AnimationEvent\r\n */\r\n onAnimationDone(event: AnimationEvent): void {\r\n if (event.toState === 'close') {\r\n this.render = false;\r\n }\r\n }\r\n\r\n /**\r\n * Focus on the selected dropdown option on dropdown open\r\n * @private\r\n */\r\n setSelectionIndex(): void {\r\n this.selectionIndex = null as any;\r\n\r\n if ((!!this.value || +this.value >= 0) && !!this.dropdownOptions?.length) {\r\n const dropdownOptionsArray = this.dropdownOptions.toArray();\r\n const foundIndex = dropdownOptionsArray.findIndex(option => {\r\n return String(this.value) === option.nativeElement.getAttribute('data-value');\r\n });\r\n\r\n this.selectionIndex = foundIndex > -1 ? foundIndex : null as any;\r\n }\r\n }\r\n\r\n /**\r\n * Update internal value and emit change events if input value differs from current value\r\n * @param value the selected value\r\n * @private\r\n */\r\n private handleDropdownOptionSelect(value: string | number): void {\r\n if (this.value !== value && !this.disabled) {\r\n this.value = value;\r\n\r\n this.onChange(value);\r\n this.change.emit(value);\r\n }\r\n }\r\n\r\n onModelChangeMobile(value: any): void {\r\n this.onChange(value);\r\n this.change.emit(value);\r\n }\r\n\r\n /**\r\n * Align the dropdown list with the dropdown\r\n * @private\r\n */\r\n private positionDropdownList(): void {\r\n const {left, top, bottom} = this.dropdown.nativeElement.getBoundingClientRect();\r\n const {offsetHeight} = this.dropdownList.nativeElement;\r\n const datePickerBottomLeftAnchor = bottom;\r\n const availableBottomSpace = window.innerHeight - datePickerBottomLeftAnchor;\r\n const availableTopSpace = top;\r\n const offsetListHeight = offsetHeight + DropdownComponent.DROPDOWN_LIST_OFFSET;\r\n let transformOrigin: string, positionTop: string;\r\n\r\n if (availableBottomSpace > offsetListHeight) {\r\n transformOrigin = 'top left';\r\n positionTop = `${datePickerBottomLeftAnchor + DropdownComponent.DROPDOWN_LIST_OFFSET}px`;\r\n } else if (availableTopSpace > offsetListHeight) {\r\n transformOrigin = 'bottom left';\r\n positionTop = `${top - offsetListHeight}px`;\r\n } else {\r\n if (offsetHeight > window.innerHeight) {\r\n positionTop = '0px';\r\n } else {\r\n const availableSpace = window.innerHeight - offsetHeight;\r\n positionTop = `${String(availableSpace / 2)}px`;\r\n }\r\n\r\n transformOrigin = 'top left';\r\n }\r\n\r\n this.renderer.setStyle(this.dropdownList.nativeElement, 'transform-origin', transformOrigin);\r\n this.renderer.setStyle(this.dropdownList.nativeElement, 'left', `${left}px`);\r\n this.renderer.setStyle(this.dropdownList.nativeElement, 'top', positionTop);\r\n }\r\n\r\n /**\r\n * Match the dropdown list width to the dropdown's width\r\n * @private\r\n */\r\n private resizeDropdownList(): void {\r\n const { left, right } = this.dropdown.nativeElement.getBoundingClientRect();\r\n const width = right - left;\r\n\r\n this.renderer.setStyle(this.dropdownList.nativeElement, 'width', `${width}px`);\r\n }\r\n\r\n /**\r\n * Handle arrow keyup event\r\n * @param key the arrow key\r\n */\r\n private onArrowKeyUp(key: string): void {\r\n if (key === 'ArrowLeft' || key === 'ArrowUp') {\r\n const previousOption = this.getPreviousOption();\r\n\r\n if (previousOption !== null) {\r\n if (this.opened) {\r\n previousOption.focus();\r\n } else {\r\n this.handleDropdownOptionSelect(previousOption.getAttribute('data-value') as string);\r\n }\r\n }\r\n } else if (key === 'ArrowRight' || key === 'ArrowDown') {\r\n const nextOption = this.getNextOption();\r\n\r\n if (nextOption !== null) {\r\n if (this.opened) {\r\n nextOption.focus();\r\n } else {\r\n this.handleDropdownOptionSelect(nextOption.getAttribute('data-value') as string);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get the next enabled dropdown option (relative to the current selection index).\r\n * If the currently selected option is the final available option, it is\r\n * returned. If no selection has been made, the first available option is returned\r\n * @private\r\n */\r\n private getNextOption(): HTMLButtonElement {\r\n const optionsArray = this.dropdownOptions.toArray();\r\n\r\n const startIndex = this.selectionIndex === null ? 0 : this.selectionIndex + 1;\r\n for (let i = startIndex; i < optionsArray.length; i++) {\r\n const option = optionsArray[i].nativeElement;\r\n\r\n if (!option.disabled) {\r\n this.selectionIndex = i;\r\n break;\r\n }\r\n }\r\n\r\n return this.selectionIndex === null\r\n ? null as any\r\n : optionsArray[this.selectionIndex].nativeElement;\r\n }\r\n\r\n /**\r\n * Get the previous enabled dropdown option (relative to the current selection index).\r\n * If the currently selected option is the first available option, it is\r\n * returned\r\n * @private\r\n */\r\n private getPreviousOption(): HTMLButtonElement {\r\n let previousOption: HTMLButtonElement = null as any;\r\n\r\n if (this.selectionIndex !== null) {\r\n const optionsArray = this.dropdownOptions.toArray();\r\n\r\n for (let i = this.selectionIndex - 1; i >= 0; i--) {\r\n const option = optionsArray[i].nativeElement;\r\n\r\n if (!option.disabled) {\r\n this.selectionIndex = i;\r\n previousOption = option;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return previousOption;\r\n }\r\n}\r\n","<ng-container *ngIf=\"!isMobile else mobile\">\r\n<div #dropdown\r\n class=\"row ptl_input ptl_input_height ptl_input_bg_color ptl_brdr_color ptl_brdr_size ptl_brdr_radius ent_r2l_dir\"\r\n [style.filter]=\"disabled ? 'brightness(.95)' : ''\"\r\n style=\"cursor:default;overflow:hidden;\"\r\n [ngClass]=\"classList ? classList : ''\">\r\n <button #dropdownButton\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n type=\"button\"\r\n (click)=\"openDropdown($event)\"\r\n (focus)=\"setSelectionIndex()\"\r\n (keyup.escape)=\"onEscapeKeyUp($event)\"\r\n [id]=\"dropdownId\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-label]=\"text.placeholder\"\r\n [attr.aria-expanded]=\"opened\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n class=\"access btnset clear center_center height100 width100\"\r\n style=\"outline-offset: -2px;\"\r\n >\r\n <div class=\"col size_1 height100 width100 v_center ptl_input_text_size ptl_input_padding border_none width100 overflow_hide\">\r\n <ng-container *ngIf=\"selectedDataContext$ | async as dataContext else placeholderTemplate\">\r\n <ng-container *ngIf=\"!!template else noCustomTemplate\">\r\n <div class=\"row v_center text_ellipsis min_w0\">\r\n <ng-container *ngTemplateOutlet=\"template; context: $any(dataContext)\"></ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-template #noCustomTemplate>\r\n <div class=\"ent_r2l_txt\">{{dataContext['$implicit'] || dataContext.label}}</div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #placeholderTemplate>\r\n <div class=\"ptl_placeholder ent_r2l_txt\">{{text.placeholder}}</div>\r\n </ng-template>\r\n </div>\r\n <div class=\"col min_w50 height100 center_center border_left\"\r\n [ngClass]=\"buttonClassList ? buttonClassList : 'ptl_brdr_color'\">\r\n <div class=\"center_center height100 width100\">\r\n <i class=\"fas fa-caret-down ptl_input_text_size\"></i>\r\n </div>\r\n </div>\r\n </button>\r\n</div>\r\n\r\n<div [style.display]=\"render ? '' : 'none'\"\r\n [attr.aria-hidden]=\"!render\"\r\n class=\"particle_dropdown_overlay\">\r\n <div #dropdownList\r\n [@openClose]=\"opened ? 'open' : 'close'\"\r\n (@openClose.start)=\"onAnimationStart($event)\"\r\n (@openClose.done)=\"onAnimationDone($event)\"\r\n class=\"position_absolute\">\r\n <div class=\"particle_dropdown_options content_color ent_r2l_dir\">\r\n <ng-container *ngIf=\"_options | async as options\">\r\n <div class=\"particle_dropdown_list\" role=\"listbox\" tabindex=\"-1\" [attr.aria-label]=\"text.placeholder\">\r\n <!-- CUSTOM TEMPLATE -->\r\n <ng-container *ngIf=\"!!template else defaultOptionTemplate\">\r\n <ng-container *ngFor=\"let option of options; index as i\">\r\n <!-- OPTION GROUP -->\r\n <ng-container *ngIf=\"option.type === 'group' else nonGroupOption\">\r\n <div class=\"particle_dropdown_heading ptl_input_text_size ent_r2l_txt\" aria-hidden=\"true\">{{option.groupLabel}}</div>\r\n <ng-container *ngFor=\"let groupOption of option.options; index as j\">\r\n <button #dropdownOption\r\n (click)=\"onDropdownOptionSelect(groupOption.value, groupOption.disabled!)\"\r\n (mouseenter)=\"onDropdownOptionMouseEnter(dropdownOption, i + j)\"\r\n (mousemove)=\"onDropdownOptionMouseMove(dropdownOption, i + j)\"\r\n (keyup.escape)=\"onEscapeKeyUp($event)\"\r\n [id]=\"dropdownId + '-' + groupOption.value\"\r\n [ngClass]=\"{ 'unselected' : (_internalValue | async) !== groupOption.value }\"\r\n [attr.aria-selected]=\"(_internalValue | async) === groupOption.value\"\r\n [attr.data-value]=\"groupOption.value\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n [disabled]=\"groupOption.disabled\"\r\n type=\"button\"\r\n class=\"particle_dropdown_option ptl_input_text_size ent_r2l_txt\" role=\"option\" tabindex=\"0\">\r\n <ng-container *ngTemplateOutlet=\"template; context: $any(groupOption.dataContext!)\"></ng-container>\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n <!-- SINGULAR OPTION -->\r\n <ng-template #nonGroupOption>\r\n <ng-container *ngIf=\"option.type === 'option'\">\r\n <button #dropdownOption\r\n (click)=\"onDropdownOptionSelect(option.value, option.disabled!)\"\r\n (mouseenter)=\"onDropdownOptionMouseEnter(dropdownOption, i)\"\r\n (mousemove)=\"onDropdownOptionMouseMove(dropdownOption, i)\"\r\n (keyup.escape)=\"onEscapeKeyUp($event)\"\r\n [id]=\"dropdownId + '-' + option.value\"\r\n [ngClass]=\"{ 'unselected' : (_internalValue | async) !== option.value }\"\r\n [attr.aria-selected]=\"(_internalValue | async) === option.value\"\r\n [attr.data-value]=\"option.value\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n [disabled]=\"option.disabled\"\r\n type=\"button\"\r\n class=\"particle_dropdown_option ptl_input_text_size ent_r2l_txt\" role=\"option\" tabindex=\"0\">\r\n <ng-container *ngTemplateOutlet=\"template; context: $any(option.dataContext!)\"></ng-container>\r\n </button>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n <!-- NO CUSTOM TEMPLATE -->\r\n <ng-template #defaultOptionTemplate>\r\n <ng-container *ngFor=\"let option of options; index as i\">\r\n <!-- OPTION GROUP -->\r\n <ng-container *ngIf=\"option.type === 'group' else nonGroupOption\">\r\n <div class=\"particle_dropdown_heading ptl_input_text_size ent_r2l_txt\" aria-hidden=\"true\">{{option.groupLabel}}</div>\r\n <ng-container *ngFor=\"let groupOption of option.options; index as j\">\r\n <button #dropdownOption\r\n (click)=\"onDropdownOptionSelect(groupOption.value, groupOption.disabled!)\"\r\n (mouseenter)=\"onDropdownOptionMouseEnter(dropdownOption, i + j)\"\r\n (mousemove)=\"onDropdownOptionMouseMove(dropdownOption, i + j)\"\r\n (keyup.escape)=\"onEscapeKeyUp($event)\"\r\n [id]=\"dropdownId + '-' + groupOption.value\"\r\n [ngClass]=\"{ 'unselected' : (_internalValue | async) !== groupOption.value }\"\r\n [attr.aria-label]=\"groupOption.label\"\r\n [attr.aria-selected]=\"(_internalValue | async) === groupOption.value\"\r\n [attr.data-value]=\"groupOption.value\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n [disabled]=\"groupOption.disabled\"\r\n class=\"particle_dropdown_option ptl_input_text_size ent_r2l_txt\"\r\n type=\"button\"\r\n role=\"option\" tabindex=\"0\">\r\n {{groupOption.label}}\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n <!-- SINGULAR OPTION -->\r\n <ng-template #nonGroupOption>\r\n <ng-container *ngIf=\"option.type === 'option'\">\r\n <button #dropdownOption\r\n (click)=\"onDropdownOptionSelect(option.value, option.disabled!)\"\r\n (mouseenter)=\"onDropdownOptionMouseEnter(dropdownOption, i)\"\r\n (mousemove)=\"onDropdownOptionMouseMove(dropdownOption, i)\"\r\n (keyup.escape)=\"onEscapeKeyUp($event)\"\r\n [id]=\"dropdownId + '-' + option.value\"\r\n [ngClass]=\"{ 'unselected' : (_internalValue | async) !== option.value }\"\r\n [attr.aria-selected]=\"(_internalValue | async) === option.value\"\r\n [attr.data-value]=\"option.value\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n [disabled]=\"option.disabled\"\r\n class=\"particle_dropdown_option ptl_input_text_size ent_r2l_txt\"\r\n type=\"button\"\r\n role=\"option\" tabindex=\"0\">\r\n {{option.label}}\r\n </button>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-content select=\"template\"></ng-content>\r\n</ng-container>\r\n\r\n<ng-template #mobile>\r\n <select\r\n class=\"access ptl_input ptl_input_height ptl_input_text_size ptl_input_padding ptl_input_bg_color ptl_brdr_color ptl_brdr_size ptl_brdr_radius\"\r\n [id]=\"dropdownId\"\r\n [disabled]=\"disabled\"\r\n (ngModelChange)=\"onModelChangeMobile($event)\"\r\n [(ngModel)]=\"value\">\r\n <ng-container *ngIf=\"_options | async as options\">\r\n <ng-container *ngFor=\"let option of options\">\r\n <ng-container *ngIf=\"option.type === 'group'\">\r\n <optgroup class=\"input_bg_color min_h50 pad_10\" [label]=\"option.groupLabel\">\r\n <ng-container *ngFor=\"let groupOption of option.options\">\r\n <option\r\n [disabled]=\"groupOption.disabled\"\r\n class=\"input_bg_color min_h50 pad_10\"\r\n [value]=\"groupOption.value\"\r\n >\r\n {{groupOption.label}}\r\n </option>\r\n </ng-container>\r\n </optgroup>\r\n </ng-container>\r\n <ng-container *ngIf=\"option.type === 'option'\">\r\n <option\r\n [disabled]=\"option.disabled\"\r\n class=\"input_bg_color min_h50 pad_10\"\r\n [value]=\"option.value\"\r\n >\r\n {{option.label}}\r\n </option>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </select>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DropdownComponent} from './dropdown.component';\nimport {FormsModule} from '@angular/forms';\n\n@NgModule({\n declarations: [\n DropdownComponent\n ],\n imports: [\n CommonModule,\n FormsModule\n ],\n exports: [\n DropdownComponent\n ]\n})\nexport class ParticleDropdownModule { }\n","import { animate, AnimationEvent, style, transition, trigger } from '@angular/animations';\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChild,\r\n ElementRef,\r\n EventEmitter, forwardRef,\r\n HostListener,\r\n Input,\r\n Output,\r\n QueryList,\r\n Renderer2,\r\n TemplateRef,\r\n ViewChild,\r\n ViewChildren\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport {BehaviorSubject, Observable, map} from 'rxjs';\r\nimport {MultiSelectOption} from './models/multi-select-option.model';\r\nimport {MultiSelectOptionGroup} from './models/multi-select-option-group.model';\r\nimport {MultiSelectText} from '../../shared/models/particle-component-text.model';\r\n\r\n/**\r\n * Type representing the multi-select component option input\r\n */\r\ndeclare type MultiSelectOptionInput = Array<MultiSelectOption | MultiSelectOptionGroup>;\r\n\r\n/**\r\n * Multi-select component\r\n */\r\n@Component({\r\n selector: 'particle-multi-select',\r\n templateUrl: './multi-select.component.html',\r\n styleUrls: ['./multi-select.component.css'],\r\n animations: [\r\n trigger('openClose', [\r\n transition('close => open', [\r\n style({ transform: 'scaleY(0.5)', opacity: 0 }),\r\n animate('200ms ease',\r\n style({ transform: 'scaleY(1)', opacity: 1 }))\r\n ]),\r\n transition('open => close', [\r\n style({ transform: 'scaleY(1)', opacity: 1 }),\r\n animate('200ms ease',\r\n style({ transform: 'scaleY(0.5)', opacity: 0 }))\r\n ]),\r\n ])\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MultiSelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class MultiSelectComponent implements ControlValueAccessor {\r\n\r\n /**\r\n * Set the value of the multi-select\r\n * @param value the value to set\r\n */\r\n @Input()\r\n set value(value: Array<string | number>) {\r\n let valueToSet: Array<string | number> = null as any;\r\n if (Array.isArray(value)) {\r\n valueToSet = [];\r\n for (const valueItem of value) {\r\n if (Array.isArray(valueItem)) {\r\n valueToSet.push(...valueItem);\r\n } else if ((typeof valueItem === 'string') || (typeof valueItem === 'number')) {\r\n valueToSet.push(valueItem);\r\n }\r\n }\r\n\r\n const nonNullValues = valueToSet.filter(item => item !== null);\r\n valueToSet = !nonNullValues.length ? null as any : nonNullValues;\r\n }\r\n\r\n this._value = valueToSet;\r\n this._internalValue.next(valueToSet);\r\n }\r\n\r\n get value(): Array<any> {\r\n return this._value;\r\n }\r\n\r\n /**\r\n * The multi-select options/option groups\r\n */\r\n @Input()\r\n set options(options: MultiSelectOptionInput) {\r\n this.optionCount = 0;\r\n if (options) {\r\n for (const option of options) {\r\n const suboptions = (option as MultiSelectOptionGroup).options;\r\n if (suboptions) {\r\n this.optionCount += suboptions.length;\r\n } else {\r\n this.optionCount++;\r\n }\r\n }\r\n }\r\n\r\n this._options.next(MultiSelectComponent.sanitizeOptionInput(options));\r\n }\r\n\r\n /**\r\n * The amount of offset (in pixels) to place between the multi-select\r\n * and its list overlay\r\n * @private\r\n */\r\n private static readonly LIST_OFFSET = 0;\r\n\r\n /**\r\n * List of arrow key keycodes\r\n * @private\r\n */\r\n private static readonly ARROW_KEYS = ['ArrowLeft', 'ArrowUp', 'ArrowRight', 'ArrowDown'];\r\n\r\n /**\r\n * ViewChild of the multi-select\r\n */\r\n @ViewChild('multiSelect')\r\n multiSelect: ElementRef<HTMLDivElement> = null as any;\r\n\r\n /**\r\n * ViewChild of the multi-select button\r\n */\r\n @ViewChild('multiSelectButton')\r\n multiSelectButton: ElementRef<HTMLButtonElement> = null as any;\r\n\r\n /**\r\n * ViewChild of the multi-select list\r\n */\r\n @ViewChild('multiSelectList')\r\n multiSelectList: ElementRef<HTMLDivElement> = null as any;\r\n\r\n /**\r\n * QueryList of multi-select option ViewChildren\r\n */\r\n @ViewChildren('multiSelectOption')\r\n multiSelectOptions: QueryList<ElementRef<HTMLButtonElement>> = null as any;\r\n\r\n /**\r\n * ContentChild of the multi-select option template\r\n */\r\n @ContentChild(TemplateRef)\r\n template: TemplateRef<HTMLElement> = null as any;\r\n\r\n /**\r\n * Whether the multi-select should be disabled\r\n */\r\n @Input()\r\n disabled: boolean = false;\r\n\r\n /**\r\n * Class list to assign to the multi-select\r\n */\r\n @Input()\r\n classList: string = null as any;\r\n\r\n @Input()\r\n buttonClassList: string = null as any;\r\n\r\n @Input()\r\n entryClassList: string = null as any;\r\n\r\n @Input()\r\n text: MultiSelectText = {\r\n placeholder: 'Make a Selection',\r\n of: 'of',\r\n optionsSelected: 'options selected'\r\n } as MultiSelectText;\r\n\r\n /**\r\n * Style of the multi-select\r\n */\r\n @Input()\r\n type: 'input' | 'expanded' = 'input';\r\n\r\n @Input()\r\n maxExpandedEntries: number = 0;\r\n\r\n @Input()\r\n expandedAsGrid: boolean = false;\r\n\r\n @Input()\r\n collapsedButtonTemplate: TemplateRef<any> = null as any;\r\n\r\n /**\r\n * Event emitted on value change, emits the new value\r\n */\r\n @Output()\r\n // eslint-disable-next-line @angular-eslint/no-output-native\r\n change = new EventEmitter<Array<string | number>>();\r\n\r\n /**\r\n * BehaviorSubject tracking the input multi-select options/option groups\r\n */\r\n readonly _options = new BehaviorSubject<MultiSelectOptionInput>(null as any);\r\n\r\n /**\r\n * BehaviorSubject tracking the current value of the multi-select\r\n */\r\n readonly _internalValue = new BehaviorSubject<Array<number | string>>(null as any);\r\n\r\n /**\r\n * Observable map of option value (stringified if a number) to data context\r\n */\r\n readonly dataContextMap$: Observable<{ [value: string]: { [key: string]: unknown } }> = this._options.pipe(\r\n map(options => {\r\n let dataContextMap: { [value: string]: { [key: string]: unknown } } = null as any;\r\n\r\n if (!!options?.length) {\r\n dataContextMap = {};\r\n\r\n for (const option of options) {\r\n if ('options' in option) {\r\n for (const groupOption of option.options) {\r\n dataContextMap[String(groupOption.value)] = JSON.parse(JSON.stringify(groupOption.dataContext));\r\n }\r\n } else if ('dataContext' in option) {\r\n dataContextMap[String(option.value)] = JSON.parse(JSON.stringify(option.dataContext));\r\n }\r\n }\r\n }\r\n\r\n return dataContextMap;\r\n })\r\n );\r\n\r\n /**\r\n * Observable map of stringified option value to boolean indicating the user's selections\r\n */\r\n readonly selectionValueMap$: Observable<{ [key: string]: boolean }> = this._internalValue.pipe(\r\n map(values => {\r\n const selectionValueMap = {} as any;\r\n\r\n if (!!values?.length) {\r\n for (const value of values) {\r\n selectionValueMap[String(value)] = true;\r\n }\r\n }\r\n\r\n return selectionValueMap;\r\n })\r\n );\r\n\r\n /**\r\n * The count of selected options as an Observable\r\n */\r\n readonly selectionCount$: Observable<number> = this._internalValue.pipe(\r\n map(values => values?.length ?? 0)\r\n );\r\n\r\n /**\r\n * Unique ID to assign to the multiSelect\r\n */\r\n readonly multiSelectId;\r\n\r\n /**\r\n * Whether to render the multi-select list\r\n */\r\n render = false;\r\n\r\n /**\r\n * Whether the multi-select is open\r\n */\r\n opened = false;\r\n\r\n /**\r\n * The index of the focused option in the multiSelect list\r\n */\r\n selectionIndex: number = null as any;\r\n\r\n optionCount: number = 0;\r\n\r\n /**\r\n * The current value of the multiSelect\r\n * @private\r\n */\r\n private _value: Array<string | number> = null as any;\r\n\r\n /**\r\n * Removes options that do not have both a label and a value,\r\n * also removes empty groups (or groups that have no valid options)\r\n * @param options the options to sanitize\r\n * @private\r\n */\r\n private static sanitizeOptionInput(options: MultiSelectOptionInput): MultiSelectOptionInput {\r\n const sanitizedOptions: MultiSelectOptionInput = [];\r\n\r\n for (const option of options) {\r\n if (('groupLabel' in option) && ('options' in option)) {\r\n const validOptions: Array<MultiSelectOption> = [];\r\n for (const groupOption of (option.options ?? [])) {\r\n if (!!groupOption.label && (!!groupOption.value || (+groupOption.value >= 0))) {\r\n const groupOptionCopy = JSON.parse(JSON.stringify(groupOption));\r\n groupOptionCopy.dataContext = this.addLabelToDataContext(groupOptionCopy.label, groupOptionCopy.dataContext);\r\n groupOptionCopy.type = 'group';\r\n\r\n validOptions.push(groupOptionCopy);\r\n }\r\n }\r\n\r\n if (!!validOptions.length) {\r\n sanitizedOptions.push({ groupLabel: option.groupLabel, options: validOptions, type: 'group' });\r\n }\r\n } else if (('label' in option) && ('value' in option)) {\r\n if (!!option.label && (!!option.value || (+option.value >= 0))) {\r\n const optionCopy = JSON.parse(JSON.stringify(option));\r\n optionCopy.dataContext = this.addLabelToDataContext(optionCopy.label, optionCopy.dataContext);\r\n optionCopy.type = 'option';\r\n\r\n sanitizedOptions.push(optionCopy);\r\n }\r\n }\r\n }\r\n\r\n return sanitizedOptions;\r\n }\r\n\r\n /**\r\n * Add option label to data context if not present. If $implicit\r\n * value is not present, it will be added with the label as its value.\r\n * If $implicit is already present, it will add a label key to the context\r\n * @param label the option label\r\n * @param dataContext the option data context\r\n * @private\r\n */\r\n private static addLabelToDataContext(label: string, dataContext: { [key: string]: unknown }): { [key: string]: unknown } {\r\n if (!dataContext) {\r\n dataContext = {};\r\n }\r\n\r\n if (!!label) {\r\n const implicitValue = dataContext['$implicit'];\r\n\r\n if (!!implicitValue || implicitValue as number >= 0) {\r\n const labelExists = !!dataContext['label'];\r\n\r\n if (!labelExists) {\r\n dataContext['label'] = label;\r\n }\r\n } else {\r\n dataContext['$implicit'] = label;\r\n }\r\n }\r\n\r\n return dataContext;\r\n }\r\n\r\n /**\r\n * Function to call on change\r\n */\r\n onChange: (value: any) => void = () => {};\r\n\r\n /**\r\n * Function to call on touch\r\n */\r\n onTouched: () => any = () => {};\r\n\r\n /**\r\n * Dependency injection site\r\n * @param renderer the Angular renderer\r\n * @param changeDetectorRef reference to the Angular change detector\r\n */\r\n constructor(private renderer: Renderer2, private changeDetectorRef: ChangeDetectorRef) {\r\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\r\n let result = '';\r\n\r\n for (let i = 0; i < 10; i++) {\r\n result += characters.charAt(Math.floor(Math.random() * characters.length));\r\n }\r\n\r\n this.multiSelectId = `multiselect-${result}${new Date().getTime()}`;\r\n }\r\n\r\n /**\r\n * Write value\r\n * @param value the value to write\r\n */\r\n writeValue(value: Array<string | number>): void {\r\n this.value = value;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Register function on change\r\n * @param fn the function to register\r\n */\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Register function on touch\r\n * @param fn the function to register\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Set the disabled state\r\n * @param isDisabled disabled or not\r\n */\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Reposition and resize the multiSelect on window resize\r\n */\r\n @HostListener('window:resize')\r\n onWindowResize(): void {\r\n if (this.opened) {\r\n this.positionMultiSelectList();\r\n this.resizeMultiSelectList();\r\n }\r\n }\r\n\r\n /**\r\n * Prevent default behavior for arrow key keydown event\r\n * @param event the keydown KeyboardEvent\r\n */\r\n @HostListener('window:keydown', ['$event'])\r\n onKeyDown(event: KeyboardEvent): void {\r\n if (document.activeElement?.id?.includes(this.multiSelectId) && !this.disabled) {\r\n const { key } = event;\r\n\r\n if (MultiSelectComponent.ARROW_KEYS.includes(key)) {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Close the multi-select list on tab and handle arrow key navigation\r\n * @param event the keyup KeyboardEvent\r\n */\r\n @HostListener('window:keyup', ['$event'])\r\n onKeyUp(event: KeyboardEvent): void {\r\n if (document.activeElement?.id?.includes(this.multiSelectId) && !this.disabled) {\r\n const {key} = event;\r\n\r\n if (MultiSelectComponent.ARROW_KEYS.includes(key)) {\r\n this.onArrowKeyUp(key);\r\n } else {\r\n if (this.opened) {\r\n if (key === 'Tab') {\r\n this.closeMultiSelect();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Close the multi-select list (if opened) on click if outside the list\r\n * @param event the click MouseEvent\r\n */\r\n @HostListener('window:click', ['$event'])\r\n onClick(event: MouseEvent): void {\r\n if (this.opened) {\r\n const {pageX, pageY} = event;\r\n\r\n if (pageX > 0 && pageY > 0) {\r\n const { left, right, top, bottom } = this.multiSelectList.nativeElement.getBoundingClientRect();\r\n const xPositionValid = pageX >= left && pageX <= right;\r\n const yPositionValid = pageY >= top && pageY <= bottom;\r\n const shouldClose = !(xPositionValid && yPositionValid);\r\n\r\n if (shouldClose) {\r\n this.closeMultiSelect();\r\n this.multiSelectButton.nativeElement.focus();\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Close multi-select on escape keyup and focus on multi-select button\r\n * @param event the keyup KeyboardEvent\r\n */\r\n onEscapeKeyUp(event: Event): void {\r\n if (this.opened) {\r\n event.stopImmediatePropagation();\r\n\r\n this.closeMultiSelect();\r\n this.multiSelect.nativeElement.focus();\r\n }\r\n }\r\n\r\n /**\r\n * Set focus to multi-select option on mouse enter and update selected index\r\n * @param option the multiSelect option to focus\r\n * @param index the index of the option to focus\r\n */\r\n onMultiSelectOptionMouseEnter(option: HTMLButtonElement, index: number): void {\r\n this.selectionIndex = index;\r\n option.focus();\r\n }\r\n\r\n /**\r\n * Set focus to multi-select option on mouse move and update selected index\r\n * @param option the multiSelect option to focus\r\n * @param index the index of the option to focus\r\n */\r\n onMultiSelectOptionMouseMove(option: HTMLButtonElement, index: number): void {\r\n if (this.selectionIndex !== index) {\r\n this.selectionIndex = index;\r\n option.focus();\r\n }\r\n }\r\n\r\n /**\r\n * Write value and close multi-select on option select\r\n * @param value the value to write\r\n * @param disabled whether or not the selected option is disabled\r\n */\r\n onMultiSelectOptionSelect(value: string | number, disabled: boolean): void {\r\n if (!disabled) {\r\n this.handleMultiSelectOptionSelect(value);\r\n }\r\n }\r\n\r\n /**\r\n * Open the multi-select list and align it\r\n * @param event the click MouseEvent\r\n */\r\n openMultiSelect(event: MouseEvent): void {\r\n event.stopImmediatePropagation();\r\n\r\n if (!this.disabled) {\r\n this.render = true;\r\n this.opened = true;\r\n }\r\n }\r\n\r\n /**\r\n * Close the multiSelect list\r\n */\r\n closeMultiSelect(): void {\r\n this.opened = false;\r\n this.selectionIndex = null as any;\r\n }\r\n\r\n /**\r\n * Position and resize the multi-select list on animation start if toState is open\r\n * @param event the Angular AnimationEvent\r\n */\r\n onAnimationStart(event: AnimationEvent): void {\r\n if (event.toState === 'open') {\r\n this.resizeMultiSelectList();\r\n this.selectionIndex = null as any;\r\n\r\n setTimeout(() => {\r\n const option = this.getNextOption();\r\n if (!!option) {\r\n option.focus();\r\n }\r\n });\r\n\r\n /*\r\n The height of the multi-select list is zero at the point where the above code executes,\r\n this is a workaround to align the list after its height is known to avoid a frame\r\n or two of the list at origin\r\n */\r\n this.renderer.setStyle(this.multiSelectList.nativeElement, 'top', '-999px');\r\n this.renderer.setStyle(this.multiSelectList.nativeElement, 'left', '-999px');\r\n setTimeout(() => this.positionMultiSelectList());\r\n }\r\n }\r\n\r\n /**\r\n * Stop rendering the multi-select list on animation done if toState is close\r\n * @param event the Angular AnimationEvent\r\n */\r\n onAnimationDone(event: AnimationEvent): void {\r\n if (event.toState === 'close') {\r\n this.render = false;\r\n }\r\n }\r\n\r\n /**\r\n * If the input value is already in the value array, remove it. Otherwise add it\r\n * @param value the selected value\r\n * @private\r\n */\r\n private handleMultiSelectOptionSelect(value: string | number): void {\r\n if (!this.value) {\r\n this.value = [value];\r\n } else {\r\n const valueCopy = [...this.value];\r\n const foundIndex = valueCopy.findIndex(item => item === value);\r\n\r\n if (foundIndex > -1) {\r\n valueCopy.splice(foundIndex, 1);\r\n } else {\r\n valueCopy.push(value);\r\n }\r\n\r\n this.value = valueCopy;\r\n }\r\n\r\n this.onChange(this.value);\r\n this.change.emit(this.value);\r\n }\r\n\r\n /**\r\n * Align the multi-select list with the multiSelect\r\n * @private\r\n */\r\n private positionMultiSelectList(): void {\r\n const {left, top, bottom} = this.multiSelect.nativeElement.getBoundingClientRect();\r\n const {offsetHeight} = this.multiSelectList.nativeElement;\r\n const datePickerBottomLeftAnchor = bottom;\r\n const availableBottomSpace = window.innerHeight - datePickerBottomLeftAnchor;\r\n const availableTopSpace = top;\r\n const offsetListHeight = offsetHeight + MultiSelectComponent.LIST_OFFSET;\r\n let transformOrigin: string, positionTop: string;\r\n\r\n if (availableBottomSpace > offsetListHeight) {\r\n transformOrigin = 'top left';\r\n positionTop = `${datePickerBottomLeftAnchor + MultiSelectComponent.LIST_OFFSET}px`;\r\n } else if (availableTopSpace > offsetListHeight) {\r\n transformOrigin = 'bottom left';\r\n positionTop = `${top - offsetListHeight}px`;\r\n } else {\r\n if (offsetHeight > window.innerHeight) {\r\n positionTop = '0px';\r\n } else {\r\n const availableSpace = window.innerHeight - offsetHeight;\r\n positionTop = `${String(availableSpace / 2)}px`;\r\n }\r\n\r\n transformOrigin = 'top left';\r\n }\r\n\r\n this.renderer.setStyle(this.multiSelectList.nativeElement, 'transform-origin', transformOrigin);\r\n this.renderer.setStyle(this.multiSelectList.nativeElement, 'left', `${left}px`);\r\n this.renderer.setStyle(this.multiSelectList.nativeElement, 'top', positionTop);\r\n }\r\n\r\n /**\r\n * Match the multi-select list width to the multi-select's width\r\n * @private\r\n */\r\n private resizeMultiSelectList(): void {\r\n const { left, right } = this.multiSelect.nativeElement.getBoundingClientRect();\r\n const width = right - left;\r\n\r\n this.renderer.setStyle(this.multiSelectList.nativeElement, 'width', `${width}px`);\r\n }\r\n\r\n /**\r\n * Handle arrow keyup event\r\n * @param key the arrow key\r\n */\r\n private onArrowKeyUp(key: string): void {\r\n if (this.opened) {\r\n if (key === 'ArrowLeft' || key === 'ArrowUp') {\r\n const previousOption = this.getPreviousOption();\r\n\r\n if (previousOption !== null) {\r\n previousOption.focus();\r\n }\r\n } else if (key === 'ArrowRight' || key === 'ArrowDown') {\r\n const nextOption = this.getNextOption();\r\n\r\n if (nextOption !== null) {\r\n nextOption.focus();\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get the next enabled multi-select option (relative to the current selection index).\r\n * If the currently selected option is the final available option, it is\r\n * returned. If no selection has been made, the first available option is returned\r\n * @private\r\n */\r\n private getNextOption(): HTMLButtonElement {\r\n const optionsArray = this.multiSelectOptions.toArray();\r\n\r\n const startIndex = this.selectionIndex === null ? 0 : this.selectionIndex + 1;\r\n for (let i = startIndex; i < optionsArray.length; i++) {\r\n const option = optionsArray[i].nativeElement;\r\n\r\n if (!option.disabled) {\r\n this.selectionIndex = i;\r\n break;\r\n }\r\n }\r\n\r\n return this.selectionIndex === null\r\n ? null as any\r\n : optionsArray[this.selectionIndex].nativeElement;\r\n }\r\n\r\n /**\r\n * Get the previous enabled multi-select option (relative to the current selection index).\r\n * If the currently selected option is the first available option, it is\r\n * returned\r\n * @private\r\n */\r\n private getPreviousOption(): HTMLButtonElement {\r\n let previousOption: HTMLButtonElement = null as any;\r\n\r\n if (this.selectionIndex !== null) {\r\n const optionsArray = this.multiSelectOptions.toArray();\r\n\r\n for (let i = this.selectionIndex - 1; i >= 0; i--) {\r\n const option = optionsArray[i].nativeElement;\r\n\r\n if (!option.disabled) {\r\n this.selectionIndex = i;\r\n previousOption = option;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return previousOption;\r\n }\r\n}\r\n","<ng-container *ngIf=\"type === 'input' || (type === 'expanded' && maxExpandedEntries > 0 && optionCount > maxExpandedEntries) else expanded\">\r\n <div #multiSelect\r\n class=\"row ptl_input ptl_input_height ptl_input_bg_color ptl_brdr_color ptl_brdr_size ptl_brdr_radius ent_r2l_dir\"\r\n [style.filter]=\"disabled ? 'brightness(.95)' : ''\"\r\n style=\"cursor:default;overflow:hidden;\"\r\n [ngClass]=\"classList ? classList : ''\">\r\n <button #multiSelectButton\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n type=\"button\"\r\n (click)=\"openMultiSelect($event)\"\r\n (keyup.escape)=\"onEscapeKeyUp($event)\"\r\n [id]=\"multiSelectId\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-label]=\"text.placeholder\"\r\n [attr.aria-expanded]=\"opened\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n class=\"access btnset clear center_center height100 width100\"\r\n style=\"outline-offset: -2px;\"\r\n >\r\n <ng-container *ngIf=\"collapsedButtonTemplate\">\r\n <ng-container *ngTemplateOutlet=\"collapsedButtonTemplate\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!collapsedButtonTemplate\">\r\n <div class=\"col size_1 height100 width100 v_center ptl_input_text_size ptl_input_padding border_none width100 overflow_hide\">\r\n\r\n <ng-container *ngIf=\"selectionCount$ | async as selectionCount else placeholderTemplate\">\r\n <ng-container *ngIf=\"selectionCount > 1 else singleEntry\">\r\n <div class=\"ptl_input_text_size ent_r2l_txt\">\r\n <span class=\"text bold\">{{selectionCount}}</span> {{text.of}} {{optionCount}} {{text.optionsSelected}}\r\n </div>\r\n </ng-container>\r\n\r\n <ng-template #singleEntry>\r\n <ng-container *ngIf=\"dataContextMap$ | async as dataContextMap\">\r\n <div class=\"col overflow_hide\">\r\n <ng-container *ngIf=\"!!template else noCustomTemplate\">\r\n <div class=\"mar_tb5 pad_tb2\"\r\n *ngFor=\"let value of _internalValue | async\">\r\n <div class=\"ptl_input_text_size ent_r2l_txt\">\r\n <ng-container *ngTemplateOutlet=\"template; context: $any(dataContextMap['' + value])\"></ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-template #noCustomTemplate>\r\n <div class=\"ptl_input_text_size mar_tb5 pad_tb2 ent_r2l_txt\"\r\n *ngFor=\"let value of _internalValue | async\">\r\n {{dataContextMap['' + value]['$implicit'] || dataContextMap['' + value]['label']}}\r\n </div>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #placeholderTemplate>\r\n <div class=\"ptl_placeholder ent_r2l_txt\">{{text.placeholder + '...'}}</div>\r\n </ng-template>\r\n </div>\r\n <div class=\"col min_w50 height100 center_center border_left\"\r\n [ngClass]=\"buttonClassList ? buttonClassList : 'ptl_brdr_color'\">\r\n <div class=\"center_center height100 width100\">\r\n <i class=\"fas fa-caret-down ptl_input_text_size\"></i>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </button>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #expanded>\r\n <ng-container [ngTemplateOutlet]=\"multiSelectOptions\"></ng-container>\r\n</ng-template>\r\n\r\n<div [style.display]=\"render ? '' : 'none'\"\r\n [attr.aria-hidden]=\"!render\"\r\n class=\"particle_multiselect_overlay\">\r\n <div #multiSelectList\r\n [@openClose]=\"opened ? 'open' : 'close'\"\r\n (@openClose.start)=\"onAnimationStart($event)\"\r\n (@openClose.done)=\"onAnimationDone($event)\"\r\n class=\"position_absolute\">\r\n <div class=\"particle_multiselect_options content_color ent_r2l_dir\">\r\n <ng-container [ngTemplateOutlet]=\"multiSelectOptions\"></ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #multiSelectOptions>\r\n <ng-container *ngIf=\"_options | async as options\">\r\n <div class=\"particle_multiselect_list ent_r2l_dir\"\r\n role=\"listbox\"\r\n tabindex=\"-1\"\r\n [attr.aria-label]=\"text.placeholder\"\r\n [ngClass]=\"type === 'expanded' && expandedAsGrid ? 'particle_multi_select_grid' : ''\"\r\n >\r\n <!-- CUSTOM TEMPLATE -->\r\n <ng-container *ngIf=\"!!template else defaultOptionTemplate\">\r\n <ng-container *ngIf=\"selectionValueMap$ | async as selectionValueMap\">\r\n <ng-container *ngFor=\"let option of options; index as i\">\r\n <!-- OPTION GROUP -->\r\n <ng-container *ngIf=\"option.type === 'group' else nonGroupOption\">\r\n <div class=\"particle_multiselect_heading ptl_input_text_size ent_r2l_txt\" aria-hidden=\"true\">{{option.groupLabel}}</div>\r\n <ng-container *ngFor=\"let groupOption of option.options; index as j\">\r\n <button #multiSelectOption\r\n (click)=\"onMultiSelectOptionSelect(groupOption.value, groupOption.disabled!)\"\r\n (mouseenter)=\"onMultiSelectOptionMouseEnter(multiSelectOption, i + j)\"\r\n (mousemove)=\"onMultiSelectOptionMouseMove(multiSelectOption, i + j)\"\r\n (keyup.escape)=\"onEscapeKeyUp($event)\"\r\n [id]=\"multiSelectId + '-' + groupOption.value\"\r\n [ngClass]=\"(!selectionValueMap['' + groupOption.value] ? 'unselected' : '') + (entryClassList ? ' ' + entryClassList : ' particle_multiselect_option')\"\r\n [attr.aria-selected]=\"(_internalValue | async)?.includes(groupOption.value)\"\r\n [attr.data-value]=\"groupOption.value\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n [disabled]=\"groupOption.disabled || disabled\"\r\n class=\"ptl_input_text_size\"\r\n type=\"button\"\r\n role=\"option\" tabindex=\"0\">\r\n <div class=\"particle_multiselect_checkbox ptl_brdr_radius bg_overlay brdr\"\r\n [ngClass]=\"selectionValueMap['' + groupOption.value] ? 'ok_button_color' : 'unselected'\"\r\n aria-hidden=\"true\">\r\n <div *ngIf=\"selectionValueMap['' + groupOption.value]\"><i class=\"fas fa-check ent_r2l_ico\"></i></div>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"template; context: $any(groupOption.dataContext!)\"></ng-container>\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n <!-- SINGULAR OPTION -->\r\n <ng-template #nonGroupOption>\r\n <ng-container *ngIf=\"option.type === 'option'\">\r\n <button #multiSelectOption\r\n (click)=\"onMultiSelectOptionSelect(option.value, option.disabled!)\"\r\n (mouseenter)=\"onMultiSelectOptionMouseEnter(multiSelectOption, i)\"\r\n (mousemove)=\"onMultiSelectOptionMouseMove(multiSelectOption, i)\"\r\n (keyup.escape)=\"onEscapeKeyUp($event)\"\r\n [id]=\"multiSelectId + '-' + option.value\"\r\n [attr.aria-selected]=\"(_internalValue | async)?.includes(option.value)\"\r\n [attr.data-value]=\"option.value\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n [disabled]=\"option.disabled || disabled\"\r\n [ngClass]=\"(!selectionValueMap['' + option.value] ? 'unselected' : '') + (entryClassList ? ' ' + entryClassList : ' particle_multiselect_option')\"\r\n class=\"ptl_input_text_size\"\r\n role=\"option\" type=\"button\" tabindex=\"0\">\r\n <div class=\"particle_multiselect_checkbox ptl_brdr_radius bg_overlay brdr\"\r\n [ngClass]=\"selectionValueMap['' + option.value] ? 'ok_button_color' : 'unselected'\"\r\n aria-hidden=\"true\">\r\n <div *ngIf=\"selectionValueMap['' + option.value]\"><i class=\"fas fa-check\"></i></div>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"template; context: $any(option.dataContext!)\"></ng-container>\r\n </button>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <!-- NO CUSTOM TEMPLATE -->\r\n <ng-template #defaultOptionTemplate>\r\n <ng-container *ngIf=\"selectionValueMap$ | async as selectionValueMap\">\r\n <ng-container *ngFor=\"let option of options; index as i\">\r\n <!-- OPTION GROUP -->\r\n <ng-container *ngIf=\"option.type === 'group' else nonGroupOption\">\r\n <div class=\"particle_multiselect_heading ptl_input_text_size ent_r2l_txt\" aria-hidden=\"true\">{{option.groupLabel}}</div>\r\n <ng-container *ngFor=\"let groupOption of option.options; index as j\">\r\n <button #multiSelectOption\r\n (click)=\"onMultiSelectOptionSelect(groupOption.value, groupOption.disabled!)\"\r\n (mouseenter)=\"onMultiSelectOptionMouseEnter(multiSelectOption, i + j)\"\r\n (mousemove)=\"onMultiSelectOptionMouseMove(multiSelectOption, i + j)\"\r\n (keyup.escape)=\"onEscapeKeyUp($event)\"\r\n [id]=\"multiSelectId + '-' + groupOption.value\"\r\n [attr.aria-label]=\"groupOption.label\"\r\n [attr.aria-selected]=\"(_internalValue | async)?.includes(groupOption.value)\"\r\n [attr.data-value]=\"groupOption.value\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n [disabled]=\"groupOption.disabled || disabled\"\r\n [ngClass]=\"(!selectionValueMap['' + groupOption.value] ? 'unselected' : '') + (entryClassList ? ' ' + entryClassList : ' particle_multiselect_option')\"\r\n class=\"ptl_input_text_size\"\r\n type=\"button\" role=\"option\" tabindex=\"0\">\r\n <div class=\"particle_multiselect_checkbox ptl_brdr_radius bg_overlay brdr\"\r\n [ngClass]=\"selectionValueMap['' + groupOption.value] ? 'ok_button_color' : 'unselected'\"\r\n aria-hidden=\"true\">\r\n <div *ngIf=\"selectionValueMap['' + groupOption.value]\"><i class=\"fas fa-check\"></i></div>\r\n </div>\r\n <div class=\"ent_r2l_txt mar_lr5\">{{groupOption.label}}</div>\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n <!-- SINGULAR OPTION -->\r\n <ng-template #nonGroupOption>\r\n <ng-container *ngIf=\"option.type === 'option'\">\r\n <button #multiSelectOption\r\n (click)=\"onMultiSelectOptionSelect(option.value, option.disabled!)\"\r\n (mouseenter)=\"onMultiSelectOptionMouseEnter(multiSelectOption, i)\"\r\n (mousemove)=\"onMultiSelectOptionMouseMove(multiSelectOption, i)\"\r\n (keyup.escape)=\"onEscapeKeyUp($event)\"\r\n [id]=\"multiSelectId + '-' + option.value\"\r\n [attr.aria-selected]=\"(_internalValue | async)?.includes(option.value)\"\r\n [attr.data-value]=\"option.value\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n [disabled]=\"option.disabled || disabled\"\r\n [ngClass]=\"(!selectionValueMap['' + option.value] ? 'unselected' : '') + (entryClassList ? ' ' + entryClassList : ' particle_multiselect_option')\"\r\n class=\"ptl_input_text_size\"\r\n type=\"button\" role=\"option\" tabindex=\"0\">\r\n <div class=\"particle_multiselect_checkbox ptl_brdr_radius bg_overlay brdr\"\r\n [ngClass]=\"selectionValueMap['' + option.value] ? 'ok_button_color' : 'unselected'\"\r\n aria-hidden=\"true\">\r\n <div *ngIf=\"selectionValueMap['' + option.value]\"><i class=\"fas fa-check\"></i></div>\r\n </div>\r\n <div class=\"ent_r2l_txt mar_lr5\">{{option.label}}</div>\r\n </button>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-content select=\"template\"></ng-content>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MultiSelectComponent } from './multi-select.component';\n\n@NgModule({\n declarations: [MultiSelectComponent],\n imports: [CommonModule],\n exports: [MultiSelectComponent]\n})\nexport class ParticleMultiSelectModule { }\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\r\n\r\n/**\r\n * Directive to apply key filtering to an HTML input element\r\n */\r\n@Directive({\r\n selector: '[particleKeyfilter]'\r\n})\r\nexport class KeyfilterDirective {\r\n\r\n /**\r\n * Array of keyboard key names that are always allowed\r\n * (arrow keys, backspace, delete, tab, escape)\r\n * @private\r\n */\r\n private static readonly ALLOWED_KEYS = [\r\n 'ArrowLeft', 'ArrowUp', 'ArrowRight', 'ArrowDown',\r\n 'Backspace', 'Delete', 'Tab', 'Esc', 'Escape', 'Home', 'End'\r\n ];\r\n\r\n /**\r\n * Array of keyboard alpha key names\r\n * @private\r\n */\r\n private static readonly ALPHA_KEYS = [\r\n 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',\r\n 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',\r\n 'u', 'v', 'w', 'x', 'y', 'z'\r\n ];\r\n\r\n /**\r\n * Array of keyboard alpha key names\r\n * @private\r\n */\r\n private static readonly URL_TOKEN_KEYS = [\r\n 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',\r\n 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',\r\n 'u', 'v', 'w', 'x', 'y', 'z', '-', '0', '1', '2',\r\n '3', '4', '5', '6', '7', '8', '9'\r\n ];\r\n\r\n /**\r\n * The type of filtering to apply\r\n */\r\n @Input('particleKeyfilter')\r\n filterType: 'alpha' | 'numeric' | 'alphanumeric' | 'digits' | 'url-token' = null as any;\r\n\r\n /**\r\n * Whether spaces should be allowed (default false)\r\n */\r\n @Input()\r\n allowSpaces = false;\r\n\r\n /**\r\n * Determine if the input key is numeric (a digit)\r\n * @param key the key to test\r\n * @private\r\n */\r\n private static keyIsNumeric(key: string): boolean {\r\n return new RegExp('^\\\\d|[.-]$', 'g').test(key);\r\n }\r\n\r\n private static keyIsDigit(key: string): boolean {\r\n return new RegExp('^\\\\d$', 'g').test(key);\r\n }\r\n\r\n private static valueIsNumeric(value: string): boolean {\r\n return new RegExp('^(-?\\\\d+\\\\.\\\\d+)$|^(-?\\\\d+)$', 'g').test(value);\r\n }\r\n\r\n /**\r\n * Determine if the input key is an alpha key (a letter of\r\n * the English alphabet)\r\n * @param key the key to test\r\n * @private\r\n */\r\n private static keyIsAlpha(key: string): boolean {\r\n return KeyfilterDirective.ALPHA_KEYS.includes(key.toLowerCase());\r\n }\r\n\r\n private static keyIsUrlToken(key: string): boolean {\r\n return KeyfilterDirective.URL_TOKEN_KEYS.includes(key.toLowerCase());\r\n }\r\n\r\n /**\r\n * Dependency injection site\r\n * @param hostElement\r\n */\r\n constructor(private hostElement: ElementRef<HTMLInputElement>) { }\r\n\r\n /**\r\n * Filter out keys based on the specified filter type\r\n * @param event the keydown KeyboardEvent\r\n */\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown(event: KeyboardEvent): void {\r\n if (this.filterType) {\r\n let preventDefault = true;\r\n const { key } = event;\r\n\r\n if (KeyfilterDirective.ALLOWED_KEYS.includes(key)) {\r\n preventDefault = false;\r\n } else if (this.allowSpaces && key === ' ') {\r\n preventDefault = false;\r\n } else if (this.filterType === 'alpha') {\r\n preventDefault = !KeyfilterDirective.keyIsAlpha(key);\r\n } else if (this.filterType === 'numeric') {\r\n preventDefault = !event.ctrlKey && !KeyfilterDirective.keyIsNumeric(key);\r\n } else if (this.filterType === 'digits') {\r\n preventDefault = !KeyfilterDirective.keyIsDigit(key);\r\n } else if (this.filterType === 'url-token') {\r\n preventDefault = !KeyfilterDirective.keyIsUrlToken(key);\r\n } else if (this.filterType === 'alphanumeric') {\r\n const isNumeric = KeyfilterDirective.keyIsDigit(key);\r\n const isAlpha = KeyfilterDirective.keyIsAlpha(key);\r\n\r\n preventDefault = !(isNumeric || isAlpha);\r\n }\r\n\r\n if (preventDefault) {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Prevent paste if input contains forbidden characters\r\n * @param event the paste ClipboardEvent\r\n */\r\n @HostListener('paste', ['$event'])\r\n onPaste(event: ClipboardEvent): void {\r\n if (this.filterType) {\r\n let clipboardData: DataTransfer = null as any;\r\n\r\n if (event.clipboardData) {\r\n clipboardData = event.clipboardData;\r\n } else if ('clipboardData' in window) {\r\n clipboardData = (window as any).clipboardData.getData('text');\r\n }\r\n\r\n if (clipboardData) {\r\n const pastedText = clipboardData.getData('text');\r\n\r\n for (const char of pastedText.toString()) {\r\n const isSpace = char === ' ';\r\n const isAlpha = KeyfilterDirective.keyIsAlpha(char);\r\n const isNumeric = KeyfilterDirective.keyIsNumeric(char);\r\n const isDigit = KeyfilterDirective.keyIsDigit(char);\r\n const isAlphaNumeric = isAlpha || isDigit;\r\n\r\n const charIsValid = (isSpace && this.allowSpaces) ||\r\n (this.filterType === 'alpha' && isAlpha) ||\r\n (this.filterType === 'numeric' && isNumeric) ||\r\n (this.filterType === 'digits' && isDigit) ||\r\n (this.filterType === 'alphanumeric' && isAlphaNumeric);\r\n\r\n if (!charIsValid) {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n @HostListener('blur')\r\n onBlur(): void {\r\n if (this.filterType === 'numeric' && !KeyfilterDirective.valueIsNumeric(this.hostElement.nativeElement.value)) {\r\n this.hostElement.nativeElement.value = '';\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { KeyfilterDirective } from './keyfilter.directive';\n\n@NgModule({\n declarations: [KeyfilterDirective],\n imports: [CommonModule],\n exports: [KeyfilterDirective]\n})\nexport class ParticleKeyfilterModule { }\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { Notification } from '../models/notification.model';\r\n\r\n/**\r\n * Service for adding/deleting notifications\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NotificationService {\r\n\r\n /**\r\n * Valid characters that a notification ID can be composed from\r\n * @private\r\n */\r\n private static readonly ID_CHARACTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\r\n\r\n /**\r\n * BehaviorSubject tracking an array of active notifications\r\n * @private\r\n */\r\n private readonly _notifications = new BehaviorSubject<Array<Notification>>([]);\r\n\r\n /**\r\n * The number of milliseconds before an added notification automatically removes itself.\r\n * Defaults to 3000 milliseconds\r\n * @private\r\n */\r\n private notificationLife = 3000;\r\n\r\n /**\r\n * Generate a random ID\r\n * @private\r\n */\r\n private static generateId(): string {\r\n let result = '';\r\n\r\n for (let i = 0; i < 10; i++) {\r\n result += this.ID_CHARACTERS.charAt(Math.floor(Math.random() * this.ID_CHARACTERS.length));\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Dependency injection site\r\n */\r\n constructor() { }\r\n\r\n /**\r\n * Add a notification\r\n * @param notification the notification to add\r\n */\r\n add(notification: Notification): void {\r\n notification.id = NotificationService.generateId();\r\n\r\n const notifications = this._notifications.getValue();\r\n notifications.push(notification);\r\n\r\n this._notifications.next(notifications);\r\n\r\n setTimeout(\r\n () => this.deleteNotification(notification.id as string),\r\n this.notificationLife\r\n );\r\n }\r\n\r\n /**\r\n * Delete a notification\r\n * @param id the ID of the notification to delete\r\n */\r\n deleteNotification(id: string): void {\r\n const notifications = this._notifications.getValue();\r\n const foundIndex = notifications.findIndex(notification => notification.id === id);\r\n\r\n if (foundIndex > -1) {\r\n notifications.splice(foundIndex, 1);\r\n }\r\n\r\n this._notifications.next(notifications);\r\n }\r\n\r\n /**\r\n * Get notifications as an Observable\r\n */\r\n getNotifications(): Observable<Array<Notification>> {\r\n return this._notifications.asObservable();\r\n }\r\n\r\n /**\r\n * Set the number of milliseconds before added notifications disappear\r\n * @param milliseconds the number of milliseconds to set\r\n */\r\n setNotificationLife(milliseconds: number): void {\r\n this.notificationLife = milliseconds;\r\n }\r\n}\r\n","import {\r\n animate,\r\n animateChild,\r\n query,\r\n stagger,\r\n style,\r\n transition,\r\n trigger\r\n} from '@angular/animations';\r\nimport {Component, Input} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Notification } from './models/notification.model';\r\nimport { NotificationService } from './services/notification.service';\r\nimport {NotificationText} from '../../shared/models/particle-component-text.model';\r\n\r\n/**\r\n * Component for displaying notifications\r\n */\r\n@Component({\r\n selector: 'particle-notification',\r\n templateUrl: './notification.component.html',\r\n styleUrls: ['./notification.component.css'],\r\n animations: [\r\n // nice stagger effect when showing existing elements\r\n trigger('list', [\r\n transition(':enter', [\r\n // child animation selector + stagger\r\n query(\r\n '@items',\r\n stagger(300, animateChild()),\r\n { optional: true }\r\n )\r\n ]),\r\n ]),\r\n trigger('items', [\r\n // cubic-bezier for a tiny bouncing feel\r\n transition(':enter', [\r\n style({ transform: 'scale(0.5)', opacity: 0 }),\r\n animate('0.65s cubic-bezier(.8,-0.6,0.2,1.5)',\r\n style({ transform: 'scale(1)', opacity: 1 }))\r\n ]),\r\n transition(':leave', [\r\n style({ transform: 'scale(1)', opacity: 1, height: '*' }),\r\n animate('0.65s cubic-bezier(.8,-0.6,0.2,1.5)',\r\n style({\r\n transform: 'scale(0.5)',\r\n opacity: 0,\r\n height: '0px',\r\n marginLeft: '0px',\r\n marginTop: '0px',\r\n marginRight: '0px',\r\n marginBottom: '0px',\r\n paddingLeft: '0px',\r\n paddingTop: '0px',\r\n paddingRight: '0px',\r\n paddingBottom: '0px'\r\n })\r\n )\r\n ]),\r\n ])\r\n ]\r\n})\r\nexport class NotificationComponent {\r\n\r\n /**\r\n * Dependency injection site\r\n * @param service the NotificationService\r\n */\r\n constructor(\r\n private service: NotificationService\r\n ) {\r\n this.notifications$ = service.getNotifications();\r\n }\r\n\r\n @Input()\r\n text: NotificationText = {\r\n dismiss: 'Dismiss'\r\n } as NotificationText;\r\n\r\n /**\r\n * Array of notifications as an Observable\r\n */\r\n readonly notifications$: Observable<Array<Notification>>;\r\n\r\n /**\r\n * Map of notification severity to color class\r\n */\r\n readonly severityColorMap = {\r\n 'success': 'bg_green',\r\n 'warn': 'bg_orange',\r\n 'error': 'bg_red',\r\n 'info': 'bg_purple'\r\n };\r\n\r\n /**\r\n * Map of notification severity to icon class\r\n */\r\n readonly severityIconMap = {\r\n 'success': 'fa-check-circle',\r\n 'warn': 'fa-exclamation-circle',\r\n 'error': 'fa-circle-xmark',\r\n 'info': 'fa-info-circle'\r\n };\r\n\r\n /**\r\n * Delete a notification\r\n * @param id the ID of the notification to delete\r\n */\r\n deleteNotification(id: string): void {\r\n this.service.deleteNotification(id);\r\n }\r\n}\r\n","<!-- TODO: figure out why closing toast that is between others causes jumpy animation -->\r\n\r\n<!-- toast -->\r\n<div class=\"particle_notification_overlay ent_r2l_row\">\r\n <!-- spacer -->\r\n <!-- container -->\r\n <div class=\"row min_w280 pad_right5\" style=\"max-width:400px;\">\r\n <div @list class=\"row_block width100 \">\r\n <!-- item -->\r\n <div *ngFor=\"let notification of notifications$ | async\"\r\n @items\r\n class=\"row ent_r2l_row v_center content_color pad_10 mar_10 shadow ptl_brdr_radius\">\r\n <div class=\"col pad_5\">\r\n <div class=\"circle_36px\" [ngClass]=\"severityColorMap[notification.severity]\">\r\n <i class=\"fas {{severityIconMap[notification.severity]}} fa-lg ent_r2l_ico\"></i>\r\n </div>\r\n </div>\r\n <div class=\"col size_1 pad_5 ent_r2l_dir rc_gap\">\r\n <div class=\"col ptl_brdr_color border_right\"></div>\r\n <div class=\"col\">\r\n <div class=\"row_block width100\">\r\n <div class=\"text lg text_left text_wrap bold ent_r2l_txt\">{{notification.summary}}</div>\r\n <div class=\"text md text_left text_wrap ent_r2l_txt\">{{notification.detail}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col\" style=\"pointer-events: all;\">\r\n <button class=\"access btnset clear\"\r\n [attr.aria-label]=\"text.dismiss\"\r\n (click)=\"deleteNotification($any(notification.id))\">\r\n <div class=\"circle_20px ptl_brdr_color ptl_brdr_size ptl_input_bg_color\">\r\n <i class=\"fas fa-times\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {NotificationComponent} from './notification.component';\r\n\r\n@NgModule({\r\n declarations: [NotificationComponent],\r\n imports: [CommonModule],\r\n exports: [NotificationComponent]\r\n})\r\nexport class ParticleNotificationModule {\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport {\r\n add,\r\n endOfDay,\r\n endOfMonth,\r\n endOfWeek,\r\n getWeek,\r\n isEqual,\r\n isWithinInterval,\r\n setWeek,\r\n startOfWeek,\r\n sub\r\n} from 'date-fns';\r\nimport { BehaviorSubject, Observable, combineLatest, map, shareReplay, withLatestFrom, } from 'rxjs';\r\nimport { PopoverComponent } from '../popover/popover.component';\r\nimport {WeekPickerText} from '../../shared/models/particle-component-text.model';\r\n\r\n/**\r\n * Interface representing a Date broken down by day/date/week/month/year\r\n * with extended metadata\r\n */\r\ndeclare interface MetaDate {\r\n\r\n /**\r\n * The day of the week (starting at 0)\r\n */\r\n day: number;\r\n\r\n /**\r\n * The day of the month (starting at 1)\r\n */\r\n date: number;\r\n\r\n /**\r\n * The week of the year\r\n */\r\n week: number;\r\n\r\n /**\r\n * The month (starting at 0)\r\n */\r\n month: number;\r\n\r\n /**\r\n * The full year\r\n */\r\n year: number;\r\n\r\n /**\r\n * Whether the day is selectable\r\n */\r\n selectable: boolean;\r\n}\r\n\r\n/**\r\n * Interface representing a week of the year with metadata\r\n */\r\ndeclare interface MetaWeek {\r\n\r\n /**\r\n * The week of the year (starting at 1)\r\n */\r\n week: number;\r\n\r\n /**\r\n * The year of the week\r\n */\r\n year: number;\r\n\r\n /**\r\n * Whether the week can be selected in the week picker\r\n */\r\n selectable: boolean;\r\n\r\n /**\r\n * The numeric dates of the days in the week\r\n */\r\n dates: Array<number>;\r\n}\r\n\r\n/**\r\n * Component to allow a user to select a week\r\n */\r\n@Component({\r\n selector: 'particle-week-picker',\r\n templateUrl: './week-picker.component.html',\r\n styleUrls: ['./week-picker.component.css'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => WeekPickerComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class WeekPickerComponent implements ControlValueAccessor {\r\n\r\n /**\r\n * Set the value of the week picker\r\n * @param value the value to set\r\n */\r\n @Input()\r\n set value(value: { start: Date, end: Date }) {\r\n if (value?.start && value?.end) {\r\n const startWeek = getWeek(value.start);\r\n const endWeek = getWeek(value.end);\r\n\r\n if (startWeek !== endWeek) {\r\n throw new Error('Start and end must be part of the same week of the year');\r\n } else if (value.start.getDay() !== 0 || value.end.getDay() !== 6) {\r\n throw new Error('Start must be the beginning of its week and end must be the end of its week');\r\n }\r\n\r\n this._internalValue.next(value);\r\n } else {\r\n this._internalValue.next(null as any);\r\n this._selectedMonth.next(this.currentDate.month);\r\n this._selectedYear.next(this.currentDate.year);\r\n }\r\n\r\n this._value = value as any;\r\n }\r\n\r\n /**\r\n * Set disabled\r\n */\r\n @Input()\r\n set disabled(disabled: boolean) {\r\n this._disabled = disabled;\r\n }\r\n\r\n /**\r\n * Set the valid date boundary for the week picker\r\n * @param dateRange\r\n */\r\n @Input()\r\n set dateRange(dateRange: { start?: Date, end?: Date }) {\r\n this.setSelectionInterval(dateRange);\r\n this.setCurrentDateSelectable();\r\n }\r\n\r\n /**\r\n * Class list to apply to the date range input\r\n */\r\n @Input()\r\n inputClassList = null as any;\r\n\r\n /**\r\n * Class list to apply to the week picker button\r\n */\r\n @Input()\r\n calendarButtonClassList = '';\r\n\r\n /**\r\n * The aria label to apply to the date range input\r\n */\r\n @Input()\r\n ariaLabel = 'Date';\r\n\r\n /**\r\n * Format for the selected date range in the selection preview. Must\r\n * be a valid Angular DatePipe format\r\n */\r\n @Input()\r\n dateFormat = 'MM/dd/y';\r\n\r\n /**\r\n * Close the picker when a selection is made\r\n */\r\n @Input()\r\n closeOnSelect = true;\r\n\r\n @Input()\r\n text: WeekPickerText = {\r\n openCalendar: 'open calendar to select week',\r\n selectWeek: 'Select a week',\r\n selectYear: 'Select a year',\r\n selectMonth: 'Select a month',\r\n january: 'January',\r\n february: 'February',\r\n march: 'March',\r\n april: 'April',\r\n may: 'May',\r\n june: 'June',\r\n july: 'July',\r\n august: 'August',\r\n september: 'September',\r\n october: 'October',\r\n november: 'November',\r\n december: 'December',\r\n sundayAbbr: 'Su',\r\n mondayAbbr: 'Mo',\r\n tuesdayAbbr: 'Tu',\r\n wednesdayAbbr: 'We',\r\n thursdayAbbr: 'Th',\r\n fridayAbbr: 'Fr',\r\n saturdayAbbr: 'Sa',\r\n selectLastWeek: 'Select last week',\r\n lastWeek: 'Last Week',\r\n resetWeekSelection: 'Reset week selection to current week',\r\n selectNextWeek: 'Select next week',\r\n nextWeek: 'Next Week'\r\n } as WeekPickerText;\r\n\r\n /**\r\n * Event emitted on week select\r\n */\r\n @Output()\r\n weekSelected = new EventEmitter<{ start: Date, end: Date }>();\r\n\r\n /**\r\n * ViewChild of the calendar popover\r\n */\r\n @ViewChild('calendarPopover')\r\n calendarPopover: PopoverComponent = null as any;\r\n\r\n /**\r\n * The current date\r\n */\r\n readonly currentDate: MetaDate;\r\n\r\n /**\r\n * BehaviorSubject tracking the value of the week picker\r\n */\r\n readonly _internalValue = new BehaviorSubject<{ start: Date, end: Date }>(null as any);\r\n\r\n /**\r\n * BehaviorSubject tracking the selectable date range\r\n */\r\n readonly _validSelectionInterval = new BehaviorSubject<{ start: Date, end: Date }>(null as any);\r\n\r\n /**\r\n * BehaviorSubject tracking the currently selected month\r\n */\r\n readonly _selectedMonth = new BehaviorSubject(0);\r\n\r\n /**\r\n * BehaviorSubject tracking the currently selected year\r\n */\r\n readonly _selectedYear = new BehaviorSubject(1970);\r\n\r\n /**\r\n * The selected week of the year of the start of the selection as an Observable\r\n */\r\n readonly selectedWeek$: Observable<number> = this._internalValue.pipe(\r\n map(value => {\r\n return !value?.start ? 0 : getWeek(value.start);\r\n }),\r\n shareReplay()\r\n );\r\n\r\n /**\r\n * The year of the start of the selected week as an Observable\r\n */\r\n readonly selectedYear$: Observable<number> = this._internalValue.pipe(\r\n map(value => {\r\n return !value?.start ? 0 : value.start.getFullYear();\r\n }),\r\n shareReplay()\r\n );\r\n\r\n /**\r\n * Observable boolean representing if next week (relative to the current selection) is selectable\r\n */\r\n readonly canSelectNextWeek$: Observable<boolean> = this.selectedWeek$.pipe(\r\n withLatestFrom(this._validSelectionInterval, this._selectedYear),\r\n map(([selectedWeek, selectionInterval, selectedYear]) => {\r\n let canSelect = false;\r\n\r\n if (selectedWeek > 0 && selectionInterval) {\r\n const selectedYearStart = new Date(selectedYear, 0, 1);\r\n const weekDate = setWeek(selectedYearStart, selectedWeek);\r\n const nextWeekDate = add(weekDate, { weeks: 1 });\r\n const nextWeekStartDate = startOfWeek(nextWeekDate);\r\n const nextWeekEndDate = endOfWeek(nextWeekDate);\r\n\r\n canSelect = isWithinInterval(nextWeekStartDate, selectionInterval) &&\r\n isWithinInterval(nextWeekEndDate, selectionInterval);\r\n }\r\n\r\n return canSelect;\r\n })\r\n );\r\n\r\n /**\r\n * Observable boolean representing if last week (relative to the current selection) is selectable\r\n */\r\n readonly canSelectLastWeek$: Observable<boolean> = this.selectedWeek$.pipe(\r\n withLatestFrom(this._validSelectionInterval, this._selectedYear),\r\n map(([selectedWeek, selectionInterval, selectedYear]) => {\r\n let canSelect = false;\r\n\r\n if (selectedWeek > 0 && selectionInterval) {\r\n const selectedYearStart = new Date(selectedYear, 0, 1);\r\n const weekDate = setWeek(selectedYearStart, selectedWeek);\r\n const lastWeekDate = sub(weekDate, { weeks: 1 });\r\n const lastWeekStartDate = startOfWeek(lastWeekDate);\r\n const lastWeekEndDate = endOfWeek(lastWeekDate);\r\n\r\n canSelect = isWithinInterval(lastWeekStartDate, selectionInterval) &&\r\n isWithinInterval(lastWeekEndDate, selectionInterval);\r\n }\r\n\r\n return canSelect;\r\n })\r\n );\r\n\r\n /**\r\n * The range of selectable years as an Observable\r\n */\r\n readonly validYearRange$: Observable<Array<number>> = this._validSelectionInterval.pipe(\r\n map(selectionInterval => WeekPickerComponent.generateYearRange(\r\n selectionInterval?.start?.getFullYear() ?? null,\r\n selectionInterval?.end?.getFullYear() ?? null,\r\n this.currentDate.year\r\n ))\r\n );\r\n\r\n /**\r\n * An array of MetaWeeks representing a month as an Observable\r\n */\r\n readonly fullMonth$: Observable<Array<MetaWeek>> = combineLatest([\r\n this._selectedMonth,\r\n this._selectedYear,\r\n this._validSelectionInterval\r\n ]).pipe(\r\n map(([month, year, selectionInterval]) => {\r\n let fullMonth: Array<MetaWeek> = null as any;\r\n\r\n if (selectionInterval) {\r\n fullMonth = WeekPickerComponent.generateMonth(\r\n month,\r\n year,\r\n {\r\n start: selectionInterval.start,\r\n end: selectionInterval.end\r\n }\r\n );\r\n }\r\n\r\n return fullMonth;\r\n })\r\n );\r\n\r\n /**\r\n * The value of the week picker\r\n * @private\r\n */\r\n private _value = null;\r\n\r\n /**\r\n * Whether the control is disabled\r\n * @private\r\n */\r\n private _disabled = false;\r\n\r\n /**\r\n * Generate an Array of numbers representing the span of years between the input\r\n * @param minYear the start of the range\r\n * @param maxYear the end of the range\r\n * @param currentYear the current year\r\n */\r\n private static generateYearRange(minYear: number, maxYear: number, currentYear: number): Array<number> {\r\n let start: number, end: number;\r\n if (!minYear && maxYear) {\r\n start = maxYear = 50;\r\n end = maxYear;\r\n } else if (minYear && !maxYear) {\r\n start = minYear;\r\n end = minYear + 50;\r\n } else if (minYear && maxYear) {\r\n start = minYear;\r\n end = maxYear;\r\n } else {\r\n start = currentYear - 100;\r\n end = currentYear + 50;\r\n }\r\n\r\n const range: Array<number> = [];\r\n for (let i = start; i <= end; i++) {\r\n range.push(i);\r\n }\r\n\r\n return range;\r\n }\r\n\r\n /**\r\n * Generate a month with week and selectable status metadata\r\n * @param month the month to generate\r\n * @param year the year of the month to generate\r\n * @param selectionInterval the interval representing the\r\n * minimum to the maximum week of the year\r\n * @private\r\n */\r\n private static generateMonth(month: number, year: number, selectionInterval: { start: Date, end: Date }): Array<MetaWeek> {\r\n const metaMonth: Array<MetaWeek> = [];\r\n const startOfMonth = new Date(year, month, 1);\r\n const monthInterval = { start: startOfMonth, end: endOfMonth(startOfMonth) };\r\n let scrollDate = sub(startOfMonth, { days: startOfMonth.getDay() });\r\n\r\n for (let i = 0; i < 6; i++) {\r\n const sundayOfWeek = sub(scrollDate, { days: scrollDate.getDay() });\r\n const saturdayOfWeek = add(scrollDate, { days: 6 - scrollDate.getDay() });\r\n\r\n metaMonth.push({\r\n week: getWeek(scrollDate),\r\n year: sundayOfWeek.getFullYear(),\r\n selectable: (isWithinInterval(sundayOfWeek, monthInterval) ||\r\n isWithinInterval(saturdayOfWeek, monthInterval)) &&\r\n isWithinInterval(sundayOfWeek, selectionInterval) &&\r\n isWithinInterval(saturdayOfWeek, selectionInterval),\r\n dates: []\r\n });\r\n\r\n for (let j = 0; j < 7; j++) {\r\n metaMonth[i].dates.push(scrollDate.getDate());\r\n scrollDate = add(scrollDate, { days: 1 });\r\n }\r\n }\r\n\r\n\r\n return metaMonth;\r\n }\r\n\r\n /**\r\n * Get the input date as a MetaDate\r\n * @param date the date to transform\r\n * @param selectable whether or not the date is selectable\r\n * @private\r\n */\r\n private static getMetaDate(date: Date, selectable = false): MetaDate {\r\n return {\r\n day: date.getDay(),\r\n date: date.getDate(),\r\n week: getWeek(date),\r\n month: date.getMonth(),\r\n year: date.getFullYear(),\r\n selectable: selectable\r\n };\r\n }\r\n\r\n /**\r\n * Function to call on change\r\n */\r\n onChange: (value: any) => void = () => {};\r\n\r\n /**\r\n * Function to call on touch\r\n */\r\n onTouched: () => any = () => {};\r\n\r\n /**\r\n * Dependency injection site\r\n * @param changeDetectorRef the Angular ChangeDetectorRef\r\n */\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n this.currentDate = WeekPickerComponent.getMetaDate(new Date(), false);\r\n }\r\n\r\n /**\r\n * Get the value of the week picker\r\n */\r\n get value(): { start: Date, end: Date } {\r\n return this._value as any;\r\n }\r\n\r\n /**\r\n * Get whether the control is disabled\r\n */\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n /**\r\n * Write value\r\n * @param value the value to write\r\n */\r\n writeValue(value: { start: Date, end: Date }): void {\r\n this.value = value;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Register function on change\r\n * @param fn the function to change\r\n */\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Register function on touch\r\n * @param fn the function to register\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Set disabled state\r\n * @param isDisabled whether or not the control is disabled\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Open the week picker popover\r\n * @param event the event to pass to the popover\r\n */\r\n openCalendar(event: Event): void {\r\n if (!this.disabled) {\r\n const selectionInterval = this._validSelectionInterval.getValue();\r\n if (!selectionInterval) {\r\n this.setSelectionInterval(null as any);\r\n }\r\n\r\n this.setCurrentDateSelectable();\r\n\r\n if (!this.value) {\r\n this._selectedMonth.next(this.currentDate.month);\r\n this._selectedYear.next(this.currentDate.year);\r\n } else {\r\n this._internalValue.next(this.value);\r\n this._selectedMonth.next(this.value.start.getMonth());\r\n this._selectedYear.next(this.value.start.getFullYear());\r\n }\r\n\r\n this.calendarPopover.toggle(event);\r\n }\r\n }\r\n\r\n /**\r\n * Handle week select\r\n * @param week the week of the year\r\n * @param selectable whether or not the week is selectable\r\n */\r\n onWeekSelect(week: number, selectable: boolean): void {\r\n const selectedYear = this._selectedYear.getValue();\r\n\r\n if (selectable) {\r\n const weekDate = setWeek(new Date(selectedYear, 0, 1), week);\r\n const weekStart = startOfWeek(weekDate);\r\n const weekEnd = endOfDay(endOfWeek(weekDate));\r\n const selectedWeek = { start: weekStart, end: weekEnd };\r\n\r\n this.updateModel(selectedWeek);\r\n\r\n if (this.closeOnSelect) {\r\n setTimeout(() => this.calendarPopover.close(), 200);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Select next week (relative to the week of the current selection)\r\n */\r\n selectNextWeek(): void {\r\n const nextWeekDate = add(this.value.start, { weeks: 1 });\r\n const nextWeekStart = startOfWeek(nextWeekDate);\r\n const nextWeekEnd = endOfDay(endOfWeek(nextWeekDate));\r\n const currentMonth = this.value.start.getMonth();\r\n const selectedWeek = { start: nextWeekStart, end: nextWeekEnd };\r\n\r\n this.updateModel(selectedWeek);\r\n\r\n if (nextWeekStart.getMonth() !== currentMonth) {\r\n this._selectedMonth.next(nextWeekStart.getMonth());\r\n this._selectedYear.next(nextWeekStart.getFullYear());\r\n }\r\n }\r\n\r\n /**\r\n * Select last week (relative to the week of the current selection)\r\n */\r\n selectLastWeek(): void {\r\n const lastWeekDate = sub(this.value.start, { weeks: 1 });\r\n const lastWeekStart = startOfWeek(lastWeekDate);\r\n const lastWeekEnd = endOfDay(endOfWeek(lastWeekDate));\r\n const currentMonth = this.value.end.getMonth();\r\n const selectedWeek = { start: lastWeekStart, end: lastWeekEnd };\r\n\r\n this.updateModel(selectedWeek);\r\n\r\n if (lastWeekEnd.getMonth() !== currentMonth) {\r\n this._selectedMonth.next(lastWeekStart.getMonth());\r\n this._selectedYear.next(lastWeekStart.getFullYear());\r\n }\r\n }\r\n\r\n /**\r\n * Select the current week\r\n */\r\n selectCurrentWeek(): void {\r\n const thisWeekDate = new Date(this.currentDate.year, this.currentDate.month, this.currentDate.date);\r\n const thisWeekStart = startOfWeek(thisWeekDate);\r\n const thisWeekEnd = endOfDay(endOfWeek(thisWeekDate));\r\n\r\n this.updateModel({ start: thisWeekStart, end: thisWeekEnd });\r\n\r\n this._selectedMonth.next(this.currentDate.month);\r\n this._selectedYear.next(this.currentDate.year);\r\n }\r\n\r\n /**\r\n * Update model\r\n * @param value the new value of the model\r\n * @private\r\n */\r\n private updateModel(value: { start: Date, end: Date }): void {\r\n const valueBeforeUpdate = this.value;\r\n\r\n if (!this.disabled) {\r\n this.value = value;\r\n\r\n if (!isEqual(valueBeforeUpdate.start, this.value.start) &&\r\n !isEqual(valueBeforeUpdate.end, this.value.end)) {\r\n this.onChange(this.value);\r\n this.weekSelected.emit(this.value);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Set the selection interval\r\n * @param interval the input selection interval\r\n * @private\r\n */\r\n private setSelectionInterval(interval: { start?: Date, end?: Date }): void {\r\n if (!interval) {\r\n throw new Error('Start date must be less than end date');\r\n }\r\n\r\n if ((interval as any)?.start > (interval as any)?.end) {\r\n throw new Error('Start date must be less than end date');\r\n }\r\n\r\n this._validSelectionInterval.next({\r\n start: (interval as any)?.start ?? new Date(this.currentDate.year - 100, 0, 1),\r\n end: (interval as any)?.end ?? new Date(this.currentDate.year + 50, 11, 31)\r\n });\r\n }\r\n\r\n /**\r\n * Set the selectable status of the current date\r\n * @private\r\n */\r\n private setCurrentDateSelectable(): void {\r\n const today = new Date();\r\n const selectionInterval = this._validSelectionInterval.getValue();\r\n const startOfCurrentWeek = sub(today, { days: this.currentDate.day });\r\n const endOfCurrentWeek = add(today, { days: 6 - this.currentDate.day });\r\n\r\n this.currentDate.selectable = isWithinInterval(startOfCurrentWeek, selectionInterval) &&\r\n isWithinInterval(endOfCurrentWeek, selectionInterval);\r\n }\r\n}\r\n","<div style=\"cursor:default;overflow: hidden;\"\r\n [ngClass]=\"inputClassList ? '' : 'row ptl_input ptl_input_height ptl_input_bg_color ptl_brdr_color ptl_brdr_size ptl_brdr_radius ent_r2l_dir'\"\r\n [style.filter]=\"disabled ? 'brightness(.95)' : ''\">\r\n <button (click)=\"openCalendar($event)\"\r\n aria-haspopup=\"dialog\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-label]=\"ariaLabel + ', ' + text.openCalendar\"\r\n [attr.aria-expanded]=\"calendarPopover.visible\"\r\n [ngClass]=\"inputClassList ? inputClassList : 'clear'\"\r\n type=\"button\"\r\n class=\"access btnset width100 height100 center_center\"\r\n style=\"outline-offset: -2px;\"\r\n >\r\n <div class=\"col size_1 height100 width100 ptl_input_text_size ptl_input_padding v_center\">\r\n <ng-container *ngIf=\"_internalValue | async as internalValue else placeholderTemplate\">\r\n {{internalValue.start | date: dateFormat}} - {{internalValue.end | date: dateFormat}}\r\n </ng-container>\r\n <ng-template #placeholderTemplate>\r\n <div class=\"ent_r2l_txt\">{{text.selectWeek}}...</div>\r\n </ng-template>\r\n </div>\r\n <div class=\"col min_w50 height100 center_center border_left\"\r\n [ngClass]=\"calendarButtonClassList ? calendarButtonClassList : 'bg_overlay ptl_brdr_color'\">\r\n <div class=\"width100 height100 center_center\">\r\n <i class=\"fas fa-calendar-week ptl_input_text_size\"></i>\r\n </div>\r\n </div>\r\n </button>\r\n</div>\r\n\r\n\r\n<!-- week picker input\r\n<div class=\"wwp_container\" style=\"cursor:default;\"\r\n [ngClass]=\"inputClassList\"\r\n [style.filter]=\"disabled ? 'brightness(.95)' : ''\">\r\n\r\n <button (click)=\"openCalendar($event)\"\r\n aria-haspopup=\"dialog\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-label]=\"ariaLabel + ', ' + text.openCalendar\"\r\n [attr.aria-expanded]=\"calendarPopover.visible\"\r\n class=\"access content_color wwp_input\">\r\n <ng-container *ngIf=\"_internalValue | async as internalValue else placeholderTemplate\">\r\n {{internalValue.start | date: dateFormat}} - {{internalValue.end | date: dateFormat}}\r\n </ng-container>\r\n <ng-template #placeholderTemplate>\r\n <div class=\"wwp_placeholder\">{{text.selectWeek}}...</div>\r\n </ng-template>\r\n </button>\r\n <div class=\"wwp_button\" [ngClass]=\"calendarButtonClassList\">\r\n <i class=\"fas fa-calendar-week\"></i>\r\n </div>\r\n</div>\r\n-->\r\n<!-- TODO: instead of offset 1, attach to wwp_container -->\r\n<!-- calendar widget -->\r\n<particle-popover [offset]=\"1\" #calendarPopover>\r\n <!-- month / year select -->\r\n <div class=\"wwp_options\">\r\n <div class=\"content_color pad_5 pad_bot0\">\r\n <div class=\"row space_between\">\r\n <div class=\"col size_1 mar_5\">\r\n <select #yearSelect\r\n [ngModel]=\"_selectedYear | async\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n (change)=\"_selectedYear.next(+yearSelect.value)\"\r\n class=\"access input sm content_color\"\r\n [attr.aria-label]=\"text.selectYear\">\r\n <option *ngFor=\"let year of validYearRange$ | async\"\r\n [value]=\"year\">\r\n {{year}}\r\n </option>\r\n </select>\r\n </div>\r\n <div class=\"col size_2 mar_5\">\r\n <select #monthSelect\r\n [ngModel]=\"_selectedMonth | async\"\r\n (change)=\"_selectedMonth.next(+monthSelect.value)\"\r\n class=\"access input sm content_color\"\r\n [attr.aria-label]=\"text.selectMonth\">\r\n <option value=\"0\">{{text.january}}</option>\r\n <option value=\"1\">{{text.february}}</option>\r\n <option value=\"2\">{{text.march}}</option>\r\n <option value=\"3\">{{text.april}}</option>\r\n <option value=\"4\">{{text.may}}</option>\r\n <option value=\"5\">{{text.june}}</option>\r\n <option value=\"6\">{{text.july}}</option>\r\n <option value=\"7\">{{text.august}}</option>\r\n <option value=\"8\">{{text.september}}</option>\r\n <option value=\"9\">{{text.october}}</option>\r\n <option value=\"10\">{{text.november}}</option>\r\n <option value=\"11\">{{text.december}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"content_color pad_5\">\r\n <!-- weekdays -->\r\n <div class=\"mar_5 mar_bot10\">\r\n <div class=\"row wrap space_between ptl_input_bg_color ptl_brdr_color border_bottom brad_3 mar_bot5\">\r\n <div class=\"wwp_weekday\">{{text.sundayAbbr}}</div>\r\n <div class=\"wwp_weekday\">{{text.mondayAbbr}}</div>\r\n <div class=\"wwp_weekday\">{{text.tuesdayAbbr}}</div>\r\n <div class=\"wwp_weekday\">{{text.wednesdayAbbr}}</div>\r\n <div class=\"wwp_weekday\">{{text.thursdayAbbr}}</div>\r\n <div class=\"wwp_weekday\">{{text.fridayAbbr}}</div>\r\n <div class=\"wwp_weekday\">{{text.saturdayAbbr}}</div>\r\n </div>\r\n <!-- days -->\r\n <ng-container *ngIf=\"fullMonth$ | async as fullMonth\">\r\n <ng-container *ngFor=\"let week of fullMonth\">\r\n <div class=\"wwp_week\"\r\n [ngClass]=\"{ 'currentWeek': week.week === currentDate.week && week.year === currentDate.year }\">\r\n <button (click)=\"onWeekSelect(week.week, week.selectable)\"\r\n [disabled]=\"!week.selectable\"\r\n [ngClass]=\"((selectedWeek$ | async) === week.week) && ((selectedYear$ | async) === week.year)\r\n ? 'ok_button_color'\r\n : 'bg_overlay_rev brdr hov_bg'\"\r\n class=\"access wwp_week_btn\">\r\n <ng-container *ngFor=\"let date of week.dates\">\r\n <div class=\"wwp_day\">\r\n {{date}}\r\n </div>\r\n </ng-container>\r\n </button>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"bg_overlay brdr hr mar_5\"></div>\r\n <div class=\"row space_between\">\r\n <button *ngIf=\"canSelectLastWeek$ | async else disabledLastWeekButton\"\r\n (click)=\"selectLastWeek()\"\r\n class=\"access btn sm bg_overlay_rev brdr mar_5 hov_bg\"\r\n [attr.aria-label]=\"text.selectLastWeek\">\r\n <i class=\"fas fa-chevron-left mar_right5\"></i><span class=\"text bold\">{{text.lastWeek}}</span>\r\n </button>\r\n <ng-template #disabledLastWeekButton>\r\n <button disabled\r\n class=\"access btn sm mar_5\"\r\n [attr.aria-label]=\"text.selectLastWeek\">\r\n <i class=\"fas fa-chevron-left mar_right5\"></i><span class=\"text bold\">{{text.lastWeek}}</span>\r\n </button>\r\n </ng-template>\r\n <ng-container *ngIf=\"currentDate.selectable\">\r\n <button *ngIf=\"((selectedWeek$ | async) === currentDate.week) && ((selectedYear$ | async) === currentDate.year) else selectCurrentWeekButton\"\r\n disabled\r\n class=\"access btn sm mar_5\"\r\n [attr.aria-label]=\"text.resetWeekSelection\">\r\n <i class=\"fas fa-undo-alt\"></i>\r\n </button>\r\n <ng-template #selectCurrentWeekButton>\r\n <button (click)=\"selectCurrentWeek()\"\r\n particleTooltip=\"Reset to Current Week\"\r\n class=\"access btn sm bg_overlay_rev brdr hov_bg mar_5\"\r\n [attr.aria-label]=\"text.resetWeekSelection\">\r\n <i class=\"fas fa-undo-alt\"></i>\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n <button\r\n *ngIf=\"canSelectNextWeek$ | async else disabledNextWeekButton\"\r\n (click)=\"selectNextWeek()\"\r\n class=\"access btn sm bg_overlay_rev brdr mar_5 hov_bg\"\r\n [attr.aria-label]=\"text.selectNextWeek\">\r\n <span class=\"text bold\">{{text.nextWeek}}</span><i class=\"fas fa-chevron-right mar_left5\"></i>\r\n </button>\r\n <ng-template #disabledNextWeekButton>\r\n <button disabled\r\n class=\"access btn sm mar_5\"\r\n [attr.aria-label]=\"text.selectNextWeek\">\r\n <span class=\"text bold\">{{text.nextWeek}}</span><i class=\"fas fa-chevron-right mar_left5\"></i>\r\n </button>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n</particle-popover>\r\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ParticleOrdinalNumberPipeModule } from '../ordinal-number-pipe/ordinal-number-pipe.module';\nimport { ParticlePopoverModule } from '../popover/popover.module';\nimport { WeekPickerComponent } from './week-picker.component';\nimport {ParticleTooltipModule} from '../tooltip/tooltip.module';\n\n@NgModule({\n declarations: [WeekPickerComponent],\n imports: [\n CommonModule,\n ParticleOrdinalNumberPipeModule,\n FormsModule,\n A11yModule,\n ParticlePopoverModule,\n ParticleTooltipModule\n ],\n exports: [WeekPickerComponent]\n})\nexport class ParticleWeekPickerModule { }\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n OnInit,\r\n Output,\r\n Renderer2,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport {ColorPickerText} from '../../shared/models/particle-component-text.model';\r\n\r\n/**\r\n * Component that wraps the native HTML5 color picker for supported browsers\r\n */\r\n@Component({\r\n selector: 'particle-color-picker',\r\n templateUrl: './color-picker.component.html',\r\n styleUrls: ['./color-picker.component.css'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ColorPickerComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class ColorPickerComponent implements ControlValueAccessor, OnInit {\r\n\r\n /**\r\n * Regex to match a hexadecimal string (000000)\r\n * @private\r\n */\r\n private static readonly FULL_HEX_REGEX = new RegExp('^[0-9A-Fa-f]{6}$');\r\n\r\n /**\r\n * Regex to match a short hexadecimal string (000)\r\n * @private\r\n */\r\n private static readonly SHORT_HEX_REGEX = new RegExp('^[0-9A-Fa-f]{3}$');\r\n\r\n /**\r\n * Regex to match a valid hex character (A-F, a-f, 0-9)\r\n * @private\r\n */\r\n private static readonly HEX_CHARACTER_REGEX = new RegExp('^[0-9A-Fa-f]$');\r\n\r\n /**\r\n * Navigation keys\r\n * @private\r\n */\r\n private static readonly NAVIGATION_KEYS = [\r\n 'Enter', 'Esc', 'Escape', 'Tab', 'Shift',\r\n 'ArrowLeft', 'ArrowUp', 'ArrowRight', 'ArrowDown',\r\n 'Backspace', 'Delete'\r\n ];\r\n\r\n /**\r\n * Set the value of the color picker\r\n * @param value the value to set\r\n */\r\n @Input()\r\n set value(value: string) {\r\n let hexString = value ?? '';\r\n\r\n if (hexString) {\r\n ColorPickerComponent.FULL_HEX_REGEX.lastIndex = 0;\r\n ColorPickerComponent.SHORT_HEX_REGEX.lastIndex = 0;\r\n\r\n hexString = hexString.replace('#', '').toLowerCase();\r\n\r\n if (ColorPickerComponent.SHORT_HEX_REGEX.test(hexString)) {\r\n hexString = ColorPickerComponent.expandShortHexString(hexString);\r\n }\r\n\r\n if (!ColorPickerComponent.FULL_HEX_REGEX.test(hexString)) {\r\n hexString = '';\r\n }\r\n }\r\n\r\n this._value = hexString;\r\n\r\n if (this.colorInput) {\r\n this.colorInput.nativeElement.value = this._value;\r\n }\r\n }\r\n\r\n /**\r\n * Set disabled\r\n * @param disabled whether or not the control should be disabled\r\n */\r\n @Input()\r\n set disabled(disabled: boolean) {\r\n this._disabled = disabled;\r\n }\r\n\r\n /**\r\n * Class list to apply to the hex string input\r\n */\r\n @Input()\r\n classList: string = null as any;\r\n\r\n @Input()\r\n text: ColorPickerText = {\r\n chooseColor: 'Choose a Color',\r\n enterHexCode: 'Enter a Hex Code'\r\n } as ColorPickerText;\r\n\r\n /**\r\n * Event emitted on hex string input event. Emits the current value of the input\r\n */\r\n @Output()\r\n // eslint-disable-next-line @angular-eslint/no-output-native\r\n input = new EventEmitter<string>();\r\n\r\n /**\r\n * Event emitted on color selection from color picker (color picker widget dismissed)\r\n * or valid hex string typed in input. Emits the current value of the input\r\n */\r\n @Output()\r\n colorSelected = new EventEmitter<string>();\r\n\r\n /**\r\n * ViewChild of the color input element\r\n */\r\n @ViewChild('colorInput')\r\n colorInput: ElementRef<HTMLInputElement> = null as any;\r\n\r\n /**\r\n * Whether to render the component\r\n */\r\n render: boolean = false;\r\n\r\n /**\r\n * Whether the native HTML5 color picker is supported\r\n */\r\n colorPickerSupported: boolean = false;\r\n\r\n /**\r\n * The value of the color picker\r\n */\r\n _value = '';\r\n\r\n /**\r\n * Whether the color picker is disabled\r\n * @private\r\n */\r\n _disabled = false;\r\n\r\n /**\r\n * Expand a short hex string (#abc) into its full form (#aabbcc)\r\n * @param hexString the short hex string to expand\r\n * @private\r\n */\r\n private static expandShortHexString(hexString: string): string {\r\n let fullHexString = '';\r\n\r\n for (let i = 0; i <= 2; i++) {\r\n fullHexString += `${hexString[i]}${hexString[i]}`;\r\n }\r\n\r\n return fullHexString;\r\n }\r\n\r\n /**\r\n * Function to call on change\r\n */\r\n onChange: (value: any) => void = () => {};\r\n\r\n /**\r\n * Function to call on touch\r\n */\r\n onTouched: () => any = () => {};\r\n\r\n /**\r\n * Dependency injection site\r\n * @param renderer the Angular renderer\r\n * @param changeDetectorRef the Angular ChangeDetectorRef\r\n */\r\n constructor(private renderer: Renderer2, private changeDetectorRef: ChangeDetectorRef) { }\r\n\r\n /**\r\n * Init component, check for color picker browser support\r\n */\r\n ngOnInit(): void {\r\n this.colorPickerSupported = this.isColorPickerSupported();\r\n this.render = true;\r\n }\r\n\r\n /**\r\n * Write value\r\n * @param value the value to write\r\n */\r\n writeValue(value: string): void {\r\n this.value = value;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Register on change function\r\n * @param fn the function to register\r\n */\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Register on touched function\r\n * @param fn the function to register\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Set whether the control should be disabled\r\n * @param isDisabled disabled or not\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Prevent illegal input\r\n * @param event the keydown KeyboardEvent\r\n */\r\n handleKeyDown(event: KeyboardEvent): void {\r\n const { key } = event;\r\n const { selectionStart, selectionEnd, value } = event.target as HTMLInputElement;\r\n\r\n if (!ColorPickerComponent.NAVIGATION_KEYS.includes(key) && !event.ctrlKey) {\r\n ColorPickerComponent.HEX_CHARACTER_REGEX.lastIndex = 0;\r\n\r\n const preventDefault = !ColorPickerComponent.HEX_CHARACTER_REGEX.test(key) ||\r\n (value.length >= 6 && (selectionStart === selectionEnd));\r\n\r\n if (preventDefault) {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Update model\r\n * @param value the new value of the model\r\n * @param emitColorSelected whether or not emit the color selected event\r\n * @private\r\n */\r\n updateModel(value: string, emitColorSelected = false): void {\r\n ColorPickerComponent.FULL_HEX_REGEX.lastIndex = 0;\r\n let updateValue = value;\r\n\r\n if (updateValue) {\r\n updateValue = updateValue.replace('#', '');\r\n }\r\n\r\n if (!this._disabled && ColorPickerComponent.FULL_HEX_REGEX.test(updateValue)) {\r\n const valueBeforeUpdate = this._value;\r\n this.value = updateValue;\r\n\r\n if (valueBeforeUpdate !== this._value) {\r\n this.onChange(`#${updateValue}`);\r\n\r\n if (emitColorSelected) {\r\n this.colorSelected.emit(`#${updateValue}`);\r\n }\r\n }\r\n } else if (!value) {\r\n this.value = null as any;\r\n this.onChange(null);\r\n }\r\n }\r\n\r\n /**\r\n * Null out value on blur if not valid hex string, otherwise update model\r\n * @param value the value to check\r\n */\r\n handleBlur(value: string): void {\r\n ColorPickerComponent.SHORT_HEX_REGEX.lastIndex = 0;\r\n ColorPickerComponent.FULL_HEX_REGEX.lastIndex = 0;\r\n\r\n if (ColorPickerComponent.SHORT_HEX_REGEX.test(value)) {\r\n this.updateModel(ColorPickerComponent.expandShortHexString(value), true);\r\n } else if (ColorPickerComponent.FULL_HEX_REGEX.test(value)) {\r\n this.updateModel(value, true);\r\n } else {\r\n this.value = null as any;\r\n this.onChange(null);\r\n }\r\n }\r\n\r\n /**\r\n * Prevent pasting a non-hex string\r\n * @param event the paste ClipboardEvent\r\n */\r\n handlePaste(event: ClipboardEvent): void {\r\n event.preventDefault();\r\n\r\n if (!this._disabled) {\r\n let clipboardData: DataTransfer = null as any;\r\n\r\n if (event.clipboardData) {\r\n clipboardData = event.clipboardData;\r\n } else if ('clipboardData' in window) {\r\n clipboardData = (window as any).clipboardData.getData('text');\r\n }\r\n\r\n if (clipboardData) {\r\n ColorPickerComponent.FULL_HEX_REGEX.lastIndex = 0;\r\n const pastedText = clipboardData.getData('text')\r\n .replace('#', '');\r\n\r\n if (ColorPickerComponent.FULL_HEX_REGEX.test(pastedText)) {\r\n this.updateModel(pastedText);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Determine if the browser supports the HTML5 color picker\r\n * @private\r\n */\r\n private isColorPickerSupported(): boolean {\r\n let colorPickerSupported = false;\r\n\r\n try {\r\n const inputElement: HTMLInputElement = this.renderer.createElement('input');\r\n inputElement.type = 'color';\r\n inputElement.value = '!';\r\n\r\n colorPickerSupported = inputElement.type === 'color' && inputElement.value !== '!';\r\n } catch (e) { }\r\n\r\n return colorPickerSupported;\r\n }\r\n}\r\n","<div *ngIf=\"render\" [style.filter]=\"_disabled ? 'brightness(.95)' : ''\"\r\n class=\"cp_container\"\r\n [ngClass]=\"classList ? classList : 'input md bg_overlay brdr content_color'\">\r\n <ng-container *ngIf=\"colorPickerSupported else colorSwatch\">\r\n <input #colorPicker\r\n type=\"color\"\r\n class=\"access cp_color\"\r\n [value]=\"'#' + _value\"\r\n [disabled]=\"_disabled\"\r\n [attr.aria-label]=\"text.chooseColor\"\r\n (input)=\"updateModel(colorPicker.value)\"\r\n (change)=\"updateModel(colorPicker.value); colorSelected.emit(colorPicker.value)\" />\r\n <i class=\"fas fa-caret-down cp_caret\"></i>\r\n </ng-container>\r\n <ng-template #colorSwatch>\r\n <div class=\"cp_swatch\">\r\n <div class=\"width100 height100 bg_overlay brdr\" style=\"border-radius:inherit;\"\r\n [style.background-color]=\"'#' + (_value || '000000')\"></div>\r\n </div>\r\n </ng-template>\r\n <div class=\"bg_overlay brdr vr cp_divider\"></div>\r\n <div class=\"cp_hashtag\">#</div>\r\n <input #colorInput\r\n type=\"text\"\r\n class=\"access cp_input\"\r\n placeholder=\"000000\"\r\n maxlength=\"6\"\r\n [attr.aria-label]=\"text.enterHexCode\"\r\n [ngModel]=\"_value\"\r\n [disabled]=\"_disabled\"\r\n (input)=\"input.emit(colorInput.value)\"\r\n (paste)=\"handlePaste($event)\"\r\n (keydown)=\"handleKeyDown($event)\"\r\n (ngModelChange)=\"updateModel($event, true)\"\r\n (blur)=\"handleBlur(colorInput.value)\" />\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ColorPickerComponent } from './color-picker.component';\n\n@NgModule({\n declarations: [ColorPickerComponent],\n imports: [CommonModule, FormsModule],\n exports: [ColorPickerComponent]\n})\nexport class ParticleColorPickerModule { }\n","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport {SliderText} from '../../shared/models/particle-component-text.model';\r\n\r\n/**\r\n * Component that wraps the native HTML5 slider\r\n */\r\n@Component({\r\n selector: 'particle-slider',\r\n templateUrl: './slider.component.html',\r\n styleUrls: ['./slider.component.css'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SliderComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class SliderComponent implements ControlValueAccessor, OnInit {\r\n\r\n /**\r\n * ViewChild of the slider input\r\n */\r\n @ViewChild('sliderInput')\r\n sliderInput: ElementRef<HTMLInputElement> = null as any;\r\n\r\n /**\r\n * Set the value of the component\r\n * @param value the value to set\r\n */\r\n @Input()\r\n set value(value: number) {\r\n this._value = value;\r\n this.setSliderWidth();\r\n }\r\n\r\n /**\r\n * Set the minimum slider value\r\n * @param min the value to set\r\n */\r\n @Input()\r\n set min(min: number) {\r\n this._min = isNaN(min) ? 0 : min;\r\n }\r\n\r\n /**\r\n * Set the maximum slider value\r\n * @param max the value to set\r\n */\r\n @Input()\r\n set max(max: number) {\r\n this._max = isNaN(max) ? 100 : max;\r\n }\r\n\r\n /**\r\n * Set the slider step size\r\n * @param step the value to set\r\n */\r\n @Input()\r\n set step(step: number) {\r\n this._step = isNaN(step) ? 1 : step;\r\n }\r\n\r\n /**\r\n * Set the disabled state of the slider/input\r\n * @param disabled the value to set\r\n */\r\n @Input()\r\n set disabled(disabled: boolean) {\r\n this._disabled = disabled;\r\n }\r\n\r\n /**\r\n * Set the input class list\r\n * @param inputClassList the value to set\r\n */\r\n @Input()\r\n set inputClassList(inputClassList: string) {\r\n this._inputClassList = inputClassList ? inputClassList : 'access input sm';\r\n }\r\n\r\n /**\r\n * The unit being represented by the slider\r\n */\r\n @Input()\r\n unit: string = null as any;\r\n\r\n /**\r\n * The aria-label to append to the slider/input\r\n */\r\n @Input()\r\n ariaLabel: string = null as any;\r\n\r\n @Input()\r\n text: SliderText = {\r\n selectAValue: 'Select a value',\r\n enterAValue: 'Enter a value'\r\n } as SliderText;\r\n\r\n /**\r\n * Event emitted on slider/slider input input event\r\n */\r\n @Output()\r\n // eslint-disable-next-line @angular-eslint/no-output-native\r\n input = new EventEmitter<number>();\r\n\r\n /**\r\n * The internal value of the component\r\n */\r\n _value: number = null as any;\r\n\r\n /**\r\n * The minimum slider value\r\n */\r\n _min = 0;\r\n\r\n /**\r\n * The maximum slider value\r\n */\r\n _max = 100;\r\n\r\n /**\r\n * The step size of the slider\r\n */\r\n _step = 1;\r\n\r\n /**\r\n * Whether the slider is disabled or not\r\n */\r\n _disabled: boolean = false;\r\n\r\n /**\r\n * The class list to apply to the number input\r\n */\r\n _inputClassList = 'access ptl_input ptl_input_height ptl_input_text_size ptl_input_padding ptl_input_bg_color ptl_brdr_color ptl_brdr_size ptl_brdr_radius';\r\n\r\n /**\r\n * The width of the colored section of the slider bar\r\n */\r\n sliderWidth = 0;\r\n\r\n /**\r\n * Function to call on change\r\n */\r\n onChange: (value: any) => void = () => {};\r\n\r\n /**\r\n * Function to call on touch\r\n */\r\n onTouched: () => any = () => {};\r\n\r\n /**\r\n * Dependency injection site\r\n * @param changeDetectorRef the Angular ChangeDetectorRef\r\n */\r\n constructor(private changeDetectorRef: ChangeDetectorRef) { }\r\n\r\n /**\r\n * Get the value of the component\r\n */\r\n get value(): number {\r\n return this._value;\r\n }\r\n\r\n /**\r\n * Init component\r\n */\r\n ngOnInit(): void {\r\n if (isNaN(this.value)) {\r\n this.value = isNaN(this._min) ? 0 : this._min;\r\n }\r\n }\r\n\r\n /**\r\n * Set internal value when external value changes\r\n * @param value the external value\r\n */\r\n writeValue(value: number): void {\r\n this.value = value;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Register onChange function\r\n * @param fn the function to register\r\n */\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Register onTouched function\r\n * @param fn the function to register\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Set the disabled state of the component\r\n * @param isDisabled disabled or not\r\n */\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Update value on input\r\n * @param value the new value of the component\r\n */\r\n handleInput(value: number): void {\r\n if (!this._disabled) {\r\n let valueToSet: number;\r\n\r\n if (isNaN(value) || value < this._min) {\r\n valueToSet = this._min;\r\n } else {\r\n valueToSet = Math.min(this._max, value);\r\n }\r\n\r\n if (this.value !== valueToSet) {\r\n this.value = valueToSet;\r\n this.sliderInput.nativeElement.value = String(valueToSet);\r\n this.onChange(valueToSet);\r\n } else {\r\n this.sliderInput.nativeElement.value = String(valueToSet);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Prevent the paste event from completing\r\n * @param event the paste ClipboardEvent\r\n */\r\n preventPaste(event: ClipboardEvent): void {\r\n event.preventDefault();\r\n }\r\n\r\n /**\r\n * Set the slider width\r\n * @private\r\n */\r\n private setSliderWidth(): void {\r\n this.sliderWidth = Math.min(100, (this.value - this._min)/(this._max - this._min) * 100);\r\n }\r\n}\r\n","<div class=\"row wrap v_center\">\r\n <!-- range slider -->\r\n <div class=\"col size_1 min_w100 v_center position_relative\" style=\"margin:0 12px 0 -3px;\">\r\n <div class=\"ws_track_container v_center position_absolute\">\r\n <div class=\"ws_track bg_overlay_rev brdr width100 position_absolute\"></div>\r\n <div class=\"ws_track_fill ok_button_color position_absolute\"\r\n [style.width]=\"sliderWidth + '%'\">\r\n </div>\r\n </div>\r\n <input #slider\r\n type=\"range\"\r\n [ngModel]=\"_value\"\r\n [min]=\"_min\" [max]=\"_max\" [step]=\"_step\"\r\n [disabled]=\"_disabled\"\r\n [attr.aria-label]=\"text.selectAValue + (ariaLabel ? ' - ' + ariaLabel : '')\"\r\n (input)=\"handleInput(+slider.value); input.emit(+slider.value)\"\r\n (change)=\"handleInput(+slider.value); input.emit(+slider.value)\"\r\n class=\"access\" style=\"width:100%; z-index: var(--z-frame); margin:10px 0;\" />\r\n </div>\r\n <div class=\"col v_center\">\r\n <!-- slider value input -->\r\n <input #sliderInput\r\n type=\"number\"\r\n [ngModel]=\"_value\"\r\n [ngClass]=\"_inputClassList\"\r\n [min]=\"_min\" [max]=\"_max\" [step]=\"_step\"\r\n [size]=\"(_max + '').length\"\r\n [disabled]=\"_disabled\"\r\n [attr.aria-label]=\"text.enterAValue + (ariaLabel ? ' - ' + ariaLabel : '')\"\r\n (input)=\"handleInput(+sliderInput.value); input.emit(+sliderInput.value)\"\r\n (blur)=\"handleInput(+sliderInput.value)\"\r\n (paste)=\"preventPaste($event)\"\r\n class=\"access\"\r\n style=\"width:auto;\" />\r\n <div class=\"text ptl_input_text_size mar_lr10\">{{unit}}</div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { SliderComponent } from './slider.component';\n\n@NgModule({\n declarations: [SliderComponent],\n exports: [\n SliderComponent\n ],\n imports: [\n CommonModule,\n FormsModule\n ]\n})\nexport class ParticleSliderModule { }\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[particleAccordionContent]'\r\n})\r\nexport class AccordionContentDirective {\r\n constructor(public templateRef: TemplateRef<any>) {}\r\n}\r\n","import {Directive, TemplateRef} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[particleAccordionHeader]'\r\n})\r\nexport class AccordionHeaderDirective {\r\n constructor(public templateRef: TemplateRef<any>) {}\r\n}\r\n","import {ContentChild, Directive, Input} from '@angular/core';\r\nimport {AccordionContentDirective} from './accordion-content.directive';\r\nimport {AccordionHeaderDirective} from './accordion-header.directive';\r\n\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: 'particle-accordion-item'\r\n})\r\nexport class AccordionItemDirective {\r\n\r\n @Input()\r\n header: string = null as any;\r\n\r\n @Input()\r\n disabled = false;\r\n\r\n @Input()\r\n open = false;\r\n\r\n @Input()\r\n headerClass: string = null as any;\r\n\r\n @ContentChild(AccordionHeaderDirective)\r\n headerTemplate: AccordionHeaderDirective = null as any;\r\n\r\n @ContentChild(AccordionContentDirective)\r\n content: AccordionContentDirective = null as any;\r\n}\r\n","import {\r\n AfterContentInit, AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChildren,\r\n Input,\r\n QueryList,\r\n ViewChildren\r\n} from '@angular/core';\r\nimport { AccordionItemDirective } from './directives/accordion-item.directive';\r\nimport {AccordionText} from '../../shared/models/particle-component-text.model';\r\n\r\n@Component({\r\n selector: 'particle-accordion',\r\n templateUrl: './accordion.component.html',\r\n styleUrls: ['./accordion.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AccordionComponent implements AfterContentInit, AfterViewInit {\r\n expanded = new Set<number>();\r\n\r\n @Input()\r\n multiple = false;\r\n\r\n @Input()\r\n height = '40px';\r\n\r\n @Input()\r\n headerClass = 'bg_overlay brdr border_bottom';\r\n\r\n @Input()\r\n textClass = 'md bolder';\r\n\r\n @Input()\r\n iconCollapsed = 'fas fa-caret-right';\r\n\r\n @Input()\r\n iconExpanded = 'fas fa-caret-down';\r\n\r\n @Input()\r\n showIcon = true;\r\n\r\n @Input()\r\n text: AccordionText = {\r\n expand: 'Expand',\r\n collapse: 'Collapse'\r\n } as AccordionText;\r\n\r\n @ContentChildren(AccordionItemDirective)\r\n items: QueryList<AccordionItemDirective> = null as any;\r\n\r\n @ViewChildren('ref')\r\n contentDivs: QueryList<any> = null as any;\r\n\r\n ngAfterContentInit(): void {\r\n for (let i = 0; i < this.items.length; i++) {\r\n const item = this.items.get(i) as AccordionItemDirective;\r\n if (item.open && !item.disabled) {\r\n this.expanded.add(i);\r\n if (!this.multiple) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n for (let i = 0; i < this.contentDivs.length; i++) {\r\n const el = this.contentDivs.get(i).nativeElement as HTMLDivElement;\r\n const item = this.items.get(i) as AccordionItemDirective;\r\n if (el) {\r\n if (item && item.open && !item.disabled) {\r\n el.style.maxHeight = el.scrollHeight + 'px';\r\n el.ariaHidden = 'false';\r\n } else {\r\n el.style.maxHeight = '0';\r\n el.ariaHidden = 'true';\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @param index - index of the accordion item\r\n */\r\n getToggleState = (index: number): any => {\r\n return this.toggleState.bind(this, index);\r\n }\r\n\r\n toggleState = (index: number): void => {\r\n if (this.expanded.has(index)) {\r\n this.expanded.delete(index);\r\n this.contentDivs.get(index).nativeElement.style.maxHeight = '0';\r\n this.contentDivs.get(index).nativeElement.ariaHidden = 'true';\r\n } else {\r\n if (!this.multiple) {\r\n this.expanded.clear();\r\n for (let i=0; i < this.contentDivs.length; i++) {\r\n this.contentDivs.get(i).nativeElement.style.maxHeight = '0';\r\n this.contentDivs.get(i).nativeElement.ariaHidden = 'true';\r\n }\r\n }\r\n\r\n this.expanded.add(index);\r\n this.contentDivs.get(index).nativeElement.style.maxHeight = `${this.contentDivs.get(index).nativeElement.scrollHeight}px`;\r\n this.contentDivs.get(index).nativeElement.ariaHidden = 'false';\r\n }\r\n }\r\n\r\n}\r\n","<div *ngFor=\"let item of items;index as i\" class=\"particle_accordion_item\" [class.disabled]=\"item.disabled\" [class.active]=\"expanded.has(i)\">\r\n <button type=\"button\" class=\"particle_accordion_header width100\"\r\n [ngClass]=\"(item.headerClass ? item.headerClass : headerClass) + (!item.disabled ? ' access' : '')\"\r\n [style.height]=\"height\"\r\n (click)=\"!item.disabled ? toggleState(i) : {}\"\r\n [attr.aria-label]=\"!expanded.has(i) ? text.expand : text.collapse\">\r\n <ng-container *ngIf=\"item.headerTemplate\">\r\n <ng-container *ngTemplateOutlet=\"item.headerTemplate.templateRef\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!item.headerTemplate\">\r\n <div class=\"text\" [ngClass]=\"textClass\" *ngIf=\"showIcon\">\r\n <span *ngIf=\"!expanded.has(i)\"><i [ngClass]=\"iconCollapsed + ' fa-fw'\"></i></span>\r\n <span *ngIf=\"expanded.has(i)\"><i [ngClass]=\"iconExpanded + ' fa-fw'\"></i></span>\r\n {{item?.header}}\r\n </div>\r\n <div class=\"text\" [ngClass]=\"textClass\" *ngIf=\"!showIcon\">\r\n <span>{{item?.header}}</span>\r\n </div>\r\n </ng-container>\r\n </button>\r\n <div class=\"particle_accordion_content\" #ref>\r\n <ng-container *ngTemplateOutlet=\"$any(item?.content?.templateRef)\"></ng-container>\r\n </div>\r\n</div>\r\n","import {CommonModule} from '@angular/common';\r\nimport {NgModule} from '@angular/core';\r\n\r\nimport {AccordionComponent} from './accordion.component';\r\nimport {AccordionItemDirective} from './directives/accordion-item.directive';\r\nimport {AccordionContentDirective} from './directives/accordion-content.directive';\r\nimport {AccordionHeaderDirective} from './directives/accordion-header.directive';\r\n\r\n@NgModule({\r\n declarations: [\r\n AccordionComponent,\r\n AccordionItemDirective,\r\n AccordionContentDirective,\r\n AccordionHeaderDirective\r\n ],\r\n imports: [CommonModule],\r\n exports: [\r\n AccordionComponent,\r\n AccordionItemDirective,\r\n AccordionContentDirective,\r\n AccordionHeaderDirective\r\n ]\r\n})\r\nexport class ParticleAccordionModule {\r\n}\r\n","// The order you see below are the layers ascending. Be mindful to maintain this order for expected outcomes.\r\nexport const Z_INDEX_LAYERS = {\r\n BASE: 'base',\r\n FRAME: 'frame',\r\n OVERLAY: 'overlay',\r\n DIALOG: 'dialog',\r\n NOTIFICATION: 'notification'\r\n};\r\n\r\nexport interface Theme {\r\n themeId: string;\r\n isDefault: boolean;\r\n name: string;\r\n layoutColors: ThemeLayoutColors;\r\n layoutVariables: ThemeLayoutVariables;\r\n stylingVariables: ThemeStylingVariables;\r\n colorPalette: ThemeColorPalette;\r\n buttonColorPalette: ThemeButtonColorPalette;\r\n fonts: Array<ThemeFont>;\r\n accessibility: ThemeAccessibility;\r\n zIndexList?: Array<string>;\r\n}\r\n\r\nexport interface ThemeLayoutColors {\r\n menuColor: string;\r\n headerColor: string;\r\n footerColor: string;\r\n bodyColor: string;\r\n contentColor: string;\r\n}\r\n\r\nexport interface ThemeColorPalette {\r\n bgRed: string;\r\n bgOrange: string;\r\n bgYellow: string;\r\n bgGreen: string;\r\n bgBlue: string;\r\n bgPurple: string;\r\n bgBrown: string;\r\n bgGrey: string;\r\n\r\n extension: Array<ThemeColorPaletteExtension>;\r\n}\r\n\r\nexport interface ThemeButtonColorPalette {\r\n okButtonColor: string;\r\n cancelButtonColor: string;\r\n deleteButtonColor: string;\r\n saveButtonColor: string;\r\n nextButtonColor: string;\r\n previousButtonColor: string;\r\n openButtonColor: string;\r\n closeButtonColor: string;\r\n}\r\n\r\nexport interface ThemeLayoutVariables {\r\n disableGlobalHeaderFooter: boolean;\r\n headerHeight: string;\r\n footerHeight: string;\r\n menuWidth?: string;\r\n}\r\n\r\nexport interface ThemeStylingVariables {\r\n inputTextSize: string;\r\n inputLabelSize: string;\r\n inputHeight: string;\r\n inputBgColor: string;\r\n inputPadding: string;\r\n\r\n borderColor: string;\r\n borderSize: string;\r\n borderRadius: string;\r\n\r\n tooltipBackgroundColor: string;\r\n tooltipTextSize: string;\r\n tooltipBorderSize: string;\r\n tooltipBorderColor: string;\r\n tooltipCaretSize?: string;\r\n}\r\n\r\nexport interface ThemeColorPaletteExtension {\r\n className: string;\r\n color?: string;\r\n textColor?: string;\r\n}\r\n\r\nexport interface ThemeFont {\r\n name: string;\r\n id?: string;\r\n source?: 'google' | 'adobe';\r\n isDefault?: boolean;\r\n isSerif?: boolean;\r\n}\r\n\r\nexport interface ThemeAccessibility {\r\n enabled: boolean;\r\n highlightColor: string;\r\n highlightThickness: string;\r\n highlightOffset: string;\r\n hoverEnabled: boolean;\r\n}\r\n","import {Injectable} from '@angular/core';\r\n\r\n/**\r\n * Wrapper around interactions with Local Storage. Handles serializing things to JSON to make it easier to push more complex data into\r\n * local storage.\r\n */\r\n@Injectable()\r\nexport class LocalStorageService {\r\n\r\n /**\r\n * Retrieve an object from LocalStorage\r\n *\r\n * @param key\r\n */\r\n getObject<T>(key: string): T | null {\r\n const obj: any = localStorage.getItem(key);\r\n if (obj) {\r\n return <T> JSON.parse(obj);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Get straight text out of local storage. Don't use this if the data is a JSON Object.\r\n *\r\n * @param key\r\n */\r\n getText(key: string): string {\r\n return localStorage.getItem(key) + '';\r\n }\r\n\r\n /**\r\n * Puts an object into Local Storage. Handles stringifying the JS Object.\r\n *\r\n * @param key\r\n * @param object\r\n */\r\n putObject(key: string, object: any): void {\r\n localStorage.setItem(key, JSON.stringify(object));\r\n }\r\n\r\n /**\r\n * Puts text into Local Storage.\r\n *\r\n * @param key\r\n * @param value\r\n */\r\n putText(key: string, value: string): void {\r\n localStorage.setItem(key, value);\r\n }\r\n\r\n /**\r\n * Removes an item from local storage based on the key.\r\n *\r\n * @param key\r\n */\r\n remove(key: string): void {\r\n localStorage.removeItem(key);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {BehaviorSubject} from 'rxjs';\r\nimport {Observable} from 'rxjs';\r\n\r\n/**\r\n * Service to allow for components/services to listen for theme changes\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ThemeChangeDetectionService {\r\n\r\n /**\r\n * Subject that fires when the theme is changed\r\n * @private\r\n */\r\n private readonly _themeChanged = new BehaviorSubject<void>(null as any);\r\n\r\n /**\r\n * Dependency injection site\r\n */\r\n constructor() { }\r\n\r\n /**\r\n * Trigger a theme change event\r\n */\r\n changeTheme(): void {\r\n this._themeChanged.next();\r\n }\r\n\r\n /**\r\n * Listen for theme change events\r\n */\r\n listen(): Observable<void> {\r\n return this._themeChanged.asObservable();\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {BehaviorSubject, Observable} from 'rxjs';\r\nimport {Theme, ThemeFont, Z_INDEX_LAYERS} from '../models/theme.model';\r\nimport {ThemeChangeDetectionService} from './theme-change-detection.service';\r\nimport {LocalStorageService} from '../../../shared/services/local-storage.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ThemingService {\r\n\r\n // PSA: ORDER MATTERS, DO NOT MOVE ITEMS AROUND\r\n private readonly defaultZIndexes: Array<string> = [\r\n Z_INDEX_LAYERS.BASE,\r\n Z_INDEX_LAYERS.FRAME,\r\n Z_INDEX_LAYERS.OVERLAY,\r\n Z_INDEX_LAYERS.DIALOG,\r\n Z_INDEX_LAYERS.NOTIFICATION\r\n ];\r\n\r\n /**\r\n * Prefix used to build the key for local storage of the theme\r\n */\r\n private readonly THEME_KEY = 'theme';\r\n\r\n /**\r\n * A private BehaviorSubject to store the loaded themes\r\n */\r\n private themes = new BehaviorSubject<Theme[]>([]);\r\n\r\n private $selectedTheme = new BehaviorSubject<Theme>(null as any);\r\n\r\n get selectedTheme(): Observable<Theme> {\r\n return this.$selectedTheme.asObservable();\r\n }\r\n\r\n\r\n /**\r\n * Key for the product this is deployed into\r\n */\r\n protected applicationName: string = null as any;\r\n\r\n /**\r\n * Constructor\r\n *\r\n * @param localStorageService\r\n * @param themeChangeDetectionService\r\n */\r\n constructor(\r\n private localStorageService: LocalStorageService,\r\n private themeChangeDetectionService: ThemeChangeDetectionService\r\n ) {\r\n }\r\n\r\n /**\r\n * Converts a JSON property name to snake case\r\n *\r\n * @param prop\r\n */\r\n private toSnakeCase(prop: string): string {\r\n return prop.split(/(?=[A-Z])/).join('_').toLowerCase();\r\n }\r\n\r\n private toKebabCase(prop: string): string {\r\n return prop.split(/(?=[A-Z])/).join('-').toLowerCase();\r\n }\r\n\r\n private convertUnderscoreToDash(prop: string): string {\r\n return prop.split('_').join('-').toLowerCase();\r\n }\r\n\r\n /**\r\n * For the given color, it'll lighten or darken the color by the percentage supplied. Positive percent will lighten, negative to darken.\r\n *\r\n * @param color\r\n * @param percent\r\n */\r\n private lightenDarkenColor(color: string, percent: number): string {\r\n let usePound = false;\r\n if (color[0] === '#') {\r\n color = color.slice(1);\r\n usePound = true;\r\n }\r\n\r\n const num = parseInt(color, 16);\r\n\r\n let r = (num >> 16) + percent;\r\n if (r > 255) {\r\n r = 255;\r\n } else if (r < 0) {\r\n r = 0;\r\n }\r\n\r\n let b = ((num >> 8) & 0x00FF) + percent;\r\n if (b > 255) {\r\n b = 255;\r\n } else if (b < 0) {\r\n b = 0;\r\n }\r\n\r\n let g = (num & 0x0000FF) + percent;\r\n if (g > 255) {\r\n g = 255;\r\n } else if (g < 0) {\r\n g = 0;\r\n }\r\n\r\n let newColor = (g | (b << 8) | (r << 16)).toString(16);\r\n\r\n while (newColor.length < 6) {\r\n newColor = '0' + newColor;\r\n }\r\n\r\n return (usePound ? '#' : '') + newColor;\r\n }\r\n\r\n /**\r\n * Converts a hex value to a Javascript object with r,g, and b variables.\r\n *\r\n * @param hex\r\n */\r\n private hexToRgb(hex: string): any {\r\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return result ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16)\r\n } : null;\r\n }\r\n\r\n /**\r\n * Generates a random hex color\r\n */\r\n getRandomColor(): string {\r\n return '#' + Math.floor(Math.random() * 16777215).toString(16);\r\n }\r\n\r\n /**\r\n * On App Initialization (in app.component.ts, ngOnInit) call this to load themes and apply the user selected theme or default theme.\r\n *\r\n * @param applicationName\r\n * @param themes\r\n */\r\n appInit(applicationName: string, themes: Theme[]): void {\r\n if (!applicationName) {\r\n throw new Error('Application Name was not supplied.');\r\n }\r\n\r\n this.applicationName = applicationName;\r\n this.themes.next(themes);\r\n this.applySettings();\r\n }\r\n\r\n /**\r\n * Return the themes for the current app\r\n */\r\n getThemes(): Observable<Theme[]> {\r\n return this.themes;\r\n }\r\n\r\n /**\r\n * Apply the selected theme\r\n */\r\n applySettings(): void {\r\n const settings = this.getTheme();\r\n this.$selectedTheme.next(settings);\r\n this.changeColors(settings);\r\n }\r\n\r\n /**\r\n * Constructs a theme object based on another theme object\r\n *\r\n * @param theme\r\n */\r\n generateTheme(theme?: Theme): Theme {\r\n let newTheme: Theme = {} as Theme;\r\n if (theme) {\r\n for (const prop of Object.keys(theme)) {\r\n // @ts-ignore\r\n newTheme[prop] = theme[prop];\r\n }\r\n } else {\r\n newTheme = this.themes.getValue().find(theTheme => theTheme.isDefault) as Theme;\r\n }\r\n\r\n return newTheme;\r\n }\r\n\r\n /**\r\n * Returns a list of the color classes specifically based on the properties of the theme model\r\n */\r\n getClassesFromTheme(theme: Theme): string[] {\r\n const classes = [];\r\n for (const prop of Object.keys(theme)) {\r\n if (prop.toLowerCase().includes('bg') || prop.toLowerCase().includes('color')) {\r\n classes.push(prop.split(/(?=[A-Z])/).join('_').toLowerCase());\r\n }\r\n }\r\n\r\n return classes;\r\n }\r\n\r\n /**\r\n * Returns the user selected theme from local storage\r\n */\r\n getTheme(): Theme {\r\n const themeId = this.localStorageService.getObject(this.applicationName + this.THEME_KEY);\r\n let defaultTheme = this.themes.value.filter(theme => theme.isDefault)[0];\r\n\r\n for (const theme of this.themes.value) {\r\n if (theme.themeId === themeId) {\r\n return theme;\r\n }\r\n }\r\n\r\n return defaultTheme;\r\n }\r\n\r\n /**\r\n * Persists the user selected theme in local storage\r\n *\r\n * @param settings\r\n */\r\n saveTheme(settings: Theme): void {\r\n this.$selectedTheme.next(settings);\r\n this.localStorageService.putObject(this.applicationName + this.THEME_KEY, settings.themeId);\r\n }\r\n\r\n /**\r\n * Writes the theme information to a style tag in the header so that the theme is applied.\r\n *\r\n * @param theme\r\n * @param prefix\r\n */\r\n changeColors(theme: Theme, prefix?: string): void {\r\n if (!prefix) {\r\n prefix = '';\r\n }\r\n\r\n const style = document.createElement('style');\r\n let rootVars = ':root {';\r\n\r\n // Render the color palette styles\r\n if (theme.colorPalette) {\r\n for (const prop of Object.keys(theme.colorPalette)) {\r\n if (prop !== 'extension') {\r\n const value = (theme.colorPalette as any)[prop] as string;\r\n\r\n const color = this.addHashmark(value);\r\n this.generateColors(style, color, prefix + this.toSnakeCase(prop));\r\n\r\n rootVars += `--${prefix}${this.toKebabCase(prop)}-color: ${color};`;\r\n }\r\n }\r\n\r\n for (const extension of theme.colorPalette.extension) {\r\n if (extension.textColor && !extension.color) {\r\n style.appendChild(document.createTextNode(`.${prefix}${extension.className}{color: ${this.addHashmark(extension.textColor)};}`));\r\n }\r\n\r\n if (extension.color) {\r\n if (!extension.textColor) {\r\n this.generateColors(style, this.addHashmark(extension.color as string), prefix + extension.className);\r\n } else {\r\n style.appendChild(document.createTextNode(`.${prefix}${extension.className}{background-color: ${this.addHashmark(extension.color)};color: ${this.addHashmark(extension.textColor)};fill: currentColor;}`));\r\n }\r\n\r\n rootVars += `--${prefix}${this.convertUnderscoreToDash(extension.className)}: ${this.addHashmark(extension.color as string)};`;\r\n }\r\n }\r\n }\r\n\r\n // Render the layout color styles\r\n if (theme.layoutColors) {\r\n for (const prop of Object.keys(theme.layoutColors)) {\r\n const value = (theme.layoutColors as any)[prop] as string;\r\n\r\n const color = value.startsWith('#') ? value : '#' + value;\r\n this.generateColors(style, color, prefix + this.toSnakeCase(prop));\r\n rootVars += `--${prefix}${this.toKebabCase(prop)}: ${color};`;\r\n }\r\n\r\n if (this.isDarkTheme(theme.layoutColors.bodyColor)) {\r\n style.appendChild(document.createTextNode(`.${prefix}bg_overlay{background-color:rgba(255,255,255,0.05);color:inherit;}`));\r\n style.appendChild(document.createTextNode(`.${prefix}bg_overlay_rev{background-color:rgba(0,0,0,0.05);color:inherit;}`));\r\n style.appendChild(document.createTextNode(`.${prefix}brdr{border:1px solid rgba(150,150,150,0.5);}`));\r\n } else {\r\n style.appendChild(document.createTextNode(`.${prefix}bg_overlay{background-color:rgba(255,255,255,0.1);color:inherit;}`));\r\n style.appendChild(document.createTextNode(`.${prefix}bg_overlay_rev{background-color:rgba(0,0,0,0.04);color:inherit;}`));\r\n style.appendChild(document.createTextNode(`.${prefix}brdr{border:1px solid rgba(150,150,150,0.5);}`));\r\n }\r\n }\r\n\r\n if (theme.accessibility && theme.accessibility.enabled) {\r\n const outlineColor = theme.accessibility.highlightColor.startsWith('#') ? theme.accessibility.highlightColor : '#' + theme.accessibility.highlightColor;\r\n style.appendChild(document.createTextNode(`.${prefix}access{outline: ${outlineColor} ${theme.accessibility.highlightThickness} solid !important;outline-color: transparent !important;transition:all 0.3s ease-in-out;}`));\r\n style.appendChild(document.createTextNode(`.${prefix}access:focus{outline: ${outlineColor} ${theme.accessibility.highlightThickness} solid !important;outline-offset: ${theme.accessibility.highlightOffset};}`));\r\n\r\n if (theme.accessibility.hoverEnabled) {\r\n style.appendChild(document.createTextNode(`.${prefix}access:hover{outline: ${outlineColor} ${theme.accessibility.highlightThickness} solid !important;outline-offset: ${theme.accessibility.highlightOffset};}`));\r\n }\r\n }\r\n\r\n // Render the button color styles\r\n if (theme.buttonColorPalette) {\r\n for (const prop of Object.keys(theme.buttonColorPalette)) {\r\n const value = (theme.buttonColorPalette as any)[prop] as string;\r\n\r\n const color = value.startsWith('#') ? value : '#' + value;\r\n this.generateColors(style, color, prefix + this.toSnakeCase(prop));\r\n\r\n rootVars += `--${prefix}${this.toKebabCase(prop)}: ${color};`;\r\n }\r\n }\r\n\r\n if (theme.stylingVariables) {\r\n if (theme.stylingVariables.inputTextSize) {\r\n style.appendChild(document.createTextNode(`.${prefix}ptl_input_text_size{font-size: ${theme.stylingVariables.inputTextSize};}`));\r\n }\r\n\r\n if (theme.stylingVariables.inputLabelSize) {\r\n style.appendChild(document.createTextNode(`.${prefix}ptl_input_label_size{font-size: ${theme.stylingVariables.inputLabelSize};}`));\r\n }\r\n\r\n if (theme.stylingVariables.inputBgColor) {\r\n style.appendChild(document.createTextNode(`.${prefix}ptl_input_bg_color{background-color: ${this.addHashmark(theme.stylingVariables.inputBgColor)};color: ${this.getTextColor(theme.stylingVariables.inputBgColor)}}`));\r\n }\r\n\r\n if (theme.stylingVariables.borderColor) {\r\n style.appendChild(document.createTextNode(`.${prefix}ptl_brdr_color{border-color: ${this.addHashmark(theme.stylingVariables.borderColor)};}`));\r\n rootVars += `--${prefix}ptl-brdr-color: ${this.addHashmark(theme.stylingVariables.borderColor)};`;\r\n }\r\n\r\n if (theme.stylingVariables.borderSize) {\r\n style.appendChild(document.createTextNode(`.${prefix}ptl_brdr_size{border-width: ${theme.stylingVariables.borderSize};border-style:solid;}`));\r\n rootVars += `--${prefix}ptl-brdr-size: ${theme.stylingVariables.borderSize};`;\r\n }\r\n\r\n if (theme.stylingVariables.borderRadius) {\r\n style.appendChild(document.createTextNode(`.${prefix}ptl_brdr_radius{border-radius: ${theme.stylingVariables.borderRadius};}`));\r\n rootVars += `--${prefix}ptl-brdr-radius: ${theme.stylingVariables.borderRadius};`;\r\n }\r\n\r\n if (theme.stylingVariables.inputHeight) {\r\n style.appendChild(document.createTextNode(`.${prefix}ptl_input_height{height: ${theme.stylingVariables.inputHeight};}`));\r\n }\r\n\r\n if (theme.stylingVariables.inputPadding) {\r\n style.appendChild(document.createTextNode(`.${prefix}ptl_input_padding{padding: ${theme.stylingVariables.inputPadding};}`));\r\n }\r\n\r\n if (theme.stylingVariables.tooltipTextSize || theme.stylingVariables.tooltipBackgroundColor) {\r\n const bgColor = theme.stylingVariables.tooltipBackgroundColor;\r\n const textSize = theme.stylingVariables.tooltipTextSize;\r\n const borderSize = theme.stylingVariables.tooltipBorderSize;\r\n const borderColor = theme.stylingVariables.tooltipBorderColor;\r\n const caretSize = theme.stylingVariables.tooltipCaretSize ?? '6px';\r\n\r\n let tooltipStyle = '.particle_tooltip{';\r\n\r\n if (bgColor) {\r\n const textColor = this.getTextColor(bgColor);\r\n tooltipStyle += `color: ${textColor};`;\r\n tooltipStyle += `background-color: ${bgColor};`;\r\n }\r\n\r\n if (borderColor && borderSize) {\r\n tooltipStyle += `border: ${borderSize} solid ${borderColor};`;\r\n }\r\n\r\n if (textSize) {\r\n tooltipStyle += 'font-size: ' + textSize + ';';\r\n }\r\n\r\n tooltipStyle += '}';\r\n style.appendChild(document.createTextNode(tooltipStyle));\r\n\r\n let caretStyleColor: string = null as any;\r\n if (borderColor && borderSize) {\r\n caretStyleColor = borderColor;\r\n } else if (bgColor) {\r\n caretStyleColor = bgColor;\r\n }\r\n\r\n if (caretStyleColor) {\r\n style.appendChild(document.createTextNode(`.particle_tooltip.right::after{border-color: transparent ${caretStyleColor} transparent transparent;margin-top: -${caretSize};border-width: ${caretSize};}`));\r\n style.appendChild(document.createTextNode(`.particle_tooltip.left::after{border-color: transparent transparent transparent ${caretStyleColor};margin-top: -${caretSize};border-width: ${caretSize};}`));\r\n style.appendChild(document.createTextNode(`.particle_tooltip.top::after{border-color: ${caretStyleColor} transparent transparent transparent;margin-left: -${caretSize};border-width: ${caretSize};}`));\r\n style.appendChild(document.createTextNode(`.particle_tooltip.bottom::after{border-color: transparent transparent ${caretStyleColor} transparent;margin-left: -${caretSize};border-width: ${caretSize};}`));\r\n }\r\n }\r\n }\r\n\r\n const head = document.head || document.getElementsByTagName('head')[0];\r\n\r\n this.removeThemeFromHeader(prefix);\r\n\r\n // Write the fonts to the header\r\n if (prefix === '') {\r\n this.addFonts(theme, head, style);\r\n rootVars = this.createZIndexes(rootVars, theme.zIndexList as Array<string>);\r\n }\r\n\r\n rootVars += '}';\r\n style.appendChild(document.createTextNode(rootVars));\r\n style.setAttribute('id', (prefix ? prefix + '-' : '') + 'particle-theme');\r\n head.appendChild(style);\r\n\r\n this.themeChangeDetectionService.changeTheme();\r\n }\r\n\r\n private addHashmark(color: string): string {\r\n return color.startsWith('#') ? color : '#' + color;\r\n }\r\n\r\n private addFonts(theme: Theme, head: HTMLHeadElement, style: HTMLStyleElement): void {\r\n if (!theme.fonts) {\r\n return;\r\n }\r\n\r\n let defaultFont: ThemeFont = null as any;\r\n for (const font of theme.fonts) {\r\n if (font.isDefault || theme.fonts.length === 1) {\r\n defaultFont = font;\r\n }\r\n\r\n if (!this.fontExists(head, font)) {\r\n let element: HTMLLinkElement = document.createElement('link');\r\n if (font.source === 'adobe') {\r\n element.setAttribute('href', `https://use.typekit.net/${font.id}.css`);\r\n } else {\r\n element.setAttribute('href', `https://fonts.googleapis.com/css?family=${font.name.replace(' ', '+')}&display=swap`);\r\n }\r\n element.setAttribute('rel', 'stylesheet');\r\n head.appendChild(element);\r\n }\r\n }\r\n\r\n style.appendChild(document.createTextNode(`html * { font-family: ${defaultFont.name}, ${defaultFont.isSerif ? 'serif' : 'sans-serif'}; }`));\r\n }\r\n\r\n private fontExists(head: HTMLHeadElement, font: ThemeFont): boolean {\r\n for (const child of <any>head.childNodes) {\r\n if (child.href && font.source === 'adobe' && child.href.indexOf(font.id) > -1) {\r\n return true;\r\n } else if (child.href && child.href.indexOf(font.name.replace(' ', '+')) > -1) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n removeThemeFromHeader(prefix: string): void {\r\n const head = document.head || document.getElementsByTagName('head')[0];\r\n\r\n for (const child of <any>head.childNodes) {\r\n if ((child as Element).id === (prefix ? prefix + '-' : '') + 'particle-theme') {\r\n head.removeChild(child);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Determines the contrast between a given color and its auto-selected text color\r\n *\r\n * @param color\r\n */\r\n getContrast(color: string): number {\r\n const colorRgb = this.hexToRgb(color);\r\n const textColorRgb = this.hexToRgb(this.getTextColor(color));\r\n return this.contrast(colorRgb, textColorRgb);\r\n }\r\n\r\n /**\r\n * Calculates luminance\r\n *\r\n * @param r\r\n * @param g\r\n * @param b\r\n */\r\n private luminance(r: number, g: number, b: number): number {\r\n const a = [r, g, b].map(function (v) {\r\n v /= 255;\r\n return v <= 0.03928\r\n ? v / 12.92\r\n : Math.pow((v + 0.055) / 1.055, 2.4);\r\n });\r\n return a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722;\r\n }\r\n\r\n private isDarkTheme(color: string): boolean {\r\n const rgb = this.hexToRgb(color);\r\n return (this.luminance(rgb.r, rgb.g, rgb.b) * 100) < 50;\r\n }\r\n\r\n /**\r\n * Calculates the contrast\r\n *\r\n * @param rgb1\r\n * @param rgb2\r\n */\r\n private contrast(rgb1: any, rgb2: any): number {\r\n let contrast = (this.luminance(rgb1.r, rgb1.g, rgb1.b) + 0.05)\r\n / (this.luminance(rgb2.r, rgb2.g, rgb2.b) + 0.05);\r\n\r\n if (contrast < 1) {\r\n contrast = (this.luminance(rgb2.r, rgb2.g, rgb2.b) + 0.05)\r\n / (this.luminance(rgb1.r, rgb1.g, rgb1.b) + 0.05);\r\n }\r\n\r\n return contrast;\r\n }\r\n\r\n /**\r\n * Returns the maximally contrasting text color for the supplied background color\r\n *\r\n * @param color\r\n */\r\n getTextColor(color: string): string {\r\n const rgb = this.hexToRgb(color);\r\n let textRgb = this.hexToRgb('#FFFFFF');\r\n const whiteContrast = this.contrast(textRgb, rgb);\r\n\r\n textRgb = this.hexToRgb('#222222');\r\n const blackContrast = this.contrast(textRgb, rgb);\r\n\r\n // 7 is the contrast ratio for WCAG AAA, if we're less than that, go full black for max contrast\r\n if (blackContrast > whiteContrast && blackContrast < 7) {\r\n return '#000000';\r\n }\r\n\r\n return whiteContrast > blackContrast ? '#FFFFFF' : '#222222';\r\n }\r\n\r\n /**\r\n * Generates the CSS for each of the colors in the theme. Will write the base color and 9 light and dark variants of the given color.\r\n *\r\n * @param style\r\n * @param color\r\n * @param className\r\n */\r\n private generateColors(style: HTMLStyleElement, color: string, className: string): void {\r\n if (!color) {\r\n return;\r\n }\r\n\r\n let textColor = this.getTextColor(color);\r\n style.appendChild(document.createTextNode(`.${className}{background-color: ${color};color: ${textColor};fill: currentColor;}`));\r\n for (let i = 1; i < 10; i++) {\r\n const newColor = this.lightenDarkenColor(color, i * 10);\r\n textColor = this.getTextColor(newColor);\r\n\r\n style.appendChild(\r\n document.createTextNode(`.${className}_light_${i}{background-color: ${newColor};color: ${textColor};fill: currentColor;}`));\r\n }\r\n\r\n for (let i = 1; i < 10; i++) {\r\n const newColor = this.lightenDarkenColor(color, 0 - (i * 10));\r\n textColor = this.getTextColor(newColor);\r\n\r\n style.appendChild(\r\n document.createTextNode(`.${className}_dark_${i}{background-color: ${newColor};color: ${textColor};fill: currentColor;}`));\r\n }\r\n }\r\n\r\n getDefaultZIndexes(): Array<string> {\r\n return this.defaultZIndexes;\r\n }\r\n\r\n private createZIndexes(rootVars: string, zIndexes: Array<string>): string {\r\n let zIndexesToCreate = this.defaultZIndexes;\r\n\r\n if (zIndexes) {\r\n if (zIndexes.includes(Z_INDEX_LAYERS.BASE)\r\n && zIndexes.includes(Z_INDEX_LAYERS.FRAME)\r\n && zIndexes.includes(Z_INDEX_LAYERS.OVERLAY)\r\n && zIndexes.includes(Z_INDEX_LAYERS.DIALOG)\r\n && zIndexes.includes(Z_INDEX_LAYERS.NOTIFICATION)\r\n ) {\r\n zIndexesToCreate = zIndexes;\r\n } else {\r\n console.warn('THEMING: Z Index List missing required layers, ignoring provided list.');\r\n }\r\n }\r\n\r\n let i = 0;\r\n for (const zIndex of zIndexesToCreate) {\r\n rootVars += `--z-${zIndex}: ${i++};`;\r\n }\r\n\r\n return rootVars;\r\n }\r\n\r\n}\r\n","import {Component, OnInit, Input} from '@angular/core';\r\nimport {ThemingService} from '../services/theming.service';\r\nimport {Theme} from '../models/theme.model';\r\nimport {map, tap} from 'rxjs/operators';\r\nimport {DropdownOption} from '../../dropdown/models/dropdown-option.model';\r\nimport {ThemingText} from '../../../shared/models/particle-component-text.model';\r\nimport {Observable} from 'rxjs';\r\n\r\n/**\r\n * This will produce a dropdown that can be embedded to allow a user to choose their theme.\r\n */\r\n@Component({\r\n selector: 'particle-theming',\r\n templateUrl: './theming.component.html'\r\n})\r\nexport class ThemingComponent {\r\n\r\n /**\r\n * Constructor\r\n *\r\n * @param themingService\r\n */\r\n constructor(\r\n private themingService: ThemingService\r\n ) {\r\n this.themes$ = this.themingService.getThemes();\r\n this.selectedTheme$ = this.themingService.selectedTheme.pipe(tap(theme => this._themeId = theme.themeId));\r\n this.options$ = this.themingService.getThemes().pipe(\r\n map(\r\n themes => {\r\n const options: Array<DropdownOption> = [];\r\n for (const theme of themes) {\r\n options.push({\r\n label: theme.name,\r\n value: theme.themeId,\r\n disabled: false,\r\n dataContext: {\r\n 'colorValue': theme.layoutColors ? theme.layoutColors.headerColor : '#FFFFFF'\r\n }\r\n } as DropdownOption);\r\n }\r\n\r\n return options;\r\n }\r\n ));\r\n }\r\n\r\n /**\r\n * Override class for the embedded dropdown\r\n */\r\n @Input()\r\n selectClass: string = null as any;\r\n\r\n /**\r\n * ID for the embedded dropdown (allows for linking a label)\r\n */\r\n @Input()\r\n selectId: string = null as any;\r\n\r\n @Input()\r\n text: ThemingText = {\r\n placeholder: 'Select a theme...'\r\n }\r\n\r\n /**\r\n * Selected Theme ID\r\n */\r\n private _themeId: string = null as any;\r\n\r\n /**\r\n * List of available themes\r\n */\r\n readonly options$: Observable<Array<DropdownOption>>;\r\n\r\n readonly themes$: Observable<Array<Theme>>;\r\n\r\n readonly selectedTheme$: Observable<Theme>;\r\n\r\n /**\r\n * Update the user's selected theme\r\n */\r\n changeTheme(selectedValue: string | number, themes: Array<Theme>): void {\r\n let newTheme;\r\n for (const theme of themes) {\r\n if (theme.themeId === selectedValue) {\r\n newTheme = theme;\r\n break;\r\n }\r\n }\r\n\r\n if (newTheme) {\r\n this.themingService.saveTheme(newTheme);\r\n this.themingService.changeColors(newTheme);\r\n }\r\n }\r\n\r\n}\r\n","<ng-container *ngIf=\"themes$ | async as themes\">\r\n <ng-container *ngIf=\"options$ | async as options\">\r\n <ng-container *ngIf=\"selectedTheme$ | async as selectedTheme\">\r\n <particle-dropdown\r\n [text]=\"{placeholder: text.placeholder}\"\r\n [options]=\"options\"\r\n [disabled]=\"false\"\r\n [value]=\"selectedTheme.themeId\"\r\n (change)=\"changeTheme($event, themes)\">\r\n <ng-template let-colorValue=\"colorValue\" let-label>\r\n <div class=\"circle_14px mar_right5\" [style.background-color]=\"colorValue\"></div> {{label}}\r\n </ng-template>\r\n </particle-dropdown>\r\n </ng-container>\r\n </ng-container>\r\n</ng-container>\r\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {BrowserModule} from '@angular/platform-browser';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {BrowserAnimationsModule} from '@angular/platform-browser/animations';\nimport {ThemingComponent} from './components/theming.component';\nimport {ThemingService} from './services/theming.service';\nimport {ThemeChangeDetectionService} from './services/theme-change-detection.service';\nimport {LocalStorageService} from '../../shared/services/local-storage.service';\nimport {ParticleDropdownModule} from '../dropdown/dropdown.module';\n\n@NgModule({\n imports: [\n CommonModule,\n BrowserModule,\n FormsModule,\n ReactiveFormsModule,\n BrowserAnimationsModule,\n ParticleDropdownModule\n ],\n declarations: [\n ThemingComponent\n ],\n providers: [\n ThemingService,\n ThemeChangeDetectionService,\n LocalStorageService\n ],\n exports: [\n ThemingComponent\n ]\n})\nexport class ParticleThemingModule {\n}\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnDestroy,\r\n Output,\r\n Renderer2,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {SlideoverText} from '../../shared/models/particle-component-text.model';\r\n\r\n@Component({\r\n selector: 'particle-slideover',\r\n templateUrl: './slideover.component.html',\r\n styleUrls: ['./slideover.component.css']\r\n})\r\nexport class SlideoverComponent implements AfterViewInit, OnDestroy {\r\n\r\n private _position = 'right';\r\n\r\n slideoverOpen = false;\r\n visible = false;\r\n\r\n @Input()\r\n set position(position: string) {\r\n if (position && ['left', 'right', 'top', 'bottom'].indexOf(position.toLowerCase()) > -1) {\r\n this._position = position.toLowerCase();\r\n } else {\r\n this._position = 'right';\r\n }\r\n }\r\n\r\n get position(): string {\r\n return this._position;\r\n }\r\n\r\n @Input()\r\n modal = true;\r\n\r\n @Input()\r\n width = '300px';\r\n\r\n @Input()\r\n height = '100px';\r\n\r\n @Input()\r\n bgClass = 'content_color';\r\n\r\n @Input()\r\n text: SlideoverText = {\r\n close: 'Close Slideover'\r\n } as SlideoverText;\r\n\r\n /**\r\n * Breakpoint that will make the container take over the screen when it's crossed.\r\n */\r\n @Input()\r\n breakpoint = 769;\r\n\r\n @Output()\r\n opened = new EventEmitter<any>();\r\n\r\n @Output()\r\n closed = new EventEmitter<any>();\r\n\r\n @ViewChild('overlay')\r\n overlay: ElementRef = null as any;\r\n\r\n breakpointExceeded = false;\r\n\r\n constructor() {\r\n }\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event: any): void {\r\n this._determineBreakpointExceeded(event.target.innerWidth);\r\n }\r\n\r\n private _determineBreakpointExceeded(innerWidth: number): void {\r\n if (this.breakpoint) {\r\n this.breakpointExceeded = innerWidth < this.breakpoint || innerWidth < +this.width.substring(0, this.width.length - 2);\r\n }\r\n }\r\n\r\n open(): void {\r\n this.addModalMask();\r\n this.slideoverOpen = true;\r\n this.visible = true;\r\n this.opened.emit();\r\n }\r\n\r\n close(): void {\r\n this.removeModalMask();\r\n this.slideoverOpen = false;\r\n this.closed.emit();\r\n\r\n setTimeout(() => this.visible = false, 200);\r\n }\r\n\r\n toggle(): void {\r\n if (this.slideoverOpen) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n private addModalMask(): void {\r\n if (this.modal) {\r\n this.overlay.nativeElement.classList.add('particle_dialog_overlay');\r\n document.body.classList.add('scroll_none');\r\n }\r\n }\r\n\r\n private removeModalMask(): void {\r\n if (this.modal) {\r\n this.overlay.nativeElement.classList.remove('particle_dialog_overlay');\r\n document.body.classList.remove('scroll_none');\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.removeModalMask();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this._determineBreakpointExceeded(window.innerWidth)\r\n }, 100);\r\n }\r\n\r\n}\r\n","<div #overlay (click)=\"close()\"></div>\r\n<div\r\n [ngClass]=\"bgClass + ' ' + (slideoverOpen ? 'slideover_active_' + position : 'slideover_inactive_' + position) + ' slideover-panel ' + position\"\r\n [style.width]=\"position === 'right' || position === 'left' ? (breakpointExceeded ? '100%' : width) : null\"\r\n [style.height]=\"position === 'top' || position === 'bottom' ? (breakpointExceeded ? '100%' : height) : null\"\r\n [style.left]=\"position === 'left' && !slideoverOpen ? '-' + (breakpointExceeded ? '100%' : width) : null\"\r\n [style.right]=\"position === 'right' && !slideoverOpen ? '-' + (breakpointExceeded ? '100%' : width) : null\"\r\n [style.bottom]=\"position === 'bottom' && !slideoverOpen ? '-' + (breakpointExceeded ? '100%' : height) : null\"\r\n [style.top]=\"position === 'top' && !slideoverOpen ? '-' + (breakpointExceeded ? '100%' : height) : null\"\r\n [style.visibility]=\"!visible ? 'hidden': 'visible'\"\r\n [attr.aria-hidden]=\"!slideoverOpen\"\r\n>\r\n <div class=\"push_close_bar\">\r\n <button class=\"access btnset clear\"\r\n [attr.aria-label]=\"text.close\"\r\n (click)=\"close()\">\r\n <div class=\"circle_20px ptl_brdr_color ptl_brdr_size ptl_input_bg_color\">\r\n <i class=\"fas fa-times\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n <ng-content></ng-content>\r\n</div>\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport { SlideoverComponent } from './slideover.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n SlideoverComponent\r\n ],\r\n exports: [\r\n SlideoverComponent\r\n ],\r\n imports: [\r\n CommonModule\r\n ]\r\n})\r\nexport class ParticleSlideoverModule {\r\n}\r\n","import {AfterViewInit, Component, Input, OnDestroy, Renderer2} from '@angular/core';\r\nimport {BehaviorSubject} from 'rxjs';\r\nimport {ScrollToTopText} from '../../shared/models/particle-component-text.model';\r\n\r\n@Component({\r\n selector: 'particle-scroll-to-top',\r\n templateUrl: './scroll-to-top.component.html'\r\n})\r\nexport class ScrollToTopComponent implements OnDestroy, AfterViewInit {\r\n\r\n @Input()\r\n content: HTMLElement = null as any;\r\n\r\n @Input()\r\n scrollDistance = 500;\r\n\r\n @Input()\r\n bottomOffset = 50;\r\n\r\n @Input()\r\n text: ScrollToTopText = {\r\n scrollToTop: 'Scroll back to the top of the page'\r\n } as ScrollToTopText;\r\n\r\n $scrollTop = new BehaviorSubject<number>(0);\r\n\r\n private _listener: any;\r\n\r\n constructor(\r\n public renderer: Renderer2\r\n ) {}\r\n\r\n ngAfterViewInit(): void {\r\n this._listener = this.renderer.listen(this.content, 'scroll', () => {\r\n this.$scrollTop.next(this.content.scrollTop);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._listener();\r\n }\r\n\r\n scrollToTop(): void {\r\n if (this.content) {\r\n this.content.scroll({\r\n top: 0,\r\n behavior: 'smooth'\r\n });\r\n }\r\n }\r\n\r\n}\r\n","<ng-container *ngIf=\"$scrollTop | async as scrollTop\">\r\n <div [style.visibility]=\"scrollTop > scrollDistance ? 'visible' : 'hidden'\"\r\n [style.opacity]=\"scrollTop > scrollDistance ? '1' : '0'\"\r\n [style.bottom]=\"bottomOffset + 'px'\"\r\n class=\"particle_scroll_button mar_right10 mar_bot15\">\r\n <button (click)=\"scrollToTop()\"\r\n class=\"access btn pad_10 brad_3 brdr content_color\"\r\n type=\"button\"\r\n [attr.aria-label]=\"text.scrollToTop\">\r\n <span class=\"icon slide_up\"><i class=\"fas fa-chevron-up\"></i></span>\r\n </button>\r\n </div>\r\n</ng-container>\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {ScrollToTopComponent} from './scroll-to-top.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n ScrollToTopComponent\r\n ],\r\n exports: [\r\n ScrollToTopComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n ]\r\n})\r\nexport class ParticleScrollToTopModule {\r\n}\r\n","import {Component, HostListener, Input, TemplateRef, ViewChild} from '@angular/core';\r\nimport {SlideoverComponent} from '../../../slideover/slideover.component';\r\n\r\n@Component({\r\n selector: 'particle-layout-fullwidth-sidebar',\r\n templateUrl: './layout-fullwidth-sidebar.component.html'\r\n})\r\nexport class LayoutFullwidthSidebarComponent {\r\n\r\n @Input()\r\n mainContent: TemplateRef<any> = null as any;\r\n\r\n @Input()\r\n rightSidebar: TemplateRef<any> = null as any;\r\n\r\n @Input()\r\n mainContentContainerClassList = '';\r\n\r\n @Input()\r\n rightSidebarContainerClassList = '';\r\n\r\n @Input()\r\n rightSidebarSticky = false;\r\n\r\n @Input()\r\n headerHeight: string = '0';\r\n\r\n @Input()\r\n footerHeight: string = '0';\r\n\r\n @Input()\r\n rightSidebarWidth: string = '250px';\r\n\r\n @Input()\r\n breakpoint: number = 1024;\r\n\r\n @Input()\r\n rightSidebarCollapsedTabOffset = 150;\r\n\r\n @Input()\r\n collapsedClassList = '';\r\n\r\n @Input()\r\n mobileSidebarEnabled = true;\r\n\r\n @ViewChild('slideover')\r\n slideover: SlideoverComponent = null as any;\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event: any): void {\r\n if (this.mobileSidebarEnabled && event.target.innerWidth > 768 && this.slideover && this.slideover.slideoverOpen) {\r\n this.slideover.close();\r\n }\r\n }\r\n\r\n protected readonly window = window;\r\n\r\n get stickySidebarHeight(): string {\r\n const offset: number = +this.headerHeight.replace(/\\D/g, \"\") +\r\n +this.footerHeight.replace(/\\D/g, \"\");\r\n\r\n return `calc(100vh - ${offset}px)`;\r\n }\r\n\r\n}\r\n","<!-- setup for a side column -->\r\n<div class=\"row height100 ent_r2l_row\">\r\n <div class=\"row column space_between height100\"\r\n [ngClass]=\"mainContentContainerClassList\">\r\n <ng-template [ngTemplateOutlet]=\"mainContent\"></ng-template>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!rightSidebarSticky\">\r\n <div class=\"particle_layout_sidebar height100\"\r\n [ngClass]=\"rightSidebarContainerClassList\"\r\n [style.display]=\"window.innerWidth <= breakpoint ? 'none' : ''\"\r\n [style.width]=\"rightSidebarWidth\">\r\n <ng-template [ngTemplateOutlet]=\"rightSidebar\"></ng-template>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"rightSidebarSticky\">\r\n <div class=\"particle_layout_sidebar height100\"\r\n [style.display]=\"window.innerWidth <= breakpoint ? 'none' : ''\"\r\n [style.width]=\"rightSidebarWidth\">\r\n <div class=\"row column sticky_sidebar\"\r\n [ngClass]=\"rightSidebarContainerClassList\"\r\n [style.height]=\"stickySidebarHeight\">\r\n <ng-template [ngTemplateOutlet]=\"rightSidebar\"></ng-template>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-container *ngIf=\"mobileSidebarEnabled && rightSidebarCollapsedTabOffset >= 0\">\r\n <div [style.visibility]=\"window.innerWidth <= breakpoint ? 'visible' : 'hidden'\"\r\n [style.opacity]=\"window.innerWidth <= breakpoint ? '1' : '0'\"\r\n [style.top]=\"rightSidebarCollapsedTabOffset + 'px'\"\r\n style=\"z-index: var(--z-frame);\"\r\n class=\"particle_scroll_button mar_right10 mar_bot15\">\r\n <button\r\n (click)=\"slideover.open()\"\r\n class=\"access btn pad_10 brad_3 brdr content_color\"\r\n type=\"button\">\r\n <span class=\"icon slide_left\"><i class=\"fas fa-chevron-left\"></i></span>\r\n </button>\r\n </div>\r\n\r\n <particle-slideover\r\n position=\"right\"\r\n [width]=\"rightSidebarWidth\"\r\n [breakpoint]=\"1\"\r\n #slideover\r\n >\r\n <div class=\"min_h40 header_color\">\r\n\r\n </div>\r\n <div class=\"particle_layout_sidebar height100\"\r\n [ngClass]=\"rightSidebarContainerClassList + ' ' + collapsedClassList\">\r\n <ng-template [ngTemplateOutlet]=\"rightSidebar\"></ng-template>\r\n </div>\r\n </particle-slideover>\r\n</ng-container>\r\n","import {Component, HostListener, Input, TemplateRef, ViewChild} from '@angular/core';\r\nimport {SlideoverComponent} from '../../../slideover/slideover.component';\r\n\r\n@Component({\r\n selector: 'particle-layout-full-framing',\r\n templateUrl: './layout-full-framing.component.html'\r\n})\r\nexport class LayoutFullFramingComponent {\r\n\r\n @Input()\r\n mainContent: TemplateRef<any> = null as any;\r\n\r\n @Input()\r\n rightSidebar: TemplateRef<any> = null as any;\r\n\r\n @Input()\r\n header: TemplateRef<any> = null as any;\r\n\r\n @Input()\r\n footer: TemplateRef<any> = null as any;\r\n\r\n @Input()\r\n mainContentContainerClassList = '';\r\n\r\n @Input()\r\n rightSidebarContainerClassList = '';\r\n\r\n @Input()\r\n headerClassList = '';\r\n\r\n @Input()\r\n footerClassList = '';\r\n\r\n @Input()\r\n headerHeight: string = '0';\r\n\r\n @Input()\r\n footerHeight: string = '0';\r\n\r\n @Input()\r\n rightSidebarWidth: string = '250px';\r\n\r\n @Input()\r\n breakpoint: number = 1024;\r\n\r\n @Input()\r\n rightSidebarCollapsedTabOffset = 150;\r\n\r\n @Input()\r\n collapsedClassList = '';\r\n\r\n @Input()\r\n mobileSidebarEnabled = true;\r\n\r\n @ViewChild('slideover')\r\n slideover: SlideoverComponent = null as any;\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event: any): void {\r\n if (this.mobileSidebarEnabled && event.target.innerWidth > 768 && this.slideover && this.slideover.slideoverOpen) {\r\n this.slideover.close();\r\n }\r\n }\r\n\r\n protected readonly window = window;\r\n\r\n get stickySidebarHeight(): string {\r\n const offset: number = +this.headerHeight.replace(/\\D/g, \"\") +\r\n +this.footerHeight.replace(/\\D/g, \"\");\r\n\r\n return `calc(100vh - ${offset}px)`;\r\n }\r\n\r\n get contentSidebarHeight(): string {\r\n const offset: number = +this.headerHeight.replace(/\\D/g, \"\") +\r\n +this.footerHeight.replace(/\\D/g, \"\");\r\n\r\n return `calc(100% - ${offset}px)`;\r\n }\r\n\r\n}\r\n","<div class=\"width100 height100\">\r\n <div class=\"width100 header_sticky\" [ngClass]=\"headerClassList\" [style.height]=\"headerHeight\">\r\n <ng-template [ngTemplateOutlet]=\"header\"></ng-template>\r\n </div>\r\n\r\n <div class=\"row ent_r2l_row\" [style.height]=\"contentSidebarHeight\">\r\n <div class=\"row column space_between height100\"\r\n [ngClass]=\"mainContentContainerClassList\">\r\n <ng-template [ngTemplateOutlet]=\"mainContent\"></ng-template>\r\n </div>\r\n\r\n <div class=\"col particle_layout_sidebar height100\"\r\n [style.width]=\"rightSidebarWidth\"\r\n [style.display]=\"window.innerWidth <= breakpoint ? 'none' : ''\"\r\n >\r\n <div class=\"row column sticky_sidebar height100\"\r\n [ngClass]=\"rightSidebarContainerClassList\"\r\n [style.height]=\"stickySidebarHeight\"\r\n [style.top]=\"headerHeight\">\r\n <ng-template [ngTemplateOutlet]=\"rightSidebar\"></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"width100 footer_sticky\" [ngClass]=\"footerClassList\" [style.height]=\"footerHeight\">\r\n <ng-template [ngTemplateOutlet]=\"footer\"></ng-template>\r\n </div>\r\n</div>\r\n\r\n<ng-container *ngIf=\"mobileSidebarEnabled && rightSidebarCollapsedTabOffset >= 0\">\r\n <div [style.visibility]=\"window.innerWidth <= breakpoint ? 'visible' : 'hidden'\"\r\n [style.opacity]=\"window.innerWidth <= breakpoint ? '1' : '0'\"\r\n [style.top]=\"rightSidebarCollapsedTabOffset + 'px'\"\r\n style=\"z-index: var(--z-frame);\"\r\n class=\"particle_scroll_button mar_right10 mar_bot15\">\r\n <button\r\n (click)=\"slideover.open()\"\r\n class=\"access btn pad_10 brad_3 brdr content_color\"\r\n type=\"button\">\r\n <span class=\"icon slide_left\"><i class=\"fas fa-chevron-left\"></i></span>\r\n </button>\r\n </div>\r\n\r\n <particle-slideover\r\n position=\"right\"\r\n [width]=\"rightSidebarWidth\"\r\n [breakpoint]=\"1\"\r\n #slideover\r\n >\r\n <div class=\"min_h40 header_color\">\r\n\r\n </div>\r\n <div class=\"particle_layout_sidebar height100\"\r\n [ngClass]=\"rightSidebarContainerClassList + ' ' + collapsedClassList\">\r\n <ng-template [ngTemplateOutlet]=\"rightSidebar\"></ng-template>\r\n </div>\r\n </particle-slideover>\r\n</ng-container>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LayoutFullwidthSidebarComponent } from './components/layout-fullwidth-sidebar/layout-fullwidth-sidebar.component';\r\nimport { LayoutFullFramingComponent } from './components/layout-full-framing/layout-full-framing.component';\r\nimport {ParticleSlideoverModule} from '../slideover/particle-slideover.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n LayoutFullwidthSidebarComponent,\r\n LayoutFullFramingComponent\r\n ],\r\n exports: [\r\n LayoutFullwidthSidebarComponent,\r\n LayoutFullFramingComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n ParticleSlideoverModule\r\n ]\r\n})\r\nexport class ParticleLayoutModule { }\r\n","import {ChangeDetectorRef, Component, EventEmitter, forwardRef, Input, Output} from '@angular/core';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {ToggleOptions} from './models/toggle-options.model';\r\nimport {BehaviorSubject} from 'rxjs';\r\n\r\n@Component({\r\n selector: 'particle-toggle-switch',\r\n templateUrl: './toggle-switch.component.html',\r\n styleUrls: ['./toggle-switch.component.css'],\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ToggleSwitchComponent),\r\n multi: true\r\n }]\r\n})\r\nexport class ToggleSwitchComponent implements ControlValueAccessor {\r\n\r\n private _options$ = new BehaviorSubject<ToggleOptions>({\r\n affirmativeColorClass: 'ok_button_color',\r\n affirmativeLabel: 'On',\r\n affirmativeIcon: 'fas fa-check',\r\n negativeColorClass: 'cancel_button_color',\r\n negativeLabel: 'Off',\r\n negativeIcon: 'fas fa-times',\r\n accessibilityLabel: 'Toggle Switch',\r\n } as ToggleOptions);\r\n\r\n options$ = this._options$.asObservable();\r\n\r\n @Input()\r\n set options(options: ToggleOptions) {\r\n if (!options.negativeIcon) {\r\n options.negativeIcon = 'mar_right5';\r\n }\r\n\r\n if (!options.affirmativeIcon) {\r\n options.affirmativeIcon = 'mar_right5';\r\n }\r\n\r\n this._options$.next(options);\r\n }\r\n\r\n @Input()\r\n disabled: boolean = false;\r\n\r\n @Output()\r\n // eslint-disable-next-line @angular-eslint/no-output-native\r\n change = new EventEmitter<boolean>();\r\n\r\n private _value: boolean = null as any;\r\n\r\n get value(): boolean {\r\n return this._value;\r\n }\r\n\r\n set value(value: boolean) {\r\n if (value !== this._value) {\r\n this._value = value;\r\n if (this.onChange) {\r\n this.onChange(value);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Function called on change\r\n */\r\n onChange: ((value: boolean) => void) | undefined;\r\n\r\n /**\r\n * Function called on touch\r\n */\r\n onTouched: (() => void) | undefined;\r\n\r\n constructor(\r\n private changeDetectorRef: ChangeDetectorRef\r\n ) { }\r\n\r\n handleClick(): void {\r\n this.value = !this._value;\r\n this.change.emit(this._value);\r\n }\r\n\r\n /**\r\n * Register function on change\r\n * @param fn the function to register\r\n */\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Register function on touch\r\n * @param fn the function to register\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Set the disabled state\r\n * @param isDisabled disabled or not\r\n */\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n writeValue(value: boolean): void {\r\n if (value !== this._value) {\r\n this.value = value;\r\n }\r\n }\r\n\r\n}\r\n","<ng-container *ngIf=\"options$ | async as options\">\r\n <button\r\n (click)=\"handleClick()\"\r\n [attr.aria-label]=\"options.accessibilityLabel\"\r\n [disabled]=\"disabled\"\r\n [ngClass]=\"value ? options.affirmativeColorClass : options.negativeColorClass\"\r\n class=\"access btn sm v_center hov_glow p_toggle_button\"\r\n >\r\n <ng-container *ngIf=\"value else negativeSelected\" [ngTemplateOutlet]=\"affirmativeSelected\"></ng-container>\r\n </button>\r\n\r\n <ng-template #negativeSelected>\r\n <div class=\"content_color p_toggle_shadow p_toggle_status\" [style.min-width]=\"options.toggleSwitchWidth + 'px'\">\r\n <i [ngClass]=\"options.negativeIcon\" class=\"fa-fw\"></i>\r\n </div>\r\n <div class=\"opac_50 p_toggle_status\" [style.min-width]=\"(options.toggleTrackWidth - options.toggleSwitchWidth) + 'px'\">\r\n {{options.negativeLabel}}\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #affirmativeSelected>\r\n <div class=\"opac_50 p_toggle_status\" [style.min-width]=\"(options.toggleTrackWidth - options.toggleSwitchWidth) + 'px'\">\r\n {{options.affirmativeLabel}}\r\n </div>\r\n <div class=\"content_color p_toggle_shadow p_toggle_status\" [style.min-width]=\"options.toggleSwitchWidth + 'px'\">\r\n <i [ngClass]=\"options.affirmativeIcon\" class=\"fa-fw mar_right5\"></i>\r\n </div>\r\n </ng-template>\r\n</ng-container>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ToggleSwitchComponent } from './toggle-switch.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ToggleSwitchComponent\r\n ],\r\n exports: [\r\n ToggleSwitchComponent\r\n ],\r\n imports: [\r\n CommonModule\r\n ]\r\n})\r\nexport class ParticleToggleSwitchModule { }\r\n","import {ChangeDetectorRef, Component, forwardRef, Input, OnInit} from '@angular/core';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\r\nimport {CheckboxText} from '../../shared/models/particle-component-text.model';\r\n\r\n@Component({\r\n selector: 'particle-checkbox',\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.css'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CheckboxComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class CheckboxComponent implements ControlValueAccessor {\r\n\r\n _value: boolean = false;\r\n private _disabled = false;\r\n onChange: (value: any) => void = () => {};\r\n onTouched: () => any = () => {};\r\n\r\n @Input()\r\n set disabled(disabled: boolean) {\r\n this._disabled = coerceBooleanProperty(disabled);\r\n }\r\n\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n @Input()\r\n set value(value: string | boolean) {\r\n if (typeof value === 'string') {\r\n this._value = value.toUpperCase() === 'Y';\r\n this.type = 'string';\r\n } else {\r\n this._value = value;\r\n this.type = 'boolean';\r\n }\r\n }\r\n\r\n get value(): string | boolean {\r\n if (this.type === 'boolean') {\r\n return this._value;\r\n }\r\n\r\n return this._value ? 'Y' : 'N';\r\n }\r\n\r\n @Input()\r\n size: number = 30;\r\n\r\n @Input()\r\n inputId: string = null as any;\r\n\r\n @Input()\r\n text: CheckboxText = {\r\n check: 'Check the Box',\r\n uncheck: 'Uncheck the Box'\r\n } as CheckboxText;\r\n\r\n type: string = 'boolean';\r\n\r\n constructor(\r\n private changeDetectorRef: ChangeDetectorRef\r\n ) { }\r\n\r\n /**\r\n * Write value\r\n * @param value the value to write\r\n */\r\n writeValue(value: string): void {\r\n this.value = value;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Register control value accessor change function\r\n * @param fn the function to register\r\n */\r\n registerOnChange(fn: (value: any) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Register touch handler\r\n * @param fn the touch handler to register\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Set the disabled state\r\n * @param isDisabled whether or not the component should be disabled\r\n */\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n click(): void {\r\n this._value = !this._value;\r\n this.onChange(this.value);\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n}\r\n","<div\r\n class=\"access ptl_input_bg_color ptl_brdr_color ptl_brdr_size ptl_brdr_radius\"\r\n [style.height]=\"size + 'px'\" [style.width]=\"size + 'px'\" [style.min-width]=\"size + 'px'\" [style.min-height]=\"size + 'px'\"\r\n>\r\n <button\r\n class=\"access btn clear width100 height100\"\r\n tabindex=\"0\"\r\n role=\"checkbox\"\r\n type=\"button\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-label]=\"_value ? text.uncheck : text.check\"\r\n (click)=\"click()\">\r\n <!-- show if checked state -->\r\n\r\n <div *ngIf=\"_value\">\r\n <i class=\"fas fa-check fa-fw\" [style.font-size]=\"(size / 2) + 'px'\"></i>\r\n </div>\r\n </button>\r\n\r\n <input type=\"hidden\"\r\n [id]=\"inputId\"\r\n [value]=\"value\"\r\n #hiddenInput />\r\n</div>\r\n\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CheckboxComponent } from './checkbox.component';\nimport {ReactiveFormsModule} from '@angular/forms';\n\n\n\n@NgModule({\n declarations: [\n CheckboxComponent\n ],\n exports: [\n CheckboxComponent\n ],\n imports: [\n CommonModule,\n ReactiveFormsModule\n ]\n})\nexport class ParticleCheckboxModule { }\n","import {\n Component,\n ElementRef,\n OnInit,\n Input,\n forwardRef,\n Output,\n EventEmitter,\n ViewChild\n} from '@angular/core';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\nexport const INPUTMASK_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputMaskComponent),\n multi: true\n};\n@Component({\n selector: 'particle-input-mask',\n template: `<input #input [attr.id]=\"inputId\" [attr.type]=\"type\" [attr.name]=\"name\" [ngStyle]=\"style\" [ngClass]=\"styleClass\" [attr.placeholder]=\"placeholder\"\n [attr.size]=\"size\" [attr.autocomplete]=\"autocomplete\" [attr.maxlength]=\"maxlength\" [attr.tabindex]=\"tabindex\" [attr.aria-label]=\"ariaLabel\" [attr.aria-required]=\"ariaRequired\" [disabled]=\"disabled\" [readonly]=\"readonly\" [attr.required]=\"required\"\n (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\" (keydown)=\"onKeyDown($event)\" (keypress)=\"onKeyPress($event)\" [attr.autofocus]=\"autoFocus\"\n (input)=\"onInputChange($event)\" (paste)=\"handleInputChange($event)\" (click)=\"onClick()\">`,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[class.ui-inputwrapper-filled]': 'filled',\n '[class.ui-inputwrapper-focus]': 'focus'\n },\n providers: [INPUTMASK_VALUE_ACCESSOR]\n})\nexport class InputMaskComponent implements OnInit, ControlValueAccessor {\n @Input() type = 'text';\n @Input() slotChar = '_';\n @Input() autoClear = true;\n @Input() style: any;\n @Input() inputId: string = null as any;\n @Input() styleClass: string = null as any;\n @Input() placeholder: string = null as any;\n @Input() size: number = null as any;\n @Input() maxlength: number = null as any;\n @Input() tabindex: string = null as any;\n @Input() ariaLabel: string = null as any;\n @Input() ariaRequired: boolean = null as any;\n @Input() disabled: boolean = null as any;\n @Input() readonly: boolean = null as any;\n @Input() unmask: boolean = null as any;\n @Input() name: string = null as any;\n @Input() required: boolean = null as any;\n @Input() characterPattern = '[A-Za-z]';\n @Input() autoFocus = false;\n @Input() autocomplete: string = null as any;\n @ViewChild('input', { static: true }) inputViewChild: ElementRef = null as any;\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onComplete: EventEmitter<any> = new EventEmitter();\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onFocus: EventEmitter<any> = new EventEmitter();\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onBlur: EventEmitter<any> = new EventEmitter();\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onInput: EventEmitter<any> = new EventEmitter();\n value: any;\n _mask: string = null as any;\n input: HTMLInputElement = null as any;\n filled = false;\n defs: any;\n tests: any[] = null as any;\n partialPosition: any;\n firstNonMaskPos: number = null as any;\n lastRequiredNonMaskPos: any;\n len: number = null as any;\n oldVal: string = null as any;\n buffer: any;\n defaultBuffer: string = null as any;\n focusText: string = null as any;\n caretTimeoutId: any;\n androidChrome = false;\n focused = false;\n onModelChange: Function = () => {};\n onModelTouched: Function = () => {};\n constructor() {}\n ngOnInit(): void {\n const ua = navigator.userAgent;\n this.androidChrome = /chrome/i.test(ua) && /android/i.test(ua);\n this.initMask();\n }\n @Input() get mask(): string {\n return this._mask;\n }\n set mask(val: string) {\n this._mask = val;\n this.initMask();\n this.writeValue('');\n this.onModelChange(this.value);\n }\n initMask(): void {\n this.tests = [];\n this.partialPosition = this.mask.length;\n this.len = this.mask.length;\n this.firstNonMaskPos = null as any;\n this.defs = {\n '9': '[0-9]',\n 'a': this.characterPattern,\n '*': `${this.characterPattern}|[0-9]`\n };\n const maskTokens = this.mask.split('');\n for (let i = 0; i < maskTokens.length; i++) {\n const c = maskTokens[i];\n if (c === '?') {\n this.len--;\n this.partialPosition = i;\n } else if (this.defs[c]) {\n this.tests.push(new RegExp(this.defs[c]));\n if (this.firstNonMaskPos === null) {\n this.firstNonMaskPos = this.tests.length - 1;\n }\n if (i < this.partialPosition) {\n this.lastRequiredNonMaskPos = this.tests.length - 1;\n }\n } else {\n this.tests.push(null);\n }\n }\n this.buffer = [];\n for (let i = 0; i < maskTokens.length; i++) {\n const c = maskTokens[i];\n if (c !== '?') {\n if (this.defs[c]) {\n this.buffer.push(this.getPlaceholder(i));\n } else {\n this.buffer.push(c);\n }\n }\n }\n this.defaultBuffer = this.buffer.join('');\n }\n writeValue(value: any): void {\n this.value = value;\n if (this.inputViewChild && this.inputViewChild.nativeElement) {\n if (this.value === undefined || this.value == null) {\n this.inputViewChild.nativeElement.value = '';\n } else {\n this.inputViewChild.nativeElement.value = this.value;\n }\n this.checkVal();\n this.focusText = this.inputViewChild.nativeElement.value;\n this.updateFilledState();\n }\n }\n registerOnChange(fn: Function): void {\n this.onModelChange = fn;\n }\n registerOnTouched(fn: Function): void {\n this.onModelTouched = fn;\n }\n setDisabledState(val: boolean): void {\n this.disabled = val;\n }\n caret(first?: number, last?: number): any {\n let range, begin, end;\n if (!this.inputViewChild.nativeElement.offsetParent || this.inputViewChild.nativeElement !== document.activeElement) {\n return;\n }\n if (typeof first === 'number') {\n begin = first;\n end = (typeof last === 'number') ? last : begin;\n if (this.inputViewChild.nativeElement.setSelectionRange) {\n this.inputViewChild.nativeElement.setSelectionRange(begin, end);\n } else if (this.inputViewChild.nativeElement['createTextRange']) {\n range = this.inputViewChild.nativeElement['createTextRange']();\n range.collapse(true);\n range.moveEnd('character', end);\n range.moveStart('character', begin);\n range.select();\n }\n } else {\n if (this.inputViewChild.nativeElement.setSelectionRange) {\n begin = this.inputViewChild.nativeElement.selectionStart;\n end = this.inputViewChild.nativeElement.selectionEnd;\n } else if ((document as any)['selection'] && (document as any)['selection'].createRange) {\n range = (document as any)['selection'].createRange();\n begin = 0 - range.duplicate().moveStart('character', -100000);\n end = begin + range.text.length;\n }\n return {begin: begin, end: end};\n }\n return null;\n }\n isCompleted(): boolean {\n for (let i = this.firstNonMaskPos; i <= this.lastRequiredNonMaskPos; i++) {\n if (this.tests[i] && this.buffer[i] === this.getPlaceholder(i)) {\n return false;\n }\n }\n return true;\n }\n getPlaceholder(i: number): string {\n if (i < this.slotChar.length) {\n return this.slotChar.charAt(i);\n }\n return this.slotChar.charAt(0);\n }\n seekNext(pos: number): number {\n while (++pos < this.len && !this.tests[pos]) {}\n return pos;\n }\n seekPrev(pos: number): number {\n while (--pos >= 0 && !this.tests[pos]) {}\n return pos;\n }\n shiftL(begin: number, end: number): void {\n let i, j;\n if (begin < 0) {\n return;\n }\n for (i = begin, j = this.seekNext(end); i < this.len; i++) {\n if (this.tests[i]) {\n if (j < this.len && this.tests[i].test(this.buffer[j])) {\n this.buffer[i] = this.buffer[j];\n this.buffer[j] = this.getPlaceholder(j);\n } else {\n break;\n }\n j = this.seekNext(j);\n }\n }\n this.writeBuffer();\n this.caret(Math.max(this.firstNonMaskPos, begin));\n }\n shiftR(pos: number): void {\n let i, c, j, t;\n for (i = pos, c = this.getPlaceholder(pos); i < this.len; i++) {\n if (this.tests[i]) {\n j = this.seekNext(i);\n t = this.buffer[i];\n this.buffer[i] = c;\n if (j < this.len && this.tests[j].test(t)) {\n c = t;\n } else {\n break;\n }\n }\n }\n }\n handleAndroidInput(e: Event): void {\n const curVal = this.inputViewChild.nativeElement.value;\n const pos = this.caret() as any;\n if (this.oldVal && this.oldVal.length && this.oldVal.length > curVal.length ) {\n // a deletion or backspace happened\n this.checkVal(true);\n while (pos.begin > 0 && !this.tests[pos.begin - 1]) {\n pos.begin--;\n }\n if (pos.begin === 0) {\n while (pos.begin < this.firstNonMaskPos && !this.tests[pos.begin]) {\n pos.begin++;\n }\n }\n setTimeout(() => {\n this.caret(pos.begin, pos.begin);\n this.updateModel(e);\n if (this.isCompleted()) {\n this.onComplete.emit();\n }\n }, 0);\n } else {\n this.checkVal(true);\n while (pos.begin < this.len && !this.tests[pos.begin]) {\n pos.begin++;\n }\n setTimeout(() => {\n this.caret(pos.begin, pos.begin);\n this.updateModel(e);\n if (this.isCompleted()) {\n this.onComplete.emit();\n }\n }, 0);\n }\n }\n onInputBlur(e: Event): void {\n this.focused = false;\n this.onModelTouched();\n this.checkVal();\n this.updateFilledState();\n this.onBlur.emit(e);\n if (this.inputViewChild.nativeElement.value !== this.focusText || this.inputViewChild.nativeElement.value !== this.value) {\n this.updateModel(e);\n const event = document.createEvent('HTMLEvents');\n event.initEvent('change', true, false);\n this.inputViewChild.nativeElement.dispatchEvent(event);\n }\n }\n onKeyDown(e: KeyboardEvent): void {\n if (this.readonly) {\n return;\n }\n const k = e.which || e.keyCode;\n let pos,\n begin,\n end;\n const iPhone = /iphone/i.test(navigator.userAgent);\n this.oldVal = this.inputViewChild.nativeElement.value;\n // backspace, delete, and escape get special treatment\n if (k === 8 || k === 46 || (iPhone && k === 127)) {\n pos = this.caret() as any;\n begin = pos.begin;\n end = pos.end;\n if (end - begin === 0) {\n begin = k !== 46 ? this.seekPrev(begin) : (end = this.seekNext(begin - 1));\n end = k === 46 ? this.seekNext(end) : end;\n }\n this.clearBuffer(begin, end);\n this.shiftL(begin, end - 1);\n this.updateModel(e);\n e.preventDefault();\n } else if ( k === 13 ) { // enter\n this.onInputBlur(e);\n this.updateModel(e);\n } else if (k === 27) { // escape\n this.inputViewChild.nativeElement.value = this.focusText;\n this.caret(0, this.checkVal());\n this.updateModel(e);\n e.preventDefault();\n } else if (e.key === 'ArrowLeft') {\n const { selectionStart, selectionEnd } = this.inputViewChild.nativeElement as HTMLInputElement;\n const checkedVal = this.checkVal(true);\n if (selectionStart === selectionEnd && (selectionStart as any - 1) > checkedVal) {\n this.caret(checkedVal, checkedVal);\n e.preventDefault();\n }\n } else if (e.key === 'ArrowRight') {\n const { selectionStart, selectionEnd } = this.inputViewChild.nativeElement as HTMLInputElement;\n const checkedVal = this.checkVal(true);\n if (selectionStart === selectionEnd && (selectionStart as any + 1) > checkedVal) {\n this.caret(checkedVal, checkedVal);\n e.preventDefault();\n }\n }\n }\n onKeyPress(e: KeyboardEvent): void {\n if (this.readonly) {\n return;\n }\n const k = e.which || e.keyCode;\n const pos = this.caret() as any;\n let next = 0;\n let p, c, completed;\n if (e.ctrlKey || e.altKey || e.metaKey || k < 32 || (k > 34 && k < 41)) {// Ignore\n return;\n } else if ( k && k !== 13 ) {\n if (pos.end - pos.begin !== 0) {\n this.clearBuffer(pos.begin, pos.end);\n this.shiftL(pos.begin, pos.end - 1);\n }\n p = this.seekNext(pos.begin - 1);\n if (p < this.len) {\n c = String.fromCharCode(k);\n if (this.tests[p].test(c)) {\n this.shiftR(p);\n this.buffer[p] = c;\n this.writeBuffer();\n next = this.seekNext(p);\n if (/android/i.test(navigator.userAgent)) {\n // Path for CSP Violation on FireFox OS 1.1\n const proxy = (): void => {\n this.caret(next);\n };\n setTimeout(proxy, 0);\n } else {\n this.caret(next);\n }\n if (pos.begin <= this.lastRequiredNonMaskPos) {\n completed = this.isCompleted();\n }\n }\n }\n e.preventDefault();\n }\n this.updateModel(e);\n this.updateFilledState();\n if (completed) {\n this.onComplete.emit();\n }\n }\n /**\n * Adjust cursor position if clicked on empty space ahead of the existing input\n */\n onClick(): void {\n const { selectionStart, selectionEnd } = this.inputViewChild.nativeElement as HTMLInputElement;\n const checkedVal = this.checkVal(true);\n if (selectionStart === selectionEnd && selectionStart as any > checkedVal) {\n this.caret(checkedVal, checkedVal);\n }\n }\n clearBuffer(start: number, end: number): void {\n let i;\n for (i = start; i < end && i < this.len; i++) {\n if (this.tests[i]) {\n this.buffer[i] = this.getPlaceholder(i);\n }\n }\n }\n writeBuffer(): void {\n this.inputViewChild.nativeElement.value = this.buffer.join('');\n }\n checkVal(allow?: boolean): number {\n // try to place characters where they belong\n const test = this.inputViewChild.nativeElement.value;\n let lastMatch = -1,\n i,\n c,\n pos;\n for (i = 0, pos = 0; i < this.len; i++) {\n if (this.tests[i]) {\n this.buffer[i] = this.getPlaceholder(i);\n while (pos++ < test.length) {\n c = test.charAt(pos - 1);\n if (this.tests[i].test(c)) {\n this.buffer[i] = c;\n lastMatch = i;\n break;\n }\n }\n if (pos > test.length) {\n this.clearBuffer(i + 1, this.len);\n break;\n }\n } else {\n if (this.buffer[i] === test.charAt(pos)) {\n pos++;\n }\n if ( i < this.partialPosition) {\n lastMatch = i;\n }\n }\n }\n if (allow) {\n this.writeBuffer();\n } else if (lastMatch + 1 < this.partialPosition) {\n if (this.autoClear || this.buffer.join('') === this.defaultBuffer) {\n // Invalid value. Remove it and replace it with the\n // mask, which is the default behavior.\n if (this.inputViewChild.nativeElement.value) {\n this.inputViewChild.nativeElement.value = '';\n }\n this.clearBuffer(0, this.len);\n } else {\n // Invalid value, but we opt to show the value to the\n // user and allow them to correct their mistake.\n this.writeBuffer();\n }\n } else {\n this.writeBuffer();\n this.inputViewChild.nativeElement.value = this.inputViewChild.nativeElement.value.substring(0, lastMatch + 1);\n }\n return (this.partialPosition ? i : this.firstNonMaskPos);\n }\n onInputFocus(event: Event): void {\n if (this.readonly) {\n return;\n }\n this.focused = true;\n clearTimeout(this.caretTimeoutId);\n let pos: number;\n this.focusText = this.inputViewChild.nativeElement.value;\n pos = this.checkVal();\n this.caretTimeoutId = setTimeout(() => {\n if (this.inputViewChild.nativeElement !== document.activeElement) {\n return;\n }\n this.writeBuffer();\n if (pos === this.mask.replace('?', '').length) {\n this.caret(0, pos);\n } else {\n this.caret(pos);\n }\n }, 10);\n this.onFocus.emit(event);\n }\n onInputChange(event: Event): void {\n if (this.androidChrome) {\n this.handleAndroidInput(event);\n } else {\n this.handleInputChange(event);\n }\n this.onInput.emit(event);\n }\n handleInputChange(event: Event): void {\n if (this.readonly) {\n return;\n }\n setTimeout(() => {\n const pos = this.checkVal(true);\n this.caret(pos);\n this.updateModel(event);\n if (this.isCompleted()) {\n this.onComplete.emit();\n }\n }, 0);\n }\n getUnmaskedValue(): string {\n const unmaskedBuffer = [];\n for (let i = 0; i < this.buffer.length; i++) {\n const c = this.buffer[i];\n if (this.tests[i] && c !== this.getPlaceholder(i)) {\n unmaskedBuffer.push(c);\n }\n }\n return unmaskedBuffer.join('');\n }\n updateModel(e: any): void {\n const updatedValue = this.unmask ? this.getUnmaskedValue() : e.target?.value;\n if (updatedValue !== null && updatedValue !== undefined) {\n this.value = updatedValue;\n this.onModelChange(this.value);\n }\n }\n updateFilledState(): void {\n this.filled = this.inputViewChild.nativeElement && this.inputViewChild.nativeElement.value !== '';\n }\n focus(): void {\n this.inputViewChild.nativeElement.focus();\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {InputMaskComponent} from './input-mask.component';\n\n@NgModule({\n imports: [CommonModule],\n exports: [InputMaskComponent],\n declarations: [InputMaskComponent]\n})\nexport class ParticleInputMaskModule {\n}\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'particle-progress-bar',\n templateUrl: './progress-bar.component.html',\n styleUrls: ['./progress-bar.component.css']\n})\nexport class ProgressBarComponent {\n\n private _percentComplete: number = 0;\n\n @Input()\n set percentComplete(percentComplete: number) {\n this._percentComplete = Math.floor(percentComplete);\n }\n\n get percentComplete(): number {\n return this._percentComplete;\n }\n\n @Input()\n backgroundColorClass: string = 'content_color_dark_1';\n\n @Input()\n progressColorClass: string = 'bg_blue';\n\n @Input()\n showPercentComplete: boolean = true;\n\n @Input()\n borderRadius: number = 9999;\n\n @Input()\n height: number = 20;\n\n @Input()\n showBorder: boolean = true;\n\n @Input()\n showMovement: boolean = false;\n\n constructor() { }\n\n}\n","<div [ngClass]=\"showBorder ? backgroundColorClass + ' brdr' : backgroundColorClass\"\n [style.border-radius]=\"borderRadius + 'px'\"\n [style.height]=\"height ? height + 'px' : ''\"\n>\n <div class=\"container_progress\"\n [ngClass]=\"progressColorClass + (showMovement ? ' progress_movement' : '')\"\n [style.width]=\"percentComplete + '%'\"\n [style.border-radius]=\"borderRadius + 'px'\"\n [style.height]=\"height ? (showBorder ? (height - 2) : height) + 'px' : ''\"\n [style.font-size]=\"height < 20 ? '65%' : ''\"\n >\n <ng-container *ngIf=\"(showPercentComplete && height >= 10) else blank\">\n {{percentComplete}}%\n </ng-container>\n <ng-template #blank>&nbsp;</ng-template>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ProgressBarComponent } from './progress-bar.component';\n\n@NgModule({\n declarations: [\n ProgressBarComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n ProgressBarComponent\n ]\n})\nexport class ParticleProgressBarModule { }\n","import {Component, Input} from '@angular/core';\nimport {LoaderText} from '../../../shared/models/particle-component-text.model';\n\n@Component({\n selector: 'particle-loader',\n templateUrl: './loader.component.html',\n styleUrls: ['./loader.component.css']\n})\nexport class LoaderComponent {\n\n @Input()\n text: LoaderText = {\n loadingText: 'Loading',\n } as LoaderText;\n\n @Input()\n disableText: boolean = false;\n\n protected backgroundStyle: string | undefined;\n\n private _colors: Array<string> | undefined;\n\n @Input()\n set colors(colors: Array<string>) {\n if (colors.length === 3) {\n this._colors = colors;\n this.backgroundStyle = 'linear-gradient(to right, rgba(0,0,0,0) 0%, ' + colors[0] + ' 33%, ' + colors[1] + ' 50% , ' + colors[2] + ' 66%, rgba(0,0,0,0) 100%)';\n }\n }\n\n}\n","<div class=\"row column center_center height100\" style=\"max-width: 250px;\">\r\n <div class=\"ptl_loader\">\r\n <div class=\"ptl_loader__progress\" [style.background]=\"backgroundStyle ?? ''\"></div>\r\n </div>\r\n <ng-container *ngIf=\"!disableText\">\r\n <div *ngIf=\"text.loadingText\" class=\"text md bold text_center mar_top15 ent_r2l_txt\" style=\"user-select: none;text-align: center !important;\">\r\n {{text.loadingText}}<span class=\"one\">.</span><span class=\"two\">.</span><span class=\"three\">.</span>\r\n </div>\r\n <div *ngIf=\"text.loadingSubtext\" class=\"text sm text_center mar_top5 ent_r2l_txt\" style=\"user-select: none;text-align: center !important;\">\r\n {{text.loadingSubtext}}\r\n </div>\r\n </ng-container>\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LoaderComponent } from './components/loader.component';\n\n\n\n@NgModule({\n declarations: [\n LoaderComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n LoaderComponent\n ]\n})\nexport class ParticleLoaderModule { }\n","import {Injectable} from '@angular/core';\nimport {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http';\nimport {Observable} from 'rxjs';\n\n/**\n * This interceptor will force the Content-Type header to application/json so that each http call doesn't have to.\n */\n@Injectable()\nexport class JsonInterceptor implements HttpInterceptor {\n\n /**\n * Intercept method to set the content type header.\n *\n * @param req\n * @param next\n */\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const clone = req.clone({setHeaders: {'Content-Type': 'application/json'}});\n return next.handle(clone);\n }\n\n}\n","import {catchError, map} from 'rxjs';\nimport {HttpClient, HttpErrorResponse, HttpParams} from '@angular/common/http';\nimport {Observable, of, throwError} from 'rxjs';\n\n/**\n * This class provides some foundational REST endpoint call capabilities. It will do things like unpack lists into native objects and\n * return Observables so that you don't have to deal with mapping each and every response. It'll also log errors to the console and pass\n * along the error text for you.\n */\nexport class BaseDataService {\n\n /**\n * Extensions of this class can provide the Base URL so that they don't need to write out the full URL for every call made.\n */\n protected getBaseUrl(): string {\n return '';\n }\n\n /**\n * If you receive a 404 from an endpoint, you can choose to treat it like a successful empty response\n * by overriding this and returning true.\n *\n * @protected\n */\n protected ignoreNoResultsError(): boolean {\n return false;\n }\n\n /**\n * Takes an HTTPClient object so that it can make REST calls.\n *\n * @param http\n */\n constructor(protected http: HttpClient) {\n }\n\n /**\n * Gets a result from an endpoint. Executes an HTTP GET.\n *\n * @param url\n * @param params\n */\n handleGet(url: string, params?: HttpParams): Observable<any> {\n return this.handleGetDetailed(url, false, params);\n }\n\n /**\n * Will get a single result from an endpoint. Executes an HTTP GET.\n *\n * @param url\n */\n handleGetOne(url: string): Observable<any> {\n return this.handleGet(url).pipe(\n map(d => d),\n catchError(error => this.handleError(error, this.ignoreNoResultsError()))\n );\n }\n\n /**\n * Gets a List of Values. Will unpack the data object automatically. Executes an HTTP GET.\n *\n * @param url\n */\n handleGetList(url: string): Observable<any> {\n return this.handleGet(url).pipe(\n map(d => d.data),\n catchError(error => this.handleError(error, this.ignoreNoResultsError()))\n );\n }\n\n /**\n * Gets a file from an ednpoint. Executes an HTTP GET.\n *\n * @param url\n * @param params\n */\n handleFileGet(url: string, params?: HttpParams): Observable<any> {\n return this.handleGetDetailed(url, true, params);\n }\n\n /**\n * The handleFileGet will use this to get a file.\n *\n * @param url\n * @param isFileResponse\n * @param params\n */\n private handleGetDetailed(url: string, isFileResponse: boolean, params?: HttpParams): Observable<any> {\n const options = this.getOptions(isFileResponse);\n options.params = params;\n\n return this.http.get(this.getBaseUrl() + url, options)\n .pipe(\n map(res => res),\n catchError(error => this.handleError(error, this.ignoreNoResultsError()))\n );\n }\n\n /**\n * Posts data to an endpoint. HTTP POST.\n *\n * @param url\n * @param payload\n */\n handlePost(url: string, payload: any): Observable<any> {\n return this.handlePostDetailed(url, payload, true, false);\n }\n\n /**\n * Posts data to an endpoint with an expected return of a File.\n *\n * @param url\n * @param payload\n */\n handlePostWithFileResponse(url: string, payload: any): Observable<any> {\n return this.handlePostDetailed(url, payload, true, true);\n }\n\n /**\n * The handlePost methods will use this to make Post calls easier.\n *\n * @param url\n * @param payload\n * @param isJson\n * @param isFileResponse\n */\n private handlePostDetailed(url: string, payload: any, isJson: boolean, isFileResponse: boolean): Observable<any> {\n let payloadFinal = payload;\n if (isJson) {\n payloadFinal = JSON.stringify(payload);\n }\n\n return this.http.post(\n this.getBaseUrl() + url,\n payloadFinal,\n this.getOptions(isFileResponse)).pipe(\n map(res => res),\n catchError(error => this.handleError(error, this.ignoreNoResultsError()))\n );\n }\n\n /**\n * Update data with a REST call. HTTP PUT.\n *\n * @param url\n * @param payload\n */\n handlePut(url: string, payload: any): Observable<any> {\n return this.handlePutDetailed(url, payload, true);\n }\n\n /**\n * Used by the handlePut method to make it simpler and the guts more reusable.\n *\n * @param url\n * @param payload\n * @param isJson\n */\n private handlePutDetailed(url: string, payload: any, isJson: boolean): Observable<any> {\n let payloadFinal = payload;\n if (isJson) {\n payloadFinal = JSON.stringify(payload);\n }\n\n return this.http.put(this.getBaseUrl() + url, payloadFinal, this.getOptions())\n .pipe(\n map(res => res),\n catchError(error => this.handleError(error, this.ignoreNoResultsError()))\n );\n }\n\n /**\n * Executes an HTTP DELETE to remove data.\n *\n * @param url\n */\n handleDelete(url: string): Observable<any> {\n return this.http.delete(this.getBaseUrl() + url)\n .pipe(\n map(res => res),\n catchError(error => this.handleError(error, this.ignoreNoResultsError()))\n );\n }\n\n /**\n * Handles an Observable error\n *\n * @param error\n */\n handleObservableError(error: HttpErrorResponse): Observable<any> {\n this.handleError(error, this.ignoreNoResultsError());\n return of(null);\n }\n\n /**\n * Logs an error and rethrows it\n *\n * @param error\n * @param ignoreNoResultsError\n */\n handleError(error: HttpErrorResponse, ignoreNoResultsError: boolean): Observable<any> {\n if (ignoreNoResultsError && error.status === 404) {\n return of({});\n }\n\n console.error(error);\n return throwError(() => error);\n }\n\n /**\n * Performs a deep copy of a JS object.\n *\n * @param o\n */\n deepCopy<T>(o: T): T {\n return <T> JSON.parse(JSON.stringify(o));\n }\n\n /**\n * Gets the expected response type from an endpoint\n *\n * @param isFileResponse\n */\n private getOptions(isFileResponse?: boolean): any {\n const options: any = {};\n options.responseType = 'json';\n\n if (isFileResponse) {\n options.responseType = 'arraybuffer';\n }\n\n return options;\n }\n\n}\n","import {BehaviorSubject, Observable, mergeMap} from 'rxjs';\r\n\r\nexport class ObservableContainer<T> {\r\n\r\n private _subject = new BehaviorSubject(true);\r\n private readonly _obs: Observable<T>;\r\n\r\n constructor(obs: Observable<T>) {\r\n this._obs = this._subject.pipe(\r\n mergeMap(() => obs)\r\n );\r\n }\r\n\r\n refresh(): void {\r\n this._subject.next(true);\r\n }\r\n\r\n get observable(): Observable<T> {\r\n return this._obs;\r\n }\r\n\r\n}\r\n","/**\n * Use this enumeration to set the status of a call to an Endpoint\n */\nexport enum EndpointStatus {\n LOADING,\n SUCCESS,\n NORESULTS,\n ERROR\n}\n","/** MODULES */\r\nexport * from './app/modules/background-carousel/particle-background-carousel.module';\r\nexport * from './app/modules/paginator/particle-paginator.module';\r\nexport * from './app/modules/profile-pic/particle-profile-pic.module';\r\nexport * from './app/modules/push-container/particle-push-container.module';\r\nexport * from './app/modules/rich-text/particle-rich-text.module';\r\nexport * from './app/modules/icons/particle-icons.module';\r\nexport * from './app/modules/endpoint-state/endpoint-state.module';\r\nexport * from './app/modules/dialog/dialog.module';\r\nexport * from './app/modules/idle-timeout/particle-idle-timeout.module';\r\nexport * from './app/modules/date-picker/date-picker.module';\r\nexport * from './app/modules/dropdown/dropdown.module';\r\nexport * from './app/modules/multi-select/multi-select.module';\r\nexport * from './app/modules/ordinal-number-pipe/ordinal-number-pipe.module';\r\nexport * from './app/modules/popover/popover.module';\r\nexport * from './app/modules/tooltip/tooltip.module';\r\nexport * from './app/modules/keyfilter/keyfilter.module';\r\nexport * from './app/modules/notification/notification.module';\r\nexport * from './app/modules/week-picker/week-picker.module';\r\nexport * from './app/modules/color-picker/color-picker.module';\r\nexport * from './app/modules/slider/slider.module';\r\nexport * from './app/modules/accordion/accordion.module';\r\nexport * from './app/modules/theming/theming.module';\r\nexport * from './app/modules/slideover/particle-slideover.module';\r\nexport * from './app/modules/scroll-to-top/particle-scroll-to-top.module';\r\nexport * from './app/modules/layout/layout.module';\r\nexport * from './app/modules/toggle-switch/toggle-switch.module';\r\nexport * from './app/modules/checkbox/checkbox.module';\r\nexport * from './app/modules/input-mask/input-mask.module';\r\nexport * from './app/modules/progress-bar/progress-bar.module';\r\nexport * from './app/modules/loader/loader.module';\r\n\r\n/** DIRECTIVES */\r\nexport * from './app/modules/tooltip/tooltip.directive';\r\nexport * from './app/modules/keyfilter/keyfilter.directive';\r\nexport * from './app/modules/accordion/directives/accordion-content.directive';\r\nexport * from './app/modules/accordion/directives/accordion-item.directive';\r\nexport * from './app/modules/accordion/directives/accordion-header.directive';\r\nexport * from './app/modules/background-carousel/background-carousel.directive';\r\n\r\n/** COMPONENTS */\r\nexport * from './app/modules/icons/components/icon-select.component';\r\nexport * from './app/modules/paginator/paginator.component';\r\nexport * from './app/modules/profile-pic/profile-pic.component';\r\nexport * from './app/modules/push-container/push-container.component';\r\nexport * from './app/modules/rich-text/rich-text.component';\r\nexport * from './app/modules/rich-text/render-rich-text.component';\r\nexport * from './app/modules/endpoint-state/components/endpoint-state.component';\r\nexport * from './app/modules/dialog/dialog.component';\r\nexport * from './app/modules/date-picker/date-picker.component';\r\nexport * from './app/modules/date-picker/components/calendar/calendar.component';\r\nexport * from './app/modules/date-picker/components/date-range-picker/date-range-picker.component';\r\nexport * from './app/modules/dropdown/dropdown.component';\r\nexport * from './app/modules/multi-select/multi-select.component';\r\nexport * from './app/modules/popover/popover.component';\r\nexport * from './app/modules/notification/notification.component';\r\nexport * from './app/modules/week-picker/week-picker.component';\r\nexport * from './app/modules/color-picker/color-picker.component';\r\nexport * from './app/modules/slider/slider.component';\r\nexport * from './app/modules/theming/components/theming.component';\r\nexport * from './app/modules/accordion/accordion.component';\r\nexport * from './app/modules/slideover/slideover.component';\r\nexport * from './app/modules/idle-timeout/idle-timeout.component';\r\nexport * from './app/modules/scroll-to-top/scroll-to-top.component';\r\nexport * from './app/modules/layout/components/layout-fullwidth-sidebar/layout-fullwidth-sidebar.component';\r\nexport * from './app/modules/layout/components/layout-full-framing/layout-full-framing.component';\r\nexport * from './app/modules/toggle-switch/toggle-switch.component';\r\nexport * from './app/modules/checkbox/checkbox.component';\r\nexport * from './app/modules/input-mask/input-mask.component';\r\nexport * from './app/modules/progress-bar/progress-bar.component';\r\nexport * from './app/modules/loader/components/loader.component';\r\n\r\n/** INTERCEPTORS */\r\nexport * from './app/shared/interceptors/json.interceptor';\r\n\r\n/** SERVICES */\r\nexport * from './app/shared/services/base-data.service';\r\nexport * from './app/shared/services/local-storage.service';\r\nexport * from './app/shared/services/dialog.service';\r\nexport * from './app/modules/notification/services/notification.service';\r\nexport * from './app/modules/theming/services/theming.service';\r\nexport * from './app/modules/theming/services/theme-change-detection.service';\r\n\r\n/** PIPES */\r\nexport * from './app/modules/ordinal-number-pipe/ordinal-number.pipe';\r\n\r\n/** MODELS */\r\nexport * from './app/shared/models/auditable.model';\r\nexport * from './app/shared/models/data-list.model';\r\nexport * from './app/shared/models/id.model';\r\nexport * from './app/shared/models/observable-container';\r\n\r\nexport * from './app/modules/paginator/pagination-event.model';\r\nexport * from './app/modules/background-carousel/carousel-options.model';\r\nexport * from './app/modules/dropdown/models/dropdown-option.model';\r\nexport * from './app/modules/dropdown/models/dropdown-option-group.model';\r\nexport * from './app/modules/multi-select/models/multi-select-option.model';\r\nexport * from './app/modules/multi-select/models/multi-select-option-group.model';\r\nexport * from './app/modules/notification/models/notification.model';\r\nexport * from './app/modules/theming/models/theme.model';\r\nexport * from './app/modules/toggle-switch/models/toggle-options.model';\r\nexport * from './app/modules/rich-text/rich-text-capabilities.model';\r\n\r\n/** ENUMS */\r\nexport * from './app/shared/enums/endpoint-status.enum';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i3.PopoverComponent","i1.TooltipDirective","i2.TooltipDirective","i1.DialogService","i3","i4","i5.DialogComponent","i1","i1.IconsService","i4.TooltipDirective","i6.EndpointStateComponent","i1.DialogComponent","i4.OrdinalNumberPipe","i4.CalendarComponent","tap","i4.DatePickerComponent","i5.CalendarComponent","map","i1.NotificationService","withLatestFrom","i1.LocalStorageService","i2.ThemeChangeDetectionService","i1.ThemingService","i3.DropdownComponent","i2.SlideoverComponent"],"mappings":"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"}