@eui/components 19.2.2-snapshot-1746624054534 → 19.2.2-snapshot-1746687278530

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.
Files changed (75) hide show
  1. package/docs/components/EuiAppComponent.html +2 -1
  2. package/docs/components/EuiMenuItemComponent.html +2 -1
  3. package/docs/components/EuiNotificationsComponent.html +1 -0
  4. package/docs/components/EuiNotificationsV2Component.html +1 -0
  5. package/docs/components/EuiToolbarComponent.html +1 -1
  6. package/docs/components/EuiToolbarMenuComponent.html +1 -1
  7. package/docs/components/EuiUserProfileComponent.html +24 -0
  8. package/docs/dependencies.html +2 -2
  9. package/docs/js/menu-wc.js +9 -9
  10. package/docs/js/menu-wc_es5.js +1 -1
  11. package/docs/js/search/search_index.js +2 -2
  12. package/docs/miscellaneous/variables.html +1 -0
  13. package/eui-menu/eui-menu-item.component.d.ts.map +1 -1
  14. package/eui-user-profile/user-profile.component.d.ts +3 -1
  15. package/eui-user-profile/user-profile.component.d.ts.map +1 -1
  16. package/fesm2022/eui-components-eui-accordion.mjs +2 -2
  17. package/fesm2022/eui-components-eui-accordion.mjs.map +1 -1
  18. package/fesm2022/eui-components-eui-alert.mjs +2 -2
  19. package/fesm2022/eui-components-eui-alert.mjs.map +1 -1
  20. package/fesm2022/eui-components-eui-autocomplete.mjs +2 -2
  21. package/fesm2022/eui-components-eui-autocomplete.mjs.map +1 -1
  22. package/fesm2022/eui-components-eui-avatar.mjs +2 -2
  23. package/fesm2022/eui-components-eui-avatar.mjs.map +1 -1
  24. package/fesm2022/eui-components-eui-card.mjs +6 -6
  25. package/fesm2022/eui-components-eui-card.mjs.map +1 -1
  26. package/fesm2022/eui-components-eui-dashboard-card.mjs +2 -2
  27. package/fesm2022/eui-components-eui-dashboard-card.mjs.map +1 -1
  28. package/fesm2022/eui-components-eui-date-range-selector.mjs +4 -4
  29. package/fesm2022/eui-components-eui-date-range-selector.mjs.map +1 -1
  30. package/fesm2022/eui-components-eui-discussion-thread.mjs +4 -4
  31. package/fesm2022/eui-components-eui-discussion-thread.mjs.map +1 -1
  32. package/fesm2022/eui-components-eui-fieldset.mjs +2 -2
  33. package/fesm2022/eui-components-eui-fieldset.mjs.map +1 -1
  34. package/fesm2022/eui-components-eui-menu.mjs +11 -8
  35. package/fesm2022/eui-components-eui-menu.mjs.map +1 -1
  36. package/fesm2022/eui-components-eui-overlay.mjs +2 -2
  37. package/fesm2022/eui-components-eui-overlay.mjs.map +1 -1
  38. package/fesm2022/eui-components-eui-page.mjs +2 -2
  39. package/fesm2022/eui-components-eui-page.mjs.map +1 -1
  40. package/fesm2022/eui-components-eui-popover.mjs +2 -2
  41. package/fesm2022/eui-components-eui-popover.mjs.map +1 -1
  42. package/fesm2022/eui-components-eui-slide-toggle.mjs +2 -2
  43. package/fesm2022/eui-components-eui-slide-toggle.mjs.map +1 -1
  44. package/fesm2022/eui-components-eui-split-button.mjs +2 -2
  45. package/fesm2022/eui-components-eui-split-button.mjs.map +1 -1
  46. package/fesm2022/eui-components-eui-table.mjs +2 -2
  47. package/fesm2022/eui-components-eui-table.mjs.map +1 -1
  48. package/fesm2022/eui-components-eui-tabs-v2.mjs +2 -2
  49. package/fesm2022/eui-components-eui-tabs-v2.mjs.map +1 -1
  50. package/fesm2022/eui-components-eui-tabs.mjs +4 -4
  51. package/fesm2022/eui-components-eui-tabs.mjs.map +1 -1
  52. package/fesm2022/eui-components-eui-timebar.mjs +2 -2
  53. package/fesm2022/eui-components-eui-timebar.mjs.map +1 -1
  54. package/fesm2022/eui-components-eui-timeline.mjs +2 -2
  55. package/fesm2022/eui-components-eui-timeline.mjs.map +1 -1
  56. package/fesm2022/eui-components-eui-tree-list.mjs +2 -2
  57. package/fesm2022/eui-components-eui-tree-list.mjs.map +1 -1
  58. package/fesm2022/eui-components-eui-tree.mjs +2 -2
  59. package/fesm2022/eui-components-eui-tree.mjs.map +1 -1
  60. package/fesm2022/eui-components-eui-user-profile.mjs +9 -2
  61. package/fesm2022/eui-components-eui-user-profile.mjs.map +1 -1
  62. package/fesm2022/eui-components-eui-wizard.mjs +4 -4
  63. package/fesm2022/eui-components-eui-wizard.mjs.map +1 -1
  64. package/fesm2022/eui-components-externals-eui-editor.mjs +2 -2
  65. package/fesm2022/eui-components-externals-eui-editor.mjs.map +1 -1
  66. package/fesm2022/eui-components-layout.mjs +32 -25
  67. package/fesm2022/eui-components-layout.mjs.map +1 -1
  68. package/layout/eui-app/eui-app-sidebar/sidebar-menu/sidebar-menu.component.d.ts.map +1 -1
  69. package/layout/eui-app/eui-app.component.d.ts +1 -1
  70. package/layout/eui-app/eui-app.component.d.ts.map +1 -1
  71. package/layout/eui-app/eui-app.module.d.ts +3 -2
  72. package/layout/eui-app/eui-app.module.d.ts.map +1 -1
  73. package/layout/eui-notifications/eui-notifications.component.d.ts.map +1 -1
  74. package/layout/eui-notifications-v2/eui-notifications.component.d.ts.map +1 -1
  75. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"eui-components-externals-eui-editor.mjs","sources":["../../externals/eui-editor/image-url-dialog/image-url-dialog.component.ts","../../externals/eui-editor/image-url-dialog/image-url-dialog.component.html","../../externals/eui-editor/counters/eui-editor-counters.component.ts","../../externals/eui-editor/counters/eui-editor-counters.component.html","../../externals/eui-editor/html-view/eui-editor-html-view.component.ts","../../externals/eui-editor/html-view/eui-editor-html-view.component.html","../../externals/eui-editor/json-view/eui-editor-json-view.component.ts","../../externals/eui-editor/eui-editor.component.ts","../../externals/eui-editor/eui-editor.component.html","../../externals/eui-editor/directives/eui-editor-maxlength.directive.ts","../../externals/eui-editor/validators/eui-editor.validators.ts","../../externals/eui-editor/eui-editor.module.ts","../../externals/eui-editor/eui-components-externals-eui-editor.ts"],"sourcesContent":["import { Component, OnInit, OnDestroy, Inject } from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { AbstractControl, Validators, FormGroup, FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { Subject } from 'rxjs';\n\nimport { DIALOG_COMPONENT_CONFIG } from '@eui/components/eui-dialog';\nimport { EuiClearableDirective, EuiLoadingDirective } from '@eui/components/directives';\nimport { EuiInputTextComponent } from '@eui/components/eui-input-text';\n\nconst urlValidator = (control: AbstractControl): { isUrlValid: false } | null => {\n const isHttp = control.value.substr(0, 7) === 'http://';\n const isHttps = control.value.substr(0, 8) === 'https://';\n\n return !isHttp && !isHttps ? { isUrlValid: false } : null;\n};\n\nexport interface EuiEditorImageDialogConfig {\n onFormValueChange: (form: FormGroup) => void;\n}\n\n@Component({\n templateUrl: 'image-url-dialog.component.html',\n imports: [\n ReactiveFormsModule,\n EuiClearableDirective,\n EuiLoadingDirective,\n EuiInputTextComponent,\n ],\n})\nexport class EuiEditorImageDialogComponent implements OnInit, OnDestroy {\n public form: FormGroup;\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor(@Inject(DIALOG_COMPONENT_CONFIG) private config: EuiEditorImageDialogConfig) {}\n\n ngOnInit(): void {\n this.form = new FormGroup({\n url: new FormControl<string>('', [Validators.required, urlValidator]),\n });\n\n this.form.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.config.onFormValueChange(this.form);\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n}\n","<form [formGroup]=\"form\">\n <input euiInputText formControlName=\"url\" />\n</form>\n","import { booleanAttribute, ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n // eslint-disable-next-line\n selector: 'eui-editor-counters',\n templateUrl: './eui-editor-counters.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EuiEditorCountersComponent {\n @Input() charactersCounter: number;\n @Input() charactersLabel = 'characters';\n @Input() wordsCounter: number;\n @Input() wordsLabel = 'words';\n @Input({ transform: booleanAttribute }) isMaxLengthValid = true;\n @Input({ transform: booleanAttribute }) hasCharactersCounter = true;\n @Input({ transform: booleanAttribute }) hasWordsCounter = true;\n}\n","<button class=\"editor-counters\">\n @if ( hasCharactersCounter ) {\n <div class=\"editor-counters-chars-container\">\n <span class=\"chars-counter\" [class.chars-counter--error]=\"!isMaxLengthValid\">{{ charactersCounter }}</span>\n <span class=\"chars-label\">{{ charactersLabel }}</span>\n </div>\n }\n @if ( hasWordsCounter ) {\n <div class=\"editor-counters-words-container\">\n <span class=\"words-counter\">{{ wordsCounter }}</span>\n <span class=\"words-label\">{{ wordsLabel }}</span>\n </div>\n }\n</button>\n","import { Component, Input, OnChanges, SimpleChanges, ViewEncapsulation, ChangeDetectionStrategy, HostBinding } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { NgClass } from '@angular/common';\n\n@Component({\n // eslint-disable-next-line\n selector: 'eui-editor-html-view',\n templateUrl: './eui-editor-html-view.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass],\n})\nexport class EuiEditorHtmlViewComponent implements OnChanges {\n @HostBinding('class') string = 'eui-editor__html-view';\n\n @Input() content = '';\n @Input() theme = 'snow';\n\n public innerHTML: SafeHtml = '';\n public themeClass = 'ql-snow';\n\n constructor(private sanitizer: DomSanitizer) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes && changes.content && changes.content?.currentValue) {\n this.innerHTML = this.sanitizer.bypassSecurityTrustHtml(changes.content.currentValue);\n } else {\n this.innerHTML = '';\n }\n }\n}\n","<div #editor class=\"ql-container\" [ngClass]=\"themeClass\">\n <div class=\"ql-editor\" [innerHTML]=\"innerHTML\"></div>\n</div>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n OnChanges,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\n\nconst QuillType: any = window['Quill'];\n\n@Component({\n // eslint-disable-next-line\n selector: 'eui-editor-json-view',\n template: '',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EuiEditorJsonViewComponent implements AfterViewInit, OnChanges {\n @HostBinding('class') string = 'eui-editor__json-view';\n @Input() theme = 'snow';\n @Input() content: string;\n\n private quillEditor: typeof QuillType;\n private editorElem: HTMLElement;\n\n constructor(@Inject(ElementRef) private elementRef: ElementRef) {}\n\n valueSetter = (quillEditor: typeof QuillType, value: string): void => {\n let content: any = value;\n try {\n content = JSON.parse(value);\n } catch (e) {\n console.warn('JSON parse error!');\n }\n quillEditor?.setContents(content);\n };\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes && changes.content && changes.content?.currentValue) {\n this.valueSetter(this.quillEditor, changes.content.currentValue);\n }\n }\n\n ngAfterViewInit(): void {\n this.elementRef.nativeElement.insertAdjacentHTML('afterbegin', '<div quill-view-element></div>');\n\n this.editorElem = this.elementRef.nativeElement.querySelector('[quill-view-element]');\n\n const Quill: any = window['Quill'];\n\n this.quillEditor = new Quill(this.editorElem, {\n debug: false,\n formats: null,\n modules: { toolbar: false },\n readOnly: true,\n strict: true,\n theme: 'snow',\n });\n\n if (this.content) {\n this.valueSetter(this.quillEditor, this.content);\n }\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n OnInit,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n HostBinding,\n OnDestroy,\n Directive,\n ContentChild,\n forwardRef,\n ElementRef,\n HostListener,\n Pipe,\n ChangeDetectorRef,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, FormGroup, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { ContentChange, QuillModules, QuillModule } from '@eui/components/externals/quill';\n\nimport { coerceBooleanProperty, BooleanInput } from '@angular/cdk/coercion';\n// eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-denylist,id-match\nconst QuillType: any = window['Quill'];\nimport { startWith, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport Delta from 'quill-delta';\n\nimport { EuiDialogConfig, EuiDialogService } from '@eui/components/eui-dialog';\n\nimport { LoaderService, BetterTableModule, Blur, EditorChangeSelection, Focus, SelectionChange, ToolbarItemConfig } from '@eui/components/externals/quill';\nimport { EuiEditorImageDialogComponent } from './image-url-dialog/image-url-dialog.component';\nimport { NgStyle } from '@angular/common';\nimport { EuiTooltipDirective } from '@eui/components/directives';\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { EuiEditorCountersComponent } from './counters/eui-editor-counters.component';\nimport { EuiEditorHtmlViewComponent } from './html-view/eui-editor-html-view.component';\nimport { EuiEditorJsonViewComponent } from './json-view/eui-editor-json-view.component';\n// eslint-disable-next-line prefer-const\nlet QuillBetterTable = window['quillBetterTable'];\n\n@Component({\n // eslint-disable-next-line\n selector: 'eui-editor',\n templateUrl: './eui-editor.component.html',\n styleUrls: ['./styles/_index.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n // TODO: Check to change the providing way. Provide with injector reference\n EuiDialogService,\n ],\n imports: [\n QuillModule,\n NgStyle,\n ReactiveFormsModule,\n EuiTooltipDirective,\n EuiEditorCountersComponent,\n EuiEditorHtmlViewComponent,\n EuiEditorJsonViewComponent,\n forwardRef(() => ClassFilterPipe),\n ...EUI_ICON,\n ],\n})\nexport class EuiEditorComponent implements ControlValueAccessor, OnInit, OnDestroy, OnChanges {\n @HostBinding('class')\n get class(): string {\n return [\n 'eui-editor',\n this.isReadOnly ? 'eui-editor--readonly' : '',\n this.isReadOnly && this.value ? '': 'eui-editor--empty',\n !this.isReadOnly ? 'eui-editor-wrapper' : '',\n ].join(' ').trim();\n }\n @Input() e2eAttr = 'eui-editor';\n @Input() id: string;\n @Input() placeholder = '';\n @Input() format: 'html' | 'json' = 'html';\n @Input() theme: 'snow' | 'bubble' = 'snow';\n @Input() debug: 'warn' | 'log' | 'error' | false = false;\n @Input() customToolbarPosition: 'top' | 'bottom' = 'top';\n @HostBinding('attr.tabindex')\n @Input() tabindex = '0';\n @Input() modules: QuillModules;\n @Input() formats?: string[] | null;\n // NEW EUI INPUTS\n @Input() customToolbarConfig: ToolbarItemConfig[];\n @HostBinding('style.height')\n @Input() height: string;\n // NEW OUTPUTS => eUI13+ only\n @Output() editorCreate = new EventEmitter<typeof QuillType>();\n @Output() editorChange = new EventEmitter<EditorChangeSelection | ContentChange>();\n @Output() contentChange = new EventEmitter<ContentChange>();\n @Output() selectionChange = new EventEmitter<SelectionChange>();\n @Output() focus = new EventEmitter<Focus>();\n @Output() blur = new EventEmitter<Blur>();\n @Output() charactersCountChange = new EventEmitter<number>();\n @Output() wordsCountChange = new EventEmitter<number>();\n\n @HostBinding('class.eui-editor') true: boolean;\n\n @HostBinding('attr.readonly')\n get readonly(): string {\n return this.isReadOnly ? 'readonly' : null;\n }\n\n public value: string | any = '';\n public charactersCount = 0;\n public wordsCount = 0;\n public bytesCount = 0;\n public isFocused = false;\n public generatedId: string;\n public formControl: FormControl = new FormControl();\n public jsonToHtmlContent: string;\n public toolbarConfig: { [id: string]: { label: string; options: any[]; dialogMessage: string } };\n protected readyToRender: boolean = false;\n\n // eslint-disable-next-line max-len\n @ContentChild(forwardRef(() => EuiEditorCustomToolbarTagDirective), { static: false })\n euiEditorCustomToolbar: EuiEditorCustomToolbarTagDirective;\n\n @Input()\n get isReadOnly(): boolean {\n return this._isReadOnly;\n }\n set isReadOnly(value: BooleanInput) {\n this._isReadOnly = coerceBooleanProperty(value);\n }\n private _isReadOnly = false;\n @Input()\n get showCounters(): boolean {\n return this._showCounters;\n }\n set showCounters(value: BooleanInput) {\n this._showCounters = coerceBooleanProperty(value);\n }\n private _showCounters = true;\n @Input()\n get isEnabledOnFocus(): boolean {\n return this._isEnabledOnFocus;\n }\n set isEnabledOnFocus(value) {\n this._isEnabledOnFocus = coerceBooleanProperty(value);\n }\n private _isEnabledOnFocus = false;\n @Input()\n get isMinimalToolbar(): boolean {\n return this._isMinimalToolbar;\n }\n set isMinimalToolbar(value: BooleanInput) {\n this._isMinimalToolbar = coerceBooleanProperty(value);\n }\n private _isMinimalToolbar = false;\n\n @HostBinding('attr.aria-invalid')\n get isInvalid(): boolean {\n return this._isInvalid;\n }\n set isInvalid(value: BooleanInput) {\n this._isInvalid = coerceBooleanProperty(value);\n }\n private _isInvalid = false;\n\n private quill: typeof QuillType;\n private minimalToolbarConfig: ToolbarItemConfig[] = [\n { name: 'headings' },\n { name: 'bold' },\n { name: 'italic' },\n { name: 'underline' },\n { name: 'fontColor' },\n { name: 'textAlign' },\n { name: 'link' },\n { name: 'image' },\n { name: 'imageUrl' },\n { name: 'clean' },\n { name: 'delete' },\n { name: 'undo' },\n { name: 'redo' },\n { name: 'counters' },\n ];\n private defaultToolbarConfig: ToolbarItemConfig[] = [\n { name: 'headings', label: 'Style - Apply an HTML tag or CSS class to the selected text', options: [1, 2, 3, 4, 5, 6] },\n { name: 'font', label: 'Font - Change the font face' },\n { name: 'bold', label: 'Bold (Ctrl + B) - Make the selected text bold' },\n { name: 'italic', label: 'Italic (Ctrl + I) - Italicize the selected text' },\n { name: 'underline', label: 'Underline (Ctrl + U) - Underline the selected text' },\n { name: 'strike', label: 'Strikethrough - Draw a line to the middle of the selected text' },\n { name: 'fontColor', label: 'Font Color - Change the text color' },\n { name: 'fontBackground', label: 'Font Background - Change the text background color' },\n { name: 'subscript', label: 'Subscript - Create ssmall letters below the text baseline' },\n { name: 'superscript', label: 'Superscript - Create small letters above the line of the text' },\n { name: 'textAlign', label: 'Text Align - Align the text to the selected position: left (default), center, right or justify' },\n { name: 'orderedList', label: 'Numbering - Start an ordered list' },\n { name: 'bulletList', label: 'Bullets - Start a bulleted list' },\n { name: 'indentLess', label: 'Decrease Indent - Decrease the indent level of the paragraph' },\n { name: 'indentMore', label: 'Increase Indent - Increase the indent level of the paragraph' },\n { name: 'blockquote', label: 'Blockquote - Create a quoted block of the selected text' },\n { name: 'codeBlock', label: 'Insert Code Block - Insert a code block at the cursor row position' },\n { name: 'link', label: 'Insert Hyperlink (Ctrl + K) - Create a link to a Web page, a picture, an e-mail address or a program' },\n { name: 'image', label: 'Insert Picture - Insert a picture from a file' },\n { name: 'imageUrl', label: 'Insert Picture from URL - Insert a picture from a remote URL', dialogMessage: 'Enter image link URL' },\n { name: 'video', label: 'Insert Video - Insert a video from a file' },\n { name: 'table', label: 'Insert Table - Insert a 3x3 rows/cols table' },\n { name: 'clean', label: 'Remove Styles - Remove the styles of the selected text' },\n { name: 'delete', label: \"Delete content - Permanently deletes editor's contents\" },\n { name: 'undo', label: 'Undo (Ctrl + Z) - Cancels the previous action' },\n { name: 'redo', label: 'Redo (Ctrl + Y) - Do the next history action again' },\n {\n name: 'counters',\n label: 'Counters - Characters and words counters (stripped Html)',\n options: [\n { name: 'characters', label: 'Characters' },\n { name: 'words', label: 'Words' },\n ],\n },\n ];\n private destroy$ = new Subject<boolean>();\n\n constructor(private euiDialogService: EuiDialogService,\n private cdr: ChangeDetectorRef,\n private ngControl: NgControl,\n private loader: LoaderService) {\n this.ngControl.valueAccessor = this;\n }\n\n ngOnChanges(c: SimpleChanges) {\n if (!c.isReadOnly?.currentValue) {\n this.calculateCounters(this.value);\n }\n }\n\n ngOnInit(): void {\n this.loader.load().subscribe({\n complete: () => {\n this.readyToRender = true;\n this.ngControl.statusChanges.pipe(startWith(this.ngControl.control.status), takeUntil(this.destroy$)).subscribe((status) => {\n this.isInvalid = status !== 'VALID';\n });\n\n this.generatedId = this.id ? this.id : 'eui-editor-' + (Math.floor(Math.random() * 1000000) + 1).toString();\n\n this.toolbarConfig = {};\n if (!this.customToolbarConfig && !this.isMinimalToolbar) {\n this.defaultToolbarConfig.forEach((t) => {\n this.toolbarConfig = {\n ...this.toolbarConfig,\n [t.name]: { label: t.label, options: t.options, dialogMessage: t.dialogMessage },\n };\n });\n }\n\n if (this.customToolbarConfig && !this.isMinimalToolbar) {\n this.customToolbarConfig.forEach((t) => {\n const label = !t.label ? this.defaultToolbarConfig.find((c) => c.name === t.name).label : t.label;\n let options = !t.options ? this.defaultToolbarConfig.find((c) => c.name === t.name).options : t.options;\n const d = !t.dialogMessage ? this.defaultToolbarConfig.find((c) => c.name === t.name).dialogMessage : t.dialogMessage;\n\n if (t.name === 'counters') {\n if (!t.options) {\n options = this.defaultToolbarConfig.find((c) => c.name === t.name).options;\n } else {\n options = t.options.map((option) => {\n const optionLabel = option.label\n ? option.label\n : this.defaultToolbarConfig\n .find((dtc) => dtc.name === 'counters')\n .options.find((o) => o.name === option.name).label;\n return { name: option.name, label: optionLabel };\n });\n }\n }\n\n this.toolbarConfig = {\n ...this.toolbarConfig,\n [t.name]: { label, options, dialogMessage: d },\n };\n });\n }\n\n if (this.isMinimalToolbar) {\n this.minimalToolbarConfig.forEach((t) => {\n const label = !t.label ? this.defaultToolbarConfig.find((c) => c.name === t.name).label : t.label;\n const options = !t.options ? this.defaultToolbarConfig.find((c) => c.name === t.name).options : t.options;\n const d = !t.dialogMessage ? this.defaultToolbarConfig.find((c) => c.name === t.name).dialogMessage : t.dialogMessage;\n\n this.toolbarConfig = {\n ...this.toolbarConfig,\n [t.name]: { label, options, dialogMessage: d },\n };\n });\n }\n this.cdr.markForCheck();\n }\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n @HostListener('click')\n @HostListener('focusin')\n public enableEditorOnFocus(): void {\n if (this.isEnabledOnFocus && this.isReadOnly) {\n this.isReadOnly = false;\n }\n }\n\n public imageUrlHandler(): void {\n let imageUrlDialogForm: FormGroup = null;\n this.euiDialogService.openDialog(\n new EuiDialogConfig({\n title: this.toolbarConfig.imageUrl.dialogMessage,\n isHandleCloseOnAccept: true,\n bodyComponent: {\n component: EuiEditorImageDialogComponent,\n config: {\n onFormValueChange: (form: FormGroup): void => {\n imageUrlDialogForm = form;\n },\n },\n },\n accept: (): void => {\n if (imageUrlDialogForm && imageUrlDialogForm.valid) {\n this.euiDialogService.closeDialog();\n\n const range = this.quill.getSelection() || { index: 0, length: 0 };\n this.quill.insertEmbed(range.index, 'image', imageUrlDialogForm.get('url').value, 'user');\n }\n },\n })\n );\n }\n\n public editorUndo(): void {\n this.quill['history'].undo();\n }\n\n public editorRedo(): void {\n this.quill['history'].redo();\n }\n\n public editorDeleteContent(): void {\n const config = new EuiDialogConfig({\n title: 'Delete content',\n content: \"<p>Are you sure you want to delete editor's content?</p>\",\n hasCloseButton: false,\n accept: (): void => {\n this.quill.setContents(null);\n },\n });\n\n this.euiDialogService.openDialog(config);\n }\n\n public insertTable(): void {\n this.tableModule.insertTable(3, 3);\n }\n\n get hasImageFeature(): boolean {\n return this.euiEditorCustomToolbar\n ? this.euiEditorCustomToolbar?.elementRef.nativeElement.querySelector('.ql-image')\n : this.toolbarConfig.image;\n }\n\n public _onEditorCreated(quill: typeof QuillType): void {\n this.quill = quill;\n\n if (this.isEnabledOnFocus) {\n this.quill.focus();\n }\n\n if (this.format === 'html') {\n const delta = this.quill.clipboard.convert({ html: this.value as string });\n this.formControl.patchValue(delta);\n this.quill.setContents(delta);\n }\n\n if (this.format === 'json') {\n this.formControl.patchValue(this.value);\n this.quill.setContents(JSON.parse(this.value));\n }\n\n if (!this.hasImageFeature) {\n quill.clipboard.addMatcher('IMG', (element: Element, delta: Delta) => new Delta().insert(''));\n quill.clipboard.addMatcher('PICTURE', (element: Element, delta: Delta) => new Delta().insert(''));\n }\n\n this.editorCreate.emit(quill);\n }\n\n public _onEditorChanged(event: EditorChangeSelection | ContentChange | Event): void {\n console.warn('onEditorChanged() event is DEPRECATED please use contentChange() event instead.');\n this.editorChange.emit(event as EditorChangeSelection);\n }\n\n private _internalChange = false; // Add this property to the class\n\n public _onContentChanged(event: ContentChange): void {\n if (this.format === 'html') {\n this.value = event.html;\n this.calculateCounters(this.value as string);\n // Only call onChange if it's not an internal change\n if (!this._internalChange) {\n this.onChange(this.htmlEntitiesDecode(this.value as string));\n }\n }\n if (this.format === 'json') {\n if (event.text !== '\\n') {\n this.value = event.content;\n this.calculateCounters(event.text);\n this.jsonToHtmlContent = this.htmlEntitiesDecode(JSON.stringify(this.value));\n // Only call onChange if it's not an internal change\n if (!this._internalChange) {\n this.onChange(this.jsonToHtmlContent);\n }\n } else {\n this.value = null;\n this.calculateCounters('');\n this.jsonToHtmlContent = '';\n // Only call onChange if it's not an internal change\n if (!this._internalChange) {\n this.onChange(null);\n }\n }\n }\n this.contentChange.emit(event); // New emitter\n this._onEditorChanged(event); // Sync with editor change event since it's duplicated event\n }\n\n public _onSelectionChanged(event: SelectionChange): void {\n this.selectionChange.emit(event);\n }\n\n public _onFocus(event: Focus): void {\n this.isFocused = true;\n this.focus.emit(event);\n }\n\n public _onBlur(event: Blur): void {\n this.isFocused = false;\n this.onTouch();\n this.blur.emit(event);\n }\n\n public registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n public writeValue(value: string): void {\n // Store the value\n this.value = value || null;\n this.jsonToHtmlContent = this.value;\n\n // Skip triggering onChange during writeValue operations\n if (this.quill) {\n // Use a flag to prevent triggering onChange in _onContentChanged\n this._internalChange = true;\n\n if (this.format === 'html') {\n const delta = this.quill.clipboard.convert({ html: this.value as string });\n this.formControl.patchValue(delta, { emitEvent: false });\n this.quill.setContents(delta);\n }\n\n if (this.format === 'json' && this.value) {\n this.formControl.patchValue(this.value, { emitEvent: false });\n // this.quill.setContents(JSON.parse(this.value));\n }\n\n this.calculateCounters(this.value);\n\n // Reset the flag after a short delay to allow Quill to complete its operations\n setTimeout(() => {\n this._internalChange = false;\n });\n }\n }\n\n private get tableModule(): BetterTableModule {\n return this.quill.getModule('better-table');\n }\n\n private onChange: any = () => {};\n\n private onTouch: any = () => {};\n\n private htmlEntitiesDecode(content: string): string {\n let c = content;\n if (c) {\n c = c.replace('&amp;', '&');\n c = c.replace('&nbsp;', ' ');\n }\n\n return c;\n }\n\n get hasCharactersCounter(): boolean {\n return this.toolbarConfig.counters.options.find((o) => o.name === 'characters');\n }\n\n get charactersCounterLabel(): string {\n return this.toolbarConfig.counters.options.find((o) => o.name === 'characters')?.label;\n }\n\n get hasWordsCounter(): boolean {\n return this.toolbarConfig.counters.options.find((o) => o.name === 'words');\n }\n\n get wordsCounterLabel(): string {\n return this.toolbarConfig.counters.options.find((o) => o.name === 'words')?.label;\n }\n\n private calculateCounters(content: string): void {\n let text: string;\n const regex = /[\\s\\n]+/;\n\n if (this.format === 'html') {\n if (content && content.length > 0) {\n text = this.stripHtml(content);\n this.charactersCount = text.length;\n\n text = content.replace(/<\\/(p|div|br|li|h[1-6])>/gi, ' ').replace(/<[^>]+>/g, '');\n this.wordsCount = !text ? 0 : text.trim().split(regex).filter(t => t !== '').length;\n } else {\n this.charactersCount = 0;\n this.wordsCount = 0;\n this.bytesCount = 0;\n }\n }\n\n if (this.format === 'json') {\n if (content && this.quill) {\n text = this.stripHtml(this.quill.root.innerHTML);\n this.charactersCount = text.length;\n\n text = this.quill.root.innerHTML.replace(/<\\/(p|div|br|li|h[1-6])>/gi, ' ').replace(/<[^>]+>/g, '');\n this.wordsCount = !text ? 0 : text.trim().split(regex).filter(t => t !== '').length;\n } else {\n this.charactersCount = 0;\n this.wordsCount = 0;\n this.bytesCount = 0;\n }\n }\n\n this.charactersCountChange.emit(this.charactersCount);\n this.wordsCountChange.emit(this.wordsCount);\n }\n\n private stripHtml(content: string): string {\n const regex = /(<([^>]+)>)/gm;\n const contentToReplace = content.replace(regex, '');\n return contentToReplace.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n }\n\n private cleanHtml(content: string): string {\n const contentToReplace = content.replace(/<[^>]*>/g, '');\n return contentToReplace.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n }\n}\n\n/* eslint-disable */\n@Directive({ selector: 'euiEditorCustomToolbar', })\nexport class EuiEditorCustomToolbarTagDirective {\n @HostBinding('class') elementClass = 'eui-editor-custom-toolbar';\n\n constructor(public elementRef: ElementRef) {}\n}\n/* eslint-enable */\n\n/**\n * Pipe to remove classes from the editor\n */\n@Pipe({ name: 'classFilter', })\nexport class ClassFilterPipe {\n transform(value: string): string {\n return value\n .replace(/eui-editor-wrapper/g, '')\n .replace(/eui-editor--readonly/g, '')\n .replace(/eui-editor--empty/g, '');\n }\n}\n","@if (readyToRender) {\n<!-- NOTE: We need to create the editor instance even for readonly mode.\n This is because we rely on the editor to format HTML/JSON content\n into a properly structured HTML output that can't be done another way.\n Future improvement: Consider completely replacing Quill with a\n markdown-only editor, which would be a better solution. -->\n <quill-editor\n [ngStyle]=\"{display: isReadOnly ? 'none' : null}\"\n [id]=\"generatedId\"\n class=\"{{ class | classFilter }}\"\n [class.eui-editor--focused]=\"isFocused\"\n [format]=\"format\"\n [formats]=\"formats\"\n [sanitize]=\"true\"\n [modules]=\"modules\"\n [theme]=\"theme\"\n [placeholder]=\"placeholder\"\n [customToolbarPosition]=\"customToolbarPosition\"\n [formControl]=\"formControl\"\n [debug]=\"debug\"\n [tabindex]=\"tabindex\"\n [preserveWhitespace]=\"true\"\n [hasImageFeature]=\"hasImageFeature\"\n (onEditorCreated)=\"_onEditorCreated($event)\"\n (onEditorChanged)=\"_onEditorChanged($event)\"\n (onContentChanged)=\"_onContentChanged($event)\"\n (onSelectionChanged)=\"_onSelectionChanged($event)\"\n (onFocus)=\"_onFocus($event)\"\n (onBlur)=\"_onBlur($event)\">\n @if (!euiEditorCustomToolbar) {\n <div quill-editor-toolbar class=\"eui-u-flex-gap-s\">\n @if (toolbarConfig.headings) {\n <div\n class=\"ql-formats\"\n role=\"application\"\n aria-label=\"Select headings style\"\n euiTooltip=\"{{ toolbarConfig.headings.label }}\">\n <select class=\"ql-header\" [attr.aria-label]=\"toolbarConfig.headings.label\">\n @for (value of toolbarConfig.headings.options; track value) {\n <option value=\"{{ value }}\">Heading {{ value }}</option>\n }\n <option selected>Normal</option>\n </select>\n </div>\n }\n @if (toolbarConfig.font) {\n <div\n class=\"ql-formats\"\n role=\"application\"\n aria-label=\"Select font style\"\n euiTooltip=\"{{ toolbarConfig.font.label }}\">\n <select class=\"ql-font\" [attr.aria-label]=\"toolbarConfig.font.label\">\n <option selected>Sans Serif</option>\n <option value=\"serif\">Serif</option>\n <option value=\"monospace\">Monospace</option>\n </select>\n </div>\n }\n @if (toolbarConfig.bold || toolbarConfig.italic || toolbarConfig.underline || toolbarConfig.strike) {\n <div class=\"ql-formats\">\n @if (toolbarConfig.bold) {\n <button\n class=\"ql-bold\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.bold.label\"\n euiTooltip=\"{{ toolbarConfig.bold.label }}\">\n </button>\n }\n @if (toolbarConfig.italic) {\n <button\n class=\"ql-italic\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.italic.label\"\n euiTooltip=\"{{ toolbarConfig.italic.label }}\">\n </button>\n }\n @if (toolbarConfig.underline) {\n <button\n\n class=\"ql-underline\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.underline.label\"\n euiTooltip=\"{{ toolbarConfig.underline.label }}\">\n </button>\n }\n @if (toolbarConfig.strike) {\n <button\n class=\"ql-strike\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.strike.label\"\n euiTooltip=\"{{ toolbarConfig.strike.label }}\">\n </button>\n }\n </div>\n }\n @if (toolbarConfig.fontColor || toolbarConfig.fontBackground) {\n <div class=\"ql-formats\">\n @if (toolbarConfig.fontColor) {\n <span euiTooltip=\"{{ toolbarConfig.fontColor.label }}\">\n <select class=\"ql-color\" [attr.aria-label]=\"toolbarConfig.fontColor.label\"></select>\n </span>\n }\n @if (toolbarConfig.fontBackground) {\n <span euiTooltip=\"{{ toolbarConfig.fontBackground.label }}\">\n <select class=\"ql-background\" [attr.aria-label]=\"toolbarConfig.fontBackground.label\"></select>\n </span>\n }\n </div>\n }\n @if (toolbarConfig.subscript || toolbarConfig.superscript) {\n <div class=\"ql-formats\">\n @if (toolbarConfig.subscript) {\n <button\n class=\"ql-script\"\n value=\"sub\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.subscript.label\"\n euiTooltip=\"{{ toolbarConfig.subscript.label }}\">\n </button>\n }\n @if (toolbarConfig.superscript) {\n <button\n class=\"ql-script\"\n value=\"super\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.superscript.label\"\n euiTooltip=\"{{ toolbarConfig.superscript.label }}\">\n </button>\n }\n </div>\n }\n @if (toolbarConfig.textAlign) {\n <div class=\"ql-formats\">\n <span euiTooltip=\"{{ toolbarConfig.textAlign.label }}\">\n <select class=\"ql-align\" [attr.aria-label]=\"toolbarConfig.textAlign.label\">\n <option selected></option>\n <option value=\"center\"></option>\n <option value=\"right\"></option>\n <option value=\"justify\"></option>\n </select>\n </span>\n </div>\n }\n @if (toolbarConfig.orderedList || toolbarConfig.bulletList || toolbarConfig.indentLess || toolbarConfig.indentMore) {\n <div\n class=\"ql-formats\">\n @if (toolbarConfig.orderedList) {\n <button\n class=\"ql-list\"\n value=\"ordered\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.orderedList.label\"\n euiTooltip=\"{{ toolbarConfig.orderedList.label }}\">\n </button>\n }\n @if (toolbarConfig.bulletList) {\n <button\n class=\"ql-list\"\n value=\"bullet\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.bulletList.label\"\n euiTooltip=\"{{ toolbarConfig.bulletList.label }}\">\n </button>\n }\n @if (toolbarConfig.indentLess) {\n <button\n type=\"button\"\n class=\"ql-indent\"\n value=\"-1\"\n [attr.aria-label]=\"toolbarConfig.indentLess.label\"\n euiTooltip=\"{{ toolbarConfig.indentLess.label }}\">\n </button>\n }\n @if (toolbarConfig.indentMore) {\n <button\n type=\"button\"\n class=\"ql-indent\"\n value=\"+1\"\n [attr.aria-label]=\"toolbarConfig.indentMore.label\"\n euiTooltip=\"{{ toolbarConfig.indentMore.label }}\">\n </button>\n }\n </div>\n }\n @if (\n toolbarConfig.blockquote ||\n toolbarConfig.codeBlock ||\n toolbarConfig.link ||\n toolbarConfig.image ||\n toolbarConfig.imageUrl ||\n toolbarConfig.video ||\n toolbarConfig.table\n ) {\n <div class=\"ql-formats\">\n @if (toolbarConfig.blockquote) {\n <button\n class=\"ql-blockquote\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.blockquote.label\"\n euiTooltip=\"{{ toolbarConfig.blockquote.label }}\">\n </button>\n }\n @if (toolbarConfig.codeBlock) {\n <button\n class=\"ql-code-block\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.codeBlock.label\"\n euiTooltip=\"{{ toolbarConfig.codeBlock.label }}\">\n </button>\n }\n @if (toolbarConfig.link) {\n <button\n class=\"ql-link\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.link.label\"\n euiTooltip=\"{{ toolbarConfig.link.label }}\">\n </button>\n }\n @if (toolbarConfig.image) {\n <button\n class=\"ql-image\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.image.label\"\n euiTooltip=\"{{ toolbarConfig.image.label }}\">\n </button>\n }\n @if (toolbarConfig.imageUrl) {\n <button\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.imageUrl.label\"\n euiTooltip=\"{{ toolbarConfig.imageUrl.label }}\"\n (click)=\"imageUrlHandler()\">\n <eui-icon-svg icon=\"eui-ecl-image\" size=\"s\"></eui-icon-svg>\n </button>\n }\n @if (toolbarConfig.video) {\n <button\n class=\"ql-video\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.video.label\"\n euiTooltip=\"{{ toolbarConfig.video.label }}\">\n </button>\n }\n @if (toolbarConfig.table) {\n <button\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.table.label\"\n euiTooltip=\"{{ toolbarConfig.table.label }}\"\n (click)=\"insertTable()\">\n <eui-icon-svg icon=\"eui-ecl-spreadsheet\" size=\"s\"></eui-icon-svg>\n </button>\n }\n </div>\n }\n @if (toolbarConfig.clean || toolbarConfig.delete) {\n <div class=\"ql-formats\">\n @if (toolbarConfig.clean) {\n <button\n class=\"ql-clean\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.clean.label\"\n euiTooltip=\"{{ toolbarConfig.clean.label }}\">\n </button>\n }\n @if (toolbarConfig.delete) {\n <button\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.delete.label\"\n euiTooltip=\"{{ toolbarConfig.delete.label }}\"\n (click)=\"editorDeleteContent()\">\n <eui-icon-svg icon=\"eui-ecl-trash\" size=\"s\"></eui-icon-svg>\n </button>\n }\n </div>\n }\n @if (toolbarConfig.undo || toolbarConfig.redo) {\n <div class=\"ql-formats\">\n @if (toolbarConfig.undo) {\n <button\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.undo.label\"\n euiTooltip=\"{{ toolbarConfig.undo.label }}\"\n (click)=\"editorUndo()\">\n <eui-icon-svg icon=\"arrow-undo:outline\" size=\"s\"></eui-icon-svg>\n </button>\n }\n @if (toolbarConfig.redo) {\n <button\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.redo.label\"\n euiTooltip=\"{{ toolbarConfig.redo.label }}\"\n (click)=\"editorRedo()\">\n <eui-icon-svg icon=\"arrow-redo:outline\" size=\"s\"></eui-icon-svg>\n </button>\n }\n </div>\n }\n @if (toolbarConfig.counters) {\n <div class=\"ql-formats\">\n <eui-editor-counters\n [hasCharactersCounter]=\"hasCharactersCounter\"\n [charactersCounter]=\"charactersCount\"\n [charactersLabel]=\"charactersCounterLabel\"\n [hasWordsCounter]=\"hasWordsCounter\"\n [wordsCounter]=\"wordsCount\"\n [wordsLabel]=\"wordsCounterLabel\"\n [attr.aria-label]=\"toolbarConfig.counters.label\"\n role=\"button\"\n euiTooltip=\"{{ toolbarConfig.counters.label }}\">\n </eui-editor-counters>\n </div>\n }\n </div>\n }\n @if (euiEditorCustomToolbar) {\n <div quill-editor-toolbar class=\"ql-toolbar ql-snow\">\n <ng-content select=\"euiEditorCustomToolbar\"></ng-content>\n </div>\n }\n </quill-editor>\n <!-- READONLY MODE -->\n @if (isReadOnly && format === 'html') {\n <eui-editor-html-view\n [content]=\"value\"\n [theme]=\"theme\" />\n }\n @if (isReadOnly && format === 'json') {\n <eui-editor-json-view\n [content]=\"jsonToHtmlContent\"\n [theme]=\"theme\" />\n }\n}\n","import { Directive, ElementRef, Input, AfterContentInit, OnDestroy, Self, OnChanges, SimpleChanges, Renderer2 } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { coerceBooleanProperty, coerceNumberProperty, BooleanInput, NumberInput } from '@angular/cdk/coercion';\n\n@Directive({\n /* eslint-disable-next-line */\n selector: '[formControlName][euiEditorMaxlength]', })\nexport class EuiEditorMaxlengthDirective implements AfterContentInit, OnDestroy, OnChanges {\n @Input() format: 'html' | 'json' = 'html';\n @Input()\n get euiEditorMaxlength(): number {\n return this._euiEditorMaxlength;\n }\n set euiEditorMaxlength(value: NumberInput) {\n this._euiEditorMaxlength = coerceNumberProperty(value);\n }\n private _euiEditorMaxlength: number;\n @Input()\n get isShowMaxlength(): boolean {\n return this._isShowMaxlength;\n }\n set isShowMaxlength(value: BooleanInput) {\n this._isShowMaxlength = coerceBooleanProperty(value);\n }\n private _isShowMaxlength = true;\n\n private valueChangesSubscription: Subscription;\n private maxLengthSpan: HTMLSpanElement;\n private wrapper: HTMLDivElement;\n\n constructor(private el: ElementRef, private renderer: Renderer2, @Self() private control: NgControl) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['isShowMaxlength'] && this.maxLengthSpan) {\n if (this.isShowMaxlength) {\n this.createMaxLengthBox();\n this.refreshValue();\n } else {\n this.destroyMaxLengthBox();\n }\n }\n }\n\n ngAfterContentInit(): void {\n if (this.euiEditorMaxlength) {\n this.createMaxLengthBox();\n this.refreshValue();\n }\n\n if (this.control?.valueChanges) {\n this.valueChangesSubscription = this.control.valueChanges.subscribe(() => {\n this.refreshValue();\n });\n }\n }\n\n ngOnDestroy(): void {\n this.destroyMaxLengthBox();\n\n if (this.valueChangesSubscription) {\n this.valueChangesSubscription.unsubscribe();\n }\n }\n\n private refreshValue(): void {\n let valueLength = 0;\n let remainingLength = 0;\n\n if (this.format === 'html') {\n const regex = /(<([^>]+)>)/gi;\n const tagsStrippedContent = this.control.value ? this.control.value.replace(regex, '') : '';\n valueLength = tagsStrippedContent.length;\n remainingLength = this.euiEditorMaxlength - valueLength;\n } else {\n const content =\n this.control.value && this.control.value !== ''\n ? JSON.parse(this.control.value)\n .ops.filter((c: { attributes: string; insert: string }) => typeof c.insert === 'string')\n .map((c: { attributes: string; insert: string }) => c.insert.replace(/\\n/g, ''))\n : [''];\n\n const jsonStrippedContent = content.join('');\n valueLength = jsonStrippedContent.length;\n remainingLength = this.euiEditorMaxlength - valueLength;\n }\n\n if (remainingLength < 0 && this.maxLengthSpan) {\n this.maxLengthSpan.classList.add('error');\n this.maxLengthSpan.innerHTML = '0';\n } else {\n if (remainingLength >= 0 && this.maxLengthSpan) {\n this.maxLengthSpan.innerHTML = (this.euiEditorMaxlength - valueLength).toString();\n this.maxLengthSpan.classList.remove('error');\n }\n }\n }\n\n private createMaxLengthBox(): void {\n this.maxLengthSpan = this.renderer.createElement('span');\n this.renderer.addClass(this.maxLengthSpan, 'input-maxlength');\n this.renderer.setAttribute(this.maxLengthSpan, 'innerHTML', this.euiEditorMaxlength.toString());\n\n const nativeElement: HTMLElement = this.el.nativeElement;\n if (nativeElement != null) {\n this.renderer.setStyle(nativeElement, 'width', '100%');\n const parent: Node = nativeElement.parentNode;\n if (parent != null && this.isShowMaxlength) {\n this.wrapper = this.renderer.createElement('div');\n this.renderer.addClass(this.wrapper, 'input-maxlength-wrapper');\n parent.replaceChild(this.wrapper, nativeElement);\n this.renderer.appendChild(this.wrapper, nativeElement);\n this.renderer.appendChild(this.wrapper, this.maxLengthSpan);\n }\n }\n }\n\n private destroyMaxLengthBox(): void {\n if (this.maxLengthSpan) {\n this.renderer.removeChild(this.maxLengthSpan.parentElement, this.maxLengthSpan);\n }\n\n if (this.wrapper) {\n const parent: Node = this.wrapper.parentNode;\n const nativeElement: HTMLElement = this.el.nativeElement;\n parent.replaceChild(nativeElement, this.wrapper);\n this.renderer.removeChild(this.wrapper.parentElement, this.wrapper);\n }\n }\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\n\nconst isJson = (value: string): boolean => {\n try {\n JSON.parse(value);\n } catch (e) {\n return false;\n }\n return true;\n};\n\nconst byteLength = (value: string): number => {\n // returns the byte length of an utf8 string\n let s = value.length;\n for (let i = value.length - 1; i >= 0; i--) {\n const code = value.charCodeAt(i);\n if (code > 0x7f && code <= 0x7ff) {\n s++;\n } else if (code > 0x7ff && code <= 0xffff) {\n s += 2;\n }\n if (code >= 0xdc00 && code <= 0xdfff) {\n i--;\n }\n }\n return s;\n};\n\n/**\n * @description\n * Validator that requires the length of the editor's content, out of HTML tags or JSON structure, to be greater than or equal\n * to the provided minimum length.\n *\n * @usageNotes\n * Validate that the editor has a minimum of 5 characters:\n *\n * ```typescript\n * const editor = new FormControl('ng', euiEditorMinLength(5));\n * console.log(editor.errors); // { minlength: { minLength: 5, actual: 2 } }\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `minlength` if the validation check fails, otherwise `null`.\n */\nexport const euiEditorMinLength =\n (minLength: number): ValidatorFn =>\n (control: AbstractControl): { minLength: { minLength: number; actual: number } } | null => {\n if (control.value) {\n let actual = 0;\n if (isJson(control.value)) {\n const content = JSON.parse(control.value)\n .ops.filter((c: { attributes: string; insert: string }) => typeof c.insert === 'string')\n .map((c: { attributes: string; insert: string }) => c.insert.replace(/\\n/g, ''));\n\n const jsonStrippedContent = content.join('');\n actual = jsonStrippedContent.length;\n } else {\n const regex = /(<([^>]+)>)/gi;\n const tagsStrippedContent = control.value.replace(regex, '');\n actual = tagsStrippedContent.length;\n }\n\n return actual < minLength ? { minLength: { minLength, actual } } : null;\n }\n };\n\n/**\n * @description\n * Validator that requires the length of the editor's content, out of HTML tags or JSON structure, to be less than or equal\n * to the provided maximum length.\n *\n * @usageNotes\n * Validate that the editor has a maximum of 10 characters:\n *\n * ```typescript\n * const editor = new FormControl('ng angular reactive', euiEditorMaxLength(10));\n * console.log(editor.errors); // { maxLength: { maxLength: 10, actual: 19 } }\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `maxlength` if the validation check fails, otherwise `null`.\n */\nexport const euiEditorMaxLength =\n (maxLength: number): ValidatorFn =>\n (control: AbstractControl): { maxLength: { maxLength: number; actual: number } } | null => {\n if (control.value) {\n let actual = 0;\n if (isJson(control.value)) {\n const content = JSON.parse(control.value)\n .ops.filter((c: { attributes: string; insert: string }) => typeof c.insert === 'string')\n .map((c: { attributes: string; insert: string }) => c.insert.replace(/\\n/g, ''));\n\n const jsonStrippedContent = content.join('');\n actual = jsonStrippedContent.length;\n } else {\n const regex = /(<([^>]+)>)/gi;\n const tagsStrippedContent = control.value.replace(regex, '');\n actual = tagsStrippedContent.length;\n }\n\n return actual > maxLength ? { maxLength: { maxLength, actual } } : null;\n }\n };\n\n/**\n * @description\n * Validator that requires the number of words in the editor, out of HTML tags or JSON structure, to be greater than or equal\n * to the provided minimum number.\n *\n * @usageNotes\n * Validate that the editor has a minimum of 5 words:\n *\n * ```typescript\n * const editor = new FormControl('ng angular', euiEditorMinWords(5));\n * console.log(editor.errors); // { minWords: { minWords: 5, actual: 2 } }\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `minWords` if the validation check fails, otherwise `null`.\n */\nexport const euiEditorMinWords =\n (minWords: number): ValidatorFn =>\n (control: AbstractControl<string>): { minWords: { minWords: number; actual: number } } | null => {\n const regex = /[\\s\\n]+/;\n if (control.value) {\n let actual = 0;\n if (isJson(control.value)) {\n const content = JSON.parse(control.value)\n .ops.filter((c: { insert: string }) => typeof c.insert === 'string')\n .map((c: { insert: string }) => c.insert);\n\n const jsonStrippedContent = content.join('');\n actual = jsonStrippedContent.replace(/\\n/g, ' ').split(/\\s+/).filter(t => t !== '').length;\n } else {\n const text = control.value.replace(/[\\u200B-\\u200D\\uFEFF]/g, '').replace(/<\\/(p|div|br|li|h[1-6])>/gi, ' ').replace(/<[^>]+>/g, '');\n actual = !text ? 0 : text.trim().split(regex).filter(t => t !== '').length;\n }\n\n return actual < minWords ? { minWords: { minWords, actual } } : null;\n }\n };\n\n/**\n * @description\n * Validator that requires the number of words in the editor, out of HTML tags or JSON structure, to be less than or equal\n * to the provided maximum number.\n *\n * @usageNotes\n * Validate that the editor has a maximum of 10 words:\n *\n * ```typescript\n * const editor = new FormControl('ng angular reactive forms editor wysiwyg eui ec europa npm node', euiEditorMaxWords(10));\n * console.log(editor.errors); // { maxWords: { maxWords: 10, actual: 11 } }\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `maxWords` if the validation check fails, otherwise `null`.\n */\nexport const euiEditorMaxWords =\n (maxWords: number): ValidatorFn =>\n (control: AbstractControl<string>): { maxWords: { maxWords: number; actual: number } } | null => {\n const regex = /[\\s\\n]+/;\n if (control.value) {\n let actual = 0;\n if (isJson(control.value)) {\n const content = JSON.parse(control.value)\n .ops.filter((c: { insert: string }) => typeof c.insert === 'string')\n .map((c: { insert: string }) => c.insert);\n\n const jsonStrippedContent = content.join('');\n actual = jsonStrippedContent.replace(/\\n/g, ' ').split(/\\s+/).filter(t => t !== '').length;\n } else {\n const text = control.value.replace(/[\\u200B-\\u200D\\uFEFF]/g, '').replace(/<\\/(p|div|br|li|h[1-6])>/gi, ' ').replace(/<[^>]+>/g, '');\n actual = !text ? 0 : text.trim().split(regex).filter(t => t !== '').length;\n }\n\n return actual > maxWords ? { maxWords: { maxWords, actual } } : null;\n }\n };\n\n/**\n * @description\n * Validator that requires the number of bytes in the editor, with HTML tags or JSON structure, to be greater than or equal\n * to the provided minimum number.\n *\n * @usageNotes\n * Validate that the editor has a minimum of 20 bytes:\n *\n * ```typescript\n * const editor = new FormControl('<p>europa.eu</p>', euiEditorMinBytes(20));\n * console.log(editor.errors); // { minBytes: { minBytes: 20, actual: 16 } }\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `minBytes` if the validation check fails, otherwise `null`.\n */\nexport const euiEditorMinBytes =\n (minBytes: number): ValidatorFn =>\n (control: AbstractControl): { minBytes: { minBytes: number; actual: number } } | null => {\n if (control.value) {\n let actual = 0;\n const m = encodeURIComponent(control.value).match(/%[89ABab]/g);\n actual = control.value.length + (m ? m.length : 0);\n\n return actual < minBytes ? { minBytes: { minBytes, actual } } : null;\n }\n };\n\n/**\n * @description\n * Validator that requires the number of bytes in the editor, with HTML tags or JSON structure, to be less than or equal\n * to the provided minimum number.\n *\n * @usageNotes\n * Validate that the editor has a maximum of 20 bytes:\n *\n * ```typescript\n * const editor = new FormControl('<p>europa.eu site</p>', euiEditorMinBytes(20));\n * console.log(editor.errors); // { maxBytes: { maxBytes: 20, actual: 21 } }\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `maxBytes` if the validation check fails, otherwise `null`.\n */\nexport const euiEditorMaxBytes =\n (maxBytes: number): ValidatorFn =>\n (control: AbstractControl): { maxBytes: { maxBytes: number; actual: number } } | null => {\n if (control.value) {\n let actual = 0;\n if (isJson(control.value)) {\n actual = byteLength(control.value);\n } else {\n const m = encodeURIComponent(control.value).match(/%[89ABab]/g);\n actual = control.value.length + (m ? m.length : 0);\n }\n\n return actual > maxBytes ? { maxBytes: { maxBytes, actual } } : null;\n }\n };\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { EuiDialogModule } from '@eui/components/eui-dialog';\nimport { EuiTooltipDirectiveModule } from '@eui/components/directives';\nimport { EuiIconModule } from '@eui/components/eui-icon';\nimport { QuillConfig, QuillModule } from '@eui/components/externals/quill';\nimport { EuiInputTextModule } from '@eui/components/eui-input-text';\n\nimport { EuiEditorCountersComponent } from './counters/eui-editor-counters.component';\nimport { EuiEditorHtmlViewComponent } from './html-view/eui-editor-html-view.component';\nimport { EuiEditorJsonViewComponent } from './json-view/eui-editor-json-view.component';\nimport { ClassFilterPipe, EuiEditorComponent, EuiEditorCustomToolbarTagDirective } from \"./eui-editor.component\";\nimport { EuiEditorImageDialogComponent } from './image-url-dialog/image-url-dialog.component';\nimport { EuiEditorMaxlengthDirective } from './directives/eui-editor-maxlength.directive';\n\n// In case of dynamic loading this will not be available at this stage.\n// Thus the config for BetterTable keyboardBindings needs to be set at a later\n// stage. Same as the registration.\nconst QuillBetterTable = window['quillBetterTable'];\n\nconst quillConfig: QuillConfig = {\n modules: {\n table: false,\n 'better-table': {\n operationMenu: {\n items: {\n unmergeCells: {\n text: 'Another unmerge cells name',\n },\n },\n color: {\n colors: [\n '#000000',\n '#e60000',\n '#ff9900',\n '#ffff00',\n '#008a00',\n '#0066cc',\n '#9933ff',\n '#ffffff',\n '#facccc',\n '#ffebcc',\n '#ffffcc',\n '#cce8cc',\n '#cce0f5',\n '#ebd6ff',\n '#bbbbbb',\n '#f06666',\n '#ffc266',\n '#ffff66',\n '#66b966',\n '#66a3e0',\n '#c285ff',\n '#888888',\n '#a10000',\n '#b26b00',\n '#b2b200',\n '#006100',\n '#0047b2',\n '#6b24b2',\n '#444444',\n '#5c0000',\n '#663d00',\n '#666600',\n '#003700',\n '#002966',\n '#3d1466',\n ],\n text: 'Background Colors',\n },\n },\n },\n },\n};\n\nif(QuillBetterTable) {\n quillConfig.modules.keyboard = {\n bindings: QuillBetterTable?.keyboardBindings,\n };\n}\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n EuiTooltipDirectiveModule,\n QuillModule.forRoot(quillConfig),\n EuiDialogModule,\n EuiIconModule,\n EuiInputTextModule,\n EuiEditorComponent,\n EuiEditorJsonViewComponent,\n EuiEditorHtmlViewComponent,\n EuiEditorCountersComponent,\n EuiEditorImageDialogComponent,\n EuiEditorMaxlengthDirective,\n EuiEditorCustomToolbarTagDirective,\n ClassFilterPipe,\n ],\n exports: [EuiEditorComponent, EuiEditorMaxlengthDirective, EuiEditorCustomToolbarTagDirective, EuiEditorCountersComponent],\n})\nexport class EuiEditorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","QuillType","QuillBetterTable","i2"],"mappings":"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"}
