{"version":3,"file":"bsachref-ng-form.mjs","sources":["../../../ngForm/src/app/validation-messages/validation-messages.component.ts","../../../ngForm/src/app/validation-messages/validation-messages.component.html","../../../ngForm/src/app/base.component.ts","../../../ngForm/src/app/default-forms/default-forms.component.ts","../../../ngForm/src/app/default-forms/default-forms.component.html","../../../ngForm/src/app/material-form/material-form.component.ts","../../../ngForm/src/app/material-form/material-form.component.html","../../../ngForm/src/app/prime-form/prime-form.component.ts","../../../ngForm/src/app/prime-form/prime-form.component.html","../../../ngForm/src/bsachref-ng-form.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\nimport { FormControlConfig } from '../formControlConfig';\n\n@Component({\n  selector: 'validation-messages',\n  standalone: true,\n  imports: [],\n  templateUrl: './validation-messages.component.html',\n})\nexport class ValidationMessagesComponent {\n  @Input() control!: AbstractControl | null; // The form control to validate\n  @Input() controlName!: string; // The name of the control (for displaying in messages)\n  @Input() config!: FormControlConfig; // The configuration for the control\n\n  getValidatorValue(validatorName: keyof ValidationErrors, key: string): any {\n    return this.control?.errors?.[validatorName]?.[key];\n  }\n\n  getCustomErrorMessage(): string | null {\n    if (this.control?.errors?.['custom']) {\n      return this.control.errors['custom'].message ?? 'Invalid input';\n    }\n    return null;\n  }\n}\n","@if (control?.invalid && control?.touched) {\n  <section class=\"error-messages\" style=\"color: red\">\n    @if (control?.errors?.[\"required\"]) {\n      <small>{{ controlName }} is required</small>\n    }\n    @if (control?.errors?.[\"minlength\"]) {\n      <small\n        >Minimum length:\n        {{ getValidatorValue(\"minlength\", \"requiredLength\") }}</small\n      >\n    }\n    @if (control?.errors?.[\"maxlength\"]) {\n      <small\n        >Maximum length:\n        {{ getValidatorValue(\"maxlength\", \"requiredLength\") }}</small\n      >\n    }\n    @if (control?.errors?.[\"pattern\"]) {\n      <small>Invalid format</small>\n    }\n    @if (control?.errors?.[\"email\"]) {\n      <small>Invalid email address</small>\n    }\n    @if (control?.errors?.[\"min\"]) {\n      <small\n        >Value must be at least {{ getValidatorValue(\"min\", \"min\") }}</small\n      >\n    }\n    @if (control?.errors?.[\"max\"]) {\n      <small>Value must not exceed {{ getValidatorValue(\"max\", \"max\") }}</small>\n    }\n    @if (control?.errors?.[\"custom\"]) {\n      <small>{{ getCustomErrorMessage() }}</small>\n    }\n  </section>\n}\n","import { CommonModule } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  input,\n  output,\n} from '@angular/core';\nimport {\n  ReactiveFormsModule,\n  FormsModule,\n  FormGroup,\n  FormBuilder,\n  ValidatorFn,\n  Validators,\n  AbstractControl,\n} from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\nimport { ValidationMessagesComponent } from './validation-messages/validation-messages.component';\nimport { FormControlConfig } from '../public-api';\n\n@Component({\n  selector: 'base-forms',\n  standalone: true,\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n    FormsModule,\n    ValidationMessagesComponent,\n  ],\n  template: '',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BaseFormsComponent {\n  formName = input.required<string>();\n  controls = input.required<FormControlConfig[]>();\n  formSubmit = output<Record<string, any>>();\n\n  form!: FormGroup;\n  protected formChanges$ = new BehaviorSubject<boolean>(false);\n\n  constructor(\n    protected fb: FormBuilder,\n    protected cdr: ChangeDetectorRef,\n  ) {}\n\n  ngOnInit(): void {\n    this.initializeForm();\n  }\n\n  protected initializeForm(): void {\n    const formControls: { [key: string]: any } = {};\n\n    this.controls().forEach((control) => {\n      formControls[control.name] = [\n        control.value ?? '',\n        this.getValidators(control),\n      ];\n    });\n\n    this.form = this.fb.group(formControls);\n\n    this.controls().forEach((control) => {\n      const formControl = this.form.get(control.name);\n      if (formControl) {\n        formControl.valueChanges.subscribe((value) => {\n          // Only update validators if the value actually changes\n          if (formControl.value !== value) {\n            this.updateValidators(formControl, value);\n          }\n        });\n      }\n    });\n\n    this.formChanges$.subscribe(() => this.cdr.markForCheck());\n  }\n\n  protected getValidators(control: FormControlConfig): ValidatorFn[] {\n    const validators: ValidatorFn[] = [];\n\n    if (control.validators) {\n      control.validators.forEach((validator) => {\n        if (validator.required) validators.push(Validators.required);\n        if (validator.minlength)\n          validators.push(Validators.minLength(validator.minlength));\n        if (validator.maxlength)\n          validators.push(Validators.maxLength(validator.maxlength));\n        if (validator.pattern)\n          validators.push(Validators.pattern(validator.pattern));\n        if (validator.email) validators.push(Validators.email);\n        if (validator.custom) validators.push(validator.custom);\n      });\n    }\n\n    return validators;\n  }\n\n  protected updateValidators(control: AbstractControl, value: any): void {\n    const requiresValidation = this.shouldRequireValidation(value);\n\n    // Check if the validators need to be updated\n    const hasRequiredValidator = control.hasValidator(Validators.required);\n\n    if (requiresValidation && !hasRequiredValidator) {\n      control.addValidators(Validators.required);\n      control.updateValueAndValidity();\n    } else if (!requiresValidation && hasRequiredValidator) {\n      control.removeValidators(Validators.required);\n      control.updateValueAndValidity();\n    }\n\n    this.formChanges$.next(true);\n  }\n\n  protected shouldRequireValidation(value: any): boolean {\n    return value !== null && value !== '';\n  }\n\n  onSubmit(): void {\n    this.form.markAllAsTouched();\n    this.form.markAsDirty();\n    this.form.updateValueAndValidity();\n\n    if (this.form.valid) {\n      this.formSubmit.emit(this.form.value);\n      this.form.reset();\n    } else {\n      console.error('Form Invalid');\n    }\n\n    this.formChanges$.next(true);\n  }\n}","/**\n * @component DefaultFormsComponent\n * @description\n * The `DefaultFormsComponent` is an Angular standalone component that provides a dynamic form generation\n * based on the provided configuration. It uses reactive forms to handle form controls and their validations.\n * The component is designed to be highly configurable and supports various types of form validators.\n *\n * @selector default-forms\n * @standalone true\n * @imports\n * - ReactiveFormsModule\n * - CommonModule\n * - FormsModule\n * - ValidationMessagesComponent\n * @templateUrl ./default-forms.component.html\n * @styleUrl ./default-forms.component.css\n * @changeDetection ChangeDetectionStrategy.OnPush\n *\n * @input\n * - `formName: string` - The name of the form.\n * - `controls: FormControlConfig[]` - An array of form control configurations.\n *\n * @output\n * - `formSubmit: EventEmitter<Record<string, any>>` - Emits the form value when the form is submitted.\n *\n * @class DefaultFormsComponent\n * @implements OnInit\n *\n * @property {string} formName - The name of the form.\n * @property {FormControlConfig[]} controls - The configuration for the form controls.\n * @property {EventEmitter<Record<string, any>>} formSubmit - Event emitter for form submission.\n * @property {FormGroup} form - The reactive form group instance.\n * @property {BehaviorSubject<boolean>} formChanges$ - A subject to track form changes.\n *\n * @constructor\n * @param {FormBuilder} fb - Angular's FormBuilder service to create form controls.\n * @param {ChangeDetectorRef} cdr - Angular's ChangeDetectorRef service to manually trigger change detection.\n *\n * @method ngOnInit\n * @description Lifecycle hook that is called after the component's view has been initialized. It initializes the form.\n *\n * @method initializeForm\n * @description Initializes the form by creating form controls based on the provided configuration and sets up value change subscriptions.\n *\n * @method getValidators\n * @param {FormControlConfig} control - The configuration for a form control.\n * @returns {ValidatorFn[]} An array of validators for the form control.\n * @description Generates an array of validators based on the provided control configuration.\n *\n * @method updateValidators\n * @param {AbstractControl} control - The form control to update validators for.\n * @param {any} value - The current value of the form control.\n * @description Updates the validators for a form control based on its current value.\n *\n * @method shouldRequireValidation\n * @param {any} value - The value to check for validation requirement.\n * @returns {boolean} Whether the value requires validation.\n * @description Determines if a value should require validation.\n *\n * @method onSubmit\n * @description Handles the form submission. Marks the form as touched and dirty, validates the form, emits the form value if valid, and resets the form.\n */\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { ValidationMessagesComponent } from '../validation-messages/validation-messages.component';\nimport { BaseFormsComponent } from '../base.component';\n\n@Component({\n  selector: 'default-forms',\n  standalone: true,\n  imports: [\n    BaseFormsComponent,\n    ReactiveFormsModule,\n    CommonModule,\n    FormsModule,\n    ValidationMessagesComponent,\n  ],\n  templateUrl: './default-forms.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DefaultFormsComponent extends BaseFormsComponent {}\n","<form [formGroup]=\"form\" [attr.name]=\"formName()\" (ngSubmit)=\"onSubmit()\">\n  @for (control of controls(); track $index) {\n    @if (control.uiFramework === \"default\" || !control.uiFramework) {\n      @if (form.get(control.name)) {\n        <section [ngClass]=\"control.class\" [ngStyle]=\"control.style\">\n          @if (control.label) {\n            <label\n              [attr.for]=\"control.name\"\n              [ngClass]=\"control.labelClass\"\n              [ngStyle]=\"control.labelStyle\"\n            >\n              {{ control.label }}\n            </label>\n          }\n\n          @if (control.type === \"input\") {\n            <input\n              [formControlName]=\"control.name\"\n              [id]=\"control.name\"\n              type=\"text\"\n            />\n          }\n          @if (control.type === \"select\") {\n            <select [formControlName]=\"control.name\" [id]=\"control.name\">\n              @for (option of control.options; track $index) {\n                <option [value]=\"option\">{{ option }}</option>\n              }\n            </select>\n          }\n          @if (control.type === \"textarea\") {\n            <textarea\n              [formControlName]=\"control.name\"\n              [id]=\"control.name\"\n            ></textarea>\n          }\n          @if (control.type === \"checkbox\") {\n            <input\n              type=\"checkbox\"\n              [formControlName]=\"control.name\"\n              [id]=\"control.name\"\n            />\n          }\n          @if (control.type === \"radio\") {\n            @for (option of control.options ?? []; track $index) {\n              <div>\n                <input\n                  type=\"radio\"\n                  [formControlName]=\"control.name\"\n                  [id]=\"control.name + '-' + option\"\n                  [value]=\"option\"\n                />\n                <label [for]=\"control.name + '-' + option\">{{ option }}</label>\n              </div>\n            }\n          }\n\n          <validation-messages\n            [control]=\"form.get(control.name)\"\n            [controlName]=\"control.name\"\n            [config]=\"control\"\n          ></validation-messages>\n        </section>\n      }\n    }\n  }\n  <button type=\"submit\" [disabled]=\"form.invalid\">Submit</button>\n</form>\n","/**\n * @component\n * @name MaterialFormsComponent\n * @description\n * A standalone Angular component that renders a dynamic form using Angular Material components.\n * The form configuration is provided via inputs, and the form submission is handled via an output event.\n * \n * @selector material-forms\n * @standalone true\n * @imports\n * - CommonModule\n * - ReactiveFormsModule\n * - MatInputModule\n * - MatSelectModule\n * - MatCheckboxModule\n * - MatRadioModule\n * - MatButtonModule\n * - ValidationMessagesComponent\n * - MatDatepickerModule\n * - MatFormFieldModule\n * @providers provideNativeDateAdapter\n * @templateUrl ./material-form.component.html\n * @styleUrl ./material-form.component.css\n * @changeDetection ChangeDetectionStrategy.OnPush\n * \n * @inputs\n * @property {string} formName - The name of the form.\n * @property {FormControlConfig[]} controls - The configuration for the form controls.\n * \n * @outputs\n * @property {EventEmitter<Record<string, any>>} formSubmit - Event emitted when the form is submitted.\n * \n * @class\n * @name MaterialFormsComponent\n * @description\n * This class defines the MaterialFormsComponent which initializes the form based on the provided controls configuration,\n * handles form submission, and provides validation for the form controls.\n * \n * @constructor\n * @param {FormBuilder} fb - Angular FormBuilder service to create form groups and controls.\n * @param {ChangeDetectorRef} cdr - Angular ChangeDetectorRef service to manually trigger change detection.\n * \n * @method\n * @name ngOnInit\n * @description\n * Lifecycle hook that is called after the component's view has been initialized. It initializes the form.\n * \n * @method\n * @name initializeForm\n * @description\n * Initializes the form controls based on the provided configuration. Supports datepicker range controls.\n * \n * @method\n * @name getValidators\n * @description\n * Returns an array of Angular validators based on the provided control configuration.\n * @param {FormControlConfig} control - The configuration for the form control.\n * @returns {Validators[]} - An array of Angular validators.\n * \n * @method\n * @name onSubmit\n * @description\n * Handles the form submission. Marks all controls as touched and dirty, updates the form's validity,\n * emits the form values if the form is valid, and resets the form. Triggers change detection.\n */\nimport { CommonModule } from '@angular/common';\nimport {\n  Component,\n  ChangeDetectionStrategy,\n} from '@angular/core';\nimport {\n  ReactiveFormsModule,\n} from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ValidationMessagesComponent } from '../validation-messages/validation-messages.component';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { provideNativeDateAdapter } from '@angular/material/core';\nimport { BaseFormsComponent } from '../base.component';\n\n\n@Component({\n  selector: 'material-forms',\n  standalone: true,\n  imports: [\n    BaseFormsComponent,\n    CommonModule,\n    ReactiveFormsModule,\n    MatInputModule,\n    MatSelectModule,\n    MatCheckboxModule,\n    MatRadioModule,\n    MatButtonModule,\n    ValidationMessagesComponent,\n    MatDatepickerModule,\n    MatFormFieldModule,\n  ],\n  providers: [provideNativeDateAdapter()],\n  templateUrl: './material-form.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MaterialFormsComponent extends BaseFormsComponent {}","<form [formGroup]=\"form\" [attr.name]=\"formName()\" (ngSubmit)=\"onSubmit()\">\n  @for (control of controls(); track $index) {\n  @if (control.uiFramework === \"material\" || !control.uiFramework) {\n  @if (form.get(control.name)) {\n  <section [ngClass]=\"control.class\" [ngStyle]=\"control.style\">\n    @if (control.type === \"input\") {\n    <mat-form-field appearance=\"outline\">\n      @if (control.label) {\n      <mat-label>{{ control.label }}</mat-label>\n      }\n      <input matInput [formControlName]=\"control.name\" [id]=\"control.name\" type=\"text\" />\n    </mat-form-field>\n    }\n    @if (control.type === \"select\") {\n    <mat-form-field appearance=\"outline\">\n      @if (control.label) {\n      <mat-label>{{ control.label }}</mat-label>\n      }\n      <mat-select [formControlName]=\"control.name\" [id]=\"control.name\">\n        @for (option of control.options ?? []; track $index) {\n        <mat-option [value]=\"option\">{{ option }}</mat-option>\n        }\n      </mat-select>\n    </mat-form-field>\n    }\n    @if (control.type === \"checkbox\") {\n    <mat-checkbox [formControlName]=\"control.name\" [id]=\"control.name\">\n      {{ control.label }}\n    </mat-checkbox>\n    }\n    @if (control.type === \"radio\") {\n    <mat-radio-group [formControlName]=\"control.name\">\n      @for (option of control.options ?? []; track $index) {\n      <mat-radio-button [id]=\"control.name + '-' + option\" [value]=\"option\">\n        {{ option }}\n      </mat-radio-button>\n      }\n    </mat-radio-group>\n    }\n    @if (control.type === \"datepicker\") {\n    @if (control.datePickerMode === \"single\") {\n    <mat-form-field appearance=\"outline\">\n      <mat-label>Choose a date</mat-label>\n      <input matInput [matDatepicker]=\"datepicker\" [formControlName]=\"control.name\" />\n      <mat-datepicker-toggle matIconSuffix [for]=\"datepicker\"></mat-datepicker-toggle>\n      <mat-datepicker #datepicker></mat-datepicker>\n    </mat-form-field>\n    } @else if (control.datePickerMode === \"range\") {\n    <mat-form-field>\n      <mat-label>Enter a date range</mat-label>\n      <mat-date-range-input [rangePicker]=\"picker\" [formGroup]=\"form\" ]>\n        <input matStartDate formControlName=\"{{ control.name }}_Start\" placeholder=\"Start date\" />\n        <input matEndDate formControlName=\"{{ control.name }}_End\" placeholder=\"End date\" />\n      </mat-date-range-input>\n      <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n      <mat-date-range-picker #picker></mat-date-range-picker>\n\n      <!-- @if (form.controls.start.hasError('matStartDateInvalid')) {\n                              <mat-error>Invalid start date</mat-error>\n                            }\n                            @if (form.controls.end.hasError('matEndDateInvalid')) {\n                              <mat-error>Invalid end date</mat-error>\n                            } -->\n    </mat-form-field>\n    }\n    }\n\n    <validation-messages [control]=\"form.get(control.name)\" [controlName]=\"control.name\"\n      [config]=\"control\"></validation-messages>\n  </section>\n  }\n  }\n  }\n  <button mat-raised-button color=\"primary\" type=\"submit\" [disabled]=\"form.invalid\">\n    Submit\n  </button>\n</form>","/**\n * PrimeNgFormsComponent is a standalone Angular component that dynamically generates\n * a form based on the provided configuration. It leverages PrimeNG UI components\n * and Angular Reactive Forms for form creation and validation.\n *\n * @selector primeng-forms\n * @standalone true\n * @imports [\n *   CommonModule,\n *   FormsModule,\n *   ReactiveFormsModule,\n *   ValidationMessagesComponent,\n *   InputTextModule,\n *   MultiSelectModule,\n *   TextareaModule,\n *   CheckboxModule,\n *   RadioButtonModule,\n *   DatePickerModule,\n *   ToggleButtonModule,\n *   FileUploadModule,\n *   SliderModule,\n *   ButtonModule,\n *   SelectModule,\n *   FileUploadValueAccessor\n * ]\n * @templateUrl ./prime-form.component.html\n * @styleUrl ./prime-form.component.css\n * @changeDetection ChangeDetectionStrategy.OnPush\n *\n * @property {string} formName - The name of the form.\n * @property {FormControlConfig[]} controls - The configuration for the form controls.\n * @property {EventEmitter<Record<string, any>>} formSubmit - Event emitter for form submission.\n * @property {FormGroup} form - The reactive form group.\n * @property {BehaviorSubject<boolean>} formChanges$ - Observable to track form changes.\n *\n * @constructor\n * @param {FormBuilder} fb - FormBuilder service to create form controls.\n * @param {ChangeDetectorRef} cdr - ChangeDetectorRef to manually trigger change detection.\n *\n * @method ngOnInit - Lifecycle hook that initializes the form.\n * @method initializeForm - Initializes the form controls and sets up value change subscriptions.\n * @method getValidators - Returns an array of validators for a given form control configuration.\n * @param {FormControlConfig} control - The configuration for a form control.\n * @returns {ValidatorFn[]} - An array of validator functions.\n * @method updateValidators - Updates the validators for a form control based on its value.\n * @param {AbstractControl} control - The form control to update.\n * @param {any} value - The current value of the form control.\n * @method shouldRequireValidation - Determines if a form control should require validation.\n * @param {any} value - The current value of the form control.\n * @returns {boolean} - True if validation is required, false otherwise.\n * @method onFileSelect - Handles file selection for file upload controls.\n * @param {any} event - The file selection event.\n * @param {string} controlName - The name of the form control.\n * @method onSubmit - Handles form submission, validates the form, and emits the form value.\n */\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { ValidationMessagesComponent } from '../validation-messages/validation-messages.component';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { TextareaModule } from 'primeng/textarea';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { RadioButtonModule } from 'primeng/radiobutton';\nimport { ToggleButtonModule } from 'primeng/togglebutton';\nimport { FileUploadModule } from 'primeng/fileupload';\nimport { SliderModule } from 'primeng/slider';\nimport { ButtonModule } from 'primeng/button';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { SelectModule } from 'primeng/select';\nimport { BaseFormsComponent } from '../base.component';\n\n@Component({\n  selector: 'primeng-forms',\n  standalone: true,\n  imports: [\n    BaseFormsComponent,\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    ValidationMessagesComponent,\n    InputTextModule,\n    MultiSelectModule,\n    TextareaModule,\n    CheckboxModule,\n    RadioButtonModule,\n    DatePickerModule,\n    ToggleButtonModule,\n    FileUploadModule,\n    SliderModule,\n    ButtonModule,\n    SelectModule,\n  ],\n  templateUrl: './prime-form.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PrimeNgFormsComponent extends BaseFormsComponent {\n  onFileSelect(event: any, controlName: string) {\n    const file = event.files[0];\n    if (file) {\n      this.form.get(controlName)?.setValue(file);\n      this.form.get(controlName)?.updateValueAndValidity();\n\n      const controlConfig = this.controls().find(\n        (control) => control.name === controlName\n      );\n      if (controlConfig?.events?.onUpload) {\n        controlConfig.events.onUpload(event);\n      }\n    }\n  }\n}\n","<form [formGroup]=\"form\" [attr.name]=\"formName()\" (ngSubmit)=\"onSubmit()\">\n  @for (control of controls(); track $index) {\n    @if (control.uiFramework === \"primeng\" || !control.uiFramework) {\n      @if (form.get(control.name)) {\n        <section [ngClass]=\"control.class\" [ngStyle]=\"control.style\">\n          @if (control.label) {\n            <label\n              [attr.for]=\"control.name\"\n              [ngClass]=\"control.labelClass\"\n              [ngStyle]=\"control.labelStyle\"\n            >\n              {{ control.label }}\n            </label>\n          }\n\n          @switch (control.type) {\n            @case (\"text\") {\n              <input\n                pInputText\n                [formControlName]=\"control.name\"\n                [id]=\"control.name\"\n                (change)=\"control.events?.onChange?.($event)\"\n                (focus)=\"control.events?.onFocus?.($event)\"\n                (blur)=\"control.events?.onBlur?.($event)\"\n                (keyup)=\"control.events?.onKeyUp?.($event)\"\n                (keydown)=\"control.events?.onKeyDown?.($event)\"\n                (paste)=\"control.events?.onPaste?.($event)\"\n              />\n            }\n            @case (\"number\") {\n              <input\n                pInputText\n                type=\"number\"\n                [formControlName]=\"control.name\"\n                [id]=\"control.name\"\n                (change)=\"control.events?.onChange?.($event)\"\n                (focus)=\"control.events?.onFocus?.($event)\"\n                (blur)=\"control.events?.onBlur?.($event)\"\n                (keyup)=\"control.events?.onKeyUp?.($event)\"\n                (keydown)=\"control.events?.onKeyDown?.($event)\"\n                (paste)=\"control.events?.onPaste?.($event)\"\n              />\n            }\n            @case (\"password\") {\n              <input\n                pInputText\n                type=\"password\"\n                [formControlName]=\"control.name\"\n                [id]=\"control.name\"\n                (change)=\"control.events?.onChange?.($event)\"\n                (focus)=\"control.events?.onFocus?.($event)\"\n                (blur)=\"control.events?.onBlur?.($event)\"\n                (keyup)=\"control.events?.onKeyUp?.($event)\"\n                (keydown)=\"control.events?.onKeyDown?.($event)\"\n                (paste)=\"control.events?.onPaste?.($event)\"\n              />\n            }\n            @case (\"email\") {\n              <input\n                pInputText\n                type=\"email\"\n                [formControlName]=\"control.name\"\n                [id]=\"control.name\"\n                (change)=\"control.events?.onChange?.($event)\"\n                (focus)=\"control.events?.onFocus?.($event)\"\n                (blur)=\"control.events?.onBlur?.($event)\"\n                (keyup)=\"control.events?.onKeyUp?.($event)\"\n                (keydown)=\"control.events?.onKeyDown?.($event)\"\n                (paste)=\"control.events?.onPaste?.($event)\"\n              />\n            }\n            @case (\"select\") {\n              <p-select\n                [options]=\"control.options\"\n                [formControlName]=\"control.name\"\n                (onChange)=\"control.events?.onChange?.($event)\"\n                (onFocus)=\"control.events?.onFocus?.($event)\"\n                (onBlur)=\"control.events?.onBlur?.($event)\"\n              />\n            }\n            @case (\"multi-select\") {\n              <p-multiSelect\n                [options]=\"control.options\"\n                [formControlName]=\"control.name\"\n                (onChange)=\"control.events?.onChange?.($event)\"\n                (onFocus)=\"control.events?.onFocus?.($event)\"\n                (onBlur)=\"control.events?.onBlur?.($event)\"\n              ></p-multiSelect>\n            }\n            @case (\"textarea\") {\n              <textarea\n                pTextarea\n                [formControlName]=\"control.name\"\n                [id]=\"control.name\"\n                (change)=\"control.events?.onChange?.($event)\"\n                (focus)=\"control.events?.onFocus?.($event)\"\n                (blur)=\"control.events?.onBlur?.($event)\"\n                (keyup)=\"control.events?.onKeyUp?.($event)\"\n                (keydown)=\"control.events?.onKeyDown?.($event)\"\n                (paste)=\"control.events?.onPaste?.($event)\"\n              ></textarea>\n            }\n            @case (\"checkbox\") {\n              <p-checkbox\n                [binary]=\"true\"\n                [formControlName]=\"control.name\"\n                (onChange)=\"control.events?.onChange?.($event)\"\n                (onFocus)=\"control.events?.onFocus?.($event)\"\n                (onBlur)=\"control.events?.onBlur?.($event)\"\n              ></p-checkbox>\n            }\n            @case (\"radio\") {\n              @for (option of control.options ?? []; track $index) {\n                <div>\n                  <p-radioButton\n                    [name]=\"control.name\"\n                    [formControlName]=\"control.name\"\n                    [value]=\"option\"\n                    [inputId]=\"'radio-' + option\"\n                    (onChange)=\"control.events?.onChange?.($event)\"\n                    (onFocus)=\"control.events?.onFocus?.($event)\"\n                    (onBlur)=\"control.events?.onBlur?.($event)\"\n                  ></p-radioButton>\n                  <label [for]=\"'radio-' + option\">{{ option }}</label>\n                </div>\n              }\n            }\n            @case (\"date\") {\n              <p-datepicker\n                [formControlName]=\"control.name\"\n                (onSelect)=\"control.events?.onSelect?.($event)\"\n                (onFocus)=\"control.events?.onFocus?.($event)\"\n                (onBlur)=\"control.events?.onBlur?.($event)\"\n              />\n            }\n            @case (\"toggle\") {\n              <p-toggleButton\n                [formControlName]=\"control.name\"\n                (onChange)=\"control.events?.onChange?.($event)\"\n                (onFocus)=\"control.events?.onFocus?.($event)\"\n                (onBlur)=\"control.events?.onBlur?.($event)\"\n              ></p-toggleButton>\n            }\n            <!-- @case (\"file\") {\n              <p-fileUpload \n              [customUpload]=\"true\"\n              [formControlName]=\"control.name\"\n              (onSelect)=\"control.events?.onSelect?.($event)\"\n              (onClear)=\"control.events?.onClear?.($event)\"\n              (onRemove)=\"control.events?.onRemove?.($event)\"\n              (onError)=\"control.events?.onError?.($event)\"\n              (onBeforeUpload)=\"control.events?.onBeforeUpload?.($event)\"\n              (onProgress)=\"control.events?.onProgress?.($event)\"\n              (onUpload)=\"control.events?.onUpload?.($event)\"\n              >\n\n              <p-fileUpload\n                [customUpload]=\"true\"\n                (onUpload)=\"onFileSelect($event, control.name)\"\n                [formControlName]=\"control.name\"\n                [id]=\"control.name\"\n                [chooseLabel]=\"control.primeng?.chooseLabel\"\n                [uploadLabel]=\"control.primeng?.uploadLabel\"\n                [cancelLabel]=\"control.primeng?.cancelLabel\"\n                [auto]=\"control.primeng?.auto\"\n                [url]=\"control.primeng?.url\"\n                [withCredentials]=\"control.primeng?.withCredentials\"\n                [multiple]=\"control.primeng?.multiple\"\n                [maxFileSize]=\"control.primeng?.maxFileSize\"\n                [customUpload]=\"control.primeng?.customUpload\"\n                [showUploadButton]=\"control.primeng?.showUploadButton\"\n                [showCancelButton]=\"control.primeng?.showCancelButton\"\n                [accept]=\"control.primeng?.accept\"\n                [mode]=\"control.primeng?.mode\"\n                [previewWidth]=\"control.primeng?.previewWidth\"\n                (onSelect)=\"control.events?.onSelect?.($event)\"\n                (onClear)=\"control.events?.onClear?.($event)\"\n                (onRemove)=\"control.events?.onRemove?.($event)\"\n                (onError)=\"control.events?.onError?.($event)\"\n                (onBeforeUpload)=\"control.events?.onBeforeUpload?.($event)\"\n                (onProgress)=\"control.events?.onProgress?.($event)\"\n                (onUpload)=\"control.events?.onUpload?.($event)\"\n              >\n                <ng-template pTemplate=\"content\">\n                  <p-button label=\"Choose File\" icon=\"pi pi-upload\"></p-button>\n                </ng-template>\n              </p-fileUpload>\n            } -->\n            @case (\"slider\") {\n              <p-slider\n                [formControlName]=\"control.name\"\n                (onChange)=\"control.events?.onChange?.($event)\"\n                (onSlideEnd)=\"control.events?.onSlideEnd?.($event)\"\n              ></p-slider>\n            }\n          }\n\n          <validation-messages\n            [control]=\"form.get(control.name)\"\n            [controlName]=\"control.name\"\n            [config]=\"control\"\n          ></validation-messages>\n        </section>\n      }\n    }\n  }\n  <button\n    pButton\n    type=\"submit\"\n    [disabled]=\"form.invalid\"\n    label=\"Submit\"\n  ></button>\n</form>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i4","i5","i6","i7","i8","i9","i10"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAUa,2BAA2B,CAAA;IAC7B,OAAO,CAA0B;IACjC,WAAW,CAAU;IACrB,MAAM,CAAqB;IAEpC,iBAAiB,CAAC,aAAqC,EAAE,GAAW,EAAA;AAClE,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAAC,GAAG,GAAG,CAAC;;IAGrD,qBAAqB,GAAA;QACnB,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAC,EAAE;AACpC,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,IAAI,eAAe;;AAEjE,QAAA,OAAO,IAAI;;wGAbF,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,6JCVxC,8nCAoCA,EAAA,CAAA;;4FD1Ba,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;+BACE,qBAAqB,EAAA,UAAA,EACnB,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,QAAA,EAAA,8nCAAA,EAAA;8BAIF,OAAO,EAAA,CAAA;sBAAf;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,MAAM,EAAA,CAAA;sBAAd;;;MEoBU,kBAAkB,CAAA;AASjB,IAAA,EAAA;AACA,IAAA,GAAA;AATZ,IAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAU;AACnC,IAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAuB;IAChD,UAAU,GAAG,MAAM,EAAuB;AAE1C,IAAA,IAAI;AACM,IAAA,YAAY,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;IAE5D,WACY,CAAA,EAAe,EACf,GAAsB,EAAA;QADtB,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAG,CAAA,GAAA,GAAH,GAAG;;IAGf,QAAQ,GAAA;QACN,IAAI,CAAC,cAAc,EAAE;;IAGb,cAAc,GAAA;QACtB,MAAM,YAAY,GAA2B,EAAE;QAE/C,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;AAClC,YAAA,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG;gBAC3B,OAAO,CAAC,KAAK,IAAI,EAAE;AACnB,gBAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;aAC5B;AACH,SAAC,CAAC;QAEF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC;QAEvC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;AAClC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;YAC/C,IAAI,WAAW,EAAE;gBACf,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;;AAE3C,oBAAA,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,EAAE;AAC/B,wBAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC;;AAE7C,iBAAC,CAAC;;AAEN,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;;AAGlD,IAAA,aAAa,CAAC,OAA0B,EAAA;QAChD,MAAM,UAAU,GAAkB,EAAE;AAEpC,QAAA,IAAI,OAAO,CAAC,UAAU,EAAE;YACtB,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;gBACvC,IAAI,SAAS,CAAC,QAAQ;AAAE,oBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAC5D,IAAI,SAAS,CAAC,SAAS;AACrB,oBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gBAC5D,IAAI,SAAS,CAAC,SAAS;AACrB,oBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gBAC5D,IAAI,SAAS,CAAC,OAAO;AACnB,oBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACxD,IAAI,SAAS,CAAC,KAAK;AAAE,oBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;gBACtD,IAAI,SAAS,CAAC,MAAM;AAAE,oBAAA,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AACzD,aAAC,CAAC;;AAGJ,QAAA,OAAO,UAAU;;IAGT,gBAAgB,CAAC,OAAwB,EAAE,KAAU,EAAA;QAC7D,MAAM,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;;QAG9D,MAAM,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC;AAEtE,QAAA,IAAI,kBAAkB,IAAI,CAAC,oBAAoB,EAAE;AAC/C,YAAA,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC1C,OAAO,CAAC,sBAAsB,EAAE;;AAC3B,aAAA,IAAI,CAAC,kBAAkB,IAAI,oBAAoB,EAAE;AACtD,YAAA,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC7C,OAAO,CAAC,sBAAsB,EAAE;;AAGlC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGpB,IAAA,uBAAuB,CAAC,KAAU,EAAA;AAC1C,QAAA,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;;IAGvC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;AAElC,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACnB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AACrC,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;;aACZ;AACL,YAAA,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;;AAG/B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;wGAjGnB,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,yXAHnB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EALV,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,8BACnB,WAAW,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMF,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAZ9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,WAAW;wBACX,2BAA2B;AAC5B,qBAAA;AACD,oBAAA,QAAQ,EAAE,EAAE;oBACZ,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;AChCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6DG;AAoBG,MAAO,qBAAsB,SAAQ,kBAAkB,CAAA;wGAAhD,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjFlC,yyEAmEA,EDMI,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,2uDACnB,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,2BAA2B,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAKlB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAbjC,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EACP,OAAA,EAAA;wBACP,kBAAkB;wBAClB,mBAAmB;wBACnB,YAAY;wBACZ,WAAW;wBACX,2BAA2B;qBAC5B,EAEgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,yyEAAA,EAAA;;;AE/EjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgEG;AAyCG,MAAO,sBAAuB,SAAQ,kBAAkB,CAAA;wGAAjD,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,SAAA,EAJtB,CAAC,wBAAwB,EAAE,CAAC,ECrGzC,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,6tGA4EO,EDcH,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,uvBACd,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,2BAA2B,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC3B,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,KAAA,EAAA,KAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,KAAA,EAAA,KAAA,EAAA,UAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,YAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,UAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,kBAAkB,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMT,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBApBlC,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EACP,OAAA,EAAA;wBACP,kBAAkB;wBAClB,YAAY;wBACZ,mBAAmB;wBACnB,cAAc;wBACd,eAAe;wBACf,iBAAiB;wBACjB,cAAc;wBACd,eAAe;wBACf,2BAA2B;wBAC3B,mBAAmB;wBACnB,kBAAkB;AACnB,qBAAA,EAAA,SAAA,EACU,CAAC,wBAAwB,EAAE,CAAC,EAEtB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6tGAAA,EAAA;;;AEvGjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDG;AA0CG,MAAO,qBAAsB,SAAQ,kBAAkB,CAAA;IAC3D,YAAY,CAAC,KAAU,EAAE,WAAmB,EAAA;QAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3B,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC;YAC1C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,sBAAsB,EAAE;YAEpD,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CACxC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,KAAK,WAAW,CAC1C;AACD,YAAA,IAAI,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE;AACnC,gBAAA,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;;;;wGAX/B,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EChGlC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,6tSAqNA,EDxII,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,EACX,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,2BAA2B,EAC3B,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,4IACf,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,MAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,SAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,MAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,gBAAgB,EAChB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,eAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,WAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,kBAAkB,EAClB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,iDAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,gBAAgB,EAChB,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,KAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,EAAA,KAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,qQACZ,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAKH,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAxBjC,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EACP,OAAA,EAAA;wBACP,kBAAkB;wBAClB,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,2BAA2B;wBAC3B,eAAe;wBACf,iBAAiB;wBACjB,cAAc;wBACd,cAAc;wBACd,iBAAiB;wBACjB,gBAAgB;wBAChB,kBAAkB;wBAClB,gBAAgB;wBAChB,YAAY;wBACZ,YAAY;wBACZ,YAAY;qBACb,EAEgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6tSAAA,EAAA;;;AE9FjD;;AAEG;;;;"}