1
+ {"version":3,"file":"eui-components-externals-eui-editor.mjs","sources":["../../externals/eui-editor/image-url-dialog/image-url-dialog.component.ts","../../externals/eui-editor/image-url-dialog/image-url-dialog.component.html","../../externals/eui-editor/counters/eui-editor-counters.component.ts","../../externals/eui-editor/counters/eui-editor-counters.component.html","../../externals/eui-editor/html-view/eui-editor-html-view.component.ts","../../externals/eui-editor/html-view/eui-editor-html-view.component.html","../../externals/eui-editor/json-view/eui-editor-json-view.component.ts","../../externals/eui-editor/eui-editor.component.ts","../../externals/eui-editor/eui-editor.component.html","../../externals/eui-editor/directives/eui-editor-maxlength.directive.ts","../../externals/eui-editor/validators/eui-editor.validators.ts","../../externals/eui-editor/eui-editor.module.ts","../../externals/eui-editor/eui-components-externals-eui-editor.ts"],"sourcesContent":["import { Component, OnInit, OnDestroy, Inject } from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { AbstractControl, Validators, FormGroup, FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { Subject } from 'rxjs';\n\nimport { DIALOG_COMPONENT_CONFIG } from '@eui/components/eui-dialog';\nimport { EuiClearableDirective, EuiLoadingDirective } from '@eui/components/directives';\nimport { EuiInputTextComponent } from '@eui/components/eui-input-text';\n\nconst urlValidator = (control: AbstractControl): { isUrlValid: false } | null => {\n const isHttp = control.value.substr(0, 7) === 'http://';\n const isHttps = control.value.substr(0, 8) === 'https://';\n\n return !isHttp && !isHttps ? { isUrlValid: false } : null;\n};\n\nexport interface EuiEditorImageDialogConfig {\n onFormValueChange: (form: FormGroup) => void;\n}\n\n@Component({\n templateUrl: 'image-url-dialog.component.html',\n imports: [\n ReactiveFormsModule,\n EuiClearableDirective,\n EuiLoadingDirective,\n EuiInputTextComponent,\n ],\n})\nexport class EuiEditorImageDialogComponent implements OnInit, OnDestroy {\n public form: FormGroup;\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor(@Inject(DIALOG_COMPONENT_CONFIG) private config: EuiEditorImageDialogConfig) {}\n\n ngOnInit(): void {\n this.form = new FormGroup({\n url: new FormControl<string>('', [Validators.required, urlValidator]),\n });\n\n this.form.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.config.onFormValueChange(this.form);\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n}\n","<form [formGroup]=\"form\">\n <input euiInputText formControlName=\"url\" />\n</form>\n","import { booleanAttribute, ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n // eslint-disable-next-line\n selector: 'eui-editor-counters',\n templateUrl: './eui-editor-counters.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EuiEditorCountersComponent {\n @Input() charactersCounter: number;\n @Input() charactersLabel = 'characters';\n @Input() wordsCounter: number;\n @Input() wordsLabel = 'words';\n @Input({ transform: booleanAttribute }) isMaxLengthValid = true;\n @Input({ transform: booleanAttribute }) hasCharactersCounter = true;\n @Input({ transform: booleanAttribute }) hasWordsCounter = true;\n}\n","<button class=\"editor-counters\">\n @if ( hasCharactersCounter ) {\n <div class=\"editor-counters-chars-container\">\n <span class=\"chars-counter\" [class.chars-counter--error]=\"!isMaxLengthValid\">{{ charactersCounter }}</span>\n <span class=\"chars-label\">{{ charactersLabel }}</span>\n </div>\n }\n @if ( hasWordsCounter ) {\n <div class=\"editor-counters-words-container\">\n <span class=\"words-counter\">{{ wordsCounter }}</span>\n <span class=\"words-label\">{{ wordsLabel }}</span>\n </div>\n }\n</button>\n","import { Component, Input, OnChanges, SimpleChanges, ViewEncapsulation, ChangeDetectionStrategy, HostBinding } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { NgClass } from '@angular/common';\n\n@Component({\n // eslint-disable-next-line\n selector: 'eui-editor-html-view',\n templateUrl: './eui-editor-html-view.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass],\n})\nexport class EuiEditorHtmlViewComponent implements OnChanges {\n @HostBinding('class') string = 'eui-editor__html-view';\n\n @Input() content = '';\n @Input() theme = 'snow';\n\n public innerHTML: SafeHtml = '';\n public themeClass = 'ql-snow';\n\n constructor(private sanitizer: DomSanitizer) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes && changes.content && changes.content?.currentValue) {\n this.innerHTML = this.sanitizer.bypassSecurityTrustHtml(changes.content.currentValue);\n } else {\n this.innerHTML = '';\n }\n }\n}\n","<div #editor class=\"ql-container\" [ngClass]=\"themeClass\">\n <div class=\"ql-editor\" [innerHTML]=\"innerHTML\"></div>\n</div>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n OnChanges,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\n\nconst QuillType: any = window['Quill'];\n\n@Component({\n // eslint-disable-next-line\n selector: 'eui-editor-json-view',\n template: '',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EuiEditorJsonViewComponent implements AfterViewInit, OnChanges {\n @HostBinding('class') string = 'eui-editor__json-view';\n @Input() theme = 'snow';\n @Input() content: string;\n\n private quillEditor: typeof QuillType;\n private editorElem: HTMLElement;\n\n constructor(@Inject(ElementRef) private elementRef: ElementRef) {}\n\n valueSetter = (quillEditor: typeof QuillType, value: string): void => {\n let content: any = value;\n try {\n content = JSON.parse(value);\n } catch (e) {\n console.warn('JSON parse error!');\n }\n quillEditor?.setContents(content);\n };\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes && changes.content && changes.content?.currentValue) {\n this.valueSetter(this.quillEditor, changes.content.currentValue);\n }\n }\n\n ngAfterViewInit(): void {\n this.elementRef.nativeElement.insertAdjacentHTML('afterbegin', '<div quill-view-element></div>');\n\n this.editorElem = this.elementRef.nativeElement.querySelector('[quill-view-element]');\n\n const Quill: any = window['Quill'];\n\n this.quillEditor = new Quill(this.editorElem, {\n debug: false,\n formats: null,\n modules: { toolbar: false },\n readOnly: true,\n strict: true,\n theme: 'snow',\n });\n\n if (this.content) {\n this.valueSetter(this.quillEditor, this.content);\n }\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n OnInit,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n HostBinding,\n OnDestroy,\n Directive,\n ContentChild,\n forwardRef,\n ElementRef,\n HostListener,\n Pipe,\n ChangeDetectorRef,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, FormGroup, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { ContentChange, QuillModules, QuillModule } from '@eui/components/externals/quill';\n\nimport { coerceBooleanProperty, BooleanInput } from '@angular/cdk/coercion';\n// eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-denylist,id-match\nconst QuillType: any = window['Quill'];\nimport { startWith, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport Delta from 'quill-delta';\n\nimport { EuiDialogConfig, EuiDialogService } from '@eui/components/eui-dialog';\n\nimport { LoaderService, BetterTableModule, Blur, EditorChangeSelection, Focus, SelectionChange, ToolbarItemConfig } from '@eui/components/externals/quill';\nimport { EuiEditorImageDialogComponent } from './image-url-dialog/image-url-dialog.component';\nimport { NgStyle } from '@angular/common';\nimport { EuiTooltipDirective } from '@eui/components/directives';\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { EuiEditorCountersComponent } from './counters/eui-editor-counters.component';\nimport { EuiEditorHtmlViewComponent } from './html-view/eui-editor-html-view.component';\nimport { EuiEditorJsonViewComponent } from './json-view/eui-editor-json-view.component';\n// eslint-disable-next-line prefer-const\nlet QuillBetterTable = window['quillBetterTable'];\n\n@Component({\n // eslint-disable-next-line\n selector: 'eui-editor',\n templateUrl: './eui-editor.component.html',\n styleUrls: ['./styles/_index.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n // TODO: Check to change the providing way. Provide with injector reference\n EuiDialogService,\n ],\n imports: [\n QuillModule,\n NgStyle,\n ReactiveFormsModule,\n EuiTooltipDirective,\n EuiEditorCountersComponent,\n EuiEditorHtmlViewComponent,\n EuiEditorJsonViewComponent,\n forwardRef(() => ClassFilterPipe),\n ...EUI_ICON,\n ],\n})\nexport class EuiEditorComponent implements ControlValueAccessor, OnInit, OnDestroy, OnChanges {\n @HostBinding('class')\n get class(): string {\n return [\n 'eui-editor',\n this.isReadOnly ? 'eui-editor--readonly' : '',\n this.isReadOnly && this.value ? '': 'eui-editor--empty',\n !this.isReadOnly ? 'eui-editor-wrapper' : '',\n ].join(' ').trim();\n }\n @Input() e2eAttr = 'eui-editor';\n @Input() id: string;\n @Input() placeholder = '';\n @Input() format: 'html' | 'json' = 'html';\n @Input() theme: 'snow' | 'bubble' = 'snow';\n @Input() debug: 'warn' | 'log' | 'error' | false = false;\n @Input() customToolbarPosition: 'top' | 'bottom' = 'top';\n @HostBinding('attr.tabindex')\n @Input() tabindex = '0';\n @Input() modules: QuillModules;\n @Input() formats?: string[] | null;\n // NEW EUI INPUTS\n @Input() customToolbarConfig: ToolbarItemConfig[];\n @HostBinding('style.height')\n @Input() height: string;\n // NEW OUTPUTS => eUI13+ only\n @Output() editorCreate = new EventEmitter<typeof QuillType>();\n @Output() editorChange = new EventEmitter<EditorChangeSelection | ContentChange>();\n @Output() contentChange = new EventEmitter<ContentChange>();\n @Output() selectionChange = new EventEmitter<SelectionChange>();\n @Output() focus = new EventEmitter<Focus>();\n @Output() blur = new EventEmitter<Blur>();\n @Output() charactersCountChange = new EventEmitter<number>();\n @Output() wordsCountChange = new EventEmitter<number>();\n\n @HostBinding('class.eui-editor') true: boolean;\n\n @HostBinding('attr.readonly')\n get readonly(): string {\n return this.isReadOnly ? 'readonly' : null;\n }\n\n public value: string | any = '';\n public charactersCount = 0;\n public wordsCount = 0;\n public bytesCount = 0;\n public isFocused = false;\n public generatedId: string;\n public formControl: FormControl = new FormControl();\n public jsonToHtmlContent: string;\n public toolbarConfig: { [id: string]: { label: string; options: any[]; dialogMessage: string } };\n protected readyToRender: boolean = false;\n\n // eslint-disable-next-line max-len\n @ContentChild(forwardRef(() => EuiEditorCustomToolbarTagDirective), { static: false })\n euiEditorCustomToolbar: EuiEditorCustomToolbarTagDirective;\n\n @Input()\n get isReadOnly(): boolean {\n return this._isReadOnly;\n }\n set isReadOnly(value: BooleanInput) {\n this._isReadOnly = coerceBooleanProperty(value);\n }\n private _isReadOnly = false;\n @Input()\n get showCounters(): boolean {\n return this._showCounters;\n }\n set showCounters(value: BooleanInput) {\n this._showCounters = coerceBooleanProperty(value);\n }\n private _showCounters = true;\n @Input()\n get isEnabledOnFocus(): boolean {\n return this._isEnabledOnFocus;\n }\n set isEnabledOnFocus(value) {\n this._isEnabledOnFocus = coerceBooleanProperty(value);\n }\n private _isEnabledOnFocus = false;\n @Input()\n get isMinimalToolbar(): boolean {\n return this._isMinimalToolbar;\n }\n set isMinimalToolbar(value: BooleanInput) {\n this._isMinimalToolbar = coerceBooleanProperty(value);\n }\n private _isMinimalToolbar = false;\n\n @HostBinding('attr.aria-invalid')\n get isInvalid(): boolean {\n return this._isInvalid;\n }\n set isInvalid(value: BooleanInput) {\n this._isInvalid = coerceBooleanProperty(value);\n }\n private _isInvalid = false;\n\n private quill: typeof QuillType;\n private minimalToolbarConfig: ToolbarItemConfig[] = [\n { name: 'headings' },\n { name: 'bold' },\n { name: 'italic' },\n { name: 'underline' },\n { name: 'fontColor' },\n { name: 'textAlign' },\n { name: 'link' },\n { name: 'image' },\n { name: 'imageUrl' },\n { name: 'clean' },\n { name: 'delete' },\n { name: 'undo' },\n { name: 'redo' },\n { name: 'counters' },\n ];\n private defaultToolbarConfig: ToolbarItemConfig[] = [\n { name: 'headings', label: 'Style - Apply an HTML tag or CSS class to the selected text', options: [1, 2, 3, 4, 5, 6] },\n { name: 'font', label: 'Font - Change the font face' },\n { name: 'bold', label: 'Bold (Ctrl + B) - Make the selected text bold' },\n { name: 'italic', label: 'Italic (Ctrl + I) - Italicize the selected text' },\n { name: 'underline', label: 'Underline (Ctrl + U) - Underline the selected text' },\n { name: 'strike', label: 'Strikethrough - Draw a line to the middle of the selected text' },\n { name: 'fontColor', label: 'Font Color - Change the text color' },\n { name: 'fontBackground', label: 'Font Background - Change the text background color' },\n { name: 'subscript', label: 'Subscript - Create ssmall letters below the text baseline' },\n { name: 'superscript', label: 'Superscript - Create small letters above the line of the text' },\n { name: 'textAlign', label: 'Text Align - Align the text to the selected position: left (default), center, right or justify' },\n { name: 'orderedList', label: 'Numbering - Start an ordered list' },\n { name: 'bulletList', label: 'Bullets - Start a bulleted list' },\n { name: 'indentLess', label: 'Decrease Indent - Decrease the indent level of the paragraph' },\n { name: 'indentMore', label: 'Increase Indent - Increase the indent level of the paragraph' },\n { name: 'blockquote', label: 'Blockquote - Create a quoted block of the selected text' },\n { name: 'codeBlock', label: 'Insert Code Block - Insert a code block at the cursor row position' },\n { name: 'link', label: 'Insert Hyperlink (Ctrl + K) - Create a link to a Web page, a picture, an e-mail address or a program' },\n { name: 'image', label: 'Insert Picture - Insert a picture from a file' },\n { name: 'imageUrl', label: 'Insert Picture from URL - Insert a picture from a remote URL', dialogMessage: 'Enter image link URL' },\n { name: 'video', label: 'Insert Video - Insert a video from a file' },\n { name: 'table', label: 'Insert Table - Insert a 3x3 rows/cols table' },\n { name: 'clean', label: 'Remove Styles - Remove the styles of the selected text' },\n { name: 'delete', label: \"Delete content - Permanently deletes editor's contents\" },\n { name: 'undo', label: 'Undo (Ctrl + Z) - Cancels the previous action' },\n { name: 'redo', label: 'Redo (Ctrl + Y) - Do the next history action again' },\n {\n name: 'counters',\n label: 'Counters - Characters and words counters (stripped Html)',\n options: [\n { name: 'characters', label: 'Characters' },\n { name: 'words', label: 'Words' },\n ],\n },\n ];\n private destroy$ = new Subject<boolean>();\n\n constructor(private euiDialogService: EuiDialogService,\n private cdr: ChangeDetectorRef,\n private ngControl: NgControl,\n private loader: LoaderService) {\n this.ngControl.valueAccessor = this;\n }\n\n ngOnChanges(c: SimpleChanges) {\n if (!c.isReadOnly?.currentValue) {\n this.calculateCounters(this.value);\n }\n }\n\n ngOnInit(): void {\n this.loader.load().subscribe({\n complete: () => {\n this.readyToRender = true;\n this.ngControl.statusChanges.pipe(startWith(this.ngControl.control.status), takeUntil(this.destroy$)).subscribe((status) => {\n this.isInvalid = status !== 'VALID';\n });\n\n this.generatedId = this.id ? this.id : 'eui-editor-' + (Math.floor(Math.random() * 1000000) + 1).toString();\n\n this.toolbarConfig = {};\n if (!this.customToolbarConfig && !this.isMinimalToolbar) {\n this.defaultToolbarConfig.forEach((t) => {\n this.toolbarConfig = {\n ...this.toolbarConfig,\n [t.name]: { label: t.label, options: t.options, dialogMessage: t.dialogMessage },\n };\n });\n }\n\n if (this.customToolbarConfig && !this.isMinimalToolbar) {\n this.customToolbarConfig.forEach((t) => {\n const label = !t.label ? this.defaultToolbarConfig.find((c) => c.name === t.name).label : t.label;\n let options = !t.options ? this.defaultToolbarConfig.find((c) => c.name === t.name).options : t.options;\n const d = !t.dialogMessage ? this.defaultToolbarConfig.find((c) => c.name === t.name).dialogMessage : t.dialogMessage;\n\n if (t.name === 'counters') {\n if (!t.options) {\n options = this.defaultToolbarConfig.find((c) => c.name === t.name).options;\n } else {\n options = t.options.map((option) => {\n const optionLabel = option.label\n ? option.label\n : this.defaultToolbarConfig\n .find((dtc) => dtc.name === 'counters')\n .options.find((o) => o.name === option.name).label;\n return { name: option.name, label: optionLabel };\n });\n }\n }\n\n this.toolbarConfig = {\n ...this.toolbarConfig,\n [t.name]: { label, options, dialogMessage: d },\n };\n });\n }\n\n if (this.isMinimalToolbar) {\n this.minimalToolbarConfig.forEach((t) => {\n const label = !t.label ? this.defaultToolbarConfig.find((c) => c.name === t.name).label : t.label;\n const options = !t.options ? this.defaultToolbarConfig.find((c) => c.name === t.name).options : t.options;\n const d = !t.dialogMessage ? this.defaultToolbarConfig.find((c) => c.name === t.name).dialogMessage : t.dialogMessage;\n\n this.toolbarConfig = {\n ...this.toolbarConfig,\n [t.name]: { label, options, dialogMessage: d },\n };\n });\n }\n this.cdr.markForCheck();\n }\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n @HostListener('click')\n @HostListener('focusin')\n public enableEditorOnFocus(): void {\n if (this.isEnabledOnFocus && this.isReadOnly) {\n this.isReadOnly = false;\n }\n }\n\n public imageUrlHandler(): void {\n let imageUrlDialogForm: FormGroup = null;\n this.euiDialogService.openDialog(\n new EuiDialogConfig({\n title: this.toolbarConfig.imageUrl.dialogMessage,\n isHandleCloseOnAccept: true,\n bodyComponent: {\n component: EuiEditorImageDialogComponent,\n config: {\n onFormValueChange: (form: FormGroup): void => {\n imageUrlDialogForm = form;\n },\n },\n },\n accept: (): void => {\n if (imageUrlDialogForm && imageUrlDialogForm.valid) {\n this.euiDialogService.closeDialog();\n\n const range = this.quill.getSelection() || { index: 0, length: 0 };\n this.quill.insertEmbed(range.index, 'image', imageUrlDialogForm.get('url').value, 'user');\n }\n },\n })\n );\n }\n\n public editorUndo(): void {\n this.quill['history'].undo();\n }\n\n public editorRedo(): void {\n this.quill['history'].redo();\n }\n\n public editorDeleteContent(): void {\n const config = new EuiDialogConfig({\n title: 'Delete content',\n content: \"<p>Are you sure you want to delete editor's content?</p>\",\n hasCloseButton: false,\n accept: (): void => {\n this.quill.setContents(null);\n },\n });\n\n this.euiDialogService.openDialog(config);\n }\n\n public insertTable(): void {\n this.tableModule.insertTable(3, 3);\n }\n\n get hasImageFeature(): boolean {\n return this.euiEditorCustomToolbar\n ? this.euiEditorCustomToolbar?.elementRef.nativeElement.querySelector('.ql-image')\n : this.toolbarConfig.image;\n }\n\n public _onEditorCreated(quill: typeof QuillType): void {\n this.quill = quill;\n\n if (this.isEnabledOnFocus) {\n this.quill.focus();\n }\n\n if (this.format === 'html') {\n const delta = this.quill.clipboard.convert({ html: this.value as string });\n this.formControl.patchValue(delta);\n this.quill.setContents(delta);\n }\n\n if (this.format === 'json') {\n this.formControl.patchValue(this.value);\n this.quill.setContents(JSON.parse(this.value));\n }\n\n if (!this.hasImageFeature) {\n quill.clipboard.addMatcher('IMG', (element: Element, delta: Delta) => new Delta().insert(''));\n quill.clipboard.addMatcher('PICTURE', (element: Element, delta: Delta) => new Delta().insert(''));\n }\n\n this.editorCreate.emit(quill);\n }\n\n public _onEditorChanged(event: EditorChangeSelection | ContentChange | Event): void {\n console.warn('onEditorChanged() event is DEPRECATED please use contentChange() event instead.');\n this.editorChange.emit(event as EditorChangeSelection);\n }\n\n private _internalChange = false; // Add this property to the class\n\n public _onContentChanged(event: ContentChange): void {\n if (this.format === 'html') {\n this.value = event.html;\n this.calculateCounters(this.value as string);\n // Only call onChange if it's not an internal change\n if (!this._internalChange) {\n this.onChange(this.htmlEntitiesDecode(this.value as string));\n }\n }\n if (this.format === 'json') {\n if (event.text !== '\\n') {\n this.value = event.content;\n this.calculateCounters(event.text);\n this.jsonToHtmlContent = this.htmlEntitiesDecode(JSON.stringify(this.value));\n // Only call onChange if it's not an internal change\n if (!this._internalChange) {\n this.onChange(this.jsonToHtmlContent);\n }\n } else {\n this.value = null;\n this.calculateCounters('');\n this.jsonToHtmlContent = '';\n // Only call onChange if it's not an internal change\n if (!this._internalChange) {\n this.onChange(null);\n }\n }\n }\n this.contentChange.emit(event); // New emitter\n this._onEditorChanged(event); // Sync with editor change event since it's duplicated event\n }\n\n public _onSelectionChanged(event: SelectionChange): void {\n this.selectionChange.emit(event);\n }\n\n public _onFocus(event: Focus): void {\n this.isFocused = true;\n this.focus.emit(event);\n }\n\n public _onBlur(event: Blur): void {\n this.isFocused = false;\n this.onTouch();\n this.blur.emit(event);\n }\n\n public registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n public writeValue(value: string): void {\n // Store the value\n this.value = value || null;\n this.jsonToHtmlContent = this.value;\n\n // Skip triggering onChange during writeValue operations\n if (this.quill) {\n // Use a flag to prevent triggering onChange in _onContentChanged\n this._internalChange = true;\n\n if (this.format === 'html') {\n const delta = this.quill.clipboard.convert({ html: this.value as string });\n this.formControl.patchValue(delta, { emitEvent: false });\n this.quill.setContents(delta);\n }\n\n if (this.format === 'json' && this.value) {\n this.formControl.patchValue(this.value, { emitEvent: false });\n // this.quill.setContents(JSON.parse(this.value));\n }\n\n this.calculateCounters(this.value);\n\n // Reset the flag after a short delay to allow Quill to complete its operations\n setTimeout(() => {\n this._internalChange = false;\n });\n }\n }\n\n private get tableModule(): BetterTableModule {\n return this.quill.getModule('better-table');\n }\n\n private onChange: any = () => {};\n\n private onTouch: any = () => {};\n\n private htmlEntitiesDecode(content: string): string {\n let c = content;\n if (c) {\n c = c.replace('&amp;', '&');\n c = c.replace('&nbsp;', ' ');\n }\n\n return c;\n }\n\n get hasCharactersCounter(): boolean {\n return this.toolbarConfig.counters.options.find((o) => o.name === 'characters');\n }\n\n get charactersCounterLabel(): string {\n return this.toolbarConfig.counters.options.find((o) => o.name === 'characters')?.label;\n }\n\n get hasWordsCounter(): boolean {\n return this.toolbarConfig.counters.options.find((o) => o.name === 'words');\n }\n\n get wordsCounterLabel(): string {\n return this.toolbarConfig.counters.options.find((o) => o.name === 'words')?.label;\n }\n\n private calculateCounters(content: string): void {\n let text: string;\n const regex = /[\\s\\n]+/;\n\n if (this.format === 'html') {\n if (content && content.length > 0) {\n text = this.stripHtml(content);\n this.charactersCount = text.length;\n\n text = content.replace(/<\\/(p|div|br|li|h[1-6])>/gi, ' ').replace(/<[^>]+>/g, '');\n this.wordsCount = !text ? 0 : text.trim().split(regex).filter(t => t !== '').length;\n } else {\n this.charactersCount = 0;\n this.wordsCount = 0;\n this.bytesCount = 0;\n }\n }\n\n if (this.format === 'json') {\n if (content && this.quill) {\n text = this.stripHtml(this.quill.root.innerHTML);\n this.charactersCount = text.length;\n\n text = this.quill.root.innerHTML.replace(/<\\/(p|div|br|li|h[1-6])>/gi, ' ').replace(/<[^>]+>/g, '');\n this.wordsCount = !text ? 0 : text.trim().split(regex).filter(t => t !== '').length;\n } else {\n this.charactersCount = 0;\n this.wordsCount = 0;\n this.bytesCount = 0;\n }\n }\n\n this.charactersCountChange.emit(this.charactersCount);\n this.wordsCountChange.emit(this.wordsCount);\n }\n\n private stripHtml(content: string): string {\n const regex = /(<([^>]+)>)/gm;\n const contentToReplace = content.replace(regex, '');\n return contentToReplace.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n }\n\n private cleanHtml(content: string): string {\n const contentToReplace = content.replace(/<[^>]*>/g, '');\n return contentToReplace.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n }\n}\n\n/* eslint-disable */\n@Directive({ selector: 'euiEditorCustomToolbar', })\nexport class EuiEditorCustomToolbarTagDirective {\n @HostBinding('class') elementClass = 'eui-editor-custom-toolbar';\n\n constructor(public elementRef: ElementRef) {}\n}\n/* eslint-enable */\n\n/**\n * Pipe to remove classes from the editor\n */\n@Pipe({ name: 'classFilter', })\nexport class ClassFilterPipe {\n transform(value: string): string {\n return value\n .replace(/eui-editor-wrapper/g, '')\n .replace(/eui-editor--readonly/g, '')\n .replace(/eui-editor--empty/g, '');\n }\n}\n","@if (readyToRender) {\n<!-- NOTE: We need to create the editor instance even for readonly mode.\n This is because we rely on the editor to format HTML/JSON content\n into a properly structured HTML output that can't be done another way.\n Future improvement: Consider completely replacing Quill with a\n markdown-only editor, which would be a better solution. -->\n <quill-editor\n [ngStyle]=\"{display: isReadOnly ? 'none' : null}\"\n [id]=\"generatedId\"\n class=\"{{ class | classFilter }}\"\n [class.eui-editor--focused]=\"isFocused\"\n [format]=\"format\"\n [formats]=\"formats\"\n [sanitize]=\"true\"\n [modules]=\"modules\"\n [theme]=\"theme\"\n [placeholder]=\"placeholder\"\n [customToolbarPosition]=\"customToolbarPosition\"\n [formControl]=\"formControl\"\n [debug]=\"debug\"\n [tabindex]=\"tabindex\"\n [preserveWhitespace]=\"true\"\n [hasImageFeature]=\"hasImageFeature\"\n (onEditorCreated)=\"_onEditorCreated($event)\"\n (onEditorChanged)=\"_onEditorChanged($event)\"\n (onContentChanged)=\"_onContentChanged($event)\"\n (onSelectionChanged)=\"_onSelectionChanged($event)\"\n (onFocus)=\"_onFocus($event)\"\n (onBlur)=\"_onBlur($event)\">\n @if (!euiEditorCustomToolbar) {\n <div quill-editor-toolbar class=\"eui-u-flex-gap-s\">\n @if (toolbarConfig.headings) {\n <div\n class=\"ql-formats\"\n role=\"application\"\n aria-label=\"Select headings style\"\n euiTooltip=\"{{ toolbarConfig.headings.label }}\">\n <select class=\"ql-header\" [attr.aria-label]=\"toolbarConfig.headings.label\">\n @for (value of toolbarConfig.headings.options; track value) {\n <option value=\"{{ value }}\">Heading {{ value }}</option>\n }\n <option selected>Normal</option>\n </select>\n </div>\n }\n @if (toolbarConfig.font) {\n <div\n class=\"ql-formats\"\n role=\"application\"\n aria-label=\"Select font style\"\n euiTooltip=\"{{ toolbarConfig.font.label }}\">\n <select class=\"ql-font\" [attr.aria-label]=\"toolbarConfig.font.label\">\n <option selected>Sans Serif</option>\n <option value=\"serif\">Serif</option>\n <option value=\"monospace\">Monospace</option>\n </select>\n </div>\n }\n @if (toolbarConfig.bold || toolbarConfig.italic || toolbarConfig.underline || toolbarConfig.strike) {\n <div class=\"ql-formats\">\n @if (toolbarConfig.bold) {\n <button\n class=\"ql-bold\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.bold.label\"\n euiTooltip=\"{{ toolbarConfig.bold.label }}\">\n </button>\n }\n @if (toolbarConfig.italic) {\n <button\n class=\"ql-italic\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.italic.label\"\n euiTooltip=\"{{ toolbarConfig.italic.label }}\">\n </button>\n }\n @if (toolbarConfig.underline) {\n <button\n\n class=\"ql-underline\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.underline.label\"\n euiTooltip=\"{{ toolbarConfig.underline.label }}\">\n </button>\n }\n @if (toolbarConfig.strike) {\n <button\n class=\"ql-strike\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.strike.label\"\n euiTooltip=\"{{ toolbarConfig.strike.label }}\">\n </button>\n }\n </div>\n }\n @if (toolbarConfig.fontColor || toolbarConfig.fontBackground) {\n <div class=\"ql-formats\">\n @if (toolbarConfig.fontColor) {\n <span euiTooltip=\"{{ toolbarConfig.fontColor.label }}\">\n <select class=\"ql-color\" [attr.aria-label]=\"toolbarConfig.fontColor.label\"></select>\n </span>\n }\n @if (toolbarConfig.fontBackground) {\n <span euiTooltip=\"{{ toolbarConfig.fontBackground.label }}\">\n <select class=\"ql-background\" [attr.aria-label]=\"toolbarConfig.fontBackground.label\"></select>\n </span>\n }\n </div>\n }\n @if (toolbarConfig.subscript || toolbarConfig.superscript) {\n <div class=\"ql-formats\">\n @if (toolbarConfig.subscript) {\n <button\n class=\"ql-script\"\n value=\"sub\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.subscript.label\"\n euiTooltip=\"{{ toolbarConfig.subscript.label }}\">\n </button>\n }\n @if (toolbarConfig.superscript) {\n <button\n class=\"ql-script\"\n value=\"super\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.superscript.label\"\n euiTooltip=\"{{ toolbarConfig.superscript.label }}\">\n </button>\n }\n </div>\n }\n @if (toolbarConfig.textAlign) {\n <div class=\"ql-formats\">\n <span euiTooltip=\"{{ toolbarConfig.textAlign.label }}\">\n <select class=\"ql-align\" [attr.aria-label]=\"toolbarConfig.textAlign.label\">\n <option selected></option>\n <option value=\"center\"></option>\n <option value=\"right\"></option>\n <option value=\"justify\"></option>\n </select>\n </span>\n </div>\n }\n @if (toolbarConfig.orderedList || toolbarConfig.bulletList || toolbarConfig.indentLess || toolbarConfig.indentMore) {\n <div\n class=\"ql-formats\">\n @if (toolbarConfig.orderedList) {\n <button\n class=\"ql-list\"\n value=\"ordered\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.orderedList.label\"\n euiTooltip=\"{{ toolbarConfig.orderedList.label }}\">\n </button>\n }\n @if (toolbarConfig.bulletList) {\n <button\n class=\"ql-list\"\n value=\"bullet\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.bulletList.label\"\n euiTooltip=\"{{ toolbarConfig.bulletList.label }}\">\n </button>\n }\n @if (toolbarConfig.indentLess) {\n <button\n type=\"button\"\n class=\"ql-indent\"\n value=\"-1\"\n [attr.aria-label]=\"toolbarConfig.indentLess.label\"\n euiTooltip=\"{{ toolbarConfig.indentLess.label }}\">\n </button>\n }\n @if (toolbarConfig.indentMore) {\n <button\n type=\"button\"\n class=\"ql-indent\"\n value=\"+1\"\n [attr.aria-label]=\"toolbarConfig.indentMore.label\"\n euiTooltip=\"{{ toolbarConfig.indentMore.label }}\">\n </button>\n }\n </div>\n }\n @if (\n toolbarConfig.blockquote ||\n toolbarConfig.codeBlock ||\n toolbarConfig.link ||\n toolbarConfig.image ||\n toolbarConfig.imageUrl ||\n toolbarConfig.video ||\n toolbarConfig.table\n ) {\n <div class=\"ql-formats\">\n @if (toolbarConfig.blockquote) {\n <button\n class=\"ql-blockquote\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.blockquote.label\"\n euiTooltip=\"{{ toolbarConfig.blockquote.label }}\">\n </button>\n }\n @if (toolbarConfig.codeBlock) {\n <button\n class=\"ql-code-block\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.codeBlock.label\"\n euiTooltip=\"{{ toolbarConfig.codeBlock.label }}\">\n </button>\n }\n @if (toolbarConfig.link) {\n <button\n class=\"ql-link\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.link.label\"\n euiTooltip=\"{{ toolbarConfig.link.label }}\">\n </button>\n }\n @if (toolbarConfig.image) {\n <button\n class=\"ql-image\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.image.label\"\n euiTooltip=\"{{ toolbarConfig.image.label }}\">\n </button>\n }\n @if (toolbarConfig.imageUrl) {\n <button\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.imageUrl.label\"\n euiTooltip=\"{{ toolbarConfig.imageUrl.label }}\"\n (click)=\"imageUrlHandler()\">\n <eui-icon-svg icon=\"eui-ecl-image\" size=\"s\"></eui-icon-svg>\n </button>\n }\n @if (toolbarConfig.video) {\n <button\n class=\"ql-video\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.video.label\"\n euiTooltip=\"{{ toolbarConfig.video.label }}\">\n </button>\n }\n @if (toolbarConfig.table) {\n <button\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.table.label\"\n euiTooltip=\"{{ toolbarConfig.table.label }}\"\n (click)=\"insertTable()\">\n <eui-icon-svg icon=\"eui-ecl-spreadsheet\" size=\"s\"></eui-icon-svg>\n </button>\n }\n </div>\n }\n @if (toolbarConfig.clean || toolbarConfig.delete) {\n <div class=\"ql-formats\">\n @if (toolbarConfig.clean) {\n <button\n class=\"ql-clean\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.clean.label\"\n euiTooltip=\"{{ toolbarConfig.clean.label }}\">\n </button>\n }\n @if (toolbarConfig.delete) {\n <button\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.delete.label\"\n euiTooltip=\"{{ toolbarConfig.delete.label }}\"\n (click)=\"editorDeleteContent()\">\n <eui-icon-svg icon=\"eui-ecl-trash\" size=\"s\"></eui-icon-svg>\n </button>\n }\n </div>\n }\n @if (toolbarConfig.undo || toolbarConfig.redo) {\n <div class=\"ql-formats\">\n @if (toolbarConfig.undo) {\n <button\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.undo.label\"\n euiTooltip=\"{{ toolbarConfig.undo.label }}\"\n (click)=\"editorUndo()\">\n <eui-icon-svg icon=\"arrow-undo:outline\" size=\"s\"></eui-icon-svg>\n </button>\n }\n @if (toolbarConfig.redo) {\n <button\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.redo.label\"\n euiTooltip=\"{{ toolbarConfig.redo.label }}\"\n (click)=\"editorRedo()\">\n <eui-icon-svg icon=\"arrow-redo:outline\" size=\"s\"></eui-icon-svg>\n </button>\n }\n </div>\n }\n @if (toolbarConfig.counters) {\n <div class=\"ql-formats\">\n <eui-editor-counters\n [hasCharactersCounter]=\"hasCharactersCounter\"\n [charactersCounter]=\"charactersCount\"\n [charactersLabel]=\"charactersCounterLabel\"\n [hasWordsCounter]=\"hasWordsCounter\"\n [wordsCounter]=\"wordsCount\"\n [wordsLabel]=\"wordsCounterLabel\"\n [attr.aria-label]=\"toolbarConfig.counters.label\"\n role=\"button\"\n euiTooltip=\"{{ toolbarConfig.counters.label }}\">\n </eui-editor-counters>\n </div>\n }\n </div>\n }\n @if (euiEditorCustomToolbar) {\n <div quill-editor-toolbar class=\"ql-toolbar ql-snow\">\n <ng-content select=\"euiEditorCustomToolbar\"></ng-content>\n </div>\n }\n </quill-editor>\n <!-- READONLY MODE -->\n @if (isReadOnly && format === 'html') {\n <eui-editor-html-view\n [content]=\"value\"\n [theme]=\"theme\" />\n }\n @if (isReadOnly && format === 'json') {\n <eui-editor-json-view\n [content]=\"jsonToHtmlContent\"\n [theme]=\"theme\" />\n }\n}\n","import { Directive, ElementRef, Input, AfterContentInit, OnDestroy, Self, OnChanges, SimpleChanges, Renderer2 } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { coerceBooleanProperty, coerceNumberProperty, BooleanInput, NumberInput } from '@angular/cdk/coercion';\n\n@Directive({\n /* eslint-disable-next-line */\n selector: '[formControlName][euiEditorMaxlength]', })\nexport class EuiEditorMaxlengthDirective implements AfterContentInit, OnDestroy, OnChanges {\n @Input() format: 'html' | 'json' = 'html';\n @Input()\n get euiEditorMaxlength(): number {\n return this._euiEditorMaxlength;\n }\n set euiEditorMaxlength(value: NumberInput) {\n this._euiEditorMaxlength = coerceNumberProperty(value);\n }\n private _euiEditorMaxlength: number;\n @Input()\n get isShowMaxlength(): boolean {\n return this._isShowMaxlength;\n }\n set isShowMaxlength(value: BooleanInput) {\n this._isShowMaxlength = coerceBooleanProperty(value);\n }\n private _isShowMaxlength = true;\n\n private valueChangesSubscription: Subscription;\n private maxLengthSpan: HTMLSpanElement;\n private wrapper: HTMLDivElement;\n\n constructor(private el: ElementRef, private renderer: Renderer2, @Self() private control: NgControl) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['isShowMaxlength'] && this.maxLengthSpan) {\n if (this.isShowMaxlength) {\n this.createMaxLengthBox();\n this.refreshValue();\n } else {\n this.destroyMaxLengthBox();\n }\n }\n }\n\n ngAfterContentInit(): void {\n if (this.euiEditorMaxlength) {\n this.createMaxLengthBox();\n this.refreshValue();\n }\n\n if (this.control?.valueChanges) {\n this.valueChangesSubscription = this.control.valueChanges.subscribe(() => {\n this.refreshValue();\n });\n }\n }\n\n ngOnDestroy(): void {\n this.destroyMaxLengthBox();\n\n if (this.valueChangesSubscription) {\n this.valueChangesSubscription.unsubscribe();\n }\n }\n\n private refreshValue(): void {\n let valueLength = 0;\n let remainingLength = 0;\n\n if (this.format === 'html') {\n const regex = /(<([^>]+)>)/gi;\n const tagsStrippedContent = this.control.value ? this.control.value.replace(regex, '') : '';\n valueLength = tagsStrippedContent.length;\n remainingLength = this.euiEditorMaxlength - valueLength;\n } else {\n const content =\n this.control.value && this.control.value !== ''\n ? JSON.parse(this.control.value)\n .ops.filter((c: { attributes: string; insert: string }) => typeof c.insert === 'string')\n .map((c: { attributes: string; insert: string }) => c.insert.replace(/\\n/g, ''))\n : [''];\n\n const jsonStrippedContent = content.join('');\n valueLength = jsonStrippedContent.length;\n remainingLength = this.euiEditorMaxlength - valueLength;\n }\n\n if (remainingLength < 0 && this.maxLengthSpan) {\n this.maxLengthSpan.classList.add('error');\n this.maxLengthSpan.innerHTML = '0';\n } else {\n if (remainingLength >= 0 && this.maxLengthSpan) {\n this.maxLengthSpan.innerHTML = (this.euiEditorMaxlength - valueLength).toString();\n this.maxLengthSpan.classList.remove('error');\n }\n }\n }\n\n private createMaxLengthBox(): void {\n this.maxLengthSpan = this.renderer.createElement('span');\n this.renderer.addClass(this.maxLengthSpan, 'input-maxlength');\n this.renderer.setAttribute(this.maxLengthSpan, 'innerHTML', this.euiEditorMaxlength.toString());\n\n const nativeElement: HTMLElement = this.el.nativeElement;\n if (nativeElement != null) {\n this.renderer.setStyle(nativeElement, 'width', '100%');\n const parent: Node = nativeElement.parentNode;\n if (parent != null && this.isShowMaxlength) {\n this.wrapper = this.renderer.createElement('div');\n this.renderer.addClass(this.wrapper, 'input-maxlength-wrapper');\n parent.replaceChild(this.wrapper, nativeElement);\n this.renderer.appendChild(this.wrapper, nativeElement);\n this.renderer.appendChild(this.wrapper, this.maxLengthSpan);\n }\n }\n }\n\n private destroyMaxLengthBox(): void {\n if (this.maxLengthSpan) {\n this.renderer.removeChild(this.maxLengthSpan.parentElement, this.maxLengthSpan);\n }\n\n if (this.wrapper) {\n const parent: Node = this.wrapper.parentNode;\n const nativeElement: HTMLElement = this.el.nativeElement;\n parent.replaceChild(nativeElement, this.wrapper);\n this.renderer.removeChild(this.wrapper.parentElement, this.wrapper);\n }\n }\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\n\nconst isJson = (value: string): boolean => {\n try {\n JSON.parse(value);\n } catch (e) {\n return false;\n }\n return true;\n};\n\nconst byteLength = (value: string): number => {\n // returns the byte length of an utf8 string\n let s = value.length;\n for (let i = value.length - 1; i >= 0; i--) {\n const code = value.charCodeAt(i);\n if (code > 0x7f && code <= 0x7ff) {\n s++;\n } else if (code > 0x7ff && code <= 0xffff) {\n s += 2;\n }\n if (code >= 0xdc00 && code <= 0xdfff) {\n i--;\n }\n }\n return s;\n};\n\n/**\n * @description\n * Validator that requires the length of the editor's content, out of HTML tags or JSON structure, to be greater than or equal\n * to the provided minimum length.\n *\n * @usageNotes\n * Validate that the editor has a minimum of 5 characters:\n *\n * ```typescript\n * const editor = new FormControl('ng', euiEditorMinLength(5));\n * console.log(editor.errors); // { minlength: { minLength: 5, actual: 2 } }\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `minlength` if the validation check fails, otherwise `null`.\n */\nexport const euiEditorMinLength =\n (minLength: number): ValidatorFn =>\n (control: AbstractControl): { minLength: { minLength: number; actual: number } } | null => {\n if (control.value) {\n let actual = 0;\n if (isJson(control.value)) {\n const content = JSON.parse(control.value)\n .ops.filter((c: { attributes: string; insert: string }) => typeof c.insert === 'string')\n .map((c: { attributes: string; insert: string }) => c.insert.replace(/\\n/g, ''));\n\n const jsonStrippedContent = content.join('');\n actual = jsonStrippedContent.length;\n } else {\n const regex = /(<([^>]+)>)/gi;\n const tagsStrippedContent = control.value.replace(regex, '');\n actual = tagsStrippedContent.length;\n }\n\n return actual < minLength ? { minLength: { minLength, actual } } : null;\n }\n };\n\n/**\n * @description\n * Validator that requires the length of the editor's content, out of HTML tags or JSON structure, to be less than or equal\n * to the provided maximum length.\n *\n * @usageNotes\n * Validate that the editor has a maximum of 10 characters:\n *\n * ```typescript\n * const editor = new FormControl('ng angular reactive', euiEditorMaxLength(10));\n * console.log(editor.errors); // { maxLength: { maxLength: 10, actual: 19 } }\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `maxlength` if the validation check fails, otherwise `null`.\n */\nexport const euiEditorMaxLength =\n (maxLength: number): ValidatorFn =>\n (control: AbstractControl): { maxLength: { maxLength: number; actual: number } } | null => {\n if (control.value) {\n let actual = 0;\n if (isJson(control.value)) {\n const content = JSON.parse(control.value)\n .ops.filter((c: { attributes: string; insert: string }) => typeof c.insert === 'string')\n .map((c: { attributes: string; insert: string }) => c.insert.replace(/\\n/g, ''));\n\n const jsonStrippedContent = content.join('');\n actual = jsonStrippedContent.length;\n } else {\n const regex = /(<([^>]+)>)/gi;\n const tagsStrippedContent = control.value.replace(regex, '');\n actual = tagsStrippedContent.length;\n }\n\n return actual > maxLength ? { maxLength: { maxLength, actual } } : null;\n }\n };\n\n/**\n * @description\n * Validator that requires the number of words in the editor, out of HTML tags or JSON structure, to be greater than or equal\n * to the provided minimum number.\n *\n * @usageNotes\n * Validate that the editor has a minimum of 5 words:\n *\n * ```typescript\n * const editor = new FormControl('ng angular', euiEditorMinWords(5));\n * console.log(editor.errors); // { minWords: { minWords: 5, actual: 2 } }\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `minWords` if the validation check fails, otherwise `null`.\n */\nexport const euiEditorMinWords =\n (minWords: number): ValidatorFn =>\n (control: AbstractControl<string>): { minWords: { minWords: number; actual: number } } | null => {\n const regex = /[\\s\\n]+/;\n if (control.value) {\n let actual = 0;\n if (isJson(control.value)) {\n const content = JSON.parse(control.value)\n .ops.filter((c: { insert: string }) => typeof c.insert === 'string')\n .map((c: { insert: string }) => c.insert);\n\n const jsonStrippedContent = content.join('');\n actual = jsonStrippedContent.replace(/\\n/g, ' ').split(/\\s+/).filter(t => t !== '').length;\n } else {\n const text = control.value.replace(/[\\u200B-\\u200D\\uFEFF]/g, '').replace(/<\\/(p|div|br|li|h[1-6])>/gi, ' ').replace(/<[^>]+>/g, '');\n actual = !text ? 0 : text.trim().split(regex).filter(t => t !== '').length;\n }\n\n return actual < minWords ? { minWords: { minWords, actual } } : null;\n }\n };\n\n/**\n * @description\n * Validator that requires the number of words in the editor, out of HTML tags or JSON structure, to be less than or equal\n * to the provided maximum number.\n *\n * @usageNotes\n * Validate that the editor has a maximum of 10 words:\n *\n * ```typescript\n * const editor = new FormControl('ng angular reactive forms editor wysiwyg eui ec europa npm node', euiEditorMaxWords(10));\n * console.log(editor.errors); // { maxWords: { maxWords: 10, actual: 11 } }\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `maxWords` if the validation check fails, otherwise `null`.\n */\nexport const euiEditorMaxWords =\n (maxWords: number): ValidatorFn =>\n (control: AbstractControl<string>): { maxWords: { maxWords: number; actual: number } } | null => {\n const regex = /[\\s\\n]+/;\n if (control.value) {\n let actual = 0;\n if (isJson(control.value)) {\n const content = JSON.parse(control.value)\n .ops.filter((c: { insert: string }) => typeof c.insert === 'string')\n .map((c: { insert: string }) => c.insert);\n\n const jsonStrippedContent = content.join('');\n actual = jsonStrippedContent.replace(/\\n/g, ' ').split(/\\s+/).filter(t => t !== '').length;\n } else {\n const text = control.value.replace(/[\\u200B-\\u200D\\uFEFF]/g, '').replace(/<\\/(p|div|br|li|h[1-6])>/gi, ' ').replace(/<[^>]+>/g, '');\n actual = !text ? 0 : text.trim().split(regex).filter(t => t !== '').length;\n }\n\n return actual > maxWords ? { maxWords: { maxWords, actual } } : null;\n }\n };\n\n/**\n * @description\n * Validator that requires the number of bytes in the editor, with HTML tags or JSON structure, to be greater than or equal\n * to the provided minimum number.\n *\n * @usageNotes\n * Validate that the editor has a minimum of 20 bytes:\n *\n * ```typescript\n * const editor = new FormControl('<p>europa.eu</p>', euiEditorMinBytes(20));\n * console.log(editor.errors); // { minBytes: { minBytes: 20, actual: 16 } }\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `minBytes` if the validation check fails, otherwise `null`.\n */\nexport const euiEditorMinBytes =\n (minBytes: number): ValidatorFn =>\n (control: AbstractControl): { minBytes: { minBytes: number; actual: number } } | null => {\n if (control.value) {\n let actual = 0;\n const m = encodeURIComponent(control.value).match(/%[89ABab]/g);\n actual = control.value.length + (m ? m.length : 0);\n\n return actual < minBytes ? { minBytes: { minBytes, actual } } : null;\n }\n };\n\n/**\n * @description\n * Validator that requires the number of bytes in the editor, with HTML tags or JSON structure, to be less than or equal\n * to the provided minimum number.\n *\n * @usageNotes\n * Validate that the editor has a maximum of 20 bytes:\n *\n * ```typescript\n * const editor = new FormControl('<p>europa.eu site</p>', euiEditorMinBytes(20));\n * console.log(editor.errors); // { maxBytes: { maxBytes: 20, actual: 21 } }\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `maxBytes` if the validation check fails, otherwise `null`.\n */\nexport const euiEditorMaxBytes =\n (maxBytes: number): ValidatorFn =>\n (control: AbstractControl): { maxBytes: { maxBytes: number; actual: number } } | null => {\n if (control.value) {\n let actual = 0;\n if (isJson(control.value)) {\n actual = byteLength(control.value);\n } else {\n const m = encodeURIComponent(control.value).match(/%[89ABab]/g);\n actual = control.value.length + (m ? m.length : 0);\n }\n\n return actual > maxBytes ? { maxBytes: { maxBytes, actual } } : null;\n }\n };\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { EuiDialogModule } from '@eui/components/eui-dialog';\nimport { EuiTooltipDirectiveModule } from '@eui/components/directives';\nimport { EuiIconModule } from '@eui/components/eui-icon';\nimport { QuillConfig, QuillModule } from '@eui/components/externals/quill';\nimport { EuiInputTextModule } from '@eui/components/eui-input-text';\n\nimport { EuiEditorCountersComponent } from './counters/eui-editor-counters.component';\nimport { EuiEditorHtmlViewComponent } from './html-view/eui-editor-html-view.component';\nimport { EuiEditorJsonViewComponent } from './json-view/eui-editor-json-view.component';\nimport { ClassFilterPipe, EuiEditorComponent, EuiEditorCustomToolbarTagDirective } from \"./eui-editor.component\";\nimport { EuiEditorImageDialogComponent } from './image-url-dialog/image-url-dialog.component';\nimport { EuiEditorMaxlengthDirective } from './directives/eui-editor-maxlength.directive';\n\n// In case of dynamic loading this will not be available at this stage.\n// Thus the config for BetterTable keyboardBindings needs to be set at a later\n// stage. Same as the registration.\nconst QuillBetterTable = window['quillBetterTable'];\n\nconst quillConfig: QuillConfig = {\n modules: {\n table: false,\n 'better-table': {\n operationMenu: {\n items: {\n unmergeCells: {\n text: 'Another unmerge cells name',\n },\n },\n color: {\n colors: [\n '#000000',\n '#e60000',\n '#ff9900',\n '#ffff00',\n '#008a00',\n '#0066cc',\n '#9933ff',\n '#ffffff',\n '#facccc',\n '#ffebcc',\n '#ffffcc',\n '#cce8cc',\n '#cce0f5',\n '#ebd6ff',\n '#bbbbbb',\n '#f06666',\n '#ffc266',\n '#ffff66',\n '#66b966',\n '#66a3e0',\n '#c285ff',\n '#888888',\n '#a10000',\n '#b26b00',\n '#b2b200',\n '#006100',\n '#0047b2',\n '#6b24b2',\n '#444444',\n '#5c0000',\n '#663d00',\n '#666600',\n '#003700',\n '#002966',\n '#3d1466',\n ],\n text: 'Background Colors',\n },\n },\n },\n },\n};\n\nif(QuillBetterTable) {\n quillConfig.modules.keyboard = {\n bindings: QuillBetterTable?.keyboardBindings,\n };\n}\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n EuiTooltipDirectiveModule,\n QuillModule.forRoot(quillConfig),\n EuiDialogModule,\n EuiIconModule,\n EuiInputTextModule,\n EuiEditorComponent,\n EuiEditorJsonViewComponent,\n EuiEditorHtmlViewComponent,\n EuiEditorCountersComponent,\n EuiEditorImageDialogComponent,\n EuiEditorMaxlengthDirective,\n EuiEditorCustomToolbarTagDirective,\n ClassFilterPipe,\n ],\n exports: [EuiEditorComponent, EuiEditorMaxlengthDirective, EuiEditorCustomToolbarTagDirective, EuiEditorCountersComponent],\n})\nexport class EuiEditorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","QuillType","QuillBetterTable","i2"],"mappings":";;;;;;;;;;;;;;;;;;;;AASA,MAAM,YAAY,GAAG,CAAC,OAAwB,KAAkC;AAC5E,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS;AACvD,IAAA,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,UAAU;AAEzD,IAAA,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,IAAI;AAC7D,CAAC;MAeY,6BAA6B,CAAA;AAKtC,IAAA,WAAA,CAAqD,MAAkC,EAAA;QAAlC,IAAM,CAAA,MAAA,GAAN,MAAM;AAFnD,QAAA,IAAA,CAAA,QAAQ,GAAqB,IAAI,OAAO,EAAW;;IAI3D,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC;AACtB,YAAA,GAAG,EAAE,IAAI,WAAW,CAAS,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;AACxE,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACjE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5C,SAAC,CAAC;;IAGN,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;;AAnBtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,kBAKlB,uBAAuB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AALlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EC7B1C,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,4FAGA,EDoBQ,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,68BAGnB,qBAAqB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGhB,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBATzC,SAAS;AAEG,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA;wBACL,mBAAmB;wBACnB,qBAAqB;wBACrB,mBAAmB;wBACnB,qBAAqB;AACxB,qBAAA,EAAA,QAAA,EAAA,4FAAA,EAAA;;0BAOY,MAAM;2BAAC,uBAAuB;;;MEzBlC,0BAA0B,CAAA;AAPvC,IAAA,WAAA,GAAA;QASa,IAAe,CAAA,eAAA,GAAG,YAAY;QAE9B,IAAU,CAAA,UAAA,GAAG,OAAO;QACW,IAAgB,CAAA,gBAAA,GAAG,IAAI;QACvB,IAAoB,CAAA,oBAAA,GAAG,IAAI;QAC3B,IAAe,CAAA,eAAA,GAAG,IAAI;AACjE;8GARY,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,gQAKf,gBAAgB,CAAA,EAAA,oBAAA,EAAA,CAAA,sBAAA,EAAA,sBAAA,EAChB,gBAAgB,CAChB,EAAA,eAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,EAAA,gBAAgB,6BChBxC,6jBAcA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDLa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAPtC,SAAS;AAEI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,iBAEhB,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6jBAAA,EAAA;8BAGtC,iBAAiB,EAAA,CAAA;sBAAzB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACuC,gBAAgB,EAAA,CAAA;sBAAvD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBACE,oBAAoB,EAAA,CAAA;sBAA3D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBACE,eAAe,EAAA,CAAA;sBAAtD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;;MEJ7B,0BAA0B,CAAA;AASnC,IAAA,WAAA,CAAoB,SAAuB,EAAA;QAAvB,IAAS,CAAA,SAAA,GAAT,SAAS;QARP,IAAM,CAAA,MAAA,GAAG,uBAAuB;QAE7C,IAAO,CAAA,OAAA,GAAG,EAAE;QACZ,IAAK,CAAA,KAAA,GAAG,MAAM;QAEhB,IAAS,CAAA,SAAA,GAAa,EAAE;QACxB,IAAU,CAAA,UAAA,GAAG,SAAS;;AAI7B,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE;AAC7D,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;;aAClF;AACH,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;;8GAflB,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,aAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZvC,wIAGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDOc,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAER,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBARtC,SAAS;+BAEI,sBAAsB,EAAA,aAAA,EAEjB,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,OAAO,CAAC,EAAA,QAAA,EAAA,wIAAA,EAAA;mFAGI,MAAM,EAAA,CAAA;sBAA3B,WAAW;uBAAC,OAAO;gBAEX,OAAO,EAAA,CAAA;sBAAf;gBACQ,KAAK,EAAA,CAAA;sBAAb;;;AEHL,MAAMC,WAAS,GAAQ,MAAM,CAAC,OAAO,CAAC;MASzB,0BAA0B,CAAA;AAQnC,IAAA,WAAA,CAAwC,UAAsB,EAAA;QAAtB,IAAU,CAAA,UAAA,GAAV,UAAU;QAP5B,IAAM,CAAA,MAAA,GAAG,uBAAuB;QAC7C,IAAK,CAAA,KAAA,GAAG,MAAM;AAQvB,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,WAA6B,EAAE,KAAa,KAAU;YACjE,IAAI,OAAO,GAAQ,KAAK;AACxB,YAAA,IAAI;AACA,gBAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;;YAC7B,OAAO,CAAC,EAAE;AACR,gBAAA,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC;;AAErC,YAAA,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC;AACrC,SAAC;;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE;AAC7D,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;;;IAIxE,eAAe,GAAA;QACX,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,kBAAkB,CAAC,YAAY,EAAE,gCAAgC,CAAC;AAEhG,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,sBAAsB,CAAC;AAErF,QAAA,MAAM,KAAK,GAAQ,MAAM,CAAC,OAAO,CAAC;QAElC,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE;AAC1C,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;AAC3B,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,KAAK,EAAE,MAAM;AAChB,SAAA,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC;;;AA3C/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,kBAQf,UAAU,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AARrB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,uMAJzB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAIH,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAPtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,EAAE;oBACZ,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAClD,iBAAA;;0BASgB,MAAM;2BAAC,UAAU;yCAPR,MAAM,EAAA,CAAA;sBAA3B,WAAW;uBAAC,OAAO;gBACX,KAAK,EAAA,CAAA;sBAAb;gBACQ,OAAO,EAAA,CAAA;sBAAf;;;ACDL;AACA,MAAM,SAAS,GAAQ,MAAM,CAAC,OAAO,CAAC;AAetC;AACA,IAAIC,kBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC;MAyBpC,kBAAkB,CAAA;AAC3B,IAAA,IACI,KAAK,GAAA;QACL,OAAO;YACH,YAAY;YACZ,IAAI,CAAC,UAAU,GAAG,sBAAsB,GAAG,EAAE;AAC7C,YAAA,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,GAAE,mBAAmB;YACvD,CAAC,IAAI,CAAC,UAAU,GAAG,oBAAoB,GAAG,EAAE;AAC/C,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;;AA6BtB,IAAA,IACI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,UAAU,GAAG,UAAU,GAAG,IAAI;;AAkB9C,IAAA,IACI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,WAAW;;IAE3B,IAAI,UAAU,CAAC,KAAmB,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAGnD,IAAA,IACI,YAAY,GAAA;QACZ,OAAO,IAAI,CAAC,aAAa;;IAE7B,IAAI,YAAY,CAAC,KAAmB,EAAA;AAChC,QAAA,IAAI,CAAC,aAAa,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAGrD,IAAA,IACI,gBAAgB,GAAA;QAChB,OAAO,IAAI,CAAC,iBAAiB;;IAEjC,IAAI,gBAAgB,CAAC,KAAK,EAAA;AACtB,QAAA,IAAI,CAAC,iBAAiB,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAGzD,IAAA,IACI,gBAAgB,GAAA;QAChB,OAAO,IAAI,CAAC,iBAAiB;;IAEjC,IAAI,gBAAgB,CAAC,KAAmB,EAAA;AACpC,QAAA,IAAI,CAAC,iBAAiB,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAIzD,IAAA,IACI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,UAAU;;IAE1B,IAAI,SAAS,CAAC,KAAmB,EAAA;AAC7B,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AA2DlD,IAAA,WAAA,CAAoB,gBAAkC,EAClC,GAAsB,EACtB,SAAoB,EACpB,MAAqB,EAAA;QAHrB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAG,CAAA,GAAA,GAAH,GAAG;QACH,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAM,CAAA,MAAA,GAAN,MAAM;QAnJjB,IAAO,CAAA,OAAA,GAAG,YAAY;QAEtB,IAAW,CAAA,WAAA,GAAG,EAAE;QAChB,IAAM,CAAA,MAAA,GAAoB,MAAM;QAChC,IAAK,CAAA,KAAA,GAAsB,MAAM;QACjC,IAAK,CAAA,KAAA,GAAqC,KAAK;QAC/C,IAAqB,CAAA,qBAAA,GAAqB,KAAK;QAE/C,IAAQ,CAAA,QAAA,GAAG,GAAG;;AAQb,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAoB;AACnD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAyC;AACxE,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAiB;AACjD,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAmB;AACrD,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAS;AACjC,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAQ;AAC/B,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,YAAY,EAAU;AAClD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAU;QAShD,IAAK,CAAA,KAAA,GAAiB,EAAE;QACxB,IAAe,CAAA,eAAA,GAAG,CAAC;QACnB,IAAU,CAAA,UAAA,GAAG,CAAC;QACd,IAAU,CAAA,UAAA,GAAG,CAAC;QACd,IAAS,CAAA,SAAA,GAAG,KAAK;AAEjB,QAAA,IAAA,CAAA,WAAW,GAAgB,IAAI,WAAW,EAAE;QAGzC,IAAa,CAAA,aAAA,GAAY,KAAK;QAahC,IAAW,CAAA,WAAA,GAAG,KAAK;QAQnB,IAAa,CAAA,aAAA,GAAG,IAAI;QAQpB,IAAiB,CAAA,iBAAA,GAAG,KAAK;QAQzB,IAAiB,CAAA,iBAAA,GAAG,KAAK;QASzB,IAAU,CAAA,UAAA,GAAG,KAAK;AAGlB,QAAA,IAAA,CAAA,oBAAoB,GAAwB;YAChD,EAAE,IAAI,EAAE,UAAU,EAAE;YACpB,EAAE,IAAI,EAAE,MAAM,EAAE;YAChB,EAAE,IAAI,EAAE,QAAQ,EAAE;YAClB,EAAE,IAAI,EAAE,WAAW,EAAE;YACrB,EAAE,IAAI,EAAE,WAAW,EAAE;YACrB,EAAE,IAAI,EAAE,WAAW,EAAE;YACrB,EAAE,IAAI,EAAE,MAAM,EAAE;YAChB,EAAE,IAAI,EAAE,OAAO,EAAE;YACjB,EAAE,IAAI,EAAE,UAAU,EAAE;YACpB,EAAE,IAAI,EAAE,OAAO,EAAE;YACjB,EAAE,IAAI,EAAE,QAAQ,EAAE;YAClB,EAAE,IAAI,EAAE,MAAM,EAAE;YAChB,EAAE,IAAI,EAAE,MAAM,EAAE;YAChB,EAAE,IAAI,EAAE,UAAU,EAAE;SACvB;AACO,QAAA,IAAA,CAAA,oBAAoB,GAAwB;YAChD,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,6DAA6D,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACvH,YAAA,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,6BAA6B,EAAE;AACtD,YAAA,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,+CAA+C,EAAE;AACxE,YAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,iDAAiD,EAAE;AAC5E,YAAA,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,oDAAoD,EAAE;AAClF,YAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,gEAAgE,EAAE;AAC3F,YAAA,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,oCAAoC,EAAE;AAClE,YAAA,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,oDAAoD,EAAE;AACvF,YAAA,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,2DAA2D,EAAE;AACzF,YAAA,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,+DAA+D,EAAE;AAC/F,YAAA,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,gGAAgG,EAAE;AAC9H,YAAA,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,mCAAmC,EAAE;AACnE,YAAA,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,iCAAiC,EAAE;AAChE,YAAA,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,8DAA8D,EAAE;AAC7F,YAAA,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,8DAA8D,EAAE;AAC7F,YAAA,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,yDAAyD,EAAE;AACxF,YAAA,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,oEAAoE,EAAE;AAClG,YAAA,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,sGAAsG,EAAE;AAC/H,YAAA,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,+CAA+C,EAAE;YACzE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,8DAA8D,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAClI,YAAA,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,2CAA2C,EAAE;AACrE,YAAA,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,6CAA6C,EAAE;AACvE,YAAA,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,wDAAwD,EAAE;AAClF,YAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,wDAAwD,EAAE;AACnF,YAAA,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,+CAA+C,EAAE;AACxE,YAAA,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,oDAAoD,EAAE;AAC7E,YAAA;AACI,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,KAAK,EAAE,0DAA0D;AACjE,gBAAA,OAAO,EAAE;AACL,oBAAA,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;AAC3C,oBAAA,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;AACpC,iBAAA;AACJ,aAAA;SACJ;AACO,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAW;AAqLjC,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAC;AA2FxB,QAAA,IAAA,CAAA,QAAQ,GAAQ,MAAK,GAAG;AAExB,QAAA,IAAA,CAAA,OAAO,GAAQ,MAAK,GAAG;AA5Q3B,QAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;;AAGvC,IAAA,WAAW,CAAC,CAAgB,EAAA;AACxB,QAAA,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE;AAC7B,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;;;IAI1C,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC;YACzB,QAAQ,EAAE,MAAK;AACX,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,gBAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACvH,oBAAA,IAAI,CAAC,SAAS,GAAG,MAAM,KAAK,OAAO;AACvC,iBAAC,CAAC;AAEF,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,aAAa,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE;AAE3G,gBAAA,IAAI,CAAC,aAAa,GAAG,EAAE;gBACvB,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;oBACrD,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;wBACpC,IAAI,CAAC,aAAa,GAAG;4BACjB,GAAG,IAAI,CAAC,aAAa;4BACrB,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,EAAE;yBACnF;AACL,qBAAC,CAAC;;gBAGN,IAAI,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;oBACpD,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACnC,wBAAA,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;AACjG,wBAAA,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;AACvG,wBAAA,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa;AAErH,wBAAA,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE;AACvB,4BAAA,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE;gCACZ,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO;;iCACvE;gCACH,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;AAC/B,oCAAA,MAAM,WAAW,GAAG,MAAM,CAAC;0CACrB,MAAM,CAAC;0CACP,IAAI,CAAC;6CACF,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,UAAU;AACrC,6CAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK;oCAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE;AACpD,iCAAC,CAAC;;;wBAIV,IAAI,CAAC,aAAa,GAAG;4BACjB,GAAG,IAAI,CAAC,aAAa;AACrB,4BAAA,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;yBACjD;AACL,qBAAC,CAAC;;AAGN,gBAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;oBACvB,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACpC,wBAAA,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;AACjG,wBAAA,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;AACzG,wBAAA,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa;wBAErH,IAAI,CAAC,aAAa,GAAG;4BACjB,GAAG,IAAI,CAAC,aAAa;AACrB,4BAAA,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;yBACjD;AACL,qBAAC,CAAC;;AAEN,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAE9B,SAAA,CAAC;;IAGN,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;;IAKxB,mBAAmB,GAAA;QACtB,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,UAAU,EAAE;AAC1C,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;;;IAIxB,eAAe,GAAA;QAClB,IAAI,kBAAkB,GAAc,IAAI;AACxC,QAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAC5B,IAAI,eAAe,CAAC;AAChB,YAAA,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa;AAChD,YAAA,qBAAqB,EAAE,IAAI;AAC3B,YAAA,aAAa,EAAE;AACX,gBAAA,SAAS,EAAE,6BAA6B;AACxC,gBAAA,MAAM,EAAE;AACJ,oBAAA,iBAAiB,EAAE,CAAC,IAAe,KAAU;wBACzC,kBAAkB,GAAG,IAAI;qBAC5B;AACJ,iBAAA;AACJ,aAAA;YACD,MAAM,EAAE,MAAW;AACf,gBAAA,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,KAAK,EAAE;AAChD,oBAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;AAEnC,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;oBAClE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC;;aAEhG;AACJ,SAAA,CAAC,CACL;;IAGE,UAAU,GAAA;QACb,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE;;IAGzB,UAAU,GAAA;QACb,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE;;IAGzB,mBAAmB,GAAA;AACtB,QAAA,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;AAC/B,YAAA,KAAK,EAAE,gBAAgB;AACvB,YAAA,OAAO,EAAE,0DAA0D;AACnE,YAAA,cAAc,EAAE,KAAK;YACrB,MAAM,EAAE,MAAW;AACf,gBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;aAC/B;AACJ,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC;;IAGrC,WAAW,GAAA;QACd,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;;AAGtC,IAAA,IAAI,eAAe,GAAA;QACf,OAAO,IAAI,CAAC;AACR,cAAE,IAAI,CAAC,sBAAsB,EAAE,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW;AACjF,cAAE,IAAI,CAAC,aAAa,CAAC,KAAK;;AAG3B,IAAA,gBAAgB,CAAC,KAAuB,EAAA;AAC3C,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAElB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;;AAGtB,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;AACxB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAe,EAAE,CAAC;AAC1E,YAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC;AAClC,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC;;AAGjC,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;YACxB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AACvC,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;AAGlD,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACvB,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,OAAgB,EAAE,KAAY,KAAK,IAAI,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC7F,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,OAAgB,EAAE,KAAY,KAAK,IAAI,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;;AAGrG,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG1B,IAAA,gBAAgB,CAAC,KAAoD,EAAA;AACxE,QAAA,OAAO,CAAC,IAAI,CAAC,iFAAiF,CAAC;AAC/F,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAA8B,CAAC;;AAKnD,IAAA,iBAAiB,CAAC,KAAoB,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;AACxB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI;AACvB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAe,CAAC;;AAE5C,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACvB,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;;;AAGpE,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;AACxB,YAAA,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;AACrB,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO;AAC1B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC;AAClC,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;AAE5E,gBAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACvB,oBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC;;;iBAEtC;AACH,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;AAC1B,gBAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;;AAE3B,gBAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACvB,oBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;;;;QAI/B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;;AAG1B,IAAA,mBAAmB,CAAC,KAAsB,EAAA;AAC7C,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG7B,IAAA,QAAQ,CAAC,KAAY,EAAA;AACxB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGnB,IAAA,OAAO,CAAC,KAAW,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACtB,IAAI,CAAC,OAAO,EAAE;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGlB,IAAA,gBAAgB,CAAC,EAAO,EAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGf,IAAA,iBAAiB,CAAC,EAAO,EAAA;AAC5B,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;;AAGd,IAAA,UAAU,CAAC,KAAa,EAAA;;AAE3B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,IAAI;AAC1B,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK;;AAGnC,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;;AAEZ,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAE3B,YAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;AACxB,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAe,EAAE,CAAC;AAC1E,gBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACxD,gBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC;;YAGjC,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE;AACtC,gBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;;;AAIjE,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;;YAGlC,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAChC,aAAC,CAAC;;;AAIV,IAAA,IAAY,WAAW,GAAA;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC;;AAOvC,IAAA,kBAAkB,CAAC,OAAe,EAAA;QACtC,IAAI,CAAC,GAAG,OAAO;QACf,IAAI,CAAC,EAAE;YACH,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;YAC3B,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;;AAGhC,QAAA,OAAO,CAAC;;AAGZ,IAAA,IAAI,oBAAoB,GAAA;QACpB,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC;;AAGnF,IAAA,IAAI,sBAAsB,GAAA;QACtB,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,KAAK;;AAG1F,IAAA,IAAI,eAAe,GAAA;QACf,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;;AAG9E,IAAA,IAAI,iBAAiB,GAAA;QACjB,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,KAAK;;AAG7E,IAAA,iBAAiB,CAAC,OAAe,EAAA;AACrC,QAAA,IAAI,IAAY;QAChB,MAAM,KAAK,GAAG,SAAS;AAEvB,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;YACxB,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,gBAAA,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AAC9B,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM;AAElC,gBAAA,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AACjF,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM;;iBAChF;AACH,gBAAA,IAAI,CAAC,eAAe,GAAG,CAAC;AACxB,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC;AACnB,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC;;;AAI3B,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;AACxB,YAAA,IAAI,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE;AACvB,gBAAA,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AAChD,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM;gBAElC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AACnG,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM;;iBAChF;AACH,gBAAA,IAAI,CAAC,eAAe,GAAG,CAAC;AACxB,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC;AACnB,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC;;;QAI3B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;QACrD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;;AAGvC,IAAA,SAAS,CAAC,OAAe,EAAA;QAC7B,MAAM,KAAK,GAAG,eAAe;QAC7B,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACnD,OAAO,gBAAgB,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC;;AAGzD,IAAA,SAAS,CAAC,OAAe,EAAA;QAC7B,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;QACxD,OAAO,gBAAgB,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC;;8GAlfxD,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAhBhB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,uBAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;;YAEP,gBAAgB;AACnB,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAmE8B,kCAAkC,CCxHrE,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,glcA4UA,u9nBDrRQ,WAAW,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,aAAA,EAAA,WAAA,EAAA,WAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACX,OAAO,CACP,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,mBAAmB,CACnB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,mBAAmB,mWACnB,0BAA0B,CAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAC1B,0BAA0B,CAC1B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,0BAA0B,+GAwgBrB,eAAe,CAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,KAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAngBf,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAvB9B,SAAS;+BAEI,YAAY,EAAA,aAAA,EAGP,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;;wBAEP,gBAAgB;qBACnB,EACQ,OAAA,EAAA;wBACL,WAAW;wBACX,OAAO;wBACP,mBAAmB;wBACnB,mBAAmB;wBACnB,0BAA0B;wBAC1B,0BAA0B;wBAC1B,0BAA0B;AAC1B,wBAAA,UAAU,CAAC,MAAM,eAAe,CAAC;AACjC,wBAAA,GAAG,QAAQ;AACd,qBAAA,EAAA,QAAA,EAAA,glcAAA,EAAA,MAAA,EAAA,CAAA,44nBAAA,CAAA,EAAA;2KAIG,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,OAAO;gBASX,OAAO,EAAA,CAAA;sBAAf;gBACQ,EAAE,EAAA,CAAA;sBAAV;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,qBAAqB,EAAA,CAAA;sBAA7B;gBAEQ,QAAQ,EAAA,CAAA;sBADhB,WAAW;uBAAC,eAAe;;sBAC3B;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBAEQ,mBAAmB,EAAA,CAAA;sBAA3B;gBAEQ,MAAM,EAAA,CAAA;sBADd,WAAW;uBAAC,cAAc;;sBAC1B;gBAES,YAAY,EAAA,CAAA;sBAArB;gBACS,YAAY,EAAA,CAAA;sBAArB;gBACS,aAAa,EAAA,CAAA;sBAAtB;gBACS,eAAe,EAAA,CAAA;sBAAxB;gBACS,KAAK,EAAA,CAAA;sBAAd;gBACS,IAAI,EAAA,CAAA;sBAAb;gBACS,qBAAqB,EAAA,CAAA;sBAA9B;gBACS,gBAAgB,EAAA,CAAA;sBAAzB;gBAEgC,IAAI,EAAA,CAAA;sBAApC,WAAW;uBAAC,kBAAkB;gBAG3B,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,eAAe;gBAkB5B,sBAAsB,EAAA,CAAA;sBADrB,YAAY;uBAAC,UAAU,CAAC,MAAM,kCAAkC,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAIjF,UAAU,EAAA,CAAA;sBADb;gBASG,YAAY,EAAA,CAAA;sBADf;gBASG,gBAAgB,EAAA,CAAA;sBADnB;gBASG,gBAAgB,EAAA,CAAA;sBADnB;gBAUG,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,mBAAmB;gBAqJzB,mBAAmB,EAAA,CAAA;sBAFzB,YAAY;uBAAC,OAAO;;sBACpB,YAAY;uBAAC,SAAS;;AAwQ3B;MAEa,kCAAkC,CAAA;AAG3C,IAAA,WAAA,CAAmB,UAAsB,EAAA;QAAtB,IAAU,CAAA,UAAA,GAAV,UAAU;QAFP,IAAY,CAAA,YAAA,GAAG,2BAA2B;;8GADvD,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlC,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAlC,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAD9C,SAAS;mBAAC,EAAE,QAAQ,EAAE,wBAAwB,GAAG;+EAExB,YAAY,EAAA,CAAA;sBAAjC,WAAW;uBAAC,OAAO;;AAIxB;AAEA;;AAEG;MAEU,eAAe,CAAA;AACxB,IAAA,SAAS,CAAC,KAAa,EAAA;AACnB,QAAA,OAAO;AACF,aAAA,OAAO,CAAC,qBAAqB,EAAE,EAAE;AACjC,aAAA,OAAO,CAAC,uBAAuB,EAAE,EAAE;AACnC,aAAA,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC;;8GALjC,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,IAAI;mBAAC,EAAE,IAAI,EAAE,aAAa,GAAG;;;ME5jBjB,2BAA2B,CAAA;AAEpC,IAAA,IACI,kBAAkB,GAAA;QAClB,OAAO,IAAI,CAAC,mBAAmB;;IAEnC,IAAI,kBAAkB,CAAC,KAAkB,EAAA;AACrC,QAAA,IAAI,CAAC,mBAAmB,GAAG,oBAAoB,CAAC,KAAK,CAAC;;AAG1D,IAAA,IACI,eAAe,GAAA;QACf,OAAO,IAAI,CAAC,gBAAgB;;IAEhC,IAAI,eAAe,CAAC,KAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,gBAAgB,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAQxD,IAAA,WAAA,CAAoB,EAAc,EAAU,QAAmB,EAAkB,OAAkB,EAAA;QAA/E,IAAE,CAAA,EAAA,GAAF,EAAE;QAAsB,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAA6B,IAAO,CAAA,OAAA,GAAP,OAAO;QAtB/E,IAAM,CAAA,MAAA,GAAoB,MAAM;QAgBjC,IAAgB,CAAA,gBAAA,GAAG,IAAI;;AAQ/B,IAAA,WAAW,CAAC,OAAsB,EAAA;QAC9B,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;AAClD,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE;gBACtB,IAAI,CAAC,kBAAkB,EAAE;gBACzB,IAAI,CAAC,YAAY,EAAE;;iBAChB;gBACH,IAAI,CAAC,mBAAmB,EAAE;;;;IAKtC,kBAAkB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,YAAY,EAAE;;AAGvB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE;AAC5B,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;gBACrE,IAAI,CAAC,YAAY,EAAE;AACvB,aAAC,CAAC;;;IAIV,WAAW,GAAA;QACP,IAAI,CAAC,mBAAmB,EAAE;AAE1B,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;AAC/B,YAAA,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE;;;IAI3C,YAAY,GAAA;QAChB,IAAI,WAAW,GAAG,CAAC;QACnB,IAAI,eAAe,GAAG,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;YACxB,MAAM,KAAK,GAAG,eAAe;YAC7B,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE;AAC3F,YAAA,WAAW,GAAG,mBAAmB,CAAC,MAAM;AACxC,YAAA,eAAe,GAAG,IAAI,CAAC,kBAAkB,GAAG,WAAW;;aACpD;AACH,YAAA,MAAM,OAAO,GACT,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK;kBACvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;AACxB,qBAAA,GAAG,CAAC,MAAM,CAAC,CAAC,CAAyC,KAAK,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;AACtF,qBAAA,GAAG,CAAC,CAAC,CAAyC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AACrF,kBAAE,CAAC,EAAE,CAAC;YAEd,MAAM,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;AAC5C,YAAA,WAAW,GAAG,mBAAmB,CAAC,MAAM;AACxC,YAAA,eAAe,GAAG,IAAI,CAAC,kBAAkB,GAAG,WAAW;;QAG3D,IAAI,eAAe,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;YAC3C,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;AACzC,YAAA,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,GAAG;;aAC/B;YACH,IAAI,eAAe,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;AAC5C,gBAAA,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,kBAAkB,GAAG,WAAW,EAAE,QAAQ,EAAE;gBACjF,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;;;;IAKhD,kBAAkB,GAAA;QACtB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;QACxD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC;AAC7D,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;AAE/F,QAAA,MAAM,aAAa,GAAgB,IAAI,CAAC,EAAE,CAAC,aAAa;AACxD,QAAA,IAAI,aAAa,IAAI,IAAI,EAAE;YACvB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC;AACtD,YAAA,MAAM,MAAM,GAAS,aAAa,CAAC,UAAU;YAC7C,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;gBACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,yBAAyB,CAAC;gBAC/D,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC;gBAChD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC;AACtD,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC;;;;IAK/D,mBAAmB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC;;AAGnF,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,MAAM,MAAM,GAAS,IAAI,CAAC,OAAO,CAAC,UAAU;AAC5C,YAAA,MAAM,aAAa,GAAgB,IAAI,CAAC,EAAE,CAAC,aAAa;YACxD,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC;AAChD,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC;;;8GAtHlE,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,uCAAuC;AAAG,iBAAA;;0BAwBc;yCAtBzD,MAAM,EAAA,CAAA;sBAAd;gBAEG,kBAAkB,EAAA,CAAA;sBADrB;gBASG,eAAe,EAAA,CAAA;sBADlB;;;AChBL,MAAM,MAAM,GAAG,CAAC,KAAa,KAAa;AACtC,IAAA,IAAI;AACA,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;;IACnB,OAAO,CAAC,EAAE;AACR,QAAA,OAAO,KAAK;;AAEhB,IAAA,OAAO,IAAI;AACf,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,KAAa,KAAY;;AAEzC,IAAA,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM;AACpB,IAAA,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;QACxC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;QAChC,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,EAAE;AAC9B,YAAA,CAAC,EAAE;;aACA,IAAI,IAAI,GAAG,KAAK,IAAI,IAAI,IAAI,MAAM,EAAE;YACvC,CAAC,IAAI,CAAC;;QAEV,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,EAAE;AAClC,YAAA,CAAC,EAAE;;;AAGX,IAAA,OAAO,CAAC;AACZ,CAAC;AAED;;;;;;;;;;;;;;;AAeG;AACI,MAAM,kBAAkB,GAC3B,CAAC,SAAiB,KAClB,CAAC,OAAwB,KAAiE;AACtF,IAAA,IAAI,OAAO,CAAC,KAAK,EAAE;QACf,IAAI,MAAM,GAAG,CAAC;AACd,QAAA,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACvB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK;AACnC,iBAAA,GAAG,CAAC,MAAM,CAAC,CAAC,CAAyC,KAAK,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;AACtF,iBAAA,GAAG,CAAC,CAAC,CAAyC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAEpF,MAAM,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;AAC5C,YAAA,MAAM,GAAG,mBAAmB,CAAC,MAAM;;aAChC;YACH,MAAM,KAAK,GAAG,eAAe;AAC7B,YAAA,MAAM,mBAAmB,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAC5D,YAAA,MAAM,GAAG,mBAAmB,CAAC,MAAM;;AAGvC,QAAA,OAAO,MAAM,GAAG,SAAS,GAAG,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI;;AAE/E;AAEJ;;;;;;;;;;;;;;;AAeG;AACI,MAAM,kBAAkB,GAC3B,CAAC,SAAiB,KAClB,CAAC,OAAwB,KAAiE;AACtF,IAAA,IAAI,OAAO,CAAC,KAAK,EAAE;QACf,IAAI,MAAM,GAAG,CAAC;AACd,QAAA,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACvB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK;AACnC,iBAAA,GAAG,CAAC,MAAM,CAAC,CAAC,CAAyC,KAAK,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;AACtF,iBAAA,GAAG,CAAC,CAAC,CAAyC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAEpF,MAAM,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;AAC5C,YAAA,MAAM,GAAG,mBAAmB,CAAC,MAAM;;aAChC;YACH,MAAM,KAAK,GAAG,eAAe;AAC7B,YAAA,MAAM,mBAAmB,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAC5D,YAAA,MAAM,GAAG,mBAAmB,CAAC,MAAM;;AAGvC,QAAA,OAAO,MAAM,GAAG,SAAS,GAAG,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI;;AAE/E;AAEJ;;;;;;;;;;;;;;;AAeG;AACI,MAAM,iBAAiB,GAC1B,CAAC,QAAgB,KACjB,CAAC,OAAgC,KAA+D;IAC5F,MAAM,KAAK,GAAG,SAAS;AACvB,IAAA,IAAI,OAAO,CAAC,KAAK,EAAE;QACf,IAAI,MAAM,GAAG,CAAC;AACd,QAAA,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACvB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK;AACnC,iBAAA,GAAG,CAAC,MAAM,CAAC,CAAC,CAAqB,KAAK,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;iBAClE,GAAG,CAAC,CAAC,CAAqB,KAAK,CAAC,CAAC,MAAM,CAAC;YAE7C,MAAM,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM;;aACvF;YACH,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AACnI,YAAA,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM;;AAG9E,QAAA,OAAO,MAAM,GAAG,QAAQ,GAAG,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI;;AAE5E;AAEJ;;;;;;;;;;;;;;;AAeG;AACI,MAAM,iBAAiB,GAC1B,CAAC,QAAgB,KACjB,CAAC,OAAgC,KAA+D;IAC5F,MAAM,KAAK,GAAG,SAAS;AACvB,IAAA,IAAI,OAAO,CAAC,KAAK,EAAE;QACf,IAAI,MAAM,GAAG,CAAC;AACd,QAAA,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACvB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK;AACnC,iBAAA,GAAG,CAAC,MAAM,CAAC,CAAC,CAAqB,KAAK,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;iBAClE,GAAG,CAAC,CAAC,CAAqB,KAAK,CAAC,CAAC,MAAM,CAAC;YAE7C,MAAM,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM;;aACvF;YACH,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AACnI,YAAA,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM;;AAG9E,QAAA,OAAO,MAAM,GAAG,QAAQ,GAAG,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI;;AAE5E;AAEJ;;;;;;;;;;;;;;;AAeG;AACI,MAAM,iBAAiB,GAC1B,CAAC,QAAgB,KACjB,CAAC,OAAwB,KAA+D;AACpF,IAAA,IAAI,OAAO,CAAC,KAAK,EAAE;QACf,IAAI,MAAM,GAAG,CAAC;AACd,QAAA,MAAM,CAAC,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;QAC/D,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAElD,QAAA,OAAO,MAAM,GAAG,QAAQ,GAAG,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI;;AAE5E;AAEJ;;;;;;;;;;;;;;;AAeG;AACI,MAAM,iBAAiB,GAC1B,CAAC,QAAgB,KACjB,CAAC,OAAwB,KAA+D;AACpF,IAAA,IAAI,OAAO,CAAC,KAAK,EAAE;QACf,IAAI,MAAM,GAAG,CAAC;AACd,QAAA,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACvB,YAAA,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;;aAC/B;AACH,YAAA,MAAM,CAAC,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;YAC/D,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;;AAGtD,QAAA,OAAO,MAAM,GAAG,QAAQ,GAAG,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI;;AAE5E;;AC9NJ;AACA;AACA;AACA,MAAM,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAEnD,MAAM,WAAW,GAAgB;AAC7B,IAAA,OAAO,EAAE;AACL,QAAA,KAAK,EAAE,KAAK;AACZ,QAAA,cAAc,EAAE;AACZ,YAAA,aAAa,EAAE;AACX,gBAAA,KAAK,EAAE;AACH,oBAAA,YAAY,EAAE;AACV,wBAAA,IAAI,EAAE,4BAA4B;AACrC,qBAAA;AACJ,iBAAA;AACD,gBAAA,KAAK,EAAE;AACH,oBAAA,MAAM,EAAE;wBACJ,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;AACZ,qBAAA;AACD,oBAAA,IAAI,EAAE,mBAAmB;AAC5B,iBAAA;AACJ,aAAA;AACJ,SAAA;AACJ,KAAA;CACJ;AAED,IAAG,gBAAgB,EAAE;AACjB,IAAA,WAAW,CAAC,OAAO,CAAC,QAAQ,GAAG;QAC3B,QAAQ,EAAE,gBAAgB,EAAE,gBAAgB;KAC/C;AACL;MAuBa,eAAe,CAAA;8GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAnBpB,YAAY;YACZ,WAAW;YACX,mBAAmB;AACnB,YAAA,yBAAyB,kBAEzB,eAAe;YACf,aAAa;YACb,kBAAkB;YAClB,kBAAkB;YAClB,0BAA0B;YAC1B,0BAA0B;YAC1B,0BAA0B;YAC1B,6BAA6B;YAC7B,2BAA2B;YAC3B,kCAAkC;AAClC,YAAA,eAAe,aAET,kBAAkB,EAAE,2BAA2B,EAAE,kCAAkC,EAAE,0BAA0B,CAAA,EAAA,CAAA,CAAA;AAEhH,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAnBpB,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,yBAAyB;AACzB,YAAA,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC;YAChC,eAAe;YACf,aAAa;YACb,kBAAkB;YAClB,kBAAkB;YAIlB,6BAA6B,CAAA,EAAA,CAAA,CAAA;;2FAOxB,eAAe,EAAA,UAAA,EAAA,CAAA;kBArB3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,yBAAyB;AACzB,wBAAA,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC;wBAChC,eAAe;wBACf,aAAa;wBACb,kBAAkB;wBAClB,kBAAkB;wBAClB,0BAA0B;wBAC1B,0BAA0B;wBAC1B,0BAA0B;wBAC1B,6BAA6B;wBAC7B,2BAA2B;wBAC3B,kCAAkC;wBAClC,eAAe;AAClB,qBAAA;oBACD,OAAO,EAAE,CAAC,kBAAkB,EAAE,2BAA2B,EAAE,kCAAkC,EAAE,0BAA0B,CAAC;AAC7H,iBAAA;;;ACtGD;;AAEG;;;;"}