@bnsights/bbsf-controls 1.0.104 → 1.0.106
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -0
- package/bnsights-bbsf-controls-1.0.106.tgz +0 -0
- package/bundles/bnsights-bbsf-controls.umd.js.map +1 -1
- package/esm2015/lib/Shared/services/ControlUtility.js +1 -1
- package/fesm2015/bnsights-bbsf-controls.js.map +1 -1
- package/package.json +2 -2
- package/bnsights-bbsf-controls-1.0.104.tgz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bnsights-bbsf-controls.js","sources":["../../../projects/bbsf-controls/src/lib/Shared/services/validationErrorMassage.service.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/InputType.ts","../../../projects/bbsf-controls/src/lib/Shared/services/ControlUtility.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/PickerType.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/StartView.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/SelectMode.ts","../../../projects/bbsf-controls/src/lib/Shared/services/OnPagingFiltersChange.service.ts","../../../projects/bbsf-controls/src/lib/Shared/default_intl.ts","../../../projects/bbsf-controls/src/lib/controls/DateTimePicker/DateTimePicker.component.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/FileUploadModel.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/MultipleFileUploadModel.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/ControlLayout.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/LanguageMode.ts","../../../projects/bbsf-controls/src/lib/Shared/services/GlobalSettings.service.ts","../../../projects/bbsf-controls/src/lib/controls/FileUplaod/FileUplaod.component.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/EnglishArabicDTO.ts","../../../projects/bbsf-controls/src/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.ts","../../../projects/bbsf-controls/src/lib/controls/TextArea/TextArea.component.ts","../../../projects/bbsf-controls/src/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.ts","../../../projects/bbsf-controls/src/lib/controls/CheckBox/CheckBox.component.ts","../../../projects/bbsf-controls/src/lib/controls/DropdownList/DropdownList.component.ts","../../../projects/bbsf-controls/src/lib/controls/Phone/Phone.component.ts","../../../projects/bbsf-controls/src/lib/controls/HtmlEditor/HtmlEditor.component.ts","../../../projects/bbsf-controls/src/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.ts","../../../projects/bbsf-controls/src/lib/controls/ImageUpload/ImageUpload.component.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/ProfilePictureDTO.ts","../../../projects/bbsf-controls/src/lib/controls/ProfileImageUploader/ProfileImageUploader.component.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/AutocompleteDTO.ts","../../../projects/bbsf-controls/src/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.ts","../../../projects/bbsf-controls/src/lib/controls/TagsInput/TagsInput.component.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/PagingDTO.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/FilterType.ts","../../../projects/bbsf-controls/src/lib/controls/Paging/Paging.component.ts","../../../projects/bbsf-controls/src/lib/controls/Paging/JwPagination.component.ts","../../../projects/bbsf-controls/src/lib/controls/RadioButton/RadioButton.component.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/LanguageValidation.ts","../../../projects/bbsf-controls/src/lib/controls/TextBox/TextBox.component.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/MapAutocompleteDTO.ts","../../../projects/bbsf-controls/src/lib/controls/MapAutoComplete/MapAutoComplete.component.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/CalendarView.ts","../../../projects/bbsf-controls/src/lib/controls/Calendar/Calendar.component.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/PagingActionMode.ts","../../../projects/bbsf-controls/src/lib/controls/Form/Form.component.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/StyleConfirmationMode.ts","../../../projects/bbsf-controls/src/lib/controls/ConfirmationModal/ConfirmationModal.component.ts","../../../projects/bbsf-controls/src/lib/Shared/Directives/template-name.directive.ts","../../../projects/bbsf-controls/src/lib/controls/Repeater/repeater/repeater.component.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/Enums.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/ControlOptionsBase.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/datePickerOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/ForceDirection.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/DropdownOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/FileUploadOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/HtmlEditorOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/ImageType.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/ImageUploadOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/MapAutoCompleteOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/PhoneOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/RangeNumber.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/TextAreaOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/IconPosition.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/TextBoxOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/ToggleslideOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/services/render-component-service.service.ts","../../../projects/bbsf-controls/src/lib/controls/Toggleslide/toggleslide.component.ts","../../../projects/bbsf-controls/src/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.ts","../../../projects/bbsf-controls/src/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.ts","../../../projects/bbsf-controls/src/lib/controls/Repeater/repeater-table/repeater-table.component.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/Recaptcha.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/CaptchaStyle.ts","../../../projects/bbsf-controls/src/lib/controls/Recaptcha/Recaptcha.component.ts","../../../projects/bbsf-controls/src/lib/controls/page-header-component/page-header-component.component.ts","../../../projects/bbsf-controls/src/lib/shared/Pipes/bbsf-date-time.pipe.ts","../../../projects/bbsf-controls/src/lib/shared/Pipes/bbsf-date.pipe.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/TagInputView.ts","../../../projects/bbsf-controls/src/lib/Shared/Components/ng-tag-input.ts","../../../projects/bbsf-controls/src/lib/controls/bbsf-controls.module.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/CustomValidation.ts","../../../projects/bbsf-controls/src/lib/Shared/Components/app-base-component.ts","../../../projects/bbsf-controls/src/lib/Shared/config/environment.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/RecaptchaOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/MultilingualControlOptionsBase.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/MultilingualTextBoxOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/Attribute.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/MultiLingualTextAreaOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/CheckBoxOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/DropdownListItem.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/MultiLingualHtmlEditorOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/ProfileImageUploadOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/SaveDTO.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/CancelDTO.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/EditPersonalImage.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/UploadPersonalImage.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/CalendarOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/CalendarEventDTO.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/AutocompleteOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/TagsInputDTO.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/TagsInputOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/FilterItem.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/PagingOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/RadioButtonOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/RadioButtonItem.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/FormOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/ConfirmationModalOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/RepeaterField.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/RepeaterOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/filter-options.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/page-header-options.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/control-filter-Item.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/bread-crumb.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/menu-list-enum.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/Countries.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/FontSize.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/Insert.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/Misc.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/Para.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/Style.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/FileType.ts","../../../projects/bbsf-controls/src/public-api.ts","../../../projects/bbsf-controls/src/bnsights-bbsf-controls.ts"],"sourcesContent":["import { Injectable, Optional } from '@angular/core';\r\nimport { Http, Response, Headers, RequestOptions } from '@angular/http';\r\nimport { map } from 'rxjs/operators';\r\nimport { ControlContainer, FormControl, FormGroup } from '@angular/forms';\r\nimport { UtilityService } from '@bnsights/bbsf-utilities';\r\n\r\n@Injectable()\r\nexport class ErrorMassageValidation {\r\n static controlContainerstatic = null;\r\n\r\n // tslint:disable-next-line: deprecation\r\n constructor(\r\n private http: Http,\r\n @Optional() private controlContainer: ControlContainer,\r\n private utilityService: UtilityService\r\n ) {\r\n ErrorMassageValidation.controlContainerstatic = this.controlContainer;\r\n }\r\n url = 'CheckEmailValidation';\r\n // tslint:disable-next-line: deprecation\r\n\r\n static showerror(FormControlName: string) {\r\n let form = ErrorMassageValidation.controlContainerstatic\r\n .control as FormGroup;\r\n let control = form.get(FormControlName) as FormControl;\r\n //console.log(control)\r\n control.setErrors({ minlength: true });\r\n control.markAsTouched();\r\n }\r\n\r\n // isEmailRegisterd(Email: string)\r\n // {\r\n // let resource:object={\r\n // email:Email\r\n // };\r\n // let body = JSON.stringify(resource);\r\n // let headers = new Headers({ 'Content-Type': 'application/json' });\r\n // let options = new RequestOptions({ headers: headers });\r\n // return this.http.post(environment.baseUrl+this.url,body,options)\r\n // .pipe(map(response => response.json()))\r\n // }\r\n\r\n getErrorMassageValidation(error: any): string {\r\n let result: string = '';\r\n switch (error.key) {\r\n case 'required':\r\n result = this.utilityService.getResourceValue('RequiredValidationKey');\r\n break;\r\n case 'email':\r\n result = this.utilityService.getResourceValue('EmailValidationKey');\r\n break;\r\n case 'EmailValidationKey':\r\n result = this.utilityService.getResourceValue('EmailValidationKey');\r\n break;\r\n case 'URLValidationKey':\r\n result = this.utilityService.getResourceValue('urlValidationError');\r\n break;\r\n case 'pattern':\r\n result = this.utilityService.getResourceValue('NumberValidationKey');\r\n break;\r\n case 'maxlength':\r\n result =\r\n this.utilityService.getResourceValue('MaxLenghtValidationKey') +\r\n ' ' +\r\n error.value.requiredLength;\r\n break;\r\n case 'minlength':\r\n result =\r\n this.utilityService.getResourceValue('MinLenghtValidationKey') +\r\n ' ' +\r\n error.value.requiredLength;\r\n break;\r\n case 'min':\r\n result =\r\n this.utilityService.getResourceValue('MinValueValidationKey') +\r\n ' ' +\r\n error.value.min;\r\n break;\r\n case 'max':\r\n result =\r\n this.utilityService.getResourceValue('MaxValueValidationKey') +\r\n ' ' +\r\n error.value.max;\r\n break;\r\n case 'IntegerNumberValidationKey':\r\n result = this.utilityService.getResourceValue(\r\n 'IntegerNumberValidationKey'\r\n );\r\n break;\r\n case 'PositiveNumberValidationKey':\r\n result = this.utilityService.getResourceValue(\r\n 'PositiveNumberValidationKey'\r\n );\r\n break;\r\n case 'validatePhoneNumber':\r\n result = this.utilityService.getResourceValue(\r\n 'PhoneNumberValidationKey'\r\n );\r\n break;\r\n case 'mask':\r\n result =\r\n this.utilityService.getResourceValue('MaskValidationKey') +\r\n ' ' +\r\n error.value.requiredMask;\r\n break;\r\n case 'PasswordComplexityHasNumber':\r\n result = this.utilityService.getResourceValue(\r\n 'PasswordComplexityHasNumber'\r\n );\r\n break;\r\n case 'ArabicLetterOnly':\r\n result = this.utilityService.getResourceValue('ArabicLetterOnly');\r\n break;\r\n case 'EnglishLetterOnly':\r\n result = this.utilityService.getResourceValue('EnglishLetterOnly');\r\n break;\r\n case 'ArabicIsRequiredAndOnly50CharactersEnglish':\r\n result = this.utilityService.getResourceValue(\r\n 'ArabicIsRequiredAndOnly50CharactersEnglish'\r\n );\r\n break;\r\n case 'PasswordComplexityHasCapitalLetter':\r\n result = this.utilityService.getResourceValue(\r\n 'PasswordComplexityHasCapitalLetter'\r\n );\r\n break;\r\n case 'PasswordComplexityHasSmallLetter':\r\n result = this.utilityService.getResourceValue(\r\n 'PasswordComplexityHasSmallLetter'\r\n );\r\n break;\r\n case 'PasswordComplexityHasSpecialLetter':\r\n result = this.utilityService.getResourceValue(\r\n 'PasswordComplexityHasSpecialLetter'\r\n );\r\n break;\r\n case 'MaxWordCountValidationKey':\r\n result =\r\n this.utilityService.getResourceValue('MaxWordCountValidationKey') +\r\n ' ' +\r\n error.value;\r\n break;\r\n case 'NewSelectionValidationKey':\r\n result = this.utilityService.getResourceValue(\r\n 'NewSelectionValidationKey'\r\n );\r\n break;\r\n case 'MaxFileCountValidationKey':\r\n result =\r\n this.utilityService.getResourceValue('MaxFileCountValidationKey') +\r\n ' ' +\r\n error.value;\r\n break;\r\n case 'MinFileCountValidationKey':\r\n result =\r\n this.utilityService.getResourceValue('MinFileCountValidationKey') +\r\n ' ' +\r\n error.value;\r\n break;\r\n case 'MaxSizeForAllFilesInMB':\r\n result =\r\n this.utilityService.getResourceValue('MaxSizeForAllFilesInMB') +\r\n ' ' +\r\n error.value;\r\n break;\r\n case 'FileMaxSizeInMB':\r\n result =\r\n this.utilityService.getResourceValue('FileMaxSizeInMB') +\r\n ' ' +\r\n error.value;\r\n break;\r\n case 'ToolTipTypeError':\r\n result =\r\n this.utilityService.getResourceValue('ToolTipTypeError') +\r\n ' ' +\r\n error.value;\r\n break;\r\n case 'InvalidEndDate':\r\n result = this.utilityService.getResourceValue('InvalidEndDate');\r\n break;\r\n case 'InvalidStartDate':\r\n result = this.utilityService.getResourceValue('InvalidStartDate');\r\n break;\r\n default:\r\n break;\r\n }\r\n return result;\r\n }\r\n}\r\n","export enum InputType {\r\n Text = 1,\r\n Password = 2,\r\n Email = 3,\r\n Number = 4,\r\n EID = 5,\r\n URL = 6\r\n}\r\n","import { Injectable, Optional, Host, SkipSelf, Component } from '@angular/core';\r\nimport { CustomValidation } from '../Models/CustomValidation';\r\nimport { ErrorMassageValidation } from './validationErrorMassage.service';\r\nimport { ValidationErrors, ValidatorFn, AbstractControl, FormControl, Validators } from '@angular/forms';\r\nimport { InputType } from '../Enums/InputType';\r\nimport { ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { Observable } from 'rxjs';\r\n\r\n\r\n@Injectable()\r\nexport class ControlUtility {\r\n constructor(private ErrorHandler: ErrorMassageValidation, private controlValidationService: ControlValidationService, private utilityService: UtilityService) {\r\n\r\n }\r\n\r\n getErrorValidation(Errorsitem: any[], CustomValidation?: CustomValidation): string {\r\n let resulte = '';\r\n Errorsitem.forEach(element => {\r\n\r\n if (element.key === 'customerError' && Errorsitem.length === 1) {\r\n resulte = CustomValidation[0].massage;\r\n } else if (element.key === 'EmailValidation') {\r\n resulte = element.value;\r\n } else if (element.key === 'FluentApi') {\r\n resulte = element.value;\r\n }\r\n else if (element.key === 'errorMassage') {\r\n resulte = element.value;\r\n }\r\n else {\r\n resulte = this.ErrorHandler.getErrorMassageValidation(element);\r\n }\r\n });\r\n\r\n return resulte;\r\n }\r\n\r\n patternValidator(regex: RegExp, error: ValidationErrors): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n if (!control.value) {\r\n return null;\r\n }\r\n\r\n const valid = regex.test(control.value);\r\n return valid ? null : error;\r\n };\r\n }\r\n patchControlValue(originalValue, PatchFunction, PatchPath) {\r\n var patchOp = [{\r\n op: \"replace\",\r\n path: PatchPath,\r\n value: originalValue\r\n }]\r\n var patchService = PatchFunction.call(null, patchOp) as Observable<any>;\r\n patchService.subscribe(r => console.log(r), erorr => this.utilityService.notifyErrorMessage(erorr));\r\n\r\n }\r\n arabicValidator(error: ValidationErrors): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n if (!control.value)\r\n return null;\r\n if (control.value.match('[\\u0600-\\u06FF]')) {\r\n if (control.value.match('[A-Za-z]') != null) {\r\n //FOUND ENGLISH CHARS\r\n var length = control.value.replace(/\\W/g, '').replace(/[0-9]/g, '').length;\r\n if (length > 50) {\r\n return error;\r\n } else {\r\n return null;\r\n }\r\n }\r\n else {\r\n //NO ENGLISH CHARACTERS AT ALL\r\n return null;\r\n }\r\n }\r\n else {\r\n return error;\r\n }\r\n };\r\n }\r\n\r\n getInputType(type: number): string {\r\n return InputType[type] as string\r\n }\r\n\r\n\r\n trimControlValue(value: any) {\r\n const whitespace: string = ' ';\r\n if (value.startsWith(whitespace) || value.endsWith(whitespace)) {\r\n return value.trim();\r\n }\r\n else\r\n return value\r\n }\r\n\r\n CopyInputMessage(inputElement) {\r\n inputElement.select();\r\n document.execCommand('copy');\r\n inputElement.setSelectionRange(0, 0);\r\n }\r\n\r\n\r\n getErrorValidationMassage(ErrorList, group, options) {\r\n // if((!group.valid)&&(!UtilityService.isCreatedBefor))\r\n // {\r\n // UtilityService.showGlobalError();\r\n // this.scrollToGlobalErrorMassage()\r\n // }\r\n return this.getErrorValidation(ErrorList, options.CustomValidation);\r\n }\r\n\r\n scrollToGlobalErrorMassage() {\r\n let element = document.getElementById('errorId');\r\n element.scrollIntoView({ behavior: \"smooth\", inline: \"nearest\" });\r\n }\r\n setAttributeForControl(options) {\r\n if (options.AttributeList != null) {\r\n var element = document.getElementById(options.Name);\r\n for (let index = 0; index < options.AttributeList.length; index++) {\r\n element.setAttribute(options.AttributeList[index].Key, options.AttributeList[index].value);\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n showGlobalError(formId?: string) {\r\n this.controlValidationService.showGlobalError(null, formId);\r\n this.scrollToGlobalErrorMassage()\r\n }\r\n\r\n RemoveRequiredValidation(FormControl: AbstractControl, ValidationRole: any[], Options: any) {\r\n Options.IsRequired = false\r\n ValidationRole = ValidationRole.filter((e) => e != Validators.required)\r\n FormControl.setValidators(ValidationRole);\r\n FormControl.updateValueAndValidity()\r\n }\r\n\r\n AddRequiredValidation(FormControl: AbstractControl, ValidationRole: any[], Options: any) {\r\n Options.IsRequired = true\r\n ValidationRole.push(Validators.required)\r\n FormControl.setValidators(ValidationRole);\r\n FormControl.updateValueAndValidity()\r\n }\r\n\r\n addRequiredToControl(FormControl: AbstractControl, Options: any) {\r\n Options.IsRequired = true\r\n FormControl.addValidators(Validators.required);\r\n FormControl.updateValueAndValidity()\r\n }\r\n removeRequiredFromControl(FormControl: AbstractControl, Options: any) {\r\n Options.IsRequired = false\r\n FormControl.removeValidators(Validators.required);\r\n FormControl.updateValueAndValidity()\r\n }\r\n\r\n\r\n RemoveCustomValidation(FormControl: AbstractControl, ValidationRole: any[], CustomValidation: CustomValidation) {\r\n ValidationRole = ValidationRole.filter((e) => e != CustomValidation.functionBody)\r\n FormControl.setValidators(ValidationRole);\r\n FormControl.updateValueAndValidity()\r\n }\r\n\r\n AddCustomValidation(FormControl: AbstractControl, ValidationRole: any[], CustomValidation: CustomValidation) {\r\n ValidationRole.push(CustomValidation.functionBody)\r\n FormControl.setValidators(ValidationRole);\r\n FormControl.updateValueAndValidity()\r\n }\r\n static getLocal(): string {\r\n let lang = localStorage.getItem('language');\r\n return lang == \"ar\" ? \"ar\" : \"en-UK\";\r\n }\r\n\r\n IsValid(FormControl: AbstractControl) {\r\n\r\n FormControl.markAsTouched();\r\n }\r\n\r\n\r\n}\r\n","export enum PickerType{\r\n Both = 1 ,\r\n Calendar = 2,\r\n Timer = 3,\r\n }","export enum StartView{\r\n Month = 1 ,\r\n Year = 2,\r\n MultiYear=3\r\n }","export enum SelectMode\r\n{\r\n Single = 1 ,\r\n Range = 2\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class OnPagingFiltersChangeService {\r\n private subject = new Subject<any>();\r\n\r\n ChangeValue(value: string) {\r\n this.subject.next(value);\r\n }\r\n\r\n ClearValue() {\r\n this.subject.next();\r\n }\r\n\r\n GetValue(): Observable<any> {\r\n return this.subject.asObservable();\r\n }\r\n}","import { Injectable, NgModule } from '@angular/core';\r\nimport { UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { OwlDateTimeIntl } from 'ng-pick-datetime';\r\n\r\n@Injectable()\r\n// here is the default text string - just adjust the strings to reflect your preferred language\r\nexport class DefaultIntl extends OwlDateTimeIntl {\r\n constructor(private utilityService: UtilityService) {\r\n super();\r\n }\r\n\r\n /** A label for the range 'from' in picker info */\r\n rangeFromLabel = this.utilityService.getResourceValue('From');\r\n /** A label for the range 'to' in picker info */\r\n rangeToLabel = this.utilityService.getResourceValue('To');\r\n /** A label for the cancel button */\r\n cancelBtnLabel = this.utilityService.getResourceValue('Cancel');\r\n /** A label for the set button */\r\n setBtnLabel = this.utilityService.getResourceValue('Save');\r\n /** A label for the hour12 button (AM) */\r\n hour12AMLabel = this.utilityService.getResourceValue('AM');\r\n /** A label for the hour12 button (PM) */\r\n hour12PMLabel = this.utilityService.getResourceValue('PM');\r\n}\r\n","import { Component, OnInit, Input, DoCheck, Optional, Output, EventEmitter } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, AbstractControl, FormGroupDirective, ControlContainer } from '@angular/forms';\r\nimport { DatePickerOptions } from '../../Shared/Models/datePickerOptions';\r\nimport { ErrorMassageValidation } from '../../Shared/services/validationErrorMassage.service';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { PickerType } from '../../Shared/Enums/PickerType';\r\nimport { StartView } from '../../Shared/Enums/StartView';\r\nimport { SelectMode } from '../../Shared/Enums/SelectMode';\r\nimport { OnPagingFiltersChangeService } from '../../Shared/services/OnPagingFiltersChange.service';\r\nimport { formatDate } from '@fullcalendar/core';\r\nimport { BBSFTranslateService, ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { DatePipe } from '@angular/common';\r\nimport { DateTimeAdapter } from 'ng-pick-datetime';\r\nimport { OwlDateTimeIntl } from 'ng-pick-datetime';\r\nimport * as dateTimeClass from 'ng-pick-datetime/date-time/date-time.class';\r\nimport { DefaultIntl } from '../../Shared/default_intl';\r\n\r\n@Component({\r\n selector: 'BBSF-DateTimePicker',\r\n templateUrl: './DateTimePicker.component.html',\r\n providers: [\r\n { provide: OwlDateTimeIntl, useClass: DefaultIntl }\r\n ],\r\n})\r\nexport class DateInputComponent implements OnInit {\r\n static controlContainerstatic = null;\r\n // tslint:disable-next-line: max-line-length\r\n constructor(public datepipe: DatePipe, private onChangeService: OnPagingFiltersChangeService, private ErrorHandler: ErrorMassageValidation, private controlUtility: ControlUtility, @Optional() private controlContainer: ControlContainer, public DateInputControlHost: FormGroupDirective, private UtilityService: UtilityService, private translate: BBSFTranslateService, private controlValidationService: ControlValidationService, private dateTimeAdapter: DateTimeAdapter<any>) {\r\n DateInputComponent.controlContainerstatic = this.controlContainer;\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: DatePickerOptions;\r\n DatePickerFormControl: AbstractControl;\r\n @Output() OnChange = new EventEmitter();\r\n markAllAsTouched: boolean = false;\r\n validationRules = [];\r\n validationRulesasync = [];\r\n comparedControl: AbstractControl = null;\r\n dateError: boolean = false;\r\n textDir;\r\n startView;\r\n\r\n ngOnInit() {\r\n if (this.options.ForceDirection)\r\n this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';\r\n else\r\n this.textDir = localStorage.getItem('language') == 'ar' ? 'rtl' : 'ltr';\r\n if (this.options.StartView == 3)\r\n this.startView = 'multi-year';\r\n else {\r\n this.startView = (StartView[this.options.StartView] as string).toLowerCase()\r\n }\r\n // Update the DateTimeAdapter Language with the current thread langauge\r\n this.dateTimeAdapter.setLocale(this.UtilityService.getCurrentLanguage() == \"ar\" ? \"ar\" : \"en-UK\");\r\n this.controlValidationService.isCreatedBefor = false\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.DatePickerFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n\r\n this.DatePickerFormControl.setValue(this.options.Value);\r\n\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.validationRules.push(Validation.functionBody);\r\n }\r\n }\r\n\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n }\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\")\r\n this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);\r\n\r\n\r\n if (this.options.IsDisabled) {\r\n this.DatePickerFormControl.disable();\r\n }\r\n if (this.options.StartControlToCompareWith) {\r\n if (this.group.get(this.options.StartControlToCompareWith)) {\r\n this.comparedControl = this.group.get(this.options.StartControlToCompareWith)\r\n this.subscribeDateChanges()\r\n }\r\n }\r\n\r\n this.DatePickerFormControl.setValidators(this.validationRules);\r\n this.DatePickerFormControl.setAsyncValidators(this.validationRulesasync);\r\n this.DateInputControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n })\r\n\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n this.controlUtility.setAttributeForControl(this.options)\r\n }\r\n\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n\r\n\r\n\r\n\r\n copyInputMessage(inputElement) {\r\n this.controlUtility.CopyInputMessage(inputElement)\r\n }\r\n\r\n getSelectMode(type: number) {\r\n let Value = (SelectMode[type] as string)\r\n return Value.toLowerCase() as dateTimeClass.SelectMode\r\n }\r\n getPickerType(type: number) {\r\n let Value = (PickerType[type] as string)\r\n return Value.toLowerCase() as dateTimeClass.PickerType\r\n }\r\n getStartView(type: number) {\r\n if (type == 3)\r\n return 'multi-year';\r\n else {\r\n const Value = (StartView[type] as string).toLowerCase()\r\n return Value\r\n }\r\n }\r\n\r\n\r\n onDateSelect(item) {\r\n if (!item)\r\n return;\r\n let DateValue;\r\n var tzoffset = (new Date()).getTimezoneOffset() * 60000; //offset in milliseconds\r\n\r\n if (this.options.SelectMode == 2) {\r\n for (let index = 0; index < item.value.length; index++) {\r\n item.value[index] = new Date(item.value[index] - tzoffset).toISOString().slice(0, -1);\r\n\r\n }\r\n DateValue = item.value;\r\n }\r\n else {\r\n DateValue = new Date(item.value - tzoffset).toISOString().slice(0, -1);\r\n\r\n }\r\n this.DatePickerFormControl.setValue(DateValue)\r\n this.onChangeService.ChangeValue(this.options.Name);\r\n let originalValue = DateValue;\r\n if (this.options.PatchFunction && this.options.PatchPath && this.group.get(this.options.Name).valid) {\r\n this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath)\r\n }\r\n //Use this line to enable two way binding.\r\n this.options.Value = originalValue;\r\n this.OnChange.emit(originalValue);\r\n }\r\n\r\n subscribeDateChanges() {\r\n const startDateChanges = this.comparedControl.valueChanges;\r\n const endDateChanges = this.group.get(this.options.Name).valueChanges;\r\n startDateChanges.subscribe(start => {\r\n this.comparedControl.addValidators(this.checkIfStartDateBeForEndDate);\r\n this.comparedControl.updateValueAndValidity();\r\n });\r\n endDateChanges.subscribe(end => {\r\n this.DatePickerFormControl.addValidators(this.checkIfEndDateAfterStartDate);\r\n this.DatePickerFormControl.updateValueAndValidity();\r\n });\r\n }\r\n\r\n checkIfEndDateAfterStartDate = () => {\r\n if (!this.comparedControl.value || !this.group.get(this.options.Name).value) {\r\n return null;\r\n }\r\n if (new Date(this.comparedControl.value) < new Date(this.group.get(this.options.Name).value)) {\r\n this.comparedControl.setErrors(null);\r\n return null;\r\n }\r\n else {\r\n this.comparedControl.setErrors(null);\r\n return { InvalidEndDate: true };\r\n }\r\n };\r\n checkIfStartDateBeForEndDate = () => {\r\n if (!this.comparedControl.value || !this.group.get(this.options.Name).value) {\r\n return null;\r\n }\r\n if (new Date(this.comparedControl.value) < new Date(this.group.get(this.options.Name).value)) {\r\n this.group.get(this.options.Name).setErrors(null);\r\n return null;\r\n }\r\n else {\r\n this.group.get(this.options.Name).setErrors(null);\r\n return { InvalidStartDate: true };\r\n }\r\n };\r\n\r\n //External Method\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(this.DatePickerFormControl, this.validationRules, this.options)\r\n }\r\n //External Method\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(this.DatePickerFormControl, this.validationRules, this.options)\r\n }\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(this.DatePickerFormControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(this.DatePickerFormControl, this.validationRules, CustomValidation)\r\n }\r\n\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.DatePickerFormControl)\r\n }\r\n\r\n getDateValue() {\r\n return this.options.Value ? this.datepipe.transform(this.options.Value, 'MMM d, y, h:mm a') : this.UtilityService.getResourceValue('NA');\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n","import { FileDTO } from \"./FileDTO\";\r\n\r\nexport class FileUploadModel \r\n{\r\n \r\n File:FileDTO\r\n}\r\n","import { FileDTO } from \"./FileDTO\";\r\n\r\nexport class MultipleFileUploadModel {\r\n CorrelationID_GUID?: string = null;\r\n UploadedFiles: FileDTO[] = []\r\n ExistingFiles: FileDTO[] = []\r\n RemovedFiles: string[] = []\r\n}\r\n","export enum ControlLayout {\r\n Vertical = 1,\r\n Horizontal = 2\r\n}\r\n","export enum LanguageMode{\r\n Both_Languages_are_visible = \"3c6dbffe-da7f-4108-b44d-4b216a22f701\" ,\r\n English_Language_only_is_visible = \"84cc1d57-1f07-42a1-a38f-1a376c12a367\",\r\n Arabic_Language_only_is_visible = \"6a3e59e0-9510-4b16-9080-9313f5c9f229\",\r\n Both_Languages_but_only_English_is_required = \"260c38bb-c90c-4aa7-895d-31aba9311a05\",\r\n Both_Languages_but_only_Arabic_is_required = \"a1f2e15f-2691-4118-975f-ac21caf8ad5a\",\r\n Current_Language_only_is_visible_and_required = \"e2ba1f44-68f3-4035-b84f-9f1b6c2b0c05\" ,\r\n Both_Languages_are_visible_but_only_current_language_is_required = \"b26431f2-b209-4c41-ab04-2d71361847c2\" \r\n }","import { Injectable } from \"@angular/core\";\r\nimport { ControlLayout } from \"../Enums/ControlLayout\";\r\nimport { ForceDirection } from \"../Enums/ForceDirection\";\r\nimport { LanguageMode } from \"../Enums/LanguageMode\";\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class GlobalSettings {\r\n /** to set type of view if MultilingualTextArea is Vertical or Horizontal */\r\n ViewType: ControlLayout = ControlLayout.Vertical;\r\n /*multi control placement type*/\r\n MultiControlPlacementType: ControlLayout = ControlLayout.Horizontal;\r\n /**To Set LanguageMode To MultipleLanguageText */\r\n LanguageMode: LanguageMode = LanguageMode.Both_Languages_are_visible;\r\n HideAstericsWhenRequired: boolean = false;\r\n //**To set maxlength warning message when equals limit\r\n MaxLengthWarningLimit: number = 10;\r\n //**Set any texbox maxlength default value\r\n MaxLengthTextBox: number = 255;\r\n //**Set any textArea maxlength default value\r\n MaxLengthTextArea: number = 1000;\r\n //**Set default image source\r\n DefaultImageSrc: string = \"./src/assets/images/uploadimg.png\";\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n Optional,\r\n ViewChild,\r\n ElementRef,\r\n Output,\r\n EventEmitter,\r\n} from '@angular/core';\r\nimport {\r\n FormControl,\r\n Validators,\r\n FormGroup,\r\n AbstractControl,\r\n ControlContainer,\r\n FormGroupDirective,\r\n} from '@angular/forms';\r\nimport { FileUploadOptions } from '../../Shared/Models/FileUploadOptions';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { FileUploader, FileLikeObject } from 'ng2-file-upload';\r\nimport { FileUploadModel } from '../../Shared/Models/FileUploadModel';\r\nimport { MultipleFileUploadModel } from '../../Shared/Models/MultipleFileUploadModel';\r\nimport {\r\n ControlValidationService,\r\n UtilityService,\r\n} from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\nimport { Observable } from 'rxjs';\r\nimport { FileDTO } from '../../Shared/Models/FileDTO';\r\n@Component({\r\n selector: 'BBSF-FileUplaod',\r\n templateUrl: './FileUplaod.component.html',\r\n})\r\nexport class FileUploadComponent implements OnInit {\r\n static controlContainerstatic = null;\r\n\r\n @ViewChild('fileInput', { static: false }) fileInput: ElementRef;\r\n\r\n isSubmitted: boolean;\r\n @Input() group: FormGroup;\r\n @Input() options: FileUploadOptions;\r\n @Output() OnChange = new EventEmitter();\r\n\r\n fileUploadFormControl: AbstractControl;\r\n ValidationMessage = '';\r\n ValidationCountMessage = '';\r\n uploader: FileUploader;\r\n hasAnotherDropZoneOver: boolean;\r\n AcceptedType: string = '';\r\n AcceptedTypeArray: string[] = [];\r\n ToolTipTypeArray: string[] = [];\r\n FileLikeObject: FileLikeObject;\r\n markAllAsTouched: boolean = false;\r\n validationRules = [];\r\n validationRulesasync = [];\r\n fileUploadModel: FileUploadModel;\r\n multipleFileUploadModel: MultipleFileUploadModel;\r\n file: any;\r\n deletedFiles: FileDTO[] = [];\r\n\r\n constructor(\r\n @Optional() private controlContainer: ControlContainer,\r\n public MultipleFileUplaodControlHost: FormGroupDirective,\r\n private controlUtility: ControlUtility,\r\n public UtilityService: UtilityService,\r\n private controlValidationService: ControlValidationService,\r\n private globalSettings: GlobalSettings\r\n ) {\r\n FileUploadComponent.controlContainerstatic = this.controlContainer;\r\n this.uploader = new FileUploader({\r\n disableMultipart: false, // 'DisableMultipart' must be 'true' for formatDataFunction to be called.\r\n\r\n });\r\n this.hasAnotherDropZoneOver = false;\r\n }\r\n\r\n ngOnInit() {\r\n this.fileUploadModel = new FileUploadModel();\r\n this.multipleFileUploadModel = new MultipleFileUploadModel();\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n if (this.options.Value == null) {\r\n if (this.options.IsMultipleFile == true) {\r\n //this.options.Value=this.multipleFileUploadModel\r\n } else {\r\n // this.options.Value=this.fileUploadModel\r\n }\r\n } else {\r\n if (this.options.IsMultipleFile == true) {\r\n let files: any[] = [];\r\n this.multipleFileUploadModel.ExistingFiles =\r\n this.options.Value.ExistingFiles;\r\n this.multipleFileUploadModel.UploadedFiles = [];\r\n for (\r\n let index = 0;\r\n index < this.options.Value.ExistingFiles.length;\r\n index++\r\n ) {\r\n const element = this.options.Value.ExistingFiles[index];\r\n var bytes = new Uint8Array(element.Bytes) as any;\r\n var base64 = btoa(String.fromCharCode(null, bytes));\r\n this.FileLikeObject = new FileLikeObject({\r\n name: element.NameWithExtension,\r\n type: element.MimeType,\r\n rawFile: base64,\r\n });\r\n // let blob: any;\r\n // blob = new Blob(['']) as any;\r\n // blob.name = element.FileName;\r\n // blob.lastModifiedDate = null;\r\n // blob.webkitRelativePath = '';\r\n let file = this.FileLikeObject as any;\r\n file.url = element.FileURL;\r\n files.push(file);\r\n }\r\n this.uploader.addToQueue(files);\r\n console.log(this.uploader.queue);\r\n } else {\r\n const element = this.options.Value;\r\n var bytes = new Uint8Array(element.Bytes) as any;\r\n var base64 = btoa(String.fromCharCode(null, bytes));\r\n this.FileLikeObject = new FileLikeObject({\r\n name: element.NameWithExtension,\r\n type: element.MimeType,\r\n rawFile: base64,\r\n });\r\n this.file = element;\r\n let file = this.FileLikeObject as any;\r\n file.url = element.FileURL;\r\n this.uploader.addToQueue([file as any]);\r\n }\r\n }\r\n\r\n if (this.options.LabelKey != null && this.options.LabelKey != '')\r\n this.options.LabelValue = this.UtilityService.getResourceValue(\r\n this.options.LabelKey\r\n );\r\n\r\n if (\r\n this.options.FileUploadAcceptsTypes != null &&\r\n this.options.FileUploadAcceptsTypes.length > 0\r\n ) {\r\n for (\r\n let index = 0;\r\n index < this.options.FileUploadAcceptsTypes.length;\r\n index++\r\n ) {\r\n const Type = this.options.FileUploadAcceptsTypes[index];\r\n this.AcceptedType = this.AcceptedType + Type + ',';\r\n }\r\n this.AcceptedTypeArray = this.AcceptedType.split(',');\r\n for (let index = 0; index < this.AcceptedTypeArray.length; index++) {\r\n const element = this.AcceptedTypeArray[index];\r\n for (let index = 0; index < this.AcceptedTypeArray.length; index++) {\r\n const element = this.AcceptedTypeArray[index];\r\n switch (element) {\r\n case 'application/pdf':\r\n if (!this.ToolTipTypeArray.includes('PDF'))\r\n this.ToolTipTypeArray.push('PDF');\r\n break;\r\n case 'application/msword':\r\n if (!this.ToolTipTypeArray.includes('Word'))\r\n this.ToolTipTypeArray.push('Word');\r\n break;\r\n case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\r\n if (!this.ToolTipTypeArray.includes('Word'))\r\n this.ToolTipTypeArray.push('Word');\r\n break;\r\n case 'application/vnd.ms-excel':\r\n if (!this.ToolTipTypeArray.includes('Excel'))\r\n this.ToolTipTypeArray.push('Excel');\r\n break;\r\n case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\r\n if (!this.ToolTipTypeArray.includes('Excel'))\r\n this.ToolTipTypeArray.push('Excel');\r\n break;\r\n case 'application/vnd.ms-powerpoint':\r\n if (!this.ToolTipTypeArray.includes('PowerPoint'))\r\n this.ToolTipTypeArray.push('PowerPoint');\r\n break;\r\n case 'applicationapplication/vnd.openxmlformats-officedocument.presentationml.presentation':\r\n if (!this.ToolTipTypeArray.includes('PowerPoint'))\r\n this.ToolTipTypeArray.push('PowerPoint');\r\n break;\r\n case \"image/png\":\r\n if (!this.ToolTipTypeArray.includes('PNG'))\r\n this.ToolTipTypeArray.push('PNG');\r\n break;\r\n case \"image/bmp\":\r\n if (!this.ToolTipTypeArray.includes('BMP'))\r\n this.ToolTipTypeArray.push('BMP');\r\n break;\r\n case \"image/jpeg\":\r\n if (!this.ToolTipTypeArray.includes('JPEG'))\r\n this.ToolTipTypeArray.push('JPEG');\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n this.ValidationMessage =\r\n this.ValidationMessage +\r\n `${this.UtilityService.getResourceValue('Extensions')} (${\r\n this.ToolTipTypeArray\r\n }) `;\r\n }\r\n if (this.options.FileMaxSizeInMB > 0) {\r\n this.ValidationMessage =\r\n this.ValidationMessage +\r\n `<br /> ${ this.UtilityService.getResourceValue('FileMaxSizeInMB')+this.options.FileMaxSizeInMB} `;\r\n }\r\n\r\n if (this.options.MinNoOfFiles > 0) {\r\n this.ValidationMessage =\r\n this.ValidationMessage +\r\n `<br /> ${this.UtilityService.getResourceValue(\"MinFileCountValidationKey\") +this.options.MinNoOfFiles}`;\r\n }\r\n\r\n if (\r\n this.options.FileUploadAcceptsTypes != null &&\r\n this.options.FileUploadAcceptsTypes.length > 0\r\n ) {\r\n }\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.fileUploadFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation;\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.validationRules.push(Validation.functionBody);\r\n }\r\n }\r\n\r\n if(this.options.IsMultipleFile && this.options.MaxNoOfFiles>0)\r\n {\r\n this.ValidationCountMessage=`${this.UtilityService.getResourceValue('MaxFilesCount')} : ${this.options.MaxNoOfFiles}`;\r\n }\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n }\r\n\r\n this.fileUploadFormControl.setValidators(this.validationRules);\r\n this.fileUploadFormControl.setAsyncValidators(this.validationRulesasync);\r\n if (this.options.IsDisabled) {\r\n this.fileUploadFormControl.disable();\r\n }\r\n\r\n this.MultipleFileUplaodControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched();\r\n this.markAllAsTouched = true;\r\n });\r\n\r\n this.fileUploadFormControl.setValue(this.options.Value);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.options.AttributeList != null) {\r\n var element = document.getElementById(this.options.Name);\r\n for (let index = 0; index < this.options.AttributeList.length; index++) {\r\n element.setAttribute(\r\n this.options.AttributeList[index].Key,\r\n this.options.AttributeList[index].value\r\n );\r\n }\r\n }\r\n }\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n };\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError();\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError();\r\n this.markAllAsTouched = false;\r\n }\r\n\r\n return this.controlUtility.getErrorValidationMassage(\r\n ErrorList,\r\n this.group,\r\n this.options\r\n );\r\n }\r\n\r\n fileOverAnother(event: any): void {\r\n this.hasAnotherDropZoneOver = event;\r\n }\r\n isHideInput() {\r\n if (this.options.IsMultipleFile) {\r\n if (\r\n this.options.MaxNoOfFiles != null &&\r\n this.options.MaxNoOfFiles > 0 &&\r\n this.options.MaxNoOfFiles == this.uploader.queue.length\r\n ) {\r\n return true;\r\n }\r\n } else {\r\n if (this.uploader.queue.length > 0) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n onFileChange() {\r\n let FilesArray = [];\r\n if (\r\n this.options.IsMultipleFile &&\r\n this.options.MinNoOfFiles != null &&\r\n this.options.MinNoOfFiles > 0 &&\r\n this.options.MinNoOfFiles > this.uploader.queue.length\r\n ) {\r\n const formControl = this.fileUploadFormControl;\r\n formControl.setErrors({\r\n MinFileCountValidationKey: this.options.MinNoOfFiles,\r\n });\r\n formControl.markAsTouched();\r\n this.uploader.queue = [];\r\n return;\r\n }\r\n\r\n if (\r\n this.options.IsMultipleFile &&\r\n this.options.MaxSizeForAllFilesInMB != null &&\r\n this.options.MaxSizeForAllFilesInMB > 0\r\n ) {\r\n let AllSizeFile = 0;\r\n for (let index = 0; index < this.uploader.queue.length; index++) {\r\n const element = this.uploader.queue[index];\r\n const file = element.file;\r\n AllSizeFile = AllSizeFile + file.size;\r\n }\r\n const MaxSizeForAllFiles =\r\n this.options.MaxSizeForAllFilesInMB * 1000 * 1000;\r\n if (AllSizeFile > MaxSizeForAllFiles) {\r\n const formControl = this.fileUploadFormControl;\r\n formControl.setErrors({\r\n MaxSizeForAllFilesInMB: this.options.MaxSizeForAllFilesInMB + 'M',\r\n });\r\n formControl.markAsTouched();\r\n this.uploader.queue = [];\r\n return;\r\n }\r\n }\r\n let AddedQueue = this.uploader.queue.filter(\r\n (object) => object['some'].lastModified != null\r\n );\r\n for (let index = 0; index < AddedQueue.length; index++) {\r\n const element = AddedQueue[index];\r\n const file = element.file;\r\n const maxFileSize = this.options.FileMaxSizeInMB * 1000 * 1000;\r\n if (file) {\r\n const fileType = file.type;\r\n if (file.size > maxFileSize) {\r\n const formControl = this.fileUploadFormControl;\r\n formControl.setErrors({\r\n FileMaxSizeInMB: this.options.FileMaxSizeInMB + 'M',\r\n });\r\n formControl.markAsTouched();\r\n this.uploader.queue = [];\r\n return;\r\n }\r\n if (\r\n this.options.FileUploadAcceptsTypes != null &&\r\n this.options.FileUploadAcceptsTypes.length > 0 &&\r\n !(\r\n this.AcceptedTypeArray.includes(fileType.toUpperCase()) ||\r\n this.AcceptedTypeArray.includes(fileType.toLowerCase())\r\n )\r\n ) {\r\n const formControl = this.fileUploadFormControl;\r\n formControl.setErrors({ ToolTipTypeError: this.ToolTipTypeArray });\r\n formControl.markAsTouched();\r\n this.uploader.queue = [];\r\n return;\r\n }\r\n let reader = new FileReader();\r\n let fileObject = file.rawFile as any;\r\n reader.readAsDataURL(fileObject);\r\n reader.onload = () => {\r\n let existingID_GUID = null;\r\n if (!this.options.IsMultipleFile && this.file)\r\n existingID_GUID =\r\n this.file.NameWithExtension == file.name\r\n ? this.file.ID_GUID\r\n : null;\r\n\r\n let AddedFile = {\r\n FileName: file.name,\r\n FileType: file.type,\r\n FileBase64: reader.result.toString().split(',')[1],\r\n FileSizeInMB: file.size / 1000 / 1000,\r\n NameWithExtension: file.name,\r\n ID_GUID: existingID_GUID,\r\n };\r\n if (this.options.IsMultipleFile == false) {\r\n this.fileUploadModel = new FileUploadModel();\r\n this.fileUploadModel.File = AddedFile;\r\n\r\n this.fileUploadFormControl.setValue(this.fileUploadModel);\r\n this.group.get(this.options.Name).setValue(this.fileUploadModel);\r\n //Use this line to enable two way binding.\r\n this.options.Value = this.fileUploadModel;\r\n } else {\r\n FilesArray.push(AddedFile);\r\n this.multipleFileUploadModel.UploadedFiles = FilesArray;\r\n if (this.options.Value != null && this.options.Value != undefined) {\r\n if (this.options.Value.CorrelationID_GUID == null) {\r\n this.multipleFileUploadModel.RemovedFiles = [];\r\n }\r\n }\r\n this.multipleFileUploadModel.CorrelationID_GUID=this.options.Value?.CorrelationID_GUID\r\n this.fileUploadFormControl.setValue(this.multipleFileUploadModel);\r\n this.group\r\n .get(this.options.Name)\r\n .setValue(this.multipleFileUploadModel);\r\n //Use this line to enable two way binding.\r\n this.options.Value = this.multipleFileUploadModel;\r\n }\r\n };\r\n let originalValue = this.group.get(this.options.Name).value;\r\n if (\r\n this.options.PatchFunction &&\r\n this.options.PatchPath &&\r\n this.group.get(this.options.Name).valid\r\n ) {\r\n this.controlUtility.patchControlValue(\r\n originalValue,\r\n this.options.PatchFunction,\r\n this.options.PatchPath\r\n );\r\n }\r\n this.OnChange.emit(originalValue);\r\n }\r\n }\r\n }\r\n removeFromControlValue(item) {\r\n if (this.options.IsMultipleFile == false) {\r\n this.fileUploadModel = null;\r\n if (this.options.IsRequired == true) {\r\n this.fileUploadFormControl.markAsTouched();\r\n this.fileUploadFormControl.invalid;\r\n }\r\n this.group.get(this.options.Name).setValue(this.fileUploadModel);\r\n this.options.Value = this.fileUploadModel;\r\n } else {\r\n if (this.options.Value != null && this.options.Value != undefined) {\r\n if (this.options.Value.CorrelationID_GUID == null) {\r\n this.deletedFiles = [];\r\n this.multipleFileUploadModel.RemovedFiles = [];\r\n } else {\r\n if (this.multipleFileUploadModel.RemovedFiles.length == 0) {\r\n let FileObject = item.file.rawFile;\r\n let DeletedItem = this.multipleFileUploadModel.ExistingFiles.filter(\r\n (Object) => Object.NameWithExtension == FileObject.name\r\n )[0];\r\n this.multipleFileUploadModel.ExistingFiles =\r\n this.multipleFileUploadModel.ExistingFiles.filter(\r\n (Object) => Object.NameWithExtension != FileObject.name\r\n );\r\n this.deletedFiles.push(DeletedItem);\r\n this.multipleFileUploadModel.RemovedFiles.push(DeletedItem.ID_GUID);\r\n } else {\r\n let FileObject = item.file.rawFile;\r\n let deletedList = this.deletedFiles.filter(\r\n (Object) => Object.NameWithExtension == FileObject.name\r\n );\r\n if (deletedList.length == 0 || deletedList == undefined) {\r\n let DeletedItem =\r\n this.multipleFileUploadModel.ExistingFiles.filter(\r\n (Object) => Object.NameWithExtension == FileObject.name\r\n )[0];\r\n this.multipleFileUploadModel.ExistingFiles =\r\n this.multipleFileUploadModel.ExistingFiles.filter(\r\n (Object) => Object.NameWithExtension != FileObject.name\r\n );\r\n this.deletedFiles.push(DeletedItem);\r\n this.multipleFileUploadModel.RemovedFiles.push(\r\n DeletedItem.ID_GUID\r\n );\r\n }\r\n }\r\n }\r\n } else {\r\n this.deletedFiles = [];\r\n this.multipleFileUploadModel.RemovedFiles = [];\r\n }\r\n this.multipleFileUploadModel.UploadedFiles =\r\n this.multipleFileUploadModel.UploadedFiles.filter(\r\n (Object) => Object.NameWithExtension != item._file.name\r\n );\r\n if (\r\n (this.multipleFileUploadModel.UploadedFiles == null ||\r\n this.multipleFileUploadModel.UploadedFiles.length == 0) &&\r\n this.options.IsRequired\r\n ) {\r\n const formControl = this.fileUploadFormControl;\r\n formControl.setErrors({\r\n MinFileCountValidationKey: this.options.MinNoOfFiles,\r\n });\r\n this.fileUploadFormControl.markAsTouched();\r\n this.fileUploadFormControl.invalid;\r\n }\r\n this.multipleFileUploadModel.CorrelationID_GUID=this.options.Value?.CorrelationID_GUID\r\n this.fileUploadFormControl.setValue(this.multipleFileUploadModel);\r\n this.group.get(this.options.Name).setValue(this.multipleFileUploadModel);\r\n //Use this line to enable two way binding.\r\n this.options.Value = this.multipleFileUploadModel;\r\n }\r\n }\r\n //External Method\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(\r\n this.fileUploadFormControl,\r\n this.validationRules,\r\n this.options\r\n );\r\n };\r\n //External Method\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(\r\n this.fileUploadFormControl,\r\n this.validationRules,\r\n this.options\r\n );\r\n };\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(\r\n this.fileUploadFormControl,\r\n this.validationRules,\r\n CustomValidation\r\n );\r\n };\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(\r\n this.fileUploadFormControl,\r\n this.validationRules,\r\n CustomValidation\r\n );\r\n };\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.fileUploadFormControl);\r\n };\r\n}\r\n","import { Expose, Type } from 'class-transformer';\r\nexport class EnglishArabicDTO\r\n{\r\n @Expose({name: 'english'}) English:string;\r\n @Expose({name: 'arabic'}) Arabic:string\r\n}","import { Component, OnInit, Input, Optional, Output, EventEmitter } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, AbstractControl, ControlContainer, FormGroupDirective } from '@angular/forms';\r\nimport { InputType } from '../../Shared/Enums/InputType';\r\nimport { EnglishArabicDTO } from '../../Shared/Models/EnglishArabicDTO';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { LanguageMode } from '../../Shared/Enums/LanguageMode';\r\nimport { BBSFTranslateService, ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\nimport { Observable } from 'rxjs';\r\nimport { ControlLayout } from '../../Shared/Enums/ControlLayout';\r\nimport { MultiLingualTextBoxOptions } from '../../Shared/Models/MultilingualTextBoxOptions';\r\n\r\n@Component({\r\n selector: 'BBSF-MultiLingualTextBox',\r\n templateUrl: './MultiLingualTextBox.component.html'\r\n})\r\nexport class MultiLingualTextBoxComponent implements OnInit {\r\n\r\n static controlContainerstatic = null;\r\n\r\n constructor(public MultiLingualTextBoxFormControlHost: FormGroupDirective, @Optional() private controlContainer: ControlContainer,\r\n private controlUtility: ControlUtility, private UtilityService: UtilityService, private translate: BBSFTranslateService,\r\n private controlValidationService: ControlValidationService, private globalSettings: GlobalSettings) {\r\n MultiLingualTextBoxComponent.controlContainerstatic = this.controlContainer;\r\n this.CurrentLanguage = translate.currentLang != undefined ? translate.currentLang : translate.defaultLang\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: MultiLingualTextBoxOptions;\r\n @Output() OnChange = new EventEmitter();\r\n\r\n ArabicFormControl: AbstractControl;\r\n EnglishFormControl: AbstractControl;\r\n MultiFormControl: AbstractControl;\r\n MultiLanguagegroup: FormGroup;\r\n ArabicWordCount: number = 0;\r\n ArabicWordCountArray: number = 0;\r\n EnglishWordCount: number = 0;\r\n EnglishWordCountArray: number = 0;\r\n CurrentLanguage: string = \"\";\r\n ShowArabicTextBox: boolean\r\n ShowEnglishTextBox: boolean\r\n ArabicValidationRules = [];\r\n ArabicValidationRulesasync = [];\r\n EnglishValidationRules = [];\r\n EnglishValidationRulesasync = [];\r\n\r\n IsShowArabicWordCount: boolean = false;\r\n IsShowEnglishWordCount: boolean = false;\r\n\r\n IsShowAsteriskInArabic: boolean = false;\r\n IsShowAsteriskInEnglish: boolean = false;\r\n markAllAsTouched: boolean = false;\r\n\r\n\r\n ArabicLetterOnly: string = \"\"\r\n EnglishLetterOnly: string = \"\"\r\n\r\n //For Show warning message of max length limit\r\n minCharsLimit: number = -1; //To disable chars limit feature by default\r\n englishCurrentCharsCount: number = 0;\r\n arabicCurrentCharsCount: number = 0;\r\n showEnglishCharsLimitMsg: boolean = false;\r\n showArabicCharsLimitMsg: boolean = false;\r\n hasEnglishCharsLimitValidationError: boolean = false;\r\n hasArabicCharsLimitValidationError: boolean = false;\r\n englishCharsLimitMsgClass: string;\r\n arabicCharsLimitMsgClass: string;\r\n englishMaxLimitWarningMsg: string = \"\";\r\n arabicMaxLimitWarningMsg: string = \"\";\r\n\r\n getCustomErrorsMassages() {\r\n this.ArabicLetterOnly = this.UtilityService.getResourceValue(\"ArabicIsRequiredAndOnly50CharactersEnglish\");\r\n this.EnglishLetterOnly = this.UtilityService.getResourceValue(\"EnglishLetterOnly\");\r\n\r\n\r\n }\r\n async ngOnInit() {\r\n this.controlValidationService.isCreatedBefor = false\r\n this.CurrentLanguage = await this.UtilityService.getCurrentLanguage();\r\n\r\n // this.translate.onLangChange.subscribe((event: LangChangeEvent) => {\r\n // this.CurrentLanguage = event.lang;\r\n // this.showInputUsingLanguageMode()\r\n // });\r\n this.MultiLanguagegroup = new FormGroup({});;\r\n this.MultiLanguagegroup.addControl(\"Arabic\", new FormControl(''));\r\n this.MultiLanguagegroup.addControl(\"English\", new FormControl(''));\r\n this.ArabicFormControl = this.MultiLanguagegroup.controls[\"Arabic\"]; // new FormControl('',validationRules);\r\n this.EnglishFormControl = this.MultiLanguagegroup.controls[\"English\"]; // new FormControl('',validationRules);\r\n this.group.addControl(this.options.Name, new FormGroup(this.MultiLanguagegroup.controls));\r\n this.getCustomErrorsMassages()\r\n\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n if (!this.options.LanguageMode)\r\n this.options.LanguageMode = this.globalSettings.LanguageMode;\r\n if (!this.options.MultiControlPlacementType)\r\n this.options.MultiControlPlacementType = this.globalSettings.MultiControlPlacementType;\r\n if (!this.options.MaxLength)\r\n this.options.MaxLength = this.globalSettings.MaxLengthTextBox;\r\n\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\") {\r\n this.options.ArabicLabelValue = this.UtilityService.getResourceValue(this.options.LabelKey) + \" \" + this.UtilityService.getResourceValue(\"InArabic\");\r\n this.options.EnglishLabelValue = this.UtilityService.getResourceValue(this.options.LabelKey) + \" \" + this.UtilityService.getResourceValue(\"InEnglish\");\r\n }\r\n else {\r\n if (this.options.ArabicLabelKey != null && this.options.ArabicLabelKey != \"\")\r\n this.options.ArabicLabelValue = this.UtilityService.getResourceValue(this.options.ArabicLabelKey);\r\n\r\n if (this.options.EnglishLabelKey != null && this.options.EnglishLabelKey != \"\")\r\n this.options.EnglishLabelValue = this.UtilityService.getResourceValue(this.options.EnglishLabelKey);\r\n }\r\n\r\n\r\n\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.EnglishValidationRules.push(Validation.functionBody);\r\n this.ArabicValidationRules.push(Validation.functionBody);\r\n }\r\n }\r\n\r\n\r\n if (this.options.MinLength > 0) {\r\n this.ArabicValidationRules.push(Validators.minLength(this.options.MinLength));\r\n this.EnglishValidationRules.push(Validators.minLength(this.options.MinLength));\r\n }\r\n\r\n if (this.options.MaxLength > 0) {\r\n this.EnglishValidationRules.push(Validators.maxLength(this.options.MaxLength));\r\n this.ArabicValidationRules.push(Validators.maxLength(this.options.MaxLength));\r\n\r\n if (!this.options.MaxLengthWarningLimit)\r\n this.options.MaxLengthWarningLimit = this.globalSettings.MaxLengthWarningLimit;\r\n\r\n this.minCharsLimit = this.options.MaxLength - this.options.MaxLengthWarningLimit;\r\n }\r\n\r\n this.showInputUsingLanguageMode();\r\n\r\n this.ArabicValidationRules.push(Validators.compose([\r\n this.controlUtility.arabicValidator({ ArabicIsRequiredAndOnly50CharactersEnglish: this.ArabicLetterOnly }),\r\n\r\n ]));\r\n this.EnglishValidationRules.push(Validators.compose([\r\n this.controlUtility.patternValidator(/^[~`!@#$%^&*()‘’“”_+=[\\]\\\\{}|;':\",.\\/<>?a-zA-Z0-9- ]*$/, { EnglishLetterOnly: this.EnglishLetterOnly }),\r\n\r\n ]));\r\n\r\n this.ArabicFormControl.setValidators(this.ArabicValidationRules);\r\n this.ArabicFormControl.setAsyncValidators(this.ArabicValidationRulesasync);\r\n this.EnglishFormControl.setValidators(this.EnglishValidationRules);\r\n this.EnglishFormControl.setAsyncValidators(this.EnglishValidationRulesasync);\r\n if (this.options.IsDisabled) {\r\n this.EnglishFormControl.disable();\r\n this.ArabicFormControl.disable();\r\n }\r\n this.ArabicFormControl.setValue(this.options.Value.Arabic)\r\n this.EnglishFormControl.setValue(this.options.Value.English)\r\n\r\n if (this.options.IsReadonly && !this.options.Value) {\r\n this.options.Value.Arabic = this.UtilityService.getResourceValue('NA');\r\n this.options.Value.English = this.UtilityService.getResourceValue('NA');\r\n }\r\n\r\n this.MultiLingualTextBoxFormControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n })\r\n }\r\n\r\n\r\n onTextChange() {\r\n // this.trimControlValue(type)\r\n let arabicValue = \"\";\r\n let englishValue = \"\";\r\n if (this.EnglishFormControl.value == \"\") {\r\n this.EnglishWordCountArray = 0;\r\n this.EnglishWordCount = 0;\r\n }\r\n else {\r\n if (this.EnglishFormControl.value != null && this.EnglishFormControl.value != undefined) {\r\n this.EnglishWordCountArray = this.EnglishFormControl.value.split(\" \").length;\r\n if (this.EnglishWordCountArray > 0) {\r\n if (this.EnglishWordCountArray > this.options.MaxWordCount) {\r\n this.EnglishWordCount = this.options.MaxWordCount;\r\n this.MultiLanguagegroup.controls[\"English\"].setErrors({ MaxWordCountValidationKey: this.options.MaxWordCount });\r\n this.MultiLanguagegroup.controls[\"English\"].markAsTouched();\r\n this.MultiLanguagegroup.controls[\"English\"].invalid;\r\n }\r\n else {\r\n this.EnglishWordCount = this.EnglishWordCountArray;\r\n }\r\n englishValue = this.EnglishFormControl.value;\r\n }\r\n }\r\n\r\n //Check for maxlength limit count\r\n //MaxLength should be gretaer than or equals chars limit so that minCharsLimit would be >= 0\r\n if (this.options.MaxLength && this.minCharsLimit >= 0) {\r\n this.englishCurrentCharsCount = this.EnglishFormControl.value.length;\r\n if (this.englishCurrentCharsCount > this.minCharsLimit) {\r\n this.showEnglishCharsLimitMsg = true;\r\n this.hasEnglishCharsLimitValidationError = true;\r\n if (this.englishCurrentCharsCount == this.options.MaxLength)\r\n this.englishCharsLimitMsgClass = \"danger\";\r\n else\r\n this.englishCharsLimitMsgClass = \"warning\";\r\n }\r\n else {\r\n this.showEnglishCharsLimitMsg = false;\r\n this.hasEnglishCharsLimitValidationError = false;\r\n }\r\n var max: number = this.options.MaxLength;\r\n var current: number = this.englishCurrentCharsCount;\r\n\r\n var resource = this.UtilityService.getResourceValue(\"MaxLengthLimitWarning\");\r\n this.englishMaxLimitWarningMsg = eval('`' + resource + '`');\r\n }\r\n\r\n }\r\n if (this.ArabicFormControl.value == \"\") {\r\n this.ArabicWordCountArray = 0;\r\n this.ArabicWordCount = 0;\r\n }\r\n else {\r\n if (this.ArabicFormControl.value != null && this.ArabicFormControl.value != undefined) {\r\n this.ArabicWordCountArray = this.ArabicFormControl.value.split(\" \").length;\r\n if (this.ArabicWordCountArray > 0) {\r\n if (this.ArabicWordCountArray > this.options.MaxWordCount) {\r\n this.ArabicWordCount = this.options.MaxWordCount;\r\n this.MultiLanguagegroup.controls[\"Arabic\"].setErrors({ MaxWordCountValidationKey: this.options.MaxWordCount });\r\n this.MultiLanguagegroup.controls[\"Arabic\"].markAsTouched();\r\n this.MultiLanguagegroup.controls[\"Arabic\"].invalid;\r\n }\r\n else {\r\n this.ArabicWordCount = this.ArabicWordCountArray;\r\n }\r\n arabicValue = this.ArabicFormControl.value;\r\n }\r\n }\r\n\r\n //Check for maxlength limit count\r\n //MaxLength should be gretaer than or equals chars limit so that minCharsLimit would be >= 0\r\n if (this.options.MaxLength && this.minCharsLimit >= 0) {\r\n this.arabicCurrentCharsCount = this.ArabicFormControl.value.length;\r\n if (this.arabicCurrentCharsCount > this.minCharsLimit) {\r\n this.showArabicCharsLimitMsg = true;\r\n this.hasArabicCharsLimitValidationError = true;\r\n if (this.arabicCurrentCharsCount == this.options.MaxLength)\r\n this.arabicCharsLimitMsgClass = \"danger\";\r\n else\r\n this.arabicCharsLimitMsgClass = \"warning\";\r\n }\r\n else {\r\n this.showArabicCharsLimitMsg = false;\r\n this.hasArabicCharsLimitValidationError = false;\r\n }\r\n\r\n var max: number = this.options.MaxLength;\r\n var current: number = this.arabicCurrentCharsCount;\r\n\r\n var resource = this.UtilityService.getResourceValue(\"MaxLengthLimitWarning\");\r\n this.arabicMaxLimitWarningMsg = eval('`' + resource + '`');\r\n }\r\n }\r\n let mulitLangModel = new EnglishArabicDTO();\r\n mulitLangModel.Arabic = arabicValue;\r\n mulitLangModel.English = englishValue;\r\n // this.ArabicFormControl = arabicValue;\r\n // this.EnglishFormControl = englishValue;\r\n this.OnChange.emit(mulitLangModel)\r\n this.group.get(this.options.Name).setValue(mulitLangModel);\r\n //Use this line to enable two way binding.\r\n this.options.Value = mulitLangModel;\r\n this.MultiLingualTextBoxFormControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n })\r\n }\r\n\r\n\r\n\r\n resetError() {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n //External Method\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(this.ArabicFormControl, this.EnglishValidationRules, this.options)\r\n this.controlUtility.RemoveRequiredValidation(this.EnglishFormControl, this.ArabicValidationRules, this.options)\r\n }\r\n //External Method\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(this.ArabicFormControl, this.EnglishValidationRules, this.options)\r\n this.controlUtility.AddRequiredValidation(this.EnglishFormControl, this.ArabicValidationRules, this.options)\r\n }\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(this.ArabicFormControl, this.EnglishValidationRules, CustomValidation)\r\n this.controlUtility.RemoveCustomValidation(this.EnglishFormControl, this.ArabicValidationRules, CustomValidation)\r\n }\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(this.ArabicFormControl, this.EnglishValidationRules, CustomValidation)\r\n this.controlUtility.AddCustomValidation(this.EnglishFormControl, this.ArabicValidationRules, CustomValidation)\r\n }\r\n\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.ArabicFormControl)\r\n this.controlUtility.IsValid(this.EnglishFormControl)\r\n }\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n\r\n\r\n getInputType(type: number) {\r\n return InputType[type]\r\n }\r\n\r\n trimControlValue(type: string) {\r\n const whitespace: string = ' ';\r\n if (type == \"En\") {\r\n let originalValue = this.controlUtility.trimControlValue(this.EnglishFormControl.value);\r\n this.EnglishFormControl.patchValue(originalValue)\r\n\r\n if (this.options.PatchFunction && this.options.PatchPath && this.EnglishFormControl.valid) {\r\n this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath)\r\n }\r\n if (this.EnglishFormControl.value.startsWith(whitespace) || this.EnglishFormControl.value.endsWith(whitespace)) {\r\n this.EnglishFormControl.patchValue(originalValue);\r\n }\r\n }\r\n if (type == \"Ar\") {\r\n let originalValue = this.controlUtility.trimControlValue(this.ArabicFormControl.value);\r\n this.ArabicFormControl.patchValue(originalValue)\r\n if (this.options.PatchFunction && this.options.PatchPath && this.ArabicFormControl.valid) {\r\n this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath)\r\n\r\n }\r\n if (this.ArabicFormControl.value.startsWith(whitespace) || this.ArabicFormControl.value.endsWith(whitespace)) {\r\n this.ArabicFormControl.patchValue(originalValue);\r\n }\r\n }\r\n\r\n }\r\n\r\n copyInputMessage(inputElement) {\r\n this.controlUtility.CopyInputMessage(inputElement)\r\n }\r\n\r\n showInputUsingLanguageMode() {\r\n this.ArabicValidationRules = this.ArabicValidationRules.filter(item => item !== Validators.required);\r\n this.EnglishValidationRules = this.EnglishValidationRules.filter(item => item !== Validators.required);\r\n\r\n this.ArabicFormControl.clearValidators();\r\n this.EnglishFormControl.clearValidators();\r\n\r\n this.ArabicFormControl.updateValueAndValidity();\r\n this.EnglishFormControl.updateValueAndValidity();\r\n\r\n switch (this.options.LanguageMode) {\r\n case LanguageMode.Both_Languages_are_visible:\r\n this.ShowArabicTextBox = true;\r\n this.ShowEnglishTextBox = true;\r\n if (this.options.IsRequired == true) {\r\n this.EnglishValidationRules.push(Validators.required);\r\n this.ArabicValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInArabic = true;\r\n this.IsShowAsteriskInEnglish = true;\r\n }\r\n break;\r\n case LanguageMode.Arabic_Language_only_is_visible:\r\n this.ShowArabicTextBox = true;\r\n this.options.MultiControlPlacementType = ControlLayout.Vertical;\r\n\r\n break;\r\n case LanguageMode.English_Language_only_is_visible:\r\n this.ShowEnglishTextBox = true;\r\n this.options.MultiControlPlacementType = ControlLayout.Vertical;\r\n\r\n break;\r\n case LanguageMode.Both_Languages_are_visible_but_only_current_language_is_required:\r\n this.ShowArabicTextBox = true;\r\n this.ShowEnglishTextBox = true;\r\n this.options.MultiControlPlacementType = this.globalSettings.MultiControlPlacementType\r\n\r\n if (this.CurrentLanguage == 'ar') {\r\n if (this.options.IsRequired == true) {\r\n this.ArabicValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInArabic = true;\r\n\r\n }\r\n }\r\n if (this.CurrentLanguage == 'en') {\r\n if (this.options.IsRequired == true) {\r\n this.EnglishValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInEnglish = true;\r\n\r\n }\r\n }\r\n break;\r\n case LanguageMode.Both_Languages_but_only_Arabic_is_required:\r\n this.ShowArabicTextBox = true;\r\n this.ShowEnglishTextBox = true;\r\n this.options.MultiControlPlacementType = this.globalSettings.MultiControlPlacementType\r\n\r\n if (this.options.IsRequired == true) {\r\n this.ArabicValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInArabic = true;\r\n\r\n }\r\n break;\r\n case LanguageMode.Both_Languages_but_only_English_is_required:\r\n this.ShowArabicTextBox = true;\r\n this.ShowEnglishTextBox = true;\r\n this.options.MultiControlPlacementType = this.globalSettings.MultiControlPlacementType\r\n\r\n if (this.options.IsRequired == true) {\r\n this.EnglishValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInEnglish = true;\r\n\r\n }\r\n break;\r\n case LanguageMode.Current_Language_only_is_visible_and_required:\r\n this.options.MultiControlPlacementType = ControlLayout.Vertical;\r\n if (this.CurrentLanguage == 'ar') {\r\n this.ShowArabicTextBox = true;\r\n this.ShowEnglishTextBox = false;\r\n if (this.options.IsRequired == true) {\r\n this.ArabicValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInArabic = true;\r\n\r\n }\r\n }\r\n if (this.CurrentLanguage == 'en') {\r\n this.ShowArabicTextBox = false;\r\n this.ShowEnglishTextBox = true;\r\n if (this.options.IsRequired == true) {\r\n this.EnglishValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInEnglish = true;\r\n\r\n }\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n this.ArabicFormControl.setValidators(this.ArabicValidationRules);\r\n this.EnglishFormControl.setValidators(this.EnglishValidationRules);\r\n this.ArabicFormControl.updateValueAndValidity();\r\n this.EnglishFormControl.updateValueAndValidity();\r\n\r\n }\r\n\r\n onArabicFocus(isFocus: boolean) {\r\n this.IsShowArabicWordCount = isFocus\r\n\r\n //onFocus\r\n if (isFocus) {\r\n if (this.hasArabicCharsLimitValidationError) //check if there was previous validation error\r\n this.showArabicCharsLimitMsg = true;\r\n }\r\n else //onFocusOut\r\n this.showArabicCharsLimitMsg = false;\r\n }\r\n\r\n onEnglishFocus(isFocus: boolean) {\r\n this.IsShowEnglishWordCount = isFocus\r\n\r\n //onFocus\r\n if (isFocus) {\r\n if (this.hasEnglishCharsLimitValidationError) //check if there was previous validation error\r\n this.showEnglishCharsLimitMsg = true;\r\n }\r\n else //onFocusOut\r\n this.showEnglishCharsLimitMsg = false;\r\n }\r\n\r\n\r\n}\r\n\r\n","import { Component, OnInit, Input, Optional, Output, EventEmitter } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, AbstractControl, ControlContainer, FormGroupDirective } from '@angular/forms';\r\nimport { ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { TextAreaOptions } from '../../Shared/Models/TextAreaOptions';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'BBSF-TextArea',\r\n templateUrl: './TextArea.component.html'\r\n})\r\nexport class TextAreaComponent implements OnInit {\r\n\r\n\r\n static controlContainerstatic = null;\r\n constructor(private controlUtility: ControlUtility, @Optional() private controlContainer: ControlContainer,\r\n public TextAreaControlHost: FormGroupDirective, private UtilityService: UtilityService,\r\n private controlValidationService: ControlValidationService, private globalSettings: GlobalSettings) {\r\n TextAreaComponent.controlContainerstatic = this.controlContainer;\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: TextAreaOptions;\r\n @Output() OnChange = new EventEmitter();\r\n\r\n TextAreaFormControl: AbstractControl;\r\n WordCount: number = 0;\r\n WordCountArray: number = 0;\r\n IsShowWordCount: boolean = false;\r\n markAllAsTouched: boolean = false;\r\n validationRules = [];\r\n validationRulesasync = [];\r\n //For Show warning message of max length limit\r\n currentCharsCount: number = 0;\r\n showCharsLimitMsg: boolean = false;\r\n hasCharsLimitValidationError: boolean = false;\r\n charsLimitMsgClass: string;\r\n minCharsLimit: number = -1; //To disable chars limit feature by default\r\n maxLimitWarningMsg: string = \"\";\r\n public textDir;\r\n\r\n ngOnInit() {\r\n if (this.options.IsReadonly && !this.options.Value)\r\n this.options.Value = this.UtilityService.getResourceValue('NA');\r\n\r\n if (this.options.ForceDirection)\r\n this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';\r\n else\r\n this.textDir = localStorage.getItem('language') == 'ar' ? 'rtl' : 'ltr';\r\n\r\n this.controlValidationService.isCreatedBefor = false\r\n\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.TextAreaFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n\r\n if (!this.options.MaxLength)\r\n this.options.MaxLength = this.globalSettings.MaxLengthTextArea;\r\n\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\")\r\n this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);\r\n\r\n this.TextAreaFormControl.setValue(this.options.Value);\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.validationRules.push(Validation.functionBody);\r\n }\r\n\r\n }\r\n if (this.options.MinLength > 0) {\r\n this.validationRules.push(Validators.minLength(this.options.MinLength));\r\n }\r\n if (this.options.MaxLength > 0) {\r\n this.validationRules.push(Validators.maxLength(this.options.MaxLength));\r\n\r\n if (!this.options.MaxLengthWarningLimit)\r\n this.options.MaxLengthWarningLimit = this.globalSettings.MaxLengthWarningLimit;\r\n\r\n this.minCharsLimit = this.options.MaxLength - this.options.MaxLengthWarningLimit;\r\n }\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n }\r\n this.TextAreaFormControl.setValidators(this.validationRules);\r\n this.TextAreaFormControl.setAsyncValidators(this.validationRulesasync);\r\n if (this.options.IsDisabled) {\r\n this.TextAreaFormControl.disable();\r\n }\r\n\r\n this.TextAreaControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n })\r\n\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n this.controlUtility.setAttributeForControl(this.options)\r\n }\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n getInputType(type: number) {\r\n return this.controlUtility.getInputType(type)\r\n }\r\n\r\n trimControlValue() {\r\n let originalValue = this.controlUtility.trimControlValue(this.TextAreaFormControl.value);\r\n this.TextAreaFormControl.patchValue(originalValue)\r\n if (this.options.PatchFunction && this.options.PatchPath && this.TextAreaFormControl.valid) {\r\n this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath)\r\n }\r\n }\r\n\r\n copyInputMessage(inputElement) {\r\n this.controlUtility.CopyInputMessage(inputElement)\r\n }\r\n\r\n onTextChange() {\r\n\r\n if (this.TextAreaFormControl.value == \"\") {\r\n this.WordCountArray = 0;\r\n this.WordCount = 0;\r\n }\r\n\r\n else {\r\n this.WordCountArray = this.TextAreaFormControl.value.split(\" \").length;\r\n if (this.WordCountArray > 0) {\r\n if (this.WordCountArray > this.options.MaxWordCount) {\r\n this.WordCount = this.options.MaxWordCount;\r\n this.TextAreaFormControl.setErrors({ \"errorMassage\": ` Word count must be less then or equal ${this.options.MaxWordCount}` });\r\n this.TextAreaFormControl.markAsTouched();\r\n this.TextAreaFormControl.invalid;\r\n }\r\n else {\r\n this.WordCount = this.WordCountArray;\r\n\r\n }\r\n\r\n }\r\n }\r\n //Check for maxlength limit count\r\n //MaxLength should be gretaer than or equals chars limit so that minCharsLimit would be >= 0\r\n if (this.options.MaxLength && this.minCharsLimit >= 0) {\r\n this.currentCharsCount = this.TextAreaFormControl.value.length;\r\n if (this.currentCharsCount > this.minCharsLimit) {\r\n this.showCharsLimitMsg = true;\r\n this.hasCharsLimitValidationError = true;\r\n\r\n if (this.currentCharsCount == this.options.MaxLength)\r\n this.charsLimitMsgClass = \"danger\";\r\n else\r\n this.charsLimitMsgClass = \"warning\";\r\n }\r\n else {\r\n this.showCharsLimitMsg = false;\r\n this.hasCharsLimitValidationError = false;\r\n }\r\n var max: number = this.options.MaxLength;\r\n var current: number = this.currentCharsCount;\r\n\r\n var resource = this.UtilityService.getResourceValue(\"MaxLengthLimitWarning\");\r\n this.maxLimitWarningMsg = eval('`' + resource + '`');\r\n }\r\n this.OnChange.emit(this.TextAreaFormControl.value)\r\n\r\n }\r\n\r\n onFocus(isFocus: boolean) {\r\n this.IsShowWordCount = isFocus;\r\n\r\n //onFocus\r\n if (isFocus) {\r\n if (this.hasCharsLimitValidationError) //check if there was previous validation error\r\n this.showCharsLimitMsg = true;\r\n }\r\n else //onFocusOut\r\n this.showCharsLimitMsg = false;\r\n }\r\n\r\n //External Method\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(this.TextAreaFormControl, this.validationRules, this.options)\r\n }\r\n //External Method\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(this.TextAreaFormControl, this.validationRules, this.options)\r\n }\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(this.TextAreaFormControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(this.TextAreaFormControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.TextAreaFormControl)\r\n }\r\n}\r\n\r\n\r\n","import { Component, OnInit, Input, DoCheck, Optional, Output, EventEmitter } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, AbstractControl, ControlContainer, FormGroupDirective } from '@angular/forms';\r\nimport { InputType } from '../../Shared/Enums/InputType';\r\nimport { EnglishArabicDTO } from '../../Shared/Models/EnglishArabicDTO';\r\nimport { MultiLingualTextAreaOptions } from '../../Shared/Models/MultiLingualTextAreaOptions';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { LanguageMode } from '../../Shared/Enums/LanguageMode';\r\nimport { ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\nimport { Observable } from 'rxjs';\r\nimport { ControlLayout } from '../../Shared/Enums/ControlLayout';\r\n\r\n\r\n@Component({\r\n selector: 'BBSF-MultiLingualTextArea',\r\n templateUrl: './MultiLingualTextArea.component.html'\r\n})\r\nexport class MultiLingualTextAreaComponent implements OnInit {\r\n\r\n static controlContainerstatic = null;\r\n IsShowAsteriskInArabic: boolean;\r\n IsShowAsteriskInEnglish: boolean;\r\n constructor(public MultiLingualTextAreaFormControlHost: FormGroupDirective, @Optional() private controlContainer: ControlContainer,\r\n private controlUtility: ControlUtility, private UtilityService: UtilityService, private controlValidationService: ControlValidationService,\r\n private globalSettings: GlobalSettings\r\n ) {\r\n MultiLingualTextAreaComponent.controlContainerstatic = this.controlContainer;\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: MultiLingualTextAreaOptions;\r\n @Output() OnChange = new EventEmitter();\r\n\r\n ArabicTextAreaFormControl: AbstractControl;\r\n EnglishTextAreaFormControl: AbstractControl;\r\n MultiTextAreaFormControl: AbstractControl;\r\n MultiLanguageTextAreagroup: FormGroup;\r\n ArabicWordCount: number = 0;\r\n ArabicWordCountArray: number = 0;\r\n EnglishWordCount: number = 0;\r\n EnglishWordCountArray: number = 0;\r\n CurrentLanguage: string = \"\";\r\n ShowArabicTextArea: boolean\r\n ShowEngishTextArea: boolean\r\n ArabicValidationRules = [];\r\n ArabicValidationRulesasync = [];\r\n EnglishValidationRules = [];\r\n EnglishValidationRulesasync = [];\r\n validationRules = [];\r\n validationRulesasync = [];\r\n IsShowArabicWordCount: boolean = false;\r\n IsShowEnglishWordCount: boolean = false;\r\n markAllAsTouched: boolean = false;\r\n\r\n\r\n ArabicLetterOnly: string = \"\"\r\n EnglishLetterOnly: string = \"\"\r\n\r\n //For Show warning message of max length limit\r\n minCharsLimit: number = -1; //To disable chars limit feature by default\r\n englishCurrentCharsCount: number = 0;\r\n arabicCurrentCharsCount: number = 0;\r\n showEnglishCharsLimitMsg: boolean = false;\r\n showArabicCharsLimitMsg: boolean = false;\r\n hasEnglishCharsLimitValidationError: boolean = false;\r\n hasArabicCharsLimitValidationError: boolean = false;\r\n englishCharsLimitMsgClass: string;\r\n arabicCharsLimitMsgClass: string;\r\n englishMaxLimitWarningMsg: string = \"\";\r\n arabicMaxLimitWarningMsg: string = \"\";\r\n\r\n getCustomErrorsMassages() {\r\n this.ArabicLetterOnly = this.UtilityService.getResourceValue(\"ArabicIsRequiredAndOnly50CharactersEnglish\");\r\n this.EnglishLetterOnly = this.UtilityService.getResourceValue(\"EnglishLetterOnly\");\r\n\r\n\r\n }\r\n\r\n async ngOnInit() {\r\n this.controlValidationService.isCreatedBefor = false\r\n this.CurrentLanguage = await this.UtilityService.getCurrentLanguage();\r\n // UtilityService.Translator.onLangChange.subscribe((event: LangChangeEvent) => {\r\n // this.CurrentLanguage = event.lang\r\n // this.showInputUsingLanguageMode();\r\n\r\n // });\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n if (!this.options.LanguageMode)\r\n this.options.LanguageMode = this.globalSettings.LanguageMode;\r\n if (!this.options.MultiControlPlacementType)\r\n this.options.MultiControlPlacementType = this.globalSettings.MultiControlPlacementType;\r\n if (!this.options.MaxLength)\r\n this.options.MaxLength = this.globalSettings.MaxLengthTextArea;\r\n\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\") {\r\n this.options.ArabicLabelValue = this.UtilityService.getResourceValue(this.options.LabelKey) + \" \" + this.UtilityService.getResourceValue(\"InArabic\");\r\n this.options.EnglishLabelValue = this.UtilityService.getResourceValue(this.options.LabelKey) + \" \" + this.UtilityService.getResourceValue(\"InEnglish\");\r\n }\r\n else {\r\n if (this.options.ArabicLabelKey != null && this.options.ArabicLabelKey != \"\")\r\n this.options.ArabicLabelValue = this.UtilityService.getResourceValue(this.options.ArabicLabelKey);\r\n\r\n if (this.options.EnglishLabelKey != null && this.options.EnglishLabelKey != \"\")\r\n this.options.EnglishLabelValue = this.UtilityService.getResourceValue(this.options.EnglishLabelKey);\r\n }\r\n\r\n this.MultiLanguageTextAreagroup = new FormGroup({});\r\n this.MultiLanguageTextAreagroup.addControl(\"Arabic\", new FormControl(''));\r\n this.MultiLanguageTextAreagroup.addControl(\"English\", new FormControl(''));\r\n this.ArabicTextAreaFormControl = this.MultiLanguageTextAreagroup.controls[\"Arabic\"]; // new FormControl('',validationRules);\r\n this.EnglishTextAreaFormControl = this.MultiLanguageTextAreagroup.controls[\"English\"]; // new FormControl('',validationRules);\r\n this.group.addControl(this.options.Name, new FormGroup(this.MultiLanguageTextAreagroup.controls));\r\n this.getCustomErrorsMassages()\r\n\r\n switch (this.options.Type) {\r\n case InputType.Email:\r\n this.EnglishValidationRules.push(Validators.compose([\r\n this.controlUtility.patternValidator(/^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}$/, { EmailValidationKey: \"\" }),\r\n\r\n ]));\r\n this.ArabicValidationRules.push(Validators.compose([\r\n this.controlUtility.patternValidator(/^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}$/, { EmailValidationKey: \"\" }),\r\n\r\n ]));\r\n break;\r\n\r\n case InputType.Number:\r\n this.EnglishValidationRules.push(Validators.pattern('^[0-9]+(\\.?[0-9]+)?$'));\r\n this.ArabicValidationRules.push(Validators.pattern('^[0-9]+(\\.?[0-9]+)?$'));\r\n break;\r\n }\r\n\r\n\r\n\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.EnglishValidationRules.push(Validation.functionBody);\r\n this.ArabicValidationRules.push(Validation.functionBody);\r\n }\r\n\r\n }\r\n\r\n if (this.options.MinLength > 0) {\r\n this.ArabicValidationRules.push(Validators.minLength(this.options.MinLength));\r\n this.EnglishValidationRules.push(Validators.minLength(this.options.MinLength));\r\n }\r\n if (this.options.MaxLength > 0) {\r\n this.EnglishValidationRules.push(Validators.maxLength(this.options.MaxLength));\r\n this.ArabicValidationRules.push(Validators.maxLength(this.options.MaxLength));\r\n\r\n if (!this.options.MaxLengthWarningLimit)\r\n this.options.MaxLengthWarningLimit = this.globalSettings.MaxLengthWarningLimit;\r\n\r\n this.minCharsLimit = this.options.MaxLength - this.options.MaxLengthWarningLimit;\r\n }\r\n\r\n this.showInputUsingLanguageMode();\r\n\r\n this.ArabicValidationRules.push(Validators.compose([\r\n this.controlUtility.arabicValidator({ ArabicIsRequiredAndOnly50CharactersEnglish: this.ArabicLetterOnly }),\r\n\r\n ]));\r\n this.EnglishValidationRules.push(Validators.compose([\r\n this.controlUtility.patternValidator(/^[~`!@#$%^&*()‘’“”_+=[\\]\\\\{}|;':\",.\\/<>?a-zA-Z0-9- \\n]*$/, { EnglishLetterOnly: this.EnglishLetterOnly }),\r\n\r\n ]));\r\n\r\n this.ArabicTextAreaFormControl.setValidators(this.ArabicValidationRules);\r\n this.ArabicTextAreaFormControl.setAsyncValidators(this.ArabicValidationRulesasync);\r\n this.EnglishTextAreaFormControl.setValidators(this.EnglishValidationRules);\r\n this.EnglishTextAreaFormControl.setAsyncValidators(this.EnglishValidationRulesasync);\r\n\r\n\r\n if (this.options.IsDisabled) {\r\n this.EnglishTextAreaFormControl.disable();\r\n this.ArabicTextAreaFormControl.disable();\r\n }\r\n this.ArabicTextAreaFormControl.setValue(this.options.Value.Arabic)\r\n this.EnglishTextAreaFormControl.setValue(this.options.Value.English)\r\n\r\n this.MultiLingualTextAreaFormControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n })\r\n\r\n if (this.options.IsReadonly && !this.options.Value) {\r\n this.options.Value.Arabic = this.UtilityService.getResourceValue('NA');\r\n this.options.Value.English = this.UtilityService.getResourceValue('NA');\r\n }\r\n\r\n }\r\n\r\n\r\n onTextChange() {\r\n let arabicValue = \"\";\r\n let englishValue = \"\";\r\n if (this.EnglishTextAreaFormControl.value == \"\") {\r\n this.EnglishWordCountArray = 0;\r\n this.EnglishWordCount = 0;\r\n }\r\n else {\r\n if (this.EnglishTextAreaFormControl.value != null || this.EnglishTextAreaFormControl.value != undefined) {\r\n this.EnglishWordCountArray = this.EnglishTextAreaFormControl.value.split(\" \").length;\r\n if (this.EnglishWordCountArray > 0) {\r\n if (this.EnglishWordCountArray > this.options.MaxWordCount) {\r\n this.EnglishWordCount = this.options.MaxWordCount;\r\n this.MultiLanguageTextAreagroup.controls[\"English\"].setErrors({ MaxWordCountValidationKey: this.options.MaxWordCount });\r\n this.MultiLanguageTextAreagroup.controls[\"English\"].markAsTouched();\r\n this.MultiLanguageTextAreagroup.controls[\"English\"].invalid;\r\n }\r\n else {\r\n this.EnglishWordCount = this.EnglishWordCountArray;\r\n }\r\n englishValue = this.EnglishTextAreaFormControl.value;\r\n\r\n }\r\n }\r\n\r\n //Check for maxlength limit count\r\n //MaxLength should be gretaer than or equals chars limit so that minCharsLimit would be >= 0\r\n if (this.options.MaxLength && this.minCharsLimit >= 0) {\r\n this.englishCurrentCharsCount = this.EnglishTextAreaFormControl.value.length;\r\n if (this.englishCurrentCharsCount > this.minCharsLimit) {\r\n this.showEnglishCharsLimitMsg = true;\r\n this.hasEnglishCharsLimitValidationError = true;\r\n if (this.englishCurrentCharsCount == this.options.MaxLength)\r\n this.englishCharsLimitMsgClass = \"danger\";\r\n else\r\n this.englishCharsLimitMsgClass = \"warning\";\r\n }\r\n else {\r\n this.showEnglishCharsLimitMsg = false;\r\n this.hasEnglishCharsLimitValidationError = false;\r\n }\r\n var max: number = this.options.MaxLength;\r\n var current: number = this.englishCurrentCharsCount;\r\n\r\n var resource = this.UtilityService.getResourceValue(\"MaxLengthLimitWarning\");\r\n this.englishMaxLimitWarningMsg = eval('`' + resource + '`');\r\n }\r\n }\r\n if (this.ArabicTextAreaFormControl.value == \"\") {\r\n this.ArabicWordCountArray = 0;\r\n this.ArabicWordCount = 0;\r\n }\r\n else {\r\n if (this.ArabicTextAreaFormControl.value != null || this.ArabicTextAreaFormControl.value != undefined) {\r\n this.ArabicWordCountArray = this.ArabicTextAreaFormControl.value.split(\" \").length;\r\n if (this.ArabicWordCountArray > 0) {\r\n if (this.ArabicWordCountArray > this.options.MaxWordCount) {\r\n this.ArabicWordCount = this.options.MaxWordCount;\r\n this.MultiLanguageTextAreagroup.controls[\"Arabic\"].setErrors({ MaxWordCountValidationKey: this.options.MaxWordCount });\r\n this.MultiLanguageTextAreagroup.controls[\"Arabic\"].markAsTouched();\r\n this.MultiLanguageTextAreagroup.controls[\"Arabic\"].invalid;\r\n }\r\n else {\r\n this.ArabicWordCount = this.ArabicWordCountArray;\r\n }\r\n arabicValue = this.ArabicTextAreaFormControl.value;\r\n }\r\n }\r\n\r\n //Check for maxlength limit count\r\n //MaxLength should be gretaer than or equals chars limit so that minCharsLimit would be >= 0\r\n if (this.options.MaxLength && this.minCharsLimit >= 0) {\r\n this.arabicCurrentCharsCount = this.ArabicTextAreaFormControl.value.length;\r\n if (this.arabicCurrentCharsCount > this.minCharsLimit) {\r\n this.showArabicCharsLimitMsg = true;\r\n this.hasArabicCharsLimitValidationError = true;\r\n if (this.arabicCurrentCharsCount == this.options.MaxLength)\r\n this.arabicCharsLimitMsgClass = \"danger\";\r\n else\r\n this.arabicCharsLimitMsgClass = \"warning\";\r\n }\r\n else {\r\n this.showArabicCharsLimitMsg = false;\r\n this.hasArabicCharsLimitValidationError = false;\r\n }\r\n var max: number = this.options.MaxLength;\r\n var current: number = this.arabicCurrentCharsCount;\r\n\r\n var resource = this.UtilityService.getResourceValue(\"MaxLengthLimitWarning\");\r\n this.arabicMaxLimitWarningMsg = eval('`' + resource + '`');\r\n }\r\n }\r\n let mulitLangModel = new EnglishArabicDTO();\r\n mulitLangModel.Arabic = arabicValue;\r\n mulitLangModel.English = englishValue;\r\n this.OnChange.emit(mulitLangModel)\r\n this.group.get(this.options.Name).setValue(mulitLangModel);\r\n //Use this line to enable two way binding.\r\n this.options.Value = mulitLangModel;\r\n\r\n }\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n\r\n getInputType(type: number) {\r\n return InputType[type]\r\n }\r\n\r\n trimControlValue(type: string) {\r\n const whitespace: string = ' ';\r\n if (type == \"En\") {\r\n let originalValue = this.EnglishTextAreaFormControl.value;\r\n if (this.options.PatchFunction && this.options.PatchPath && this.EnglishTextAreaFormControl.valid) {\r\n this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath)\r\n }\r\n if (this.EnglishTextAreaFormControl.value.startsWith(whitespace) || this.EnglishTextAreaFormControl.value.endsWith(whitespace)) {\r\n this.EnglishTextAreaFormControl.patchValue(originalValue);\r\n }\r\n }\r\n if (type == \"Ar\") {\r\n let originalValue = this.ArabicTextAreaFormControl.value;\r\n if (this.options.PatchFunction && this.options.PatchPath && this.ArabicTextAreaFormControl.valid) {\r\n this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath)\r\n }\r\n if (this.ArabicTextAreaFormControl.value.startsWith(whitespace) || this.ArabicTextAreaFormControl.value.endsWith(whitespace)) {\r\n this.ArabicTextAreaFormControl.patchValue(originalValue);\r\n }\r\n }\r\n\r\n }\r\n\r\n copyInputMessage(inputElement) {\r\n this.controlUtility.CopyInputMessage(inputElement)\r\n }\r\n\r\n\r\n showInputUsingLanguageMode() {\r\n\r\n this.ArabicValidationRules = this.ArabicValidationRules.filter(item => item !== Validators.required);\r\n this.EnglishValidationRules = this.EnglishValidationRules.filter(item => item !== Validators.required);\r\n\r\n this.ArabicTextAreaFormControl.clearValidators();\r\n this.EnglishTextAreaFormControl.clearValidators();\r\n\r\n this.ArabicTextAreaFormControl.updateValueAndValidity();\r\n this.EnglishTextAreaFormControl.updateValueAndValidity();\r\n\r\n switch (this.options.LanguageMode) {\r\n case LanguageMode.Both_Languages_are_visible:\r\n this.ShowArabicTextArea = true;\r\n this.ShowEngishTextArea = true;\r\n if (this.options.IsRequired == true) {\r\n this.EnglishValidationRules.push(Validators.required);\r\n this.ArabicValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInArabic = true;\r\n this.IsShowAsteriskInEnglish = true;\r\n }\r\n break;\r\n case LanguageMode.Arabic_Language_only_is_visible:\r\n this.ShowArabicTextArea = true;\r\n this.options.MultiControlPlacementType = ControlLayout.Vertical;\r\n\r\n break;\r\n case LanguageMode.English_Language_only_is_visible:\r\n this.ShowEngishTextArea = true;\r\n this.options.MultiControlPlacementType = ControlLayout.Vertical;\r\n\r\n break;\r\n case LanguageMode.Both_Languages_are_visible_but_only_current_language_is_required:\r\n this.ShowArabicTextArea = true;\r\n this.ShowEngishTextArea = true;\r\n this.options.MultiControlPlacementType = this.globalSettings.MultiControlPlacementType\r\n\r\n if (this.CurrentLanguage == 'ar') {\r\n if (this.options.IsRequired == true) {\r\n this.ArabicValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInArabic = true;\r\n\r\n }\r\n }\r\n if (this.CurrentLanguage == 'en') {\r\n if (this.options.IsRequired == true) {\r\n this.EnglishValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInEnglish = true;\r\n\r\n }\r\n }\r\n break;\r\n case LanguageMode.Both_Languages_but_only_Arabic_is_required:\r\n this.ShowArabicTextArea = true;\r\n this.ShowEngishTextArea = true;\r\n this.options.MultiControlPlacementType = this.globalSettings.MultiControlPlacementType\r\n\r\n if (this.options.IsRequired == true) {\r\n this.ArabicValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInArabic = true;\r\n\r\n }\r\n break;\r\n case LanguageMode.Both_Languages_but_only_English_is_required:\r\n this.ShowArabicTextArea = true;\r\n this.ShowEngishTextArea = true;\r\n this.options.MultiControlPlacementType = this.globalSettings.MultiControlPlacementType\r\n\r\n if (this.options.IsRequired == true) {\r\n this.EnglishValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInEnglish = true;\r\n\r\n }\r\n break;\r\n case LanguageMode.Current_Language_only_is_visible_and_required:\r\n this.options.MultiControlPlacementType = ControlLayout.Vertical;\r\n if (this.CurrentLanguage == 'ar') {\r\n this.ShowArabicTextArea = true;\r\n this.ShowEngishTextArea = false;\r\n if (this.options.IsRequired == true) {\r\n this.ArabicValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInArabic = true;\r\n\r\n }\r\n }\r\n if (this.CurrentLanguage == 'en') {\r\n this.ShowArabicTextArea = false;\r\n this.ShowEngishTextArea = true;\r\n if (this.options.IsRequired == true) {\r\n this.EnglishValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInEnglish = true;\r\n\r\n }\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n this.ArabicTextAreaFormControl.setValidators(this.ArabicValidationRules);\r\n this.EnglishTextAreaFormControl.setValidators(this.EnglishValidationRules);\r\n this.ArabicTextAreaFormControl.updateValueAndValidity();\r\n this.EnglishTextAreaFormControl.updateValueAndValidity();\r\n }\r\n\r\n\r\n onArabicFocus(isFocus: boolean) {\r\n this.IsShowArabicWordCount = isFocus\r\n\r\n //onFocus\r\n if (isFocus) {\r\n if (this.hasArabicCharsLimitValidationError) //check if there was previous validation error\r\n this.showArabicCharsLimitMsg = true;\r\n }\r\n else //onFocusOut\r\n this.showArabicCharsLimitMsg = false;\r\n }\r\n\r\n onEnglishFocus(isFocus: boolean) {\r\n this.IsShowEnglishWordCount = isFocus\r\n\r\n //onFocus\r\n if (isFocus) {\r\n if (this.hasEnglishCharsLimitValidationError) //check if there was previous validation error\r\n this.showEnglishCharsLimitMsg = true;\r\n }\r\n else //onFocusOut\r\n this.showEnglishCharsLimitMsg = false;\r\n }\r\n\r\n //External Method\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(this.EnglishTextAreaFormControl, this.EnglishValidationRules, this.options)\r\n this.controlUtility.RemoveRequiredValidation(this.ArabicTextAreaFormControl, this.ArabicValidationRules, this.options)\r\n }\r\n //External Method\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(this.EnglishTextAreaFormControl, this.EnglishValidationRules, this.options)\r\n this.controlUtility.AddRequiredValidation(this.ArabicTextAreaFormControl, this.ArabicValidationRules, this.options)\r\n }\r\n\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(this.EnglishTextAreaFormControl, this.EnglishValidationRules, CustomValidation)\r\n this.controlUtility.RemoveCustomValidation(this.ArabicTextAreaFormControl, this.ArabicValidationRules, CustomValidation)\r\n }\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(this.EnglishTextAreaFormControl, this.EnglishValidationRules, CustomValidation)\r\n this.controlUtility.AddCustomValidation(this.ArabicTextAreaFormControl, this.ArabicValidationRules, CustomValidation)\r\n }\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.EnglishTextAreaFormControl)\r\n this.controlUtility.IsValid(this.ArabicTextAreaFormControl)\r\n }\r\n\r\n}\r\n\r\n","import { Component, OnInit, Input, DoCheck, Optional, Output, EventEmitter } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, AbstractControl, ControlContainer, FormGroupDirective } from '@angular/forms';\r\nimport { ErrorMassageValidation } from '../../Shared/services/validationErrorMassage.service';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { CheckBoxOptions } from '../../Shared/Models/CheckBoxOptions';\r\nimport { BBSFTranslateService, ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';\r\n\r\n@Component({\r\n // tslint:disable-next-line: component-selector\r\n selector: 'BBSF-CheckBox',\r\n templateUrl: './CheckBox.component.html'\r\n})\r\nexport class CheckBoxComponent implements OnInit {\r\n\r\n\r\n static controlContainerstatic = null;\r\n // tslint:disable-next-line: max-line-length\r\n constructor(private controlUtility: ControlUtility, @Optional() private controlContainer: ControlContainer, public CheckBoxControlHost: FormGroupDirective,private UtilityService:UtilityService,private translate: BBSFTranslateService,private controlValidationService:ControlValidationService) {\r\n CheckBoxComponent.controlContainerstatic = this.controlContainer;\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: CheckBoxOptions;\r\n @Output() OnChange = new EventEmitter();\r\n\r\n CheckBoxFormControl: AbstractControl;\r\n markAllAsTouched: boolean = false;\r\n validationRules = [];\r\n validationRulesasync = [];\r\n textDir;\r\n\r\n ngOnInit() {\r\n if(this.options.ForceDirection)\r\n this.textDir=this.options.ForceDirection==2?'rtl':'ltr';\r\n else\r\n this.textDir=localStorage.getItem('language')=='ar'?'rtl':'ltr';\r\n this.controlValidationService.isCreatedBefor = false\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.CheckBoxFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n this.validationRules = [];\r\n this.validationRulesasync = [];\r\n this.CheckBoxFormControl.setValue(this.options.Value);\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\")\r\n this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);\r\n\r\n\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n }\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.validationRules.push(Validation.functionBody);\r\n }\r\n\r\n }\r\n\r\n\r\n this.CheckBoxFormControl.setValidators(this.validationRules);\r\n this.CheckBoxFormControl.setAsyncValidators(this.validationRulesasync);\r\n if (this.options.IsDisabled) {\r\n this.CheckBoxFormControl.disable();\r\n }\r\n\r\n this.CheckBoxControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n })\r\n\r\n\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n this.controlUtility.setAttributeForControl(this.options)\r\n }\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n\r\n onValueChanged() {\r\n this.OnChange.emit(this.CheckBoxFormControl.value)\r\n let originalValue =this.CheckBoxFormControl.value;\r\n if (this.options.PatchFunction && this.options.PatchPath && this.group.get(this.options.Name).valid) {\r\n this.controlUtility.patchControlValue(originalValue,this.options.PatchFunction ,this.options.PatchPath)\r\n }\r\n }\r\n\r\n //External Method\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(this.CheckBoxFormControl, this.validationRules, this.options)\r\n }\r\n //External Method\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(this.CheckBoxFormControl, this.validationRules, this.options)\r\n }\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(this.CheckBoxFormControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(this.CheckBoxFormControl, this.validationRules, CustomValidation)\r\n }\r\n\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.CheckBoxFormControl)\r\n }\r\n\r\n}\r\n\r\n","import { Component, OnInit, Input, DoCheck, Optional, HostListener, Output, EventEmitter } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, AbstractControl, FormGroupDirective, ControlContainer } from '@angular/forms';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { DropdownOptions } from '../../Shared/Models/DropdownOptions';\r\nimport { DropdownListItem } from '../../Shared/Models/DropdownListItem';\r\nimport { OnPagingFiltersChangeService } from '../../Shared/services/OnPagingFiltersChange.service';\r\nimport { ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n // tslint:disable-next-line: component-selector\r\n selector: 'BBSF-DropdownList',\r\n templateUrl: './DropdownList.component.html'\r\n})\r\nexport class DropdownListComponent implements OnInit {\r\n static controlContainerstatic = null;\r\n // tslint:disable-next-line: max-line-length\r\n constructor(private onChangeService: OnPagingFiltersChangeService, private controlUtility: ControlUtility, @Optional() private controlContainer: ControlContainer, public DropdownListControlHost: FormGroupDirective,\r\n public UtilityService: UtilityService, private controlValidationService: ControlValidationService,\r\n private globalSettings: GlobalSettings) {\r\n DropdownListComponent.controlContainerstatic = this.controlContainer;\r\n //console.log(environment[\"BBSF_AdminUrl\"]);\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: DropdownOptions;\r\n DropdownListFormControl: AbstractControl;\r\n dropdownSettings = {};\r\n SelectedItems: DropdownListItem[]\r\n SelectedList: any[] = []\r\n @Output() OnChange = new EventEmitter();\r\n @Output() onClear = new EventEmitter();\r\n\r\n markAllAsTouched: boolean = false;\r\n\r\n controlChanged: boolean = false;\r\n validationRules = [];\r\n validationRulesasync = [];\r\n textDir;\r\n ngOnInit() {\r\n if (this.options.ForceDirection)\r\n this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';\r\n else\r\n this.textDir = localStorage.getItem('language') == 'ar' ? 'rtl' : 'ltr';\r\n this.controlValidationService.isCreatedBefor = false\r\n this.SelectedList = this.options.SelectedItems\r\n this.dropdownSettings = {\r\n singleSelection: this.options.SingleSelection,\r\n text: \"Select\",\r\n selectAllText: 'Select All',\r\n unSelectAllText: 'UnSelect All',\r\n enableSearchFilter: this.options.AllowSearchFilter,\r\n classes: this.options.Classes,\r\n disabled: this.options.IsDisabled,\r\n showCheckbox: this.options.ShowCheckbox,\r\n enableCheckAll: this.options.EnableCheckAll,\r\n itemsShowLimit: this.options.ItemsShowLimit,\r\n allowSearchFilter: this.options.AllowSearchFilter,\r\n showSelectedItemsAtTop: true,\r\n limitSelection: this.options.LimitSelection,\r\n searchPlaceholderText: this.options.Placeholder,\r\n labelKey: \"value\",\r\n primaryKey: \"key\"\r\n };\r\n\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.DropdownListFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n\r\n\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.validationRules.push(Validation.functionBody);\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n\r\n }\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\")\r\n this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);\r\n\r\n this.DropdownListFormControl.setValidators(this.validationRules);\r\n this.DropdownListFormControl.setAsyncValidators(this.validationRulesasync);\r\n if (this.options.IsDisabled) {\r\n this.DropdownListFormControl.disable();\r\n }\r\n\r\n this.DropdownListControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n })\r\n }\r\n\r\n\r\n\r\n ngAfterViewInit(): void {\r\n this.controlUtility.setAttributeForControl(this.options)\r\n }\r\n\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n\r\n getSelectedItemValue() {\r\n if (this.options.SelectedItems) {\r\n if (this.options.SingleSelection)\r\n return this.options.DataSource.filter(item => item[this.options.ItemTempletkey] == this.options.SelectedItems)[0][this.options.ItemTempletvalue]\r\n else\r\n return this.options.DataSource.filter(item => this.options.SelectedItems.includes(item[this.options.ItemTempletkey])).map(item => item[this.options.ItemTempletvalue])\r\n } else\r\n return this.UtilityService.getResourceValue('NA');\r\n }\r\n\r\n onItemSelect() {\r\n this.onChangeService.ChangeValue(this.options.Name)\r\n let originalValue = this.options.SelectedItems;\r\n if (this.options.PatchFunction && this.options.PatchPath && this.group.get(this.options.Name).valid) {\r\n this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath)\r\n }\r\n this.OnChange.emit(originalValue)\r\n //console.log(this.DropdownListFormControl.value)\r\n }\r\n Clear() {\r\n //console.log(\"Clear\")\r\n this.DropdownListFormControl.setValue(this.SelectedItems);\r\n this.onChangeService.ChangeValue(this.options.Name)\r\n this.OnChange.emit()\r\n }\r\n onSelectAll(items) {\r\n this.SelectedItems = items;\r\n this.DropdownListFormControl.setValue(this.SelectedItems);\r\n }\r\n onDeselect(items) {\r\n this.DropdownListFormControl.setValue(this.SelectedItems);\r\n if ((this.SelectedItems.length == 0) && this.options.IsRequired == true) {\r\n this.DropdownListFormControl.markAsTouched();\r\n this.DropdownListFormControl.invalid;\r\n\r\n }\r\n\r\n }\r\n onDeselectAll(items) {\r\n this.DropdownListFormControl.setValue(this.SelectedItems);\r\n if ((this.SelectedItems.length == 0) && this.options.IsRequired == true) {\r\n this.DropdownListFormControl.markAsTouched();\r\n this.DropdownListFormControl.invalid;\r\n\r\n }\r\n }\r\n\r\n onDropDownClose() {\r\n if ((this.SelectedItems == undefined || this.SelectedItems.length == 0) && this.options.IsRequired == true) {\r\n this.DropdownListFormControl.markAsTouched();\r\n this.DropdownListFormControl.invalid;\r\n\r\n }\r\n }\r\n\r\n //External Method\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(this.DropdownListFormControl, this.validationRules, this.options)\r\n }\r\n\r\n //External Method\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(this.DropdownListFormControl, this.validationRules, this.options)\r\n }\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(this.DropdownListFormControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(this.DropdownListFormControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.DropdownListFormControl)\r\n }\r\n\r\n //Update items (data source) of drop down\r\n UpdateDataSource = (dataSource: DropdownListItem[]) => {\r\n this.options.DataSource = dataSource;\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","import { Component, EventEmitter, Input, OnInit, Optional, Output } from '@angular/core';\r\nimport { AbstractControl, ControlContainer, FormControl, FormGroup, FormGroupDirective, Validators } from '@angular/forms';\r\nimport { ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { CountryISO, SearchCountryField } from 'ngx-intl-tel-input';\r\nimport { Country } from '../../Shared/Enums/Countries';\r\nimport { PhoneOptions } from '../../Shared/Models/PhoneOptions';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\n\r\n@Component({\r\n selector: 'BBSF-Phone',\r\n templateUrl: './Phone.component.html'\r\n})\r\nexport class PhoneComponent implements OnInit {\r\n\r\n\r\n static controlContainerstatic = null;\r\n // tslint:disable-next-line: max-line-length\r\n constructor(private controlUtility: ControlUtility, @Optional() private controlContainer: ControlContainer,\r\n public PhoneControlHost: FormGroupDirective, private UtilityService: UtilityService,\r\n private controlValidationService: ControlValidationService, private globalSettings: GlobalSettings) {\r\n PhoneComponent.controlContainerstatic = this.controlContainer;\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: PhoneOptions;\r\n @Output() OnChange = new EventEmitter();\r\n PhoneFormControl: AbstractControl;\r\n SearchCountryField = SearchCountryField;\r\n // TooltipLabel = TooltipLabel;\r\n markAllAsTouched: boolean = false\r\n validationRules = [];\r\n validationRulesasync = [];\r\n separateDialCode = false;\r\n textDir;\r\n\r\n ngOnInit() {\r\n\r\n if (this.options.IsReadonly && !this.options.Value)\r\n this.options.Value = this.UtilityService.getResourceValue('NA');\r\n\r\n if (this.options.ForceDirection)\r\n this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';\r\n else\r\n this.textDir = localStorage.getItem('language') == 'ar' ? 'rtl' : 'ltr';\r\n\r\n this.controlValidationService.isCreatedBefor = false\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.PhoneFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n }\r\n this.PhoneFormControl.setValue(this.options.Value);\r\n\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.validationRules.push(Validation.functionBody);\r\n }\r\n\r\n }\r\n\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\")\r\n this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);\r\n\r\n this.PhoneFormControl.setValidators(this.validationRules);\r\n this.PhoneFormControl.setAsyncValidators(this.validationRulesasync);\r\n if (this.options.IsDisabled) {\r\n this.PhoneFormControl.disable();\r\n }\r\n\r\n this.PhoneControlHost.ngSubmit.subscribe(() => {\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n })\r\n\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.controlUtility.setAttributeForControl(this.options)\r\n }\r\n\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n\r\n onValueChanged() {\r\n let Number = this.PhoneFormControl.value.internationalNumber as string;\r\n let originalValue = this.controlUtility.trimControlValue(Number);\r\n if (this.options.PatchFunction && this.options.PatchPath && this.group.get(this.options.Name).valid) {\r\n this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath)\r\n }\r\n this.OnChange.emit(originalValue);\r\n }\r\n getSelectedCountry(selectedCountry: Country) {\r\n let value = selectedCountry as string;\r\n return value as CountryISO\r\n }\r\n\r\n\r\n //External Method\r\n\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(this.PhoneFormControl, this.validationRules, this.options)\r\n }\r\n //External Method\r\n\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(this.PhoneFormControl, this.validationRules, this.options)\r\n }\r\n\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(this.PhoneFormControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(this.PhoneFormControl, this.validationRules, CustomValidation)\r\n }\r\n\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.PhoneFormControl)\r\n }\r\n}\r\n\r\n\r\n","import { Component, OnInit, Input, DoCheck, Optional, NgZone, Output, EventEmitter } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, AbstractControl, ControlContainer, FormGroupDirective } from '@angular/forms';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { HtmlEditorOptions } from '../../Shared/Models/HtmlEditorOptions';\r\nimport { AngularEditorConfig } from '@kolkov/angular-editor';\r\nimport { ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'BBSF-HtmlEditor',\r\n templateUrl: './HtmlEditor.component.html'\r\n})\r\nexport class HtmlEditorComponent implements OnInit {\r\n\r\n editorConfig: AngularEditorConfig\r\n static controlContainerstatic = null;\r\n constructor(private zone: NgZone, private controlUtility: ControlUtility, @Optional() private controlContainer: ControlContainer,\r\n public HtmlEditorControlHost: FormGroupDirective, private UtilityService: UtilityService,\r\n private controlValidationService: ControlValidationService, private globalSettings: GlobalSettings) {\r\n HtmlEditorComponent.controlContainerstatic = this.controlContainer;\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: HtmlEditorOptions;\r\n @Output() OnChange = new EventEmitter();\r\n HtmlEditorFormControl: AbstractControl;\r\n WordCount: number = 0;\r\n WordCountArray: number = 0;\r\n markAllAsTouched: boolean = false;\r\n Config: any\r\n miscList: any\r\n styleList: any\r\n fontsizeList: any\r\n paraList: any\r\n insertList: any\r\n validationRules = [];\r\n validationRulesasync = [];\r\n textDir;\r\n\r\n ngOnInit() {\r\n if(this.options.ForceDirection)\r\n this.textDir=this.options.ForceDirection==2?'rtl':'ltr';\r\n else\r\n this.textDir=localStorage.getItem('language')=='ar'?'rtl':'ltr';\r\n this.editorConfig = {\r\n editable: !this.options.IsDisabled,\r\n spellcheck: true,\r\n height: `${this.options.Height}rem`,\r\n minHeight: `${this.options.Height}rem`,\r\n maxHeight: 'auto',\r\n width: 'auto',\r\n minWidth: 'auto',\r\n translate: 'yes',\r\n enableToolbar: true,\r\n showToolbar: true,\r\n placeholder: this.options.Placeholder,\r\n defaultParagraphSeparator: '',\r\n defaultFontName: '',\r\n defaultFontSize: '',\r\n fonts: [\r\n {class: 'arial', name: 'Arial'},\r\n {class: 'times-new-roman', name: 'Times New Roman'},\r\n {class: 'calibri', name: 'Calibri'},\r\n {class: 'comic-sans-ms', name: 'Comic Sans MS'}\r\n ],\r\n customClasses: [\r\n {\r\n name: 'quote',\r\n class: 'quote',\r\n },\r\n {\r\n name: 'redText',\r\n class: 'redText'\r\n },\r\n {\r\n name: 'titleText',\r\n class: 'titleText',\r\n tag: 'h1',\r\n },\r\n ],\r\n uploadUrl: 'v1/image',\r\n uploadWithCredentials: false,\r\n sanitize: false,\r\n toolbarPosition: 'top',\r\n toolbarHiddenButtons: [\r\n [\r\n 'link',\r\n 'unlink',\r\n 'insertImage',\r\n 'insertVideo',\r\n 'insertHorizontalRule',\r\n ]\r\n ]\r\n };\r\n this.controlValidationService.isCreatedBefor = false\r\n // this.miscList = this.options.ToolsList_Misc != null ? this.options.ToolsList_Misc : ['codeview', 'undo', 'redo'];\r\n // this.styleList = this.options.ToolsList_Style != null ? this.options.ToolsList_Style : ['bold', 'italic', 'underline', 'clear']\r\n // this.fontsizeList = this.options.ToolsList_FontSize != null ? this.options.ToolsList_FontSize : ['fontname', 'fontsize', 'color']\r\n // this.paraList = this.options.ToolsList_Para != null ? this.options.ToolsList_Para : ['style', 'ul', 'ol', 'paragraph', 'height']\r\n // this.insertList = this.options.ToolsList_Insert != null ? this.options.ToolsList_Insert : ['table', 'picture', 'link', 'video', 'hr']\r\n\r\n // this.Config = {\r\n // callbacks: {\r\n // // onChange: (e) => {\r\n\r\n // // this.zone.run(() => {\r\n // // this.onTextChange();\r\n // // });\r\n // // },\r\n // // onKeyup: (e) => {\r\n // // this.zone.run(() => {\r\n // // ;\r\n // // this.onTextChange();\r\n // // });\r\n // // },\r\n // // onKeydown: (e) => {\r\n // // this.zone.run(() => {\r\n // // ;\r\n // // if (this.WordCountArray > this.options.MaxWordCount && e.keyCode != 8) {\r\n // // e.preventDefault();\r\n // // }\r\n\r\n // // });\r\n // // }\r\n // },\r\n // placeholder: this.options.Placeholder,\r\n // height: `${this.options.Height}px`,\r\n // toolbar: [\r\n // ['misc', this.miscList],\r\n // ['style', this.styleList],\r\n // ['fontsize', this.fontsizeList],\r\n // ['para', this.paraList],\r\n // ['insert', this.insertList]\r\n // ],\r\n // fontNames: ['Helvetica', 'Arial', 'Arial Black', 'Comic Sans MS', 'Courier New', 'Roboto', 'Times']\r\n\r\n // }\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.HtmlEditorFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n this.HtmlEditorFormControl.setValue(this.options.Value);\r\n\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.validationRules.push(Validation.functionBody);\r\n }\r\n\r\n }\r\n\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\")\r\n this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);\r\n\r\n\r\n\r\n if (this.options.MinLength > 0) {\r\n this.validationRules.push(Validators.minLength(this.options.MinLength));\r\n }\r\n if (this.options.MaxLength > 0) {\r\n this.validationRules.push(Validators.maxLength(this.options.MaxLength));\r\n }\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n }\r\n this.HtmlEditorFormControl.setValidators(this.validationRules);\r\n this.HtmlEditorFormControl.setAsyncValidators(this.validationRulesasync);\r\n if (this.options.IsDisabled) {\r\n this.HtmlEditorFormControl.disable();\r\n }\r\n\r\n this.HtmlEditorControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n })\r\n\r\n }\r\n\r\n\r\n ngAfterViewChecked(): void {\r\n if (this.options.AttributeList != null) {\r\n var element = document.getElementById(this.options.Name);\r\n for (let index = 0; index < this.options.AttributeList.length; index++) {\r\n element.setAttribute(this.options.AttributeList[index].Key, this.options.AttributeList[index].value);\r\n }\r\n\r\n let angularEditor = document.getElementsByClassName(\"angular-editor-toolbar ng-star-inserted\")[0]\r\n let dir =this.UtilityService.getCurrentLanguage()==\"en\"?\"ltr\":\"rtl\"\r\n angularEditor.setAttribute(\"dir\",dir);\r\n\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n onValueChanged() {\r\n this.HtmlEditorFormControl.setValue(this.HtmlEditorFormControl.value.trim());\r\n let originalValue = this.controlUtility.trimControlValue(this.HtmlEditorFormControl.value);\r\n if (this.options.PatchFunction && this.options.PatchPath && this.HtmlEditorFormControl.valid) {\r\n this.controlUtility.patchControlValue(originalValue,this.options.PatchFunction ,this.options.PatchPath)\r\n }\r\n //Use this line to enable two way binding.\r\n this.options.Value=originalValue;\r\n this.OnChange.emit(originalValue)\r\n }\r\n\r\n\r\n //External Method\r\n\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(this.HtmlEditorFormControl, this.validationRules, this.options)\r\n }\r\n //External Method\r\n\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(this.HtmlEditorFormControl, this.validationRules, this.options)\r\n }\r\n\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(this.HtmlEditorFormControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(this.HtmlEditorFormControl, this.validationRules, CustomValidation)\r\n }\r\n\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.HtmlEditorFormControl)\r\n }\r\n\r\n}\r\n\r\n\r\n","import { Component, OnInit, Input, DoCheck, Optional, Output, EventEmitter } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, AbstractControl, ControlContainer, FormGroupDirective } from '@angular/forms';\r\nimport { InputType } from '../../Shared/Enums/InputType';\r\nimport { EnglishArabicDTO } from '../../Shared/Models/EnglishArabicDTO';\r\nimport { MultiLingualHtmlEditorOptions } from '../../Shared/Models/MultiLingualHtmlEditorOptions';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { LanguageMode } from '../../Shared/Enums/LanguageMode';\r\nimport { AngularEditorConfig } from '@kolkov/angular-editor';\r\n\r\nimport { ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\n\r\n@Component({\r\n selector: 'BBSF-MultiLingualHtmlEditor',\r\n templateUrl: './MultiLingualHtmlEditor.component.html'\r\n})\r\nexport class MultiLingualHtmlEditorComponent implements OnInit {\r\n\r\n static controlContainerstatic = null;\r\n IsShowAsteriskInArabic: boolean;\r\n IsShowAsteriskInEnglish: boolean;\r\n constructor(public MultiLingualHtmlEditorFormControlHost: FormGroupDirective, @Optional() private controlContainer: ControlContainer,\r\n private controlUtility: ControlUtility, private UtilityService: UtilityService, private controlValidationService: ControlValidationService,\r\n private globalSettings: GlobalSettings\r\n ) {\r\n MultiLingualHtmlEditorComponent.controlContainerstatic = this.controlContainer;\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: MultiLingualHtmlEditorOptions;\r\n @Output() OnChange = new EventEmitter();\r\n\r\n\r\n ArabicHtmlEditorFormControl: AbstractControl;\r\n EnglishHtmlEditorFormControl: AbstractControl;\r\n MultiTextAreaFormControl: AbstractControl;\r\n MultilingualHtmlEditorgroup: FormGroup;\r\n ArabicConfig: any\r\n EnglishConfig: any\r\n editorEnglishConfig: AngularEditorConfig\r\n editorArabicConfig: AngularEditorConfig\r\n\r\n miscList: any\r\n styleList: any\r\n fontsizeList: any\r\n paraList: any\r\n insertList: any\r\n\r\n CurrentLanguage: string = \"\";;\r\n ShowArabicHtmlEditor: boolean\r\n ShowEnglishHtmlEditor: boolean\r\n ArabicValidationRules = [];\r\n ArabicValidationRulesasync = [];\r\n EnglishValidationRules = [];\r\n EnglishValidationRulesasync = [];\r\n markAllAsTouched: boolean = false;\r\n validationRules = [];\r\n validationRulesasync = [];\r\n\r\n ArabicLetterOnly: string = \"\"\r\n EnglishLetterOnly: string = \"\"\r\n\r\n englishValue = null\r\n arabicValue = null\r\n\r\n getCustomErrorsMassages() {\r\n this.ArabicLetterOnly = this.UtilityService.getResourceValue(\"ArabicLetterOnly\");\r\n this.EnglishLetterOnly = this.UtilityService.getResourceValue(\"EnglishLetterOnly\");\r\n }\r\n\r\n\r\n async ngOnInit() {\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n if (!this.options.LanguageMode)\r\n this.options.LanguageMode = this.globalSettings.LanguageMode;\r\n\r\n this.editorEnglishConfig = {\r\n editable: !this.options.IsDisabled,\r\n spellcheck: true,\r\n height: this.options.Height.toString(),\r\n minHeight: this.options.Height.toString(),\r\n maxHeight: 'auto',\r\n width: 'auto',\r\n minWidth: 'auto',\r\n translate: 'yes',\r\n enableToolbar: true,\r\n showToolbar: true,\r\n placeholder: this.options.EnglishPlaceholder,\r\n defaultParagraphSeparator: '',\r\n defaultFontName: '',\r\n defaultFontSize: '',\r\n fonts: [\r\n { class: 'arial', name: 'Arial' },\r\n { class: 'times-new-roman', name: 'Times New Roman' },\r\n { class: 'calibri', name: 'Calibri' },\r\n { class: 'comic-sans-ms', name: 'Comic Sans MS' }\r\n ],\r\n customClasses: [\r\n {\r\n name: 'quote',\r\n class: 'quote',\r\n },\r\n {\r\n name: 'redText',\r\n class: 'redText'\r\n },\r\n {\r\n name: 'titleText',\r\n class: 'titleText',\r\n tag: 'h1',\r\n },\r\n ],\r\n uploadUrl: 'v1/image',\r\n uploadWithCredentials: false,\r\n sanitize: false,\r\n toolbarPosition: 'top',\r\n toolbarHiddenButtons: [\r\n\r\n ]\r\n };\r\n\r\n\r\n this.editorArabicConfig = {\r\n editable: !this.options.IsDisabled,\r\n spellcheck: true,\r\n height: this.options.Height.toString(),\r\n minHeight: this.options.Height.toString(),\r\n maxHeight: 'auto',\r\n width: 'auto',\r\n minWidth: 'auto',\r\n translate: 'yes',\r\n enableToolbar: true,\r\n showToolbar: true,\r\n placeholder: this.options.ArabicPlaceholder,\r\n defaultParagraphSeparator: '',\r\n defaultFontName: '',\r\n defaultFontSize: '',\r\n fonts: [\r\n { class: 'arial', name: 'Arial' },\r\n { class: 'times-new-roman', name: 'Times New Roman' },\r\n { class: 'calibri', name: 'Calibri' },\r\n { class: 'comic-sans-ms', name: 'Comic Sans MS' }\r\n ],\r\n customClasses: [\r\n {\r\n name: 'quote',\r\n class: 'quote',\r\n },\r\n {\r\n name: 'redText',\r\n class: 'redText'\r\n },\r\n {\r\n name: 'titleText',\r\n class: 'titleText',\r\n tag: 'h1',\r\n },\r\n ],\r\n uploadUrl: 'v1/image',\r\n uploadWithCredentials: false,\r\n sanitize: false,\r\n toolbarPosition: 'top',\r\n toolbarHiddenButtons: [\r\n\r\n ]\r\n };\r\n\r\n this.controlValidationService.isCreatedBefor = false\r\n\r\n this.CurrentLanguage = await this.UtilityService.getCurrentLanguage();\r\n\r\n // UtilityService.Translator.onLangChange.subscribe((event: LangChangeEvent) => {\r\n // this.CurrentLanguage = event.lang\r\n // this.showInputUsingLanguageMode();\r\n\r\n // });\r\n // this.miscList = this.options.ToolsList_Misc != null ? this.options.ToolsList_Misc : ['codeview', 'undo', 'redo'];\r\n // this.styleList = this.options.ToolsList_Style != null ? this.options.ToolsList_Style : ['bold', 'italic', 'underline', 'clear']\r\n // this.fontsizeList = this.options.ToolsList_FontSize != null ? this.options.ToolsList_FontSize : ['fontname', 'fontsize', 'color']\r\n // this.paraList = this.options.ToolsList_Para != null ? this.options.ToolsList_Para : ['style', 'ul', 'ol', 'paragraph', 'height']\r\n // this.insertList = this.options.ToolsList_Insert != null ? this.options.ToolsList_Insert : ['table', 'picture', 'link', 'video', 'hr']\r\n\r\n // this.ArabicConfig = {\r\n // placeholder: this.options.ArabicPlaceholder,\r\n // height: `${this.options.Height}px`,\r\n // toolbar: [\r\n // ['misc', this.miscList],\r\n // ['style', this.styleList],\r\n // ['fontsize', this.fontsizeList],\r\n // ['para', this.paraList],\r\n // ['insert', this.insertList]\r\n // ],\r\n // fontNames: ['Helvetica', 'Arial', 'Arial Black', 'Comic Sans MS', 'Courier New', 'Roboto', 'Times']\r\n\r\n // }\r\n // this.EnglishConfig = {\r\n // placeholder: this.options.EnglishPlaceholder,\r\n // height: `${this.options.Height}px`,\r\n // toolbar: [\r\n // ['misc', this.miscList],\r\n // ['style', this.styleList],\r\n // ['fontsize', this.fontsizeList],\r\n // ['para', this.paraList],\r\n // ['insert', this.insertList]\r\n // ],\r\n // fontNames: ['Helvetica', 'Arial', 'Arial Black', 'Comic Sans MS', 'Courier New', 'Roboto', 'Times']\r\n\r\n // }\r\n this.MultilingualHtmlEditorgroup = new FormGroup({});;\r\n this.MultilingualHtmlEditorgroup.addControl(\"Arabic\", new FormControl(''));\r\n this.MultilingualHtmlEditorgroup.addControl(\"English\", new FormControl(''));\r\n this.ArabicHtmlEditorFormControl = this.MultilingualHtmlEditorgroup.controls[\"Arabic\"]; // new FormControl('',validationRules);\r\n this.EnglishHtmlEditorFormControl = this.MultilingualHtmlEditorgroup.controls[\"English\"]; // new FormControl('',validationRules);\r\n this.group.addControl(this.options.Name, new FormGroup(this.MultilingualHtmlEditorgroup.controls));\r\n this.getCustomErrorsMassages();\r\n switch (this.options.Type) {\r\n case InputType.Email:\r\n this.EnglishValidationRules.push(Validators.compose([\r\n this.controlUtility.patternValidator(/^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}$/, { EmailValidationKey: \"\" }),\r\n ]));\r\n this.ArabicValidationRules.push(Validators.compose([\r\n this.controlUtility.patternValidator(/^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}$/, { EmailValidationKey: \"\" }),\r\n ]));\r\n break;\r\n case InputType.Number:\r\n this.EnglishValidationRules.push(Validators.pattern('^[0-9]+(\\.?[0-9]+)?$'));\r\n this.ArabicValidationRules.push(Validators.pattern('^[0-9]+(\\.?[0-9]+)?$'));\r\n break;\r\n }\r\n\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.EnglishValidationRules.push(Validation.functionBody);\r\n this.ArabicValidationRules.push(Validation.functionBody);\r\n }\r\n\r\n }\r\n if (this.options.MinLength > 0) {\r\n this.ArabicValidationRules.push(Validators.minLength(this.options.MinLength));\r\n this.EnglishValidationRules.push(Validators.minLength(this.options.MinLength));\r\n }\r\n\r\n if (this.options.MaxLength > 0) {\r\n this.EnglishValidationRules.push(Validators.maxLength(this.options.MaxLength));\r\n this.ArabicValidationRules.push(Validators.maxLength(this.options.MaxLength));\r\n\r\n }\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\") {\r\n this.options.ArabicLabelValue = this.UtilityService.getResourceValue(this.options.LabelKey) + \" \" + this.UtilityService.getResourceValue(\"InArabic\");\r\n this.options.EnglishLabelValue = this.UtilityService.getResourceValue(this.options.LabelKey) + \" \" + this.UtilityService.getResourceValue(\"InEnglish\");\r\n }\r\n else {\r\n if (this.options.ArabicLabelKey != null && this.options.ArabicLabelKey != \"\")\r\n this.options.ArabicLabelValue = this.UtilityService.getResourceValue(this.options.ArabicLabelKey);\r\n\r\n if (this.options.EnglishLabelKey != null && this.options.EnglishLabelKey != \"\")\r\n this.options.EnglishLabelValue = this.UtilityService.getResourceValue(this.options.EnglishLabelKey);\r\n }\r\n this.showInputUsingLanguageMode();\r\n this.ArabicValidationRules.push(Validators.compose([\r\n this.controlUtility.patternValidator(/^[\\u0621-\\u064A\\u0660-\\u0669 ]+$/, { ArabicLetterOnly: this.ArabicLetterOnly }),\r\n\r\n ]));\r\n this.EnglishValidationRules.push(Validators.compose([\r\n this.controlUtility.patternValidator(/^[~`!@#$%^&*()‘’“”_+=[\\]\\\\{}|;':\",.\\/<>?a-zA-Z0-9- ]*$/, { EnglishLetterOnly: this.EnglishLetterOnly }),\r\n\r\n ]));\r\n // this.ArabicHtmlEditorFormControl.setValidators(this.ArabicValidationRules);\r\n // this.ArabicHtmlEditorFormControl.setAsyncValidators(this.ArabicValidationRulesasync);\r\n\r\n // this.EnglishHtmlEditorFormControl.setValidators(this.EnglishValidationRules);\r\n // this.EnglishHtmlEditorFormControl.setAsyncValidators(this.EnglishValidationRulesasync);\r\n\r\n if (this.options.IsDisabled) {\r\n this.EnglishHtmlEditorFormControl.disable();\r\n this.ArabicHtmlEditorFormControl.disable();\r\n }\r\n this.ArabicHtmlEditorFormControl.setValue(this.options.Value.Arabic)\r\n this.EnglishHtmlEditorFormControl.setValue(this.options.Value.English)\r\n this.MultiLingualHtmlEditorFormControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n })\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n let dir = this.UtilityService.getCurrentLanguage() == \"en\" ? \"ltr\" : \"rtl\"\r\n var angularEditor = document.getElementsByClassName(\"angular-editor-toolbar ng-star-inserted\");\r\n for (let index = 0; index < angularEditor.length; index++) {\r\n const element = angularEditor[index];\r\n element.setAttribute(\"dir\", dir);\r\n }\r\n }\r\n onTextChange(type: string) {\r\n\r\n if (type == \"en\") {\r\n this.MultilingualHtmlEditorgroup.controls[\"English\"].setValue(this.MultilingualHtmlEditorgroup.controls[\"English\"].value.trim());\r\n this.englishValue = this.MultilingualHtmlEditorgroup.controls[\"English\"].value == null ? \"\" : this.MultilingualHtmlEditorgroup.controls[\"English\"].value;\r\n if (this.englishValue) {\r\n this.EnglishHtmlEditorFormControl.setValue(this.englishValue);\r\n let originalValue = this.englishValue;\r\n if (this.options.PatchFunction && this.options.PatchPath && this.EnglishHtmlEditorFormControl.valid) {\r\n this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath)\r\n }\r\n }\r\n let EngliswordCountArray = (this.EnglishHtmlEditorFormControl.value as string).split(\" \").length\r\n if (EngliswordCountArray > 0) {\r\n if (EngliswordCountArray > this.options.MaxWordCount)\r\n this.MultilingualHtmlEditorgroup.controls[\"English\"].setErrors({ MaxWordCountValidationKey: this.options.MaxWordCount })\r\n this.MultilingualHtmlEditorgroup.controls[\"English\"].markAsTouched()\r\n this.MultilingualHtmlEditorgroup.controls[\"English\"].invalid\r\n\r\n }\r\n\r\n }\r\n\r\n if (type == \"ar\") {\r\n this.MultilingualHtmlEditorgroup.controls[\"Arabic\"].setValue(this.MultilingualHtmlEditorgroup.controls[\"Arabic\"].value.trim());\r\n\r\n this.arabicValue = this.MultilingualHtmlEditorgroup.controls[\"Arabic\"].value == null ? \"\" : this.MultilingualHtmlEditorgroup.controls[\"Arabic\"].value;\r\n\r\n if (this.arabicValue) {\r\n this.ArabicHtmlEditorFormControl.setValue(this.arabicValue);\r\n let originalValue = this.arabicValue;\r\n if (this.options.PatchFunction && this.options.PatchPath && this.ArabicHtmlEditorFormControl.valid) {\r\n this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath)\r\n }\r\n }\r\n\r\n let ArabicwordCountArray = (this.ArabicHtmlEditorFormControl.value as string).split(\" \").length\r\n if (ArabicwordCountArray > 0) {\r\n if (ArabicwordCountArray > this.options.MaxWordCount)\r\n this.MultilingualHtmlEditorgroup.controls[\"Arabic\"].setErrors({ MaxWordCountValidationKey: this.options.MaxWordCount })\r\n this.MultilingualHtmlEditorgroup.controls[\"Arabic\"].markAsTouched()\r\n this.MultilingualHtmlEditorgroup.controls[\"Arabic\"].invalid\r\n\r\n }\r\n }\r\n\r\n let mulitLangModel = new EnglishArabicDTO()\r\n mulitLangModel.Arabic = this.arabicValue;\r\n mulitLangModel.English = this.englishValue\r\n this.OnChange.emit(mulitLangModel)\r\n if (this.arabicValue && this.englishValue)\r\n this.group.get(this.options.Name).setValue(mulitLangModel)\r\n //Use this line to enable two way binding.\r\n this.options.Value = mulitLangModel;\r\n }\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n\r\n\r\n\r\n showInputUsingLanguageMode() {\r\n\r\n this.ArabicValidationRules = this.ArabicValidationRules.filter(item => item !== Validators.required);\r\n this.EnglishValidationRules = this.EnglishValidationRules.filter(item => item !== Validators.required);\r\n\r\n this.ArabicHtmlEditorFormControl.clearValidators();\r\n this.EnglishHtmlEditorFormControl.clearValidators();\r\n\r\n this.ArabicHtmlEditorFormControl.updateValueAndValidity();\r\n this.EnglishHtmlEditorFormControl.updateValueAndValidity();\r\n\r\n switch (this.options.LanguageMode) {\r\n case LanguageMode.Both_Languages_are_visible:\r\n this.ShowArabicHtmlEditor = true;\r\n this.ShowEnglishHtmlEditor = true;\r\n if (this.options.IsRequired == true) {\r\n this.EnglishValidationRules.push(Validators.required);\r\n this.ArabicValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInArabic = true;\r\n this.IsShowAsteriskInEnglish = true;\r\n }\r\n break;\r\n case LanguageMode.Arabic_Language_only_is_visible:\r\n this.ShowArabicHtmlEditor = true;\r\n break;\r\n case LanguageMode.English_Language_only_is_visible:\r\n this.ShowEnglishHtmlEditor = true;\r\n break;\r\n case LanguageMode.Both_Languages_are_visible_but_only_current_language_is_required:\r\n this.ShowArabicHtmlEditor = true;\r\n this.ShowEnglishHtmlEditor = true;\r\n\r\n if (this.CurrentLanguage == 'ar') {\r\n if (this.options.IsRequired == true) {\r\n this.ArabicValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInArabic = true;\r\n\r\n }\r\n }\r\n if (this.CurrentLanguage == 'en') {\r\n if (this.options.IsRequired == true) {\r\n this.EnglishValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInEnglish = true;\r\n }\r\n }\r\n break;\r\n case LanguageMode.Both_Languages_but_only_Arabic_is_required:\r\n this.ShowArabicHtmlEditor = true;\r\n this.ShowEnglishHtmlEditor = true;\r\n if (this.options.IsRequired == true) {\r\n this.ArabicValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInArabic = true;\r\n }\r\n break;\r\n case LanguageMode.Both_Languages_but_only_English_is_required:\r\n this.ShowArabicHtmlEditor = true;\r\n this.ShowEnglishHtmlEditor = true;\r\n if (this.options.IsRequired == true) {\r\n this.EnglishValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInEnglish = true;\r\n\r\n }\r\n break;\r\n case LanguageMode.Current_Language_only_is_visible_and_required:\r\n if (this.CurrentLanguage == 'ar') {\r\n this.ShowArabicHtmlEditor = true;\r\n this.ShowEnglishHtmlEditor = false;\r\n\r\n if (this.options.IsRequired == true) {\r\n this.ArabicValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInArabic = true;\r\n\r\n }\r\n }\r\n if (this.CurrentLanguage == 'en') {\r\n this.ShowArabicHtmlEditor = false;\r\n this.ShowEnglishHtmlEditor = true;\r\n\r\n if (this.options.IsRequired == true) {\r\n this.EnglishValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInEnglish = true;\r\n\r\n }\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n this.ArabicHtmlEditorFormControl.setValidators(this.ArabicValidationRules);\r\n this.EnglishHtmlEditorFormControl.setValidators(this.EnglishValidationRules);\r\n this.ArabicHtmlEditorFormControl.updateValueAndValidity();\r\n this.EnglishHtmlEditorFormControl.updateValueAndValidity();\r\n\r\n }\r\n\r\n\r\n //External Method\r\n\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(this.EnglishHtmlEditorFormControl, this.EnglishValidationRules, this.options)\r\n this.controlUtility.RemoveRequiredValidation(this.ArabicHtmlEditorFormControl, this.ArabicValidationRules, this.options)\r\n }\r\n //External Method\r\n\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(this.EnglishHtmlEditorFormControl, this.EnglishValidationRules, this.options)\r\n this.controlUtility.AddRequiredValidation(this.ArabicHtmlEditorFormControl, this.ArabicValidationRules, this.options)\r\n }\r\n\r\n\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(this.EnglishHtmlEditorFormControl, this.EnglishValidationRules, CustomValidation)\r\n this.controlUtility.RemoveCustomValidation(this.ArabicHtmlEditorFormControl, this.ArabicValidationRules, CustomValidation)\r\n }\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(this.EnglishHtmlEditorFormControl, this.EnglishValidationRules, CustomValidation)\r\n this.controlUtility.AddCustomValidation(this.ArabicHtmlEditorFormControl, this.ArabicValidationRules, CustomValidation)\r\n }\r\n\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.EnglishHtmlEditorFormControl)\r\n this.controlUtility.IsValid(this.ArabicHtmlEditorFormControl)\r\n }\r\n}\r\n\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n Optional,\r\n ViewChild,\r\n ElementRef,\r\n NgZone,\r\n Output,\r\n EventEmitter,\r\n} from '@angular/core';\r\nimport {\r\n FormControl,\r\n Validators,\r\n FormGroup,\r\n AbstractControl,\r\n ControlContainer,\r\n FormGroupDirective,\r\n} from '@angular/forms';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { FileUploader, FileLikeObject } from 'ng2-file-upload';\r\nimport { FileDTO } from '../../Shared/Models/FileDTO';\r\nimport { ImageUploadOptions } from '../../Shared/Models/ImageUploadOptions';\r\nimport { CropperComponent } from 'angular-cropperjs';\r\nimport {\r\n ControlValidationService,\r\n UtilityService,\r\n} from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\nimport { Observable } from 'rxjs';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'BBSF-ImageUpload',\r\n templateUrl: './ImageUpload.component.html',\r\n})\r\nexport class ImageUploaderComponent implements OnInit {\r\n static controlContainerstatic = null;\r\n\r\n @ViewChild('fileInput', { static: false }) fileInput: ElementRef;\r\n files: File[] = [];\r\n ImageSource: string;\r\n isSubmitted: boolean;\r\n @Input() group: FormGroup;\r\n @Input() options: ImageUploadOptions;\r\n @Output() OnChange = new EventEmitter();\r\n\r\n ImageUploadFormControl: AbstractControl;\r\n ValidationMessage = '';\r\n uploader: FileUploader;\r\n hasAnotherDropZoneOver: boolean;\r\n AcceptedType: string = '';\r\n AcceptedTypeArray: string[] = [];\r\n ToolTipTypeArray: string[] = [];\r\n FileLikeObject: FileLikeObject;\r\n control: FormControl;\r\n @ViewChild('angularCropper', { static: false })\r\n public angularCropper: CropperComponent;\r\n imgUrl = null;\r\n config = null;\r\n imageUrl = '';\r\n imgwUrl = '';\r\n EventFile: any;\r\n mdlSampleIsOpen: boolean = false;\r\n markAllAsTouched: boolean = false;\r\n validationRules = [];\r\n validationRulesasync = [];\r\n maxFileSize: number = 0;\r\n constructor(\r\n private zone: NgZone,\r\n private controlUtility: ControlUtility,\r\n @Optional() private controlContainer: ControlContainer,\r\n public ImageUplaoderControlHost: FormGroupDirective,\r\n public UtilityService: UtilityService,\r\n private controlValidationService: ControlValidationService,\r\n private globalSettings: GlobalSettings,\r\n private modalService: NgbModal\r\n ) {\r\n ImageUploaderComponent.controlContainerstatic = this.controlContainer;\r\n this.uploader = new FileUploader({\r\n disableMultipart: false, // 'DisableMultipart' must be 'true' for formatDataFunction to be called.\r\n });\r\n this.hasAnotherDropZoneOver = false;\r\n }\r\n\r\n ngOnInit() {\r\n this.controlValidationService.isCreatedBefor = false;\r\n\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n if (!this.options.DefaultImageSrc)\r\n this.options.DefaultImageSrc = this.globalSettings.DefaultImageSrc;\r\n\r\n //Set img src by default value\r\n // this.ImageSource = this.options.DefaultImageSrc;\r\n\r\n if (this.options.AllowImageCropper) {\r\n this.config = {\r\n aspectRatio:\r\n this.options.ImageCropperWidth / this.options.ImageCropperHeight,\r\n dragMode: 'move',\r\n background: true,\r\n movable: true,\r\n rotatable: true,\r\n scalable: true,\r\n zoomable: true,\r\n viewMode: 1,\r\n checkImageOrigin: true,\r\n modal: true,\r\n checkCrossOrigin: false,\r\n width: this.options.ImageCropperWidth,\r\n height: this.options.ImageCropperHeight,\r\n cropBoxResizable: false,\r\n autoCrop: true,\r\n };\r\n }\r\n\r\n if (this.options.FileUploadAcceptsTypes != null) {\r\n this.options.FileUploadAcceptsTypes;\r\n }\r\n if (this.options.Value != null) {\r\n let imgURL = this.options.Value['fileURL'];\r\n if (imgURL != '' && imgURL != undefined && imgURL != null) {\r\n this.ImageSource = imgURL;\r\n this.imageUrl = imgURL;\r\n }\r\n\r\n let element = this.options.Value;\r\n this.FileLikeObject = new FileLikeObject({\r\n name: element.FileName,\r\n size: element.FileSizeInMB * 1000 * 1000,\r\n type: element.FileType,\r\n });\r\n this.uploader.addToQueue([this.FileLikeObject as any]);\r\n }\r\n\r\n if (this.options.FileMaxSizeInMB)\r\n this.maxFileSize = this.options.FileMaxSizeInMB * 1000 * 1000;\r\n\r\n if (\r\n this.options.FileUploadAcceptsTypes != null &&\r\n this.options.FileUploadAcceptsTypes.length > 0\r\n ) {\r\n for (\r\n let index = 0;\r\n index < this.options.FileUploadAcceptsTypes.length;\r\n index++\r\n ) {\r\n const Type = this.options.FileUploadAcceptsTypes[index];\r\n this.AcceptedType = this.AcceptedType.toUpperCase() + Type.toUpperCase();\r\n }\r\n this.AcceptedTypeArray = this.AcceptedType.split(',');\r\n for (let index = 0; index < this.AcceptedTypeArray.length; index++) {\r\n const element = this.AcceptedTypeArray[index];\r\n const TypeToolTipe = element.split('/')[1];\r\n this.ToolTipTypeArray.push(TypeToolTipe.toUpperCase());\r\n }\r\n this.ValidationMessage =\r\n this.ValidationMessage +\r\n this.UtilityService.getResourceValue('AllowedTypes') +\r\n ` (${this.ToolTipTypeArray}) `;\r\n }\r\n if (this.options.FileMaxSizeInMB > 0) {\r\n this.ValidationMessage =\r\n this.ValidationMessage +\r\n ` <br /> ${this.UtilityService.getResourceValue('FileMaxSizeInMB')} ${\r\n this.options.FileMaxSizeInMB\r\n }`;\r\n }\r\n if (\r\n this.options.FileUploadAcceptsTypes != null &&\r\n this.options.FileUploadAcceptsTypes.length > 0\r\n ) {\r\n }\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.ImageUploadFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n\r\n if (this.options.Value != null)\r\n this.group.get(this.options.Name).setValue(this.options.Value);\r\n\r\n if (this.options.LabelKey != null && this.options.LabelKey != '')\r\n this.options.LabelValue = this.UtilityService.getResourceValue(\r\n this.options.LabelKey\r\n );\r\n\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation;\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.validationRules.push(Validation.functionBody);\r\n }\r\n }\r\n\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n }\r\n\r\n this.ImageUploadFormControl.setValidators(this.validationRules);\r\n this.ImageUploadFormControl.setAsyncValidators(this.validationRulesasync);\r\n if (this.options.IsDisabled) {\r\n this.ImageUploadFormControl.disable();\r\n }\r\n this.ImageUplaoderControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched();\r\n this.markAllAsTouched = true;\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.options.AttributeList != null) {\r\n var element = document.getElementById(this.options.Name);\r\n for (let index = 0; index < this.options.AttributeList.length; index++) {\r\n element.setAttribute(\r\n this.options.AttributeList[index].Key,\r\n this.options.AttributeList[index].value\r\n );\r\n }\r\n }\r\n }\r\n showImageUploader(element: HTMLElement) {\r\n let input = element.parentElement.parentElement.querySelector(\r\n 'input[type=file]'\r\n ) as HTMLElement;\r\n input.click();\r\n }\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n };\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError();\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError();\r\n this.markAllAsTouched = false;\r\n }\r\n\r\n return this.controlUtility.getErrorValidationMassage(\r\n ErrorList,\r\n this.group,\r\n this.options\r\n );\r\n }\r\n\r\n onFileChange(event) {\r\n if (event.rejectedFiles.length > 0) {\r\n const file = event.rejectedFiles[0];\r\n const maxFileSize = this.options.FileMaxSizeInMB * 1000 * 1000;\r\n const fileType = file.type;\r\n if (file.size > maxFileSize) {\r\n const formControl = this.ImageUploadFormControl;\r\n formControl.setErrors({\r\n FileMaxSizeInMB: this.options.FileMaxSizeInMB + 'M',\r\n });\r\n formControl.markAsTouched();\r\n this.uploader.queue = [];\r\n return;\r\n }\r\n if (\r\n this.options.FileUploadAcceptsTypes != null &&\r\n this.options.FileUploadAcceptsTypes.length > 0 &&\r\n !(\r\n this.AcceptedTypeArray.includes(fileType.toUpperCase()) ||\r\n this.AcceptedTypeArray.includes(fileType.toLowerCase())\r\n )\r\n ) {\r\n const formControl = this.ImageUploadFormControl;\r\n formControl.setErrors({ ToolTipTypeError: this.ToolTipTypeArray });\r\n formControl.markAsTouched();\r\n this.uploader.queue = [];\r\n return;\r\n }\r\n }\r\n let FilesArray = [];\r\n for (let index = 0; index < event.addedFiles.length; index++) {\r\n const file = event.addedFiles[0];\r\n this.EventFile = file;\r\n const maxFileSize = this.options.FileMaxSizeInMB * 1000 * 1000;\r\n if (file) {\r\n const maxFileSize = this.options.FileMaxSizeInMB * 1000 * 1000;\r\n const fileType = file.type;\r\n if (file.size > maxFileSize) {\r\n const formControl = this.ImageUploadFormControl;\r\n formControl.setErrors({\r\n FileMaxSizeInMB: this.options.FileMaxSizeInMB + 'M',\r\n });\r\n formControl.markAsTouched();\r\n this.uploader.queue = [];\r\n return;\r\n }\r\n let reader = new FileReader();\r\n let FileObject = file;\r\n reader.readAsDataURL(FileObject);\r\n reader.onload = () => {\r\n if (this.options.AllowImageCropper) {\r\n this.imageUrl = reader.result.toString();\r\n this.openModal(true);\r\n } else {\r\n let FileObject: FileDTO = {\r\n FileName: file.name,\r\n FileType: file.type,\r\n FileBase64: reader.result.toString().split(',')[1],\r\n FileSizeInMB: file.size / 1000 / 1000,\r\n NameWithExtension: file.name,\r\n };\r\n this.options.Value = FileObject;\r\n FilesArray.push(FileObject);\r\n this.group.get(this.options.Name).setValue(FileObject);\r\n this.files = [];\r\n this.files.push(...event.addedFiles);\r\n }\r\n let originalValue = this.ImageUploadFormControl.value;\r\n if (\r\n this.options.PatchFunction &&\r\n this.options.PatchPath &&\r\n this.ImageUploadFormControl.valid\r\n ) {\r\n this.controlUtility.patchControlValue(\r\n originalValue,\r\n this.options.PatchFunction,\r\n this.options.PatchPath\r\n );\r\n }\r\n //Use this line to enable two way binding.\r\n this.options.Value = originalValue;\r\n this.OnChange.emit(originalValue);\r\n };\r\n }\r\n }\r\n }\r\n\r\n removeFromControlValue(event) {\r\n let ItemList = this.group.get(this.options.Name).value;\r\n this.files = [];\r\n ItemList = null;\r\n //Set Img src by default image (upload)\r\n this.ImageSource = this.options.DefaultImageSrc;\r\n\r\n if (this.files.length == 0 && this.options.IsRequired) {\r\n this.ImageUploadFormControl.markAsTouched();\r\n this.ImageUploadFormControl.setErrors(Validators.required);\r\n this.ImageUploadFormControl.invalid;\r\n }\r\n this.group.get(this.options.Name).setValue(ItemList);\r\n this.OnChange.emit(this.group.get(this.options.Name).value);\r\n //Use this line to enable two way binding.\r\n this.options.Value = this.group.get(this.options.Name).value;\r\n }\r\n\r\n cropImage() {\r\n let ImageCropperObject = this.angularCropper.cropper.getCroppedCanvas({\r\n width: this.options.ImageCropperWidth,\r\n height: this.options.ImageCropperHeight,\r\n imageSmoothingEnabled: false,\r\n imageSmoothingQuality: 'high',\r\n });\r\n ImageCropperObject.toBlob((blob) => {\r\n this.zone.run(() => {\r\n this.getBlobFile(blob);\r\n });\r\n });\r\n }\r\n\r\n getBlobFile(blob) {\r\n let FilesArray = [];\r\n let BlobFile;\r\n let reader = new FileReader();\r\n BlobFile = blob;\r\n reader.readAsDataURL(BlobFile);\r\n reader.onload = () => {\r\n let FileObject: FileDTO = {\r\n FileName: this.EventFile.name,\r\n FileType: this.EventFile.type,\r\n FileBase64: reader.result.toString().split(',')[1],\r\n FileSizeInMB: BlobFile.size / 1000 / 1000,\r\n NameWithExtension: this.EventFile.name,\r\n };\r\n BlobFile.name = this.EventFile.name;\r\n\r\n FilesArray.push(FileObject);\r\n this.group.get(this.options.Name).setValue(FileObject);\r\n this.options.Value = FileObject;\r\n this.files = [];\r\n this.files.push(BlobFile);\r\n this.openModal(false);\r\n };\r\n }\r\n\r\n rotateImage(degree: number) {\r\n this.angularCropper.cropper.rotate(degree);\r\n }\r\n moveImage(offsetX: number, offsetY: number) {\r\n this.angularCropper.cropper.move(offsetX, offsetY);\r\n }\r\n zoomImage(ratio: number) {\r\n this.angularCropper.cropper.zoom(ratio);\r\n }\r\n\r\n openModal(open: boolean): void {\r\n this.mdlSampleIsOpen = open;\r\n }\r\n\r\n //External Method\r\n\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(\r\n this.ImageUploadFormControl,\r\n this.validationRules,\r\n this.options\r\n );\r\n };\r\n //External Method\r\n\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(\r\n this.ImageUploadFormControl,\r\n this.validationRules,\r\n this.options\r\n );\r\n };\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(\r\n this.ImageUploadFormControl,\r\n this.validationRules,\r\n CustomValidation\r\n );\r\n };\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(\r\n this.ImageUploadFormControl,\r\n this.validationRules,\r\n CustomValidation\r\n );\r\n };\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.ImageUploadFormControl);\r\n };\r\n}\r\n","import { FileDTO } from './FileDTO'\r\n\r\nexport class ProfilePictureDTO\r\n{\r\n ImageID_GUID:string\r\n ImageIDEncrypted:string\r\n FileName:string\r\n MediumPicture:string\r\n SmallPicture:string\r\n Original:string\r\n profilePicture:FileDTO\r\n AvatarPicture:FileDTO\r\n OriginalPicture:FileDTO\r\n FileURL?: string;\r\n}","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n Optional,\r\n ViewChild,\r\n ElementRef,\r\n NgZone,\r\n Output,\r\n EventEmitter,\r\n} from '@angular/core';\r\nimport {\r\n FormControl,\r\n Validators,\r\n FormGroup,\r\n AbstractControl,\r\n ControlContainer,\r\n FormGroupDirective,\r\n} from '@angular/forms';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { FileUploader, FileLikeObject } from 'ng2-file-upload';\r\nimport { FileDTO } from '../../Shared/Models/FileDTO';\r\nimport { CropperComponent } from 'angular-cropperjs';\r\nimport { ProfileImageUploadOptions } from '../../Shared/Models/ProfileImageUploadOptions';\r\nimport { ProfilePictureDTO } from '../../Shared/Models/ProfilePictureDTO';\r\nimport {\r\n ControlValidationService,\r\n UtilityService,\r\n} from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'BBSF-ProfileImageUploader',\r\n templateUrl: './ProfileImageUploader.component.html',\r\n})\r\nexport class ProfileImageUploaderComponent implements OnInit {\r\n static controlContainerstatic = null;\r\n\r\n @ViewChild('fileInput', { static: false }) fileInput: ElementRef;\r\n files: File[] = [];\r\n ImageSource: string = './src/assets/images/user.svg';\r\n isSubmitted: boolean;\r\n @Input() group: FormGroup;\r\n @Input() options: ProfileImageUploadOptions;\r\n @Output() OnChange = new EventEmitter();\r\n ProfileImageUploadFormControl: AbstractControl;\r\n ValidationMessage = '';\r\n uploader: FileUploader;\r\n hasAnotherDropZoneOver: boolean;\r\n AcceptedType: string = '';\r\n AcceptedTypeArray: string[] = [];\r\n ToolTipTypeArray: string[] = [];\r\n FileLikeObject: FileLikeObject;\r\n ProfilePictureDTO: ProfilePictureDTO;\r\n control: FormControl;\r\n markAllAsTouched: boolean = false;\r\n\r\n @ViewChild('angularCropper', { static: false })\r\n public angularCropper: CropperComponent;\r\n imgUrl = null;\r\n config = null;\r\n imageUrl = '';\r\n imgwUrl = '';\r\n EventFile: any;\r\n mdlSampleIsOpen: boolean = false;\r\n validationRules = [];\r\n validationRulesasync = [];\r\n\r\n constructor(\r\n private zone: NgZone,\r\n private controlUtility: ControlUtility,\r\n @Optional() private controlContainer: ControlContainer,\r\n public ProfileImageUploaderControlHost: FormGroupDirective,\r\n public UtilityService: UtilityService,\r\n private controlValidationService: ControlValidationService,\r\n private globalSettings: GlobalSettings\r\n ) {\r\n ProfileImageUploaderComponent.controlContainerstatic =\r\n this.controlContainer;\r\n this.uploader = new FileUploader({\r\n disableMultipart: false, // 'DisableMultipart' must be 'true' for formatDataFunction to be called.\r\n });\r\n this.hasAnotherDropZoneOver = false;\r\n this.ProfilePictureDTO = new ProfilePictureDTO();\r\n }\r\n\r\n ngOnInit() {\r\n this.controlValidationService.isCreatedBefor = false;\r\n\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n if (\r\n this.options.DefaultImageSrc != null &&\r\n this.options.DefaultImageSrc != ''\r\n )\r\n this.ImageSource = this.options.DefaultImageSrc;\r\n\r\n this.config = {\r\n aspectRatio: 200 / 200,\r\n dragMode: 'move',\r\n background: true,\r\n movable: true,\r\n rotatable: true,\r\n scalable: true,\r\n zoomable: true,\r\n viewMode: 1,\r\n checkImageOrigin: true,\r\n modal: true,\r\n checkCrossOrigin: false,\r\n cropBoxResizable: false,\r\n autoCrop: true,\r\n };\r\n\r\n if (this.options.ImageUploadAcceptsTypes != null) {\r\n this.options.ImageUploadAcceptsTypes;\r\n }\r\n if (this.options.Value != null) {\r\n let imgURL = this.options.Value['fileURL'];\r\n if (imgURL != '' && imgURL != undefined && imgURL != null)\r\n this.ImageSource = imgURL;\r\n\r\n let element = this.options.Value;\r\n this.FileLikeObject = new FileLikeObject({\r\n name: element.FileName,\r\n });\r\n this.uploader.addToQueue([this.FileLikeObject as any]);\r\n }\r\n\r\n if (this.options.LabelKey != null && this.options.LabelKey != '')\r\n this.options.LabelValue = this.UtilityService.getResourceValue(\r\n this.options.LabelKey\r\n );\r\n\r\n if (\r\n this.options.ImageUploadAcceptsTypes != null &&\r\n this.options.ImageUploadAcceptsTypes.length > 0\r\n ) {\r\n for (\r\n let index = 0;\r\n index < this.options.ImageUploadAcceptsTypes.length;\r\n index++\r\n ) {\r\n const Type = this.options.ImageUploadAcceptsTypes[index];\r\n this.AcceptedType =\r\n this.AcceptedType.toUpperCase() + Type.toUpperCase();\r\n }\r\n this.AcceptedTypeArray = this.AcceptedType.split(',');\r\n for (let index = 0; index < this.AcceptedTypeArray.length; index++) {\r\n const element = this.AcceptedTypeArray[index];\r\n const TypeToolTipe = element.split('/')[1];\r\n this.ToolTipTypeArray.push(TypeToolTipe.toUpperCase());\r\n }\r\n this.ValidationMessage =\r\n this.ValidationMessage +\r\n this.UtilityService.getResourceValue('AllowedTypes') +\r\n ` (${this.ToolTipTypeArray}) `;\r\n }\r\n if (this.options.FileMaxSizeInMB > 0) {\r\n this.ValidationMessage =\r\n this.ValidationMessage +\r\n ` <br /> ${this.UtilityService.getResourceValue('FileMaxSizeInMB')} ${\r\n this.options.FileMaxSizeInMB\r\n }`;\r\n }\r\n if(\r\n this.options.ImageUploadAcceptsTypes != null &&\r\n this.options.ImageUploadAcceptsTypes.length > 0\r\n ){\r\n }\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.ProfileImageUploadFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation;\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.validationRules.push(Validation.functionBody);\r\n }\r\n }\r\n\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n }\r\n\r\n this.ProfileImageUploadFormControl.setValidators(this.validationRules);\r\n this.ProfileImageUploadFormControl.setAsyncValidators(\r\n this.validationRulesasync\r\n );\r\n if (this.options.IsDisabled) {\r\n this.ProfileImageUploadFormControl.disable();\r\n }\r\n\r\n this.ProfileImageUploaderControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched();\r\n this.markAllAsTouched = true;\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.options.AttributeList != null) {\r\n var element = document.getElementById(this.options.Name);\r\n for (let index = 0; index < this.options.AttributeList.length; index++) {\r\n element.setAttribute(\r\n this.options.AttributeList[index].Key,\r\n this.options.AttributeList[index].value\r\n );\r\n }\r\n }\r\n }\r\n\r\n showImageUploader(element: HTMLElement) {\r\n let input = element.parentElement.parentElement.querySelector(\r\n 'input[type=file]'\r\n ) as HTMLElement;\r\n input.click();\r\n }\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n };\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError();\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError();\r\n this.markAllAsTouched = false;\r\n }\r\n\r\n return this.controlUtility.getErrorValidationMassage(\r\n ErrorList,\r\n this.group,\r\n this.options\r\n );\r\n }\r\n\r\n onFileChange(event) {\r\n if (event.rejectedFiles.length > 0) {\r\n const file = event.rejectedFiles[0];\r\n const maxFileSize = this.options.FileMaxSizeInMB * 1000 * 1000;\r\n const fileType = file.type;\r\n if (file.size > maxFileSize) {\r\n const formControl = this.ProfileImageUploadFormControl;\r\n formControl.setErrors({\r\n FileMaxSizeInMB: this.options.FileMaxSizeInMB + 'M',\r\n });\r\n formControl.markAsTouched();\r\n this.uploader.queue = [];\r\n return;\r\n }\r\n if (\r\n this.options.ImageUploadAcceptsTypes != null &&\r\n this.options.ImageUploadAcceptsTypes.length > 0 &&\r\n !(\r\n this.AcceptedTypeArray.includes(fileType.toUpperCase()) ||\r\n this.AcceptedTypeArray.includes(fileType.toLowerCase())\r\n )\r\n ) {\r\n const formControl = this.ProfileImageUploadFormControl;\r\n formControl.setErrors({ ToolTipTypeError: this.ToolTipTypeArray });\r\n formControl.markAsTouched();\r\n this.uploader.queue = [];\r\n return;\r\n }\r\n }\r\n let FilesArray = [];\r\n for (let index = 0; index < event.addedFiles.length; index++) {\r\n const file = event.addedFiles[0];\r\n this.EventFile = file;\r\n const maxFileSize = this.options.FileMaxSizeInMB * 1000 * 1000;\r\n if (file) {\r\n const maxFileSize = this.options.FileMaxSizeInMB * 1000 * 1000;\r\n const fileType = file.type;\r\n if (file.size > maxFileSize) {\r\n const formControl = this.ProfileImageUploadFormControl;\r\n formControl.setErrors({\r\n FileMaxSizeInMB: this.options.FileMaxSizeInMB + 'M',\r\n });\r\n formControl.markAsTouched();\r\n this.uploader.queue = [];\r\n return;\r\n }\r\n let reader = new FileReader();\r\n let FileObject = file;\r\n reader.readAsDataURL(FileObject);\r\n reader.onload = () => {\r\n this.imageUrl = reader.result.toString();\r\n this.openModal(true);\r\n let originalValue = this.group.get(this.options.Name).value;\r\n if (\r\n this.options.PatchFunction &&\r\n this.options.PatchPath &&\r\n this.group.get(this.options.Name).valid\r\n ) {\r\n this.controlUtility.patchControlValue(\r\n originalValue,\r\n this.options.PatchFunction,\r\n this.options.PatchPath\r\n );\r\n }\r\n //Use this line to enable two way binding.\r\n this.options.Value = originalValue;\r\n this.OnChange.emit(originalValue);\r\n };\r\n }\r\n }\r\n }\r\n removeFromControlValue(event) {\r\n let ItemList = this.group.get(this.options.Name).value;\r\n this.files.splice(this.files.indexOf(event), 1);\r\n ItemList = [];\r\n if (this.files.length == 0 && this.options.IsRequired) {\r\n this.ProfileImageUploadFormControl.markAsTouched();\r\n this.ProfileImageUploadFormControl.setErrors(Validators.required);\r\n this.ProfileImageUploadFormControl.invalid;\r\n }\r\n this.group.get(this.options.Name).setValue(ItemList);\r\n this.OnChange.emit(this.group.get(this.options.Name).value);\r\n this.options.Value = this.group.get(this.options.Name).value;\r\n }\r\n cropImage() {\r\n this.ProfilePictureDTO.FileName = this.EventFile.name;\r\n let Cropper = this.angularCropper.cropper;\r\n let profilePicturCropper = Cropper.getCroppedCanvas({\r\n width: 400,\r\n height: 400,\r\n imageSmoothingEnabled: false,\r\n imageSmoothingQuality: 'high',\r\n });\r\n let AvatarPictureCropper = Cropper.getCroppedCanvas({\r\n width: 100,\r\n height: 100,\r\n imageSmoothingEnabled: false,\r\n imageSmoothingQuality: 'high',\r\n });\r\n let OriginalPictureCropper = Cropper.getCroppedCanvas({\r\n width: 700,\r\n height: 700,\r\n imageSmoothingEnabled: false,\r\n imageSmoothingQuality: 'high',\r\n });\r\n profilePicturCropper.toBlob((blob) => {\r\n this.zone.run(() => {\r\n this.getProfileImageBlobFile(blob, 'profilePicturCropper');\r\n });\r\n });\r\n AvatarPictureCropper.toBlob((blob) => {\r\n this.zone.run(() => {\r\n this.getProfileImageBlobFile(blob, 'AvatarPictureCropper');\r\n });\r\n });\r\n OriginalPictureCropper.toBlob((blob) => {\r\n this.zone.run(() => {\r\n this.getProfileImageBlobFile(blob, 'OriginalPictureCropper');\r\n });\r\n });\r\n\r\n this.files = [];\r\n\r\n this.openModal(false);\r\n }\r\n getProfileImageBlobFile(blob, type) {\r\n let FilesArray = [];\r\n let BlobFile;\r\n let reader = new FileReader();\r\n BlobFile = blob;\r\n reader.readAsDataURL(BlobFile);\r\n reader.onload = () => {\r\n let FileObject: FileDTO;\r\n switch (type) {\r\n case 'profilePicturCropper':\r\n BlobFile.name = this.EventFile.name + 'MediumPicture';\r\n FileObject = {\r\n FileName: this.EventFile.name + 'MediumPicture',\r\n FileType: this.EventFile.type,\r\n FileBase64: reader.result.toString().split(',')[1],\r\n FileSizeInMB: BlobFile.size / 1000 / 1000,\r\n };\r\n this.ProfilePictureDTO.profilePicture = FileObject;\r\n this.ProfilePictureDTO.MediumPicture =\r\n FileObject.FileName + ',' + FileObject.FileBase64;\r\n this.files.push(BlobFile);\r\n break;\r\n case 'AvatarPictureCropper':\r\n FileObject = {\r\n FileName: this.EventFile.name + 'SmallPicture',\r\n FileType: this.EventFile.type,\r\n FileBase64: reader.result.toString().split(',')[1],\r\n FileSizeInMB: BlobFile.size / 1000 / 1000,\r\n };\r\n this.ProfilePictureDTO.AvatarPicture = FileObject;\r\n this.ProfilePictureDTO.SmallPicture =\r\n FileObject.FileName + ',' + FileObject.FileBase64;\r\n break;\r\n\r\n case 'OriginalPictureCropper':\r\n FileObject = {\r\n FileName: this.EventFile.name + 'Original',\r\n FileType: this.EventFile.type,\r\n FileBase64: reader.result.toString().split(',')[1],\r\n FileSizeInMB: BlobFile.size / 1000 / 1000,\r\n };\r\n this.ProfilePictureDTO.OriginalPicture = FileObject;\r\n this.ProfilePictureDTO.Original =\r\n FileObject.FileName + ',' + FileObject.FileBase64;\r\n this.group.get(this.options.Name).setValue(this.ProfilePictureDTO);\r\n this.OnChange.emit(this.group.get(this.options.Name).value);\r\n\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n this.options.Value = this.ProfilePictureDTO;\r\n };\r\n }\r\n\r\n rotateImage(degree: number) {\r\n this.angularCropper.cropper.rotate(degree);\r\n }\r\n moveImage(offsetX: number, offsetY: number) {\r\n this.angularCropper.cropper.move(offsetX, offsetY);\r\n }\r\n zoomImage(ratio: number) {\r\n this.angularCropper.cropper.zoom(ratio);\r\n }\r\n\r\n openModal(open: boolean): void {\r\n this.mdlSampleIsOpen = open;\r\n }\r\n\r\n //External Method\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(\r\n this.ProfileImageUploadFormControl,\r\n this.validationRules,\r\n this.options\r\n );\r\n };\r\n //External Method\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(\r\n this.ProfileImageUploadFormControl,\r\n this.validationRules,\r\n this.options\r\n );\r\n };\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(\r\n this.ProfileImageUploadFormControl,\r\n this.validationRules,\r\n CustomValidation\r\n );\r\n };\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(\r\n this.ProfileImageUploadFormControl,\r\n this.validationRules,\r\n CustomValidation\r\n );\r\n };\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.ProfileImageUploadFormControl);\r\n };\r\n}\r\n","export class AutocompleteDTO\r\n{\r\n key: string=\"\";\r\n value: string = \"\";\r\n image: string = \"\";\r\n \r\n}\r\n","import { Component, OnInit, Input, DoCheck, Optional, Output, EventEmitter, Attribute } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, AbstractControl, ControlContainer, FormGroupDirective, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport { ErrorMassageValidation } from '../../Shared/services/validationErrorMassage.service';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { AutocompleteOptions } from '../../Shared/Models/AutocompleteOptions';\r\nimport { AutocompleteDTO } from '../../Shared/Models/AutocompleteDTO';\r\nimport { noop, Observable, Observer, of } from 'rxjs';\r\nimport { map, switchMap, tap } from 'rxjs/operators';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { ControlValidationService, RequestHandlerService, RequestOptionsModel, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\n\r\n@Component({\r\n // tslint:disable-next-line: component-selector\r\n selector: 'BBSF-AutocompleteTextBox',\r\n templateUrl: './AutocompleteTextBox.component.html'\r\n})\r\nexport class AutocompleteTextBoxComponent implements OnInit {\r\n\r\n\r\n static controlContainerstatic = null;\r\n // tslint:disable-next-line: max-line-length\r\n constructor(private http: HttpClient, private ErrorHandler: ErrorMassageValidation, private requestHandlerService: RequestHandlerService,\r\n private controlUtility: ControlUtility, @Optional() private controlContainer:\r\n ControlContainer, public AutocompleteTextBoxControlHost: FormGroupDirective, private UtilityService: UtilityService,\r\n private controlValidationService: ControlValidationService, private globalSettings: GlobalSettings) {\r\n AutocompleteTextBoxComponent.controlContainerstatic = this.controlContainer;\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: AutocompleteOptions;\r\n @Output() OnChange = new EventEmitter();\r\n keyword: string = 'value'\r\n AutocompleteTextBoxControl: AbstractControl;\r\n Search: string = ''\r\n Key: string = ''\r\n\r\n Api: string = 'http';\r\n Value: string = 'value'\r\n NewSelectionValidationKey: string = '';\r\n markAllAsTouched: boolean = false;\r\n validationRules = [];\r\n validationRulesasync = [];\r\n dataSource: Observable<any>;\r\n suggestions$: Observable<any[]>;\r\n errorMessage: string;\r\n dataList: any[] = [];\r\n SelectedValue: string = \"\"\r\n avatarImage: string = \"./src/assets/images/userimg.png\";\r\n textDir;\r\n\r\n ngOnInit() {\r\n if (this.options.IsReadonly && !this.options.Value)\r\n this.options.Value = this.UtilityService.getResourceValue('NA');\r\n\r\n if (this.options.ForceDirection)\r\n this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';\r\n else\r\n this.textDir = localStorage.getItem('language') == 'ar' ? 'rtl' : 'ltr';\r\n this.controlValidationService.isCreatedBefor = false\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.AutocompleteTextBoxControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\")\r\n this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);\r\n\r\n // this.AutocompleteTextBoxControl.setValue(this.options.Value);\r\n\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.validationRules.push(Validation.functionBody);\r\n }\r\n }\r\n\r\n\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n }\r\n this.AutocompleteTextBoxControl.setValidators(this.validationRules);\r\n this.AutocompleteTextBoxControl.setAsyncValidators(this.validationRulesasync);\r\n if (this.options.IsDisabled) {\r\n this.AutocompleteTextBoxControl.disable();\r\n }\r\n\r\n\r\n if (this.options.SelectedValue != undefined && this.options.SelectedValue != null) {\r\n this.SelectedValue = this.options.SelectedValue;\r\n }\r\n\r\n\r\n this.AutocompleteTextBoxControlHost.ngSubmit.subscribe((value) => {\r\n if (this.AutocompleteTextBoxControl.value == this.Search && this.options.AllowNewSelection == false) {\r\n this.AutocompleteTextBoxControl.setErrors({ NewSelectionValidationKey: this.NewSelectionValidationKey });\r\n this.AutocompleteTextBoxControl.markAsTouched();\r\n this.AutocompleteTextBoxControl.invalid;\r\n }\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n })\r\n\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': this.options.ValidationToken\r\n }),\r\n };\r\n\r\n\r\n\r\n\r\n this.suggestions$ = new Observable((observer: Observer<string>) => {\r\n observer.next(this.Search);\r\n }).pipe(\r\n switchMap((query: string) => {\r\n if (query) {\r\n let params = new HttpParams();\r\n params = params.append(this.options.QueryParam, query);\r\n let requestOptionsModel = new RequestOptionsModel()\r\n requestOptionsModel.disableBlockUI = true;\r\n requestOptionsModel.disableSuccessNotification = true;\r\n // using github public api to get users by name\r\n return this.requestHandlerService.get(this.options.ActionURL, params, null, requestOptionsModel)\r\n .pipe(\r\n map((data) => data as Attribute[] || []),\r\n tap(() => noop, err => {\r\n // in case of http error\r\n this.errorMessage = err && err.message || 'Something goes wrong';\r\n })\r\n );\r\n }\r\n\r\n return of([]);\r\n })\r\n );\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n this.controlUtility.setAttributeForControl(this.options)\r\n }\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n\r\n getErrorValidation(ErrorList) {\r\n\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n\r\n copyInputMessage(inputElement) {\r\n this.controlUtility.CopyInputMessage(inputElement)\r\n }\r\n\r\n\r\n selectEvent(item) {\r\n\r\n if (this.options.AllowNewSelection == true) {\r\n if (typeof (item) == 'object') {\r\n this.AutocompleteTextBoxControl.setValue(item);\r\n this.AutocompleteTextBoxControl.updateValueAndValidity()\r\n }\r\n else {\r\n let AutocompleteModel = new AutocompleteDTO();\r\n AutocompleteModel.value = item;\r\n this.AutocompleteTextBoxControl.setValue(AutocompleteModel);\r\n this.AutocompleteTextBoxControl.updateValueAndValidity()\r\n }\r\n }\r\n else {\r\n if (this.AutocompleteTextBoxControl.value == item.value) {\r\n this.AutocompleteTextBoxControl.setErrors({ NewSelectionValidationKey: this.NewSelectionValidationKey });\r\n this.AutocompleteTextBoxControl.markAsTouched();\r\n this.AutocompleteTextBoxControl.invalid;\r\n return;\r\n }\r\n else {\r\n this.AutocompleteTextBoxControl.setValue(item);\r\n this.AutocompleteTextBoxControl.updateValueAndValidity()\r\n let originalValue = this.AutocompleteTextBoxControl.value;\r\n if (this.options.PatchFunction && this.options.PatchPath && this.group.get(this.options.Name).valid) {\r\n this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath)\r\n }\r\n\r\n }\r\n }\r\n\r\n // move this line here to emit value no matter is from database or not \r\n this.OnChange.emit(this.AutocompleteTextBoxControl.value)\r\n //Use this line to enable two way binding.\r\n this.options.Value = this.AutocompleteTextBoxControl.value;\r\n }\r\n\r\n async onChangeSearch(search: string) {\r\n if (this.options.MaxLength && search.length > this.options.MaxLength) {\r\n const formControl = this.AutocompleteTextBoxControl;\r\n formControl.setErrors({ errorMassage: this.UtilityService.getResourceValue(\"MaxLenghtValidationKey\") + \" \" + this.options.MaxLength });\r\n formControl.markAsTouched();\r\n return;\r\n }\r\n this.Search = search;\r\n this.SelectedValue = \"\";\r\n await this.suggestions$.subscribe((result) => {\r\n if ((result == null || result.length == 0 || result.length == 0) && this.options.AllowNewSelection == true) {\r\n this.dataList = [\r\n {\r\n key: 0,\r\n value: this.Search\r\n }\r\n ]\r\n }\r\n else {\r\n this.dataList = result\r\n }\r\n })\r\n }\r\n\r\n onInputCleared() {\r\n this.AutocompleteTextBoxControl.setValue(null);\r\n this.OnChange.emit(null);\r\n this.AutocompleteTextBoxControl.updateValueAndValidity()\r\n }\r\n // onFocused(e) {\r\n // // do something\r\n // }\r\n\r\n\r\n // onBlur(Value) {\r\n // if (this.options.AllowNewSelection == true) {\r\n\r\n // if (typeof (Value) == 'object') {\r\n // this.AutocompleteTextBoxControl.setValue(Value);\r\n // this.AutocompleteTextBoxControl.updateValueAndValidity()\r\n\r\n // }\r\n // else {\r\n // let AutocompleteModel = new AutocompleteDTO();\r\n // AutocompleteModel.value = Value;\r\n // let model = new TypeaheadMatch(AutocompleteModel,Value);\r\n // this.AutocompleteTextBoxControl.setValue(model);\r\n // this.AutocompleteTextBoxControl.updateValueAndValidity()\r\n\r\n // }\r\n // }\r\n\r\n // else {\r\n\r\n // if (this.AutocompleteTextBoxControl.value == Value) {\r\n // this.AutocompleteTextBoxControl.setErrors({ NewSelectionValidationKey: this.NewSelectionValidationKey });\r\n // this.AutocompleteTextBoxControl.markAsTouched();\r\n // this.AutocompleteTextBoxControl.invalid;\r\n // return;\r\n // }\r\n // }\r\n // }\r\n\r\n\r\n // handleResultSelected(result) {\r\n\r\n // this.AutocompleteTextBoxControl.setValue(result);\r\n // this.AutocompleteTextBoxControl.updateValueAndValidity()\r\n // this.OnChange.emit(this.AutocompleteTextBoxControl.value)\r\n // this.Search = this.AutocompleteTextBoxControl.value.value\r\n\r\n\r\n\r\n // }\r\n\r\n //External Method\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(this.AutocompleteTextBoxControl, this.validationRules, this.options)\r\n }\r\n //External Method\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(this.AutocompleteTextBoxControl, this.validationRules, this.options)\r\n }\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(this.AutocompleteTextBoxControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(this.AutocompleteTextBoxControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.AutocompleteTextBoxControl)\r\n }\r\n\r\n}\r\n\r\n\r\n","import { Component, OnInit, Input, DoCheck, Optional, Output, EventEmitter, OnDestroy, OnChanges, SimpleChanges, SimpleChange, ViewChild, ElementRef } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, AbstractControl, ControlContainer, FormGroupDirective } from '@angular/forms';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { TagsInputOptions } from '../../Shared/Models/TagsInputOptions';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { EMPTY, Observable, Subscription } from 'rxjs';\r\nimport { ControlValidationService, RequestHandlerService, RequestOptionsModel, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\nimport { tap } from 'rxjs/operators';\r\n\r\n@Component({\r\n // tslint:disable-next-line: component-selector\r\n selector: 'BBSF-TagsInput',\r\n templateUrl: './TagsInput.component.html'\r\n})\r\nexport class TagsInputComponent implements OnInit, OnDestroy {\r\n static controlContainerstatic = null;\r\n // tslint:disable-next-line: max-line-length\r\n constructor(private http: HttpClient, private controlUtility: ControlUtility, private requestHandlerService: RequestHandlerService, @Optional() private controlContainer: ControlContainer, public TagsInputControlHost: FormGroupDirective,\r\n private UtilityService: UtilityService, private controlValidationService: ControlValidationService,\r\n private globalSettings: GlobalSettings) {\r\n TagsInputComponent.controlContainerstatic = this.controlContainer;\r\n }\r\n\r\n @Input() group: FormGroup;\r\n @Input() options: TagsInputOptions;\r\n @Output() OnChange = new EventEmitter();\r\n @ViewChild('SearchKey', { static: false }) SearchKey: any;\r\n\r\n // TagInputControl: AbstractControl;\r\n SelectedId: any[] = []\r\n tags = [];\r\n NewSelectionValidationKey: string = \"\";\r\n TagsFormGroup: FormGroup;\r\n TagsFormControl: AbstractControl\r\n IsNoMatch: any;\r\n markAllAsTouched: boolean = false;\r\n validationRules = [];\r\n validationRulesasync = [];\r\n changeValueSubscription: Subscription;\r\n SearchResultHasItems: boolean = false;\r\n textDir;\r\n static showErrorOfInputs(errors: any) {\r\n const controlContainerstatic = TagsInputComponent.controlContainerstatic;\r\n const formGroup = controlContainerstatic.control as FormGroup;\r\n for (const key in errors) {\r\n if (errors.hasOwnProperty(key)) {\r\n for (const iterator of errors[key]) {\r\n const formControl = formGroup.get(key) as FormControl;\r\n formControl.setErrors({ \"FluentApi\": iterator });\r\n formControl.markAsTouched();\r\n }\r\n }\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n if (this.changeValueSubscription)\r\n this.changeValueSubscription.unsubscribe();\r\n }\r\n ngOnInit() {\r\n if (this.options.IsReadonly && !this.options.Value)\r\n this.options.Value = this.UtilityService.getResourceValue('NA');\r\n\r\n if (this.options.ForceDirection)\r\n this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';\r\n else\r\n this.textDir = localStorage.getItem('language') == 'ar' ? 'rtl' : 'ltr';\r\n this.controlValidationService.isCreatedBefor = false\r\n\r\n this.options.DatasourceItemText = this.options.DatasourceItemText.toLowerCase();\r\n this.TagsFormGroup = new FormGroup({});;\r\n this.TagsFormGroup.addControl(\"tags\", new FormControl(''));\r\n this.TagsFormControl = this.TagsFormGroup.controls[\"tags\"]; // new FormControl('',validationRules);\r\n this.group.addControl(this.options.Name, this.TagsFormControl);\r\n\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\")\r\n this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);\r\n\r\n if (!this.options.NoResultText)\r\n this.options.NoResultText = this.UtilityService.getResourceValue(\"NoItemsMatch\");\r\n\r\n // this.group.addControl(this.options.Name, new FormControl(''));\r\n // this.TagInputControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n\r\n this.TagsFormControl.setValue(this.options.Value);\r\n\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n }\r\n\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.validationRules.push(Validation.functionBody);\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n this.TagsFormControl.setValidators(this.validationRules);\r\n this.TagsFormControl.setAsyncValidators(this.validationRulesasync);\r\n if (this.options.IsDisabled) {\r\n this.TagsFormControl.disable();\r\n }\r\n\r\n if (this.options.Value != undefined && this.options.Value.length > 0) {\r\n for (let index = 0; index < this.options.Value.length; index++) {\r\n const element = this.options.Value[index];\r\n this.SelectedId.push(element.id);\r\n }\r\n this.tags = this.options.Value\r\n this.TagsFormControl.setValue(this.options.Value);\r\n }\r\n\r\n this.TagsInputControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n });\r\n //Check for changing in value\r\n this.changeValueSubscription = this.TagsFormControl.valueChanges.subscribe(c => {\r\n this.tags = this.TagsFormControl.value;\r\n this.SelectedId = this.tags?.filter(item => item.id).map(item => item.id);\r\n if (this.tags == null) {\r\n this.SearchKey.selected = \"\";\r\n this.tags = [];\r\n this.TagsFormControl.setValue([])\r\n }\r\n });\r\n }\r\n ngAfterViewInit(): void {\r\n if (this.options.AttributeList != null) {\r\n var element = document.getElementById(this.options.Name);\r\n for (let index = 0; index < this.options.AttributeList.length; index++) {\r\n element.setAttribute(this.options.AttributeList[index].Key, this.options.AttributeList[index].value);\r\n }\r\n }\r\n let inputElement = document.getElementById(this.options.Name).getElementsByTagName(\"input\")[0]\r\n inputElement.setAttribute(\"autocomplete\", \"off\")\r\n }\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n\r\n copyInputMessage(inputElement) {\r\n this.controlUtility.CopyInputMessage(inputElement)\r\n }\r\n\r\n searchFunctionFactory(Text: any): Observable<object> {\r\n //If no text then return empty observable\r\n if (!Text)\r\n return EMPTY;\r\n\r\n let Url = `${this.options.ActionURL}?${this.options.QueryParamName}=${encodeURIComponent(Text)}&${this.options.SelectedItemsParamName}=${this.SelectedId}`\r\n if (this.options.ExtraFilters)\r\n Url = Url + `&${this.options.ExtraFilters}`\r\n let requestOptionsModel = new RequestOptionsModel()\r\n requestOptionsModel.disableBlockUI = true;\r\n requestOptionsModel.disableSuccessNotification = true;\r\n let Model = this.requestHandlerService.get(Url, null, null, requestOptionsModel);\r\n return Model as any;\r\n }\r\n\r\n AddTag(event, key) {\r\n //Check if input is yab press\r\n if (event.key === \"Tab\")\r\n return;\r\n //Check if input is enter press\r\n if (this.IsNoMatch == true && event.key == \"Enter\" && this.options.AllowNewSelection && key.selected) {\r\n if (!(this.tags.length >= this.options.MaxNumberTags)) {\r\n this.tags.push({ name: key.selected });\r\n this.group.get(this.options.Name).setValue(this.tags);\r\n this.group.get(this.options.Name).markAllAsTouched();\r\n this.group.updateValueAndValidity();\r\n if (this.group.get(this.options.Name).valid) {\r\n key.selected = null;\r\n return;\r\n }\r\n else\r\n this.tags.pop();\r\n }\r\n }\r\n //Check if input is charachter\r\n else if (String.fromCharCode(event.keyCode).match(/(\\w|\\s)/g)) {\r\n if (this.IsNoMatch && !this.options.AllowNewSelection && key.selected) {\r\n this.TagsFormControl.setErrors({ \"errorMassage\": this.options.NoResultText });\r\n this.TagsFormControl.markAsTouched();\r\n }\r\n else if (this.IsNoMatch == false && this.options.AllowNewSelection == false) {\r\n this.TagsFormControl.clearValidators();\r\n this.TagsFormControl.updateValueAndValidity();\r\n }\r\n }\r\n //Remove unmatched error incase of deleting search value\r\n else if (event.key === \"Backspace\" && key.selected?.length <= 1 && this.TagsFormControl.hasError('errorMassage')) {\r\n this.TagsFormControl.setErrors({ \"errorMassage\": null });\r\n this.TagsFormControl.updateValueAndValidity();\r\n if (this.SelectedId?.length == 0 && this.options.IsRequired) {\r\n this.TagsFormControl.setErrors({ required: \"\" });\r\n this.TagsFormControl.markAsTouched();\r\n }\r\n }\r\n }\r\n\r\n onTagsChanged(result) {\r\n //console.log(this.tags)\r\n if (result[\"change\"] == \"add\") {\r\n this.SelectedId.push(result.tag.id);\r\n }\r\n if (result[\"change\"] == \"remove\") {\r\n this.SelectedId = this.SelectedId.filter((item) => item != result.tag.id);\r\n if (this.SelectedId.length == 0 && this.options.IsRequired == true) {\r\n this.TagsFormControl.setErrors({ required: \"\" });\r\n this.TagsFormControl.markAsTouched();\r\n this.TagsFormControl.invalid;\r\n }\r\n }\r\n let originalValue = this.TagsFormControl.value.map(function (a) { return a.id; });\r\n if (this.options.PatchFunction && this.options.PatchPath && this.TagsFormControl.valid) {\r\n this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);\r\n }\r\n this.options.Value = this.tags\r\n this.group.get(this.options.Name).setValue(this.tags);\r\n this.TagsFormControl.updateValueAndValidity();\r\n this.group.updateValueAndValidity();\r\n this.OnChange.emit(originalValue);\r\n }\r\n\r\n onNoOptionsMatch(event) {\r\n this.IsNoMatch = event;\r\n }\r\n\r\n //External Method\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(this.TagsFormControl, this.validationRules, this.options)\r\n }\r\n //External Method\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(this.TagsFormControl, this.validationRules, this.options)\r\n }\r\n //External Method\r\n\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(this.TagsFormControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(this.TagsFormControl, this.validationRules, CustomValidation)\r\n }\r\n\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.TagsFormControl)\r\n }\r\n\r\n onTagsInputBlur(SearchKey) {\r\n if (SearchKey.selected && this.options.AllowNewSelection && this.IsNoMatch && this.tags.length < this.options.MaxNumberTags) {\r\n this.tags.push({ name: SearchKey.selected });\r\n this.group.get(this.options.Name).setValue(this.tags);\r\n this.group.get(this.options.Name).markAllAsTouched();\r\n this.group.updateValueAndValidity();\r\n if (this.group.get(this.options.Name).valid) {\r\n SearchKey.selected = null;\r\n return;\r\n }\r\n else\r\n this.tags.pop();\r\n }\r\n }\r\n getTagsValue() {\r\n if (this.tags.length > 0)\r\n return this.tags.map(item => item.name)\r\n }\r\n\r\n}\r\n","export class PagingDTO{\r\n constructor(){\r\n\r\n }\r\n TotalCount:number=0\r\n PageCount:number=10\r\n CurrentPageNumber:number=1\r\n IsFilterUpdated:boolean=false\r\n Skip:number=0\r\n Take:number=0\r\n DevMode:boolean=true\r\n AddedItemsCount:number=0\r\n}","\r\nexport enum FilterType {\r\n TextBox = 1,\r\n DropdownList = 2,\r\n AutocompleteTextBox = 3,\r\n DatePicker = 4,\r\n TagInput = 5,\r\n CheckBox = 6,\r\n Other=7\r\n}","import { Component, OnInit, Output, EventEmitter, Input, SimpleChanges, ElementRef, OnDestroy } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { PagingDTO } from '../../Shared/Models/PagingDTO';\r\nimport { PagingOptions } from '../../Shared/Models/PagingOptions';\r\nimport { RequestOptions, ResponseContentType, Headers } from '@angular/http';\r\nimport { Subject, Observable, Subscription } from 'rxjs';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { OnPagingFiltersChangeService } from '../../Shared/services/OnPagingFiltersChange.service';\r\nimport { FilterType } from '../../Shared/Enums/FilterType';\r\nimport { RequestHandlerService, RequestOptionsModel, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { plainToClass } from 'class-transformer';\r\nimport { PagingPayload } from '../../Shared/Models/PagingPayload';\r\n\r\n// tslint:disable-next-line: no-conflicting-lifecycle\r\n@Component({\r\n selector: 'BBSF-Paging',\r\n templateUrl: './Paging.component.html'\r\n})\r\nexport class PagingComponent<T> implements OnInit, OnDestroy {\r\n\r\n items = [];\r\n pageOfItems: Array<any>;\r\n result: T[] = [];\r\n pagerConfig: any = null;\r\n totalRow: any = 0;\r\n pageSize: any = 10\r\n Pages: any = 0\r\n pagesText: string;\r\n itemsText: string;\r\n CurrentPage: any = 1\r\n ShowPageSizeOption = true;\r\n ShowFirstAndLast = true;\r\n hidePaginationWhenPageSizeEqualOne = true\r\n Sum = 0;\r\n Throttle = 300;\r\n ScrollDistance = 1;\r\n ScrollUpDistance = 2;\r\n direction = '';\r\n Headers: HttpHeaders;\r\n IsFirstCall: boolean = true;\r\n @Output() Items: EventEmitter<T[]> = new EventEmitter<T[]>();\r\n @Input() options: PagingOptions;\r\n @Input() group: FormGroup;\r\n subscriptions = new Subscription();\r\n\r\n constructor(public utilityService: UtilityService, private http: HttpClient, private router: Router, private onChangeService: OnPagingFiltersChangeService, private requestHandlerService: RequestHandlerService) {\r\n }\r\n ngOnDestroy(): void {\r\n this.subscriptions.unsubscribe()\r\n }\r\n\r\n ngOnInit() {\r\n if (this.options.IsLoadMoreControl)\r\n this.Sum = this.options.PageSize;\r\n\r\n if (this.options.DropdownFiltersControlNames != null && this.options.DropdownFiltersControlNames.length > 0) {\r\n const DropdownFiltersControlNames = this.options.DropdownFiltersControlNames;\r\n this.subscriptions.add(\r\n this.onChangeService.GetValue().subscribe((value) => {\r\n let result = this.options.DropdownFiltersControlNames.filter((item) => item == value)\r\n if (result.length > 0) {\r\n this.IsFirstCall = true;\r\n this.CurrentPage = 1;\r\n this.getItemList(this.CurrentPage, true);\r\n }\r\n }))\r\n }\r\n\r\n if (this.options.BootstrapDatePickersFiltersControlNames != null && this.options.BootstrapDatePickersFiltersControlNames.length > 0) {\r\n const BootstrapDatePickersFiltersControlNames = this.options.BootstrapDatePickersFiltersControlNames;\r\n this.subscriptions.add(this.onChangeService.GetValue().subscribe((value) => {\r\n let result = this.options.BootstrapDatePickersFiltersControlNames.filter((item) => item == value)\r\n if (result.length > 0) {\r\n this.IsFirstCall = true;\r\n this.CurrentPage = 1;\r\n this.getItemList(this.CurrentPage, true);\r\n }\r\n }))\r\n }\r\n this.IsFirstCall = true;\r\n this.getItemList(this.CurrentPage, true);\r\n }\r\n ngAfterViewInit(): void {\r\n\r\n if (this.options.OnClickFiltersControlNames != null && this.options.OnClickFiltersControlNames.length > 0) {\r\n const OnClickFiltersControlNames = this.options.OnClickFiltersControlNames;\r\n for (let index = 0; index < OnClickFiltersControlNames.length; index++) {\r\n const OnClickFiltersControlName = OnClickFiltersControlNames[index];\r\n document.getElementById(OnClickFiltersControlName).addEventListener(\"click\", () => {\r\n this.CurrentPage = 1;\r\n this.IsFirstCall = true;\r\n this.getItemList(this.CurrentPage, true);\r\n }, false);\r\n }\r\n }\r\n if (this.options.OnKeyPressFiltersControlNames != null && this.options.OnKeyPressFiltersControlNames.length > 0) {\r\n const OnKeyPressFiltersControlNames = this.options.OnKeyPressFiltersControlNames;\r\n for (let index = 0; index < OnKeyPressFiltersControlNames.length; index++) {\r\n const OnKeyPressFiltersControlName = OnKeyPressFiltersControlNames[index];\r\n let element = (<any>this.group.get(OnKeyPressFiltersControlName)).nativeElement as HTMLElement;\r\n element.addEventListener(\"keypress\", (e) => {\r\n if (e.key == \"Enter\") {\r\n this.CurrentPage = 1;\r\n this.IsFirstCall = true;\r\n this.getItemList(this.CurrentPage, true);\r\n }\r\n }, false);\r\n }\r\n }\r\n //Add click event on Reset Filter button\r\n if (this.options.ResetFilterButtonName != null) {\r\n const button = document.getElementsByName(this.options.ResetFilterButtonName)[0];\r\n if (button != undefined) {\r\n let element = button as HTMLElement;\r\n element.addEventListener(\"click\", (e) => {\r\n this.clearFilters();\r\n }, false);\r\n }\r\n }\r\n if (this.options.TypeaheadSearchControlNames != null && this.options.TypeaheadSearchControlNames.length > 0) {\r\n const TypeaheadSearchControlNames = this.options.TypeaheadSearchControlNames;\r\n for (let index = 0; index < TypeaheadSearchControlNames.length; index++) {\r\n const TypeaheadSearchControlName = TypeaheadSearchControlNames[index];\r\n document.getElementById(TypeaheadSearchControlName).addEventListener(\"keypress\", (e) => {\r\n if (e.key == \"Enter\") {\r\n this.CurrentPage = 1;\r\n this.IsFirstCall = true;\r\n this.getItemList(this.CurrentPage, true);\r\n }\r\n }, false);\r\n\r\n }\r\n }\r\n\r\n }\r\n\r\n onDropDownChange(result) {\r\n if (result) {\r\n this.CurrentPage = 1;\r\n this.IsFirstCall = true;\r\n this.getItemList(this.CurrentPage, true);\r\n }\r\n }\r\n\r\n onChangePage(Page) {\r\n if (Page == 0)\r\n return;\r\n if (Page > 0) {\r\n if (this.IsFirstCall) {\r\n this.IsFirstCall = false;\r\n return;\r\n }\r\n this.CurrentPage = Page;\r\n this.getItemList(Page);\r\n }\r\n }\r\n changePageSize(e) {\r\n this.options.PageSize = e.target.value;\r\n this.CurrentPage = 1;\r\n this.IsFirstCall = true;\r\n this.getItemList(this.CurrentPage, true);\r\n }\r\n\r\n\r\n\r\n\r\n onScrollDown() {\r\n this.Sum += this.options.PageSize\r\n this.CurrentPage = 1\r\n this.IsFirstCall = true;\r\n this.direction = 'down';\r\n this.getItemList(this.CurrentPage, true);\r\n }\r\n\r\n\r\n\r\n getItemList(page, IsFilterUpdated = false) {\r\n if (this.options.StartPagingCallback)\r\n this.options.StartPagingCallback.call(null);\r\n\r\n let pagingDTO = new PagingDTO();\r\n let size = Number.parseInt(this.options.PageSize.toString());\r\n if (this.options.IsLoadMoreControl)\r\n pagingDTO.PageCount = this.Sum;\r\n else\r\n pagingDTO.PageCount = size;\r\n\r\n pagingDTO.CurrentPageNumber = page;\r\n pagingDTO.TotalCount = this.totalRow;\r\n pagingDTO.IsFilterUpdated = IsFilterUpdated;\r\n let filters = {};\r\n filters = this.getFiltersValue();\r\n\r\n //Set Filters object that sent to action URL\r\n let filtersDTO: PagingPayload = {\r\n PagingDTO: pagingDTO,\r\n Filters: filters\r\n };\r\n\r\n let requestOptions = new RequestOptionsModel();\r\n requestOptions.disableBlockUI = this.options.DisableBlockUI;\r\n this.requestHandlerService.post(this.options.ActionPostURL, this.options.Filters && this.options.Filters.length > 0 ? filtersDTO : pagingDTO, null, null, requestOptions)\r\n .subscribe((responseData: any) => {\r\n this.result = responseData.items //this.castItems(responseData.items);\r\n let castedResult = plainToClass(this.options.TypeOfResponse, this.result, { excludeExtraneousValues: true })\r\n this.Items.emit(castedResult);\r\n this.totalRow = responseData.totalCount;\r\n\r\n if (IsFilterUpdated) {\r\n this.items = [];\r\n this.Pages = Math.ceil((this.totalRow / this.options.PageSize));\r\n this.items = Array(this.totalRow);\r\n\r\n this.setText(this.Pages, this.totalRow);\r\n\r\n }\r\n }, (error: HttpErrorResponse) => {\r\n if (error.status == 401)\r\n this.router.navigate([\"/Admin/account/login\"])\r\n });\r\n }\r\n\r\n ReinitializePaging = () => {\r\n this.IsFirstCall = true;\r\n this.getItemList(1, true);\r\n }\r\n\r\n UpdatePaging = () => {\r\n //this.IsFirstCall=true;\r\n this.getItemList(this.CurrentPage);\r\n }\r\n\r\n castItems(objectArr: any[]): T[] {\r\n let originalArray: T[] = []\r\n for (let index = 0; index < objectArr.length; index++) {\r\n const element = objectArr[index];\r\n let key, keys = Object.keys(element);\r\n let n = keys.length;\r\n let newObject = {}\r\n while (n--) {\r\n key = keys[n];\r\n let Okey = key\r\n newObject[key.charAt(0).toUpperCase() + Okey.slice(1)] = element[key];\r\n }\r\n let finalObject = newObject as T\r\n originalArray.push(finalObject)\r\n }\r\n\r\n return originalArray;\r\n }\r\n\r\n setText(pagesNumber: number, itemsNumber: number) {\r\n if (this.utilityService.isCurrentLanguageArabic()) {\r\n //Set pages text\r\n if (pagesNumber < 3 || pagesNumber > 10)\r\n this.pagesText = this.utilityService.getResourceValue(\"Page\");\r\n else\r\n this.pagesText = this.utilityService.getResourceValue(\"Pages\");\r\n //Set items text\r\n if (itemsNumber < 3 || itemsNumber > 10)\r\n this.itemsText = this.utilityService.getResourceValue(\"Item\");\r\n else\r\n this.itemsText = this.utilityService.getResourceValue(\"Items\");\r\n }\r\n else {\r\n //Set pages text\r\n if (pagesNumber > 1)\r\n this.pagesText = this.utilityService.getResourceValue(\"Pages\");\r\n else\r\n this.pagesText = this.utilityService.getResourceValue(\"Page\");\r\n //Set items text\r\n if (itemsNumber > 1)\r\n this.itemsText = this.utilityService.getResourceValue(\"Items\");\r\n else\r\n this.itemsText = this.utilityService.getResourceValue(\"Item\");\r\n }\r\n }\r\n\r\n clearFilters() {\r\n if (this.options.Filters != null && this.options.Filters != []) {\r\n for (let index = 0; index < this.options.Filters.length; index++) {\r\n if (this.options.Filters[index].FormControlName != null && this.options.Filters[index].FormControlName != \"\") {\r\n const FormControlName = this.options.Filters[index].FormControlName;\r\n this.group.controls[FormControlName].setValue(null);\r\n }\r\n }\r\n this.ReinitializePaging();\r\n }\r\n }\r\n\r\n getFiltersValue() {\r\n let filters = {};\r\n if (this.options.Filters != null && this.options.Filters != []) {\r\n for (let index = 0; index < this.options.Filters.length; index++) {\r\n if (this.options.Filters[index].FormControlName != null && this.options.Filters[index].FormControlName != \"\") {\r\n const FormControlName = this.options.Filters[index].FormControlName;\r\n let ControlValue = this.group.controls[FormControlName].value;\r\n if (ControlValue != undefined && ControlValue != null && ControlValue != \"\") {\r\n if (this.options.Filters[index].FilterType == FilterType.DatePicker) {\r\n //if (Array.isArray(ControlValue)) {\r\n // for (let element = 0; element < ControlValue.length; element++) {\r\n // const value = ControlValue[element];\r\n // filters[this.options.Filters[index].ActionParameterName] = value;\r\n // }\r\n //}\r\n //else {\r\n filters[this.options.Filters[index].ActionParameterName] = ControlValue;\r\n //}\r\n }\r\n else {\r\n if (this.options.Filters[index].FilterType == FilterType.AutocompleteTextBox)\r\n ControlValue = ControlValue;\r\n if (this.options.Filters[index].FilterType == FilterType.TagInput)\r\n ControlValue = ControlValue;\r\n\r\n filters[this.options.Filters[index].ActionParameterName] = ControlValue;\r\n }\r\n }\r\n else {\r\n filters[this.options.Filters[index].ActionParameterName] = null;\r\n }\r\n }\r\n else {\r\n const ElementjQuerySelector = this.options.Filters[index].jQuerySelector;\r\n let ElementValue = (document.querySelector(ElementjQuerySelector) as HTMLInputElement).value;\r\n if (ElementValue != undefined && ElementValue != null)\r\n filters[this.options.Filters[index].ActionParameterName] = ElementValue;\r\n else\r\n filters[this.options.Filters[index].ActionParameterName] = null;\r\n }\r\n }\r\n }\r\n return filters;\r\n }\r\n}\r\n","import { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'jw-pagination',\r\n template: `\r\n <ul *ngIf=\"pager.pages && pager.pages.length\" class=\"pagination\">\r\n <li *ngIf=\"ShowFirstAndLast\" [ngClass]=\"{disabled:pager.currentPage === 1}\" class=\"page-item first-item\">\r\n <a (click)=\"setPage(1)\" class=\"page-link\">❮❮</a>\r\n </li>\r\n <li [ngClass]=\"{disabled:pager.currentPage === 1}\" class=\"page-item previous-item\">\r\n <a (click)=\"setPage(pager.currentPage - 1)\" class=\"page-link\">❮</a>\r\n </li>\r\n <li *ngFor=\"let page of pager.pages\" [ngClass]=\"{active:pager.currentPage === page}\" class=\"page-item number-item\">\r\n <a (click)=\"setPage(page)\" class=\"page-link\">{{page}}</a>\r\n </li>\r\n <li [ngClass]=\"{disabled:pager.currentPage === pager.totalPages}\" class=\"page-item next-item\">\r\n <a (click)=\"setPage(pager.currentPage + 1)\" class=\"page-link\">❯</a>\r\n </li>\r\n <li *ngIf=\"ShowFirstAndLast\" [ngClass]=\"{disabled:pager.currentPage === pager.totalPages}\" class=\"page-item last-item\">\r\n <a (click)=\"setPage(pager.totalPages)\" class=\"page-link\">❯❯</a>\r\n </li>\r\n</ul>\r\n`\r\n})\r\n\r\nexport class JwPaginationComponent implements OnInit, OnChanges {\r\n @Input() items: Array<any>;\r\n @Output() changePage = new EventEmitter();\r\n @Input() initialPage = 1;\r\n @Input() pageSize = 10;\r\n @Input() maxPages = 10;\r\n @Input() ShowFirstAndLast = false;\r\n\r\n\r\n pager: any = {};\r\n\r\n ngOnInit() {\r\n // set page if items array isn't empty\r\n if (this.items && this.items.length) {\r\n this.setPage(this.initialPage);\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.items.firstChange)\r\n return\r\n // reset page if items array has changed\r\n if (changes.items.currentValue !== changes.items.previousValue) {\r\n this.setPage(this.initialPage);\r\n }\r\n }\r\n\r\n setPage(page: number) {\r\n // get new pager object for specified page\r\n this.pager = this.paginate(this.items.length, page, this.pageSize, this.maxPages);\r\n\r\n // get new page of items from items array\r\n var pageOfItems = this.items.slice(this.pager.startIndex, this.pager.endIndex + 1);\r\n\r\n // call change page function in parent component\r\n this.changePage.emit(this.pager.currentPage);\r\n }\r\n\r\n paginate(totalItems, currentPage, pageSize, maxPages) {\r\n if (currentPage === void 0) { currentPage = 1; }\r\n if (pageSize === void 0) { pageSize = 10; }\r\n if (maxPages === void 0) { maxPages = 10; }\r\n // calculate total pages\r\n var totalPages = Math.ceil(totalItems / pageSize);\r\n // ensure current page isn't out of range\r\n if (currentPage < 1) {\r\n currentPage = 1;\r\n }\r\n else if (currentPage > totalPages) {\r\n currentPage = totalPages;\r\n }\r\n var startPage, endPage;\r\n if (totalPages <= maxPages) {\r\n // total pages less than max so show all pages\r\n startPage = 1;\r\n endPage = totalPages;\r\n }\r\n else {\r\n // total pages more than max so calculate start and end pages\r\n var maxPagesBeforeCurrentPage = Math.floor(maxPages / 2);\r\n var maxPagesAfterCurrentPage = Math.ceil(maxPages / 2) - 1;\r\n if (currentPage <= maxPagesBeforeCurrentPage) {\r\n // current page near the start\r\n startPage = 1;\r\n endPage = maxPages;\r\n }\r\n else if (currentPage + maxPagesAfterCurrentPage >= totalPages) {\r\n // current page near the end\r\n startPage = totalPages - maxPages + 1;\r\n endPage = totalPages;\r\n }\r\n else {\r\n // current page somewhere in the middle\r\n startPage = currentPage - maxPagesBeforeCurrentPage;\r\n endPage = currentPage + maxPagesAfterCurrentPage;\r\n }\r\n }\r\n // calculate start and end item indexes\r\n var startIndex = (currentPage - 1) * pageSize;\r\n var endIndex = Math.min(startIndex + pageSize - 1, totalItems - 1);\r\n // create an array of pages to ng-repeat in the pager control\r\n var pages = Array.from(Array((endPage + 1) - startPage).keys()).map(function (i) { return startPage + i; });\r\n // return object with all pager properties required by the view\r\n return {\r\n totalItems: totalItems,\r\n currentPage: currentPage,\r\n pageSize: pageSize,\r\n totalPages: totalPages,\r\n startPage: startPage,\r\n endPage: endPage,\r\n startIndex: startIndex,\r\n endIndex: endIndex,\r\n pages: pages\r\n };\r\n }\r\n\r\n}","import { Component, OnInit, Input, Optional, Output, EventEmitter } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, AbstractControl, ControlContainer, FormGroupDirective } from '@angular/forms';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { RadioButtonOptions } from '../../Shared/Models/RadioButtonOptions';\r\nimport { ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n // tslint:disable-next-line: component-selector\r\n selector: 'BBSF-RadioButton',\r\n templateUrl: './RadioButton.component.html'\r\n})\r\nexport class RadioButtonComponent implements OnInit {\r\n\r\n\r\n static controlContainerstatic = null;\r\n // tslint:disable-next-line: max-line-length\r\n constructor(private controlUtility: ControlUtility, @Optional() private controlContainer: ControlContainer,\r\n public RadioButtonControlHost: FormGroupDirective, private UtilityService: UtilityService,\r\n private controlValidationService: ControlValidationService, private globalSettings: GlobalSettings) {\r\n RadioButtonComponent.controlContainerstatic = this.controlContainer;\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: RadioButtonOptions;\r\n @Output() OnChange = new EventEmitter();\r\n\r\n RadioButtonFormControl: AbstractControl;\r\n markAllAsTouched: boolean = false;\r\n validationRules = [];\r\n validationRulesasync = [];\r\n ngOnInit() {\r\n\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.RadioButtonFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n }\r\n this.RadioButtonFormControl.setValidators(this.validationRules);\r\n this.RadioButtonFormControl.setAsyncValidators(this.validationRulesasync);\r\n if (this.options.IsDisabled) {\r\n this.RadioButtonFormControl.disable();\r\n }\r\n\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\")\r\n this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);\r\n\r\n\r\n this.RadioButtonControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n })\r\n\r\n if (this.options.Value) {\r\n this.RadioButtonFormControl.setValue(this.options.Value.Value);\r\n }\r\n\r\n }\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n\r\n onValueChanged() {\r\n let originalValue = this.RadioButtonFormControl.value;\r\n if (this.options.PatchFunction && this.options.PatchPath && this.RadioButtonFormControl.valid) {\r\n this.controlUtility.patchControlValue(originalValue,this.options.PatchFunction ,this.options.PatchPath)\r\n }\r\n //Use this line to enable two way binding.\r\n this.options.Value= originalValue;\r\n this.OnChange.emit(originalValue)\r\n }\r\n\r\n getSelectedItemValue(value)\r\n {\r\n return this.options.Items.filter(item=>item.Value==value)[0].Text\r\n }\r\n\r\n //External Method\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(this.RadioButtonFormControl, this.validationRules, this.options)\r\n }\r\n //External Method\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(this.RadioButtonFormControl, this.validationRules, this.options)\r\n }\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(this.RadioButtonFormControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(this.RadioButtonFormControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.RadioButtonFormControl)\r\n }\r\n}\r\n\r\n\r\n","export enum LanguageValidation {\r\n English = 1,\r\n Arabic = 2\r\n }","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n Optional,\r\n Output,\r\n EventEmitter,\r\n} from '@angular/core';\r\nimport {\r\n FormControl,\r\n Validators,\r\n FormGroup,\r\n AbstractControl,\r\n ControlContainer,\r\n FormGroupDirective,\r\n} from '@angular/forms';\r\nimport { TextBoxOptions } from '../../Shared/Models/TextBoxOptions';\r\nimport { InputType } from '../../Shared/Enums/InputType';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport {\r\n ControlValidationService,\r\n UtilityService,\r\n} from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\nimport { LanguageValidation } from '../../Shared/Enums/LanguageValidation';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'BBSF-TextBox',\r\n templateUrl: './TextBox.component.html',\r\n})\r\nexport class TextboxComponent implements OnInit {\r\n static controlContainerstatic = null;\r\n // tslint:disable-next-line: max-line-length\r\n constructor(\r\n private controlUtility: ControlUtility,\r\n @Optional() private controlContainer: ControlContainer,\r\n public TextControlHost: FormGroupDirective,\r\n public UtilityService: UtilityService,\r\n private controlValidationService: ControlValidationService,\r\n private globalSettings: GlobalSettings\r\n ) {\r\n TextboxComponent.controlContainerstatic = this.controlContainer;\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: TextBoxOptions;\r\n @Output() OnChange = new EventEmitter();\r\n @Output() OnBlur = new EventEmitter();\r\n\r\n public inputType = InputType\r\n TextBoxFormControl: AbstractControl;\r\n MaskPattern: string = '';\r\n WordCount: number = 0;\r\n WordCountArray: number = 0;\r\n EmailValidationKey: string;\r\n URLValidationKey: string;\r\n PasswordComplexityHasNumber: string;\r\n ArabicLetterOnly: string;\r\n EnglishLetterOnly: string;\r\n PasswordComplexityHasCapitalLetter: string;\r\n PasswordComplexityHasSmallLetter: string;\r\n PasswordComplexityHasSpecialLetter: string;\r\n MaxWordCountValidationKey: string;\r\n IsShowWordCount: boolean = false;\r\n markAllAsTouched: boolean = false;\r\n validationRules = [];\r\n validationRulesasync = [];\r\n //For Show warning message of max length limit\r\n currentCharsCount: number = 0;\r\n showCharsLimitMsg: boolean = false;\r\n hasCharsLimitValidationError: boolean = false;\r\n charsLimitMsgClass: string;\r\n minCharsLimit: number = -1; //To disable chars limit feature by default\r\n maxLimitWarningMsg: string = '';\r\n textDir;\r\n ngOnInit() {\r\n if (this.options.IsReadonly && !this.options.Value) {\r\n this.options.Value = this.UtilityService.getResourceValue('NA');\r\n }\r\n if (this.options.ForceDirection)\r\n this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';\r\n else\r\n this.textDir = localStorage.getItem('language') == 'ar' ? 'rtl' : 'ltr';\r\n\r\n this.controlValidationService.isCreatedBefor = false;\r\n\r\n if (!this.options.MaxLength)\r\n this.options.MaxLength = this.globalSettings.MaxLengthTextBox;\r\n\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n if (this.options.MaskPattern != null && this.options.MaskPattern != '') {\r\n this.MaskPattern = this.options.MaskPattern;\r\n this.options.Placeholder = this.MaskPattern;\r\n }\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.TextBoxFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n this.TextBoxFormControl.setValue(this.options.Value);\r\n\r\n if (this.options.LabelKey != null && this.options.LabelKey != '')\r\n this.options.LabelValue = this.UtilityService.getResourceValue(\r\n this.options.LabelKey\r\n );\r\n\r\n this.getCustomErrorsMassages();\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n }\r\n switch (this.options.Type) {\r\n case InputType.Email:\r\n this.validationRules.push(\r\n Validators.compose([\r\n this.controlUtility.patternValidator(\r\n /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\r\n { EmailValidationKey: this.EmailValidationKey }\r\n ),\r\n ])\r\n );\r\n break;\r\n\r\n case InputType.URL:\r\n const pattern = /^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]!\\$&'\\(\\)\\*\\+,;=.]+$/;\r\n this.validationRules.push(\r\n Validators.compose([\r\n this.controlUtility.patternValidator(\r\n pattern,\r\n { URLValidationKey: this.URLValidationKey }\r\n ),\r\n ])\r\n );\r\n break;\r\n case InputType.EID:\r\n this.MaskPattern = '000-0000-0000000-0';\r\n this.options.Placeholder = this.MaskPattern;\r\n\r\n break;\r\n\r\n case InputType.Number:\r\n if (this.options.CustomValidation.length == 0) {\r\n this.validationRules.push(\r\n Validators.compose([\r\n this.controlUtility.patternValidator(/^[0-9]*$/, {\r\n IntegerNumberValidationKey: '',\r\n }),\r\n ])\r\n );\r\n this.validationRules.push(\r\n Validators.compose([\r\n this.controlUtility.patternValidator(\r\n /^[+]?([.]\\d+|\\d+[.]?\\d*)$/,\r\n { PositiveNumberValidationKey: '' }\r\n ),\r\n ])\r\n );\r\n }\r\n if (this.options.NumberRange != null) {\r\n this.validationRules.push(\r\n Validators.min(this.options.NumberRange.From)\r\n );\r\n this.validationRules.push(\r\n Validators.max(this.options.NumberRange.To)\r\n );\r\n }\r\n break;\r\n case InputType.Password:\r\n if (!this.options.RemoveDefaultPasswordValidation) {\r\n this.validationRules.push(\r\n Validators.compose([\r\n this.controlUtility.patternValidator(/\\d/, {\r\n PasswordComplexityHasNumber: this.PasswordComplexityHasNumber,\r\n }),\r\n this.controlUtility.patternValidator(/[A-Z]/, {\r\n PasswordComplexityHasCapitalLetter:\r\n this.PasswordComplexityHasCapitalLetter,\r\n }),\r\n this.controlUtility.patternValidator(/[a-z]/, {\r\n PasswordComplexityHasSmallLetter:\r\n this.PasswordComplexityHasSmallLetter,\r\n }),\r\n this.controlUtility.patternValidator(/[!@#$%^&*(),.?\":{}|<>]/, {\r\n PasswordComplexityHasSpecialLetter:\r\n this.PasswordComplexityHasSpecialLetter,\r\n }),\r\n Validators.minLength(8),\r\n ])\r\n );\r\n }\r\n break;\r\n }\r\n if (this.options.LanguageValidation) {\r\n if (this.options.LanguageValidation == LanguageValidation.Arabic) {\r\n this.validationRules.push(\r\n Validators.compose([\r\n this.controlUtility.patternValidator(/^[^A-Za-z]*$/, {\r\n ArabicLetterOnly: this.ArabicLetterOnly,\r\n }),\r\n ])\r\n );\r\n } else if (\r\n this.options.LanguageValidation == LanguageValidation.English\r\n ) {\r\n this.validationRules.push(\r\n Validators.compose([\r\n this.controlUtility.patternValidator(\r\n /^[~`!@#$%^&*()‘’“”_+=[\\]\\\\{}|;':\",.\\/<>?a-zA-Z0-9- ]*$/,\r\n { EnglishLetterOnly: this.EnglishLetterOnly }\r\n ),\r\n ])\r\n );\r\n }\r\n }\r\n\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation;\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.validationRules.push(Validation.functionBody);\r\n }\r\n }\r\n if (this.options.MinLength > 0) {\r\n this.validationRules.push(Validators.minLength(this.options.MinLength));\r\n }\r\n if (this.options.MaxLength > 0) {\r\n this.validationRules.push(Validators.maxLength(this.options.MaxLength));\r\n\r\n if (!this.options.MaxLengthWarningLimit)\r\n this.options.MaxLengthWarningLimit =\r\n this.globalSettings.MaxLengthWarningLimit;\r\n\r\n this.minCharsLimit =\r\n this.options.MaxLength - this.options.MaxLengthWarningLimit;\r\n }\r\n this.TextBoxFormControl.setValidators(this.validationRules);\r\n this.TextBoxFormControl.setAsyncValidators(this.validationRulesasync);\r\n if (this.options.IsDisabled) {\r\n this.TextBoxFormControl.disable();\r\n }\r\n\r\n this.TextControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched();\r\n this.markAllAsTouched = true;\r\n });\r\n\r\n this.options.ValidationRules = this.validationRules;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.controlUtility.setAttributeForControl(this.options);\r\n }\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n };\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError();\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError();\r\n this.markAllAsTouched = false;\r\n }\r\n\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n\r\n getInputType(type: number) {\r\n return this.controlUtility.getInputType(type);\r\n }\r\n\r\n trimControlValue() {\r\n let originalValue = this.controlUtility.trimControlValue(\r\n this.TextBoxFormControl.value\r\n );\r\n this.TextBoxFormControl.patchValue(originalValue);\r\n if (\r\n this.options.PatchFunction &&\r\n this.options.PatchPath &&\r\n this.TextBoxFormControl.valid\r\n ) {\r\n this.controlUtility.patchControlValue(\r\n originalValue,\r\n this.options.PatchFunction,\r\n this.options.PatchPath\r\n );\r\n }\r\n }\r\n\r\n copyInputMessage(inputElement) {\r\n this.controlUtility.CopyInputMessage(inputElement);\r\n }\r\n\r\n getCustomErrorsMassages() {\r\n this.EmailValidationKey =\r\n this.UtilityService.getResourceValue('EmailValidationKey');\r\n this.URLValidationKey =\r\n this.UtilityService.getResourceValue('urlValidationError');\r\n this.PasswordComplexityHasCapitalLetter =\r\n this.UtilityService.getResourceValue(\r\n 'PasswordComplexityHasCapitalLetter'\r\n );\r\n this.PasswordComplexityHasNumber = this.UtilityService.getResourceValue(\r\n 'PasswordComplexityHasNumber'\r\n );\r\n this.PasswordComplexityHasSmallLetter =\r\n this.UtilityService.getResourceValue('PasswordComplexityHasSmallLetter');\r\n this.PasswordComplexityHasSpecialLetter =\r\n this.UtilityService.getResourceValue(\r\n 'PasswordComplexityHasSpecialLetter'\r\n );\r\n this.MaxWordCountValidationKey = this.UtilityService.getResourceValue(\r\n 'MaxWordCountValidationKey'\r\n );\r\n this.ArabicLetterOnly = this.UtilityService.getResourceValue(\r\n 'ArabicIsRequiredAndOnly50CharactersEnglish'\r\n );\r\n this.EnglishLetterOnly =\r\n this.UtilityService.getResourceValue('EnglishLetterOnly');\r\n }\r\n\r\n onTextChange() {\r\n if (this.options.Type == InputType.Number)\r\n if (!this.TextBoxFormControl.value) {\r\n this.TextBoxFormControl.setErrors({ IntegerNumberValidationKey: '' });\r\n return;\r\n }\r\n\r\n if (this.TextBoxFormControl.value == '') {\r\n this.WordCountArray = 0;\r\n this.WordCount = 0;\r\n } else {\r\n this.WordCountArray = this.TextBoxFormControl.value.split(' ').length;\r\n if (this.WordCountArray > 0) {\r\n if (this.WordCountArray > this.options.MaxWordCount) {\r\n this.WordCount = this.options.MaxWordCount;\r\n this.TextBoxFormControl.setErrors({\r\n MaxWordCountValidationKey: this.options.MaxWordCount,\r\n });\r\n this.TextBoxFormControl.markAsTouched();\r\n this.TextBoxFormControl.invalid;\r\n } else {\r\n this.WordCount = this.WordCountArray;\r\n }\r\n }\r\n //Check for maxlength limit count\r\n //MaxLength should be gretaer than or equals chars limit so that minCharsLimit would be >= 0\r\n if (this.options.MaxLength && this.minCharsLimit >= 0) {\r\n this.currentCharsCount = this.TextBoxFormControl.value.length;\r\n if (this.currentCharsCount > this.minCharsLimit) {\r\n this.showCharsLimitMsg = true;\r\n this.hasCharsLimitValidationError = true;\r\n if (this.currentCharsCount == this.options.MaxLength)\r\n this.charsLimitMsgClass = 'danger';\r\n else this.charsLimitMsgClass = 'warning';\r\n } else {\r\n this.showCharsLimitMsg = false;\r\n this.hasCharsLimitValidationError = false;\r\n }\r\n var max: number = this.options.MaxLength;\r\n var current: number = this.currentCharsCount;\r\n\r\n var resource = this.UtilityService.getResourceValue(\r\n 'MaxLengthLimitWarning'\r\n );\r\n this.maxLimitWarningMsg = eval('`' + resource + '`');\r\n }\r\n }\r\n\r\n this.OnChange.emit(this.TextBoxFormControl.value);\r\n }\r\n\r\n onFocus(isFocus: boolean) {\r\n this.IsShowWordCount = isFocus;\r\n\r\n //onFocus\r\n if (isFocus) {\r\n if (this.hasCharsLimitValidationError)\r\n //check if there was previous validation error\r\n this.showCharsLimitMsg = true;\r\n } //onFocusOut\r\n else this.showCharsLimitMsg = false;\r\n }\r\n //External Method\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(\r\n this.TextBoxFormControl,\r\n this.validationRules,\r\n this.options\r\n );\r\n };\r\n //External Method\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(\r\n this.TextBoxFormControl,\r\n this.validationRules,\r\n this.options\r\n );\r\n };\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(\r\n this.TextBoxFormControl,\r\n this.validationRules,\r\n CustomValidation\r\n );\r\n };\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(\r\n this.TextBoxFormControl,\r\n this.validationRules,\r\n CustomValidation\r\n );\r\n };\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.TextBoxFormControl);\r\n };\r\n\r\n onTextBlur() {\r\n this.OnBlur.emit(this.TextBoxFormControl.value);\r\n }\r\n}\r\n","export class MapAutocompleteDTO\r\n{\r\n Text:string= null;\r\n Latitude:number;\r\n Longitude:number;\r\n PlaceID :string;\r\n GoogleMapsURL:string\r\n}","declare const google: any\r\nimport { Component, OnInit, Input, Optional, NgZone, ElementRef, ViewChild, EventEmitter, Output } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, AbstractControl, ControlContainer, FormGroupDirective } from '@angular/forms';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { MapAutoCompleteOptions } from '../../Shared/Models/MapAutoCompleteOptions';\r\nimport { MapAutocompleteDTO } from '../../Shared/Models/MapAutocompleteDTO';\r\nimport { MatGoogleMapsAutocompleteComponent } from '@angular-material-extensions/google-maps-autocomplete';\r\nimport { MapsAPILoader, LazyMapsAPILoader } from '@agm/core';\r\nimport { BBSFTranslateService, ControlValidationService, environment, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'BBSF-MapAutoComplete',\r\n templateUrl: './MapAutoComplete.component.html'\r\n})\r\n\r\nexport class MapAutoCompleteComponent implements OnInit {\r\n\r\n\r\n static controlContainerstatic = null;\r\n constructor(private mapsAPILoader: MapsAPILoader,\r\n private ngZone: NgZone, private controlUtility: ControlUtility, @Optional() private controlContainer: ControlContainer,\r\n public MapAutoCompleteControlHost: FormGroupDirective, private UtilityService: UtilityService, private translate: BBSFTranslateService,\r\n private controlValidationService: ControlValidationService, private globalSettings: GlobalSettings) {\r\n MapAutoCompleteComponent.controlContainerstatic = this.controlContainer;\r\n this.CurrentLanguage = translate.currentLang != undefined ? translate.currentLang : translate.defaultLang\r\n\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: MapAutoCompleteOptions;\r\n @Output() OnChange = new EventEmitter();\r\n\r\n MapAutoCompleteFormControl: AbstractControl;\r\n MapAutoCompleteModel: MapAutocompleteDTO = new MapAutocompleteDTO();\r\n CurrentLanguage: string = \"\";\r\n onAutocompleteSelected = new EventEmitter();\r\n onGermanAddressMapped = new EventEmitter();\r\n onLocationSelected = new EventEmitter();\r\n @ViewChild(\"search\", { static: false })\r\n public searchElementRef: ElementRef;\r\n MatGoogleMapsAutocompleteComponent: MatGoogleMapsAutocompleteComponent\r\n LazyMapsAPILoader: LazyMapsAPILoader\r\n markAllAsTouched: boolean = false;\r\n validationRules = [];\r\n validationRulesasync = [];\r\n place: any;\r\n ngOnInit() {\r\n this.controlValidationService.isCreatedBefor = false\r\n\r\n this.MapAutoCompleteModel = new MapAutocompleteDTO();\r\n this.translate.onLangChange.subscribe((event) => {\r\n this.CurrentLanguage = event.lang;\r\n ;\r\n if (this.CurrentLanguage == 'ar')\r\n this.mapsAPILoader[\"_config\"][\"localeId\"] = \"ar-EG\";\r\n if (this.CurrentLanguage == 'en')\r\n this.mapsAPILoader[\"_config\"][\"localeId\"] = \"en-US\";\r\n this.mapsAPILoader[\"_scriptLoadingPromise\"] = null\r\n this.mapsAPILoader[\"_config\"][\"apiKey\"] = `${environment.BBSF_GoogleMapKey}&language=${this.CurrentLanguage}`;\r\n var ScriptTag = document.getElementById(this.mapsAPILoader[\"_SCRIPT_ID\"]);\r\n if (ScriptTag)\r\n ScriptTag.remove();\r\n var elements = document.getElementsByClassName(\"pac-container\");\r\n while (elements.length > 0)\r\n elements[0].remove();\r\n\r\n let window = this.mapsAPILoader[\"_windowRef\"].getNativeWindow();\r\n window.google = null\r\n\r\n\r\n\r\n this.LazyMapsAPILoader = new LazyMapsAPILoader({\r\n // &language=${UtilityService.CurrentLanguage}\r\n apiKey: `${environment.BBSF_GoogleMapKey}&language=${this.CurrentLanguage}`,\r\n libraries: ['places'],\r\n }, this.mapsAPILoader[\"_windowRef\"], this.mapsAPILoader[\"_documentRef\"], this.mapsAPILoader[\"_config\"][\"localeId\"]);\r\n this.LazyMapsAPILoader.load().then(() => {\r\n let autocomplete = new google.maps.places.Autocomplete(this.searchElementRef.nativeElement, {\r\n types: [\"address\"]\r\n\r\n });\r\n autocomplete.addListener('place_changed', (/**\r\n * @return {?}\r\n */\r\n () => {\r\n\r\n this.ngZone.run((/**\r\n * @return {?}\r\n */\r\n () => {\r\n // get the place result\r\n /** @type {?} */\r\n const place = autocomplete.getPlace();\r\n /** @type {?} */\r\n const germanAddress = {\r\n gmID: place.id,\r\n icon: place.icon,\r\n url: place.url,\r\n placeID: place.place_id,\r\n displayAddress: place.formatted_address,\r\n name: place.name,\r\n vicinity: place.vicinity,\r\n locality: {},\r\n state: {},\r\n country: {},\r\n geoLocation: { latitude: -1, longitude: -1 },\r\n };\r\n\r\n if (place.geometry && place.geometry.location) {\r\n germanAddress.geoLocation.latitude = place.geometry.location.lat();\r\n germanAddress.geoLocation.longitude = place.geometry.location.lng();\r\n }\r\n place.address_components.forEach((/**\r\n * @param {?} value\r\n * @return {?}\r\n */\r\n value => {\r\n if (value.types.indexOf('street_number') > -1) {\r\n germanAddress[\"streetNumber\"] = value.short_name;\r\n }\r\n if (value.types.indexOf('route') > -1) {\r\n germanAddress[\"streetName\"] = value.long_name;\r\n }\r\n if (value.types.indexOf('postal_code') > -1) {\r\n germanAddress[\"postalCode\"] = Number(value.short_name);\r\n }\r\n if (value.types.indexOf('sublocality') > -1) {\r\n germanAddress[\"sublocality\"] = value.long_name;\r\n }\r\n if (value.types.indexOf('locality') > -1) {\r\n germanAddress.locality[\"long\"] = value.long_name;\r\n germanAddress.locality[\"short\"] = value.short_name;\r\n }\r\n if (value.types.indexOf('administrative_area_level_1') > -1) {\r\n germanAddress.state[\"long\"] = value.long_name;\r\n germanAddress.state[\"short\"] = value.short_name;\r\n }\r\n if (value.types.indexOf('country') > -1) {\r\n germanAddress.country[\"long\"] = value.long_name;\r\n germanAddress.country[\"short\"] = value.short_name;\r\n }\r\n if (value.types.indexOf('administrative_area_level_3') > -1) {\r\n germanAddress.locality[\"short\"] = value.short_name;\r\n }\r\n }));\r\n\r\n this.onGermanAddressMapped.emit(germanAddress);\r\n this.GermanAddressMapped(germanAddress)\r\n if (!place.place_id || place.geometry === undefined || place.geometry === null) {\r\n // place result is not valid\r\n return;\r\n }\r\n else {\r\n // show dialog to select a address from the input\r\n // emit failed event\r\n }\r\n // this.address = place.formatted_address;\r\n this.onAutocompleteSelected.emit(place);\r\n this.AutocompleteSelected(place)\r\n\r\n this.onLocationSelected.emit({\r\n latitude: place.geometry.location.lat(),\r\n longitude: place.geometry.location.lng()\r\n });\r\n }));\r\n }));\r\n });\r\n\r\n });\r\n\r\n if (this.CurrentLanguage == 'ar')\r\n this.mapsAPILoader[\"_config\"][\"localeId\"] = \"ar-EG\";\r\n if (this.CurrentLanguage == 'en')\r\n this.mapsAPILoader[\"_config\"][\"localeId\"] = \"en-US\";\r\n this.mapsAPILoader[\"_scriptLoadingPromise\"] = null\r\n this.mapsAPILoader[\"_config\"][\"apiKey\"] = `${environment.BBSF_GoogleMapKey}&language=${this.CurrentLanguage}`;\r\n var leftSection = document.getElementById(this.mapsAPILoader[\"_SCRIPT_ID\"]);\r\n if (leftSection)\r\n leftSection.remove();\r\n this.LazyMapsAPILoader = new LazyMapsAPILoader({\r\n apiKey: `${environment.BBSF_GoogleMapKey}&language=${this.CurrentLanguage}`,\r\n libraries: ['places'],\r\n }, this.mapsAPILoader[\"_windowRef\"], this.mapsAPILoader[\"_documentRef\"], this.mapsAPILoader[\"_config\"][\"localeId\"]);\r\n this.LazyMapsAPILoader.load();\r\n\r\n this.mapsAPILoader.load().then(() => {\r\n let autocomplete = new google.maps.places.Autocomplete(this.searchElementRef.nativeElement, {\r\n types: [\"address\"]\r\n\r\n });\r\n\r\n })\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.MapAutoCompleteFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n }\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\")\r\n this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);\r\n\r\n this.MapAutoCompleteFormControl.setValidators(this.validationRules);\r\n this.MapAutoCompleteFormControl.setAsyncValidators(this.validationRulesasync);\r\n if (this.options.IsDisabled) {\r\n this.MapAutoCompleteFormControl.disable();\r\n }\r\n if (this.options.Value != null) {\r\n let germanAddress = {\r\n\r\n url: this.options.Value.GoogleMapsURL,\r\n placeID: this.options.Value.PlaceID,\r\n displayAddress: this.options.Value.Text,\r\n name: this.options.Value.Text,\r\n locality: {},\r\n state: {},\r\n country: {},\r\n geoLocation: { latitude: -1, longitude: -1 },\r\n };\r\n\r\n germanAddress.geoLocation.latitude = this.options.Value.Latitude;\r\n germanAddress.geoLocation.longitude = this.options.Value.Longitude;\r\n this.onGermanAddressMapped.emit(germanAddress);\r\n this.GermanAddressMapped(germanAddress)\r\n this.place = {\r\n\r\n url: this.options.Value.GoogleMapsURL,\r\n place_id: this.options.Value.PlaceID,\r\n formatted_address: this.options.Value.Text,\r\n name: this.options.Value.Text,\r\n };\r\n this.onAutocompleteSelected.emit(this.place);\r\n this.AutocompleteSelected(this.place)\r\n\r\n this.onLocationSelected.emit({\r\n latitude: this.options.Value.Latitude,\r\n longitude: this.options.Value.Longitude\r\n });\r\n this.group.controls[this.options.Name].setValue(this.MapAutoCompleteModel)\r\n this.MapAutoCompleteFormControl.setValue(this.options.Value);\r\n }\r\n\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.validationRules.push(Validation.functionBody);\r\n }\r\n\r\n }\r\n\r\n\r\n this.MapAutoCompleteControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n })\r\n\r\n\r\n }\r\n ngAfterViewInit() {\r\n if (this.options.AttributeList != null) {\r\n var element = document.getElementById(this.options.Name);\r\n for (let index = 0; index < this.options.AttributeList.length; index++) {\r\n element.setAttribute(this.options.AttributeList[index].Key, this.options.AttributeList[index].value);\r\n }\r\n }\r\n var elementHTML = document.getElementById(this.options.Name) as any\r\n elementHTML.value = this.MapAutoCompleteModel.Text;\r\n }\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n\r\n AutocompleteSelected(result) {\r\n\r\n\r\n this.MapAutoCompleteModel == new MapAutocompleteDTO();\r\n this.MapAutoCompleteModel.Text = result.formatted_address;\r\n this.MapAutoCompleteModel.PlaceID = result.place_id;\r\n this.MapAutoCompleteModel.GoogleMapsURL = result.url;\r\n }\r\n LocationSelected(location) {\r\n\r\n this.MapAutoCompleteModel.Latitude = location.latitude;\r\n this.MapAutoCompleteModel.Longitude = location.longitude;\r\n this.MapAutoCompleteFormControl.setValue(null);\r\n\r\n this.MapAutoCompleteFormControl.setValue(this.MapAutoCompleteModel);\r\n let originalValue = this.MapAutoCompleteFormControl.value;\r\n if (this.options.PatchFunction && this.options.PatchPath && this.MapAutoCompleteFormControl.valid) {\r\n this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath)\r\n }\r\n //Use this line to enable two way binding.\r\n this.options.Value=this.MapAutoCompleteModel;\r\n }\r\n\r\n GermanAddressMapped(result) {\r\n if (result.type) {\r\n if (result.target.value == \"\") {\r\n this.MapAutoCompleteFormControl.setValue(result);\r\n this.group.controls[this.options.Name].setValue(result);\r\n this.options.Value=result;\r\n }\r\n return;\r\n }\r\n this.MapAutoCompleteModel == new MapAutocompleteDTO();\r\n this.MapAutoCompleteModel.Text = result.displayAddress;\r\n this.MapAutoCompleteModel.PlaceID = result.placeID;\r\n this.MapAutoCompleteModel.GoogleMapsURL = result.url;\r\n this.MapAutoCompleteModel.Latitude = result.geoLocation.latitude;\r\n this.MapAutoCompleteModel.Longitude = result.geoLocation.longitude;\r\n this.MapAutoCompleteFormControl.setValue(this.MapAutoCompleteModel);\r\n this.group.controls[this.options.Name].setValue(this.MapAutoCompleteModel)\r\n this.OnChange.emit(this.MapAutoCompleteFormControl.value)\r\n //Use this line to enable two way binding.\r\n this.options.Value=this.MapAutoCompleteModel;\r\n }\r\n\r\n //External Method\r\n\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(this.MapAutoCompleteFormControl, this.validationRules, this.options)\r\n }\r\n //External Method\r\n\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(this.MapAutoCompleteFormControl, this.validationRules, this.options)\r\n }\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(this.MapAutoCompleteFormControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(this.MapAutoCompleteFormControl, this.validationRules, CustomValidation)\r\n }\r\n\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.MapAutoCompleteFormControl)\r\n }\r\n}\r\n\r\n\r\n","\r\nexport enum CalendarView {\r\n Month = 1,\r\n Weekly = 2,\r\n Daily = 3,\r\n Agenda = 4\r\n }","import { FullCalendarComponent } from '@fullcalendar/angular';\r\nimport * as core from '@fullcalendar/core';\r\nimport dayGridPlugin from '@fullcalendar/daygrid';\r\nimport timeGrigPlugin from '@fullcalendar/timegrid';\r\nimport interactionPlugin from '@fullcalendar/interaction'; // for dateClick\r\nimport timeGridPlugin from '@fullcalendar/timegrid';\r\nimport listPlugin from '@fullcalendar/list';\r\nimport { Component, OnInit, Input, DoCheck, Optional, ViewChild } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, AbstractControl, ControlContainer, FormGroupDirective, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport { ErrorMassageValidation } from '../../Shared/services/validationErrorMassage.service';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { CalendarOptions } from '../../Shared/Models/CalendarOptions';\r\nimport { CalendarView } from '../../Shared/Enums/CalendarView';\r\n// import { CalendarOptions as CalendarOptionsModel, DateSelectArg, EventApi, EventClickArg } from '@fullcalendar/angular';\r\nimport enGbLocale from '@fullcalendar/core/locales/en-gb';\r\nimport ArLocale from '@fullcalendar/core/locales/ar';\r\nimport { LangChangeEvent } from '@ngx-translate/core';\r\nimport { BBSFTranslateService, ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';\r\n\r\n@Component({\r\n selector: 'BBSF-Calendar',\r\n templateUrl: './Calendar.component.html',\r\n styleUrls: ['./Calendar.component.scss']\r\n})\r\nexport class CalendarComponent implements OnInit {\r\n\r\n\r\n static controlContainerstatic = null;\r\n // tslint:disable-next-line: max-line-length\r\n constructor(private ErrorHandler: ErrorMassageValidation, private controlUtility: ControlUtility, @Optional() private controlContainer: ControlContainer, public PhoneControlHost: FormGroupDirective,private UtilityService:UtilityService,private translate: BBSFTranslateService,private controlValidationService:ControlValidationService) {\r\n CalendarComponent.controlContainerstatic = this.controlContainer;\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: CalendarOptions;\r\n CalendarFormControl: AbstractControl;\r\n @ViewChild('calendar', { static: false }) calendarComponent: FullCalendarComponent; // the #calendar in the template\r\n\r\n\r\n\r\n calendarVisible = true;\r\n calendarOptions: core.CalendarOptions;\r\n currentEvents: core.EventApi[] = [];\r\n calendarPlugins = [dayGridPlugin, timeGrigPlugin, interactionPlugin, listPlugin];\r\n calendarWeekends = true;\r\n calendarEvents: core.EventInput[] = [];\r\n DefaultView = \"\"\r\n CalendarViews = ''\r\n locales = [];\r\n CurrentLanguage = \"\"\r\n async ngOnInit() {\r\n switch (await this.UtilityService.getCurrentLanguage()) {\r\n case 'ar':\r\n this.locales = [ArLocale]\r\n this.CurrentLanguage = \"Ar\"\r\n break;\r\n case 'en':\r\n this.locales = [enGbLocale]\r\n this.CurrentLanguage = \"En\"\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n this.translate.onLangChange.subscribe((event: LangChangeEvent) => {\r\n switch (event.lang) {\r\n case 'ar':\r\n this.locales = [ArLocale]\r\n this.CurrentLanguage = \"Ar\"\r\n break;\r\n case 'en':\r\n this.locales = [enGbLocale]\r\n this.CurrentLanguage = \"En\"\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n });\r\n this.calendarEvents = this.options.EventList\r\n this.calendarWeekends = this.options.AllowCalendarWeekends\r\n switch (this.options.DefaultView) {\r\n case CalendarView.Month:\r\n this.DefaultView = \"dayGridMonth\"\r\n break;\r\n case CalendarView.Weekly:\r\n this.DefaultView = \"timeGridWeek\"\r\n break;\r\n case CalendarView.Daily:\r\n this.DefaultView = \"timeGridDay\"\r\n break;\r\n default:\r\n break;\r\n }\r\n if (this.options.CalendarViews != null && this.options.CalendarViews.length > 0)\r\n for (let index = 0; index < this.options.CalendarViews.length; index++) {\r\n const element = this.options.CalendarViews[index];\r\n switch (element) {\r\n case CalendarView.Agenda:\r\n this.CalendarViews += \"listWeek,\"\r\n break;\r\n case CalendarView.Daily:\r\n this.CalendarViews += \"timeGridDay,\"\r\n break;\r\n case CalendarView.Weekly:\r\n this.CalendarViews += \"timeGridWeek,\"\r\n break;\r\n case CalendarView.Month:\r\n this.CalendarViews += \"dayGridMonth,\"\r\n break;\r\n\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.CalendarFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n\r\n\r\n this.calendarOptions = {\r\n plugins: [\r\n dayGridPlugin,\r\n timeGridPlugin,\r\n listPlugin,\r\n interactionPlugin\r\n ],\r\n headerToolbar: {\r\n left: 'prev,next today',\r\n center: 'title',\r\n right: this.CalendarViews.substring(0, this.CalendarViews.length - 1)\r\n },\r\n locales: this.locales,\r\n locale: this.CurrentLanguage,\r\n initialView: this.CalendarViews.split(',')[0],\r\n initialEvents: this.calendarEvents,\r\n initialDate: this.options.DefaultDate,\r\n weekends: this.options.AllowCalendarWeekends,\r\n editable: this.options.Eventeditable,\r\n selectable: this.options.Eventselectable,\r\n // selectMirror: true,\r\n dayMaxEvents: this.options.dayMaxEvents,\r\n select: this.OnDayClickFunction.bind(this),\r\n eventClick: this.OnEventClickFunction.bind(this),\r\n // eventsSet: this.handleEvents.bind(this)\r\n /* you can update a remote database when these fire:\r\n eventAdd:\r\n eventChange:\r\n eventRemove:\r\n */\r\n };\r\n\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n\r\n\r\n }\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n getErrorValidation(Errorsitem: any[]) {\r\n }\r\n\r\n\r\n OnDayClickFunction(arg) {\r\n\r\n if (this.options.OnDayClickFunction != null) {\r\n let DayClickFunction = this.options.OnDayClickFunction;\r\n DayClickFunction(arg);\r\n }\r\n }\r\n\r\n OnEventClickFunction(arg) {\r\n if (this.options.OnEventClickFunction != null) {\r\n let EventClickFunction = this.options.OnEventClickFunction;\r\n EventClickFunction(arg.event);\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n // handleDateSelect(selectInfo: DateSelectArg) {\r\n // const title = prompt('Please enter a new title for your event');\r\n // const calendarApi = selectInfo.view.calendar;\r\n\r\n // calendarApi.unselect(); // clear date selection\r\n\r\n // if (title) {\r\n // calendarApi.addEvent({\r\n // id: \"1\",\r\n // title,\r\n // start: selectInfo.startStr,\r\n // end: selectInfo.endStr,\r\n // allDay: selectInfo.allDay\r\n // });\r\n // }\r\n // }\r\n\r\n // handleEventClick(clickInfo: EventClickArg) {\r\n // if (confirm(`Are you sure you want to delete the event '${clickInfo.event.title}'`)) {\r\n // clickInfo.event.remove();\r\n // }\r\n // }\r\n\r\n // handleEvents(events: EventApi[]) {\r\n // this.currentEvents = events;\r\n // }\r\n\r\n\r\n\r\n\r\n}\r\n\r\n\r\n","export enum PagingActionMode {\r\n Reinitialize ,\r\n Update\r\n}\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { NgbActiveModal, NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ControlValidationService, RequestOptionsModel, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { Observable } from 'rxjs';\r\nimport { PagingActionMode } from '../../Shared/Enums/PagingActionMode';\r\nimport { FormOptions } from '../../Shared/Models/FormOptions';\r\nimport { PagingComponent } from '../Paging/Paging.component';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n // tslint:disable-next-line: component-selector\r\n selector: 'BBSF-Form',\r\n templateUrl: './Form.component.html',\r\n})\r\nexport class FormComponent implements OnInit {\r\n\r\n fromName: string;\r\n isChange: boolean = null;\r\n @Output() OnChange = new EventEmitter();\r\n\r\n constructor(private controlUtility: ControlUtility, private utilityService: UtilityService, private controlValidationService: ControlValidationService, private modalService: NgbModal, private ngbActiveModal: NgbActiveModal, private router: Router,\r\n ) {\r\n }\r\n @Input() options: FormOptions;\r\n\r\n ngOnInit() {\r\n this.fromName = this.randomString(5)\r\n }\r\n ngAfterViewInit(): void {\r\n this.options.FormGroup.valueChanges.subscribe((es) => {\r\n this.OnChange.emit(true);\r\n\r\n });\r\n }\r\n\r\n submit() {\r\n this.options.FormGroup.markAllAsTouched()\r\n if (this.options.FormGroup.invalid) {\r\n this.showGlobalError();\r\n return\r\n }\r\n else {\r\n\r\n let submitModel = this.options.GetModelFunction() as any[]\r\n let submittedService = this.options.ServiceSubmitFunction.apply(null, submitModel) as Observable<any>\r\n submittedService.subscribe(\r\n (result) => {\r\n if (!this.options.DisableModalDismiss) {\r\n //Dismiss closest modal of the form only\r\n let modal = document.getElementById(this.fromName).closest('.modal.show');\r\n if (modal) {\r\n let closeButton = modal.querySelector(\"[data-dismiss='modal']\") as any\r\n closeButton.click();\r\n }\r\n }\r\n if (!this.options.DisableSuccessNotification)\r\n this.utilityService.notifySuccessMessage()\r\n if (this.options.OnSuccessHandler)\r\n this.options.OnSuccessHandler(result)\r\n if (!this.options.DisableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n if (this.options.PagingReference) {\r\n let paging = this.options.PagingReference;\r\n this.options.PagingActionMode == PagingActionMode.Reinitialize ? paging.ReinitializePaging() : paging.UpdatePaging();\r\n }\r\n }, (error) => {\r\n if (this.options.OnErrorHandler)\r\n this.options.OnErrorHandler(error)\r\n else\r\n this.handleError(error)\r\n })\r\n\r\n }\r\n\r\n }\r\n\r\n private handleError(err: HttpErrorResponse) {\r\n let errorMessage = '';\r\n if (err.error instanceof ErrorEvent) {\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n if (!this.options.DisableErrorNotification)\r\n this.utilityService.notifyErrorMessage()\r\n }\r\n else {\r\n this.controlValidationService.renderServerErrors(this.options.FormGroup, err, new RequestOptionsModel(), this.fromName)\r\n }\r\n if (!this.options.DisableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError(this.fromName)\r\n }\r\n randomString(length) {\r\n var randomChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\r\n var result = '';\r\n for (var i = 0; i < length; i++) {\r\n result += randomChars.charAt(Math.floor(Math.random() * randomChars.length));\r\n }\r\n return result;\r\n }\r\n\r\n\r\n}\r\n\r\n","export enum StyleConfirmationMode {\r\n Danger,\r\n Warning,\r\n Success\r\n}\r\n","import { Router } from '@angular/router';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { UtilityService } from '@bnsights/bbsf-utilities'\r\nimport { Observable } from 'rxjs';\r\nimport { PagingActionMode } from '../../Shared/Enums/PagingActionMode';\r\nimport { ConfirmationModalOptions } from '../../Shared/Models/ConfirmationModalOptions';\r\nimport Swal, { SweetAlertIcon } from 'sweetalert2';\r\nimport { StyleConfirmationMode } from '../../Shared/Enums/StyleConfirmationMode';\r\n\r\n@Component({\r\n templateUrl: 'ConfirmationModal.component.html',\r\n selector: 'BBSF-ConfirmationModal',\r\n})\r\nexport class ConfirmationModalComponent implements OnInit {\r\n @Input() options: ConfirmationModalOptions;\r\n styleDanger: StyleConfirmationMode = StyleConfirmationMode.Danger;\r\n styleWarning: StyleConfirmationMode = StyleConfirmationMode.Warning;\r\n styleSuccess: StyleConfirmationMode = StyleConfirmationMode.Success;\r\n @ViewChild('confirmationModal', { static: false }) confirmationModal: ElementRef;\r\n icon: SweetAlertIcon;\r\n btnColor: any;\r\n iconHtml: string;\r\n\r\n\r\n constructor(public utilityService: UtilityService, private modalService: NgbModal, private router: Router) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n //Method used to show confirmation modal\r\n showModal() {\r\n this.utilityService.startBlockUI()\r\n //check for options text values\r\n this.setTextValues();\r\n //sweetalert styles//\r\n switch (this.options.StyleConfirmationMode) {\r\n case this.styleSuccess: {\r\n this.icon = 'success'\r\n this.btnColor = '#50cd89'\r\n this.iconHtml = '<i class=\"fa fa-check\"></i>'\r\n break;\r\n }\r\n case this.styleWarning: {\r\n this.icon = 'warning'\r\n this.btnColor = '#ffc700'\r\n this.iconHtml = '<i class=\"fa fa-warning\"></i>'\r\n break;\r\n\r\n }\r\n case this.styleDanger: {\r\n this.icon = 'error'\r\n this.btnColor = '#f1416c'\r\n this.iconHtml = '<i class=\"fa fa-close\"></i>'\r\n break;\r\n\r\n }\r\n }\r\n Swal.fire({\r\n title: this.utilityService.getResourceValue(this.options.ConfirmationHeader),\r\n text: this.options.ConfirmationBody,\r\n icon: this.icon,\r\n iconColor: this.btnColor,\r\n confirmButtonColor: this.btnColor,\r\n cancelButtonColor: '#f5f8fa',\r\n cancelButtonText: this.utilityService.getResourceValue(\"CancelLabel\"),\r\n confirmButtonText: this.options.SubmitButtonText,\r\n showCancelButton: this.options.showCancelButton,\r\n showCloseButton: this.options.showCloseButton,\r\n allowOutsideClick: false\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.submit()\r\n }\r\n })\r\n this.utilityService.stopBlockUI()\r\n }\r\n private setTextValues() {\r\n if (!this.options.ConfirmationHeader)\r\n this.options.ConfirmationHeader = this.utilityService.getResourceValue(\"DeleteConfirmation\");\r\n if (!this.options.ConfirmationBody)\r\n this.options.ConfirmationBody = this.utilityService.getResourceValue(\"Delete_Question\");\r\n if (!this.options.SubmitButtonText)\r\n this.options.SubmitButtonText = this.utilityService.getResourceValue(\"Delete\");\r\n if (!this.options.SuccessNotificationMessage)\r\n this.options.SuccessNotificationMessage = this.utilityService.getResourceValue(\"DeletedSuccessfully\");\r\n }\r\n //Modal confirmation submit function\r\n submit() {\r\n let submitModel = this.options.ServiceSubmitModel;\r\n\r\n let submittedService = this.options.ServiceSubmitFunction.apply(null, submitModel) as Observable<any>\r\n submittedService.subscribe(\r\n (result) => {\r\n if (!this.options.DisableModalDismiss)\r\n this.modalService.dismissAll();\r\n\r\n if (!this.options.DisableSuccessNotification) {\r\n if (!this.options.SuccessNotificationMessage)\r\n this.options.SuccessNotificationMessage = this.utilityService.getResourceValue(\"DeletedSuccessfully\");\r\n this.utilityService.notifySuccessMessage(this.options.SuccessNotificationMessage)\r\n }\r\n if (this.options.OnSuccessHandler)\r\n this.options.OnSuccessHandler(result)\r\n if (this.options.PagingReference) {\r\n let paging = this.options.PagingReference;\r\n this.options.PagingActionMode == PagingActionMode.Reinitialize ? paging.ReinitializePaging() : paging.UpdatePaging();\r\n }\r\n this.utilityService.stopBlockUI();\r\n }, (error) => {\r\n if (this.options.OnErrorHandler)\r\n this.options.OnErrorHandler(error)\r\n else\r\n this.handleError(error)\r\n })\r\n }\r\n\r\n private handleError(err: HttpErrorResponse) {\r\n let errorMessage = '';\r\n if (err.error instanceof ErrorEvent) {\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n if (!this.options.DisableErrorNotification)\r\n this.utilityService.notifyErrorMessage()\r\n }\r\n\r\n else if (err.status == 401) {\r\n this.router.navigate([\"/Admin/account/login\"])\r\n }\r\n else if (err.status == 510) {\r\n errorMessage = this.utilityService.getCurrentLanguage() == \"en\" ? \"Can not delete this item as it is related to others\" : \"لا يمكن حذف هذا العنصر لأنه مرتبط بعناصر أخرى\";\r\n if (!this.options.DisableErrorNotification)\r\n this.utilityService.notifyErrorMessage(errorMessage)\r\n }\r\n else {\r\n errorMessage = `Server returned code: ${err.status}, error message is: ${err.message}`;\r\n console.log(errorMessage);\r\n if (!this.options.DisableErrorNotification)\r\n this.utilityService.notifyErrorMessage()\r\n }\r\n this.utilityService.stopBlockUI();\r\n }\r\n\r\n\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'ng-template[name]'\r\n})\r\nexport class NgTemplateNameDirective {\r\n @Input() name: string;\r\n\r\n constructor(public template: TemplateRef<any>) { }\r\n}","import { Component, Input, OnInit, QueryList, TemplateRef, ViewChild, ViewChildren } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { RepeaterOptions } from '../../../Shared/Models/RepeaterOptions';\r\nimport { NgTemplateNameDirective } from '../../../Shared/Directives/template-name.directive';\r\n\r\n\r\n@Component({\r\n selector: 'BBSF-repeater',\r\n templateUrl: './repeater.component.html'\r\n})\r\nexport class RepeaterComponent implements OnInit {\r\n @Input() group: FormGroup;\r\n @Input() options: RepeaterOptions;\r\n @Input() initialTemplate: TemplateRef<any>;\r\n @ViewChildren(NgTemplateNameDirective) private _templates: QueryList<NgTemplateNameDirective>;\r\n @ViewChild('delete', { static: false }) delete: TemplateRef<any>;\r\n templateRefs: Array<TemplateRef<any>> = [];\r\n items: number[] = []\r\n originalItems: any[] = [];\r\n repeaterGroup: FormGroup;\r\n currentTemplate: TemplateRef<any>;\r\n repeaterContext = { index: 0, delete: null, elements: null };\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.currentTemplate = this.initialTemplate;\r\n this.repeaterGroup = new FormGroup({});\r\n this.group.addControl(this.options.Name, this.repeaterGroup);\r\n if (this.options.RepeaterValue.length > 0) {\r\n this.originalItems = this.options.RepeaterValue;\r\n for (let index = 0; index < this.options.RepeaterValue.length; index++) {\r\n this.items.push(index + 1);\r\n }\r\n }\r\n else\r\n for (let index = 0; index < this.options.MinRequiredItems; index++) {\r\n this.items.push(index);\r\n }\r\n\r\n this.repeaterGroup.valueChanges.subscribe((res) => {\r\n let result = [];\r\n let rowNumber = [];\r\n let addItems = [];\r\n for (const key in this.repeaterGroup.controls) {\r\n if (Object.prototype.hasOwnProperty.call(this.repeaterGroup.controls, key)) {\r\n const keySplitArr = key.split('.')\r\n let item = {\r\n [keySplitArr[1]]: { [keySplitArr[0]]: this.group.controls[this.options.Name].value[key] }\r\n }\r\n addItems.push(item)\r\n if (!rowNumber.includes(keySplitArr[1]))\r\n rowNumber.push(keySplitArr[1])\r\n }\r\n }\r\n for (let index = 0; index < rowNumber.length; index++) {\r\n const row = rowNumber[index];\r\n let addObject = {}\r\n let filteredElements = addItems.filter(item => item[row])\r\n for (let index = 0; index < filteredElements.length; index++) {\r\n const filteredElement = filteredElements[index];\r\n for (const key in filteredElement) {\r\n if (Object.prototype.hasOwnProperty.call(filteredElement, key)) {\r\n const element = filteredElement[key];\r\n for (const key in element) {\r\n if (Object.prototype.hasOwnProperty.call(element, key)) {\r\n const value = element[key];\r\n addObject[key] = value\r\n }\r\n }\r\n }\r\n }\r\n }\r\n result.push(addObject)\r\n }\r\n this.options.RepeaterValue = result;\r\n })\r\n\r\n }\r\n\r\n deleteItem(Index) {\r\n if (this.items.length == this.options.MinRequiredItems && this.options.IsRequired)\r\n return;\r\n let deletedControls: any[] = []\r\n let controlNames = this.options.RepeaterStructure.map(e => e.ControlOptions.Name)\r\n for (const key in this.repeaterGroup.controls) {\r\n if (Object.prototype.hasOwnProperty.call(this.repeaterGroup.controls, key)) {\r\n for (let index = 0; index < controlNames.length; index++) {\r\n const element = controlNames[index];\r\n const keySplitArr = key.split('.')\r\n if (keySplitArr[0] + keySplitArr[1] == `${element}${Index}`) {\r\n const element = this.repeaterGroup.controls[key];\r\n deletedControls.push({ [key]: element })\r\n }\r\n }\r\n }\r\n }\r\n for (let index = 0; index < deletedControls.length; index++) {\r\n const element = deletedControls[index];\r\n for (const key in element) {\r\n if (Object.prototype.hasOwnProperty.call(element, key)) {\r\n this.repeaterGroup.removeControl(key)\r\n }\r\n }\r\n }\r\n this.items = this.items.filter((res) => res != this.items[Index])\r\n }\r\n\r\n\r\n addItem() {\r\n this.items.push(this.items.length);\r\n }\r\n\r\n ngAfterViewInit() {\r\n let templateRefs = (this._templates[\"_results\"] as any[]).map((item) => item[\"template\"])\r\n this.templateRefs = templateRefs\r\n this.repeaterContext.elements = this.templateRefs\r\n this.repeaterContext.delete = this.delete\r\n\r\n }\r\n\r\n setCurrentIndex(i: number) {\r\n this.repeaterContext.index = i;\r\n }\r\n\r\n}\r\n","export enum PermissionSets {\r\n Admin = 1,\r\n BusinessAdmin = 2,\r\n Customer = 3\r\n}\r\nexport enum DataType {\r\n Text = \"7F35E246-7C93-4666-8031-3CE9D2262DB9\",\r\n Email = \"E4F974F6-682F-4CAC-8597-C94E8BF60539\",\r\n Number = \"962060E2-539C-4257-88E5-0259EB8A64F4\",\r\n Name = \"54FE6A3E-1F71-42B8-8C99-06279ED8AA2F\",\r\n Mobile = \"266E2903-D105-4847-AC9B-002AE884A31E\",\r\n MultilineText = \"97F904E0-991B-4F68-B227-217A7B87B8B3\",\r\n HTML = \"57335E2B-E286-401A-A374-72888C3FB753\",\r\n Image = \"1AE5FF1F-856E-41DA-923E-07966F6F8FFE\",\r\n File = \"ACDFEFA7-B406-45B8-9264-78AA440D94B5\",\r\n MultiFile = \"11FAC9EB-D1BB-4F73-9386-64A6C89A70AC\",\r\n Boolean = \"7F89617B-5863-4741-A948-106BBE82D38D\",\r\n Date = \"41182659-A638-4FF0-8E3F-66B89B0B544C\",\r\n DateTime = \"8D899956-8187-4EA1-92EB-B62D50A66323\",\r\n Time = \"B8C225ED-17C3-4AE0-A0E8-3C722B38D8A7\",\r\n Location = \"C486F9C5-0065-4A81-AFA1-03946DBD2214\",\r\n SingleSelect = \"1A63B4B7-DEDE-48C8-8407-10E4170BF761\",\r\n MulipleSelect = \"2CB28735-9D0B-4FBE-A504-8793A4544F94\",\r\n Goal = \"108310CE-9FE1-4914-AB6B-2CF6284472AD\",\r\n Challenge = \"48C419CE-5306-4F6B-87A3-F016E522D9E3\",\r\n CoverPhoto = \"9CC8C0BB-C670-466F-A632-8632FF5C1296\",\r\n InnovationLab = \"4B914ED0-8B36-4E24-B85E-9A04C9F266BE\",\r\n Country = \"342AA701-76C7-4E5D-8056-407BFC86F888\",\r\n AreaOfFocus = \"06a4cfb7-216a-4a60-8388-7a859aab90b4\",\r\n}","import { ControlLayout } from \"../Enums/ControlLayout\"\r\nimport { Attribute } from './Attribute';\r\nimport { CustomValidation } from \"./CustomValidation\";\r\nexport class ControlOptionsBase {\r\n /** Represent Name Of Form Control*/\r\n Name: string\r\n /** Represent classes to Control that allow us to select the Control by jquery or javascript */\r\n ExtraClasses: string\r\n /** Represent classes to label that allow us to select the Control by jquery or javascript */\r\n LabelExtraClasses: string\r\n /** Represent value of the label*/\r\n LabelValue: string\r\n /** Represent Key of the label*/\r\n LabelKey: string\r\n /** Represent value of the labelDescription show under Control*/\r\n LabelDescription: string\r\n /** Represent value of the Placeholder of Control */\r\n Placeholder: string\r\n /**\r\n * Display \"*\" beside the label \r\n * if ForceAsterisk=true and IsRequired=True his display \"*\" ,\r\n * if ForceAsterisk=false and IsRequired=false this remove \"*\",\r\n *if ForceAsterisk=false and IsRequired=True this display \"*\" , \r\n */\r\n ShowAsterisk: boolean\r\n /** Ability to set Control required */\r\n IsRequired: boolean\r\n /** Ability to display or hide the label of Control */\r\n HideLabel: boolean\r\n /** Sets an attribute disable=\"disabled\" */\r\n IsDisabled: boolean = false\r\n /** to set type of view if Control is Vertical or Horizontal */\r\n ViewType: ControlLayout = null;\r\n /** Set List of Custom Attribute to Control */\r\n AttributeList: Attribute[]\r\n /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage */\r\n CustomValidation: CustomValidation[] = []\r\n /** Path of propriety which we need to patch value */\r\n PatchPath: string;\r\n /** Function which call to patch value */\r\n PatchFunction: Function;\r\n /** Sets an attribute readonly */\r\n IsReadonly: boolean = false;\r\n}\r\n","import { ForceDirection } from '../Enums/ForceDirection';\r\nimport { StartView } from '../Enums/StartView';\r\nimport { PickerType } from '../Enums/PickerType';\r\nimport { SelectMode } from '../Enums/SelectMode';\r\nimport { ControlOptionsBase } from './ControlOptionsBase';\r\n\r\nexport class DatePickerOptions extends ControlOptionsBase {\r\n\r\n /**To set value to DatePicker */\r\n Value: Date\r\n /**To set StartDate to DatePicker */\r\n StartDate: Date\r\n /**To set EndDate to DatePicker */\r\n EndDate: Date;\r\n /** add button to for coping to clipboard */\r\n EnableCopyToClipboard: boolean\r\n IsGMT: boolean\r\n /**To set First Day Of Week to DatePicker */\r\n FirstDayOfWeek: number = 1\r\n /**To set Hour12Timer to DatePicker is 12 Hour or 24 Hour*/\r\n Hour12Timer: boolean = true\r\n /**To set PickerType to DatePicker is Calendar or Timer Or Both */\r\n PickerType: PickerType = PickerType.Calendar\r\n /**To set StartView to DatePicker is Year or Month Or Multi-Year */\r\n StartView: StartView = StartView.Month\r\n /**To set SelectMode to DatePicker is Single or Range */\r\n SelectMode: SelectMode = SelectMode.Single\r\n ForceDirection: ForceDirection = null\r\n /**Name of DatePicker control to compare value with it */\r\n StartControlToCompareWith: string = null;\r\n\r\n}\r\n","export enum ForceDirection {\r\n English = 1,\r\n Arabic = 2\r\n }","import { ControlLayout } from '../Enums/ControlLayout'\r\nimport { DropdownListItem } from './DropdownListItem'\r\nimport { CustomValidation } from './CustomValidation'\r\nimport { Attribute } from './Attribute'\r\nimport { ForceDirection } from '../Enums/ForceDirection'\r\nimport { ControlOptionsBase } from './ControlOptionsBase'\r\n\r\nexport class DropdownOptions extends ControlOptionsBase {\r\n\r\n /**To set DataSource to DropdownList */\r\n DataSource: DropdownListItem[]\r\n /**To set SelectedItem to DropdownList */\r\n SelectedItems: any\r\n /** Disable Bootstrap DropdownList */\r\n DisableBootstrapSelect: boolean = false;\r\n /** to set DropdownList in SingleMode Or MultibleMode ,,If false => DisableBootstrapSelect must be equal false */\r\n SingleSelection: boolean\r\n /** to set Number Of selected Element That will Show In The Box */\r\n ItemsShowLimit: number\r\n /** to Show Search Filter Box*/\r\n AllowSearchFilter: boolean\r\n /** to set Limit Of selected Element For DropdownList */\r\n LimitSelection?: number\r\n /** Set css classes to DropdownList */\r\n Classes: string;\r\n /** Allow Show Checkbox */\r\n ShowCheckbox?: boolean;\r\n /** Allow Check ALL Items */\r\n EnableCheckAll?: boolean;\r\n /** Set key for item in DropdownList */\r\n ItemTempletkey: string = \"key\"\r\n /** Set value for item in DropdownList */\r\n ItemTempletvalue: string = \"value\"\r\n ForceDirection: ForceDirection = ForceDirection.English\r\n NotFoundText: string = \"\"\r\n /** Represent Value of disabled items tooltip*/\r\n DisabledItemsTooltipValue: string\r\n\r\n}\r\n","import { FileType } from '../Enums/FileType';\r\nimport { ControlOptionsBase } from './ControlOptionsBase';\r\n\r\nexport class FileUploadOptions extends ControlOptionsBase {\r\n\r\n Value: any;\r\n /** Ability to set FileInput required */\r\n IsMultipleFile: boolean = false\r\n /** Sets boolean Value to Show IsDropZone Or Not */\r\n IsDropZone: boolean = false\r\n /** Set File MaxSize In MB */\r\n FileMaxSizeInMB: number;\r\n /** Set Max Number Of Files */\r\n MaxNoOfFiles: number;\r\n /** Set Min Number Of Files */\r\n MinNoOfFiles: number;\r\n /** Set File MaxSizeForAllFilesInMB In MB */\r\n MaxSizeForAllFilesInMB: number;\r\n /** Set List of Custom Attribute to FileInput */\r\n FileUploadAcceptsTypes: FileType[]\r\n}\r\n","import { ForceDirection } from '../Enums/ForceDirection';\r\nimport { Attribute } from './Attribute';\r\nimport { Misc } from '../Enums/Misc';\r\nimport { Style } from '../Enums/Style';\r\nimport { FontSize } from '../Enums/FontSize';\r\nimport { Para } from '../Enums/Para';\r\nimport { Insert } from '../Enums/Insert';\r\nimport { ControlOptionsBase } from './ControlOptionsBase';\r\n\r\nexport class HtmlEditorOptions extends ControlOptionsBase {\r\n /**To set value to HtmlEditor */\r\n Value:any\r\n //** Set the MaxLength of characters In HtmlEditor */\r\n MaxLength?:number\r\n /**Set the MinLength of characters In HtmlEditor */\r\n MinLength?:number\r\n/** to set Direction of HtmlEditor if HtmlEditor is Arabic or English */\r\n ForceDirection: ForceDirection=ForceDirection.English\r\n /** Set Height For */\r\n Height: number=5\r\n /** Set List of Custom Attribute to HtmlEditor */\r\n AttributeList:Attribute[]\r\n /** Set List of Misc like codeview Or undo Or redo */\r\n ToolsList_Misc?: Misc[];\r\n /** Set List of Style like bold Or italic Or underline Or clear */\r\n ToolsList_Style?: Style[];\r\n /** Set List of FontSize like fontname Or fontsize Or color */\r\n ToolsList_FontSize?: FontSize[];\r\n /** Set List of Para like style Or ul Or ol Or paragraph Or height */\r\n ToolsList_Para?: Para[];\r\n /** Set List of Insert like table Or picture Or link Or video Or hr */\r\n ToolsList_Insert?: Insert[];\r\n\r\n\r\n}\r\n","export enum ImageType\r\n{\r\n ImageTypes='image/png,image/bmp,image/jpeg',\r\n PNG='image/png',\r\n JPG='image/jpeg',\r\n JPEG='image/jpeg',\r\n SVG='image/svg+xml',\r\n None='',\r\n}","import { FileDTO } from './FileDTO';\r\nimport { ImageType } from '../Enums/ImageType';\r\nimport { ControlOptionsBase } from './ControlOptionsBase';\r\n\r\nexport class ImageUploadOptions extends ControlOptionsBase {\r\n\r\n /**To set value to ImageUpload */\r\n Value: FileDTO\r\n /** Allow to Upload Multiple File */\r\n IsMultiple: boolean = false\r\n /** Allow to Use Drop Zone */\r\n AllowDropZone: boolean = true\r\n /** Sets an attribute AllowImageCropper=\"true\" */\r\n AllowImageCropper: boolean\r\n /** Set Height of Image Cropper Box */\r\n ImageCropperHeight: number\r\n /** Set Width of Image Cropper Box */\r\n ImageCropperWidth: number\r\n /** Set File MaxSize In MB */\r\n FileMaxSizeInMB: number;\r\n /** Set List of Custom Attribute to FileInput */\r\n FileUploadAcceptsTypes: ImageType[] = [ImageType.ImageTypes]\r\n /** Set Default Image */\r\n DefaultImageSrc: string\r\n}\r\n","import { MapAutocompleteDTO } from './MapAutocompleteDTO'\r\nimport { ControlOptionsBase } from './ControlOptionsBase'\r\n\r\nexport class MapAutoCompleteOptions extends ControlOptionsBase {\r\n /** Sets Value of MapAutoComplete */\r\n Value:MapAutocompleteDTO\r\n \r\n}\r\n","import { Country } from '../Enums/Countries';\r\nimport { ForceDirection } from '../Enums/ForceDirection';\r\nimport { ControlOptionsBase } from './ControlOptionsBase';\r\n\r\nexport class PhoneOptions extends ControlOptionsBase {\r\n\r\n /**To set value to Phonebox */\r\n Value: any\r\n /** To allow search in country list*/\r\n AllowSearch: boolean\r\n /**Allow To Show Placeholder */\r\n EnablePlaceholder: boolean\r\n /**Allow To Select First Country */\r\n SelectFirstCountry: boolean\r\n /**Set Selected Country To Phone Box*/\r\n SelectedCountryISO: Country\r\n /**Allow Phone Validation */\r\n PhoneValidation: boolean\r\n /**Set List Of Countries As Preferred Countries*/\r\n PreferredCountries: Country[] = []\r\n // **Set List Of Countries to show it in dropdown list and ignore another countries */\r\n OnlyCountries: Country[] = []\r\n ForceDirection: ForceDirection = ForceDirection.English\r\n\r\n}\r\n","export class RangeNumber\r\n{\r\n From?:number\r\n To?: number\r\n}","import { ForceDirection } from '../Enums/ForceDirection';\r\nimport { ControlOptionsBase } from './ControlOptionsBase';\r\n\r\n\r\nexport class TextAreaOptions extends ControlOptionsBase {\r\n /**To set value to Control */\r\n Value: any\r\n //** Set the MaxLength of characters In TextArea */\r\n MaxLength?: number\r\n /**Set the MinLength of characters In TextArea */\r\n MinLength?: number\r\n /**Set Number Of Rows */\r\n Rows: number\r\n /**Set Number Of columns */\r\n Cols: number\r\n //** Set the MaxWordCount of characters In TextArea */\r\n MaxWordCount: number;\r\n /**Prevent AutoComplete of TextArea*/\r\n AutoComplete: boolean\r\n /** text input on change */\r\n TrimTextOnChange: boolean\r\n /** add button to for coping to clipboard */\r\n EnableCopyToClipboard: boolean\r\n /** to set Direction of TextArea if TextArea is Arabic or English */\r\n ForceDirection: ForceDirection\r\n //** Set the MaxLength Limit to show warning message*/\r\n MaxLengthWarningLimit: number;\r\n}\r\n","export enum IconPosition {\r\n left = 1,\r\n right = 2\r\n }\r\n","import { InputType } from '../Enums/InputType';\r\nimport { RangeNumber } from './RangeNumber';\r\nimport { ForceDirection } from '../Enums/ForceDirection';\r\nimport { IconPosition } from '../Enums/IconPosition';\r\nimport { LanguageValidation } from '../Enums/LanguageValidation';\r\nimport { ControlOptionsBase } from './ControlOptionsBase';\r\n\r\nexport class TextBoxOptions extends ControlOptionsBase {\r\n /**To set value to Control */\r\n Value: any\r\n //** Set the MaxLength of characters In TextBox */\r\n MaxLength?: number\r\n /**Set the MinLength of characters In TextBox */\r\n MinLength?: number\r\n //** Set the MaxWordCount of characters In TextBox */\r\n MaxWordCount: number;\r\n /** set Range Number to Textbox with type number with From-Value and To-value*/\r\n NumberRange: RangeNumber = new RangeNumber()\r\n /**Prevent AutoComplete of textbox default value is \"on\" available values \"on\" and \"off\"*/\r\n AutoComplete: string = \"on\"\r\n /** text input on change */\r\n TrimTextOnChange: boolean\r\n /** add button to for coping to clipboard */\r\n EnableCopyToClipboard: boolean\r\n /**Prevent Defulat Password Validation to set Custom Validation */\r\n RemoveDefaultPasswordValidation: boolean\r\n /** to set Direction of textbox if textbox is Arabic or English */\r\n ForceDirection: ForceDirection = null\r\n /** to set Language of textbox if textbox language is Arabic or English */\r\n LanguageValidation: LanguageValidation = null\r\n /** Set Type of TextBox (\"text\",\"password\",\"email\",\"number\") */\r\n Type: InputType = InputType.Text;\r\n /** Set Mask Pattern Attribute to TextBox */\r\n MaskPattern: string\r\n /*icon options*/\r\n Icon: string\r\n IconPosition: IconPosition = IconPosition.left\r\n NoMargin: boolean = false;\r\n ValidationRules: any[] = [];\r\n //** Set the MaxLength Limit to show warning message*/\r\n MaxLengthWarningLimit: number;\r\n\r\n}\r\n","import { ForceDirection } from '../Enums/ForceDirection';\r\nimport { ControlOptionsBase } from './ControlOptionsBase';\r\n\r\nexport class ToggleSlideOptions extends ControlOptionsBase {\r\n\r\n /**Display validation message only on added repeater when add class \"v-required\"*/\r\n ValidationClasses: string\r\n /**To set value to ToggleSlide */\r\n Value: boolean\r\n ForceDirection: ForceDirection = ForceDirection.English\r\n\r\n}\r\n","import { Component, ComponentFactoryResolver, EmbeddedViewRef, Injectable, ViewChild, ViewContainerRef } from \"@angular/core\";\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n\r\n\r\n @Injectable()\r\n export class RenderComponentService {\r\n\r\n constructor( private componentFactoryResolver: ComponentFactoryResolver) {\r\n }\r\n \r\n renderDynamicComponent<T>(viewContainerRef: ViewContainerRef, component: any, group: FormGroup, options: any, size: number = 0) {\r\n let factory = this.componentFactoryResolver.resolveComponentFactory<T>(component)\r\n const componentRef = viewContainerRef.createComponent<T>(factory) as any;\r\n componentRef.instance.group = group;\r\n componentRef.instance.options = options;\r\n if (size > 0) {\r\n let htmlElement = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n // `element` is the element you want to wrap\r\n var parent = htmlElement.parentNode;\r\n var wrapper = document.createElement('div');\r\n wrapper.className = `col-md-${size}`\r\n // set the wrapper as child (instead of the element)\r\n parent.replaceChild(wrapper, htmlElement);\r\n // set element as child of wrapper\r\n wrapper.appendChild(htmlElement);\r\n }\r\n\r\n\r\n }\r\n}\r\n","import { Component, OnInit, Input, Optional, EventEmitter, Output } from '@angular/core';\r\nimport { FormGroup, ControlContainer, FormGroupDirective, AbstractControl, FormControl } from '@angular/forms';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { ToggleSlideOptions } from '../../Shared/Models/ToggleslideOptions';\r\nimport { ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'BBSF-Toggleslide',\r\n templateUrl: './Toggleslide.component.html'\r\n})\r\nexport class ToggleslideComponent implements OnInit {\r\n\r\n\r\n static controlContainerstatic = null;\r\n // tslint:disable-next-line: max-line-length\r\n constructor(private controlUtility: ControlUtility, @Optional() private controlContainer: ControlContainer,\r\n public ToggleslideControlHost: FormGroupDirective, public TextControlHost: FormGroupDirective,\r\n public UtilityService: UtilityService, private controlValidationService: ControlValidationService,\r\n private globalSettings: GlobalSettings) {\r\n ToggleslideComponent.controlContainerstatic = this.controlContainer;\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: ToggleSlideOptions;\r\n @Output() OnChange = new EventEmitter();\r\n ToggleslideFormControl: AbstractControl;\r\n SlideValue: boolean = false;\r\n markAllAsTouched: boolean = false;\r\n textDir;\r\n\r\n ngOnInit() {\r\n if(this.options.ForceDirection)\r\n this.textDir=this.options.ForceDirection==2?'rtl':'ltr';\r\n else\r\n this.textDir=localStorage.getItem('language')=='ar'?'rtl':'ltr';\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.ToggleslideFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n let validationRules = [];\r\n let validationRulesasync = [];\r\n this.SlideValue = this.options.Value == undefined ? false : this.options.Value;\r\n\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n if (this.options.IsDisabled ||this.options.IsReadonly ) {\r\n this.ToggleslideFormControl.disable();\r\n }\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\")\r\n this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n if (this.options.AttributeList != null) {\r\n var element = document.getElementById(this.options.Name);\r\n for (let index = 0; index < this.options.AttributeList.length; index++) {\r\n element.setAttribute(this.options.AttributeList[index].Key, this.options.AttributeList[index].value);\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n resetError() {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n getErrorValidation(ErrorList: any[]): string {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n\r\n\r\n changeValueToggle() {\r\n this.OnChange.emit(this.SlideValue)\r\n this.options.Value= this.SlideValue\r\n this.ToggleslideFormControl.setValue(this.SlideValue)\r\n if (this.options.PatchFunction && this.options.PatchPath && this.ToggleslideFormControl.valid) {\r\n this.controlUtility.patchControlValue(this.SlideValue,this.options.PatchFunction ,this.options.PatchPath)\r\n }\r\n }\r\n}\r\n","import { AfterViewInit, Component, Input, OnInit, SimpleChanges, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { FormGroup, FormGroupDirective } from '@angular/forms';\r\nimport { UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { DataType } from '../../../Shared/Enums/Enums';\r\nimport { InputType } from '../../../Shared/Enums/InputType';\r\nimport { LanguageValidation } from '../../../Shared/Enums/LanguageValidation';\r\nimport { PickerType } from '../../../Shared/Enums/PickerType';\r\nimport { SelectMode } from '../../../Shared/Enums/SelectMode';\r\nimport { StartView } from '../../../Shared/Enums/StartView';\r\nimport { DatePickerOptions } from '../../../Shared/Models/datePickerOptions';\r\nimport { DropdownOptions } from '../../../Shared/Models/DropdownOptions';\r\nimport { FileUploadOptions } from '../../../Shared/Models/FileUploadOptions';\r\nimport { HtmlEditorOptions } from '../../../Shared/Models/HtmlEditorOptions';\r\nimport { ImageUploadOptions } from '../../../Shared/Models/ImageUploadOptions';\r\nimport { MapAutoCompleteOptions } from '../../../Shared/Models/MapAutoCompleteOptions';\r\nimport { PhoneOptions } from '../../../Shared/Models/PhoneOptions';\r\nimport { RangeNumber } from '../../../Shared/Models/RangeNumber';\r\nimport { RepeaterField } from '../../../Shared/Models/RepeaterField';\r\nimport { TextAreaOptions } from '../../../Shared/Models/TextAreaOptions';\r\nimport { TextBoxOptions } from '../../../Shared/Models/TextBoxOptions';\r\nimport { ToggleSlideOptions } from '../../../Shared/Models/ToggleslideOptions';\r\nimport { RenderComponentService } from '../../../Shared/services/render-component-service.service';\r\nimport { DateInputComponent } from '../../DateTimePicker/DateTimePicker.component';\r\nimport { DropdownListComponent } from '../../DropdownList/DropdownList.component';\r\nimport { FileUploadComponent } from '../../FileUplaod/FileUplaod.component';\r\nimport { HtmlEditorComponent } from '../../HtmlEditor/HtmlEditor.component';\r\nimport { ImageUploaderComponent } from '../../ImageUpload/ImageUpload.component';\r\nimport { MapAutoCompleteComponent } from '../../MapAutoComplete/MapAutoComplete.component';\r\nimport { PhoneComponent } from '../../Phone/Phone.component';\r\nimport { TextAreaComponent } from '../../TextArea/TextArea.component';\r\nimport { TextboxComponent } from '../../TextBox/TextBox.component';\r\nimport { ToggleslideComponent } from '../../Toggleslide/toggleslide.component';\r\n\r\n\r\n@Component({\r\n selector: 'repeater-field-builder',\r\n templateUrl: './repeater-field-builder.component.html',\r\n})\r\nexport class RepeaterFieldBuilderComponent implements OnInit, AfterViewInit {\r\n\r\n @ViewChild(\"Item\", { read: ViewContainerRef }) Item: ViewContainerRef;\r\n @Input() group: FormGroup;\r\n @Input() itemNumber: number;\r\n @Input() controlNumber: number;\r\n @Input() RepeaterField: RepeaterField;\r\n @Input() itemsValue: any[] = [];\r\n itemValue: any = null;\r\n value: any;\r\n\r\n constructor(private renderComponentService: RenderComponentService, public TextControlHost: FormGroupDirective) { }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n if (this.itemsValue.length > 0)\r\n this.itemValue = this.itemsValue[this.itemNumber]\r\n if (this.itemValue) {\r\n for (const key in this.itemValue) {\r\n if (Object.prototype.hasOwnProperty.call(this.itemValue, key) && key == this.RepeaterField.ControlOptions.Name) {\r\n const element = this.itemValue[key];\r\n this.value = element;\r\n }\r\n }\r\n }\r\n this.Item.clear()\r\n switch (this.RepeaterField.ControlType) {\r\n ///TextBox\r\n case DataType.Text:\r\n let Text = new TextBoxOptions();\r\n Text.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n Text.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Text.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Text.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Text.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Text.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Text.Type = InputType.Text;\r\n Text.LanguageValidation = this.RepeaterField.ControlOptions.LanguageValidation;\r\n if (this.RepeaterField.ControlOptions.maxLength)\r\n Text.MaxLength = this.RepeaterField.ControlOptions.maxLength\r\n if (this.RepeaterField.ControlOptions.minLength)\r\n Text.MinLength = this.RepeaterField.ControlOptions.minLength\r\n Text.Value = this.value;\r\n Text.IsReadonly = this.RepeaterField.ControlOptions.IsReadonly;\r\n this.renderComponentService.renderDynamicComponent<TextboxComponent>(this.Item, TextboxComponent, this.group, Text)\r\n break;\r\n\r\n case DataType.Name:\r\n let Name = new TextBoxOptions();\r\n Name.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n Name.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Name.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Name.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Name.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Name.LanguageValidation = this.RepeaterField.ControlOptions.LanguageValidation;\r\n Name.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n if (this.RepeaterField.ControlOptions.maxLength)\r\n Name.MaxLength = this.RepeaterField.ControlOptions.maxLength\r\n if (this.RepeaterField.ControlOptions.minLength)\r\n Name.MinLength = this.RepeaterField.ControlOptions.minLength\r\n Name.Type = InputType.Text;\r\n Name.Value = this.value;\r\n this.renderComponentService.renderDynamicComponent<TextboxComponent>(this.Item, TextboxComponent, this.group, Name)\r\n break;\r\n\r\n case DataType.Email:\r\n let Email = new TextBoxOptions();\r\n Email.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n Email.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Email.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Email.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Email.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Email.LanguageValidation = this.RepeaterField.ControlOptions.LanguageValidation;\r\n Email.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Email.Type = InputType.Email;\r\n Email.Value = this.value;\r\n this.renderComponentService.renderDynamicComponent<TextboxComponent>(this.Item, TextboxComponent, this.group, Email)\r\n break;\r\n\r\n case DataType.Number:\r\n let Number = new TextBoxOptions();\r\n Number.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n Number.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Number.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Number.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Number.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Number.LanguageValidation = this.RepeaterField.ControlOptions.LanguageValidation;\r\n Number.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Number.Type = InputType.Number;\r\n let rangeNumber = new RangeNumber()\r\n if(this.RepeaterField.ControlOptions.NumberRange){\r\n rangeNumber.To = this.RepeaterField.ControlOptions.NumberRange.To\r\n rangeNumber.From = this.RepeaterField.ControlOptions.NumberRange.From\r\n }\r\n Number.NumberRange = rangeNumber;\r\n Number.Value = this.value;\r\n Number.IsReadonly = this.RepeaterField.ControlOptions.IsReadonly;\r\n this.renderComponentService.renderDynamicComponent<TextboxComponent>(this.Item, TextboxComponent, this.group, Number)\r\n break;\r\n\r\n ///DateTime\r\n case DataType.Date:\r\n let Date = new DatePickerOptions();\r\n Date.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n Date.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Date.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Date.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Date.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Date.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Date.PickerType = PickerType.Calendar;\r\n Date.SelectMode = SelectMode.Single\r\n Date.StartView = StartView.Month\r\n Date.Value = this.value;\r\n this.renderComponentService.renderDynamicComponent<DateInputComponent>(this.Item, DateInputComponent, this.group, Date)\r\n break;\r\n\r\n case DataType.DateTime:\r\n let DateTime = new DatePickerOptions();\r\n DateTime.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n DateTime.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n DateTime.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n DateTime.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n DateTime.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n DateTime.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n DateTime.PickerType = PickerType.Both;\r\n DateTime.SelectMode = SelectMode.Single\r\n DateTime.StartView = StartView.Month\r\n DateTime.Value = this.value;\r\n this.renderComponentService.renderDynamicComponent<DateInputComponent>(this.Item, DateInputComponent, this.group, DateTime)\r\n break;\r\n\r\n case DataType.Time:\r\n let Time = new DatePickerOptions();\r\n Time.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n Time.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Time.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Time.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Time.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Time.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Time.PickerType = PickerType.Timer;\r\n Time.SelectMode = SelectMode.Single\r\n Time.StartView = StartView.Month\r\n Time.Value = this.value;\r\n this.renderComponentService.renderDynamicComponent<DateInputComponent>(this.Item, DateInputComponent, this.group, Time)\r\n break;\r\n\r\n //Dropdown\r\n case DataType.SingleSelect:\r\n let SingleSelect = new DropdownOptions();\r\n SingleSelect.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n SingleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n SingleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n SingleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n SingleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n SingleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n SingleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource\r\n SingleSelect.SingleSelection = true\r\n SingleSelect.ShowCheckbox = false\r\n SingleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch\r\n SingleSelect.SelectedItems = this.value;\r\n this.renderComponentService.renderDynamicComponent<DropdownListComponent>(this.Item, DropdownListComponent, this.group, SingleSelect)\r\n break;\r\n case DataType.MulipleSelect:\r\n let MulipleSelect = new DropdownOptions();\r\n MulipleSelect.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n MulipleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n MulipleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n MulipleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n MulipleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n MulipleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n MulipleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource\r\n MulipleSelect.SingleSelection = false\r\n MulipleSelect.ShowCheckbox = false\r\n MulipleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch\r\n MulipleSelect.SelectedItems = this.value;\r\n this.renderComponentService.renderDynamicComponent<DropdownListComponent>(this.Item, DropdownListComponent, this.group, MulipleSelect)\r\n break;\r\n case DataType.Goal:\r\n let Goal = new DropdownOptions();\r\n Goal.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n Goal.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Goal.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Goal.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Goal.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Goal.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Goal.DataSource = this.RepeaterField.ControlOptions.dataSource\r\n Goal.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple\r\n Goal.ShowCheckbox = false\r\n Goal.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch\r\n Goal.SelectedItems = this.value;\r\n this.renderComponentService.renderDynamicComponent<DropdownListComponent>(this.Item, DropdownListComponent, this.group, Goal)\r\n break;\r\n case DataType.Challenge:\r\n let Challenge = new DropdownOptions();\r\n Challenge.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n Challenge.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Challenge.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Challenge.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Challenge.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Challenge.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource\r\n Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource\r\n Challenge.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple\r\n Challenge.ShowCheckbox = false\r\n Challenge.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch\r\n Challenge.SelectedItems = this.value;\r\n this.renderComponentService.renderDynamicComponent<DropdownListComponent>(this.Item, DropdownListComponent, this.group, Challenge)\r\n break;\r\n case DataType.InnovationLab:\r\n let InnovationLab = new DropdownOptions();\r\n InnovationLab.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n InnovationLab.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n InnovationLab.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n InnovationLab.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n InnovationLab.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n InnovationLab.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n InnovationLab.DataSource = this.RepeaterField.ControlOptions.dataSource\r\n InnovationLab.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple\r\n InnovationLab.ShowCheckbox = false\r\n InnovationLab.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch\r\n InnovationLab.SelectedItems = this.value;\r\n this.renderComponentService.renderDynamicComponent<DropdownListComponent>(this.Item, DropdownListComponent, this.group, InnovationLab)\r\n break;\r\n case DataType.Country:\r\n let Country = new DropdownOptions();\r\n Country.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n Country.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Country.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Country.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Country.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Country.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Country.DataSource = this.RepeaterField.ControlOptions.dataSource\r\n Country.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple\r\n Country.ShowCheckbox = false\r\n Country.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch\r\n Country.SelectedItems = this.value;\r\n this.renderComponentService.renderDynamicComponent<DropdownListComponent>(this.Item, DropdownListComponent, this.group, Country)\r\n break;\r\n\r\n //FileUpload\r\n case DataType.File:\r\n let File = new FileUploadOptions();\r\n File.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n File.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n File.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n File.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n File.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB\r\n File.Value = this.value;\r\n this.renderComponentService.renderDynamicComponent<FileUploadComponent>(this.Item, FileUploadComponent, this.group, File)\r\n break;\r\n case DataType.MultiFile:\r\n let MultiFile = new FileUploadOptions();\r\n File.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n File.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n File.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n File.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n MultiFile.MaxSizeForAllFilesInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB\r\n MultiFile.MaxNoOfFiles = this.RepeaterField.ControlOptions.maxFileCount\r\n MultiFile.IsMultipleFile = true;\r\n MultiFile.Value = this.value;\r\n this.renderComponentService.renderDynamicComponent<FileUploadComponent>(this.Item, FileUploadComponent, this.group, MultiFile)\r\n break;\r\n //ImageUpload\r\n case DataType.Image:\r\n let Image = new ImageUploadOptions();\r\n Image.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n Image.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Image.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Image.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Image.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Image.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n if (this.RepeaterField.ControlOptions.maxFileSizeInMB)\r\n Image.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB\r\n Image.Value = this.value;\r\n this.renderComponentService.renderDynamicComponent<ImageUploaderComponent>(this.Item, ImageUploaderComponent, this.group, Image)\r\n break;\r\n case DataType.CoverPhoto:\r\n let CoverPhoto = new ImageUploadOptions();\r\n CoverPhoto.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n CoverPhoto.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n CoverPhoto.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n CoverPhoto.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n CoverPhoto.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n CoverPhoto.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n if (this.RepeaterField.ControlOptions.maxFileSizeInMB)\r\n CoverPhoto.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB\r\n CoverPhoto.Value = this.value;\r\n this.renderComponentService.renderDynamicComponent<ImageUploaderComponent>(this.Item, ImageUploaderComponent, this.group, CoverPhoto)\r\n break;\r\n //Mobile\r\n case DataType.Mobile:\r\n let Mobile = new PhoneOptions();\r\n Mobile.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n Mobile.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Mobile.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Mobile.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Mobile.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Mobile.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Mobile.AllowSearch = true;\r\n Mobile.PhoneValidation = true;\r\n Mobile.SelectFirstCountry = true;\r\n Mobile.EnablePlaceholder = true\r\n Mobile.Value = this.value;\r\n this.renderComponentService.renderDynamicComponent<PhoneComponent>(this.Item, PhoneComponent, this.group, Mobile)\r\n break;\r\n //MultilineText\r\n case DataType.MultilineText:\r\n let MultilineText = new TextAreaOptions();\r\n MultilineText.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n MultilineText.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n MultilineText.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n MultilineText.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n MultilineText.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n MultilineText.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n if (this.RepeaterField.ControlOptions.maxLength)\r\n MultilineText.MaxLength = this.RepeaterField.ControlOptions.maxLength\r\n if (this.RepeaterField.ControlOptions.minLength)\r\n MultilineText.MinLength = this.RepeaterField.ControlOptions.minLength\r\n MultilineText.Rows = this.RepeaterField.ControlOptions.rows;\r\n MultilineText.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection\r\n MultilineText.Value = this.value;\r\n this.renderComponentService.renderDynamicComponent<TextAreaComponent>(this.Item, TextAreaComponent, this.group, MultilineText)\r\n break;\r\n //HTML\r\n case DataType.HTML:\r\n let HTML = new HtmlEditorOptions();\r\n HTML.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n HTML.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n HTML.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n HTML.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n HTML.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n HTML.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n if (this.RepeaterField.ControlOptions.maxLength)\r\n HTML.MaxLength = this.RepeaterField.ControlOptions.maxLength\r\n if (this.RepeaterField.ControlOptions.minLength)\r\n HTML.MinLength = this.RepeaterField.ControlOptions.minLength\r\n HTML.Height = this.RepeaterField.ControlOptions.rows;\r\n HTML.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection\r\n HTML.Value = this.value;\r\n this.renderComponentService.renderDynamicComponent<HtmlEditorComponent>(this.Item, HtmlEditorComponent, this.group, HTML)\r\n break;\r\n //Boolean\r\n case DataType.Boolean:\r\n let Boolean = new ToggleSlideOptions();\r\n Boolean.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n Boolean.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Boolean.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Boolean.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Boolean.Value = this.value;\r\n Boolean.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n this.renderComponentService.renderDynamicComponent<ToggleslideComponent>(this.Item, ToggleslideComponent, this.group, Boolean)\r\n break;\r\n //Location\r\n case DataType.Location:\r\n let Location = new MapAutoCompleteOptions();\r\n Location.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n Location.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Location.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Location.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Location.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Location.Value = this.value;\r\n Location.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n this.renderComponentService.renderDynamicComponent<MapAutoCompleteComponent>(this.Item, MapAutoCompleteComponent, this.group, Location)\r\n break;\r\n default:\r\n break;\r\n }\r\n }, 0);\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.itemNumber)\r\n if (changes.itemNumber.previousValue) {\r\n let name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.previousValue.toString() + \".\" + this.controlNumber.toString()\r\n let value = this.group.controls[name].value\r\n this.Item.clear()\r\n this.group.removeControl(name)\r\n switch (this.RepeaterField.ControlType) {\r\n ///TextBox\r\n case DataType.Text:\r\n let Text = new TextBoxOptions();\r\n Text.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n Text.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Text.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Text.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Text.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Text.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Text.Type = InputType.Text;\r\n if (this.RepeaterField.ControlOptions.maxLength)\r\n Text.MaxLength = this.RepeaterField.ControlOptions.maxLength\r\n if (this.RepeaterField.ControlOptions.minLength)\r\n Text.MinLength = this.RepeaterField.ControlOptions.minLength\r\n Text.Value = value;\r\n this.renderComponentService.renderDynamicComponent<TextboxComponent>(this.Item, TextboxComponent, this.group, Text)\r\n break;\r\n\r\n case DataType.Name:\r\n let Name = new TextBoxOptions();\r\n Name.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n Name.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Name.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Name.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Name.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Name.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n if (this.RepeaterField.ControlOptions.maxLength)\r\n Name.MaxLength = this.RepeaterField.ControlOptions.maxLength\r\n if (this.RepeaterField.ControlOptions.minLength)\r\n Name.MinLength = this.RepeaterField.ControlOptions.minLength\r\n Name.Type = InputType.Text;\r\n Name.Value = value;\r\n this.renderComponentService.renderDynamicComponent<TextboxComponent>(this.Item, TextboxComponent, this.group, Name)\r\n break;\r\n\r\n case DataType.Email:\r\n let Email = new TextBoxOptions();\r\n Email.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n Email.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Email.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Email.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Email.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Email.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Email.Type = InputType.Email;\r\n Email.Value = value;\r\n this.renderComponentService.renderDynamicComponent<TextboxComponent>(this.Item, TextboxComponent, this.group, Email)\r\n break;\r\n\r\n case DataType.Number:\r\n let Number = new TextBoxOptions();\r\n Number.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n Number.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Number.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Number.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Number.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Number.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Number.Type = InputType.Number;\r\n let rangeNumber = new RangeNumber()\r\n rangeNumber.To = this.RepeaterField.ControlOptions.maxLength\r\n rangeNumber.From = this.RepeaterField.ControlOptions.minLength\r\n Number.NumberRange = rangeNumber;\r\n Number.Value = value;\r\n this.renderComponentService.renderDynamicComponent<TextboxComponent>(this.Item, TextboxComponent, this.group, Number)\r\n break;\r\n\r\n ///DateTime\r\n case DataType.Date:\r\n let Date = new DatePickerOptions();\r\n Date.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n Date.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Date.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Date.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Date.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Date.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Date.PickerType = PickerType.Calendar;\r\n Date.SelectMode = SelectMode.Single\r\n Date.StartView = StartView.Month\r\n Date.Value = value;\r\n this.renderComponentService.renderDynamicComponent<DateInputComponent>(this.Item, DateInputComponent, this.group, Date)\r\n break;\r\n\r\n case DataType.DateTime:\r\n let DateTime = new DatePickerOptions();\r\n DateTime.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n DateTime.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n DateTime.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n DateTime.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n DateTime.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n DateTime.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n DateTime.PickerType = PickerType.Both;\r\n DateTime.SelectMode = SelectMode.Single\r\n DateTime.StartView = StartView.Month\r\n DateTime.Value = value;\r\n this.renderComponentService.renderDynamicComponent<DateInputComponent>(this.Item, DateInputComponent, this.group, DateTime)\r\n break;\r\n\r\n case DataType.Time:\r\n let Time = new DatePickerOptions();\r\n Time.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n Time.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Time.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Time.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Time.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Time.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Time.PickerType = PickerType.Timer;\r\n Time.SelectMode = SelectMode.Single\r\n Time.StartView = StartView.Month\r\n Time.Value = value;\r\n this.renderComponentService.renderDynamicComponent<DateInputComponent>(this.Item, DateInputComponent, this.group, Time)\r\n break;\r\n\r\n //Dropdown\r\n case DataType.SingleSelect:\r\n let SingleSelect = new DropdownOptions();\r\n SingleSelect.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n SingleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n SingleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n SingleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n SingleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n SingleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n SingleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource\r\n SingleSelect.SingleSelection = true\r\n SingleSelect.ShowCheckbox = false\r\n SingleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch\r\n SingleSelect.SelectedItems = value;\r\n this.renderComponentService.renderDynamicComponent<DropdownListComponent>(this.Item, DropdownListComponent, this.group, SingleSelect)\r\n break;\r\n case DataType.MulipleSelect:\r\n let MulipleSelect = new DropdownOptions();\r\n MulipleSelect.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n MulipleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n MulipleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n MulipleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n MulipleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n MulipleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n MulipleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource\r\n MulipleSelect.SingleSelection = false\r\n MulipleSelect.ShowCheckbox = false\r\n MulipleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch\r\n MulipleSelect.SelectedItems = value;\r\n this.renderComponentService.renderDynamicComponent<DropdownListComponent>(this.Item, DropdownListComponent, this.group, MulipleSelect)\r\n break;\r\n case DataType.Goal:\r\n let Goal = new DropdownOptions();\r\n Goal.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n Goal.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Goal.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Goal.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Goal.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Goal.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Goal.DataSource = this.RepeaterField.ControlOptions.dataSource\r\n Goal.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple\r\n Goal.ShowCheckbox = false\r\n Goal.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch\r\n Goal.SelectedItems = value;\r\n this.renderComponentService.renderDynamicComponent<DropdownListComponent>(this.Item, DropdownListComponent, this.group, Goal)\r\n break;\r\n case DataType.Challenge:\r\n let Challenge = new DropdownOptions();\r\n Challenge.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n Challenge.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Challenge.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Challenge.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Challenge.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Challenge.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource\r\n Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource\r\n Challenge.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple\r\n Challenge.ShowCheckbox = false\r\n Challenge.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch\r\n Challenge.SelectedItems = value;\r\n this.renderComponentService.renderDynamicComponent<DropdownListComponent>(this.Item, DropdownListComponent, this.group, Challenge)\r\n break;\r\n case DataType.InnovationLab:\r\n let InnovationLab = new DropdownOptions();\r\n InnovationLab.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n InnovationLab.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n InnovationLab.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n InnovationLab.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n InnovationLab.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n InnovationLab.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n InnovationLab.DataSource = this.RepeaterField.ControlOptions.dataSource\r\n InnovationLab.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple\r\n InnovationLab.ShowCheckbox = false\r\n InnovationLab.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch\r\n InnovationLab.SelectedItems = value;\r\n this.renderComponentService.renderDynamicComponent<DropdownListComponent>(this.Item, DropdownListComponent, this.group, InnovationLab)\r\n break;\r\n case DataType.Country:\r\n let Country = new DropdownOptions();\r\n Country.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n Country.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Country.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Country.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Country.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Country.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Country.DataSource = this.RepeaterField.ControlOptions.dataSource\r\n Country.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple\r\n Country.ShowCheckbox = false\r\n Country.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch\r\n Country.SelectedItems = value;\r\n this.renderComponentService.renderDynamicComponent<DropdownListComponent>(this.Item, DropdownListComponent, this.group, Country)\r\n break;\r\n\r\n //FileUpload\r\n case DataType.File:\r\n let File = new FileUploadOptions();\r\n File.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n File.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n File.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n File.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n File.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB\r\n File.Value = value;\r\n this.renderComponentService.renderDynamicComponent<FileUploadComponent>(this.Item, FileUploadComponent, this.group, File)\r\n break;\r\n case DataType.MultiFile:\r\n let MultiFile = new FileUploadOptions();\r\n File.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n File.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n File.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n File.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n MultiFile.MaxSizeForAllFilesInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB\r\n MultiFile.MaxNoOfFiles = this.RepeaterField.ControlOptions.maxFileCount\r\n MultiFile.IsMultipleFile = true;\r\n MultiFile.Value = value;\r\n this.renderComponentService.renderDynamicComponent<FileUploadComponent>(this.Item, FileUploadComponent, this.group, MultiFile)\r\n break;\r\n //ImageUpload\r\n case DataType.Image:\r\n let Image = new ImageUploadOptions();\r\n Image.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n Image.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Image.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Image.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Image.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Image.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n if (this.RepeaterField.ControlOptions.maxFileSizeInMB)\r\n Image.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB\r\n Image.Value = value;\r\n this.renderComponentService.renderDynamicComponent<ImageUploaderComponent>(this.Item, ImageUploaderComponent, this.group, Image)\r\n break;\r\n case DataType.CoverPhoto:\r\n let CoverPhoto = new ImageUploadOptions();\r\n CoverPhoto.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n CoverPhoto.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n CoverPhoto.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n CoverPhoto.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n CoverPhoto.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n CoverPhoto.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n if (this.RepeaterField.ControlOptions.maxFileSizeInMB)\r\n CoverPhoto.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB\r\n CoverPhoto.Value = value;\r\n this.renderComponentService.renderDynamicComponent<ImageUploaderComponent>(this.Item, ImageUploaderComponent, this.group, CoverPhoto)\r\n break;\r\n //Mobile\r\n case DataType.Mobile:\r\n let Mobile = new PhoneOptions();\r\n Mobile.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n Mobile.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Mobile.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Mobile.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Mobile.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Mobile.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Mobile.AllowSearch = true;\r\n Mobile.PhoneValidation = true;\r\n Mobile.SelectFirstCountry = true;\r\n Mobile.EnablePlaceholder = true\r\n Mobile.Value = value;\r\n this.renderComponentService.renderDynamicComponent<PhoneComponent>(this.Item, PhoneComponent, this.group, Mobile)\r\n break;\r\n //MultilineText\r\n case DataType.MultilineText:\r\n let MultilineText = new TextAreaOptions();\r\n MultilineText.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n MultilineText.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n MultilineText.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n MultilineText.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n MultilineText.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n MultilineText.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n if (this.RepeaterField.ControlOptions.maxLength)\r\n MultilineText.MaxLength = this.RepeaterField.ControlOptions.maxLength\r\n if (this.RepeaterField.ControlOptions.minLength)\r\n MultilineText.MinLength = this.RepeaterField.ControlOptions.minLength\r\n MultilineText.Rows = this.RepeaterField.ControlOptions.rows;\r\n MultilineText.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection\r\n MultilineText.Value = value;\r\n this.renderComponentService.renderDynamicComponent<TextAreaComponent>(this.Item, TextAreaComponent, this.group, MultilineText)\r\n break;\r\n //HTML\r\n case DataType.HTML:\r\n let HTML = new HtmlEditorOptions();\r\n HTML.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n HTML.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n HTML.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n HTML.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n HTML.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n HTML.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n if (this.RepeaterField.ControlOptions.maxLength)\r\n HTML.MaxLength = this.RepeaterField.ControlOptions.maxLength\r\n if (this.RepeaterField.ControlOptions.minLength)\r\n HTML.MinLength = this.RepeaterField.ControlOptions.minLength\r\n HTML.Height = this.RepeaterField.ControlOptions.rows;\r\n HTML.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection\r\n HTML.Value = value;\r\n this.renderComponentService.renderDynamicComponent<HtmlEditorComponent>(this.Item, HtmlEditorComponent, this.group, HTML)\r\n break;\r\n //Boolean\r\n case DataType.Boolean:\r\n let Boolean = new ToggleSlideOptions();\r\n Boolean.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n Boolean.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Boolean.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Boolean.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Boolean.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Boolean.Value = value;\r\n this.renderComponentService.renderDynamicComponent<ToggleslideComponent>(this.Item, ToggleslideComponent, this.group, Boolean)\r\n break;\r\n //Location\r\n case DataType.Location:\r\n let Location = new MapAutoCompleteOptions();\r\n Location.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n Location.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Location.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Location.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Location.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Location.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Location.Value = value;\r\n this.renderComponentService.renderDynamicComponent<MapAutoCompleteComponent>(this.Item, MapAutoCompleteComponent, this.group, Location)\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit, TemplateRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'repeater-item-field',\r\n templateUrl: './repeater-item-field.component.html'\r\n})\r\nexport class RepeaterItemFieldComponent implements OnInit {\r\n @Input() templates: Array<TemplateRef<any>>;\r\n @Input() filedIndex: number;\r\n @Input() itemIndex: number;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit, QueryList, TemplateRef, ViewChild, ViewChildren } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { RepeaterOptions } from '../../../Shared/Models/RepeaterOptions';\r\nimport { UtilityService } from '@bnsights/bbsf-utilities';\r\n\r\n\r\n@Component({\r\n selector: 'BBSF-repeater-table',\r\n templateUrl: './repeater-table.component.html',\r\n})\r\nexport class RepeaterTableComponent implements OnInit { \r\n @Input() group: FormGroup;\r\n @Input() options: RepeaterOptions;\r\n items: number[] = []\r\n repeaterGroup: FormGroup;\r\n originalItems:any []=[];\r\n\r\n constructor(public utilityService:UtilityService) { }\r\n\r\n ngOnInit(): void {\r\n this.repeaterGroup = new FormGroup({});\r\n this.group.addControl(this.options.Name, this.repeaterGroup);\r\n if(this.options.RepeaterValue.length>0)\r\n {\r\n this.originalItems= this.options.RepeaterValue;\r\n for (let index = 0; index < this.options.RepeaterValue.length; index++) {\r\n this.items.push(index);\r\n }\r\n }\r\n \r\n else\r\n for (let index = 0; index < this.options.MinRequiredItems; index++) {\r\n this.items.push(index);\r\n }\r\n this.repeaterGroup.valueChanges.subscribe((res) => {\r\n let result = [];\r\n let rowNumber = [];\r\n let addItems = [];\r\n for (const key in this.repeaterGroup.controls) {\r\n if (Object.prototype.hasOwnProperty.call(this.repeaterGroup.controls, key)) {\r\n const keySplitArr = key.split('.')\r\n let item = {\r\n [keySplitArr[1]]: { [keySplitArr[0]]: this.group.controls[this.options.Name].value[key] }\r\n }\r\n addItems.push(item)\r\n if (!rowNumber.includes(keySplitArr[1]))\r\n rowNumber.push(keySplitArr[1])\r\n }\r\n }\r\n for (let index = 0; index < rowNumber.length; index++) {\r\n const row = rowNumber[index];\r\n let addObject = {}\r\n let filteredElements = addItems.filter(item => item[row])\r\n for (let index = 0; index < filteredElements.length; index++) {\r\n const filteredElement = filteredElements[index];\r\n for (const key in filteredElement) {\r\n if (Object.prototype.hasOwnProperty.call(filteredElement, key)) {\r\n const element = filteredElement[key];\r\n for (const key in element) {\r\n if (Object.prototype.hasOwnProperty.call(element, key)) {\r\n const value = element[key];\r\n addObject[key] = value\r\n }\r\n }\r\n }\r\n }\r\n }\r\n result.push(addObject)\r\n }\r\n this.options.RepeaterValue = result;\r\n })\r\n\r\n }\r\n\r\n deleteItem(Index) {\r\n if (this.items.length == this.options.MinRequiredItems && this.options.IsRequired)\r\n return;\r\n let deletedControls: any[] = []\r\n let controlNames = this.options.RepeaterStructure.map(e => e.ControlOptions.Name)\r\n for (const key in this.repeaterGroup.controls) {\r\n if (Object.prototype.hasOwnProperty.call(this.repeaterGroup.controls, key)) {\r\n for (let index = 0; index < controlNames.length; index++) {\r\n const element = controlNames[index];\r\n const keySplitArr = key.split('.')\r\n if (keySplitArr[0] + keySplitArr[1] == `${element}${Index}`) {\r\n const element = this.repeaterGroup.controls[key];\r\n deletedControls.push({ [key]: element })\r\n }\r\n }\r\n }\r\n }\r\n for (let index = 0; index < deletedControls.length; index++) {\r\n const element = deletedControls[index];\r\n for (const key in element) {\r\n if (Object.prototype.hasOwnProperty.call(element, key)) {\r\n this.repeaterGroup.removeControl(key)\r\n }\r\n }\r\n }\r\n\r\n this.items = this.items.filter((res) => res != this.items[Index])\r\n }\r\n\r\n addItem() {\r\n if(this.items.length==0)\r\n this.items.push(this.items.length);\r\n else\r\n this.items.push(this.items[this.items.length-1]+1);\r\n}\r\n\r\n\r\n}\r\n","export class RecaptchaModel\r\n{\r\n ID:string;\r\n Text:string;\r\n EncryptedText:string\r\n ImageJpeg:any[]=[];\r\n}","export class CaptchaStyle {\r\n /*Pass hexa-color primary background color*/\r\n BackgroundColorPrimary: string\r\n /*Pass hexa-color secondary background color*/\r\n BackgroundColorSecondary: string\r\n /*Pass hexa-color primary text color*/\r\n TextColorPrimary: string\r\n /*Pass hexa-color secondary text color*/\r\n TextColorSecondary: string\r\n /*Pass font Size */\r\n FontSize: number\r\n}","import { Component, OnInit, Input, Optional, Output, EventEmitter } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, AbstractControl, ControlContainer, FormGroupDirective } from '@angular/forms';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { ControlValidationService, RequestHandlerService, RequestOptionsModel, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\nimport { RecaptchaOptions } from '../../Shared/Models/RecaptchaOptions';\r\nimport { RecaptchaModel } from '../../Shared/Models/Recaptcha';\r\nimport { CaptchaStyle } from '../../Shared/Models/CaptchaStyle';\r\n\r\n@Component({\r\n selector: 'BBSF-Recaptcha',\r\n templateUrl: './Recaptcha.component.html',\r\n})\r\nexport class RecaptchaComponent implements OnInit {\r\n markAllAsTouched: boolean;\r\n constructor(private controlUtility: ControlUtility, private requestHandlerService: RequestHandlerService,\r\n public recaptchaControlHost: FormGroupDirective, public UtilityService: UtilityService,\r\n private controlValidationService: ControlValidationService, private globalSettings: GlobalSettings) {\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: RecaptchaOptions;\r\n @Output() OnChange = new EventEmitter();\r\n\r\n ReCaptchaFormControl: AbstractControl;\r\n validationRules = [];\r\n validationRulesAsync = [];\r\n image: string\r\n recaptchaModel: RecaptchaModel = new RecaptchaModel();\r\n textDir;\r\n\r\n ngOnInit() {\r\n if(this.options.ForceDirection)\r\n this.textDir=this.options.ForceDirection==2?'rtl':'ltr';\r\n else\r\n this.textDir=localStorage.getItem('language')=='ar'?'rtl':'ltr';\r\n this.controlValidationService.isCreatedBefor = false\r\n\r\n this.loadImage();\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.ReCaptchaFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\")\r\n this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);\r\n\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n }\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.validationRules.push(Validation.functionBody);\r\n }\r\n\r\n }\r\n this.ReCaptchaFormControl.setValidators(this.validationRules);\r\n this.ReCaptchaFormControl.setAsyncValidators(this.validationRulesAsync);\r\n if (this.options.IsDisabled) {\r\n this.ReCaptchaFormControl.disable();\r\n }\r\n\r\n this.recaptchaControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n })\r\n }\r\n\r\n loadImage() {\r\n let style: CaptchaStyle = new CaptchaStyle();\r\n style.BackgroundColorPrimary = this.options.BackgroundColorPrimary;\r\n style.BackgroundColorSecondary = this.options.BackgroundColorSecondary;\r\n style.TextColorPrimary= this.options.TextColorPrimary;\r\n style.TextColorSecondary = this.options.TextColorSecondary;\r\n style.FontSize = this.options.FontSize;\r\n let requestOptionsModel = new RequestOptionsModel()\r\n requestOptionsModel.disableBlockUI = true;\r\n requestOptionsModel.disableSuccessNotification = true;\r\n this.requestHandlerService.post(this.options.ActionURL, style, null, null, requestOptionsModel).subscribe((res) => {\r\n let model = res as any\r\n this.recaptchaModel.ID = model.id;\r\n this.recaptchaModel.EncryptedText = model.encryptedText;\r\n this.recaptchaModel.ImageJpeg = model.imageJpeg;\r\n this.image = 'data:image/jpeg;base64,' + this.recaptchaModel.ImageJpeg;\r\n })\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.controlUtility.setAttributeForControl(this.options)\r\n }\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n\r\n\r\n onTextChange(valueText) {\r\n let value = valueText.target.value;\r\n this.recaptchaModel.Text = value;\r\n this.group.get(this.options.Name).setValue(this.recaptchaModel);\r\n this.options.Value = this.recaptchaModel;\r\n this.OnChange.emit(this.ReCaptchaFormControl.value);\r\n }\r\n //External Method\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(this.ReCaptchaFormControl, this.validationRules, this.options)\r\n }\r\n //External Method\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(this.ReCaptchaFormControl, this.validationRules, this.options)\r\n }\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(this.ReCaptchaFormControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(this.ReCaptchaFormControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.ReCaptchaFormControl)\r\n }\r\n}\r\n\r\n\r\n","import { Component, Injector, Input, OnInit } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { DataType } from '../../Shared/Enums/Enums';\r\nimport { PageHeaderOptions } from '../../Shared/Models/page-header-options';\r\n@Component({\r\n selector: 'bbsf-page-header-component',\r\n templateUrl: './page-header-component.component.html'\r\n})\r\nexport class PageHeaderComponentComponent implements OnInit {\r\n EN: boolean;\r\n @Input() group: FormGroup;\r\n @Input() options: PageHeaderOptions;\r\n\r\n public DataTypeEnum = DataType;\r\n\r\n constructor(private router: Router,public utilityService: UtilityService) {\r\n \r\n }\r\n\r\n translate(key: string): string {\r\n return this.utilityService.getResourceValue(key);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.EN = this.utilityService.isCurrentLanguageEnglish();\r\n }\r\n\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'bbsfDateTime'\r\n})\r\nexport class BBSFDateTimePipe implements PipeTransform {\r\n\r\n constructor(public datePipe: DatePipe) { }\r\n transform(value: Date) {\r\n let latest_date = this.datePipe.transform(value, 'dd/MM/yyyy hh:mm a');\r\n return latest_date;\r\n }\r\n}\r\n\r\n\r\n","import { DatePipe } from '@angular/common';\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'bbsfDate'\r\n})\r\nexport class BBSFDatePipe implements PipeTransform {\r\n\r\n constructor(public datePipe: DatePipe){}\r\n transform(value: Date) {\r\n let latest_date =this.datePipe.transform(value, 'dd/MM/yyyy');\r\n return latest_date;\r\n }\r\n\r\n}\r\n","\r\nimport { ModuleWithProviders } from '@angular/core';\r\nexport enum TagInputView {\r\n WithImage = 1,\r\n WithoutImage = 2,\r\n WithInitial = 3,\r\n \r\n }","import { Component, forwardRef, Input, Output, EventEmitter, OnChanges, SimpleChanges, DoCheck, OnInit } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\nimport { TypeaheadMatch } from 'ngx-bootstrap/typeahead/public_api';\r\nimport { TagInputView } from '../Enums/TagInputView';\r\n\r\nconst noop = () => { };\r\n\r\nconst TAGS_INPUT_TEMPLATE = `\r\n\r\n<div class=\"tags-input\">\r\n<span class=\"tags-input__tag label label-primary badge badge-primary\" *ngFor=\"let tag of tags\">\r\n\r\n<span [ngSwitch]=\"ViewMode\">\r\n<span *ngSwitchCase=\"tagInputViewEnum.WithImage\">\r\n<img style=\"border-radius:50%; height:40px; width: 40px; float:left; margin-left:5px ; margin-top: 5px;margin-right: 5px;\"\r\nsrc=\"{{(tag.imageURL?tag.imageURL:defaultImageURL)}}\" />\r\n</span>\r\n\r\n<span *ngSwitchCase=\"tagInputViewEnum.WithInitial\">\r\n<div class=\"user-initials\">{{calculateInitials(tag.name)}}</div>\r\n</span>\r\n\r\n<span *ngSwitchDefault>\r\n</span>\r\n\r\n</span>\r\n {{tag[displayField]}}\r\n <span *ngIf=\"isDeleteable(tag)\" role=\"button\" class=\"tags-input__tag-remove-btn\" (click)=\"removeTag(tag)\"\r\n (touch)=\"removeTag(tag)\">\r\n <span aria-hidden=\"true\">×</span>\r\n <span class=\"sr-only\">Close</span>\r\n </span>\r\n</span>\r\n\r\n<input *ngIf=\"options === null; else withTypeahead\" class=\"tags-input__input-field\" type=\"text\"\r\n [placeholder]=\"getPlaceholder()\" name=\"tags\" (keyup.enter)=\"addTag(tagInput)\"\r\n (keydown.backspace)=\"removeLastTag(tagInput)\" [disabled]=\"!canAddTags || maximumOfTagsReached()\"\r\n [hidden]=\"!canAddTags || maximumOfTagsReached()\" #tagInput />\r\n\r\n<ng-template #withTypeahead>\r\n <span [ngSwitch]=\"ViewMode\">\r\n <span *ngSwitchCase=\"tagInputViewEnum.WithImage\">\r\n <input *ngIf=\"(options !== null)\" class=\"tags-input__input-field\" type=\"text\" [placeholder]=\"getPlaceholder()\"\r\n name=\"tags\" (keydown.backspace)=\"removeLastTag(tagInput)\" [(ngModel)]=\"selected\" [typeahead]=\"options\"\r\n [typeaheadOptionField]=\"displayField\" (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\r\n (typeaheadNoResults)=\"typeaheadOnNoMatch($event)\" [typeaheadMinLength]=\"minLengthBeforeOptions\"\r\n [typeaheadScrollable]=\"scrollableOptions\" [typeaheadLatinize]=\"true\"\r\n [typeaheadItemTemplate]=\"itemTemplateWithImage\" [typeaheadOptionsInScrollableView]=\"scrollableOptionsInView\"\r\n [disabled]=\"!canAddTags || maximumOfTagsReached()\" [hidden]=\"!canAddTags || maximumOfTagsReached()\"\r\n (blur)=\"onBlur()\" autocomplete=\"off\"\r\n #tagInput />\r\n </span>\r\n\r\n <span *ngSwitchCase=\"tagInputViewEnum.WithoutImage\">\r\n <input *ngIf=\"(options !== null)\" class=\"tags-input__input-field\" type=\"text\" [placeholder]=\"getPlaceholder()\"\r\n name=\"tags\" (keydown.backspace)=\"removeLastTag(tagInput)\" [(ngModel)]=\"selected\" [typeahead]=\"options\"\r\n [typeaheadOptionField]=\"displayField\" (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\r\n (typeaheadNoResults)=\"typeaheadOnNoMatch($event)\" [typeaheadMinLength]=\"minLengthBeforeOptions\"\r\n [typeaheadScrollable]=\"scrollableOptions\" [typeaheadLatinize]=\"true\"\r\n [typeaheadItemTemplate]=\"itemTemplateWithoutImage\"\r\n [typeaheadOptionsInScrollableView]=\"scrollableOptionsInView\"\r\n [disabled]=\"!canAddTags || maximumOfTagsReached()\" [hidden]=\"!canAddTags || maximumOfTagsReached()\"\r\n (blur)=\"onBlur()\" autocomplete=\"off\"\r\n #tagInput />\r\n </span>\r\n\r\n <span *ngSwitchCase=\"tagInputViewEnum.WithInitial\">\r\n <input *ngIf=\"(options !== null)\" class=\"tags-input__input-field\" type=\"text\" [placeholder]=\"getPlaceholder()\"\r\n name=\"tags\" (keydown.backspace)=\"removeLastTag(tagInput)\" [(ngModel)]=\"selected\" [typeahead]=\"options\"\r\n [typeaheadOptionField]=\"displayField\" (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\r\n (typeaheadNoResults)=\"typeaheadOnNoMatch($event)\" [typeaheadMinLength]=\"minLengthBeforeOptions\"\r\n [typeaheadScrollable]=\"scrollableOptions\" [typeaheadLatinize]=\"true\"\r\n [typeaheadItemTemplate]=\"itemTemplateWithoutInitial\"\r\n [typeaheadOptionsInScrollableView]=\"scrollableOptionsInView\"\r\n [disabled]=\"!canAddTags || maximumOfTagsReached()\" [hidden]=\"!canAddTags || maximumOfTagsReached()\"\r\n (blur)=\"onBlur()\" autocomplete=\"off\"\r\n #tagInput />\r\n </span>\r\n\r\n <span *ngSwitchDefault>\r\n <input *ngIf=\"(options !== null)\" class=\"tags-input__input-field\" type=\"text\" [placeholder]=\"getPlaceholder()\"\r\n name=\"tags\" (keydown.backspace)=\"removeLastTag(tagInput)\" [(ngModel)]=\"selected\" [typeahead]=\"options\"\r\n [typeaheadOptionField]=\"displayField\" (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\r\n (typeaheadNoResults)=\"typeaheadOnNoMatch($event)\" [typeaheadMinLength]=\"minLengthBeforeOptions\"\r\n [typeaheadScrollable]=\"scrollableOptions\" [typeaheadLatinize]=\"true\"\r\n [typeaheadItemTemplate]=\"itemTemplateWithoutImage\"\r\n [typeaheadOptionsInScrollableView]=\"scrollableOptionsInView\"\r\n [disabled]=\"!canAddTags || maximumOfTagsReached()\" [hidden]=\"!canAddTags || maximumOfTagsReached()\"\r\n (blur)=\"onBlur()\" autocomplete=\"off\"\r\n #tagInput />\r\n </span>\r\n\r\n </span>\r\n\r\n</ng-template>\r\n\r\n<ng-template #itemTemplateWithImage let-model=\"item\" let-index=\"index\">\r\n <img\r\n style=\"border-radius:50%; height:40px; width: 40px; float:left; margin-left:5px ; margin-top: 5px;margin-right: 5px;\"\r\n src=\"{{(model.imageURL?model.imageURL:defaultImageURL)}}\" />\r\n <div>\r\n <a [innerHTML]=\"model.name\"></a>\r\n <p *ngIf=\"showDescription\">\r\n {{model.description}}\r\n </p>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #itemTemplateWithoutImage let-model=\"item\" let-index=\"index\">\r\n <div>\r\n <a [innerHTML]=\"model.name\"></a>\r\n <p *ngIf=\"showDescription\">\r\n {{model.description}}\r\n </p>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #itemTemplateWithoutInitial let-model=\"item\" let-index=\"index\">\r\n <div class=\"user-image\">\r\n <div class=\"user-initials\">{{calculateInitials(model.name)}}</div>\r\n </div>\r\n <div>\r\n <a [innerHTML]=\"model.name\"></a>\r\n <p *ngIf=\"showDescription\">\r\n {{model.description}}\r\n </p>\r\n </div>\r\n</ng-template>\r\n</div>\r\n`;\r\n\r\nconst TAGS_INPUT_STYLE = `\r\n :host {\r\n overflow: auto;\r\n white-space: nowrap;\r\n }\r\n\r\n .tags-input {\r\n align-items: center;\r\n display: flex;\r\n flex-wrap: wrap;\r\n }\r\n\r\n .tags-input__tag {\r\n display: inline-block;\r\n margin-bottom: 2px;\r\n margin-right: 5px;\r\n padding-right: 0.3em;\r\n }\r\n\r\n .tags-input__tag-remove-btn {\r\n cursor: pointer;\r\n display: inline-block;\r\n font-size: 12px;\r\n margin: -3px 0 0 3px;\r\n padding: 0;\r\n vertical-align: top;\r\n }\r\n\r\n .tags-input__input-field {\r\n border: none;\r\n flex-grow: 1;\r\n outline: none;\r\n }\r\n`;\r\n\r\nconst CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => BTagsInputComponent),\r\n multi: true\r\n};\r\n\r\nexport interface TagsChangedEvent {\r\n change: string,\r\n tag: any\r\n}\r\n\r\n@Component({\r\n selector: 'b-tags-input',\r\n template: TAGS_INPUT_TEMPLATE,\r\n styles: [TAGS_INPUT_STYLE],\r\n providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR]\r\n})\r\nexport class BTagsInputComponent implements ControlValueAccessor {\r\n\r\n selected: string = '';\r\n public tags: Array<any> = [];\r\n private onTouchedCallback: () => void = noop;\r\n private onChangeCallback: (_: any) => void = noop;\r\n public tagInputViewEnum = TagInputView;\r\n @Input() maxTags: number;\r\n @Input() removeLastOnBackspace: boolean = false;\r\n @Input() canDeleteTags: boolean = true;\r\n @Input() canAddTags: boolean = true;\r\n @Input() ViewMode: TagInputView = TagInputView.WithoutImage;\r\n @Input() placeholder: string = '';\r\n @Input() showDescription: boolean = true;\r\n @Input() options: any = null;\r\n @Input() defaultImageURL: any = null;\r\n displayField: string = 'name';\r\n @Input() minLengthBeforeOptions: number = 1;\r\n @Input() scrollableOptions: boolean = false;\r\n @Input() scrollableOptionsInView: number = 5;\r\n @Output() onTagsChanged: EventEmitter<TagsChangedEvent> = new EventEmitter();\r\n @Output() onMaxTagsReached: EventEmitter<void> = new EventEmitter();\r\n @Output() onNoOptionsMatch: EventEmitter<boolean> = new EventEmitter();\r\n @Output() onBlurInput: EventEmitter<void> = new EventEmitter();\r\n getPlaceholder(): string {\r\n if (this.tags && this.tags.length > 0) {\r\n return '';\r\n }\r\n return this.placeholder;\r\n }\r\n\r\n private tagsChanged(type: string, tag: any): void {\r\n this.onChangeCallback(this.tags);\r\n this.onTagsChanged.emit({\r\n change: type,\r\n tag: tag\r\n });\r\n if (this.maximumOfTagsReached()) {\r\n this.onMaxTagsReached.emit();\r\n }\r\n }\r\n\r\n removeLastTag(tagInput: HTMLInputElement): void {\r\n if (!this.removeLastOnBackspace || !this.tags?.length) {\r\n return;\r\n }\r\n\r\n if (tagInput.value === '') {\r\n this.removeTag(this.tags[this.tags.length - 1]);\r\n }\r\n }\r\n\r\n addTag(tagInput: HTMLInputElement): void {\r\n if (tagInput.value.trim() !== '') {\r\n let tag = {\r\n [this.displayField]: tagInput.value\r\n };\r\n this.addPredefinedTag(tag);\r\n }\r\n tagInput.value = '';\r\n }\r\n\r\n private addPredefinedTag(tag: Object): void {\r\n if (this.tags == null)\r\n this.tags = [];\r\n if (!this.maximumOfTagsReached()) {\r\n this.tags.push(tag);\r\n this.tagsChanged('add', tag);\r\n }\r\n }\r\n\r\n removeTag(tagToRemove: any): void {\r\n if (!this.isDeleteable(tagToRemove)) {\r\n return;\r\n }\r\n this.tags = this.tags.filter(tag => tagToRemove !== tag);\r\n this.tagsChanged('remove', tagToRemove);\r\n }\r\n\r\n maximumOfTagsReached(): boolean {\r\n return typeof this.maxTags !== 'undefined' && this.tags && this.tags.length >= this.maxTags;\r\n }\r\n\r\n isDeleteable(tag: any) {\r\n if (typeof tag.deleteable !== \"undefined\" && !tag.deleteable) {\r\n return false;\r\n }\r\n return this.canDeleteTags;\r\n }\r\n\r\n typeaheadOnSelect(e: TypeaheadMatch): void {\r\n if (typeof e.item === 'string') {\r\n this.addPredefinedTag({\r\n [this.displayField]: e.value\r\n });\r\n } else {\r\n this.addPredefinedTag(e.item);\r\n }\r\n this.selected = '';\r\n }\r\n\r\n typeaheadOnNoMatch(e: any): void {\r\n if (typeof this.onNoOptionsMatch !== 'undefined') {\r\n this.onNoOptionsMatch.emit(e)\r\n }\r\n }\r\n\r\n writeValue(value: any) {\r\n if (value !== this.tags) {\r\n this.tags = value;\r\n }\r\n }\r\n\r\n registerOnChange(fn: any) {\r\n this.onChangeCallback = fn;\r\n }\r\n\r\n registerOnTouched(fn: any) {\r\n this.onTouchedCallback = fn;\r\n }\r\n\r\n calculateInitials(name: string): string {\r\n var fullName = name.split(' ');\r\n var initials = \"\"\r\n if (fullName.length > 1)\r\n initials = fullName.shift().charAt(0) + fullName.pop().charAt(0);\r\n else\r\n initials = fullName.shift().charAt(0)\r\n return initials.toUpperCase();\r\n }\r\n\r\n onBlur(): void {\r\n this.onBlurInput.emit();\r\n }\r\n // (keydown.Tab) = \"onTab($event)\"\r\n //onTab(event) {\r\n // this.onTabInput.emit();\r\n // event.preventDefault();\r\n // event.stopPropagation();\r\n //}\r\n}\r\n","import { FullCalendarModule } from '@fullcalendar/angular';\r\nimport dayGridPlugin from '@fullcalendar/daygrid';\r\nimport timeGridPlugin from '@fullcalendar/timegrid';\r\nimport listPlugin from '@fullcalendar/list';\r\nimport interactionPlugin from '@fullcalendar/interaction';\r\nimport { NgModule, Injector, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, ModuleWithProviders } from '@angular/core';\r\nimport { BlockUIModule } from 'ng-block-ui';\r\nimport { FormGroupDirective, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { HttpModule } from '@angular/http';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { NgxPermissionsModule } from 'ngx-permissions';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\nimport { StoreDevtoolsModule } from '@ngrx/store-devtools';\r\nimport { CommonModule, DatePipe } from '@angular/common';\r\nimport { NgxIntlTelInputModule } from 'ngx-intl-tel-input';\r\nimport { ErrorMassageValidation } from '../Shared/services/validationErrorMassage.service';\r\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\r\nimport { DateInputComponent } from './DateTimePicker/DateTimePicker.component';\r\nimport { FileUploadComponent } from './FileUplaod/FileUplaod.component';\r\nimport { MultiLingualTextBoxComponent } from './MultiLingualTextBox/MultiLingualTextBox.component';\r\nimport { ControlUtility } from '../Shared/services/ControlUtility';\r\nimport { TextAreaComponent } from './TextArea/TextArea.component';\r\nimport { MultiLingualTextAreaComponent } from './MultiLingualTextArea/MultiLingualTextArea.component';\r\nimport { CheckBoxComponent } from './CheckBox/CheckBox.component';\r\nimport { BrowserAnimationsModule, NoopAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { OwlDateTimeModule, OwlNativeDateTimeModule, OWL_DATE_TIME_LOCALE } from 'ng-pick-datetime';\r\nimport { NgMultiSelectDropDownModule } from 'ng-multiselect-dropdown';\r\nimport { DropdownListComponent } from './DropdownList/DropdownList.component';\r\nimport { AngularMultiSelectModule } from 'angular2-multiselect-dropdown';\r\nimport { PhoneComponent } from './Phone/Phone.component';\r\n// import { ToggleslideComponent } from './Toggleslide/toggleslide.component';\r\nimport { HtmlEditorComponent } from './HtmlEditor/HtmlEditor.component';\r\nimport { NgxSummernoteModule } from 'ngx-summernote';\r\nimport { MultiLingualHtmlEditorComponent } from './MultiLingualHtmlEditor/MultiLingualHtmlEditor.component';\r\nimport { NgxMaskModule, IConfig } from 'ngx-mask'\r\nimport { TooltipModule } from '@syncfusion/ej2-angular-popups';\r\nimport { FileUploadModule } from 'ng2-file-upload';\r\nimport { ImageUploaderComponent } from './ImageUpload/ImageUpload.component';\r\nimport { NgxDropzoneModule } from 'ngx-dropzone';\r\nimport { AngularCropperjsModule } from 'angular-cropperjs';\r\nimport { ImageCropperModule } from 'ngx-image-cropper';\r\nimport { NgbActiveModal, NgbModal, NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ProfileImageUploaderComponent } from './ProfileImageUploader/ProfileImageUploader.component';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { NgxTypeaheadModule } from 'ngx-typeahead';\r\nimport { AutocompleteTextBoxComponent } from './AutocompleteTextBox/AutocompleteTextBox.component';\r\nimport { NgxTagsInputModule } from 'ngx-tags-input';\r\nimport { TagsInputComponent } from './TagsInput/TagsInput.component';\r\nimport { PagingComponent } from './Paging/Paging.component';\r\nimport { JwPaginationComponent } from './Paging/JwPagination.component';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { OnPagingFiltersChangeService } from '../Shared/services/OnPagingFiltersChange.service';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { RadioButtonComponent } from './RadioButton/RadioButton.component';\r\nimport { TextboxComponent } from './TextBox/TextBox.component';\r\nimport { MapAutoCompleteComponent } from './MapAutoComplete/MapAutoComplete.component';\r\nimport { AgmCoreModule } from '@agm/core';\r\nimport { MatGoogleMapsAutocompleteModule } from '@angular-material-extensions/google-maps-autocomplete';\r\nimport { CalendarComponent } from './Calendar/Calendar.component';\r\nimport { TypeaheadModule } from 'ngx-bootstrap/typeahead';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { AngularEditorModule } from '@kolkov/angular-editor';\r\nimport { AutocompleteLibModule } from 'angular-ng-autocomplete';\r\nimport { InlineSVGModule } from 'ng-inline-svg';\r\nimport { BBSFUtilitiesModule, environment } from '@bnsights/bbsf-utilities';\r\nimport { FormComponent } from './Form/Form.component';\r\nimport { ConfirmationModalComponent } from './ConfirmationModal/ConfirmationModal.component';\r\nimport { SweetAlert2Module } from '@sweetalert2/ngx-sweetalert2';\r\nimport { RepeaterComponent } from './Repeater/repeater/repeater.component';\r\nimport { RepeaterFieldBuilderComponent } from './Repeater/repeater-field-builder/repeater-field-builder.component';\r\nimport { NgTemplateNameDirective } from '../Shared/Directives/template-name.directive';\r\nimport { RepeaterItemFieldComponent } from './Repeater/repeater-item-field/repeater-item-field.component';\r\nimport { RenderComponentService } from '../Shared/services/render-component-service.service';\r\nimport { RepeaterTableComponent } from './Repeater/repeater-table/repeater-table.component';\r\n// import { BBSFDateTimePipe } from '../shared/Pipes/bbsf-date-time.pipe';\r\n// import { BBSFDatePipe } from '../shared/Pipes/bbsf-date.pipe';\r\n// import { BTagsInputComponent } from '../Shared/components/ng-tag-input';\r\nimport { RecaptchaComponent } from './Recaptcha/Recaptcha.component';\r\nimport { PageHeaderComponentComponent } from './page-header-component/page-header-component.component';\r\nimport { ToggleslideComponent } from './Toggleslide/toggleslide.component';\r\nimport { BBSFDateTimePipe } from '../shared/Pipes/bbsf-date-time.pipe';\r\nimport { BBSFDatePipe } from '../shared/Pipes/bbsf-date.pipe';\r\nimport { BTagsInputComponent } from '../Shared/Components/ng-tag-input';\r\n\r\nexport let options: Partial<IConfig> | (() => Partial<IConfig>);\r\n\r\nexport let AppInjector: Injector;\r\n\r\n\r\n\r\n// FullCalendarModule.registerPlugins([\r\n// dayGridPlugin,\r\n// timeGridPlugin,\r\n// listPlugin,\r\n// interactionPlugin\r\n// ])\r\n@NgModule({\r\n declarations: [\r\n DateInputComponent,\r\n FileUploadComponent,\r\n MultiLingualTextBoxComponent,\r\n TextboxComponent,\r\n TextAreaComponent,\r\n MultiLingualTextAreaComponent,\r\n CheckBoxComponent,\r\n DropdownListComponent,\r\n PhoneComponent,\r\n ToggleslideComponent,\r\n HtmlEditorComponent,\r\n MultiLingualHtmlEditorComponent,\r\n // MultiLingualHtmlEditorComponent,\r\n ImageUploaderComponent,\r\n ProfileImageUploaderComponent,\r\n CalendarComponent,\r\n MapAutoCompleteComponent,\r\n AutocompleteTextBoxComponent,\r\n TagsInputComponent,\r\n PagingComponent,\r\n JwPaginationComponent,\r\n RadioButtonComponent,\r\n FormComponent,\r\n ConfirmationModalComponent,\r\n RepeaterComponent,\r\n RepeaterFieldBuilderComponent,\r\n NgTemplateNameDirective,\r\n RepeaterItemFieldComponent,\r\n RepeaterTableComponent,\r\n BBSFDateTimePipe,\r\n BBSFDatePipe,\r\n BTagsInputComponent,\r\n RecaptchaComponent,\r\n PageHeaderComponentComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n InfiniteScrollModule,\r\n NgSelectModule,\r\n NgxTagsInputModule,\r\n NgxTypeaheadModule,\r\n AgmCoreModule.forRoot({\r\n // &language=${UtilityService.CurrentLanguage}\r\n apiKey: environment.BBSF_GoogleMapKey,\r\n libraries: ['places'],\r\n }),\r\n MatGoogleMapsAutocompleteModule,\r\n FullCalendarModule,\r\n AngularCropperjsModule,\r\n ImageCropperModule,\r\n NgbModule,\r\n NgxDropzoneModule,\r\n FileUploadModule,\r\n TooltipModule,\r\n NgxMaskModule.forRoot(),\r\n NgxSummernoteModule,\r\n MatSlideToggleModule,\r\n NgxIntlTelInputModule,\r\n AngularMultiSelectModule,\r\n NgMultiSelectDropDownModule.forRoot(),\r\n OwlDateTimeModule,\r\n OwlNativeDateTimeModule,\r\n CommonModule,\r\n BlockUIModule.forRoot(),\r\n ReactiveFormsModule,\r\n HttpModule,\r\n RouterModule,\r\n ToastrModule.forRoot(),\r\n HttpClientModule,\r\n NgxPermissionsModule.forRoot(),\r\n OverlayModule,\r\n StoreDevtoolsModule.instrument(),\r\n FormsModule,\r\n BsDatepickerModule.forRoot(),\r\n TypeaheadModule.forRoot(),\r\n AngularEditorModule,\r\n AutocompleteLibModule,\r\n BBSFUtilitiesModule,\r\n InlineSVGModule.forRoot(),\r\n SweetAlert2Module,\r\n\r\n ],\r\n providers: [\r\n ErrorMassageValidation,\r\n ControlUtility,\r\n OnPagingFiltersChangeService,\r\n TranslateService,\r\n FormGroupDirective,\r\n NgbModal,\r\n NgbActiveModal,\r\n DatePipe,\r\n BBSFDateTimePipe,\r\n BBSFDatePipe,\r\n RenderComponentService,\r\n { provide: OWL_DATE_TIME_LOCALE, useValue: ControlUtility.getLocal() },\r\n\r\n\r\n ],\r\n schemas: [\r\n NO_ERRORS_SCHEMA\r\n ],\r\n\r\n exports: [\r\n DateInputComponent,\r\n FileUploadComponent,\r\n MultiLingualTextBoxComponent,\r\n TextboxComponent,\r\n TextAreaComponent,\r\n MultiLingualTextAreaComponent,\r\n CheckBoxComponent,\r\n DropdownListComponent,\r\n PhoneComponent,\r\n ToggleslideComponent,\r\n HtmlEditorComponent,\r\n MultiLingualHtmlEditorComponent,\r\n ImageUploaderComponent,\r\n ProfileImageUploaderComponent,\r\n CalendarComponent,\r\n MapAutoCompleteComponent,\r\n AutocompleteTextBoxComponent,\r\n TagsInputComponent,\r\n PagingComponent,\r\n JwPaginationComponent,\r\n RadioButtonComponent,\r\n FormComponent,\r\n PagingComponent,\r\n ConfirmationModalComponent,\r\n RepeaterComponent,\r\n RepeaterFieldBuilderComponent,\r\n NgTemplateNameDirective,\r\n RepeaterItemFieldComponent,\r\n RepeaterTableComponent,\r\n BBSFDateTimePipe,\r\n BBSFDatePipe,\r\n RecaptchaComponent,\r\n PageHeaderComponentComponent\r\n ]\r\n})\r\nexport class BBSFControlsModule {\r\n\r\n constructor(private injector: Injector, private translate: TranslateService) {\r\n AppInjector = this.injector;\r\n\r\n }\r\n\r\n}\r\n","import { AbstractControl } from '@angular/forms';\r\n\r\nexport class CustomValidation\r\n{\r\n massage:string;\r\n functionBody:any;\r\n}\r\nexport class CustomValidator{\r\n // Number only validation\r\n static numeric(control: AbstractControl) {\r\n let val = control.value;\r\n \r\n if (val === null || val === '') return null;\r\n \r\n if (!val.toString().match(/^[0-9]+(\\.?[0-9]+)?$/)) return { 'invalidNumber': true };\r\n \r\n return null;\r\n }\r\n }","import { Injector, Injectable } from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport {\r\n UtilityService,\r\n AuthService,\r\n ConfigurationService,\r\n} from '@bnsights/bbsf-utilities';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { AbstractControl, FormGroup, Validators } from '@angular/forms';\r\nimport { ControlUtility } from '../services/ControlUtility';\r\nimport { FilterItem } from '../Models/FilterItem';\r\nimport { CustomValidation } from '../Models/CustomValidation';\r\nimport { EnglishArabicDTO } from '../Models/EnglishArabicDTO';\r\nimport * as saveAs from 'file-saver';\r\nimport { EnvironmentService } from '@bnsights/bbsf-utilities';\r\n\r\n@Injectable()\r\nexport abstract class AppBaseComponent {\r\n public utilityService: UtilityService;\r\n public modalService: NgbModal;\r\n private controlUtility: ControlUtility;\r\n private titleService: Title;\r\n private auhService: AuthService;\r\n private configurationService: ConfigurationService;\r\n public environmentService: EnvironmentService;\r\n public isEN: boolean;\r\n //Labels\r\n public exportLabel: string;\r\n public filtersLabel: string;\r\n public addLabel: string;\r\n public userName: string;\r\n public pageTitle: string = '';\r\n public PageCount: number = 12;\r\n constructor(injector: Injector) {\r\n this.utilityService = injector.get(UtilityService);\r\n this.controlUtility = injector.get(ControlUtility);\r\n this.configurationService = injector.get(ConfigurationService);\r\n this.environmentService = injector.get(EnvironmentService);\r\n this.modalService = injector.get(NgbModal);\r\n this.titleService = injector.get(Title);\r\n this.auhService = injector.get(AuthService);\r\n this.exportLabel = this.utilityService.getResourceValue('Export');\r\n this.filtersLabel = this.utilityService.getResourceValue('Filters');\r\n this.addLabel = this.utilityService.getResourceValue('Add');\r\n this.userName = this.auhService.name();\r\n this.isEN = this.utilityService.isCurrentLanguageEnglish();\r\n }\r\n updatePageTitle(title: string | undefined) {\r\n this.titleService.setTitle(this.calculatePageTitle(title));\r\n }\r\n\r\n l(key: string): string {\r\n return this.utilityService.getResourceValue(key);\r\n }\r\n getConfigurationValue(key: string) {\r\n return this.configurationService.getConfigurationValue(key);\r\n }\r\n getLanguageModeValue() {\r\n return this.configurationService.getConfigurationValue('LanguageMode');\r\n }\r\n stopBlockUI() {\r\n this.utilityService.stopBlockUI();\r\n }\r\n\r\n startBlockUI() {\r\n this.utilityService.startBlockUI();\r\n }\r\n\r\n openModal(modal: any, size?: string) {\r\n if (size)\r\n this.modalService.open(modal, {\r\n size: size,\r\n backdrop: 'static',\r\n keyboard: false,\r\n });\r\n else this.modalService.open(modal, { backdrop: 'static', keyboard: false });\r\n }\r\n\r\n download(fileDTO: any, fileName: string): void {\r\n /*let blob = new Blob([file]);*/\r\n let file = new Blob([fileDTO], {\r\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n });\r\n saveAs(file, fileName);\r\n }\r\n\r\n downloadPDF(fileDTO: any, fileName: string): void {\r\n let file = new Blob([fileDTO], { type: \"application/pdf\" });\r\n saveAs(file, fileName);\r\n }\r\n downloadWord(fileDTO: any, fileName: string): void {\r\n let file = new Blob([fileDTO], { type: \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\" });\r\n saveAs(file, fileName);\r\n }\r\n\r\n\r\n private base64toBlob(base64Data, contentType) {\r\n contentType = contentType || '';\r\n var sliceSize = 1024;\r\n var byteCharacters = atob(base64Data);\r\n var bytesLength = byteCharacters.length;\r\n var slicesCount = Math.ceil(bytesLength / sliceSize);\r\n var byteArrays = new Array(slicesCount);\r\n\r\n for (var sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) {\r\n var begin = sliceIndex * sliceSize;\r\n var end = Math.min(begin + sliceSize, bytesLength);\r\n\r\n var bytes = new Array(end - begin);\r\n for (var offset = begin, i = 0; offset < end; ++i, ++offset) {\r\n bytes[i] = byteCharacters[offset].charCodeAt(0);\r\n }\r\n byteArrays[sliceIndex] = new Uint8Array(bytes);\r\n }\r\n return new Blob(byteArrays, { type: contentType });\r\n }\r\n\r\n private calculatePageTitle(title: string | undefined): string | undefined {\r\n return title\r\n ? title.substring(0, 100) + ` | ${this.l('ApplicationName')}`\r\n : `${this.l('ApplicationName')}`;\r\n }\r\n\r\n getPagingFiltersValues(form: FormGroup, filters: FilterItem[]): any {\r\n let model = new Object();\r\n for (var i = 0; i < filters.length; i++) {\r\n let filterItem = filters[i];\r\n if (form.controls[filterItem.FormControlName].value == undefined)\r\n continue;\r\n model[filterItem.ActionParameterName] =\r\n form.controls[filterItem.FormControlName].value == undefined\r\n ? ''\r\n : form.controls[filterItem.FormControlName].value;\r\n // params = params.append(filterItem.ActionParameterName, form.controls[filterItem.FormControlName].value == undefined ? '' : form.controls[filterItem.FormControlName].value);\r\n }\r\n return model;\r\n }\r\n\r\n removeControl(controlName: string, form: FormGroup) {\r\n form.removeControl(controlName);\r\n }\r\n\r\n copyToClipboard(val: string) {\r\n const selBox = document.createElement('textarea');\r\n selBox.style.position = 'fixed';\r\n selBox.style.left = '0';\r\n selBox.style.top = '0';\r\n selBox.style.opacity = '0';\r\n selBox.value = val;\r\n document.body.appendChild(selBox);\r\n selBox.focus();\r\n selBox.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(selBox);\r\n this.utilityService.notifySuccessMessage(this.l('CopiedSuccessfully'));\r\n }\r\n\r\n addRequiredRule(control: AbstractControl, controlOptions: any) {\r\n this.controlUtility.addRequiredToControl(control, controlOptions);\r\n }\r\n\r\n removeRequiredRule(control: AbstractControl, controlOptions: any) {\r\n this.controlUtility.removeRequiredFromControl(control, controlOptions);\r\n }\r\n\r\n validateDates(\r\n form: FormGroup,\r\n fromDateControl: string,\r\n toDateControl: string,\r\n validationMessageKey: string\r\n ): CustomValidation {\r\n var validator = new CustomValidation();\r\n validator.functionBody = (control) => {\r\n let fromDate = form.controls[fromDateControl].value;\r\n let toDate = form.controls[toDateControl].value;\r\n\r\n if (fromDate && toDate && toDate <= fromDate)\r\n return { customerError: true };\r\n\r\n return null;\r\n };\r\n validator.massage = this.l(validationMessageKey);\r\n return validator;\r\n }\r\n\r\n onSuccessAddHandler = (success: any) => {\r\n this.utilityService.notifySuccessMessage(\r\n this.l('RecordAdded'),\r\n null,\r\n null,\r\n false\r\n );\r\n };\r\n\r\n onSuccessEditHandler = (success: any) => {\r\n this.utilityService.notifySuccessMessage(\r\n this.l('RecordUpdated'),\r\n null,\r\n null,\r\n false\r\n );\r\n };\r\n\r\n onSuccessDeleteHandler = (success: any) => {\r\n this.utilityService.notifySuccessMessage(\r\n this.l('RecordDeleted'),\r\n null,\r\n null,\r\n false\r\n );\r\n };\r\n\r\n recalculatePageTitle() {\r\n this.titleService.setTitle(this.calculatePageTitle(''));\r\n }\r\n\r\n isEnglish() {\r\n return this.utilityService.isCurrentLanguageEnglish();\r\n }\r\n\r\n calculateInitials(name: string): string {\r\n let language = localStorage.getItem('language');\r\n let currentUser = this.auhService.user.profile;\r\n console.log(currentUser);\r\n let userName =\r\n language == 'en' ? currentUser.given_nameEn : currentUser.given_nameAr;\r\n if (currentUser) {\r\n let fullName = userName.split(' ');\r\n let initials: string;\r\n if (fullName.length > 1) {\r\n if (this.isEN)\r\n initials = fullName.shift().charAt(0) + fullName.pop().charAt(0);\r\n else\r\n initials =\r\n fullName.shift().charAt(0) + ' ' + fullName.pop().charAt(0);\r\n } else {\r\n initials = fullName.pop().charAt(0);\r\n }\r\n return initials.toUpperCase();\r\n }\r\n return '';\r\n }\r\n\r\n getCurrentUserInitials(): string {\r\n return this.calculateInitials(this.auhService.name());\r\n }\r\n\r\n getCurrentFailOver(val: EnglishArabicDTO): string {\r\n if (this.isEnglish()) {\r\n if (val.English) return val.English;\r\n else return val.Arabic;\r\n } else {\r\n if (val.Arabic) return val.Arabic;\r\n else return val.English;\r\n }\r\n }\r\n}\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = Object.assign({\r\n},\r\n(window as any).Environment);\r\n\r\n\r\n/*\r\n * In development mode, to ignore zone related error stack frames such as\r\n * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can\r\n * import the following file, but please comment it out in production mode\r\n * because it will have performance impact when throw error\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","import { InputType } from '../Enums/InputType';\r\nimport { RangeNumber } from './RangeNumber';\r\nimport { ForceDirection } from '../Enums/ForceDirection';\r\nimport { IconPosition } from '../Enums/IconPosition';\r\nimport { LanguageValidation } from '../Enums/LanguageValidation';\r\nimport { ControlOptionsBase } from './ControlOptionsBase';\r\nimport { RecaptchaModel } from './Recaptcha';\r\n\r\nexport class RecaptchaOptions extends ControlOptionsBase {\r\n /**To set value to Control */\r\n Value: RecaptchaModel = new RecaptchaModel()\r\n ForceDirection: ForceDirection = null\r\n /**Prevent AutoComplete of control default value is \"on\" available values \"on\" and \"off\"*/\r\n AutoComplete: string = \"on\"\r\n NoMargin: boolean = false;\r\n /**the url of a remote server that supports jsonp calls */\r\n ActionURL: string = \"/api/Home/GetReCaptchaModel\";\r\n /*Pass hexa-color primary background color*/\r\n BackgroundColorPrimary: string = \"\"\r\n /*Pass hexa-color secondary background color*/\r\n BackgroundColorSecondary: string = \"\"\r\n /*Pass hexa-color primary text color*/\r\n TextColorPrimary: string\r\n /*Pass hexa-color secondary text color*/\r\n TextColorSecondary: string\r\n /*Pass font Size */\r\n FontSize: number = 0;\r\n}\r\n","import { ControlLayout } from '../Enums/ControlLayout';\r\nimport { LanguageMode } from '../Enums/LanguageMode';\r\nimport { CustomValidation } from './CustomValidation';\r\nimport { EnglishArabicDTO } from './EnglishArabicDTO';\r\n\r\nexport class MultilingualControlOptionsBase {\r\n /** Represent Name Of Form Control*/\r\n Name: string;\r\n /** Represent key of the Label*/\r\n LabelKey: string;\r\n /** Represent value of the Label*/\r\n LabelValue: string;\r\n /** Represent Key of the label*/\r\n ArabicLabelKey: string;\r\n /** Represent Key of the label*/\r\n EnglishLabelKey: string;\r\n /** Represent value of the ArabicLabel*/\r\n ArabicLabelValue: string;\r\n /** Represent value of the EnglishLabel*/\r\n EnglishLabelValue: string;\r\n /** Represent value of the LabelDescription show under textbox*/\r\n LabelDescription: string;\r\n /** Represent value of the ArabicLabelDescription show under MultipleLanguageText*/\r\n ArabicLabelDescription: string;\r\n /** Represent value of the EnglishLabelDescription show under MultipleLanguageText*/\r\n EnglishLabelDescription: string;\r\n /**Represent ArabicPlaceholder Of Form Control*/\r\n ArabicPlaceholder: string;\r\n /**Represent EnglishPlaceholder Of Form Control*/\r\n EnglishPlaceholder: string;\r\n /** Represent classes to label that allow us to select the Control by jquery or javascript */\r\n LabelExtraClasses: string;\r\n /**Represent classes to Arabic textbox that allow us to select the MultipleLanguageText by jquery or javascript */\r\n ExtraClasses_AR: string;\r\n /**Represent classes to English textbox that allow us to select the MultipleLanguageText by jquery or javascript */\r\n ExtraClasses_EN: string;\r\n /** to set type of view if MultipleLanguageText is Vertical or Horizontal */\r\n ViewType: ControlLayout = null;\r\n /** add button to for coping to clipboard */\r\n EnableCopyToClipboard: boolean;\r\n /**To Set Value To MultipleLanguageText with Object From Type \"EnglishArabicDTO\" */\r\n Value: EnglishArabicDTO = new EnglishArabicDTO();\r\n /**Set the MinLength of characters In TextBox */\r\n MinLength: number;\r\n //** Set the MaxLength of characters In TextBox */\r\n MaxLength: number;\r\n //** Set the MaxWordCount of characters In TextBox */\r\n MaxWordCount: number;\r\n /**\r\n * Display \"*\" beside the label\r\n * if ForceAsterisk=true and IsRequired=True his display \"*\" ,\r\n * if if ForceAsterisk=false and IsRequired=false this remove \"*\",\r\n *if ForceAsterisk=false and IsRequired=True this display \"*\" ,\r\n */\r\n ShowAsterisk: boolean;\r\n /** Ability to set MultipleLanguageText required */\r\n IsRequired: boolean;\r\n /** Sets an attribute disable=\"disabled\" */\r\n IsDisabled: boolean;\r\n /** Ability to display or hide the EnglishField of MultipleLanguageText */\r\n IsHideEnglishFields: boolean;\r\n /** Ability to display or hide the ArabicField of MultipleLanguageText */\r\n IsHideArabicFields: boolean;\r\n /** Ability to display or hide the EnglishLabel of MultipleLanguageText */\r\n IsHideEnglishLabel: boolean;\r\n /** Ability to display or hide the ArabicLable of MultipleLanguageText */\r\n IsHideArabicLabel: boolean;\r\n /** trim input on change */\r\n TrimTextOnChange: boolean;\r\n /**To Set LanguageMode To MultipleLanguageText */\r\n LanguageMode: LanguageMode = null;\r\n /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage */\r\n CustomValidation: CustomValidation[] = [];\r\n /** Path of propriety which we need to patch value */\r\n PatchPath: string;\r\n /** Function which call to patch value */\r\n PatchFunction: Function;\r\n /** Sets an attribute readonly */\r\n IsReadonly: boolean = false;\r\n}\r\n","import { ControlLayout } from '../Enums/ControlLayout';\r\nimport { IconPosition } from '../Enums/IconPosition';\r\nimport { MultilingualControlOptionsBase } from './MultilingualControlOptionsBase';\r\n\r\nexport class MultiLingualTextBoxOptions extends MultilingualControlOptionsBase {\r\n\r\n /*icon options*/\r\n Icon: string\r\n IconPositionEN: IconPosition = IconPosition.left\r\n IconPositionAR: IconPosition = IconPosition.right\r\n /*multi control placement type*/\r\n MultiControlPlacementType: ControlLayout = null\r\n //** Set the MaxLength Limit to show warning message*/\r\n MaxLengthWarningLimit: number;\r\n /**Prevent AutoComplete of inputs default value is \"on\" available values \"on\" and \"off\"*/\r\n AutoComplete: string = \"on\"\r\n}\r\n","export class Attribute\r\n{\r\n Key:string\r\n value: any\r\n}","import { InputType } from '../Enums/InputType';\r\nimport { ControlLayout } from '../Enums/ControlLayout';\r\nimport { MultilingualControlOptionsBase } from './MultilingualControlOptionsBase';\r\n\r\nexport class MultiLingualTextAreaOptions extends MultilingualControlOptionsBase {\r\n Type: InputType;\r\n /**Set Number Of Rows */\r\n Rows: number\r\n /**Set Number Of columns */\r\n Cols: number\r\n /*multi control placement type*/\r\n MultiControlPlacementType: ControlLayout = null;\r\n //** Set the MaxLength Limit to show warning message*/\r\n MaxLengthWarningLimit: number;\r\n}\r\n","import { ForceDirection } from '../Enums/ForceDirection';\r\nimport { ControlOptionsBase } from './ControlOptionsBase';\r\n\r\nexport class CheckBoxOptions extends ControlOptionsBase {\r\n /**To set value to CheckBox */\r\n Value: boolean = null\r\n ForceDirection: ForceDirection = ForceDirection.English\r\n\r\n}","\r\nexport class DropdownListItem\r\n{\r\n id:any\r\n itemName:any\r\n}\r\n","import { InputType } from '../Enums/InputType';\r\nimport { Misc } from '../Enums/Misc';\r\nimport { Style } from '../Enums/Style';\r\nimport { FontSize } from '../Enums/FontSize';\r\nimport { Para } from '../Enums/Para';\r\nimport { Insert } from '../Enums/Insert';\r\nimport { MultilingualControlOptionsBase } from './MultilingualControlOptionsBase';\r\n\r\nexport class MultiLingualHtmlEditorOptions extends MultilingualControlOptionsBase {\r\n Type: InputType;\r\n /** Set Height For */\r\n Height: number=150\r\n /** Set List of Misc like codeview Or undo Or redo */\r\n ToolsList_Misc?: Misc[];\r\n /** Set List of Style like bold Or italic Or underline Or clear */\r\n ToolsList_Style?: Style[];\r\n /** Set List of FontSize like fontname Or fontsize Or color */\r\n ToolsList_FontSize?: FontSize[];\r\n /** Set List of Para like style Or ul Or ol Or paragraph Or height */\r\n ToolsList_Para?: Para[];\r\n /** Set List of Insert like table Or picture Or link Or video Or hr */\r\n ToolsList_Insert?: Insert[];\r\n\r\n\r\n}\r\n","import { ImageType } from '../Enums/ImageType';\r\nimport { EditPersonalImage } from './EditPersonalImage';\r\nimport { SaveDTO } from './SaveDTO';\r\nimport { CancelDTO } from './CancelDTO';\r\nimport { UploadPersonalImage } from './UploadPersonalImage';\r\nimport { ProfilePictureDTO } from './ProfilePictureDTO';\r\nimport { ControlOptionsBase } from './ControlOptionsBase';\r\n\r\nexport class ProfileImageUploadOptions extends ControlOptionsBase {\r\n\r\n /**To set value to FileInput */\r\n Value: ProfilePictureDTO\r\n AllowDropZone: boolean = false\r\n /** Set File MaxSize In MB */\r\n FileMaxSizeInMB: number;\r\n /** Set List of Custom Attribute to FileInput */\r\n ImageUploadAcceptsTypes: ImageType[] = [ImageType.ImageTypes]\r\n /** Set Default Image */\r\n DefaultImageSrc: string\r\n /** Set ImageID Encrypted */\r\n ImageIDEncrypted: string\r\n /** Set EditPersonalImage */\r\n EditPersonalImageTitle: EditPersonalImage\r\n /** Set SaveDTO */\r\n SaveTitle: SaveDTO\r\n /** Set CancelDTO */\r\n CancelTitle: CancelDTO\r\n /** Set UploadPersonalImage */\r\n UploadPersonalImageTitle: UploadPersonalImage\r\n}\r\n","export class SaveDTO\r\n{\r\n constructor()\r\n {\r\n this.English = \"Save\";\r\n this.Arabic = \"حفظ\";\r\n }\r\n English:string \r\n Arabic:string \r\n}","export class CancelDTO\r\n{\r\n constructor()\r\n {\r\n this.English = \"Cancel\";\r\n this.Arabic = \"الغاء\";\r\n }\r\n English:string \r\n Arabic:string \r\n}","export class EditPersonalImage\r\n{\r\n constructor()\r\n {\r\n this.English = \"Edit Personal Image\";\r\n this.Arabic = \"تعديل الصورة الشخصية\";\r\n }\r\n English:string \r\n Arabic:string \r\n}","export class UploadPersonalImage\r\n{\r\n constructor()\r\n {\r\n this.English = \"Upload Personal Image\";\r\n this.Arabic = \"تحميل صورة الشخصية\";\r\n }\r\n English:string \r\n Arabic:string \r\n}","import { CalendarView } from '../Enums/CalendarView'\r\nimport { CalendarEventDTO } from './CalendarEventDTO'\r\nimport { ControlOptionsBase } from './ControlOptionsBase'\r\n\r\nexport class CalendarOptions extends ControlOptionsBase {\r\n /** Represent DefaultView Of Calendar*/\r\n DefaultView: CalendarView = CalendarView.Month\r\n /** Represent OnEventClickFunction Of Calendar*/\r\n OnEventClickFunction: any\r\n /** Represent CalendarViews Of Calendar*/\r\n CalendarViews: CalendarView[] = [CalendarView.Agenda, CalendarView.Daily, CalendarView.Month, CalendarView.Weekly]\r\n /** Represent OnDayClickFunction Of Calendar*/\r\n OnDayClickFunction: any\r\n EventList: CalendarEventDTO[]\r\n /** Set Allowc Calendar Weekends Of Calendar*/\r\n AllowCalendarWeekends: boolean\r\n /** Set Calendar Visible Of Calendar*/\r\n CalendarVisible: boolean = true\r\n /** Set DefaultDate Of Calendar*/\r\n DefaultDate: Date = new Date()\r\n Eventeditable: boolean = false\r\n Eventselectable: boolean = false\r\n dayMaxEvents: boolean | number = false;\r\n\r\n}","export class CalendarEventDTO\r\n{\r\n id: string;\r\n title: string;\r\n start: Date;\r\n end: Date;\r\n colour: string;\r\n allDay:boolean\r\n}","import { TemplateRef } from '@angular/core';\r\nimport { AutocompleteDTO } from './AutocompleteDTO';\r\nimport { InputType } from '../Enums/InputType';\r\nimport { ForceDirection } from '../Enums/ForceDirection';\r\nimport { RangeNumber } from './RangeNumber';\r\nimport { ControlOptionsBase } from './ControlOptionsBase';\r\n\r\nexport class AutocompleteOptions extends ControlOptionsBase {\r\n\r\n /**Represent classes to textbox that allow us to select the AutoComplete by jquery or javascript */\r\n ValidationToken: string = null\r\n /**To set value to textbox */\r\n Value: any = null\r\n //** Set the MaxLength of characters In AutoComplete */\r\n MaxLength?: number\r\n /**Set the MinLength of characters In AutoComplete */\r\n MinLength?: number\r\n //** Set the MaxWordCount of characters In AutoComplete */\r\n MaxWordCount: number;\r\n /** set Range Number to Textbox with type number with From-Value and To-value*/\r\n NumberRange: RangeNumber = new RangeNumber()\r\n /**Prevent AutoComplete of textbox*/\r\n AutoComplete: boolean\r\n /** text input on change */\r\n TrimTextOnChange: boolean\r\n /** add button to for coping to clipboard */\r\n EnableCopyToClipboard: boolean\r\n /**Prevent Defulat Password Validation to set Custom Validation */\r\n RemoveDefulatPasswordValidation: boolean\r\n /** to set Direction of textbox if textbox is Arabic or English */\r\n ForceDirection: ForceDirection = ForceDirection.English\r\n /** Set Type of AutoComplete (\"text\",\"password\",\"email\",\"number\") */\r\n Type: InputType\r\n /** allow add value of AutoComplete dosn't exist in list*/\r\n AllowNewSelection: boolean = false;\r\n ControlId: string;\r\n /**the url of a remote server that supports jsonp calls */\r\n ActionURL: string;\r\n // /**a {key,value} (json) object to include as params for the json call. Each api supports different structure.*/\r\n // Params: object={};\r\n QueryParam: string = 'query'\r\n AutocompleteDTO: AutocompleteDTO\r\n SelectedValue: any = null\r\n ItemWithImage: boolean = false\r\n CustomTemplate:TemplateRef<any>\r\n}\r\n","export class TagsInputDTO\r\n {\r\n ID :string\r\n Name :string\r\n Description :string\r\n ImageURL: string;\r\n}\r\n","import { ControlLayout } from '../Enums/ControlLayout'\r\nimport { CustomValidation } from './CustomValidation'\r\nimport { ForceDirection } from '../Enums/ForceDirection'\r\nimport { Attribute } from './Attribute'\r\nimport { ControlOptionsBase } from './ControlOptionsBase'\r\nimport { TagInputView } from '../Enums/TagInputView'\r\n\r\n\r\nexport class TagsInputOptions extends ControlOptionsBase {\r\n /**To set value to Control */\r\n Value: any\r\n //** Set the MaxLength of characters In AutoComplete */\r\n MaxLength?: number\r\n /**Set the MinLength of characters In AutoComplete */\r\n MinLength?: number\r\n //** Set the MaxWordCount of characters In AutoComplete */\r\n MaxWordCount: number;\r\n /**Prevent AutoComplete of tagsinput*/\r\n AutoComplete: boolean\r\n /** text input on change */\r\n TrimTextOnChange: boolean\r\n /** add button to for coping to clipboard */\r\n EnableCopyToClipboard: boolean\r\n /**Prevent Defulat Password Validation to set Custom Validation */\r\n RemoveDefulatPasswordValidation: boolean\r\n /** to set Direction of tagsinput if tagsinput is Arabic or English */\r\n ForceDirection: ForceDirection = ForceDirection.English\r\n /**the url of a remote server that supports jsonp calls */\r\n ActionURL: string;\r\n /**Remove Last When User Click On Backspace */\r\n RemoveLastOnBackspace: boolean = false\r\n /** Allow User To Delete Tags */\r\n CanDeleteTags: boolean = true\r\n /** Allow User To Add Tags */\r\n CanAddTags: boolean = true\r\n /** Set Max Number Of Tags That User Can Be Select */\r\n MaxNumberTags: number = 30\r\n /** Set Min Length Of Char To Call Search Function */\r\n MinSearchLength: number = 1\r\n /**Allow Scrolle Option In Dropdown */\r\n ScrollableOptions: boolean = true\r\n /** Set Max Number Of Tags That will Be Appear ON Dropdown */\r\n MaxSearchResultsCount: number = 10\r\n /**Value Name Of Tag Option In Dropdown */\r\n DatasourceItemValue: string = \"id\"\r\n /**Text Of Tag That Will Show In Dropdown */\r\n DatasourceItemText: string = \"name\"\r\n /**Text Show when none of the given options match the entered text */\r\n NoResultText: string;\r\n /**Set Query Param Name By Default It's 'query'*/\r\n QueryParamName: string = \"query\"\r\n /**Set Query Param Name By Default It's 'query'*/\r\n SelectedItemsParamName: string = \"SelectedItems\"\r\n /**Set Filter Param Name By Default It's 'query'*/\r\n FilterParamName: string = \"\"\r\n DefaultImgUrl: string = \"\"\r\n /** allow add value of TagInput dosn't exist in list*/\r\n AllowNewSelection: boolean = false;\r\n ValidationToken: string = null;\r\n /**Set Extra Filters*/\r\n ExtraFilters: string;\r\n \r\n TagInputMode: TagInputView = TagInputView.WithoutImage\r\n\r\n ShowDescription: boolean = true;\r\n\r\n}\r\n","import { FilterType } from '../Enums/FilterType';\r\n\r\nexport class FilterItem {\r\n \r\n /** jQuery selector used to retrieve the parameter value*/\r\n\r\n jQuerySelector: string\r\n /** FormControlName used to retrieve the value Of Control*/\r\n FormControlName: string;\r\n /** The action parameter exact name (case sensitive)*/\r\n ActionParameterName: string\r\n /** Check If This Filter Is Form Control Or js Filter */\r\n IsFormControl: boolean=true\r\n /**Set Filter Type To Filter*/\r\n FilterType:FilterType\r\n\r\n}\r\n","import { FilterItem } from './FilterItem'\r\nimport { ForceDirection } from '../Enums/ForceDirection'\r\n\r\nexport class PagingOptions<T = any>{\r\n /**URL of the action that will be called on update*/\r\n ActionPostURL: string = \"\"\r\n ValidationToken: string = null\r\n /** Comma separater list of parameters that need to be passed to the updated function, the parameter name must be the ID of the element that holds the value of the filter.\r\n * ex \"searchText,fromDateTimePicker\" we should have now an input with id searchText and a datetime picker with id fromDateTimePicker*/\r\n Filters: FilterItem[] = []\r\n /**The total count for the items in the datasource */\r\n TotalCount: number = 0\r\n /** No of items in one page \r\n * Default is 10\r\n */\r\n PageSize: number = 10\r\n /**Typeahead search input, used to attach on change events to the search input to refresh the paging after change */\r\n TypeaheadSearchControlNames: string[] = []\r\n /**Comma separater list of Dropdowns filters , used to attach on change events to the dropdown filter to refresh the paging after change */\r\n DropdownFiltersControlNames: string[] = []\r\n /**Comma separater list of Bootstrap datepicker filters, used to attach on change events to the datepicker filter to refresh the paging after change */\r\n BootstrapDatePickersFiltersControlNames: string[] = []\r\n /**Comma separater list of any button/element filters to attach on click event, this will refresh the paging after the event is fired */\r\n OnClickFiltersControlNames: string[] = []\r\n /** Comma separater list of any button/element filters to attach on keypress/Enter event, this will refresh the paging after the event is fired */\r\n OnKeyPressFiltersControlNames: string[] = []\r\n /** The js function name to be called to update the paging total count and keep the current page as is, have to pass the new total count of the datasource items\r\n * Default value is Paging_Update fill this parameter in case there are multiple paging controls */\r\n UpdateFunctionName: string\r\n /** The js function name to be called to reinitialize the paging component with a new items count and reset the curent page to 1, you must pass the new total count of the datasource items\r\n * Default value is Paging_Reinitialize fill this parameter in case there are multiple paging controls*/\r\n ReinitializeFunctionName: string\r\n /**Show a dropdown to be able to change the page size */\r\n ShowPageSizeOption: boolean = false\r\n /**js function name to be called when a page is updated */\r\n OnSuccessCallBackJSFunction: string\r\n /** bool to set block ui by container rather than the whole window */\r\n BlockUIByContainer: boolean = true\r\n /**hide Pagination When Page Size Equal One */\r\n HidePaginationWhenPageSizeEqualOne: boolean = true\r\n /**Show First And Last */\r\n ShowFirstAndLast: boolean = true\r\n /**Show Load More Button And Hide Paging */\r\n IsLoadMoreControl: boolean = false\r\n /** Load More items While Scrolling */\r\n IsInfiniteScroll: boolean = false\r\n /**should get a html element or css selector for a scrollable element; window or current element will be used if this attribute is empty. */\r\n InfiniteScrollContainer\r\n /**listens to the window scroll instead of the actual element scroll. this allows to invoke a callback function in the scope of the element while listenning to the window scroll. */\r\n ScrollWindow: boolean = true\r\n ForceDirection: ForceDirection = ForceDirection.English\r\n TypeOfResponse?: new () => T\r\n /** Clear Filter button selector */\r\n ResetFilterButtonName: string = null;\r\n DisableBlockUI: boolean = false;\r\n StartPagingCallback: Function = null;\r\n}\r\n","\r\nimport { ControlOptionsBase } from './ControlOptionsBase';\r\nimport { RadioButtonItem } from './RadioButtonItem';\r\n\r\nexport class RadioButtonOptions extends ControlOptionsBase {\r\n /**To set value to RadioButton */\r\n Value: RadioButtonItem\r\n /** Set List of Custom Attribute to RadioButton */\r\n Items: RadioButtonItem[]\r\n\r\n}\r\n","\r\n\r\nexport class RadioButtonItem {\r\n Text: string\r\n Value :any\r\n}\r\n","import { FormGroup } from '@angular/forms';\r\nimport { ElementRef } from '@angular/core';\r\nimport { PagingActionMode } from '../Enums/PagingActionMode';\r\nimport { PagingComponent } from '../../controls/Paging/Paging.component';\r\n\r\nexport class FormOptions {\r\n\r\n //Represents form group of contol\r\n FormGroup: FormGroup = null;\r\n\r\n //Represents refrence to paging control that needs to be updated after success\r\n PagingReference: PagingComponent<any> = null\r\n\r\n //Represents paging action excutes after submission (Reinitialize/Update)\r\n PagingActionMode: PagingActionMode = PagingActionMode.Reinitialize;\r\n\r\n //Represents function that get form model for submission\r\n GetModelFunction: Function = null;\r\n\r\n //Represents service function for submission\r\n ServiceSubmitFunction: Function = null;\r\n\r\n //Represents function that excutes after submission error\r\n OnErrorHandler: Function = null;\r\n\r\n //Represents function that excutes after submission success\r\n OnSuccessHandler: Function = null;\r\n\r\n //If =\"true\" disable notification after submission success\r\n DisableSuccessNotification: boolean = false;\r\n\r\n //If =\"true\" disable notification after submission error\r\n DisableErrorNotification: boolean = false;\r\n\r\n //If =\"true\" disable startblockui before submission\r\n DisableBlockUI: boolean = false;\r\n\r\n //If =\"true\" disable modal from dismiss automatically \r\n DisableModalDismiss: boolean = false;\r\n}\r\n","import { PagingComponent } from \"../../controls/Paging/Paging.component\";\r\nimport { PagingActionMode } from \"../Enums/PagingActionMode\";\r\nimport { StyleConfirmationMode } from \"../Enums/StyleConfirmationMode\";\r\n\r\n\r\nexport class ConfirmationModalOptions {\r\n //Represents confirmation modal title\r\n ConfirmationHeader: string = null;\r\n\r\n //Represents confirmation modal body\r\n ConfirmationBody: string = null;\r\n\r\n //Represents confirmation modal submit button text\r\n SubmitButtonText: string = null;\r\n\r\n //Represents confirmation modal body style\r\n StyleConfirmationMode: StyleConfirmationMode = StyleConfirmationMode.Danger;\r\n\r\n //Represents service function for submission\r\n ServiceSubmitFunction: Function = null;\r\n\r\n //Represents model sent to service submit function\r\n ServiceSubmitModel: any[] = [];\r\n\r\n //Represents refrence to paging control that needs to be updated after success\r\n PagingReference: PagingComponent<any> = null\r\n\r\n //Represents paging action excutes after submission (Reinitialize/Update)\r\n PagingActionMode: PagingActionMode = PagingActionMode.Reinitialize;\r\n\r\n //Represents function that excutes after submission error\r\n OnErrorHandler: Function = null;\r\n\r\n //Represents function that excutes after submission success\r\n OnSuccessHandler: Function = null;\r\n\r\n //Represents message appears in notification after success\r\n SuccessNotificationMessage: string = null;\r\n\r\n //If =\"true\" disable notification after submission success\r\n DisableSuccessNotification: boolean = false;\r\n\r\n //If =\"true\" disable notification after submission error\r\n DisableErrorNotification: boolean = false;\r\n\r\n //If =\"true\" disable prevent modal from dismiss automatically \r\n DisableModalDismiss: boolean = false;\r\n //If =\"false\" prevent modal to show cancel button\r\n showCancelButton: boolean = true;\r\n //If =\"false\" prevent modal to show close button\r\n showCloseButton: boolean = true;\r\n\r\n}\r\n","import { DataType } from \"../Enums/Enums\";\r\nexport class RepeaterField {\r\n HeaderTitle: string;\r\n ControlType: DataType;\r\n ControlOptions: any;\r\n IsHiddenInput: boolean;\r\n}\r\n","import { RepeaterField } from \"./RepeaterField\";\r\n\r\nexport class RepeaterOptions {\r\n IsRequired: boolean;\r\n MinRequiredItems: number;\r\n ExtraClasses: string;\r\n Name: string;\r\n ActionLabelKey: string = \"\";\r\n AddButtonExtraClasses: string;\r\n RepeaterTableExtraClasses: string\r\n RepeaterTableRowExtraClasses: string\r\n AddButtonText: string = \"Add\";\r\n DeleteButtonExtraClasses: string;\r\n DeleteButtonText: string = \"Delete\";\r\n RepeaterValue: any[] = [];\r\n RepeaterStructure: RepeaterField[] = [];\r\n DisableAddButton: boolean = false;\r\n DisableDeleteButton: boolean = false;\r\n IsReadonly: boolean = false;\r\n}\r\n","import { ControlFilterItem } from \"./control-filter-Item\";\r\nexport class FilterOptions {\r\n ControlsOptions:ControlFilterItem[]=[];\r\n ApplyFunction:Function = null;\r\n RestFunction:Function = null;\r\n ShowLoadingInFiltersBox:boolean=false;\r\n}\r\n","import { BreadCrumb } from \"./bread-crumb\";\r\nimport { FilterOptions } from \"./filter-options\";\r\nimport { TextBoxOptions } from \"./TextBoxOptions\";\r\n\r\nexport class PageHeaderOptions {\r\n constructor() {\r\n this.BreadCrumb = new BreadCrumbModel();\r\n this.AddButton = new AddButton();\r\n this.EditButton = new EditButton();\r\n this.DeleteButton = new DeleteButton();\r\n this.ExportButton = new ExportButton();\r\n this.GridView = new GridViewModel();\r\n this.SearchTextBox = new TextBoxModel();\r\n this.FiltersButton = new FiltersButton();\r\n this.Filters = new FilterOptions();\r\n this.DropDownActions = new DropdownActions();\r\n }\r\n TitleKey: string;\r\n TitleValue: string;\r\n SubTitleKey: string;\r\n BreadCrumb: BreadCrumbModel;\r\n AddButton: AddButton;\r\n EditButton: EditButton;\r\n DeleteButton: DeleteButton;\r\n ExportButton: ExportButton;\r\n GridView: GridViewModel;\r\n SearchTextBox: TextBoxModel;\r\n FiltersButton: FiltersButton;\r\n Filters: FilterOptions;\r\n DropDownActions: DropdownActions;\r\n Listing: boolean;\r\n}\r\n\r\nexport class BreadCrumbModel {\r\n Active: boolean\r\n BreadCrumbItems: BreadCrumb[] = [];\r\n}\r\nexport class AddButton {\r\n Active: boolean;\r\n ButtonTextKey: string=\"Add\";\r\n Function: Function = null;\r\n}\r\nexport class EditButton {\r\n Active: boolean;\r\n ButtonTextKey: string = \"Edit\";\r\n Function: Function = null;\r\n}\r\nexport class DeleteButton {\r\n Active: boolean;\r\n ButtonTextKey: string = \"Delete\";\r\n Function: Function = null;\r\n}\r\nexport class FiltersButton {\r\n Active: boolean;\r\n ButtonTextKey: string = \"Filter\";\r\n Function: Function = null;\r\n ShowLoadingInFiltersBox: boolean = true;\r\n\r\n constructor() {\r\n this.ButtonTextKey = \"Filter\";\r\n }\r\n}\r\nexport class ExportButton {\r\n Active: boolean;\r\n ButtonTextKey: string = \"Export\";\r\n Function: Function = null;\r\n}\r\nexport class GridViewModel {\r\n Active: boolean;\r\n ToggleFunction: Function = null;\r\n ShowGridViewByDefault: boolean;\r\n}\r\nexport class TextBoxModel {\r\n Active: boolean;\r\n TextSearchBoxOptions: TextBoxOptions = new TextBoxOptions();\r\n}\r\nexport class DropdownActions {\r\n Active: boolean;\r\n DropdownActionItems: DropdownActionItem[] = []\r\n}\r\nexport class DropdownActionItem {\r\n constructor(text: string, svg: string, functionName: Function,routerLink:string=null) {\r\n this.Text = text;\r\n this.SVG = svg;\r\n this.Function = functionName;\r\n this.RouterLink = routerLink;\r\n }\r\n Text: string;\r\n SVG: string;\r\n Function: Function = null;\r\n RouterLink :string\r\n}\r\n","import { DataType } from \"../Enums/Enums\";\r\nexport class ControlFilterItem {\r\n key:DataType;\r\n value:any;\r\n onChange?:Function = null;\r\n}\r\n","export class BreadCrumb {\r\n constructor(label: string, active: boolean, route: string = null) {\r\n this.label = label;\r\n this.active = active;\r\n this.route = route;\r\n }\r\n label: string;\r\n active: boolean;\r\n route: string;\r\n }\r\n ","export enum MenuListType {\r\n AdminType =1 ,\r\n UserType = 2,\r\n \r\n}","export enum Country {\r\n Afghanistan = \"af\",\r\n Albania = \"al\",\r\n Algeria = \"dz\",\r\n AmericanSamoa = \"as\",\r\n Andorra = \"ad\",\r\n Angola = \"ao\",\r\n Anguilla = \"ai\",\r\n AntiguaAndBarbuda = \"ag\",\r\n Argentina = \"ar\",\r\n Armenia = \"am\",\r\n Aruba = \"aw\",\r\n Australia = \"au\",\r\n Austria = \"at\",\r\n Azerbaijan = \"az\",\r\n Bahamas = \"bs\",\r\n Bahrain = \"bh\",\r\n Bangladesh = \"bd\",\r\n Barbados = \"bb\",\r\n Belarus = \"by\",\r\n Belgium = \"be\",\r\n Belize = \"bz\",\r\n Benin = \"bj\",\r\n Bermuda = \"bm\",\r\n Bhutan = \"bt\",\r\n Bolivia = \"bo\",\r\n BosniaAndHerzegovina = \"ba\",\r\n Botswana = \"bw\",\r\n Brazil = \"br\",\r\n BritishIndianOceanTerritory = \"io\",\r\n BritishVirginIslands = \"vg\",\r\n Brunei = \"bn\",\r\n Bulgaria = \"bg\",\r\n BurkinaFaso = \"bf\",\r\n Burundi = \"bi\",\r\n Cambodia = \"kh\",\r\n Cameroon = \"cm\",\r\n Canada = \"ca\",\r\n CapeVerde = \"cv\",\r\n CaribbeanNetherlands = \"bq\",\r\n CaymanIslands = \"ky\",\r\n CentralAfricanRepublic = \"cf\",\r\n Chad = \"td\",\r\n Chile = \"cl\",\r\n China = \"cn\",\r\n ChristmasIsland = \"cx\",\r\n Cocos = \"cc\",\r\n Colombia = \"co\",\r\n Comoros = \"km\",\r\n CongoDRCJamhuriYaKidemokrasiaYaKongo = \"cd\",\r\n CongoRepublicCongoBrazzaville = \"cg\",\r\n CookIslands = \"ck\",\r\n CostaRica = \"cr\",\r\n CôteDIvoire = \"ci\",\r\n Croatia = \"hr\",\r\n Cuba = \"cu\",\r\n Curaçao = \"cw\",\r\n Cyprus = \"cy\",\r\n CzechRepublic = \"cz\",\r\n Denmark = \"dk\",\r\n Djibouti = \"dj\",\r\n Dominica = \"dm\",\r\n DominicanRepublic = \"do\",\r\n Ecuador = \"ec\",\r\n Egypt = \"eg\",\r\n ElSalvador = \"sv\",\r\n EquatorialGuinea = \"gq\",\r\n Eritrea = \"er\",\r\n Estonia = \"ee\",\r\n Ethiopia = \"et\",\r\n FalklandIslands = \"fk\",\r\n FaroeIslands = \"fo\",\r\n Fiji = \"fj\",\r\n Finland = \"fi\",\r\n France = \"fr\",\r\n FrenchGuiana = \"gf\",\r\n FrenchPolynesia = \"pf\",\r\n Gabon = \"ga\",\r\n Gambia = \"gm\",\r\n Georgia = \"ge\",\r\n Germany = \"de\",\r\n Ghana = \"gh\",\r\n Gibraltar = \"gi\",\r\n Greece = \"gr\",\r\n Greenland = \"gl\",\r\n Grenada = \"gd\",\r\n Guadeloupe = \"gp\",\r\n Guam = \"gu\",\r\n Guatemala = \"gt\",\r\n Guernsey = \"gg\",\r\n Guinea = \"gn\",\r\n GuineaBissau = \"gw\",\r\n Guyana = \"gy\",\r\n Haiti = \"ht\",\r\n Honduras = \"hn\",\r\n HongKong = \"hk\",\r\n Hungary = \"hu\",\r\n Iceland = \"is\",\r\n India = \"in\",\r\n Indonesia = \"id\",\r\n Iran = \"ir\",\r\n Iraq = \"iq\",\r\n Ireland = \"ie\",\r\n IsleOfMan = \"im\",\r\n Israel = \"il\",\r\n Italy = \"it\",\r\n Jamaica = \"jm\",\r\n Japan = \"jp\",\r\n Jersey = \"je\",\r\n Jordan = \"jo\",\r\n Kazakhstan = \"kz\",\r\n Kenya = \"ke\",\r\n Kiribati = \"ki\",\r\n Kosovo = \"xk\",\r\n Kuwait = \"kw\",\r\n Kyrgyzstan = \"kg\",\r\n Laos = \"la\",\r\n Latvia = \"lv\",\r\n Lebanon = \"lb\",\r\n Lesotho = \"ls\",\r\n Liberia = \"lr\",\r\n Libya = \"ly\",\r\n Liechtenstein = \"li\",\r\n Lithuania = \"lt\",\r\n Luxembourg = \"lu\",\r\n Macau = \"mo\",\r\n Macedonia = \"mk\",\r\n Madagascar = \"mg\",\r\n Malawi = \"mw\",\r\n Malaysia = \"my\",\r\n Maldives = \"mv\",\r\n Mali = \"ml\",\r\n Malta = \"mt\",\r\n MarshallIslands = \"mh\",\r\n Martinique = \"mq\",\r\n Mauritania = \"mr\",\r\n Mauritius = \"mu\",\r\n Mayotte = \"yt\",\r\n Mexico = \"mx\",\r\n Micronesia = \"fm\",\r\n Moldova = \"md\",\r\n Monaco = \"mc\",\r\n Mongolia = \"mn\",\r\n Montenegro = \"me\",\r\n Montserrat = \"ms\",\r\n Morocco = \"ma\",\r\n Mozambique = \"mz\",\r\n Myanmar = \"mm\",\r\n Namibia = \"na\",\r\n Nauru = \"nr\",\r\n Nepal = \"np\",\r\n Netherlands = \"nl\",\r\n NewCaledonia = \"nc\",\r\n NewZealand = \"nz\",\r\n Nicaragua = \"ni\",\r\n Niger = \"ne\",\r\n Nigeria = \"ng\",\r\n Niue = \"nu\",\r\n NorfolkIsland = \"nf\",\r\n NorthKorea = \"kp\",\r\n NorthernMarianaIslands = \"mp\",\r\n Norway = \"no\",\r\n Oman = \"om\",\r\n Pakistan = \"pk\",\r\n Palau = \"pw\",\r\n Palestine = \"ps\",\r\n Panama = \"pa\",\r\n PapuaNewGuinea = \"pg\",\r\n Paraguay = \"py\",\r\n Peru = \"pe\",\r\n Philippines = \"ph\",\r\n Poland = \"pl\",\r\n Portugal = \"pt\",\r\n PuertoRico = \"pr\",\r\n Qatar = \"qa\",\r\n Réunion = \"re\",\r\n Romania = \"ro\",\r\n Russia = \"ru\",\r\n Rwanda = \"rw\",\r\n SaintBarthélemy = \"bl\",\r\n SaintHelena = \"sh\",\r\n SaintKittsAndNevis = \"kn\",\r\n SaintLucia = \"lc\",\r\n SaintMartin = \"mf\",\r\n SaintPierreAndMiquelon = \"pm\",\r\n SaintVincentAndTheGrenadines = \"vc\",\r\n Samoa = \"ws\",\r\n SanMarino = \"sm\",\r\n SãoToméAndPríncipe = \"st\",\r\n SaudiArabia = \"sa\",\r\n Senegal = \"sn\",\r\n Serbia = \"rs\",\r\n Seychelles = \"sc\",\r\n SierraLeone = \"sl\",\r\n Singapore = \"sg\",\r\n SintMaarten = \"sx\",\r\n Slovakia = \"sk\",\r\n Slovenia = \"si\",\r\n SolomonIslands = \"sb\",\r\n Somalia = \"so\",\r\n SouthAfrica = \"za\",\r\n SouthKorea = \"kr\",\r\n SouthSudan = \"ss\",\r\n Spain = \"es\",\r\n SriLanka = \"lk\",\r\n Sudan = \"sd\",\r\n Suriname = \"sr\",\r\n SvalbardAndJanMayen = \"sj\",\r\n Swaziland = \"sz\",\r\n Sweden = \"se\",\r\n Switzerland = \"ch\",\r\n Syria = \"sy\",\r\n Taiwan = \"tw\",\r\n Tajikistan = \"tj\",\r\n Tanzania = \"tz\",\r\n Thailand = \"th\",\r\n TimorLeste = \"tl\",\r\n Togo = \"tg\",\r\n Tokelau = \"tk\",\r\n Tonga = \"to\",\r\n TrinidadAndTobago = \"tt\",\r\n Tunisia = \"tn\",\r\n Turkey = \"tr\",\r\n Turkmenistan = \"tm\",\r\n TurksAndCaicosIslands = \"tc\",\r\n Tuvalu = \"tv\",\r\n USVirginIslands = \"vi\",\r\n Uganda = \"ug\",\r\n Ukraine = \"ua\",\r\n UnitedArabEmirates = \"ae\",\r\n UnitedKingdom = \"gb\",\r\n UnitedStates = \"us\",\r\n Uruguay = \"uy\",\r\n Uzbekistan = \"uz\",\r\n Vanuatu = \"vu\",\r\n VaticanCity = \"va\",\r\n Venezuela = \"ve\",\r\n Vietnam = \"vn\",\r\n WallisAndFutuna = \"wf\",\r\n WesternSahara = \"eh\",\r\n Yemen = \"ye\",\r\n Zambia = \"zm\",\r\n Zimbabwe = \"zw\",\r\n ÅlandIslands = \"ax\"\r\n}\r\n","export enum FontSize\r\n{\r\n fontname = 'fontname' ,\r\n fontsize = 'fontsize',\r\n color = 'color',\r\n \r\n}\r\n\r\n","export enum Insert\r\n{\r\n table = 'table' ,\r\n picture = 'picture',\r\n link = 'link',\r\n video='video',\r\n hr='hr'\r\n}\r\n\r\n\r\n","export enum Misc\r\n{\r\n codeview = 'codeview' ,\r\n undo = 'undo',\r\n redo = 'redo',\r\n}\r\n","export enum Para\r\n{\r\n style = 'style' ,\r\n ul = 'ul',\r\n ol = 'ol',\r\n paragraph='paragraph',\r\n height='height'\r\n}\r\n\r\n","export enum Style\r\n{\r\n bold = 'bold' ,\r\n italic = 'italic',\r\n underline = 'underline',\r\n clear='clear'\r\n}\r\n\r\n","export enum FileType {\r\n PDF = 'application/pdf',\r\n Word = 'application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document',\r\n Excel = 'application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n ImageTypes = 'image/png,image/bmp,image/jpeg',\r\n PNG = 'image/png',\r\n JPG = 'image/jpeg',\r\n JPEG = 'image/jpeg',\r\n ZIP = 'application/zip',\r\n RAR = 'application/x-rar-compressed',\r\n VIDEO = 'video/webm,video/ogg,video/mp4,video/quicktime,video/x-msvideo,video/x-ms-wmv',\r\n License = 'application/BN',\r\n Xml = 'text/xml',\r\n OctetSteam = 'application/octet-stream',\r\n Txt = 'text/plain',\r\n JSON = 'application/json',\r\n PowerPoint = 'application/vnd.ms-powerpoint,applicationapplication/vnd.openxmlformats-officedocument.presentationml.presentation',\r\n SVG = 'image/svg+xml',\r\n None = '',\r\n}\r\n","/*\r\n * Public API Surface of bnsights-library\r\n */\r\n//export module \r\nexport * from './lib/controls/bbsf-controls.module';\r\n// export * from './lib/areas/admin-panel/layout-modules/adminPage.module';\r\n\r\n// //export component \r\n export * from './lib/controls/TextBox/TextBox.component'\r\nexport * from './lib/controls/DateTimePicker/DateTimePicker.component'\r\nexport * from './lib/controls/FileUplaod/FileUplaod.component'\r\nexport * from './lib/controls/MultiLingualTextBox/MultiLingualTextBox.component'\r\nexport * from './lib/controls/TextArea/TextArea.component'\r\nexport * from './lib/controls/MultiLingualTextArea/MultiLingualTextArea.component'\r\nexport * from './lib/controls/CheckBox/CheckBox.component'\r\nexport * from './lib/controls/DropdownList/DropdownList.component'\r\nexport * from './lib/controls/Phone/Phone.component'\r\nexport * from './lib/controls/Toggleslide/toggleslide.component'\r\nexport * from './lib/controls/HtmlEditor/HtmlEditor.component'\r\nexport * from './lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component';\r\nexport * from './lib/controls/ImageUpload/ImageUpload.component'\r\nexport * from './lib/controls/ProfileImageUploader/ProfileImageUploader.component'\r\nexport * from './lib/controls/Calendar/Calendar.component'\r\nexport * from './lib/controls/MapAutoComplete/MapAutoComplete.component'\r\nexport * from './lib/controls/AutocompleteTextBox/AutocompleteTextBox.component'\r\nexport * from './lib/controls/TagsInput/TagsInput.component'\r\nexport * from './lib/controls/Paging/JwPagination.component'\r\nexport * from './lib/controls/Paging/Paging.component'\r\nexport * from './lib/controls/RadioButton/RadioButton.component'\r\nexport * from './lib/controls/ConfirmationModal/ConfirmationModal.component'\r\nexport * from './lib/controls/Form/Form.component'\r\nexport * from './lib/controls/Repeater/repeater/repeater.component'\r\nexport * from './lib/controls/Repeater/repeater-table/repeater-table.component'\r\n\r\nexport * from './lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component'\r\nexport * from './lib/controls/Repeater/repeater-item-field/repeater-item-field.component'\r\nexport * from './lib/controls/Recaptcha/Recaptcha.component'\r\nexport * from './lib/controls/page-header-component/page-header-component.component'\r\nexport * from './lib/Shared/Components/app-base-component'\r\n\r\n// //adminPageModule\r\n// export * from './lib/areas/admin-panel/home/adminHome.component'\r\n// export * from './lib/areas/admin-panel/layout-modules/adminPage.component'\r\n\r\n//export services\r\nexport * from './lib/Shared/services/validationErrorMassage.service'\r\nexport * from './lib/Shared/services/ControlUtility'\r\nexport * from './lib/Shared/services/OnPagingFiltersChange.service'\r\nexport * from './lib/Shared/config/environment'\r\nexport * from './lib/Shared/services/GlobalSettings.service'\r\nexport * from './lib/Shared/services/render-component-service.service'\r\nexport * from './lib/Shared/default_intl'\r\n\r\n\r\n\r\n//export Models\r\nexport * from './lib/Shared/Models/ControlOptionsBase'\r\nexport * from './lib/Shared/Models/ReCaptchaOptions'\r\nexport * from './lib/Shared/Models/Recaptcha'\r\nexport * from './lib/Shared/Models/MultilingualControlOptionsBase'\r\nexport * from './lib/Shared/Models/CustomValidation'\r\nexport * from './lib/Shared/Models/datePickerOptions'\r\nexport * from './lib/Shared/Models/TextBoxOptions'\r\nexport * from './lib/Shared/Models/FileUploadOptions'\r\nexport * from './lib/Shared/Models/FileUploadModel'\r\nexport * from './lib/Shared/Models/MultipleFileUploadModel'\r\nexport * from './lib/Shared/Models/MultilingualTextBoxOptions'\r\nexport * from './lib/Shared/Models/RangeNumber'\r\nexport * from './lib/Shared/Models/EnglishArabicDTO'\r\nexport * from './lib/Shared/Models/Attribute'\r\nexport * from './lib/Shared/Models/TextAreaOptions'\r\nexport * from './lib/Shared/Models/MultiLingualTextAreaOptions'\r\nexport * from './lib/Shared/Models/CheckBoxOptions'\r\nexport * from './lib/Shared/Models/DropdownListItem'\r\nexport * from './lib/Shared/Models/DropdownOptions'\r\nexport * from './lib/Shared/Models/PhoneOptions'\r\nexport * from './lib/Shared/Models/ToggleslideOptions'\r\nexport * from './lib/Shared/Models/HtmlEditorOptions'\r\nexport * from './lib/Shared/Models/MultiLingualHtmlEditorOptions'\r\nexport * from './lib/Shared/Models/FileDTO'\r\nexport * from './lib/Shared/Models/ImageUploadOptions'\r\nexport * from './lib/Shared/Models/ProfileImageUploadOptions'\r\nexport * from './lib/Shared/Models/ProfilePictureDTO'\r\nexport * from './lib/Shared/Models/SaveDTO'\r\nexport * from './lib/Shared/Models/CancelDTO'\r\nexport * from './lib/Shared/Models/EditPersonalImage'\r\nexport * from './lib/Shared/Models/UploadPersonalImage'\r\nexport * from './lib/Shared/Models/CalendarOptions'\r\nexport * from './lib/Shared/Models/CalendarEventDTO'\r\nexport * from './lib/Shared/Models/MapAutoCompleteOptions'\r\nexport * from './lib/Shared/Models/MapAutocompleteDTO'\r\nexport * from './lib/Shared/Models/AutocompleteDTO'\r\nexport * from './lib/Shared/Models/AutocompleteOptions'\r\nexport * from './lib/Shared/Models/TagsInputDTO'\r\nexport * from './lib/Shared/Models/TagsInputOptions'\r\nexport * from './lib/Shared/Models/FilterItem'\r\nexport * from './lib/Shared/Models/PagingDTO'\r\nexport * from './lib/Shared/Models/PagingOptions'\r\nexport * from './lib/Shared/Models/RadioButtonOptions'\r\nexport * from './lib/Shared/Models/RadioButtonItem'\r\nexport * from './lib/Shared/Models/FormOptions'\r\nexport * from './lib/Shared/Models/ConfirmationModalOptions'\r\nexport * from './lib/Shared/Models/RepeaterField'\r\nexport * from './lib/Shared/Models/RepeaterOptions'\r\nexport * from './lib/Shared/Models/page-header-options'\r\nexport * from './lib/Shared/Models/filter-options'\r\nexport * from './lib/Shared/Models/control-filter-Item'\r\nexport * from './lib/Shared/Models/bread-crumb'\r\nexport * from './lib/Shared/Directives/template-name.directive'\r\nexport * from './lib/shared/Pipes/bbsf-date-time.pipe';\r\nexport * from './lib/shared/Pipes/bbsf-date.pipe';\r\n\r\n\r\n//export Enums\r\nexport * from './lib/Shared/Enums/InputType'\r\nexport * from './lib/Shared/Enums/menu-list-enum'\r\nexport * from './lib/Shared/Enums/ControlLayout'\r\nexport * from './lib/Shared/Enums/ForceDirection'\r\nexport * from './lib/Shared/Enums/PickerType'\r\nexport * from './lib/Shared/Enums/StartView'\r\nexport * from './lib/Shared/Enums/SelectMode'\r\nexport * from './lib/Shared/Enums/Countries'\r\nexport * from './lib/Shared/Enums/FontSize'\r\nexport * from './lib/Shared/Enums/Insert'\r\nexport * from './lib/Shared/Enums/Misc'\r\nexport * from './lib/Shared/Enums/Para'\r\nexport * from './lib/Shared/Enums/Style'\r\nexport * from './lib/Shared/Enums/FileType'\r\nexport * from './lib/Shared/Enums/ImageType'\r\nexport * from './lib/Shared/Enums/LanguageMode'\r\nexport * from './lib/Shared/Enums/CalendarView'\r\nexport * from './lib/Shared/Enums/FilterType'\r\nexport * from './lib/Shared/Enums/IconPosition'\r\nexport * from './lib/Shared/Enums/PagingActionMode'\r\nexport * from './lib/Shared/Enums/StyleConfirmationMode'\r\nexport * from './lib/Shared/Enums/Enums'\r\nexport * from './lib/Shared/Enums/LanguageValidation'\r\nexport * from './lib/Shared/Enums/TagInputView'\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {BTagsInputComponent as ɵa} from './lib/Shared/Components/ng-tag-input';"],"names":["noop","environment","timeGridPlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bnsights-bbsf-controls.js","sources":["../../../projects/bbsf-controls/src/lib/Shared/services/validationErrorMassage.service.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/InputType.ts","../../../projects/bbsf-controls/src/lib/Shared/services/ControlUtility.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/PickerType.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/StartView.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/SelectMode.ts","../../../projects/bbsf-controls/src/lib/Shared/services/OnPagingFiltersChange.service.ts","../../../projects/bbsf-controls/src/lib/Shared/default_intl.ts","../../../projects/bbsf-controls/src/lib/controls/DateTimePicker/DateTimePicker.component.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/FileUploadModel.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/MultipleFileUploadModel.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/ControlLayout.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/LanguageMode.ts","../../../projects/bbsf-controls/src/lib/Shared/services/GlobalSettings.service.ts","../../../projects/bbsf-controls/src/lib/controls/FileUplaod/FileUplaod.component.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/EnglishArabicDTO.ts","../../../projects/bbsf-controls/src/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.ts","../../../projects/bbsf-controls/src/lib/controls/TextArea/TextArea.component.ts","../../../projects/bbsf-controls/src/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.ts","../../../projects/bbsf-controls/src/lib/controls/CheckBox/CheckBox.component.ts","../../../projects/bbsf-controls/src/lib/controls/DropdownList/DropdownList.component.ts","../../../projects/bbsf-controls/src/lib/controls/Phone/Phone.component.ts","../../../projects/bbsf-controls/src/lib/controls/HtmlEditor/HtmlEditor.component.ts","../../../projects/bbsf-controls/src/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.ts","../../../projects/bbsf-controls/src/lib/controls/ImageUpload/ImageUpload.component.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/ProfilePictureDTO.ts","../../../projects/bbsf-controls/src/lib/controls/ProfileImageUploader/ProfileImageUploader.component.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/AutocompleteDTO.ts","../../../projects/bbsf-controls/src/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.ts","../../../projects/bbsf-controls/src/lib/controls/TagsInput/TagsInput.component.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/PagingDTO.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/FilterType.ts","../../../projects/bbsf-controls/src/lib/controls/Paging/Paging.component.ts","../../../projects/bbsf-controls/src/lib/controls/Paging/JwPagination.component.ts","../../../projects/bbsf-controls/src/lib/controls/RadioButton/RadioButton.component.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/LanguageValidation.ts","../../../projects/bbsf-controls/src/lib/controls/TextBox/TextBox.component.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/MapAutocompleteDTO.ts","../../../projects/bbsf-controls/src/lib/controls/MapAutoComplete/MapAutoComplete.component.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/CalendarView.ts","../../../projects/bbsf-controls/src/lib/controls/Calendar/Calendar.component.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/PagingActionMode.ts","../../../projects/bbsf-controls/src/lib/controls/Form/Form.component.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/StyleConfirmationMode.ts","../../../projects/bbsf-controls/src/lib/controls/ConfirmationModal/ConfirmationModal.component.ts","../../../projects/bbsf-controls/src/lib/Shared/Directives/template-name.directive.ts","../../../projects/bbsf-controls/src/lib/controls/Repeater/repeater/repeater.component.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/Enums.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/ControlOptionsBase.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/datePickerOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/ForceDirection.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/DropdownOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/FileUploadOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/HtmlEditorOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/ImageType.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/ImageUploadOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/MapAutoCompleteOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/PhoneOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/RangeNumber.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/TextAreaOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/IconPosition.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/TextBoxOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/ToggleslideOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/services/render-component-service.service.ts","../../../projects/bbsf-controls/src/lib/controls/Toggleslide/toggleslide.component.ts","../../../projects/bbsf-controls/src/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.ts","../../../projects/bbsf-controls/src/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.ts","../../../projects/bbsf-controls/src/lib/controls/Repeater/repeater-table/repeater-table.component.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/Recaptcha.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/CaptchaStyle.ts","../../../projects/bbsf-controls/src/lib/controls/Recaptcha/Recaptcha.component.ts","../../../projects/bbsf-controls/src/lib/controls/page-header-component/page-header-component.component.ts","../../../projects/bbsf-controls/src/lib/shared/Pipes/bbsf-date-time.pipe.ts","../../../projects/bbsf-controls/src/lib/shared/Pipes/bbsf-date.pipe.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/TagInputView.ts","../../../projects/bbsf-controls/src/lib/Shared/Components/ng-tag-input.ts","../../../projects/bbsf-controls/src/lib/controls/bbsf-controls.module.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/CustomValidation.ts","../../../projects/bbsf-controls/src/lib/Shared/Components/app-base-component.ts","../../../projects/bbsf-controls/src/lib/Shared/config/environment.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/RecaptchaOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/MultilingualControlOptionsBase.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/MultilingualTextBoxOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/Attribute.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/MultiLingualTextAreaOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/CheckBoxOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/DropdownListItem.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/MultiLingualHtmlEditorOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/ProfileImageUploadOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/SaveDTO.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/CancelDTO.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/EditPersonalImage.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/UploadPersonalImage.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/CalendarOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/CalendarEventDTO.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/AutocompleteOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/TagsInputDTO.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/TagsInputOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/FilterItem.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/PagingOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/RadioButtonOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/RadioButtonItem.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/FormOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/ConfirmationModalOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/RepeaterField.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/RepeaterOptions.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/filter-options.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/page-header-options.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/control-filter-Item.ts","../../../projects/bbsf-controls/src/lib/Shared/Models/bread-crumb.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/menu-list-enum.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/Countries.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/FontSize.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/Insert.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/Misc.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/Para.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/Style.ts","../../../projects/bbsf-controls/src/lib/Shared/Enums/FileType.ts","../../../projects/bbsf-controls/src/public-api.ts","../../../projects/bbsf-controls/src/bnsights-bbsf-controls.ts"],"sourcesContent":["import { Injectable, Optional } from '@angular/core';\r\nimport { Http, Response, Headers, RequestOptions } from '@angular/http';\r\nimport { map } from 'rxjs/operators';\r\nimport { ControlContainer, FormControl, FormGroup } from '@angular/forms';\r\nimport { UtilityService } from '@bnsights/bbsf-utilities';\r\n\r\n@Injectable()\r\nexport class ErrorMassageValidation {\r\n static controlContainerstatic = null;\r\n\r\n // tslint:disable-next-line: deprecation\r\n constructor(\r\n private http: Http,\r\n @Optional() private controlContainer: ControlContainer,\r\n private utilityService: UtilityService\r\n ) {\r\n ErrorMassageValidation.controlContainerstatic = this.controlContainer;\r\n }\r\n url = 'CheckEmailValidation';\r\n // tslint:disable-next-line: deprecation\r\n\r\n static showerror(FormControlName: string) {\r\n let form = ErrorMassageValidation.controlContainerstatic\r\n .control as FormGroup;\r\n let control = form.get(FormControlName) as FormControl;\r\n //console.log(control)\r\n control.setErrors({ minlength: true });\r\n control.markAsTouched();\r\n }\r\n\r\n // isEmailRegisterd(Email: string)\r\n // {\r\n // let resource:object={\r\n // email:Email\r\n // };\r\n // let body = JSON.stringify(resource);\r\n // let headers = new Headers({ 'Content-Type': 'application/json' });\r\n // let options = new RequestOptions({ headers: headers });\r\n // return this.http.post(environment.baseUrl+this.url,body,options)\r\n // .pipe(map(response => response.json()))\r\n // }\r\n\r\n getErrorMassageValidation(error: any): string {\r\n let result: string = '';\r\n switch (error.key) {\r\n case 'required':\r\n result = this.utilityService.getResourceValue('RequiredValidationKey');\r\n break;\r\n case 'email':\r\n result = this.utilityService.getResourceValue('EmailValidationKey');\r\n break;\r\n case 'EmailValidationKey':\r\n result = this.utilityService.getResourceValue('EmailValidationKey');\r\n break;\r\n case 'URLValidationKey':\r\n result = this.utilityService.getResourceValue('urlValidationError');\r\n break;\r\n case 'pattern':\r\n result = this.utilityService.getResourceValue('NumberValidationKey');\r\n break;\r\n case 'maxlength':\r\n result =\r\n this.utilityService.getResourceValue('MaxLenghtValidationKey') +\r\n ' ' +\r\n error.value.requiredLength;\r\n break;\r\n case 'minlength':\r\n result =\r\n this.utilityService.getResourceValue('MinLenghtValidationKey') +\r\n ' ' +\r\n error.value.requiredLength;\r\n break;\r\n case 'min':\r\n result =\r\n this.utilityService.getResourceValue('MinValueValidationKey') +\r\n ' ' +\r\n error.value.min;\r\n break;\r\n case 'max':\r\n result =\r\n this.utilityService.getResourceValue('MaxValueValidationKey') +\r\n ' ' +\r\n error.value.max;\r\n break;\r\n case 'IntegerNumberValidationKey':\r\n result = this.utilityService.getResourceValue(\r\n 'IntegerNumberValidationKey'\r\n );\r\n break;\r\n case 'PositiveNumberValidationKey':\r\n result = this.utilityService.getResourceValue(\r\n 'PositiveNumberValidationKey'\r\n );\r\n break;\r\n case 'validatePhoneNumber':\r\n result = this.utilityService.getResourceValue(\r\n 'PhoneNumberValidationKey'\r\n );\r\n break;\r\n case 'mask':\r\n result =\r\n this.utilityService.getResourceValue('MaskValidationKey') +\r\n ' ' +\r\n error.value.requiredMask;\r\n break;\r\n case 'PasswordComplexityHasNumber':\r\n result = this.utilityService.getResourceValue(\r\n 'PasswordComplexityHasNumber'\r\n );\r\n break;\r\n case 'ArabicLetterOnly':\r\n result = this.utilityService.getResourceValue('ArabicLetterOnly');\r\n break;\r\n case 'EnglishLetterOnly':\r\n result = this.utilityService.getResourceValue('EnglishLetterOnly');\r\n break;\r\n case 'ArabicIsRequiredAndOnly50CharactersEnglish':\r\n result = this.utilityService.getResourceValue(\r\n 'ArabicIsRequiredAndOnly50CharactersEnglish'\r\n );\r\n break;\r\n case 'PasswordComplexityHasCapitalLetter':\r\n result = this.utilityService.getResourceValue(\r\n 'PasswordComplexityHasCapitalLetter'\r\n );\r\n break;\r\n case 'PasswordComplexityHasSmallLetter':\r\n result = this.utilityService.getResourceValue(\r\n 'PasswordComplexityHasSmallLetter'\r\n );\r\n break;\r\n case 'PasswordComplexityHasSpecialLetter':\r\n result = this.utilityService.getResourceValue(\r\n 'PasswordComplexityHasSpecialLetter'\r\n );\r\n break;\r\n case 'MaxWordCountValidationKey':\r\n result =\r\n this.utilityService.getResourceValue('MaxWordCountValidationKey') +\r\n ' ' +\r\n error.value;\r\n break;\r\n case 'NewSelectionValidationKey':\r\n result = this.utilityService.getResourceValue(\r\n 'NewSelectionValidationKey'\r\n );\r\n break;\r\n case 'MaxFileCountValidationKey':\r\n result =\r\n this.utilityService.getResourceValue('MaxFileCountValidationKey') +\r\n ' ' +\r\n error.value;\r\n break;\r\n case 'MinFileCountValidationKey':\r\n result =\r\n this.utilityService.getResourceValue('MinFileCountValidationKey') +\r\n ' ' +\r\n error.value;\r\n break;\r\n case 'MaxSizeForAllFilesInMB':\r\n result =\r\n this.utilityService.getResourceValue('MaxSizeForAllFilesInMB') +\r\n ' ' +\r\n error.value;\r\n break;\r\n case 'FileMaxSizeInMB':\r\n result =\r\n this.utilityService.getResourceValue('FileMaxSizeInMB') +\r\n ' ' +\r\n error.value;\r\n break;\r\n case 'ToolTipTypeError':\r\n result =\r\n this.utilityService.getResourceValue('ToolTipTypeError') +\r\n ' ' +\r\n error.value;\r\n break;\r\n case 'InvalidEndDate':\r\n result = this.utilityService.getResourceValue('InvalidEndDate');\r\n break;\r\n case 'InvalidStartDate':\r\n result = this.utilityService.getResourceValue('InvalidStartDate');\r\n break;\r\n default:\r\n break;\r\n }\r\n return result;\r\n }\r\n}\r\n","export enum InputType {\r\n Text = 1,\r\n Password = 2,\r\n Email = 3,\r\n Number = 4,\r\n EID = 5,\r\n URL = 6\r\n}\r\n","import { Injectable, Optional, Host, SkipSelf, Component } from '@angular/core';\r\nimport { CustomValidation } from '../Models/CustomValidation';\r\nimport { ErrorMassageValidation } from './validationErrorMassage.service';\r\nimport { ValidationErrors, ValidatorFn, AbstractControl, FormControl, Validators } from '@angular/forms';\r\nimport { InputType } from '../Enums/InputType';\r\nimport { ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { Observable } from 'rxjs';\r\n\r\n\r\n@Injectable()\r\nexport class ControlUtility {\r\n constructor(private ErrorHandler: ErrorMassageValidation, private controlValidationService: ControlValidationService, private utilityService: UtilityService) {\r\n\r\n }\r\n\r\n getErrorValidation(Errorsitem: any[], CustomValidation?: CustomValidation): string {\r\n let resulte = '';\r\n Errorsitem.forEach(element => {\r\n\r\n if (element.key === 'customerError' && Errorsitem.length === 1) {\r\n resulte = CustomValidation[0].massage;\r\n } else if (element.key === 'EmailValidation') {\r\n resulte = element.value;\r\n } else if (element.key === 'FluentApi') {\r\n resulte = element.value;\r\n }\r\n else if (element.key === 'errorMassage') {\r\n resulte = element.value;\r\n }\r\n else {\r\n resulte = this.ErrorHandler.getErrorMassageValidation(element);\r\n }\r\n });\r\n\r\n return resulte;\r\n }\r\n\r\n patternValidator(regex: RegExp, error: ValidationErrors): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n if (!control.value) {\r\n return null;\r\n }\r\n\r\n const valid = regex.test(control.value);\r\n return valid ? null : error;\r\n };\r\n }\r\n patchControlValue(originalValue, PatchFunction, PatchPath) {\r\n var patchOp = [{\r\n op: \"replace\",\r\n path: PatchPath,\r\n value: originalValue\r\n }]\r\n var patchService = PatchFunction.call(null, patchOp) as Observable<any>;\r\n patchService.subscribe(r => console.log(r), erorr => this.utilityService.notifyErrorMessage(erorr));\r\n\r\n }\r\n arabicValidator(error: ValidationErrors): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n if (!control.value)\r\n return null;\r\n if (control.value.match('[\\u0600-\\u06FF]')) {\r\n if (control.value.match('[A-Za-z]') != null) {\r\n //FOUND ENGLISH CHARS\r\n var length = control.value.replace(/\\W/g, '').replace(/[0-9]/g, '').length;\r\n if (length > 50) {\r\n return error;\r\n } else {\r\n return null;\r\n }\r\n }\r\n else {\r\n //NO ENGLISH CHARACTERS AT ALL\r\n return null;\r\n }\r\n }\r\n else {\r\n return error;\r\n }\r\n };\r\n }\r\n\r\n getInputType(type: number): string {\r\n return InputType[type] as string\r\n }\r\n\r\n\r\n trimControlValue(value: any) {\r\n const whitespace: string = ' ';\r\n if (value.startsWith(whitespace) || value.endsWith(whitespace)) {\r\n return value.trim();\r\n }\r\n else\r\n return value\r\n }\r\n\r\n CopyInputMessage(inputElement) {\r\n inputElement.select();\r\n document.execCommand('copy');\r\n inputElement.setSelectionRange(0, 0);\r\n }\r\n\r\n\r\n getErrorValidationMassage(ErrorList, group, options) {\r\n // if((!group.valid)&&(!UtilityService.isCreatedBefor))\r\n // {\r\n // UtilityService.showGlobalError();\r\n // this.scrollToGlobalErrorMassage()\r\n // }\r\n return this.getErrorValidation(ErrorList, options.CustomValidation);\r\n }\r\n\r\n scrollToGlobalErrorMassage() {\r\n let element = document.getElementById('errorId');\r\n element.scrollIntoView({ behavior: \"smooth\", inline: \"nearest\" });\r\n }\r\n setAttributeForControl(options) {\r\n if (options.AttributeList != null) {\r\n var element = document.getElementById(options.Name);\r\n for (let index = 0; index < options.AttributeList.length; index++) {\r\n element.setAttribute(options.AttributeList[index].Key, options.AttributeList[index].value);\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n showGlobalError(formId?: string) {\r\n this.controlValidationService.showGlobalError(null, formId);\r\n this.scrollToGlobalErrorMassage()\r\n }\r\n\r\n RemoveRequiredValidation(FormControl: AbstractControl, ValidationRole: any[], Options: any) {\r\n Options.IsRequired = false\r\n ValidationRole = ValidationRole.filter((e) => e != Validators.required)\r\n FormControl.setValidators(ValidationRole);\r\n FormControl.updateValueAndValidity()\r\n }\r\n\r\n AddRequiredValidation(FormControl: AbstractControl, ValidationRole: any[], Options: any) {\r\n Options.IsRequired = true\r\n ValidationRole.push(Validators.required)\r\n FormControl.setValidators(ValidationRole);\r\n FormControl.updateValueAndValidity()\r\n }\r\n\r\n addRequiredToControl(FormControl: AbstractControl, Options: any) {\r\n Options.IsRequired = true\r\n FormControl.addValidators(Validators.required);\r\n FormControl.updateValueAndValidity()\r\n }\r\n removeRequiredFromControl(FormControl: AbstractControl, Options: any) {\r\n Options.IsRequired = false\r\n FormControl.removeValidators(Validators.required);\r\n FormControl.updateValueAndValidity()\r\n }\r\n\r\n\r\n RemoveCustomValidation(FormControl: AbstractControl, ValidationRole: any[], CustomValidation: CustomValidation) {\r\n ValidationRole = ValidationRole.filter((e) => e != CustomValidation.functionBody)\r\n FormControl.setValidators(ValidationRole);\r\n FormControl.updateValueAndValidity()\r\n }\r\n\r\n AddCustomValidation(FormControl: AbstractControl, ValidationRole: any[], CustomValidation: CustomValidation) {\r\n ValidationRole.push(CustomValidation.functionBody)\r\n FormControl.setValidators(ValidationRole);\r\n FormControl.updateValueAndValidity()\r\n }\r\n static getLocal(): string {\r\n let lang = localStorage.getItem('language');\r\n return lang == \"ar\" ? \"ar\" : \"en-UK\";\r\n }\r\n\r\n IsValid(FormControl: AbstractControl) {\r\n FormControl.markAsTouched();\r\n }\r\n\r\n\r\n}\r\n","export enum PickerType{\r\n Both = 1 ,\r\n Calendar = 2,\r\n Timer = 3,\r\n }","export enum StartView{\r\n Month = 1 ,\r\n Year = 2,\r\n MultiYear=3\r\n }","export enum SelectMode\r\n{\r\n Single = 1 ,\r\n Range = 2\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class OnPagingFiltersChangeService {\r\n private subject = new Subject<any>();\r\n\r\n ChangeValue(value: string) {\r\n this.subject.next(value);\r\n }\r\n\r\n ClearValue() {\r\n this.subject.next();\r\n }\r\n\r\n GetValue(): Observable<any> {\r\n return this.subject.asObservable();\r\n }\r\n}","import { Injectable, NgModule } from '@angular/core';\r\nimport { UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { OwlDateTimeIntl } from 'ng-pick-datetime';\r\n\r\n@Injectable()\r\n// here is the default text string - just adjust the strings to reflect your preferred language\r\nexport class DefaultIntl extends OwlDateTimeIntl {\r\n constructor(private utilityService: UtilityService) {\r\n super();\r\n }\r\n\r\n /** A label for the range 'from' in picker info */\r\n rangeFromLabel = this.utilityService.getResourceValue('From');\r\n /** A label for the range 'to' in picker info */\r\n rangeToLabel = this.utilityService.getResourceValue('To');\r\n /** A label for the cancel button */\r\n cancelBtnLabel = this.utilityService.getResourceValue('Cancel');\r\n /** A label for the set button */\r\n setBtnLabel = this.utilityService.getResourceValue('Save');\r\n /** A label for the hour12 button (AM) */\r\n hour12AMLabel = this.utilityService.getResourceValue('AM');\r\n /** A label for the hour12 button (PM) */\r\n hour12PMLabel = this.utilityService.getResourceValue('PM');\r\n}\r\n","import { Component, OnInit, Input, DoCheck, Optional, Output, EventEmitter } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, AbstractControl, FormGroupDirective, ControlContainer } from '@angular/forms';\r\nimport { DatePickerOptions } from '../../Shared/Models/datePickerOptions';\r\nimport { ErrorMassageValidation } from '../../Shared/services/validationErrorMassage.service';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { PickerType } from '../../Shared/Enums/PickerType';\r\nimport { StartView } from '../../Shared/Enums/StartView';\r\nimport { SelectMode } from '../../Shared/Enums/SelectMode';\r\nimport { OnPagingFiltersChangeService } from '../../Shared/services/OnPagingFiltersChange.service';\r\nimport { formatDate } from '@fullcalendar/core';\r\nimport { BBSFTranslateService, ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { DatePipe } from '@angular/common';\r\nimport { DateTimeAdapter } from 'ng-pick-datetime';\r\nimport { OwlDateTimeIntl } from 'ng-pick-datetime';\r\nimport * as dateTimeClass from 'ng-pick-datetime/date-time/date-time.class';\r\nimport { DefaultIntl } from '../../Shared/default_intl';\r\n\r\n@Component({\r\n selector: 'BBSF-DateTimePicker',\r\n templateUrl: './DateTimePicker.component.html',\r\n providers: [\r\n { provide: OwlDateTimeIntl, useClass: DefaultIntl }\r\n ],\r\n})\r\nexport class DateInputComponent implements OnInit {\r\n static controlContainerstatic = null;\r\n // tslint:disable-next-line: max-line-length\r\n constructor(public datepipe: DatePipe, private onChangeService: OnPagingFiltersChangeService, private ErrorHandler: ErrorMassageValidation, private controlUtility: ControlUtility, @Optional() private controlContainer: ControlContainer, public DateInputControlHost: FormGroupDirective, private UtilityService: UtilityService, private translate: BBSFTranslateService, private controlValidationService: ControlValidationService, private dateTimeAdapter: DateTimeAdapter<any>) {\r\n DateInputComponent.controlContainerstatic = this.controlContainer;\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: DatePickerOptions;\r\n DatePickerFormControl: AbstractControl;\r\n @Output() OnChange = new EventEmitter();\r\n markAllAsTouched: boolean = false;\r\n validationRules = [];\r\n validationRulesasync = [];\r\n comparedControl: AbstractControl = null;\r\n dateError: boolean = false;\r\n textDir;\r\n startView;\r\n\r\n ngOnInit() {\r\n if (this.options.ForceDirection)\r\n this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';\r\n else\r\n this.textDir = localStorage.getItem('language') == 'ar' ? 'rtl' : 'ltr';\r\n if (this.options.StartView == 3)\r\n this.startView = 'multi-year';\r\n else {\r\n this.startView = (StartView[this.options.StartView] as string).toLowerCase()\r\n }\r\n // Update the DateTimeAdapter Language with the current thread langauge\r\n this.dateTimeAdapter.setLocale(this.UtilityService.getCurrentLanguage() == \"ar\" ? \"ar\" : \"en-UK\");\r\n this.controlValidationService.isCreatedBefor = false\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.DatePickerFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n\r\n this.DatePickerFormControl.setValue(this.options.Value);\r\n\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.validationRules.push(Validation.functionBody);\r\n }\r\n }\r\n\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n }\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\")\r\n this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);\r\n\r\n\r\n if (this.options.IsDisabled) {\r\n this.DatePickerFormControl.disable();\r\n }\r\n if (this.options.StartControlToCompareWith) {\r\n if (this.group.get(this.options.StartControlToCompareWith)) {\r\n this.comparedControl = this.group.get(this.options.StartControlToCompareWith)\r\n this.subscribeDateChanges()\r\n }\r\n }\r\n\r\n this.DatePickerFormControl.setValidators(this.validationRules);\r\n this.DatePickerFormControl.setAsyncValidators(this.validationRulesasync);\r\n this.DateInputControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n })\r\n\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n this.controlUtility.setAttributeForControl(this.options)\r\n }\r\n\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n\r\n\r\n\r\n\r\n copyInputMessage(inputElement) {\r\n this.controlUtility.CopyInputMessage(inputElement)\r\n }\r\n\r\n getSelectMode(type: number) {\r\n let Value = (SelectMode[type] as string)\r\n return Value.toLowerCase() as dateTimeClass.SelectMode\r\n }\r\n getPickerType(type: number) {\r\n let Value = (PickerType[type] as string)\r\n return Value.toLowerCase() as dateTimeClass.PickerType\r\n }\r\n getStartView(type: number) {\r\n if (type == 3)\r\n return 'multi-year';\r\n else {\r\n const Value = (StartView[type] as string).toLowerCase()\r\n return Value\r\n }\r\n }\r\n\r\n\r\n onDateSelect(item) {\r\n if (!item)\r\n return;\r\n let DateValue;\r\n var tzoffset = (new Date()).getTimezoneOffset() * 60000; //offset in milliseconds\r\n\r\n if (this.options.SelectMode == 2) {\r\n for (let index = 0; index < item.value.length; index++) {\r\n item.value[index] = new Date(item.value[index] - tzoffset).toISOString().slice(0, -1);\r\n\r\n }\r\n DateValue = item.value;\r\n }\r\n else {\r\n DateValue = new Date(item.value - tzoffset).toISOString().slice(0, -1);\r\n\r\n }\r\n this.DatePickerFormControl.setValue(DateValue)\r\n this.onChangeService.ChangeValue(this.options.Name);\r\n let originalValue = DateValue;\r\n if (this.options.PatchFunction && this.options.PatchPath && this.group.get(this.options.Name).valid) {\r\n this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath)\r\n }\r\n //Use this line to enable two way binding.\r\n this.options.Value = originalValue;\r\n this.OnChange.emit(originalValue);\r\n }\r\n\r\n subscribeDateChanges() {\r\n const startDateChanges = this.comparedControl.valueChanges;\r\n const endDateChanges = this.group.get(this.options.Name).valueChanges;\r\n startDateChanges.subscribe(start => {\r\n this.comparedControl.addValidators(this.checkIfStartDateBeForEndDate);\r\n this.comparedControl.updateValueAndValidity();\r\n });\r\n endDateChanges.subscribe(end => {\r\n this.DatePickerFormControl.addValidators(this.checkIfEndDateAfterStartDate);\r\n this.DatePickerFormControl.updateValueAndValidity();\r\n });\r\n }\r\n\r\n checkIfEndDateAfterStartDate = () => {\r\n if (!this.comparedControl.value || !this.group.get(this.options.Name).value) {\r\n return null;\r\n }\r\n if (new Date(this.comparedControl.value) < new Date(this.group.get(this.options.Name).value)) {\r\n this.comparedControl.setErrors(null);\r\n return null;\r\n }\r\n else {\r\n this.comparedControl.setErrors(null);\r\n return { InvalidEndDate: true };\r\n }\r\n };\r\n checkIfStartDateBeForEndDate = () => {\r\n if (!this.comparedControl.value || !this.group.get(this.options.Name).value) {\r\n return null;\r\n }\r\n if (new Date(this.comparedControl.value) < new Date(this.group.get(this.options.Name).value)) {\r\n this.group.get(this.options.Name).setErrors(null);\r\n return null;\r\n }\r\n else {\r\n this.group.get(this.options.Name).setErrors(null);\r\n return { InvalidStartDate: true };\r\n }\r\n };\r\n\r\n //External Method\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(this.DatePickerFormControl, this.validationRules, this.options)\r\n }\r\n //External Method\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(this.DatePickerFormControl, this.validationRules, this.options)\r\n }\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(this.DatePickerFormControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(this.DatePickerFormControl, this.validationRules, CustomValidation)\r\n }\r\n\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.DatePickerFormControl)\r\n }\r\n\r\n getDateValue() {\r\n return this.options.Value ? this.datepipe.transform(this.options.Value, 'MMM d, y, h:mm a') : this.UtilityService.getResourceValue('NA');\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n","import { FileDTO } from \"./FileDTO\";\r\n\r\nexport class FileUploadModel \r\n{\r\n \r\n File:FileDTO\r\n}\r\n","import { FileDTO } from \"./FileDTO\";\r\n\r\nexport class MultipleFileUploadModel {\r\n CorrelationID_GUID?: string = null;\r\n UploadedFiles: FileDTO[] = []\r\n ExistingFiles: FileDTO[] = []\r\n RemovedFiles: string[] = []\r\n}\r\n","export enum ControlLayout {\r\n Vertical = 1,\r\n Horizontal = 2\r\n}\r\n","export enum LanguageMode{\r\n Both_Languages_are_visible = \"3c6dbffe-da7f-4108-b44d-4b216a22f701\" ,\r\n English_Language_only_is_visible = \"84cc1d57-1f07-42a1-a38f-1a376c12a367\",\r\n Arabic_Language_only_is_visible = \"6a3e59e0-9510-4b16-9080-9313f5c9f229\",\r\n Both_Languages_but_only_English_is_required = \"260c38bb-c90c-4aa7-895d-31aba9311a05\",\r\n Both_Languages_but_only_Arabic_is_required = \"a1f2e15f-2691-4118-975f-ac21caf8ad5a\",\r\n Current_Language_only_is_visible_and_required = \"e2ba1f44-68f3-4035-b84f-9f1b6c2b0c05\" ,\r\n Both_Languages_are_visible_but_only_current_language_is_required = \"b26431f2-b209-4c41-ab04-2d71361847c2\" \r\n }","import { Injectable } from \"@angular/core\";\r\nimport { ControlLayout } from \"../Enums/ControlLayout\";\r\nimport { ForceDirection } from \"../Enums/ForceDirection\";\r\nimport { LanguageMode } from \"../Enums/LanguageMode\";\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class GlobalSettings {\r\n /** to set type of view if MultilingualTextArea is Vertical or Horizontal */\r\n ViewType: ControlLayout = ControlLayout.Vertical;\r\n /*multi control placement type*/\r\n MultiControlPlacementType: ControlLayout = ControlLayout.Horizontal;\r\n /**To Set LanguageMode To MultipleLanguageText */\r\n LanguageMode: LanguageMode = LanguageMode.Both_Languages_are_visible;\r\n HideAstericsWhenRequired: boolean = false;\r\n //**To set maxlength warning message when equals limit\r\n MaxLengthWarningLimit: number = 10;\r\n //**Set any texbox maxlength default value\r\n MaxLengthTextBox: number = 255;\r\n //**Set any textArea maxlength default value\r\n MaxLengthTextArea: number = 1000;\r\n //**Set default image source\r\n DefaultImageSrc: string = \"./src/assets/images/uploadimg.png\";\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n Optional,\r\n ViewChild,\r\n ElementRef,\r\n Output,\r\n EventEmitter,\r\n} from '@angular/core';\r\nimport {\r\n FormControl,\r\n Validators,\r\n FormGroup,\r\n AbstractControl,\r\n ControlContainer,\r\n FormGroupDirective,\r\n} from '@angular/forms';\r\nimport { FileUploadOptions } from '../../Shared/Models/FileUploadOptions';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { FileUploader, FileLikeObject } from 'ng2-file-upload';\r\nimport { FileUploadModel } from '../../Shared/Models/FileUploadModel';\r\nimport { MultipleFileUploadModel } from '../../Shared/Models/MultipleFileUploadModel';\r\nimport {\r\n ControlValidationService,\r\n UtilityService,\r\n} from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\nimport { Observable } from 'rxjs';\r\nimport { FileDTO } from '../../Shared/Models/FileDTO';\r\n@Component({\r\n selector: 'BBSF-FileUplaod',\r\n templateUrl: './FileUplaod.component.html',\r\n})\r\nexport class FileUploadComponent implements OnInit {\r\n static controlContainerstatic = null;\r\n\r\n @ViewChild('fileInput', { static: false }) fileInput: ElementRef;\r\n\r\n isSubmitted: boolean;\r\n @Input() group: FormGroup;\r\n @Input() options: FileUploadOptions;\r\n @Output() OnChange = new EventEmitter();\r\n\r\n fileUploadFormControl: AbstractControl;\r\n ValidationMessage = '';\r\n ValidationCountMessage = '';\r\n uploader: FileUploader;\r\n hasAnotherDropZoneOver: boolean;\r\n AcceptedType: string = '';\r\n AcceptedTypeArray: string[] = [];\r\n ToolTipTypeArray: string[] = [];\r\n FileLikeObject: FileLikeObject;\r\n markAllAsTouched: boolean = false;\r\n validationRules = [];\r\n validationRulesasync = [];\r\n fileUploadModel: FileUploadModel;\r\n multipleFileUploadModel: MultipleFileUploadModel;\r\n file: any;\r\n deletedFiles: FileDTO[] = [];\r\n\r\n constructor(\r\n @Optional() private controlContainer: ControlContainer,\r\n public MultipleFileUplaodControlHost: FormGroupDirective,\r\n private controlUtility: ControlUtility,\r\n public UtilityService: UtilityService,\r\n private controlValidationService: ControlValidationService,\r\n private globalSettings: GlobalSettings\r\n ) {\r\n FileUploadComponent.controlContainerstatic = this.controlContainer;\r\n this.uploader = new FileUploader({\r\n disableMultipart: false, // 'DisableMultipart' must be 'true' for formatDataFunction to be called.\r\n\r\n });\r\n this.hasAnotherDropZoneOver = false;\r\n }\r\n\r\n ngOnInit() {\r\n this.fileUploadModel = new FileUploadModel();\r\n this.multipleFileUploadModel = new MultipleFileUploadModel();\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n if (this.options.Value == null) {\r\n if (this.options.IsMultipleFile == true) {\r\n //this.options.Value=this.multipleFileUploadModel\r\n } else {\r\n // this.options.Value=this.fileUploadModel\r\n }\r\n } else {\r\n if (this.options.IsMultipleFile == true) {\r\n let files: any[] = [];\r\n this.multipleFileUploadModel.ExistingFiles =\r\n this.options.Value.ExistingFiles;\r\n this.multipleFileUploadModel.UploadedFiles = [];\r\n for (\r\n let index = 0;\r\n index < this.options.Value.ExistingFiles.length;\r\n index++\r\n ) {\r\n const element = this.options.Value.ExistingFiles[index];\r\n var bytes = new Uint8Array(element.Bytes) as any;\r\n var base64 = btoa(String.fromCharCode(null, bytes));\r\n this.FileLikeObject = new FileLikeObject({\r\n name: element.NameWithExtension,\r\n type: element.MimeType,\r\n rawFile: base64,\r\n });\r\n // let blob: any;\r\n // blob = new Blob(['']) as any;\r\n // blob.name = element.FileName;\r\n // blob.lastModifiedDate = null;\r\n // blob.webkitRelativePath = '';\r\n let file = this.FileLikeObject as any;\r\n file.url = element.FileURL;\r\n files.push(file);\r\n }\r\n this.uploader.addToQueue(files);\r\n console.log(this.uploader.queue);\r\n } else {\r\n const element = this.options.Value;\r\n var bytes = new Uint8Array(element.Bytes) as any;\r\n var base64 = btoa(String.fromCharCode(null, bytes));\r\n this.FileLikeObject = new FileLikeObject({\r\n name: element.NameWithExtension,\r\n type: element.MimeType,\r\n rawFile: base64,\r\n });\r\n this.file = element;\r\n let file = this.FileLikeObject as any;\r\n file.url = element.FileURL;\r\n this.uploader.addToQueue([file as any]);\r\n }\r\n }\r\n\r\n if (this.options.LabelKey != null && this.options.LabelKey != '')\r\n this.options.LabelValue = this.UtilityService.getResourceValue(\r\n this.options.LabelKey\r\n );\r\n\r\n if (\r\n this.options.FileUploadAcceptsTypes != null &&\r\n this.options.FileUploadAcceptsTypes.length > 0\r\n ) {\r\n for (\r\n let index = 0;\r\n index < this.options.FileUploadAcceptsTypes.length;\r\n index++\r\n ) {\r\n const Type = this.options.FileUploadAcceptsTypes[index];\r\n this.AcceptedType = this.AcceptedType + Type + ',';\r\n }\r\n this.AcceptedTypeArray = this.AcceptedType.split(',');\r\n for (let index = 0; index < this.AcceptedTypeArray.length; index++) {\r\n const element = this.AcceptedTypeArray[index];\r\n for (let index = 0; index < this.AcceptedTypeArray.length; index++) {\r\n const element = this.AcceptedTypeArray[index];\r\n switch (element) {\r\n case 'application/pdf':\r\n if (!this.ToolTipTypeArray.includes('PDF'))\r\n this.ToolTipTypeArray.push('PDF');\r\n break;\r\n case 'application/msword':\r\n if (!this.ToolTipTypeArray.includes('Word'))\r\n this.ToolTipTypeArray.push('Word');\r\n break;\r\n case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\r\n if (!this.ToolTipTypeArray.includes('Word'))\r\n this.ToolTipTypeArray.push('Word');\r\n break;\r\n case 'application/vnd.ms-excel':\r\n if (!this.ToolTipTypeArray.includes('Excel'))\r\n this.ToolTipTypeArray.push('Excel');\r\n break;\r\n case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\r\n if (!this.ToolTipTypeArray.includes('Excel'))\r\n this.ToolTipTypeArray.push('Excel');\r\n break;\r\n case 'application/vnd.ms-powerpoint':\r\n if (!this.ToolTipTypeArray.includes('PowerPoint'))\r\n this.ToolTipTypeArray.push('PowerPoint');\r\n break;\r\n case 'applicationapplication/vnd.openxmlformats-officedocument.presentationml.presentation':\r\n if (!this.ToolTipTypeArray.includes('PowerPoint'))\r\n this.ToolTipTypeArray.push('PowerPoint');\r\n break;\r\n case \"image/png\":\r\n if (!this.ToolTipTypeArray.includes('PNG'))\r\n this.ToolTipTypeArray.push('PNG');\r\n break;\r\n case \"image/bmp\":\r\n if (!this.ToolTipTypeArray.includes('BMP'))\r\n this.ToolTipTypeArray.push('BMP');\r\n break;\r\n case \"image/jpeg\":\r\n if (!this.ToolTipTypeArray.includes('JPEG'))\r\n this.ToolTipTypeArray.push('JPEG');\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n this.ValidationMessage =\r\n this.ValidationMessage +\r\n `${this.UtilityService.getResourceValue('Extensions')} (${\r\n this.ToolTipTypeArray\r\n }) `;\r\n }\r\n if (this.options.FileMaxSizeInMB > 0) {\r\n this.ValidationMessage =\r\n this.ValidationMessage +\r\n `<br /> ${ this.UtilityService.getResourceValue('FileMaxSizeInMB')+this.options.FileMaxSizeInMB} `;\r\n }\r\n\r\n if (this.options.MinNoOfFiles > 0) {\r\n this.ValidationMessage =\r\n this.ValidationMessage +\r\n `<br /> ${this.UtilityService.getResourceValue(\"MinFileCountValidationKey\") +this.options.MinNoOfFiles}`;\r\n }\r\n\r\n if (\r\n this.options.FileUploadAcceptsTypes != null &&\r\n this.options.FileUploadAcceptsTypes.length > 0\r\n ) {\r\n }\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.fileUploadFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation;\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.validationRules.push(Validation.functionBody);\r\n }\r\n }\r\n\r\n if(this.options.IsMultipleFile && this.options.MaxNoOfFiles>0)\r\n {\r\n this.ValidationCountMessage=`${this.UtilityService.getResourceValue('MaxFilesCount')} : ${this.options.MaxNoOfFiles}`;\r\n }\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n }\r\n\r\n this.fileUploadFormControl.setValidators(this.validationRules);\r\n this.fileUploadFormControl.setAsyncValidators(this.validationRulesasync);\r\n if (this.options.IsDisabled) {\r\n this.fileUploadFormControl.disable();\r\n }\r\n\r\n this.MultipleFileUplaodControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched();\r\n this.markAllAsTouched = true;\r\n });\r\n\r\n this.fileUploadFormControl.setValue(this.options.Value);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.options.AttributeList != null) {\r\n var element = document.getElementById(this.options.Name);\r\n for (let index = 0; index < this.options.AttributeList.length; index++) {\r\n element.setAttribute(\r\n this.options.AttributeList[index].Key,\r\n this.options.AttributeList[index].value\r\n );\r\n }\r\n }\r\n }\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n };\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError();\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError();\r\n this.markAllAsTouched = false;\r\n }\r\n\r\n return this.controlUtility.getErrorValidationMassage(\r\n ErrorList,\r\n this.group,\r\n this.options\r\n );\r\n }\r\n\r\n fileOverAnother(event: any): void {\r\n this.hasAnotherDropZoneOver = event;\r\n }\r\n isHideInput() {\r\n if (this.options.IsMultipleFile) {\r\n if (\r\n this.options.MaxNoOfFiles != null &&\r\n this.options.MaxNoOfFiles > 0 &&\r\n this.options.MaxNoOfFiles == this.uploader.queue.length\r\n ) {\r\n return true;\r\n }\r\n } else {\r\n if (this.uploader.queue.length > 0) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n onFileChange() {\r\n let FilesArray = [];\r\n if (\r\n this.options.IsMultipleFile &&\r\n this.options.MinNoOfFiles != null &&\r\n this.options.MinNoOfFiles > 0 &&\r\n this.options.MinNoOfFiles > this.uploader.queue.length\r\n ) {\r\n const formControl = this.fileUploadFormControl;\r\n formControl.setErrors({\r\n MinFileCountValidationKey: this.options.MinNoOfFiles,\r\n });\r\n formControl.markAsTouched();\r\n this.uploader.queue = [];\r\n return;\r\n }\r\n\r\n if (\r\n this.options.IsMultipleFile &&\r\n this.options.MaxSizeForAllFilesInMB != null &&\r\n this.options.MaxSizeForAllFilesInMB > 0\r\n ) {\r\n let AllSizeFile = 0;\r\n for (let index = 0; index < this.uploader.queue.length; index++) {\r\n const element = this.uploader.queue[index];\r\n const file = element.file;\r\n AllSizeFile = AllSizeFile + file.size;\r\n }\r\n const MaxSizeForAllFiles =\r\n this.options.MaxSizeForAllFilesInMB * 1000 * 1000;\r\n if (AllSizeFile > MaxSizeForAllFiles) {\r\n const formControl = this.fileUploadFormControl;\r\n formControl.setErrors({\r\n MaxSizeForAllFilesInMB: this.options.MaxSizeForAllFilesInMB + 'M',\r\n });\r\n formControl.markAsTouched();\r\n this.uploader.queue = [];\r\n return;\r\n }\r\n }\r\n let AddedQueue = this.uploader.queue.filter(\r\n (object) => object['some'].lastModified != null\r\n );\r\n for (let index = 0; index < AddedQueue.length; index++) {\r\n const element = AddedQueue[index];\r\n const file = element.file;\r\n const maxFileSize = this.options.FileMaxSizeInMB * 1000 * 1000;\r\n if (file) {\r\n const fileType = file.type;\r\n if (file.size > maxFileSize) {\r\n const formControl = this.fileUploadFormControl;\r\n formControl.setErrors({\r\n FileMaxSizeInMB: this.options.FileMaxSizeInMB + 'M',\r\n });\r\n formControl.markAsTouched();\r\n this.uploader.queue = [];\r\n return;\r\n }\r\n if (\r\n this.options.FileUploadAcceptsTypes != null &&\r\n this.options.FileUploadAcceptsTypes.length > 0 &&\r\n !(\r\n this.AcceptedTypeArray.includes(fileType.toUpperCase()) ||\r\n this.AcceptedTypeArray.includes(fileType.toLowerCase())\r\n )\r\n ) {\r\n const formControl = this.fileUploadFormControl;\r\n formControl.setErrors({ ToolTipTypeError: this.ToolTipTypeArray });\r\n formControl.markAsTouched();\r\n this.uploader.queue = [];\r\n return;\r\n }\r\n let reader = new FileReader();\r\n let fileObject = file.rawFile as any;\r\n reader.readAsDataURL(fileObject);\r\n reader.onload = () => {\r\n let existingID_GUID = null;\r\n if (!this.options.IsMultipleFile && this.file)\r\n existingID_GUID =\r\n this.file.NameWithExtension == file.name\r\n ? this.file.ID_GUID\r\n : null;\r\n\r\n let AddedFile = {\r\n FileName: file.name,\r\n FileType: file.type,\r\n FileBase64: reader.result.toString().split(',')[1],\r\n FileSizeInMB: file.size / 1000 / 1000,\r\n NameWithExtension: file.name,\r\n ID_GUID: existingID_GUID,\r\n };\r\n if (this.options.IsMultipleFile == false) {\r\n this.fileUploadModel = new FileUploadModel();\r\n this.fileUploadModel.File = AddedFile;\r\n\r\n this.fileUploadFormControl.setValue(this.fileUploadModel);\r\n this.group.get(this.options.Name).setValue(this.fileUploadModel);\r\n //Use this line to enable two way binding.\r\n this.options.Value = this.fileUploadModel;\r\n } else {\r\n FilesArray.push(AddedFile);\r\n this.multipleFileUploadModel.UploadedFiles = FilesArray;\r\n if (this.options.Value != null && this.options.Value != undefined) {\r\n if (this.options.Value.CorrelationID_GUID == null) {\r\n this.multipleFileUploadModel.RemovedFiles = [];\r\n }\r\n }\r\n this.multipleFileUploadModel.CorrelationID_GUID=this.options.Value?.CorrelationID_GUID\r\n this.fileUploadFormControl.setValue(this.multipleFileUploadModel);\r\n this.group\r\n .get(this.options.Name)\r\n .setValue(this.multipleFileUploadModel);\r\n //Use this line to enable two way binding.\r\n this.options.Value = this.multipleFileUploadModel;\r\n }\r\n };\r\n let originalValue = this.group.get(this.options.Name).value;\r\n if (\r\n this.options.PatchFunction &&\r\n this.options.PatchPath &&\r\n this.group.get(this.options.Name).valid\r\n ) {\r\n this.controlUtility.patchControlValue(\r\n originalValue,\r\n this.options.PatchFunction,\r\n this.options.PatchPath\r\n );\r\n }\r\n this.OnChange.emit(originalValue);\r\n }\r\n }\r\n }\r\n removeFromControlValue(item) {\r\n if (this.options.IsMultipleFile == false) {\r\n this.fileUploadModel = null;\r\n if (this.options.IsRequired == true) {\r\n this.fileUploadFormControl.markAsTouched();\r\n this.fileUploadFormControl.invalid;\r\n }\r\n this.group.get(this.options.Name).setValue(this.fileUploadModel);\r\n this.options.Value = this.fileUploadModel;\r\n } else {\r\n if (this.options.Value != null && this.options.Value != undefined) {\r\n if (this.options.Value.CorrelationID_GUID == null) {\r\n this.deletedFiles = [];\r\n this.multipleFileUploadModel.RemovedFiles = [];\r\n } else {\r\n if (this.multipleFileUploadModel.RemovedFiles.length == 0) {\r\n let FileObject = item.file.rawFile;\r\n let DeletedItem = this.multipleFileUploadModel.ExistingFiles.filter(\r\n (Object) => Object.NameWithExtension == FileObject.name\r\n )[0];\r\n this.multipleFileUploadModel.ExistingFiles =\r\n this.multipleFileUploadModel.ExistingFiles.filter(\r\n (Object) => Object.NameWithExtension != FileObject.name\r\n );\r\n this.deletedFiles.push(DeletedItem);\r\n this.multipleFileUploadModel.RemovedFiles.push(DeletedItem.ID_GUID);\r\n } else {\r\n let FileObject = item.file.rawFile;\r\n let deletedList = this.deletedFiles.filter(\r\n (Object) => Object.NameWithExtension == FileObject.name\r\n );\r\n if (deletedList.length == 0 || deletedList == undefined) {\r\n let DeletedItem =\r\n this.multipleFileUploadModel.ExistingFiles.filter(\r\n (Object) => Object.NameWithExtension == FileObject.name\r\n )[0];\r\n this.multipleFileUploadModel.ExistingFiles =\r\n this.multipleFileUploadModel.ExistingFiles.filter(\r\n (Object) => Object.NameWithExtension != FileObject.name\r\n );\r\n this.deletedFiles.push(DeletedItem);\r\n this.multipleFileUploadModel.RemovedFiles.push(\r\n DeletedItem.ID_GUID\r\n );\r\n }\r\n }\r\n }\r\n } else {\r\n this.deletedFiles = [];\r\n this.multipleFileUploadModel.RemovedFiles = [];\r\n }\r\n this.multipleFileUploadModel.UploadedFiles =\r\n this.multipleFileUploadModel.UploadedFiles.filter(\r\n (Object) => Object.NameWithExtension != item._file.name\r\n );\r\n if (\r\n (this.multipleFileUploadModel.UploadedFiles == null ||\r\n this.multipleFileUploadModel.UploadedFiles.length == 0) &&\r\n this.options.IsRequired\r\n ) {\r\n const formControl = this.fileUploadFormControl;\r\n formControl.setErrors({\r\n MinFileCountValidationKey: this.options.MinNoOfFiles,\r\n });\r\n this.fileUploadFormControl.markAsTouched();\r\n this.fileUploadFormControl.invalid;\r\n }\r\n this.multipleFileUploadModel.CorrelationID_GUID=this.options.Value?.CorrelationID_GUID\r\n this.fileUploadFormControl.setValue(this.multipleFileUploadModel);\r\n this.group.get(this.options.Name).setValue(this.multipleFileUploadModel);\r\n //Use this line to enable two way binding.\r\n this.options.Value = this.multipleFileUploadModel;\r\n }\r\n }\r\n //External Method\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(\r\n this.fileUploadFormControl,\r\n this.validationRules,\r\n this.options\r\n );\r\n };\r\n //External Method\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(\r\n this.fileUploadFormControl,\r\n this.validationRules,\r\n this.options\r\n );\r\n };\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(\r\n this.fileUploadFormControl,\r\n this.validationRules,\r\n CustomValidation\r\n );\r\n };\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(\r\n this.fileUploadFormControl,\r\n this.validationRules,\r\n CustomValidation\r\n );\r\n };\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.fileUploadFormControl);\r\n };\r\n}\r\n","import { Expose, Type } from 'class-transformer';\r\nexport class EnglishArabicDTO\r\n{\r\n @Expose({name: 'english'}) English:string;\r\n @Expose({name: 'arabic'}) Arabic:string\r\n}","import { Component, OnInit, Input, Optional, Output, EventEmitter } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, AbstractControl, ControlContainer, FormGroupDirective } from '@angular/forms';\r\nimport { InputType } from '../../Shared/Enums/InputType';\r\nimport { EnglishArabicDTO } from '../../Shared/Models/EnglishArabicDTO';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { LanguageMode } from '../../Shared/Enums/LanguageMode';\r\nimport { BBSFTranslateService, ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\nimport { Observable } from 'rxjs';\r\nimport { ControlLayout } from '../../Shared/Enums/ControlLayout';\r\nimport { MultiLingualTextBoxOptions } from '../../Shared/Models/MultilingualTextBoxOptions';\r\n\r\n@Component({\r\n selector: 'BBSF-MultiLingualTextBox',\r\n templateUrl: './MultiLingualTextBox.component.html'\r\n})\r\nexport class MultiLingualTextBoxComponent implements OnInit {\r\n\r\n static controlContainerstatic = null;\r\n\r\n constructor(public MultiLingualTextBoxFormControlHost: FormGroupDirective, @Optional() private controlContainer: ControlContainer,\r\n private controlUtility: ControlUtility, private UtilityService: UtilityService, private translate: BBSFTranslateService,\r\n private controlValidationService: ControlValidationService, private globalSettings: GlobalSettings) {\r\n MultiLingualTextBoxComponent.controlContainerstatic = this.controlContainer;\r\n this.CurrentLanguage = translate.currentLang != undefined ? translate.currentLang : translate.defaultLang\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: MultiLingualTextBoxOptions;\r\n @Output() OnChange = new EventEmitter();\r\n\r\n ArabicFormControl: AbstractControl;\r\n EnglishFormControl: AbstractControl;\r\n MultiFormControl: AbstractControl;\r\n MultiLanguagegroup: FormGroup;\r\n ArabicWordCount: number = 0;\r\n ArabicWordCountArray: number = 0;\r\n EnglishWordCount: number = 0;\r\n EnglishWordCountArray: number = 0;\r\n CurrentLanguage: string = \"\";\r\n ShowArabicTextBox: boolean\r\n ShowEnglishTextBox: boolean\r\n ArabicValidationRules = [];\r\n ArabicValidationRulesasync = [];\r\n EnglishValidationRules = [];\r\n EnglishValidationRulesasync = [];\r\n\r\n IsShowArabicWordCount: boolean = false;\r\n IsShowEnglishWordCount: boolean = false;\r\n\r\n IsShowAsteriskInArabic: boolean = false;\r\n IsShowAsteriskInEnglish: boolean = false;\r\n markAllAsTouched: boolean = false;\r\n\r\n\r\n ArabicLetterOnly: string = \"\"\r\n EnglishLetterOnly: string = \"\"\r\n\r\n //For Show warning message of max length limit\r\n minCharsLimit: number = -1; //To disable chars limit feature by default\r\n englishCurrentCharsCount: number = 0;\r\n arabicCurrentCharsCount: number = 0;\r\n showEnglishCharsLimitMsg: boolean = false;\r\n showArabicCharsLimitMsg: boolean = false;\r\n hasEnglishCharsLimitValidationError: boolean = false;\r\n hasArabicCharsLimitValidationError: boolean = false;\r\n englishCharsLimitMsgClass: string;\r\n arabicCharsLimitMsgClass: string;\r\n englishMaxLimitWarningMsg: string = \"\";\r\n arabicMaxLimitWarningMsg: string = \"\";\r\n\r\n getCustomErrorsMassages() {\r\n this.ArabicLetterOnly = this.UtilityService.getResourceValue(\"ArabicIsRequiredAndOnly50CharactersEnglish\");\r\n this.EnglishLetterOnly = this.UtilityService.getResourceValue(\"EnglishLetterOnly\");\r\n\r\n\r\n }\r\n async ngOnInit() {\r\n this.controlValidationService.isCreatedBefor = false\r\n this.CurrentLanguage = await this.UtilityService.getCurrentLanguage();\r\n\r\n // this.translate.onLangChange.subscribe((event: LangChangeEvent) => {\r\n // this.CurrentLanguage = event.lang;\r\n // this.showInputUsingLanguageMode()\r\n // });\r\n this.MultiLanguagegroup = new FormGroup({});;\r\n this.MultiLanguagegroup.addControl(\"Arabic\", new FormControl(''));\r\n this.MultiLanguagegroup.addControl(\"English\", new FormControl(''));\r\n this.ArabicFormControl = this.MultiLanguagegroup.controls[\"Arabic\"]; // new FormControl('',validationRules);\r\n this.EnglishFormControl = this.MultiLanguagegroup.controls[\"English\"]; // new FormControl('',validationRules);\r\n this.group.addControl(this.options.Name, new FormGroup(this.MultiLanguagegroup.controls));\r\n this.getCustomErrorsMassages()\r\n\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n if (!this.options.LanguageMode)\r\n this.options.LanguageMode = this.globalSettings.LanguageMode;\r\n if (!this.options.MultiControlPlacementType)\r\n this.options.MultiControlPlacementType = this.globalSettings.MultiControlPlacementType;\r\n if (!this.options.MaxLength)\r\n this.options.MaxLength = this.globalSettings.MaxLengthTextBox;\r\n\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\") {\r\n this.options.ArabicLabelValue = this.UtilityService.getResourceValue(this.options.LabelKey) + \" \" + this.UtilityService.getResourceValue(\"InArabic\");\r\n this.options.EnglishLabelValue = this.UtilityService.getResourceValue(this.options.LabelKey) + \" \" + this.UtilityService.getResourceValue(\"InEnglish\");\r\n }\r\n else {\r\n if (this.options.ArabicLabelKey != null && this.options.ArabicLabelKey != \"\")\r\n this.options.ArabicLabelValue = this.UtilityService.getResourceValue(this.options.ArabicLabelKey);\r\n\r\n if (this.options.EnglishLabelKey != null && this.options.EnglishLabelKey != \"\")\r\n this.options.EnglishLabelValue = this.UtilityService.getResourceValue(this.options.EnglishLabelKey);\r\n }\r\n\r\n\r\n\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.EnglishValidationRules.push(Validation.functionBody);\r\n this.ArabicValidationRules.push(Validation.functionBody);\r\n }\r\n }\r\n\r\n\r\n if (this.options.MinLength > 0) {\r\n this.ArabicValidationRules.push(Validators.minLength(this.options.MinLength));\r\n this.EnglishValidationRules.push(Validators.minLength(this.options.MinLength));\r\n }\r\n\r\n if (this.options.MaxLength > 0) {\r\n this.EnglishValidationRules.push(Validators.maxLength(this.options.MaxLength));\r\n this.ArabicValidationRules.push(Validators.maxLength(this.options.MaxLength));\r\n\r\n if (!this.options.MaxLengthWarningLimit)\r\n this.options.MaxLengthWarningLimit = this.globalSettings.MaxLengthWarningLimit;\r\n\r\n this.minCharsLimit = this.options.MaxLength - this.options.MaxLengthWarningLimit;\r\n }\r\n\r\n this.showInputUsingLanguageMode();\r\n\r\n this.ArabicValidationRules.push(Validators.compose([\r\n this.controlUtility.arabicValidator({ ArabicIsRequiredAndOnly50CharactersEnglish: this.ArabicLetterOnly }),\r\n\r\n ]));\r\n this.EnglishValidationRules.push(Validators.compose([\r\n this.controlUtility.patternValidator(/^[~`!@#$%^&*()‘’“”_+=[\\]\\\\{}|;':\",.\\/<>?a-zA-Z0-9- ]*$/, { EnglishLetterOnly: this.EnglishLetterOnly }),\r\n\r\n ]));\r\n\r\n this.ArabicFormControl.setValidators(this.ArabicValidationRules);\r\n this.ArabicFormControl.setAsyncValidators(this.ArabicValidationRulesasync);\r\n this.EnglishFormControl.setValidators(this.EnglishValidationRules);\r\n this.EnglishFormControl.setAsyncValidators(this.EnglishValidationRulesasync);\r\n if (this.options.IsDisabled) {\r\n this.EnglishFormControl.disable();\r\n this.ArabicFormControl.disable();\r\n }\r\n this.ArabicFormControl.setValue(this.options.Value.Arabic)\r\n this.EnglishFormControl.setValue(this.options.Value.English)\r\n\r\n if (this.options.IsReadonly && !this.options.Value) {\r\n this.options.Value.Arabic = this.UtilityService.getResourceValue('NA');\r\n this.options.Value.English = this.UtilityService.getResourceValue('NA');\r\n }\r\n\r\n this.MultiLingualTextBoxFormControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n })\r\n }\r\n\r\n\r\n onTextChange() {\r\n // this.trimControlValue(type)\r\n let arabicValue = \"\";\r\n let englishValue = \"\";\r\n if (this.EnglishFormControl.value == \"\") {\r\n this.EnglishWordCountArray = 0;\r\n this.EnglishWordCount = 0;\r\n }\r\n else {\r\n if (this.EnglishFormControl.value != null && this.EnglishFormControl.value != undefined) {\r\n this.EnglishWordCountArray = this.EnglishFormControl.value.split(\" \").length;\r\n if (this.EnglishWordCountArray > 0) {\r\n if (this.EnglishWordCountArray > this.options.MaxWordCount) {\r\n this.EnglishWordCount = this.options.MaxWordCount;\r\n this.MultiLanguagegroup.controls[\"English\"].setErrors({ MaxWordCountValidationKey: this.options.MaxWordCount });\r\n this.MultiLanguagegroup.controls[\"English\"].markAsTouched();\r\n this.MultiLanguagegroup.controls[\"English\"].invalid;\r\n }\r\n else {\r\n this.EnglishWordCount = this.EnglishWordCountArray;\r\n }\r\n englishValue = this.EnglishFormControl.value;\r\n }\r\n }\r\n\r\n //Check for maxlength limit count\r\n //MaxLength should be gretaer than or equals chars limit so that minCharsLimit would be >= 0\r\n if (this.options.MaxLength && this.minCharsLimit >= 0) {\r\n this.englishCurrentCharsCount = this.EnglishFormControl.value.length;\r\n if (this.englishCurrentCharsCount > this.minCharsLimit) {\r\n this.showEnglishCharsLimitMsg = true;\r\n this.hasEnglishCharsLimitValidationError = true;\r\n if (this.englishCurrentCharsCount == this.options.MaxLength)\r\n this.englishCharsLimitMsgClass = \"danger\";\r\n else\r\n this.englishCharsLimitMsgClass = \"warning\";\r\n }\r\n else {\r\n this.showEnglishCharsLimitMsg = false;\r\n this.hasEnglishCharsLimitValidationError = false;\r\n }\r\n var max: number = this.options.MaxLength;\r\n var current: number = this.englishCurrentCharsCount;\r\n\r\n var resource = this.UtilityService.getResourceValue(\"MaxLengthLimitWarning\");\r\n this.englishMaxLimitWarningMsg = eval('`' + resource + '`');\r\n }\r\n\r\n }\r\n if (this.ArabicFormControl.value == \"\") {\r\n this.ArabicWordCountArray = 0;\r\n this.ArabicWordCount = 0;\r\n }\r\n else {\r\n if (this.ArabicFormControl.value != null && this.ArabicFormControl.value != undefined) {\r\n this.ArabicWordCountArray = this.ArabicFormControl.value.split(\" \").length;\r\n if (this.ArabicWordCountArray > 0) {\r\n if (this.ArabicWordCountArray > this.options.MaxWordCount) {\r\n this.ArabicWordCount = this.options.MaxWordCount;\r\n this.MultiLanguagegroup.controls[\"Arabic\"].setErrors({ MaxWordCountValidationKey: this.options.MaxWordCount });\r\n this.MultiLanguagegroup.controls[\"Arabic\"].markAsTouched();\r\n this.MultiLanguagegroup.controls[\"Arabic\"].invalid;\r\n }\r\n else {\r\n this.ArabicWordCount = this.ArabicWordCountArray;\r\n }\r\n arabicValue = this.ArabicFormControl.value;\r\n }\r\n }\r\n\r\n //Check for maxlength limit count\r\n //MaxLength should be gretaer than or equals chars limit so that minCharsLimit would be >= 0\r\n if (this.options.MaxLength && this.minCharsLimit >= 0) {\r\n this.arabicCurrentCharsCount = this.ArabicFormControl.value.length;\r\n if (this.arabicCurrentCharsCount > this.minCharsLimit) {\r\n this.showArabicCharsLimitMsg = true;\r\n this.hasArabicCharsLimitValidationError = true;\r\n if (this.arabicCurrentCharsCount == this.options.MaxLength)\r\n this.arabicCharsLimitMsgClass = \"danger\";\r\n else\r\n this.arabicCharsLimitMsgClass = \"warning\";\r\n }\r\n else {\r\n this.showArabicCharsLimitMsg = false;\r\n this.hasArabicCharsLimitValidationError = false;\r\n }\r\n\r\n var max: number = this.options.MaxLength;\r\n var current: number = this.arabicCurrentCharsCount;\r\n\r\n var resource = this.UtilityService.getResourceValue(\"MaxLengthLimitWarning\");\r\n this.arabicMaxLimitWarningMsg = eval('`' + resource + '`');\r\n }\r\n }\r\n let mulitLangModel = new EnglishArabicDTO();\r\n mulitLangModel.Arabic = arabicValue;\r\n mulitLangModel.English = englishValue;\r\n // this.ArabicFormControl = arabicValue;\r\n // this.EnglishFormControl = englishValue;\r\n this.OnChange.emit(mulitLangModel)\r\n this.group.get(this.options.Name).setValue(mulitLangModel);\r\n //Use this line to enable two way binding.\r\n this.options.Value = mulitLangModel;\r\n this.MultiLingualTextBoxFormControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n })\r\n }\r\n\r\n\r\n\r\n resetError() {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n //External Method\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(this.ArabicFormControl, this.EnglishValidationRules, this.options)\r\n this.controlUtility.RemoveRequiredValidation(this.EnglishFormControl, this.ArabicValidationRules, this.options)\r\n }\r\n //External Method\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(this.ArabicFormControl, this.EnglishValidationRules, this.options)\r\n this.controlUtility.AddRequiredValidation(this.EnglishFormControl, this.ArabicValidationRules, this.options)\r\n }\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(this.ArabicFormControl, this.EnglishValidationRules, CustomValidation)\r\n this.controlUtility.RemoveCustomValidation(this.EnglishFormControl, this.ArabicValidationRules, CustomValidation)\r\n }\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(this.ArabicFormControl, this.EnglishValidationRules, CustomValidation)\r\n this.controlUtility.AddCustomValidation(this.EnglishFormControl, this.ArabicValidationRules, CustomValidation)\r\n }\r\n\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.ArabicFormControl)\r\n this.controlUtility.IsValid(this.EnglishFormControl)\r\n }\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n\r\n\r\n getInputType(type: number) {\r\n return InputType[type]\r\n }\r\n\r\n trimControlValue(type: string) {\r\n const whitespace: string = ' ';\r\n if (type == \"En\") {\r\n let originalValue = this.controlUtility.trimControlValue(this.EnglishFormControl.value);\r\n this.EnglishFormControl.patchValue(originalValue)\r\n\r\n if (this.options.PatchFunction && this.options.PatchPath && this.EnglishFormControl.valid) {\r\n this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath)\r\n }\r\n if (this.EnglishFormControl.value.startsWith(whitespace) || this.EnglishFormControl.value.endsWith(whitespace)) {\r\n this.EnglishFormControl.patchValue(originalValue);\r\n }\r\n }\r\n if (type == \"Ar\") {\r\n let originalValue = this.controlUtility.trimControlValue(this.ArabicFormControl.value);\r\n this.ArabicFormControl.patchValue(originalValue)\r\n if (this.options.PatchFunction && this.options.PatchPath && this.ArabicFormControl.valid) {\r\n this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath)\r\n\r\n }\r\n if (this.ArabicFormControl.value.startsWith(whitespace) || this.ArabicFormControl.value.endsWith(whitespace)) {\r\n this.ArabicFormControl.patchValue(originalValue);\r\n }\r\n }\r\n\r\n }\r\n\r\n copyInputMessage(inputElement) {\r\n this.controlUtility.CopyInputMessage(inputElement)\r\n }\r\n\r\n showInputUsingLanguageMode() {\r\n this.ArabicValidationRules = this.ArabicValidationRules.filter(item => item !== Validators.required);\r\n this.EnglishValidationRules = this.EnglishValidationRules.filter(item => item !== Validators.required);\r\n\r\n this.ArabicFormControl.clearValidators();\r\n this.EnglishFormControl.clearValidators();\r\n\r\n this.ArabicFormControl.updateValueAndValidity();\r\n this.EnglishFormControl.updateValueAndValidity();\r\n\r\n switch (this.options.LanguageMode) {\r\n case LanguageMode.Both_Languages_are_visible:\r\n this.ShowArabicTextBox = true;\r\n this.ShowEnglishTextBox = true;\r\n if (this.options.IsRequired == true) {\r\n this.EnglishValidationRules.push(Validators.required);\r\n this.ArabicValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInArabic = true;\r\n this.IsShowAsteriskInEnglish = true;\r\n }\r\n break;\r\n case LanguageMode.Arabic_Language_only_is_visible:\r\n this.ShowArabicTextBox = true;\r\n this.options.MultiControlPlacementType = ControlLayout.Vertical;\r\n\r\n break;\r\n case LanguageMode.English_Language_only_is_visible:\r\n this.ShowEnglishTextBox = true;\r\n this.options.MultiControlPlacementType = ControlLayout.Vertical;\r\n\r\n break;\r\n case LanguageMode.Both_Languages_are_visible_but_only_current_language_is_required:\r\n this.ShowArabicTextBox = true;\r\n this.ShowEnglishTextBox = true;\r\n this.options.MultiControlPlacementType = this.globalSettings.MultiControlPlacementType\r\n\r\n if (this.CurrentLanguage == 'ar') {\r\n if (this.options.IsRequired == true) {\r\n this.ArabicValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInArabic = true;\r\n\r\n }\r\n }\r\n if (this.CurrentLanguage == 'en') {\r\n if (this.options.IsRequired == true) {\r\n this.EnglishValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInEnglish = true;\r\n\r\n }\r\n }\r\n break;\r\n case LanguageMode.Both_Languages_but_only_Arabic_is_required:\r\n this.ShowArabicTextBox = true;\r\n this.ShowEnglishTextBox = true;\r\n this.options.MultiControlPlacementType = this.globalSettings.MultiControlPlacementType\r\n\r\n if (this.options.IsRequired == true) {\r\n this.ArabicValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInArabic = true;\r\n\r\n }\r\n break;\r\n case LanguageMode.Both_Languages_but_only_English_is_required:\r\n this.ShowArabicTextBox = true;\r\n this.ShowEnglishTextBox = true;\r\n this.options.MultiControlPlacementType = this.globalSettings.MultiControlPlacementType\r\n\r\n if (this.options.IsRequired == true) {\r\n this.EnglishValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInEnglish = true;\r\n\r\n }\r\n break;\r\n case LanguageMode.Current_Language_only_is_visible_and_required:\r\n this.options.MultiControlPlacementType = ControlLayout.Vertical;\r\n if (this.CurrentLanguage == 'ar') {\r\n this.ShowArabicTextBox = true;\r\n this.ShowEnglishTextBox = false;\r\n if (this.options.IsRequired == true) {\r\n this.ArabicValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInArabic = true;\r\n\r\n }\r\n }\r\n if (this.CurrentLanguage == 'en') {\r\n this.ShowArabicTextBox = false;\r\n this.ShowEnglishTextBox = true;\r\n if (this.options.IsRequired == true) {\r\n this.EnglishValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInEnglish = true;\r\n\r\n }\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n this.ArabicFormControl.setValidators(this.ArabicValidationRules);\r\n this.EnglishFormControl.setValidators(this.EnglishValidationRules);\r\n this.ArabicFormControl.updateValueAndValidity();\r\n this.EnglishFormControl.updateValueAndValidity();\r\n\r\n }\r\n\r\n onArabicFocus(isFocus: boolean) {\r\n this.IsShowArabicWordCount = isFocus\r\n\r\n //onFocus\r\n if (isFocus) {\r\n if (this.hasArabicCharsLimitValidationError) //check if there was previous validation error\r\n this.showArabicCharsLimitMsg = true;\r\n }\r\n else //onFocusOut\r\n this.showArabicCharsLimitMsg = false;\r\n }\r\n\r\n onEnglishFocus(isFocus: boolean) {\r\n this.IsShowEnglishWordCount = isFocus\r\n\r\n //onFocus\r\n if (isFocus) {\r\n if (this.hasEnglishCharsLimitValidationError) //check if there was previous validation error\r\n this.showEnglishCharsLimitMsg = true;\r\n }\r\n else //onFocusOut\r\n this.showEnglishCharsLimitMsg = false;\r\n }\r\n\r\n\r\n}\r\n\r\n","import { Component, OnInit, Input, Optional, Output, EventEmitter } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, AbstractControl, ControlContainer, FormGroupDirective } from '@angular/forms';\r\nimport { ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { TextAreaOptions } from '../../Shared/Models/TextAreaOptions';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'BBSF-TextArea',\r\n templateUrl: './TextArea.component.html'\r\n})\r\nexport class TextAreaComponent implements OnInit {\r\n\r\n\r\n static controlContainerstatic = null;\r\n constructor(private controlUtility: ControlUtility, @Optional() private controlContainer: ControlContainer,\r\n public TextAreaControlHost: FormGroupDirective, private UtilityService: UtilityService,\r\n private controlValidationService: ControlValidationService, private globalSettings: GlobalSettings) {\r\n TextAreaComponent.controlContainerstatic = this.controlContainer;\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: TextAreaOptions;\r\n @Output() OnChange = new EventEmitter();\r\n\r\n TextAreaFormControl: AbstractControl;\r\n WordCount: number = 0;\r\n WordCountArray: number = 0;\r\n IsShowWordCount: boolean = false;\r\n markAllAsTouched: boolean = false;\r\n validationRules = [];\r\n validationRulesasync = [];\r\n //For Show warning message of max length limit\r\n currentCharsCount: number = 0;\r\n showCharsLimitMsg: boolean = false;\r\n hasCharsLimitValidationError: boolean = false;\r\n charsLimitMsgClass: string;\r\n minCharsLimit: number = -1; //To disable chars limit feature by default\r\n maxLimitWarningMsg: string = \"\";\r\n public textDir;\r\n\r\n ngOnInit() {\r\n if (this.options.IsReadonly && !this.options.Value)\r\n this.options.Value = this.UtilityService.getResourceValue('NA');\r\n\r\n if (this.options.ForceDirection)\r\n this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';\r\n else\r\n this.textDir = localStorage.getItem('language') == 'ar' ? 'rtl' : 'ltr';\r\n\r\n this.controlValidationService.isCreatedBefor = false\r\n\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.TextAreaFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n\r\n if (!this.options.MaxLength)\r\n this.options.MaxLength = this.globalSettings.MaxLengthTextArea;\r\n\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\")\r\n this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);\r\n\r\n this.TextAreaFormControl.setValue(this.options.Value);\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.validationRules.push(Validation.functionBody);\r\n }\r\n\r\n }\r\n if (this.options.MinLength > 0) {\r\n this.validationRules.push(Validators.minLength(this.options.MinLength));\r\n }\r\n if (this.options.MaxLength > 0) {\r\n this.validationRules.push(Validators.maxLength(this.options.MaxLength));\r\n\r\n if (!this.options.MaxLengthWarningLimit)\r\n this.options.MaxLengthWarningLimit = this.globalSettings.MaxLengthWarningLimit;\r\n\r\n this.minCharsLimit = this.options.MaxLength - this.options.MaxLengthWarningLimit;\r\n }\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n }\r\n this.TextAreaFormControl.setValidators(this.validationRules);\r\n this.TextAreaFormControl.setAsyncValidators(this.validationRulesasync);\r\n if (this.options.IsDisabled) {\r\n this.TextAreaFormControl.disable();\r\n }\r\n\r\n this.TextAreaControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n })\r\n\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n this.controlUtility.setAttributeForControl(this.options)\r\n }\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n getInputType(type: number) {\r\n return this.controlUtility.getInputType(type)\r\n }\r\n\r\n trimControlValue() {\r\n let originalValue = this.controlUtility.trimControlValue(this.TextAreaFormControl.value);\r\n this.TextAreaFormControl.patchValue(originalValue)\r\n if (this.options.PatchFunction && this.options.PatchPath && this.TextAreaFormControl.valid) {\r\n this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath)\r\n }\r\n }\r\n\r\n copyInputMessage(inputElement) {\r\n this.controlUtility.CopyInputMessage(inputElement)\r\n }\r\n\r\n onTextChange() {\r\n\r\n if (this.TextAreaFormControl.value == \"\") {\r\n this.WordCountArray = 0;\r\n this.WordCount = 0;\r\n }\r\n\r\n else {\r\n this.WordCountArray = this.TextAreaFormControl.value.split(\" \").length;\r\n if (this.WordCountArray > 0) {\r\n if (this.WordCountArray > this.options.MaxWordCount) {\r\n this.WordCount = this.options.MaxWordCount;\r\n this.TextAreaFormControl.setErrors({ \"errorMassage\": ` Word count must be less then or equal ${this.options.MaxWordCount}` });\r\n this.TextAreaFormControl.markAsTouched();\r\n this.TextAreaFormControl.invalid;\r\n }\r\n else {\r\n this.WordCount = this.WordCountArray;\r\n\r\n }\r\n\r\n }\r\n }\r\n //Check for maxlength limit count\r\n //MaxLength should be gretaer than or equals chars limit so that minCharsLimit would be >= 0\r\n if (this.options.MaxLength && this.minCharsLimit >= 0) {\r\n this.currentCharsCount = this.TextAreaFormControl.value.length;\r\n if (this.currentCharsCount > this.minCharsLimit) {\r\n this.showCharsLimitMsg = true;\r\n this.hasCharsLimitValidationError = true;\r\n\r\n if (this.currentCharsCount == this.options.MaxLength)\r\n this.charsLimitMsgClass = \"danger\";\r\n else\r\n this.charsLimitMsgClass = \"warning\";\r\n }\r\n else {\r\n this.showCharsLimitMsg = false;\r\n this.hasCharsLimitValidationError = false;\r\n }\r\n var max: number = this.options.MaxLength;\r\n var current: number = this.currentCharsCount;\r\n\r\n var resource = this.UtilityService.getResourceValue(\"MaxLengthLimitWarning\");\r\n this.maxLimitWarningMsg = eval('`' + resource + '`');\r\n }\r\n this.OnChange.emit(this.TextAreaFormControl.value)\r\n\r\n }\r\n\r\n onFocus(isFocus: boolean) {\r\n this.IsShowWordCount = isFocus;\r\n\r\n //onFocus\r\n if (isFocus) {\r\n if (this.hasCharsLimitValidationError) //check if there was previous validation error\r\n this.showCharsLimitMsg = true;\r\n }\r\n else //onFocusOut\r\n this.showCharsLimitMsg = false;\r\n }\r\n\r\n //External Method\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(this.TextAreaFormControl, this.validationRules, this.options)\r\n }\r\n //External Method\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(this.TextAreaFormControl, this.validationRules, this.options)\r\n }\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(this.TextAreaFormControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(this.TextAreaFormControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.TextAreaFormControl)\r\n }\r\n}\r\n\r\n\r\n","import { Component, OnInit, Input, DoCheck, Optional, Output, EventEmitter } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, AbstractControl, ControlContainer, FormGroupDirective } from '@angular/forms';\r\nimport { InputType } from '../../Shared/Enums/InputType';\r\nimport { EnglishArabicDTO } from '../../Shared/Models/EnglishArabicDTO';\r\nimport { MultiLingualTextAreaOptions } from '../../Shared/Models/MultiLingualTextAreaOptions';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { LanguageMode } from '../../Shared/Enums/LanguageMode';\r\nimport { ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\nimport { Observable } from 'rxjs';\r\nimport { ControlLayout } from '../../Shared/Enums/ControlLayout';\r\n\r\n\r\n@Component({\r\n selector: 'BBSF-MultiLingualTextArea',\r\n templateUrl: './MultiLingualTextArea.component.html'\r\n})\r\nexport class MultiLingualTextAreaComponent implements OnInit {\r\n\r\n static controlContainerstatic = null;\r\n IsShowAsteriskInArabic: boolean;\r\n IsShowAsteriskInEnglish: boolean;\r\n constructor(public MultiLingualTextAreaFormControlHost: FormGroupDirective, @Optional() private controlContainer: ControlContainer,\r\n private controlUtility: ControlUtility, private UtilityService: UtilityService, private controlValidationService: ControlValidationService,\r\n private globalSettings: GlobalSettings\r\n ) {\r\n MultiLingualTextAreaComponent.controlContainerstatic = this.controlContainer;\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: MultiLingualTextAreaOptions;\r\n @Output() OnChange = new EventEmitter();\r\n\r\n ArabicTextAreaFormControl: AbstractControl;\r\n EnglishTextAreaFormControl: AbstractControl;\r\n MultiTextAreaFormControl: AbstractControl;\r\n MultiLanguageTextAreagroup: FormGroup;\r\n ArabicWordCount: number = 0;\r\n ArabicWordCountArray: number = 0;\r\n EnglishWordCount: number = 0;\r\n EnglishWordCountArray: number = 0;\r\n CurrentLanguage: string = \"\";\r\n ShowArabicTextArea: boolean\r\n ShowEngishTextArea: boolean\r\n ArabicValidationRules = [];\r\n ArabicValidationRulesasync = [];\r\n EnglishValidationRules = [];\r\n EnglishValidationRulesasync = [];\r\n validationRules = [];\r\n validationRulesasync = [];\r\n IsShowArabicWordCount: boolean = false;\r\n IsShowEnglishWordCount: boolean = false;\r\n markAllAsTouched: boolean = false;\r\n\r\n\r\n ArabicLetterOnly: string = \"\"\r\n EnglishLetterOnly: string = \"\"\r\n\r\n //For Show warning message of max length limit\r\n minCharsLimit: number = -1; //To disable chars limit feature by default\r\n englishCurrentCharsCount: number = 0;\r\n arabicCurrentCharsCount: number = 0;\r\n showEnglishCharsLimitMsg: boolean = false;\r\n showArabicCharsLimitMsg: boolean = false;\r\n hasEnglishCharsLimitValidationError: boolean = false;\r\n hasArabicCharsLimitValidationError: boolean = false;\r\n englishCharsLimitMsgClass: string;\r\n arabicCharsLimitMsgClass: string;\r\n englishMaxLimitWarningMsg: string = \"\";\r\n arabicMaxLimitWarningMsg: string = \"\";\r\n\r\n getCustomErrorsMassages() {\r\n this.ArabicLetterOnly = this.UtilityService.getResourceValue(\"ArabicIsRequiredAndOnly50CharactersEnglish\");\r\n this.EnglishLetterOnly = this.UtilityService.getResourceValue(\"EnglishLetterOnly\");\r\n\r\n\r\n }\r\n\r\n async ngOnInit() {\r\n this.controlValidationService.isCreatedBefor = false\r\n this.CurrentLanguage = await this.UtilityService.getCurrentLanguage();\r\n // UtilityService.Translator.onLangChange.subscribe((event: LangChangeEvent) => {\r\n // this.CurrentLanguage = event.lang\r\n // this.showInputUsingLanguageMode();\r\n\r\n // });\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n if (!this.options.LanguageMode)\r\n this.options.LanguageMode = this.globalSettings.LanguageMode;\r\n if (!this.options.MultiControlPlacementType)\r\n this.options.MultiControlPlacementType = this.globalSettings.MultiControlPlacementType;\r\n if (!this.options.MaxLength)\r\n this.options.MaxLength = this.globalSettings.MaxLengthTextArea;\r\n\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\") {\r\n this.options.ArabicLabelValue = this.UtilityService.getResourceValue(this.options.LabelKey) + \" \" + this.UtilityService.getResourceValue(\"InArabic\");\r\n this.options.EnglishLabelValue = this.UtilityService.getResourceValue(this.options.LabelKey) + \" \" + this.UtilityService.getResourceValue(\"InEnglish\");\r\n }\r\n else {\r\n if (this.options.ArabicLabelKey != null && this.options.ArabicLabelKey != \"\")\r\n this.options.ArabicLabelValue = this.UtilityService.getResourceValue(this.options.ArabicLabelKey);\r\n\r\n if (this.options.EnglishLabelKey != null && this.options.EnglishLabelKey != \"\")\r\n this.options.EnglishLabelValue = this.UtilityService.getResourceValue(this.options.EnglishLabelKey);\r\n }\r\n\r\n this.MultiLanguageTextAreagroup = new FormGroup({});\r\n this.MultiLanguageTextAreagroup.addControl(\"Arabic\", new FormControl(''));\r\n this.MultiLanguageTextAreagroup.addControl(\"English\", new FormControl(''));\r\n this.ArabicTextAreaFormControl = this.MultiLanguageTextAreagroup.controls[\"Arabic\"]; // new FormControl('',validationRules);\r\n this.EnglishTextAreaFormControl = this.MultiLanguageTextAreagroup.controls[\"English\"]; // new FormControl('',validationRules);\r\n this.group.addControl(this.options.Name, new FormGroup(this.MultiLanguageTextAreagroup.controls));\r\n this.getCustomErrorsMassages()\r\n\r\n switch (this.options.Type) {\r\n case InputType.Email:\r\n this.EnglishValidationRules.push(Validators.compose([\r\n this.controlUtility.patternValidator(/^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}$/, { EmailValidationKey: \"\" }),\r\n\r\n ]));\r\n this.ArabicValidationRules.push(Validators.compose([\r\n this.controlUtility.patternValidator(/^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}$/, { EmailValidationKey: \"\" }),\r\n\r\n ]));\r\n break;\r\n\r\n case InputType.Number:\r\n this.EnglishValidationRules.push(Validators.pattern('^[0-9]+(\\.?[0-9]+)?$'));\r\n this.ArabicValidationRules.push(Validators.pattern('^[0-9]+(\\.?[0-9]+)?$'));\r\n break;\r\n }\r\n\r\n\r\n\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.EnglishValidationRules.push(Validation.functionBody);\r\n this.ArabicValidationRules.push(Validation.functionBody);\r\n }\r\n\r\n }\r\n\r\n if (this.options.MinLength > 0) {\r\n this.ArabicValidationRules.push(Validators.minLength(this.options.MinLength));\r\n this.EnglishValidationRules.push(Validators.minLength(this.options.MinLength));\r\n }\r\n if (this.options.MaxLength > 0) {\r\n this.EnglishValidationRules.push(Validators.maxLength(this.options.MaxLength));\r\n this.ArabicValidationRules.push(Validators.maxLength(this.options.MaxLength));\r\n\r\n if (!this.options.MaxLengthWarningLimit)\r\n this.options.MaxLengthWarningLimit = this.globalSettings.MaxLengthWarningLimit;\r\n\r\n this.minCharsLimit = this.options.MaxLength - this.options.MaxLengthWarningLimit;\r\n }\r\n\r\n this.showInputUsingLanguageMode();\r\n\r\n this.ArabicValidationRules.push(Validators.compose([\r\n this.controlUtility.arabicValidator({ ArabicIsRequiredAndOnly50CharactersEnglish: this.ArabicLetterOnly }),\r\n\r\n ]));\r\n this.EnglishValidationRules.push(Validators.compose([\r\n this.controlUtility.patternValidator(/^[~`!@#$%^&*()‘’“”_+=[\\]\\\\{}|;':\",.\\/<>?a-zA-Z0-9- \\n]*$/, { EnglishLetterOnly: this.EnglishLetterOnly }),\r\n\r\n ]));\r\n\r\n this.ArabicTextAreaFormControl.setValidators(this.ArabicValidationRules);\r\n this.ArabicTextAreaFormControl.setAsyncValidators(this.ArabicValidationRulesasync);\r\n this.EnglishTextAreaFormControl.setValidators(this.EnglishValidationRules);\r\n this.EnglishTextAreaFormControl.setAsyncValidators(this.EnglishValidationRulesasync);\r\n\r\n\r\n if (this.options.IsDisabled) {\r\n this.EnglishTextAreaFormControl.disable();\r\n this.ArabicTextAreaFormControl.disable();\r\n }\r\n this.ArabicTextAreaFormControl.setValue(this.options.Value.Arabic)\r\n this.EnglishTextAreaFormControl.setValue(this.options.Value.English)\r\n\r\n this.MultiLingualTextAreaFormControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n })\r\n\r\n if (this.options.IsReadonly && !this.options.Value) {\r\n this.options.Value.Arabic = this.UtilityService.getResourceValue('NA');\r\n this.options.Value.English = this.UtilityService.getResourceValue('NA');\r\n }\r\n\r\n }\r\n\r\n\r\n onTextChange() {\r\n let arabicValue = \"\";\r\n let englishValue = \"\";\r\n if (this.EnglishTextAreaFormControl.value == \"\") {\r\n this.EnglishWordCountArray = 0;\r\n this.EnglishWordCount = 0;\r\n }\r\n else {\r\n if (this.EnglishTextAreaFormControl.value != null || this.EnglishTextAreaFormControl.value != undefined) {\r\n this.EnglishWordCountArray = this.EnglishTextAreaFormControl.value.split(\" \").length;\r\n if (this.EnglishWordCountArray > 0) {\r\n if (this.EnglishWordCountArray > this.options.MaxWordCount) {\r\n this.EnglishWordCount = this.options.MaxWordCount;\r\n this.MultiLanguageTextAreagroup.controls[\"English\"].setErrors({ MaxWordCountValidationKey: this.options.MaxWordCount });\r\n this.MultiLanguageTextAreagroup.controls[\"English\"].markAsTouched();\r\n this.MultiLanguageTextAreagroup.controls[\"English\"].invalid;\r\n }\r\n else {\r\n this.EnglishWordCount = this.EnglishWordCountArray;\r\n }\r\n englishValue = this.EnglishTextAreaFormControl.value;\r\n\r\n }\r\n }\r\n\r\n //Check for maxlength limit count\r\n //MaxLength should be gretaer than or equals chars limit so that minCharsLimit would be >= 0\r\n if (this.options.MaxLength && this.minCharsLimit >= 0) {\r\n this.englishCurrentCharsCount = this.EnglishTextAreaFormControl.value.length;\r\n if (this.englishCurrentCharsCount > this.minCharsLimit) {\r\n this.showEnglishCharsLimitMsg = true;\r\n this.hasEnglishCharsLimitValidationError = true;\r\n if (this.englishCurrentCharsCount == this.options.MaxLength)\r\n this.englishCharsLimitMsgClass = \"danger\";\r\n else\r\n this.englishCharsLimitMsgClass = \"warning\";\r\n }\r\n else {\r\n this.showEnglishCharsLimitMsg = false;\r\n this.hasEnglishCharsLimitValidationError = false;\r\n }\r\n var max: number = this.options.MaxLength;\r\n var current: number = this.englishCurrentCharsCount;\r\n\r\n var resource = this.UtilityService.getResourceValue(\"MaxLengthLimitWarning\");\r\n this.englishMaxLimitWarningMsg = eval('`' + resource + '`');\r\n }\r\n }\r\n if (this.ArabicTextAreaFormControl.value == \"\") {\r\n this.ArabicWordCountArray = 0;\r\n this.ArabicWordCount = 0;\r\n }\r\n else {\r\n if (this.ArabicTextAreaFormControl.value != null || this.ArabicTextAreaFormControl.value != undefined) {\r\n this.ArabicWordCountArray = this.ArabicTextAreaFormControl.value.split(\" \").length;\r\n if (this.ArabicWordCountArray > 0) {\r\n if (this.ArabicWordCountArray > this.options.MaxWordCount) {\r\n this.ArabicWordCount = this.options.MaxWordCount;\r\n this.MultiLanguageTextAreagroup.controls[\"Arabic\"].setErrors({ MaxWordCountValidationKey: this.options.MaxWordCount });\r\n this.MultiLanguageTextAreagroup.controls[\"Arabic\"].markAsTouched();\r\n this.MultiLanguageTextAreagroup.controls[\"Arabic\"].invalid;\r\n }\r\n else {\r\n this.ArabicWordCount = this.ArabicWordCountArray;\r\n }\r\n arabicValue = this.ArabicTextAreaFormControl.value;\r\n }\r\n }\r\n\r\n //Check for maxlength limit count\r\n //MaxLength should be gretaer than or equals chars limit so that minCharsLimit would be >= 0\r\n if (this.options.MaxLength && this.minCharsLimit >= 0) {\r\n this.arabicCurrentCharsCount = this.ArabicTextAreaFormControl.value.length;\r\n if (this.arabicCurrentCharsCount > this.minCharsLimit) {\r\n this.showArabicCharsLimitMsg = true;\r\n this.hasArabicCharsLimitValidationError = true;\r\n if (this.arabicCurrentCharsCount == this.options.MaxLength)\r\n this.arabicCharsLimitMsgClass = \"danger\";\r\n else\r\n this.arabicCharsLimitMsgClass = \"warning\";\r\n }\r\n else {\r\n this.showArabicCharsLimitMsg = false;\r\n this.hasArabicCharsLimitValidationError = false;\r\n }\r\n var max: number = this.options.MaxLength;\r\n var current: number = this.arabicCurrentCharsCount;\r\n\r\n var resource = this.UtilityService.getResourceValue(\"MaxLengthLimitWarning\");\r\n this.arabicMaxLimitWarningMsg = eval('`' + resource + '`');\r\n }\r\n }\r\n let mulitLangModel = new EnglishArabicDTO();\r\n mulitLangModel.Arabic = arabicValue;\r\n mulitLangModel.English = englishValue;\r\n this.OnChange.emit(mulitLangModel)\r\n this.group.get(this.options.Name).setValue(mulitLangModel);\r\n //Use this line to enable two way binding.\r\n this.options.Value = mulitLangModel;\r\n\r\n }\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n\r\n getInputType(type: number) {\r\n return InputType[type]\r\n }\r\n\r\n trimControlValue(type: string) {\r\n const whitespace: string = ' ';\r\n if (type == \"En\") {\r\n let originalValue = this.EnglishTextAreaFormControl.value;\r\n if (this.options.PatchFunction && this.options.PatchPath && this.EnglishTextAreaFormControl.valid) {\r\n this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath)\r\n }\r\n if (this.EnglishTextAreaFormControl.value.startsWith(whitespace) || this.EnglishTextAreaFormControl.value.endsWith(whitespace)) {\r\n this.EnglishTextAreaFormControl.patchValue(originalValue);\r\n }\r\n }\r\n if (type == \"Ar\") {\r\n let originalValue = this.ArabicTextAreaFormControl.value;\r\n if (this.options.PatchFunction && this.options.PatchPath && this.ArabicTextAreaFormControl.valid) {\r\n this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath)\r\n }\r\n if (this.ArabicTextAreaFormControl.value.startsWith(whitespace) || this.ArabicTextAreaFormControl.value.endsWith(whitespace)) {\r\n this.ArabicTextAreaFormControl.patchValue(originalValue);\r\n }\r\n }\r\n\r\n }\r\n\r\n copyInputMessage(inputElement) {\r\n this.controlUtility.CopyInputMessage(inputElement)\r\n }\r\n\r\n\r\n showInputUsingLanguageMode() {\r\n\r\n this.ArabicValidationRules = this.ArabicValidationRules.filter(item => item !== Validators.required);\r\n this.EnglishValidationRules = this.EnglishValidationRules.filter(item => item !== Validators.required);\r\n\r\n this.ArabicTextAreaFormControl.clearValidators();\r\n this.EnglishTextAreaFormControl.clearValidators();\r\n\r\n this.ArabicTextAreaFormControl.updateValueAndValidity();\r\n this.EnglishTextAreaFormControl.updateValueAndValidity();\r\n\r\n switch (this.options.LanguageMode) {\r\n case LanguageMode.Both_Languages_are_visible:\r\n this.ShowArabicTextArea = true;\r\n this.ShowEngishTextArea = true;\r\n if (this.options.IsRequired == true) {\r\n this.EnglishValidationRules.push(Validators.required);\r\n this.ArabicValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInArabic = true;\r\n this.IsShowAsteriskInEnglish = true;\r\n }\r\n break;\r\n case LanguageMode.Arabic_Language_only_is_visible:\r\n this.ShowArabicTextArea = true;\r\n this.options.MultiControlPlacementType = ControlLayout.Vertical;\r\n\r\n break;\r\n case LanguageMode.English_Language_only_is_visible:\r\n this.ShowEngishTextArea = true;\r\n this.options.MultiControlPlacementType = ControlLayout.Vertical;\r\n\r\n break;\r\n case LanguageMode.Both_Languages_are_visible_but_only_current_language_is_required:\r\n this.ShowArabicTextArea = true;\r\n this.ShowEngishTextArea = true;\r\n this.options.MultiControlPlacementType = this.globalSettings.MultiControlPlacementType\r\n\r\n if (this.CurrentLanguage == 'ar') {\r\n if (this.options.IsRequired == true) {\r\n this.ArabicValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInArabic = true;\r\n\r\n }\r\n }\r\n if (this.CurrentLanguage == 'en') {\r\n if (this.options.IsRequired == true) {\r\n this.EnglishValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInEnglish = true;\r\n\r\n }\r\n }\r\n break;\r\n case LanguageMode.Both_Languages_but_only_Arabic_is_required:\r\n this.ShowArabicTextArea = true;\r\n this.ShowEngishTextArea = true;\r\n this.options.MultiControlPlacementType = this.globalSettings.MultiControlPlacementType\r\n\r\n if (this.options.IsRequired == true) {\r\n this.ArabicValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInArabic = true;\r\n\r\n }\r\n break;\r\n case LanguageMode.Both_Languages_but_only_English_is_required:\r\n this.ShowArabicTextArea = true;\r\n this.ShowEngishTextArea = true;\r\n this.options.MultiControlPlacementType = this.globalSettings.MultiControlPlacementType\r\n\r\n if (this.options.IsRequired == true) {\r\n this.EnglishValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInEnglish = true;\r\n\r\n }\r\n break;\r\n case LanguageMode.Current_Language_only_is_visible_and_required:\r\n this.options.MultiControlPlacementType = ControlLayout.Vertical;\r\n if (this.CurrentLanguage == 'ar') {\r\n this.ShowArabicTextArea = true;\r\n this.ShowEngishTextArea = false;\r\n if (this.options.IsRequired == true) {\r\n this.ArabicValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInArabic = true;\r\n\r\n }\r\n }\r\n if (this.CurrentLanguage == 'en') {\r\n this.ShowArabicTextArea = false;\r\n this.ShowEngishTextArea = true;\r\n if (this.options.IsRequired == true) {\r\n this.EnglishValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInEnglish = true;\r\n\r\n }\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n this.ArabicTextAreaFormControl.setValidators(this.ArabicValidationRules);\r\n this.EnglishTextAreaFormControl.setValidators(this.EnglishValidationRules);\r\n this.ArabicTextAreaFormControl.updateValueAndValidity();\r\n this.EnglishTextAreaFormControl.updateValueAndValidity();\r\n }\r\n\r\n\r\n onArabicFocus(isFocus: boolean) {\r\n this.IsShowArabicWordCount = isFocus\r\n\r\n //onFocus\r\n if (isFocus) {\r\n if (this.hasArabicCharsLimitValidationError) //check if there was previous validation error\r\n this.showArabicCharsLimitMsg = true;\r\n }\r\n else //onFocusOut\r\n this.showArabicCharsLimitMsg = false;\r\n }\r\n\r\n onEnglishFocus(isFocus: boolean) {\r\n this.IsShowEnglishWordCount = isFocus\r\n\r\n //onFocus\r\n if (isFocus) {\r\n if (this.hasEnglishCharsLimitValidationError) //check if there was previous validation error\r\n this.showEnglishCharsLimitMsg = true;\r\n }\r\n else //onFocusOut\r\n this.showEnglishCharsLimitMsg = false;\r\n }\r\n\r\n //External Method\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(this.EnglishTextAreaFormControl, this.EnglishValidationRules, this.options)\r\n this.controlUtility.RemoveRequiredValidation(this.ArabicTextAreaFormControl, this.ArabicValidationRules, this.options)\r\n }\r\n //External Method\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(this.EnglishTextAreaFormControl, this.EnglishValidationRules, this.options)\r\n this.controlUtility.AddRequiredValidation(this.ArabicTextAreaFormControl, this.ArabicValidationRules, this.options)\r\n }\r\n\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(this.EnglishTextAreaFormControl, this.EnglishValidationRules, CustomValidation)\r\n this.controlUtility.RemoveCustomValidation(this.ArabicTextAreaFormControl, this.ArabicValidationRules, CustomValidation)\r\n }\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(this.EnglishTextAreaFormControl, this.EnglishValidationRules, CustomValidation)\r\n this.controlUtility.AddCustomValidation(this.ArabicTextAreaFormControl, this.ArabicValidationRules, CustomValidation)\r\n }\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.EnglishTextAreaFormControl)\r\n this.controlUtility.IsValid(this.ArabicTextAreaFormControl)\r\n }\r\n\r\n}\r\n\r\n","import { Component, OnInit, Input, DoCheck, Optional, Output, EventEmitter } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, AbstractControl, ControlContainer, FormGroupDirective } from '@angular/forms';\r\nimport { ErrorMassageValidation } from '../../Shared/services/validationErrorMassage.service';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { CheckBoxOptions } from '../../Shared/Models/CheckBoxOptions';\r\nimport { BBSFTranslateService, ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';\r\n\r\n@Component({\r\n // tslint:disable-next-line: component-selector\r\n selector: 'BBSF-CheckBox',\r\n templateUrl: './CheckBox.component.html'\r\n})\r\nexport class CheckBoxComponent implements OnInit {\r\n\r\n\r\n static controlContainerstatic = null;\r\n // tslint:disable-next-line: max-line-length\r\n constructor(private controlUtility: ControlUtility, @Optional() private controlContainer: ControlContainer, public CheckBoxControlHost: FormGroupDirective,private UtilityService:UtilityService,private translate: BBSFTranslateService,private controlValidationService:ControlValidationService) {\r\n CheckBoxComponent.controlContainerstatic = this.controlContainer;\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: CheckBoxOptions;\r\n @Output() OnChange = new EventEmitter();\r\n\r\n CheckBoxFormControl: AbstractControl;\r\n markAllAsTouched: boolean = false;\r\n validationRules = [];\r\n validationRulesasync = [];\r\n textDir;\r\n\r\n ngOnInit() {\r\n if(this.options.ForceDirection)\r\n this.textDir=this.options.ForceDirection==2?'rtl':'ltr';\r\n else\r\n this.textDir=localStorage.getItem('language')=='ar'?'rtl':'ltr';\r\n this.controlValidationService.isCreatedBefor = false\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.CheckBoxFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n this.validationRules = [];\r\n this.validationRulesasync = [];\r\n this.CheckBoxFormControl.setValue(this.options.Value);\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\")\r\n this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);\r\n\r\n\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n }\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.validationRules.push(Validation.functionBody);\r\n }\r\n\r\n }\r\n\r\n\r\n this.CheckBoxFormControl.setValidators(this.validationRules);\r\n this.CheckBoxFormControl.setAsyncValidators(this.validationRulesasync);\r\n if (this.options.IsDisabled) {\r\n this.CheckBoxFormControl.disable();\r\n }\r\n\r\n this.CheckBoxControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n })\r\n\r\n\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n this.controlUtility.setAttributeForControl(this.options)\r\n }\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n\r\n onValueChanged() {\r\n this.OnChange.emit(this.CheckBoxFormControl.value)\r\n let originalValue =this.CheckBoxFormControl.value;\r\n if (this.options.PatchFunction && this.options.PatchPath && this.group.get(this.options.Name).valid) {\r\n this.controlUtility.patchControlValue(originalValue,this.options.PatchFunction ,this.options.PatchPath)\r\n }\r\n }\r\n\r\n //External Method\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(this.CheckBoxFormControl, this.validationRules, this.options)\r\n }\r\n //External Method\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(this.CheckBoxFormControl, this.validationRules, this.options)\r\n }\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(this.CheckBoxFormControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(this.CheckBoxFormControl, this.validationRules, CustomValidation)\r\n }\r\n\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.CheckBoxFormControl)\r\n }\r\n\r\n}\r\n\r\n","import { Component, OnInit, Input, DoCheck, Optional, HostListener, Output, EventEmitter } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, AbstractControl, FormGroupDirective, ControlContainer } from '@angular/forms';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { DropdownOptions } from '../../Shared/Models/DropdownOptions';\r\nimport { DropdownListItem } from '../../Shared/Models/DropdownListItem';\r\nimport { OnPagingFiltersChangeService } from '../../Shared/services/OnPagingFiltersChange.service';\r\nimport { ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n // tslint:disable-next-line: component-selector\r\n selector: 'BBSF-DropdownList',\r\n templateUrl: './DropdownList.component.html'\r\n})\r\nexport class DropdownListComponent implements OnInit {\r\n static controlContainerstatic = null;\r\n // tslint:disable-next-line: max-line-length\r\n constructor(private onChangeService: OnPagingFiltersChangeService, private controlUtility: ControlUtility, @Optional() private controlContainer: ControlContainer, public DropdownListControlHost: FormGroupDirective,\r\n public UtilityService: UtilityService, private controlValidationService: ControlValidationService,\r\n private globalSettings: GlobalSettings) {\r\n DropdownListComponent.controlContainerstatic = this.controlContainer;\r\n //console.log(environment[\"BBSF_AdminUrl\"]);\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: DropdownOptions;\r\n DropdownListFormControl: AbstractControl;\r\n dropdownSettings = {};\r\n SelectedItems: DropdownListItem[]\r\n SelectedList: any[] = []\r\n @Output() OnChange = new EventEmitter();\r\n @Output() onClear = new EventEmitter();\r\n\r\n markAllAsTouched: boolean = false;\r\n\r\n controlChanged: boolean = false;\r\n validationRules = [];\r\n validationRulesasync = [];\r\n textDir;\r\n ngOnInit() {\r\n if (this.options.ForceDirection)\r\n this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';\r\n else\r\n this.textDir = localStorage.getItem('language') == 'ar' ? 'rtl' : 'ltr';\r\n this.controlValidationService.isCreatedBefor = false\r\n this.SelectedList = this.options.SelectedItems\r\n this.dropdownSettings = {\r\n singleSelection: this.options.SingleSelection,\r\n text: \"Select\",\r\n selectAllText: 'Select All',\r\n unSelectAllText: 'UnSelect All',\r\n enableSearchFilter: this.options.AllowSearchFilter,\r\n classes: this.options.Classes,\r\n disabled: this.options.IsDisabled,\r\n showCheckbox: this.options.ShowCheckbox,\r\n enableCheckAll: this.options.EnableCheckAll,\r\n itemsShowLimit: this.options.ItemsShowLimit,\r\n allowSearchFilter: this.options.AllowSearchFilter,\r\n showSelectedItemsAtTop: true,\r\n limitSelection: this.options.LimitSelection,\r\n searchPlaceholderText: this.options.Placeholder,\r\n labelKey: \"value\",\r\n primaryKey: \"key\"\r\n };\r\n\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.DropdownListFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n\r\n\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.validationRules.push(Validation.functionBody);\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n\r\n }\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\")\r\n this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);\r\n\r\n this.DropdownListFormControl.setValidators(this.validationRules);\r\n this.DropdownListFormControl.setAsyncValidators(this.validationRulesasync);\r\n if (this.options.IsDisabled) {\r\n this.DropdownListFormControl.disable();\r\n }\r\n\r\n this.DropdownListControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n })\r\n }\r\n\r\n\r\n\r\n ngAfterViewInit(): void {\r\n this.controlUtility.setAttributeForControl(this.options)\r\n }\r\n\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n\r\n getSelectedItemValue() {\r\n if (this.options.SelectedItems) {\r\n if (this.options.SingleSelection)\r\n return this.options.DataSource.filter(item => item[this.options.ItemTempletkey] == this.options.SelectedItems)[0][this.options.ItemTempletvalue]\r\n else\r\n return this.options.DataSource.filter(item => this.options.SelectedItems.includes(item[this.options.ItemTempletkey])).map(item => item[this.options.ItemTempletvalue])\r\n } else\r\n return this.UtilityService.getResourceValue('NA');\r\n }\r\n\r\n onItemSelect() {\r\n this.onChangeService.ChangeValue(this.options.Name)\r\n let originalValue = this.options.SelectedItems;\r\n if (this.options.PatchFunction && this.options.PatchPath && this.group.get(this.options.Name).valid) {\r\n this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath)\r\n }\r\n this.OnChange.emit(originalValue)\r\n //console.log(this.DropdownListFormControl.value)\r\n }\r\n Clear() {\r\n //console.log(\"Clear\")\r\n this.DropdownListFormControl.setValue(this.SelectedItems);\r\n this.onChangeService.ChangeValue(this.options.Name)\r\n this.OnChange.emit()\r\n }\r\n onSelectAll(items) {\r\n this.SelectedItems = items;\r\n this.DropdownListFormControl.setValue(this.SelectedItems);\r\n }\r\n onDeselect(items) {\r\n this.DropdownListFormControl.setValue(this.SelectedItems);\r\n if ((this.SelectedItems.length == 0) && this.options.IsRequired == true) {\r\n this.DropdownListFormControl.markAsTouched();\r\n this.DropdownListFormControl.invalid;\r\n\r\n }\r\n\r\n }\r\n onDeselectAll(items) {\r\n this.DropdownListFormControl.setValue(this.SelectedItems);\r\n if ((this.SelectedItems.length == 0) && this.options.IsRequired == true) {\r\n this.DropdownListFormControl.markAsTouched();\r\n this.DropdownListFormControl.invalid;\r\n\r\n }\r\n }\r\n\r\n onDropDownClose() {\r\n if ((this.SelectedItems == undefined || this.SelectedItems.length == 0) && this.options.IsRequired == true) {\r\n this.DropdownListFormControl.markAsTouched();\r\n this.DropdownListFormControl.invalid;\r\n\r\n }\r\n }\r\n\r\n //External Method\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(this.DropdownListFormControl, this.validationRules, this.options)\r\n }\r\n\r\n //External Method\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(this.DropdownListFormControl, this.validationRules, this.options)\r\n }\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(this.DropdownListFormControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(this.DropdownListFormControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.DropdownListFormControl)\r\n }\r\n\r\n //Update items (data source) of drop down\r\n UpdateDataSource = (dataSource: DropdownListItem[]) => {\r\n this.options.DataSource = dataSource;\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","import { Component, EventEmitter, Input, OnInit, Optional, Output } from '@angular/core';\r\nimport { AbstractControl, ControlContainer, FormControl, FormGroup, FormGroupDirective, Validators } from '@angular/forms';\r\nimport { ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { CountryISO, SearchCountryField } from 'ngx-intl-tel-input';\r\nimport { Country } from '../../Shared/Enums/Countries';\r\nimport { PhoneOptions } from '../../Shared/Models/PhoneOptions';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\n\r\n@Component({\r\n selector: 'BBSF-Phone',\r\n templateUrl: './Phone.component.html'\r\n})\r\nexport class PhoneComponent implements OnInit {\r\n\r\n\r\n static controlContainerstatic = null;\r\n // tslint:disable-next-line: max-line-length\r\n constructor(private controlUtility: ControlUtility, @Optional() private controlContainer: ControlContainer,\r\n public PhoneControlHost: FormGroupDirective, private UtilityService: UtilityService,\r\n private controlValidationService: ControlValidationService, private globalSettings: GlobalSettings) {\r\n PhoneComponent.controlContainerstatic = this.controlContainer;\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: PhoneOptions;\r\n @Output() OnChange = new EventEmitter();\r\n PhoneFormControl: AbstractControl;\r\n SearchCountryField = SearchCountryField;\r\n // TooltipLabel = TooltipLabel;\r\n markAllAsTouched: boolean = false\r\n validationRules = [];\r\n validationRulesasync = [];\r\n separateDialCode = false;\r\n textDir;\r\n\r\n ngOnInit() {\r\n\r\n if (this.options.IsReadonly && !this.options.Value)\r\n this.options.Value = this.UtilityService.getResourceValue('NA');\r\n\r\n if (this.options.ForceDirection)\r\n this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';\r\n else\r\n this.textDir = localStorage.getItem('language') == 'ar' ? 'rtl' : 'ltr';\r\n\r\n this.controlValidationService.isCreatedBefor = false\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.PhoneFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n }\r\n this.PhoneFormControl.setValue(this.options.Value);\r\n\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.validationRules.push(Validation.functionBody);\r\n }\r\n\r\n }\r\n\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\")\r\n this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);\r\n\r\n this.PhoneFormControl.setValidators(this.validationRules);\r\n this.PhoneFormControl.setAsyncValidators(this.validationRulesasync);\r\n if (this.options.IsDisabled) {\r\n this.PhoneFormControl.disable();\r\n }\r\n\r\n this.PhoneControlHost.ngSubmit.subscribe(() => {\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n })\r\n\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.controlUtility.setAttributeForControl(this.options)\r\n }\r\n\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n\r\n onValueChanged() {\r\n let Number = this.PhoneFormControl.value.internationalNumber as string;\r\n let originalValue = this.controlUtility.trimControlValue(Number);\r\n if (this.options.PatchFunction && this.options.PatchPath && this.group.get(this.options.Name).valid) {\r\n this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath)\r\n }\r\n this.OnChange.emit(originalValue);\r\n }\r\n getSelectedCountry(selectedCountry: Country) {\r\n let value = selectedCountry as string;\r\n return value as CountryISO\r\n }\r\n\r\n\r\n //External Method\r\n\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(this.PhoneFormControl, this.validationRules, this.options)\r\n }\r\n //External Method\r\n\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(this.PhoneFormControl, this.validationRules, this.options)\r\n }\r\n\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(this.PhoneFormControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(this.PhoneFormControl, this.validationRules, CustomValidation)\r\n }\r\n\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.PhoneFormControl)\r\n }\r\n}\r\n\r\n\r\n","import { Component, OnInit, Input, DoCheck, Optional, NgZone, Output, EventEmitter } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, AbstractControl, ControlContainer, FormGroupDirective } from '@angular/forms';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { HtmlEditorOptions } from '../../Shared/Models/HtmlEditorOptions';\r\nimport { AngularEditorConfig } from '@kolkov/angular-editor';\r\nimport { ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'BBSF-HtmlEditor',\r\n templateUrl: './HtmlEditor.component.html'\r\n})\r\nexport class HtmlEditorComponent implements OnInit {\r\n\r\n editorConfig: AngularEditorConfig\r\n static controlContainerstatic = null;\r\n constructor(private zone: NgZone, private controlUtility: ControlUtility, @Optional() private controlContainer: ControlContainer,\r\n public HtmlEditorControlHost: FormGroupDirective, private UtilityService: UtilityService,\r\n private controlValidationService: ControlValidationService, private globalSettings: GlobalSettings) {\r\n HtmlEditorComponent.controlContainerstatic = this.controlContainer;\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: HtmlEditorOptions;\r\n @Output() OnChange = new EventEmitter();\r\n HtmlEditorFormControl: AbstractControl;\r\n WordCount: number = 0;\r\n WordCountArray: number = 0;\r\n markAllAsTouched: boolean = false;\r\n Config: any\r\n miscList: any\r\n styleList: any\r\n fontsizeList: any\r\n paraList: any\r\n insertList: any\r\n validationRules = [];\r\n validationRulesasync = [];\r\n textDir;\r\n\r\n ngOnInit() {\r\n if(this.options.ForceDirection)\r\n this.textDir=this.options.ForceDirection==2?'rtl':'ltr';\r\n else\r\n this.textDir=localStorage.getItem('language')=='ar'?'rtl':'ltr';\r\n this.editorConfig = {\r\n editable: !this.options.IsDisabled,\r\n spellcheck: true,\r\n height: `${this.options.Height}rem`,\r\n minHeight: `${this.options.Height}rem`,\r\n maxHeight: 'auto',\r\n width: 'auto',\r\n minWidth: 'auto',\r\n translate: 'yes',\r\n enableToolbar: true,\r\n showToolbar: true,\r\n placeholder: this.options.Placeholder,\r\n defaultParagraphSeparator: '',\r\n defaultFontName: '',\r\n defaultFontSize: '',\r\n fonts: [\r\n {class: 'arial', name: 'Arial'},\r\n {class: 'times-new-roman', name: 'Times New Roman'},\r\n {class: 'calibri', name: 'Calibri'},\r\n {class: 'comic-sans-ms', name: 'Comic Sans MS'}\r\n ],\r\n customClasses: [\r\n {\r\n name: 'quote',\r\n class: 'quote',\r\n },\r\n {\r\n name: 'redText',\r\n class: 'redText'\r\n },\r\n {\r\n name: 'titleText',\r\n class: 'titleText',\r\n tag: 'h1',\r\n },\r\n ],\r\n uploadUrl: 'v1/image',\r\n uploadWithCredentials: false,\r\n sanitize: false,\r\n toolbarPosition: 'top',\r\n toolbarHiddenButtons: [\r\n [\r\n 'link',\r\n 'unlink',\r\n 'insertImage',\r\n 'insertVideo',\r\n 'insertHorizontalRule',\r\n ]\r\n ]\r\n };\r\n this.controlValidationService.isCreatedBefor = false\r\n // this.miscList = this.options.ToolsList_Misc != null ? this.options.ToolsList_Misc : ['codeview', 'undo', 'redo'];\r\n // this.styleList = this.options.ToolsList_Style != null ? this.options.ToolsList_Style : ['bold', 'italic', 'underline', 'clear']\r\n // this.fontsizeList = this.options.ToolsList_FontSize != null ? this.options.ToolsList_FontSize : ['fontname', 'fontsize', 'color']\r\n // this.paraList = this.options.ToolsList_Para != null ? this.options.ToolsList_Para : ['style', 'ul', 'ol', 'paragraph', 'height']\r\n // this.insertList = this.options.ToolsList_Insert != null ? this.options.ToolsList_Insert : ['table', 'picture', 'link', 'video', 'hr']\r\n\r\n // this.Config = {\r\n // callbacks: {\r\n // // onChange: (e) => {\r\n\r\n // // this.zone.run(() => {\r\n // // this.onTextChange();\r\n // // });\r\n // // },\r\n // // onKeyup: (e) => {\r\n // // this.zone.run(() => {\r\n // // ;\r\n // // this.onTextChange();\r\n // // });\r\n // // },\r\n // // onKeydown: (e) => {\r\n // // this.zone.run(() => {\r\n // // ;\r\n // // if (this.WordCountArray > this.options.MaxWordCount && e.keyCode != 8) {\r\n // // e.preventDefault();\r\n // // }\r\n\r\n // // });\r\n // // }\r\n // },\r\n // placeholder: this.options.Placeholder,\r\n // height: `${this.options.Height}px`,\r\n // toolbar: [\r\n // ['misc', this.miscList],\r\n // ['style', this.styleList],\r\n // ['fontsize', this.fontsizeList],\r\n // ['para', this.paraList],\r\n // ['insert', this.insertList]\r\n // ],\r\n // fontNames: ['Helvetica', 'Arial', 'Arial Black', 'Comic Sans MS', 'Courier New', 'Roboto', 'Times']\r\n\r\n // }\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.HtmlEditorFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n this.HtmlEditorFormControl.setValue(this.options.Value);\r\n\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.validationRules.push(Validation.functionBody);\r\n }\r\n\r\n }\r\n\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\")\r\n this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);\r\n\r\n\r\n\r\n if (this.options.MinLength > 0) {\r\n this.validationRules.push(Validators.minLength(this.options.MinLength));\r\n }\r\n if (this.options.MaxLength > 0) {\r\n this.validationRules.push(Validators.maxLength(this.options.MaxLength));\r\n }\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n }\r\n this.HtmlEditorFormControl.setValidators(this.validationRules);\r\n this.HtmlEditorFormControl.setAsyncValidators(this.validationRulesasync);\r\n if (this.options.IsDisabled) {\r\n this.HtmlEditorFormControl.disable();\r\n }\r\n\r\n this.HtmlEditorControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n })\r\n\r\n }\r\n\r\n\r\n ngAfterViewChecked(): void {\r\n if (this.options.AttributeList != null) {\r\n var element = document.getElementById(this.options.Name);\r\n for (let index = 0; index < this.options.AttributeList.length; index++) {\r\n element.setAttribute(this.options.AttributeList[index].Key, this.options.AttributeList[index].value);\r\n }\r\n\r\n let angularEditor = document.getElementsByClassName(\"angular-editor-toolbar ng-star-inserted\")[0]\r\n let dir =this.UtilityService.getCurrentLanguage()==\"en\"?\"ltr\":\"rtl\"\r\n angularEditor.setAttribute(\"dir\",dir);\r\n\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n onValueChanged() {\r\n this.HtmlEditorFormControl.setValue(this.HtmlEditorFormControl.value.trim());\r\n let originalValue = this.controlUtility.trimControlValue(this.HtmlEditorFormControl.value);\r\n if (this.options.PatchFunction && this.options.PatchPath && this.HtmlEditorFormControl.valid) {\r\n this.controlUtility.patchControlValue(originalValue,this.options.PatchFunction ,this.options.PatchPath)\r\n }\r\n //Use this line to enable two way binding.\r\n this.options.Value=originalValue;\r\n this.OnChange.emit(originalValue)\r\n }\r\n\r\n\r\n //External Method\r\n\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(this.HtmlEditorFormControl, this.validationRules, this.options)\r\n }\r\n //External Method\r\n\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(this.HtmlEditorFormControl, this.validationRules, this.options)\r\n }\r\n\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(this.HtmlEditorFormControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(this.HtmlEditorFormControl, this.validationRules, CustomValidation)\r\n }\r\n\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.HtmlEditorFormControl)\r\n }\r\n\r\n}\r\n\r\n\r\n","import { Component, OnInit, Input, DoCheck, Optional, Output, EventEmitter } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, AbstractControl, ControlContainer, FormGroupDirective } from '@angular/forms';\r\nimport { InputType } from '../../Shared/Enums/InputType';\r\nimport { EnglishArabicDTO } from '../../Shared/Models/EnglishArabicDTO';\r\nimport { MultiLingualHtmlEditorOptions } from '../../Shared/Models/MultiLingualHtmlEditorOptions';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { LanguageMode } from '../../Shared/Enums/LanguageMode';\r\nimport { AngularEditorConfig } from '@kolkov/angular-editor';\r\n\r\nimport { ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\n\r\n@Component({\r\n selector: 'BBSF-MultiLingualHtmlEditor',\r\n templateUrl: './MultiLingualHtmlEditor.component.html'\r\n})\r\nexport class MultiLingualHtmlEditorComponent implements OnInit {\r\n\r\n static controlContainerstatic = null;\r\n IsShowAsteriskInArabic: boolean;\r\n IsShowAsteriskInEnglish: boolean;\r\n constructor(public MultiLingualHtmlEditorFormControlHost: FormGroupDirective, @Optional() private controlContainer: ControlContainer,\r\n private controlUtility: ControlUtility, private UtilityService: UtilityService, private controlValidationService: ControlValidationService,\r\n private globalSettings: GlobalSettings\r\n ) {\r\n MultiLingualHtmlEditorComponent.controlContainerstatic = this.controlContainer;\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: MultiLingualHtmlEditorOptions;\r\n @Output() OnChange = new EventEmitter();\r\n\r\n\r\n ArabicHtmlEditorFormControl: AbstractControl;\r\n EnglishHtmlEditorFormControl: AbstractControl;\r\n MultiTextAreaFormControl: AbstractControl;\r\n MultilingualHtmlEditorgroup: FormGroup;\r\n ArabicConfig: any\r\n EnglishConfig: any\r\n editorEnglishConfig: AngularEditorConfig\r\n editorArabicConfig: AngularEditorConfig\r\n\r\n miscList: any\r\n styleList: any\r\n fontsizeList: any\r\n paraList: any\r\n insertList: any\r\n\r\n CurrentLanguage: string = \"\";;\r\n ShowArabicHtmlEditor: boolean\r\n ShowEnglishHtmlEditor: boolean\r\n ArabicValidationRules = [];\r\n ArabicValidationRulesasync = [];\r\n EnglishValidationRules = [];\r\n EnglishValidationRulesasync = [];\r\n markAllAsTouched: boolean = false;\r\n validationRules = [];\r\n validationRulesasync = [];\r\n\r\n ArabicLetterOnly: string = \"\"\r\n EnglishLetterOnly: string = \"\"\r\n\r\n englishValue = null\r\n arabicValue = null\r\n\r\n getCustomErrorsMassages() {\r\n this.ArabicLetterOnly = this.UtilityService.getResourceValue(\"ArabicLetterOnly\");\r\n this.EnglishLetterOnly = this.UtilityService.getResourceValue(\"EnglishLetterOnly\");\r\n }\r\n\r\n\r\n async ngOnInit() {\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n if (!this.options.LanguageMode)\r\n this.options.LanguageMode = this.globalSettings.LanguageMode;\r\n\r\n this.editorEnglishConfig = {\r\n editable: !this.options.IsDisabled,\r\n spellcheck: true,\r\n height: this.options.Height.toString(),\r\n minHeight: this.options.Height.toString(),\r\n maxHeight: 'auto',\r\n width: 'auto',\r\n minWidth: 'auto',\r\n translate: 'yes',\r\n enableToolbar: true,\r\n showToolbar: true,\r\n placeholder: this.options.EnglishPlaceholder,\r\n defaultParagraphSeparator: '',\r\n defaultFontName: '',\r\n defaultFontSize: '',\r\n fonts: [\r\n { class: 'arial', name: 'Arial' },\r\n { class: 'times-new-roman', name: 'Times New Roman' },\r\n { class: 'calibri', name: 'Calibri' },\r\n { class: 'comic-sans-ms', name: 'Comic Sans MS' }\r\n ],\r\n customClasses: [\r\n {\r\n name: 'quote',\r\n class: 'quote',\r\n },\r\n {\r\n name: 'redText',\r\n class: 'redText'\r\n },\r\n {\r\n name: 'titleText',\r\n class: 'titleText',\r\n tag: 'h1',\r\n },\r\n ],\r\n uploadUrl: 'v1/image',\r\n uploadWithCredentials: false,\r\n sanitize: false,\r\n toolbarPosition: 'top',\r\n toolbarHiddenButtons: [\r\n\r\n ]\r\n };\r\n\r\n\r\n this.editorArabicConfig = {\r\n editable: !this.options.IsDisabled,\r\n spellcheck: true,\r\n height: this.options.Height.toString(),\r\n minHeight: this.options.Height.toString(),\r\n maxHeight: 'auto',\r\n width: 'auto',\r\n minWidth: 'auto',\r\n translate: 'yes',\r\n enableToolbar: true,\r\n showToolbar: true,\r\n placeholder: this.options.ArabicPlaceholder,\r\n defaultParagraphSeparator: '',\r\n defaultFontName: '',\r\n defaultFontSize: '',\r\n fonts: [\r\n { class: 'arial', name: 'Arial' },\r\n { class: 'times-new-roman', name: 'Times New Roman' },\r\n { class: 'calibri', name: 'Calibri' },\r\n { class: 'comic-sans-ms', name: 'Comic Sans MS' }\r\n ],\r\n customClasses: [\r\n {\r\n name: 'quote',\r\n class: 'quote',\r\n },\r\n {\r\n name: 'redText',\r\n class: 'redText'\r\n },\r\n {\r\n name: 'titleText',\r\n class: 'titleText',\r\n tag: 'h1',\r\n },\r\n ],\r\n uploadUrl: 'v1/image',\r\n uploadWithCredentials: false,\r\n sanitize: false,\r\n toolbarPosition: 'top',\r\n toolbarHiddenButtons: [\r\n\r\n ]\r\n };\r\n\r\n this.controlValidationService.isCreatedBefor = false\r\n\r\n this.CurrentLanguage = await this.UtilityService.getCurrentLanguage();\r\n\r\n // UtilityService.Translator.onLangChange.subscribe((event: LangChangeEvent) => {\r\n // this.CurrentLanguage = event.lang\r\n // this.showInputUsingLanguageMode();\r\n\r\n // });\r\n // this.miscList = this.options.ToolsList_Misc != null ? this.options.ToolsList_Misc : ['codeview', 'undo', 'redo'];\r\n // this.styleList = this.options.ToolsList_Style != null ? this.options.ToolsList_Style : ['bold', 'italic', 'underline', 'clear']\r\n // this.fontsizeList = this.options.ToolsList_FontSize != null ? this.options.ToolsList_FontSize : ['fontname', 'fontsize', 'color']\r\n // this.paraList = this.options.ToolsList_Para != null ? this.options.ToolsList_Para : ['style', 'ul', 'ol', 'paragraph', 'height']\r\n // this.insertList = this.options.ToolsList_Insert != null ? this.options.ToolsList_Insert : ['table', 'picture', 'link', 'video', 'hr']\r\n\r\n // this.ArabicConfig = {\r\n // placeholder: this.options.ArabicPlaceholder,\r\n // height: `${this.options.Height}px`,\r\n // toolbar: [\r\n // ['misc', this.miscList],\r\n // ['style', this.styleList],\r\n // ['fontsize', this.fontsizeList],\r\n // ['para', this.paraList],\r\n // ['insert', this.insertList]\r\n // ],\r\n // fontNames: ['Helvetica', 'Arial', 'Arial Black', 'Comic Sans MS', 'Courier New', 'Roboto', 'Times']\r\n\r\n // }\r\n // this.EnglishConfig = {\r\n // placeholder: this.options.EnglishPlaceholder,\r\n // height: `${this.options.Height}px`,\r\n // toolbar: [\r\n // ['misc', this.miscList],\r\n // ['style', this.styleList],\r\n // ['fontsize', this.fontsizeList],\r\n // ['para', this.paraList],\r\n // ['insert', this.insertList]\r\n // ],\r\n // fontNames: ['Helvetica', 'Arial', 'Arial Black', 'Comic Sans MS', 'Courier New', 'Roboto', 'Times']\r\n\r\n // }\r\n this.MultilingualHtmlEditorgroup = new FormGroup({});;\r\n this.MultilingualHtmlEditorgroup.addControl(\"Arabic\", new FormControl(''));\r\n this.MultilingualHtmlEditorgroup.addControl(\"English\", new FormControl(''));\r\n this.ArabicHtmlEditorFormControl = this.MultilingualHtmlEditorgroup.controls[\"Arabic\"]; // new FormControl('',validationRules);\r\n this.EnglishHtmlEditorFormControl = this.MultilingualHtmlEditorgroup.controls[\"English\"]; // new FormControl('',validationRules);\r\n this.group.addControl(this.options.Name, new FormGroup(this.MultilingualHtmlEditorgroup.controls));\r\n this.getCustomErrorsMassages();\r\n switch (this.options.Type) {\r\n case InputType.Email:\r\n this.EnglishValidationRules.push(Validators.compose([\r\n this.controlUtility.patternValidator(/^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}$/, { EmailValidationKey: \"\" }),\r\n ]));\r\n this.ArabicValidationRules.push(Validators.compose([\r\n this.controlUtility.patternValidator(/^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}$/, { EmailValidationKey: \"\" }),\r\n ]));\r\n break;\r\n case InputType.Number:\r\n this.EnglishValidationRules.push(Validators.pattern('^[0-9]+(\\.?[0-9]+)?$'));\r\n this.ArabicValidationRules.push(Validators.pattern('^[0-9]+(\\.?[0-9]+)?$'));\r\n break;\r\n }\r\n\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.EnglishValidationRules.push(Validation.functionBody);\r\n this.ArabicValidationRules.push(Validation.functionBody);\r\n }\r\n\r\n }\r\n if (this.options.MinLength > 0) {\r\n this.ArabicValidationRules.push(Validators.minLength(this.options.MinLength));\r\n this.EnglishValidationRules.push(Validators.minLength(this.options.MinLength));\r\n }\r\n\r\n if (this.options.MaxLength > 0) {\r\n this.EnglishValidationRules.push(Validators.maxLength(this.options.MaxLength));\r\n this.ArabicValidationRules.push(Validators.maxLength(this.options.MaxLength));\r\n\r\n }\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\") {\r\n this.options.ArabicLabelValue = this.UtilityService.getResourceValue(this.options.LabelKey) + \" \" + this.UtilityService.getResourceValue(\"InArabic\");\r\n this.options.EnglishLabelValue = this.UtilityService.getResourceValue(this.options.LabelKey) + \" \" + this.UtilityService.getResourceValue(\"InEnglish\");\r\n }\r\n else {\r\n if (this.options.ArabicLabelKey != null && this.options.ArabicLabelKey != \"\")\r\n this.options.ArabicLabelValue = this.UtilityService.getResourceValue(this.options.ArabicLabelKey);\r\n\r\n if (this.options.EnglishLabelKey != null && this.options.EnglishLabelKey != \"\")\r\n this.options.EnglishLabelValue = this.UtilityService.getResourceValue(this.options.EnglishLabelKey);\r\n }\r\n this.showInputUsingLanguageMode();\r\n this.ArabicValidationRules.push(Validators.compose([\r\n this.controlUtility.patternValidator(/^[\\u0621-\\u064A\\u0660-\\u0669 ]+$/, { ArabicLetterOnly: this.ArabicLetterOnly }),\r\n\r\n ]));\r\n this.EnglishValidationRules.push(Validators.compose([\r\n this.controlUtility.patternValidator(/^[~`!@#$%^&*()‘’“”_+=[\\]\\\\{}|;':\",.\\/<>?a-zA-Z0-9- ]*$/, { EnglishLetterOnly: this.EnglishLetterOnly }),\r\n\r\n ]));\r\n // this.ArabicHtmlEditorFormControl.setValidators(this.ArabicValidationRules);\r\n // this.ArabicHtmlEditorFormControl.setAsyncValidators(this.ArabicValidationRulesasync);\r\n\r\n // this.EnglishHtmlEditorFormControl.setValidators(this.EnglishValidationRules);\r\n // this.EnglishHtmlEditorFormControl.setAsyncValidators(this.EnglishValidationRulesasync);\r\n\r\n if (this.options.IsDisabled) {\r\n this.EnglishHtmlEditorFormControl.disable();\r\n this.ArabicHtmlEditorFormControl.disable();\r\n }\r\n this.ArabicHtmlEditorFormControl.setValue(this.options.Value.Arabic)\r\n this.EnglishHtmlEditorFormControl.setValue(this.options.Value.English)\r\n this.MultiLingualHtmlEditorFormControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n })\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n let dir = this.UtilityService.getCurrentLanguage() == \"en\" ? \"ltr\" : \"rtl\"\r\n var angularEditor = document.getElementsByClassName(\"angular-editor-toolbar ng-star-inserted\");\r\n for (let index = 0; index < angularEditor.length; index++) {\r\n const element = angularEditor[index];\r\n element.setAttribute(\"dir\", dir);\r\n }\r\n }\r\n onTextChange(type: string) {\r\n\r\n if (type == \"en\") {\r\n this.MultilingualHtmlEditorgroup.controls[\"English\"].setValue(this.MultilingualHtmlEditorgroup.controls[\"English\"].value.trim());\r\n this.englishValue = this.MultilingualHtmlEditorgroup.controls[\"English\"].value == null ? \"\" : this.MultilingualHtmlEditorgroup.controls[\"English\"].value;\r\n if (this.englishValue) {\r\n this.EnglishHtmlEditorFormControl.setValue(this.englishValue);\r\n let originalValue = this.englishValue;\r\n if (this.options.PatchFunction && this.options.PatchPath && this.EnglishHtmlEditorFormControl.valid) {\r\n this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath)\r\n }\r\n }\r\n let EngliswordCountArray = (this.EnglishHtmlEditorFormControl.value as string).split(\" \").length\r\n if (EngliswordCountArray > 0) {\r\n if (EngliswordCountArray > this.options.MaxWordCount)\r\n this.MultilingualHtmlEditorgroup.controls[\"English\"].setErrors({ MaxWordCountValidationKey: this.options.MaxWordCount })\r\n this.MultilingualHtmlEditorgroup.controls[\"English\"].markAsTouched()\r\n this.MultilingualHtmlEditorgroup.controls[\"English\"].invalid\r\n\r\n }\r\n\r\n }\r\n\r\n if (type == \"ar\") {\r\n this.MultilingualHtmlEditorgroup.controls[\"Arabic\"].setValue(this.MultilingualHtmlEditorgroup.controls[\"Arabic\"].value.trim());\r\n\r\n this.arabicValue = this.MultilingualHtmlEditorgroup.controls[\"Arabic\"].value == null ? \"\" : this.MultilingualHtmlEditorgroup.controls[\"Arabic\"].value;\r\n\r\n if (this.arabicValue) {\r\n this.ArabicHtmlEditorFormControl.setValue(this.arabicValue);\r\n let originalValue = this.arabicValue;\r\n if (this.options.PatchFunction && this.options.PatchPath && this.ArabicHtmlEditorFormControl.valid) {\r\n this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath)\r\n }\r\n }\r\n\r\n let ArabicwordCountArray = (this.ArabicHtmlEditorFormControl.value as string).split(\" \").length\r\n if (ArabicwordCountArray > 0) {\r\n if (ArabicwordCountArray > this.options.MaxWordCount)\r\n this.MultilingualHtmlEditorgroup.controls[\"Arabic\"].setErrors({ MaxWordCountValidationKey: this.options.MaxWordCount })\r\n this.MultilingualHtmlEditorgroup.controls[\"Arabic\"].markAsTouched()\r\n this.MultilingualHtmlEditorgroup.controls[\"Arabic\"].invalid\r\n\r\n }\r\n }\r\n\r\n let mulitLangModel = new EnglishArabicDTO()\r\n mulitLangModel.Arabic = this.arabicValue;\r\n mulitLangModel.English = this.englishValue\r\n this.OnChange.emit(mulitLangModel)\r\n if (this.arabicValue && this.englishValue)\r\n this.group.get(this.options.Name).setValue(mulitLangModel)\r\n //Use this line to enable two way binding.\r\n this.options.Value = mulitLangModel;\r\n }\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n\r\n\r\n\r\n showInputUsingLanguageMode() {\r\n\r\n this.ArabicValidationRules = this.ArabicValidationRules.filter(item => item !== Validators.required);\r\n this.EnglishValidationRules = this.EnglishValidationRules.filter(item => item !== Validators.required);\r\n\r\n this.ArabicHtmlEditorFormControl.clearValidators();\r\n this.EnglishHtmlEditorFormControl.clearValidators();\r\n\r\n this.ArabicHtmlEditorFormControl.updateValueAndValidity();\r\n this.EnglishHtmlEditorFormControl.updateValueAndValidity();\r\n\r\n switch (this.options.LanguageMode) {\r\n case LanguageMode.Both_Languages_are_visible:\r\n this.ShowArabicHtmlEditor = true;\r\n this.ShowEnglishHtmlEditor = true;\r\n if (this.options.IsRequired == true) {\r\n this.EnglishValidationRules.push(Validators.required);\r\n this.ArabicValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInArabic = true;\r\n this.IsShowAsteriskInEnglish = true;\r\n }\r\n break;\r\n case LanguageMode.Arabic_Language_only_is_visible:\r\n this.ShowArabicHtmlEditor = true;\r\n break;\r\n case LanguageMode.English_Language_only_is_visible:\r\n this.ShowEnglishHtmlEditor = true;\r\n break;\r\n case LanguageMode.Both_Languages_are_visible_but_only_current_language_is_required:\r\n this.ShowArabicHtmlEditor = true;\r\n this.ShowEnglishHtmlEditor = true;\r\n\r\n if (this.CurrentLanguage == 'ar') {\r\n if (this.options.IsRequired == true) {\r\n this.ArabicValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInArabic = true;\r\n\r\n }\r\n }\r\n if (this.CurrentLanguage == 'en') {\r\n if (this.options.IsRequired == true) {\r\n this.EnglishValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInEnglish = true;\r\n }\r\n }\r\n break;\r\n case LanguageMode.Both_Languages_but_only_Arabic_is_required:\r\n this.ShowArabicHtmlEditor = true;\r\n this.ShowEnglishHtmlEditor = true;\r\n if (this.options.IsRequired == true) {\r\n this.ArabicValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInArabic = true;\r\n }\r\n break;\r\n case LanguageMode.Both_Languages_but_only_English_is_required:\r\n this.ShowArabicHtmlEditor = true;\r\n this.ShowEnglishHtmlEditor = true;\r\n if (this.options.IsRequired == true) {\r\n this.EnglishValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInEnglish = true;\r\n\r\n }\r\n break;\r\n case LanguageMode.Current_Language_only_is_visible_and_required:\r\n if (this.CurrentLanguage == 'ar') {\r\n this.ShowArabicHtmlEditor = true;\r\n this.ShowEnglishHtmlEditor = false;\r\n\r\n if (this.options.IsRequired == true) {\r\n this.ArabicValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInArabic = true;\r\n\r\n }\r\n }\r\n if (this.CurrentLanguage == 'en') {\r\n this.ShowArabicHtmlEditor = false;\r\n this.ShowEnglishHtmlEditor = true;\r\n\r\n if (this.options.IsRequired == true) {\r\n this.EnglishValidationRules.push(Validators.required);\r\n this.IsShowAsteriskInEnglish = true;\r\n\r\n }\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n this.ArabicHtmlEditorFormControl.setValidators(this.ArabicValidationRules);\r\n this.EnglishHtmlEditorFormControl.setValidators(this.EnglishValidationRules);\r\n this.ArabicHtmlEditorFormControl.updateValueAndValidity();\r\n this.EnglishHtmlEditorFormControl.updateValueAndValidity();\r\n\r\n }\r\n\r\n\r\n //External Method\r\n\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(this.EnglishHtmlEditorFormControl, this.EnglishValidationRules, this.options)\r\n this.controlUtility.RemoveRequiredValidation(this.ArabicHtmlEditorFormControl, this.ArabicValidationRules, this.options)\r\n }\r\n //External Method\r\n\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(this.EnglishHtmlEditorFormControl, this.EnglishValidationRules, this.options)\r\n this.controlUtility.AddRequiredValidation(this.ArabicHtmlEditorFormControl, this.ArabicValidationRules, this.options)\r\n }\r\n\r\n\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(this.EnglishHtmlEditorFormControl, this.EnglishValidationRules, CustomValidation)\r\n this.controlUtility.RemoveCustomValidation(this.ArabicHtmlEditorFormControl, this.ArabicValidationRules, CustomValidation)\r\n }\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(this.EnglishHtmlEditorFormControl, this.EnglishValidationRules, CustomValidation)\r\n this.controlUtility.AddCustomValidation(this.ArabicHtmlEditorFormControl, this.ArabicValidationRules, CustomValidation)\r\n }\r\n\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.EnglishHtmlEditorFormControl)\r\n this.controlUtility.IsValid(this.ArabicHtmlEditorFormControl)\r\n }\r\n}\r\n\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n Optional,\r\n ViewChild,\r\n ElementRef,\r\n NgZone,\r\n Output,\r\n EventEmitter,\r\n} from '@angular/core';\r\nimport {\r\n FormControl,\r\n Validators,\r\n FormGroup,\r\n AbstractControl,\r\n ControlContainer,\r\n FormGroupDirective,\r\n} from '@angular/forms';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { FileUploader, FileLikeObject } from 'ng2-file-upload';\r\nimport { FileDTO } from '../../Shared/Models/FileDTO';\r\nimport { ImageUploadOptions } from '../../Shared/Models/ImageUploadOptions';\r\nimport { CropperComponent } from 'angular-cropperjs';\r\nimport {\r\n ControlValidationService,\r\n UtilityService,\r\n} from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\nimport { Observable } from 'rxjs';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'BBSF-ImageUpload',\r\n templateUrl: './ImageUpload.component.html',\r\n})\r\nexport class ImageUploaderComponent implements OnInit {\r\n static controlContainerstatic = null;\r\n\r\n @ViewChild('fileInput', { static: false }) fileInput: ElementRef;\r\n files: File[] = [];\r\n ImageSource: string;\r\n isSubmitted: boolean;\r\n @Input() group: FormGroup;\r\n @Input() options: ImageUploadOptions;\r\n @Output() OnChange = new EventEmitter();\r\n\r\n ImageUploadFormControl: AbstractControl;\r\n ValidationMessage = '';\r\n uploader: FileUploader;\r\n hasAnotherDropZoneOver: boolean;\r\n AcceptedType: string = '';\r\n AcceptedTypeArray: string[] = [];\r\n ToolTipTypeArray: string[] = [];\r\n FileLikeObject: FileLikeObject;\r\n control: FormControl;\r\n @ViewChild('angularCropper', { static: false })\r\n public angularCropper: CropperComponent;\r\n imgUrl = null;\r\n config = null;\r\n imageUrl = '';\r\n imgwUrl = '';\r\n EventFile: any;\r\n mdlSampleIsOpen: boolean = false;\r\n markAllAsTouched: boolean = false;\r\n validationRules = [];\r\n validationRulesasync = [];\r\n maxFileSize: number = 0;\r\n constructor(\r\n private zone: NgZone,\r\n private controlUtility: ControlUtility,\r\n @Optional() private controlContainer: ControlContainer,\r\n public ImageUplaoderControlHost: FormGroupDirective,\r\n public UtilityService: UtilityService,\r\n private controlValidationService: ControlValidationService,\r\n private globalSettings: GlobalSettings,\r\n private modalService: NgbModal\r\n ) {\r\n ImageUploaderComponent.controlContainerstatic = this.controlContainer;\r\n this.uploader = new FileUploader({\r\n disableMultipart: false, // 'DisableMultipart' must be 'true' for formatDataFunction to be called.\r\n });\r\n this.hasAnotherDropZoneOver = false;\r\n }\r\n\r\n ngOnInit() {\r\n this.controlValidationService.isCreatedBefor = false;\r\n\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n if (!this.options.DefaultImageSrc)\r\n this.options.DefaultImageSrc = this.globalSettings.DefaultImageSrc;\r\n\r\n //Set img src by default value\r\n // this.ImageSource = this.options.DefaultImageSrc;\r\n\r\n if (this.options.AllowImageCropper) {\r\n this.config = {\r\n aspectRatio:\r\n this.options.ImageCropperWidth / this.options.ImageCropperHeight,\r\n dragMode: 'move',\r\n background: true,\r\n movable: true,\r\n rotatable: true,\r\n scalable: true,\r\n zoomable: true,\r\n viewMode: 1,\r\n checkImageOrigin: true,\r\n modal: true,\r\n checkCrossOrigin: false,\r\n width: this.options.ImageCropperWidth,\r\n height: this.options.ImageCropperHeight,\r\n cropBoxResizable: false,\r\n autoCrop: true,\r\n };\r\n }\r\n\r\n if (this.options.FileUploadAcceptsTypes != null) {\r\n this.options.FileUploadAcceptsTypes;\r\n }\r\n if (this.options.Value != null) {\r\n let imgURL = this.options.Value['fileURL'];\r\n if (imgURL != '' && imgURL != undefined && imgURL != null) {\r\n this.ImageSource = imgURL;\r\n this.imageUrl = imgURL;\r\n }\r\n\r\n let element = this.options.Value;\r\n this.FileLikeObject = new FileLikeObject({\r\n name: element.FileName,\r\n size: element.FileSizeInMB * 1000 * 1000,\r\n type: element.FileType,\r\n });\r\n this.uploader.addToQueue([this.FileLikeObject as any]);\r\n }\r\n\r\n if (this.options.FileMaxSizeInMB)\r\n this.maxFileSize = this.options.FileMaxSizeInMB * 1000 * 1000;\r\n\r\n if (\r\n this.options.FileUploadAcceptsTypes != null &&\r\n this.options.FileUploadAcceptsTypes.length > 0\r\n ) {\r\n for (\r\n let index = 0;\r\n index < this.options.FileUploadAcceptsTypes.length;\r\n index++\r\n ) {\r\n const Type = this.options.FileUploadAcceptsTypes[index];\r\n this.AcceptedType = this.AcceptedType.toUpperCase() + Type.toUpperCase();\r\n }\r\n this.AcceptedTypeArray = this.AcceptedType.split(',');\r\n for (let index = 0; index < this.AcceptedTypeArray.length; index++) {\r\n const element = this.AcceptedTypeArray[index];\r\n const TypeToolTipe = element.split('/')[1];\r\n this.ToolTipTypeArray.push(TypeToolTipe.toUpperCase());\r\n }\r\n this.ValidationMessage =\r\n this.ValidationMessage +\r\n this.UtilityService.getResourceValue('AllowedTypes') +\r\n ` (${this.ToolTipTypeArray}) `;\r\n }\r\n if (this.options.FileMaxSizeInMB > 0) {\r\n this.ValidationMessage =\r\n this.ValidationMessage +\r\n ` <br /> ${this.UtilityService.getResourceValue('FileMaxSizeInMB')} ${\r\n this.options.FileMaxSizeInMB\r\n }`;\r\n }\r\n if (\r\n this.options.FileUploadAcceptsTypes != null &&\r\n this.options.FileUploadAcceptsTypes.length > 0\r\n ) {\r\n }\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.ImageUploadFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n\r\n if (this.options.Value != null)\r\n this.group.get(this.options.Name).setValue(this.options.Value);\r\n\r\n if (this.options.LabelKey != null && this.options.LabelKey != '')\r\n this.options.LabelValue = this.UtilityService.getResourceValue(\r\n this.options.LabelKey\r\n );\r\n\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation;\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.validationRules.push(Validation.functionBody);\r\n }\r\n }\r\n\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n }\r\n\r\n this.ImageUploadFormControl.setValidators(this.validationRules);\r\n this.ImageUploadFormControl.setAsyncValidators(this.validationRulesasync);\r\n if (this.options.IsDisabled) {\r\n this.ImageUploadFormControl.disable();\r\n }\r\n this.ImageUplaoderControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched();\r\n this.markAllAsTouched = true;\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.options.AttributeList != null) {\r\n var element = document.getElementById(this.options.Name);\r\n for (let index = 0; index < this.options.AttributeList.length; index++) {\r\n element.setAttribute(\r\n this.options.AttributeList[index].Key,\r\n this.options.AttributeList[index].value\r\n );\r\n }\r\n }\r\n }\r\n showImageUploader(element: HTMLElement) {\r\n let input = element.parentElement.parentElement.querySelector(\r\n 'input[type=file]'\r\n ) as HTMLElement;\r\n input.click();\r\n }\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n };\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError();\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError();\r\n this.markAllAsTouched = false;\r\n }\r\n\r\n return this.controlUtility.getErrorValidationMassage(\r\n ErrorList,\r\n this.group,\r\n this.options\r\n );\r\n }\r\n\r\n onFileChange(event) {\r\n if (event.rejectedFiles.length > 0) {\r\n const file = event.rejectedFiles[0];\r\n const maxFileSize = this.options.FileMaxSizeInMB * 1000 * 1000;\r\n const fileType = file.type;\r\n if (file.size > maxFileSize) {\r\n const formControl = this.ImageUploadFormControl;\r\n formControl.setErrors({\r\n FileMaxSizeInMB: this.options.FileMaxSizeInMB + 'M',\r\n });\r\n formControl.markAsTouched();\r\n this.uploader.queue = [];\r\n return;\r\n }\r\n if (\r\n this.options.FileUploadAcceptsTypes != null &&\r\n this.options.FileUploadAcceptsTypes.length > 0 &&\r\n !(\r\n this.AcceptedTypeArray.includes(fileType.toUpperCase()) ||\r\n this.AcceptedTypeArray.includes(fileType.toLowerCase())\r\n )\r\n ) {\r\n const formControl = this.ImageUploadFormControl;\r\n formControl.setErrors({ ToolTipTypeError: this.ToolTipTypeArray });\r\n formControl.markAsTouched();\r\n this.uploader.queue = [];\r\n return;\r\n }\r\n }\r\n let FilesArray = [];\r\n for (let index = 0; index < event.addedFiles.length; index++) {\r\n const file = event.addedFiles[0];\r\n this.EventFile = file;\r\n const maxFileSize = this.options.FileMaxSizeInMB * 1000 * 1000;\r\n if (file) {\r\n const maxFileSize = this.options.FileMaxSizeInMB * 1000 * 1000;\r\n const fileType = file.type;\r\n if (file.size > maxFileSize) {\r\n const formControl = this.ImageUploadFormControl;\r\n formControl.setErrors({\r\n FileMaxSizeInMB: this.options.FileMaxSizeInMB + 'M',\r\n });\r\n formControl.markAsTouched();\r\n this.uploader.queue = [];\r\n return;\r\n }\r\n let reader = new FileReader();\r\n let FileObject = file;\r\n reader.readAsDataURL(FileObject);\r\n reader.onload = () => {\r\n if (this.options.AllowImageCropper) {\r\n this.imageUrl = reader.result.toString();\r\n this.openModal(true);\r\n } else {\r\n let FileObject: FileDTO = {\r\n FileName: file.name,\r\n FileType: file.type,\r\n FileBase64: reader.result.toString().split(',')[1],\r\n FileSizeInMB: file.size / 1000 / 1000,\r\n NameWithExtension: file.name,\r\n };\r\n this.options.Value = FileObject;\r\n FilesArray.push(FileObject);\r\n this.group.get(this.options.Name).setValue(FileObject);\r\n this.files = [];\r\n this.files.push(...event.addedFiles);\r\n }\r\n let originalValue = this.ImageUploadFormControl.value;\r\n if (\r\n this.options.PatchFunction &&\r\n this.options.PatchPath &&\r\n this.ImageUploadFormControl.valid\r\n ) {\r\n this.controlUtility.patchControlValue(\r\n originalValue,\r\n this.options.PatchFunction,\r\n this.options.PatchPath\r\n );\r\n }\r\n //Use this line to enable two way binding.\r\n this.options.Value = originalValue;\r\n this.OnChange.emit(originalValue);\r\n };\r\n }\r\n }\r\n }\r\n\r\n removeFromControlValue(event) {\r\n let ItemList = this.group.get(this.options.Name).value;\r\n this.files = [];\r\n ItemList = null;\r\n //Set Img src by default image (upload)\r\n this.ImageSource = this.options.DefaultImageSrc;\r\n\r\n if (this.files.length == 0 && this.options.IsRequired) {\r\n this.ImageUploadFormControl.markAsTouched();\r\n this.ImageUploadFormControl.setErrors(Validators.required);\r\n this.ImageUploadFormControl.invalid;\r\n }\r\n this.group.get(this.options.Name).setValue(ItemList);\r\n this.OnChange.emit(this.group.get(this.options.Name).value);\r\n //Use this line to enable two way binding.\r\n this.options.Value = this.group.get(this.options.Name).value;\r\n }\r\n\r\n cropImage() {\r\n let ImageCropperObject = this.angularCropper.cropper.getCroppedCanvas({\r\n width: this.options.ImageCropperWidth,\r\n height: this.options.ImageCropperHeight,\r\n imageSmoothingEnabled: false,\r\n imageSmoothingQuality: 'high',\r\n });\r\n ImageCropperObject.toBlob((blob) => {\r\n this.zone.run(() => {\r\n this.getBlobFile(blob);\r\n });\r\n });\r\n }\r\n\r\n getBlobFile(blob) {\r\n let FilesArray = [];\r\n let BlobFile;\r\n let reader = new FileReader();\r\n BlobFile = blob;\r\n reader.readAsDataURL(BlobFile);\r\n reader.onload = () => {\r\n let FileObject: FileDTO = {\r\n FileName: this.EventFile.name,\r\n FileType: this.EventFile.type,\r\n FileBase64: reader.result.toString().split(',')[1],\r\n FileSizeInMB: BlobFile.size / 1000 / 1000,\r\n NameWithExtension: this.EventFile.name,\r\n };\r\n BlobFile.name = this.EventFile.name;\r\n\r\n FilesArray.push(FileObject);\r\n this.group.get(this.options.Name).setValue(FileObject);\r\n this.options.Value = FileObject;\r\n this.files = [];\r\n this.files.push(BlobFile);\r\n this.openModal(false);\r\n };\r\n }\r\n\r\n rotateImage(degree: number) {\r\n this.angularCropper.cropper.rotate(degree);\r\n }\r\n moveImage(offsetX: number, offsetY: number) {\r\n this.angularCropper.cropper.move(offsetX, offsetY);\r\n }\r\n zoomImage(ratio: number) {\r\n this.angularCropper.cropper.zoom(ratio);\r\n }\r\n\r\n openModal(open: boolean): void {\r\n this.mdlSampleIsOpen = open;\r\n }\r\n\r\n //External Method\r\n\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(\r\n this.ImageUploadFormControl,\r\n this.validationRules,\r\n this.options\r\n );\r\n };\r\n //External Method\r\n\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(\r\n this.ImageUploadFormControl,\r\n this.validationRules,\r\n this.options\r\n );\r\n };\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(\r\n this.ImageUploadFormControl,\r\n this.validationRules,\r\n CustomValidation\r\n );\r\n };\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(\r\n this.ImageUploadFormControl,\r\n this.validationRules,\r\n CustomValidation\r\n );\r\n };\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.ImageUploadFormControl);\r\n };\r\n}\r\n","import { FileDTO } from './FileDTO'\r\n\r\nexport class ProfilePictureDTO\r\n{\r\n ImageID_GUID:string\r\n ImageIDEncrypted:string\r\n FileName:string\r\n MediumPicture:string\r\n SmallPicture:string\r\n Original:string\r\n profilePicture:FileDTO\r\n AvatarPicture:FileDTO\r\n OriginalPicture:FileDTO\r\n FileURL?: string;\r\n}","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n Optional,\r\n ViewChild,\r\n ElementRef,\r\n NgZone,\r\n Output,\r\n EventEmitter,\r\n} from '@angular/core';\r\nimport {\r\n FormControl,\r\n Validators,\r\n FormGroup,\r\n AbstractControl,\r\n ControlContainer,\r\n FormGroupDirective,\r\n} from '@angular/forms';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { FileUploader, FileLikeObject } from 'ng2-file-upload';\r\nimport { FileDTO } from '../../Shared/Models/FileDTO';\r\nimport { CropperComponent } from 'angular-cropperjs';\r\nimport { ProfileImageUploadOptions } from '../../Shared/Models/ProfileImageUploadOptions';\r\nimport { ProfilePictureDTO } from '../../Shared/Models/ProfilePictureDTO';\r\nimport {\r\n ControlValidationService,\r\n UtilityService,\r\n} from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'BBSF-ProfileImageUploader',\r\n templateUrl: './ProfileImageUploader.component.html',\r\n})\r\nexport class ProfileImageUploaderComponent implements OnInit {\r\n static controlContainerstatic = null;\r\n\r\n @ViewChild('fileInput', { static: false }) fileInput: ElementRef;\r\n files: File[] = [];\r\n ImageSource: string = './src/assets/images/user.svg';\r\n isSubmitted: boolean;\r\n @Input() group: FormGroup;\r\n @Input() options: ProfileImageUploadOptions;\r\n @Output() OnChange = new EventEmitter();\r\n ProfileImageUploadFormControl: AbstractControl;\r\n ValidationMessage = '';\r\n uploader: FileUploader;\r\n hasAnotherDropZoneOver: boolean;\r\n AcceptedType: string = '';\r\n AcceptedTypeArray: string[] = [];\r\n ToolTipTypeArray: string[] = [];\r\n FileLikeObject: FileLikeObject;\r\n ProfilePictureDTO: ProfilePictureDTO;\r\n control: FormControl;\r\n markAllAsTouched: boolean = false;\r\n\r\n @ViewChild('angularCropper', { static: false })\r\n public angularCropper: CropperComponent;\r\n imgUrl = null;\r\n config = null;\r\n imageUrl = '';\r\n imgwUrl = '';\r\n EventFile: any;\r\n mdlSampleIsOpen: boolean = false;\r\n validationRules = [];\r\n validationRulesasync = [];\r\n\r\n constructor(\r\n private zone: NgZone,\r\n private controlUtility: ControlUtility,\r\n @Optional() private controlContainer: ControlContainer,\r\n public ProfileImageUploaderControlHost: FormGroupDirective,\r\n public UtilityService: UtilityService,\r\n private controlValidationService: ControlValidationService,\r\n private globalSettings: GlobalSettings\r\n ) {\r\n ProfileImageUploaderComponent.controlContainerstatic =\r\n this.controlContainer;\r\n this.uploader = new FileUploader({\r\n disableMultipart: false, // 'DisableMultipart' must be 'true' for formatDataFunction to be called.\r\n });\r\n this.hasAnotherDropZoneOver = false;\r\n this.ProfilePictureDTO = new ProfilePictureDTO();\r\n }\r\n\r\n ngOnInit() {\r\n this.controlValidationService.isCreatedBefor = false;\r\n\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n if (\r\n this.options.DefaultImageSrc != null &&\r\n this.options.DefaultImageSrc != ''\r\n )\r\n this.ImageSource = this.options.DefaultImageSrc;\r\n\r\n this.config = {\r\n aspectRatio: 200 / 200,\r\n dragMode: 'move',\r\n background: true,\r\n movable: true,\r\n rotatable: true,\r\n scalable: true,\r\n zoomable: true,\r\n viewMode: 1,\r\n checkImageOrigin: true,\r\n modal: true,\r\n checkCrossOrigin: false,\r\n cropBoxResizable: false,\r\n autoCrop: true,\r\n };\r\n\r\n if (this.options.ImageUploadAcceptsTypes != null) {\r\n this.options.ImageUploadAcceptsTypes;\r\n }\r\n if (this.options.Value != null) {\r\n let imgURL = this.options.Value['fileURL'];\r\n if (imgURL != '' && imgURL != undefined && imgURL != null)\r\n this.ImageSource = imgURL;\r\n\r\n let element = this.options.Value;\r\n this.FileLikeObject = new FileLikeObject({\r\n name: element.FileName,\r\n });\r\n this.uploader.addToQueue([this.FileLikeObject as any]);\r\n }\r\n\r\n if (this.options.LabelKey != null && this.options.LabelKey != '')\r\n this.options.LabelValue = this.UtilityService.getResourceValue(\r\n this.options.LabelKey\r\n );\r\n\r\n if (\r\n this.options.ImageUploadAcceptsTypes != null &&\r\n this.options.ImageUploadAcceptsTypes.length > 0\r\n ) {\r\n for (\r\n let index = 0;\r\n index < this.options.ImageUploadAcceptsTypes.length;\r\n index++\r\n ) {\r\n const Type = this.options.ImageUploadAcceptsTypes[index];\r\n this.AcceptedType =\r\n this.AcceptedType.toUpperCase() + Type.toUpperCase();\r\n }\r\n this.AcceptedTypeArray = this.AcceptedType.split(',');\r\n for (let index = 0; index < this.AcceptedTypeArray.length; index++) {\r\n const element = this.AcceptedTypeArray[index];\r\n const TypeToolTipe = element.split('/')[1];\r\n this.ToolTipTypeArray.push(TypeToolTipe.toUpperCase());\r\n }\r\n this.ValidationMessage =\r\n this.ValidationMessage +\r\n this.UtilityService.getResourceValue('AllowedTypes') +\r\n ` (${this.ToolTipTypeArray}) `;\r\n }\r\n if (this.options.FileMaxSizeInMB > 0) {\r\n this.ValidationMessage =\r\n this.ValidationMessage +\r\n ` <br /> ${this.UtilityService.getResourceValue('FileMaxSizeInMB')} ${\r\n this.options.FileMaxSizeInMB\r\n }`;\r\n }\r\n if(\r\n this.options.ImageUploadAcceptsTypes != null &&\r\n this.options.ImageUploadAcceptsTypes.length > 0\r\n ){\r\n }\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.ProfileImageUploadFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation;\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.validationRules.push(Validation.functionBody);\r\n }\r\n }\r\n\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n }\r\n\r\n this.ProfileImageUploadFormControl.setValidators(this.validationRules);\r\n this.ProfileImageUploadFormControl.setAsyncValidators(\r\n this.validationRulesasync\r\n );\r\n if (this.options.IsDisabled) {\r\n this.ProfileImageUploadFormControl.disable();\r\n }\r\n\r\n this.ProfileImageUploaderControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched();\r\n this.markAllAsTouched = true;\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.options.AttributeList != null) {\r\n var element = document.getElementById(this.options.Name);\r\n for (let index = 0; index < this.options.AttributeList.length; index++) {\r\n element.setAttribute(\r\n this.options.AttributeList[index].Key,\r\n this.options.AttributeList[index].value\r\n );\r\n }\r\n }\r\n }\r\n\r\n showImageUploader(element: HTMLElement) {\r\n let input = element.parentElement.parentElement.querySelector(\r\n 'input[type=file]'\r\n ) as HTMLElement;\r\n input.click();\r\n }\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n };\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError();\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError();\r\n this.markAllAsTouched = false;\r\n }\r\n\r\n return this.controlUtility.getErrorValidationMassage(\r\n ErrorList,\r\n this.group,\r\n this.options\r\n );\r\n }\r\n\r\n onFileChange(event) {\r\n if (event.rejectedFiles.length > 0) {\r\n const file = event.rejectedFiles[0];\r\n const maxFileSize = this.options.FileMaxSizeInMB * 1000 * 1000;\r\n const fileType = file.type;\r\n if (file.size > maxFileSize) {\r\n const formControl = this.ProfileImageUploadFormControl;\r\n formControl.setErrors({\r\n FileMaxSizeInMB: this.options.FileMaxSizeInMB + 'M',\r\n });\r\n formControl.markAsTouched();\r\n this.uploader.queue = [];\r\n return;\r\n }\r\n if (\r\n this.options.ImageUploadAcceptsTypes != null &&\r\n this.options.ImageUploadAcceptsTypes.length > 0 &&\r\n !(\r\n this.AcceptedTypeArray.includes(fileType.toUpperCase()) ||\r\n this.AcceptedTypeArray.includes(fileType.toLowerCase())\r\n )\r\n ) {\r\n const formControl = this.ProfileImageUploadFormControl;\r\n formControl.setErrors({ ToolTipTypeError: this.ToolTipTypeArray });\r\n formControl.markAsTouched();\r\n this.uploader.queue = [];\r\n return;\r\n }\r\n }\r\n let FilesArray = [];\r\n for (let index = 0; index < event.addedFiles.length; index++) {\r\n const file = event.addedFiles[0];\r\n this.EventFile = file;\r\n const maxFileSize = this.options.FileMaxSizeInMB * 1000 * 1000;\r\n if (file) {\r\n const maxFileSize = this.options.FileMaxSizeInMB * 1000 * 1000;\r\n const fileType = file.type;\r\n if (file.size > maxFileSize) {\r\n const formControl = this.ProfileImageUploadFormControl;\r\n formControl.setErrors({\r\n FileMaxSizeInMB: this.options.FileMaxSizeInMB + 'M',\r\n });\r\n formControl.markAsTouched();\r\n this.uploader.queue = [];\r\n return;\r\n }\r\n let reader = new FileReader();\r\n let FileObject = file;\r\n reader.readAsDataURL(FileObject);\r\n reader.onload = () => {\r\n this.imageUrl = reader.result.toString();\r\n this.openModal(true);\r\n let originalValue = this.group.get(this.options.Name).value;\r\n if (\r\n this.options.PatchFunction &&\r\n this.options.PatchPath &&\r\n this.group.get(this.options.Name).valid\r\n ) {\r\n this.controlUtility.patchControlValue(\r\n originalValue,\r\n this.options.PatchFunction,\r\n this.options.PatchPath\r\n );\r\n }\r\n //Use this line to enable two way binding.\r\n this.options.Value = originalValue;\r\n this.OnChange.emit(originalValue);\r\n };\r\n }\r\n }\r\n }\r\n removeFromControlValue(event) {\r\n let ItemList = this.group.get(this.options.Name).value;\r\n this.files.splice(this.files.indexOf(event), 1);\r\n ItemList = [];\r\n if (this.files.length == 0 && this.options.IsRequired) {\r\n this.ProfileImageUploadFormControl.markAsTouched();\r\n this.ProfileImageUploadFormControl.setErrors(Validators.required);\r\n this.ProfileImageUploadFormControl.invalid;\r\n }\r\n this.group.get(this.options.Name).setValue(ItemList);\r\n this.OnChange.emit(this.group.get(this.options.Name).value);\r\n this.options.Value = this.group.get(this.options.Name).value;\r\n }\r\n cropImage() {\r\n this.ProfilePictureDTO.FileName = this.EventFile.name;\r\n let Cropper = this.angularCropper.cropper;\r\n let profilePicturCropper = Cropper.getCroppedCanvas({\r\n width: 400,\r\n height: 400,\r\n imageSmoothingEnabled: false,\r\n imageSmoothingQuality: 'high',\r\n });\r\n let AvatarPictureCropper = Cropper.getCroppedCanvas({\r\n width: 100,\r\n height: 100,\r\n imageSmoothingEnabled: false,\r\n imageSmoothingQuality: 'high',\r\n });\r\n let OriginalPictureCropper = Cropper.getCroppedCanvas({\r\n width: 700,\r\n height: 700,\r\n imageSmoothingEnabled: false,\r\n imageSmoothingQuality: 'high',\r\n });\r\n profilePicturCropper.toBlob((blob) => {\r\n this.zone.run(() => {\r\n this.getProfileImageBlobFile(blob, 'profilePicturCropper');\r\n });\r\n });\r\n AvatarPictureCropper.toBlob((blob) => {\r\n this.zone.run(() => {\r\n this.getProfileImageBlobFile(blob, 'AvatarPictureCropper');\r\n });\r\n });\r\n OriginalPictureCropper.toBlob((blob) => {\r\n this.zone.run(() => {\r\n this.getProfileImageBlobFile(blob, 'OriginalPictureCropper');\r\n });\r\n });\r\n\r\n this.files = [];\r\n\r\n this.openModal(false);\r\n }\r\n getProfileImageBlobFile(blob, type) {\r\n let FilesArray = [];\r\n let BlobFile;\r\n let reader = new FileReader();\r\n BlobFile = blob;\r\n reader.readAsDataURL(BlobFile);\r\n reader.onload = () => {\r\n let FileObject: FileDTO;\r\n switch (type) {\r\n case 'profilePicturCropper':\r\n BlobFile.name = this.EventFile.name + 'MediumPicture';\r\n FileObject = {\r\n FileName: this.EventFile.name + 'MediumPicture',\r\n FileType: this.EventFile.type,\r\n FileBase64: reader.result.toString().split(',')[1],\r\n FileSizeInMB: BlobFile.size / 1000 / 1000,\r\n };\r\n this.ProfilePictureDTO.profilePicture = FileObject;\r\n this.ProfilePictureDTO.MediumPicture =\r\n FileObject.FileName + ',' + FileObject.FileBase64;\r\n this.files.push(BlobFile);\r\n break;\r\n case 'AvatarPictureCropper':\r\n FileObject = {\r\n FileName: this.EventFile.name + 'SmallPicture',\r\n FileType: this.EventFile.type,\r\n FileBase64: reader.result.toString().split(',')[1],\r\n FileSizeInMB: BlobFile.size / 1000 / 1000,\r\n };\r\n this.ProfilePictureDTO.AvatarPicture = FileObject;\r\n this.ProfilePictureDTO.SmallPicture =\r\n FileObject.FileName + ',' + FileObject.FileBase64;\r\n break;\r\n\r\n case 'OriginalPictureCropper':\r\n FileObject = {\r\n FileName: this.EventFile.name + 'Original',\r\n FileType: this.EventFile.type,\r\n FileBase64: reader.result.toString().split(',')[1],\r\n FileSizeInMB: BlobFile.size / 1000 / 1000,\r\n };\r\n this.ProfilePictureDTO.OriginalPicture = FileObject;\r\n this.ProfilePictureDTO.Original =\r\n FileObject.FileName + ',' + FileObject.FileBase64;\r\n this.group.get(this.options.Name).setValue(this.ProfilePictureDTO);\r\n this.OnChange.emit(this.group.get(this.options.Name).value);\r\n\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n this.options.Value = this.ProfilePictureDTO;\r\n };\r\n }\r\n\r\n rotateImage(degree: number) {\r\n this.angularCropper.cropper.rotate(degree);\r\n }\r\n moveImage(offsetX: number, offsetY: number) {\r\n this.angularCropper.cropper.move(offsetX, offsetY);\r\n }\r\n zoomImage(ratio: number) {\r\n this.angularCropper.cropper.zoom(ratio);\r\n }\r\n\r\n openModal(open: boolean): void {\r\n this.mdlSampleIsOpen = open;\r\n }\r\n\r\n //External Method\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(\r\n this.ProfileImageUploadFormControl,\r\n this.validationRules,\r\n this.options\r\n );\r\n };\r\n //External Method\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(\r\n this.ProfileImageUploadFormControl,\r\n this.validationRules,\r\n this.options\r\n );\r\n };\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(\r\n this.ProfileImageUploadFormControl,\r\n this.validationRules,\r\n CustomValidation\r\n );\r\n };\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(\r\n this.ProfileImageUploadFormControl,\r\n this.validationRules,\r\n CustomValidation\r\n );\r\n };\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.ProfileImageUploadFormControl);\r\n };\r\n}\r\n","export class AutocompleteDTO\r\n{\r\n key: string=\"\";\r\n value: string = \"\";\r\n image: string = \"\";\r\n \r\n}\r\n","import { Component, OnInit, Input, DoCheck, Optional, Output, EventEmitter, Attribute } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, AbstractControl, ControlContainer, FormGroupDirective, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport { ErrorMassageValidation } from '../../Shared/services/validationErrorMassage.service';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { AutocompleteOptions } from '../../Shared/Models/AutocompleteOptions';\r\nimport { AutocompleteDTO } from '../../Shared/Models/AutocompleteDTO';\r\nimport { noop, Observable, Observer, of } from 'rxjs';\r\nimport { map, switchMap, tap } from 'rxjs/operators';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { ControlValidationService, RequestHandlerService, RequestOptionsModel, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\n\r\n@Component({\r\n // tslint:disable-next-line: component-selector\r\n selector: 'BBSF-AutocompleteTextBox',\r\n templateUrl: './AutocompleteTextBox.component.html'\r\n})\r\nexport class AutocompleteTextBoxComponent implements OnInit {\r\n\r\n\r\n static controlContainerstatic = null;\r\n // tslint:disable-next-line: max-line-length\r\n constructor(private http: HttpClient, private ErrorHandler: ErrorMassageValidation, private requestHandlerService: RequestHandlerService,\r\n private controlUtility: ControlUtility, @Optional() private controlContainer:\r\n ControlContainer, public AutocompleteTextBoxControlHost: FormGroupDirective, private UtilityService: UtilityService,\r\n private controlValidationService: ControlValidationService, private globalSettings: GlobalSettings) {\r\n AutocompleteTextBoxComponent.controlContainerstatic = this.controlContainer;\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: AutocompleteOptions;\r\n @Output() OnChange = new EventEmitter();\r\n keyword: string = 'value'\r\n AutocompleteTextBoxControl: AbstractControl;\r\n Search: string = ''\r\n Key: string = ''\r\n\r\n Api: string = 'http';\r\n Value: string = 'value'\r\n NewSelectionValidationKey: string = '';\r\n markAllAsTouched: boolean = false;\r\n validationRules = [];\r\n validationRulesasync = [];\r\n dataSource: Observable<any>;\r\n suggestions$: Observable<any[]>;\r\n errorMessage: string;\r\n dataList: any[] = [];\r\n SelectedValue: string = \"\"\r\n avatarImage: string = \"./src/assets/images/userimg.png\";\r\n textDir;\r\n\r\n ngOnInit() {\r\n if (this.options.IsReadonly && !this.options.Value)\r\n this.options.Value = this.UtilityService.getResourceValue('NA');\r\n\r\n if (this.options.ForceDirection)\r\n this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';\r\n else\r\n this.textDir = localStorage.getItem('language') == 'ar' ? 'rtl' : 'ltr';\r\n this.controlValidationService.isCreatedBefor = false\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.AutocompleteTextBoxControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\")\r\n this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);\r\n\r\n // this.AutocompleteTextBoxControl.setValue(this.options.Value);\r\n\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.validationRules.push(Validation.functionBody);\r\n }\r\n }\r\n\r\n\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n }\r\n this.AutocompleteTextBoxControl.setValidators(this.validationRules);\r\n this.AutocompleteTextBoxControl.setAsyncValidators(this.validationRulesasync);\r\n if (this.options.IsDisabled) {\r\n this.AutocompleteTextBoxControl.disable();\r\n }\r\n\r\n\r\n if (this.options.SelectedValue != undefined && this.options.SelectedValue != null) {\r\n this.SelectedValue = this.options.SelectedValue;\r\n }\r\n\r\n\r\n this.AutocompleteTextBoxControlHost.ngSubmit.subscribe((value) => {\r\n if (this.AutocompleteTextBoxControl.value == this.Search && this.options.AllowNewSelection == false) {\r\n this.AutocompleteTextBoxControl.setErrors({ NewSelectionValidationKey: this.NewSelectionValidationKey });\r\n this.AutocompleteTextBoxControl.markAsTouched();\r\n this.AutocompleteTextBoxControl.invalid;\r\n }\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n })\r\n\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': this.options.ValidationToken\r\n }),\r\n };\r\n\r\n\r\n\r\n\r\n this.suggestions$ = new Observable((observer: Observer<string>) => {\r\n observer.next(this.Search);\r\n }).pipe(\r\n switchMap((query: string) => {\r\n if (query) {\r\n let params = new HttpParams();\r\n params = params.append(this.options.QueryParam, query);\r\n let requestOptionsModel = new RequestOptionsModel()\r\n requestOptionsModel.disableBlockUI = true;\r\n requestOptionsModel.disableSuccessNotification = true;\r\n // using github public api to get users by name\r\n return this.requestHandlerService.get(this.options.ActionURL, params, null, requestOptionsModel)\r\n .pipe(\r\n map((data) => data as Attribute[] || []),\r\n tap(() => noop, err => {\r\n // in case of http error\r\n this.errorMessage = err && err.message || 'Something goes wrong';\r\n })\r\n );\r\n }\r\n\r\n return of([]);\r\n })\r\n );\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n this.controlUtility.setAttributeForControl(this.options)\r\n }\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n\r\n getErrorValidation(ErrorList) {\r\n\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n\r\n copyInputMessage(inputElement) {\r\n this.controlUtility.CopyInputMessage(inputElement)\r\n }\r\n\r\n\r\n selectEvent(item) {\r\n\r\n if (this.options.AllowNewSelection == true) {\r\n if (typeof (item) == 'object') {\r\n this.AutocompleteTextBoxControl.setValue(item);\r\n this.AutocompleteTextBoxControl.updateValueAndValidity()\r\n }\r\n else {\r\n let AutocompleteModel = new AutocompleteDTO();\r\n AutocompleteModel.value = item;\r\n this.AutocompleteTextBoxControl.setValue(AutocompleteModel);\r\n this.AutocompleteTextBoxControl.updateValueAndValidity()\r\n }\r\n }\r\n else {\r\n if (this.AutocompleteTextBoxControl.value == item.value) {\r\n this.AutocompleteTextBoxControl.setErrors({ NewSelectionValidationKey: this.NewSelectionValidationKey });\r\n this.AutocompleteTextBoxControl.markAsTouched();\r\n this.AutocompleteTextBoxControl.invalid;\r\n return;\r\n }\r\n else {\r\n this.AutocompleteTextBoxControl.setValue(item);\r\n this.AutocompleteTextBoxControl.updateValueAndValidity()\r\n let originalValue = this.AutocompleteTextBoxControl.value;\r\n if (this.options.PatchFunction && this.options.PatchPath && this.group.get(this.options.Name).valid) {\r\n this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath)\r\n }\r\n\r\n }\r\n }\r\n\r\n // move this line here to emit value no matter is from database or not \r\n this.OnChange.emit(this.AutocompleteTextBoxControl.value)\r\n //Use this line to enable two way binding.\r\n this.options.Value = this.AutocompleteTextBoxControl.value;\r\n }\r\n\r\n async onChangeSearch(search: string) {\r\n if (this.options.MaxLength && search.length > this.options.MaxLength) {\r\n const formControl = this.AutocompleteTextBoxControl;\r\n formControl.setErrors({ errorMassage: this.UtilityService.getResourceValue(\"MaxLenghtValidationKey\") + \" \" + this.options.MaxLength });\r\n formControl.markAsTouched();\r\n return;\r\n }\r\n this.Search = search;\r\n this.SelectedValue = \"\";\r\n await this.suggestions$.subscribe((result) => {\r\n if ((result == null || result.length == 0 || result.length == 0) && this.options.AllowNewSelection == true) {\r\n this.dataList = [\r\n {\r\n key: 0,\r\n value: this.Search\r\n }\r\n ]\r\n }\r\n else {\r\n this.dataList = result\r\n }\r\n })\r\n }\r\n\r\n onInputCleared() {\r\n this.AutocompleteTextBoxControl.setValue(null);\r\n this.OnChange.emit(null);\r\n this.AutocompleteTextBoxControl.updateValueAndValidity()\r\n }\r\n // onFocused(e) {\r\n // // do something\r\n // }\r\n\r\n\r\n // onBlur(Value) {\r\n // if (this.options.AllowNewSelection == true) {\r\n\r\n // if (typeof (Value) == 'object') {\r\n // this.AutocompleteTextBoxControl.setValue(Value);\r\n // this.AutocompleteTextBoxControl.updateValueAndValidity()\r\n\r\n // }\r\n // else {\r\n // let AutocompleteModel = new AutocompleteDTO();\r\n // AutocompleteModel.value = Value;\r\n // let model = new TypeaheadMatch(AutocompleteModel,Value);\r\n // this.AutocompleteTextBoxControl.setValue(model);\r\n // this.AutocompleteTextBoxControl.updateValueAndValidity()\r\n\r\n // }\r\n // }\r\n\r\n // else {\r\n\r\n // if (this.AutocompleteTextBoxControl.value == Value) {\r\n // this.AutocompleteTextBoxControl.setErrors({ NewSelectionValidationKey: this.NewSelectionValidationKey });\r\n // this.AutocompleteTextBoxControl.markAsTouched();\r\n // this.AutocompleteTextBoxControl.invalid;\r\n // return;\r\n // }\r\n // }\r\n // }\r\n\r\n\r\n // handleResultSelected(result) {\r\n\r\n // this.AutocompleteTextBoxControl.setValue(result);\r\n // this.AutocompleteTextBoxControl.updateValueAndValidity()\r\n // this.OnChange.emit(this.AutocompleteTextBoxControl.value)\r\n // this.Search = this.AutocompleteTextBoxControl.value.value\r\n\r\n\r\n\r\n // }\r\n\r\n //External Method\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(this.AutocompleteTextBoxControl, this.validationRules, this.options)\r\n }\r\n //External Method\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(this.AutocompleteTextBoxControl, this.validationRules, this.options)\r\n }\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(this.AutocompleteTextBoxControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(this.AutocompleteTextBoxControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.AutocompleteTextBoxControl)\r\n }\r\n\r\n}\r\n\r\n\r\n","import { Component, OnInit, Input, DoCheck, Optional, Output, EventEmitter, OnDestroy, OnChanges, SimpleChanges, SimpleChange, ViewChild, ElementRef } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, AbstractControl, ControlContainer, FormGroupDirective } from '@angular/forms';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { TagsInputOptions } from '../../Shared/Models/TagsInputOptions';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { EMPTY, Observable, Subscription } from 'rxjs';\r\nimport { ControlValidationService, RequestHandlerService, RequestOptionsModel, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\nimport { tap } from 'rxjs/operators';\r\n\r\n@Component({\r\n // tslint:disable-next-line: component-selector\r\n selector: 'BBSF-TagsInput',\r\n templateUrl: './TagsInput.component.html'\r\n})\r\nexport class TagsInputComponent implements OnInit, OnDestroy {\r\n static controlContainerstatic = null;\r\n // tslint:disable-next-line: max-line-length\r\n constructor(private http: HttpClient, private controlUtility: ControlUtility, private requestHandlerService: RequestHandlerService, @Optional() private controlContainer: ControlContainer, public TagsInputControlHost: FormGroupDirective,\r\n private UtilityService: UtilityService, private controlValidationService: ControlValidationService,\r\n private globalSettings: GlobalSettings) {\r\n TagsInputComponent.controlContainerstatic = this.controlContainer;\r\n }\r\n\r\n @Input() group: FormGroup;\r\n @Input() options: TagsInputOptions;\r\n @Output() OnChange = new EventEmitter();\r\n @ViewChild('SearchKey', { static: false }) SearchKey: any;\r\n\r\n // TagInputControl: AbstractControl;\r\n SelectedId: any[] = []\r\n tags = [];\r\n NewSelectionValidationKey: string = \"\";\r\n TagsFormGroup: FormGroup;\r\n TagsFormControl: AbstractControl\r\n IsNoMatch: any;\r\n markAllAsTouched: boolean = false;\r\n validationRules = [];\r\n validationRulesasync = [];\r\n changeValueSubscription: Subscription;\r\n SearchResultHasItems: boolean = false;\r\n textDir;\r\n static showErrorOfInputs(errors: any) {\r\n const controlContainerstatic = TagsInputComponent.controlContainerstatic;\r\n const formGroup = controlContainerstatic.control as FormGroup;\r\n for (const key in errors) {\r\n if (errors.hasOwnProperty(key)) {\r\n for (const iterator of errors[key]) {\r\n const formControl = formGroup.get(key) as FormControl;\r\n formControl.setErrors({ \"FluentApi\": iterator });\r\n formControl.markAsTouched();\r\n }\r\n }\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n if (this.changeValueSubscription)\r\n this.changeValueSubscription.unsubscribe();\r\n }\r\n ngOnInit() {\r\n if (this.options.IsReadonly && !this.options.Value)\r\n this.options.Value = this.UtilityService.getResourceValue('NA');\r\n\r\n if (this.options.ForceDirection)\r\n this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';\r\n else\r\n this.textDir = localStorage.getItem('language') == 'ar' ? 'rtl' : 'ltr';\r\n this.controlValidationService.isCreatedBefor = false\r\n\r\n this.options.DatasourceItemText = this.options.DatasourceItemText.toLowerCase();\r\n this.TagsFormGroup = new FormGroup({});;\r\n this.TagsFormGroup.addControl(\"tags\", new FormControl(''));\r\n this.TagsFormControl = this.TagsFormGroup.controls[\"tags\"]; // new FormControl('',validationRules);\r\n this.group.addControl(this.options.Name, this.TagsFormControl);\r\n\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\")\r\n this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);\r\n\r\n if (!this.options.NoResultText)\r\n this.options.NoResultText = this.UtilityService.getResourceValue(\"NoItemsMatch\");\r\n\r\n // this.group.addControl(this.options.Name, new FormControl(''));\r\n // this.TagInputControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n\r\n this.TagsFormControl.setValue(this.options.Value);\r\n\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n }\r\n\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.validationRules.push(Validation.functionBody);\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n this.TagsFormControl.setValidators(this.validationRules);\r\n this.TagsFormControl.setAsyncValidators(this.validationRulesasync);\r\n if (this.options.IsDisabled) {\r\n this.TagsFormControl.disable();\r\n }\r\n\r\n if (this.options.Value != undefined && this.options.Value.length > 0) {\r\n for (let index = 0; index < this.options.Value.length; index++) {\r\n const element = this.options.Value[index];\r\n this.SelectedId.push(element.id);\r\n }\r\n this.tags = this.options.Value\r\n this.TagsFormControl.setValue(this.options.Value);\r\n }\r\n\r\n this.TagsInputControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n });\r\n //Check for changing in value\r\n this.changeValueSubscription = this.TagsFormControl.valueChanges.subscribe(c => {\r\n this.tags = this.TagsFormControl.value;\r\n this.SelectedId = this.tags?.filter(item => item.id).map(item => item.id);\r\n if (this.tags == null) {\r\n this.SearchKey.selected = \"\";\r\n this.tags = [];\r\n this.TagsFormControl.setValue([])\r\n }\r\n });\r\n }\r\n ngAfterViewInit(): void {\r\n if (this.options.AttributeList != null) {\r\n var element = document.getElementById(this.options.Name);\r\n for (let index = 0; index < this.options.AttributeList.length; index++) {\r\n element.setAttribute(this.options.AttributeList[index].Key, this.options.AttributeList[index].value);\r\n }\r\n }\r\n let inputElement = document.getElementById(this.options.Name).getElementsByTagName(\"input\")[0]\r\n inputElement.setAttribute(\"autocomplete\", \"off\")\r\n }\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n\r\n copyInputMessage(inputElement) {\r\n this.controlUtility.CopyInputMessage(inputElement)\r\n }\r\n\r\n searchFunctionFactory(Text: any): Observable<object> {\r\n //If no text then return empty observable\r\n if (!Text)\r\n return EMPTY;\r\n\r\n let Url = `${this.options.ActionURL}?${this.options.QueryParamName}=${encodeURIComponent(Text)}&${this.options.SelectedItemsParamName}=${this.SelectedId}`\r\n if (this.options.ExtraFilters)\r\n Url = Url + `&${this.options.ExtraFilters}`\r\n let requestOptionsModel = new RequestOptionsModel()\r\n requestOptionsModel.disableBlockUI = true;\r\n requestOptionsModel.disableSuccessNotification = true;\r\n let Model = this.requestHandlerService.get(Url, null, null, requestOptionsModel);\r\n return Model as any;\r\n }\r\n\r\n AddTag(event, key) {\r\n //Check if input is yab press\r\n if (event.key === \"Tab\")\r\n return;\r\n //Check if input is enter press\r\n if (this.IsNoMatch == true && event.key == \"Enter\" && this.options.AllowNewSelection && key.selected) {\r\n if (!(this.tags.length >= this.options.MaxNumberTags)) {\r\n this.tags.push({ name: key.selected });\r\n this.group.get(this.options.Name).setValue(this.tags);\r\n this.group.get(this.options.Name).markAllAsTouched();\r\n this.group.updateValueAndValidity();\r\n if (this.group.get(this.options.Name).valid) {\r\n key.selected = null;\r\n return;\r\n }\r\n else\r\n this.tags.pop();\r\n }\r\n }\r\n //Check if input is charachter\r\n else if (String.fromCharCode(event.keyCode).match(/(\\w|\\s)/g)) {\r\n if (this.IsNoMatch && !this.options.AllowNewSelection && key.selected) {\r\n this.TagsFormControl.setErrors({ \"errorMassage\": this.options.NoResultText });\r\n this.TagsFormControl.markAsTouched();\r\n }\r\n else if (this.IsNoMatch == false && this.options.AllowNewSelection == false) {\r\n this.TagsFormControl.clearValidators();\r\n this.TagsFormControl.updateValueAndValidity();\r\n }\r\n }\r\n //Remove unmatched error incase of deleting search value\r\n else if (event.key === \"Backspace\" && key.selected?.length <= 1 && this.TagsFormControl.hasError('errorMassage')) {\r\n this.TagsFormControl.setErrors({ \"errorMassage\": null });\r\n this.TagsFormControl.updateValueAndValidity();\r\n if (this.SelectedId?.length == 0 && this.options.IsRequired) {\r\n this.TagsFormControl.setErrors({ required: \"\" });\r\n this.TagsFormControl.markAsTouched();\r\n }\r\n }\r\n }\r\n\r\n onTagsChanged(result) {\r\n //console.log(this.tags)\r\n if (result[\"change\"] == \"add\") {\r\n this.SelectedId.push(result.tag.id);\r\n }\r\n if (result[\"change\"] == \"remove\") {\r\n this.SelectedId = this.SelectedId.filter((item) => item != result.tag.id);\r\n if (this.SelectedId.length == 0 && this.options.IsRequired == true) {\r\n this.TagsFormControl.setErrors({ required: \"\" });\r\n this.TagsFormControl.markAsTouched();\r\n this.TagsFormControl.invalid;\r\n }\r\n }\r\n let originalValue = this.TagsFormControl.value.map(function (a) { return a.id; });\r\n if (this.options.PatchFunction && this.options.PatchPath && this.TagsFormControl.valid) {\r\n this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);\r\n }\r\n this.options.Value = this.tags\r\n this.group.get(this.options.Name).setValue(this.tags);\r\n this.TagsFormControl.updateValueAndValidity();\r\n this.group.updateValueAndValidity();\r\n this.OnChange.emit(originalValue);\r\n }\r\n\r\n onNoOptionsMatch(event) {\r\n this.IsNoMatch = event;\r\n }\r\n\r\n //External Method\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(this.TagsFormControl, this.validationRules, this.options)\r\n }\r\n //External Method\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(this.TagsFormControl, this.validationRules, this.options)\r\n }\r\n //External Method\r\n\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(this.TagsFormControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(this.TagsFormControl, this.validationRules, CustomValidation)\r\n }\r\n\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.TagsFormControl)\r\n }\r\n\r\n onTagsInputBlur(SearchKey) {\r\n if (SearchKey.selected && this.options.AllowNewSelection && this.IsNoMatch && this.tags.length < this.options.MaxNumberTags) {\r\n this.tags.push({ name: SearchKey.selected });\r\n this.group.get(this.options.Name).setValue(this.tags);\r\n this.group.get(this.options.Name).markAllAsTouched();\r\n this.group.updateValueAndValidity();\r\n if (this.group.get(this.options.Name).valid) {\r\n SearchKey.selected = null;\r\n return;\r\n }\r\n else\r\n this.tags.pop();\r\n }\r\n }\r\n getTagsValue() {\r\n if (this.tags.length > 0)\r\n return this.tags.map(item => item.name)\r\n }\r\n\r\n}\r\n","export class PagingDTO{\r\n constructor(){\r\n\r\n }\r\n TotalCount:number=0\r\n PageCount:number=10\r\n CurrentPageNumber:number=1\r\n IsFilterUpdated:boolean=false\r\n Skip:number=0\r\n Take:number=0\r\n DevMode:boolean=true\r\n AddedItemsCount:number=0\r\n}","\r\nexport enum FilterType {\r\n TextBox = 1,\r\n DropdownList = 2,\r\n AutocompleteTextBox = 3,\r\n DatePicker = 4,\r\n TagInput = 5,\r\n CheckBox = 6,\r\n Other=7\r\n}","import { Component, OnInit, Output, EventEmitter, Input, SimpleChanges, ElementRef, OnDestroy } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { PagingDTO } from '../../Shared/Models/PagingDTO';\r\nimport { PagingOptions } from '../../Shared/Models/PagingOptions';\r\nimport { RequestOptions, ResponseContentType, Headers } from '@angular/http';\r\nimport { Subject, Observable, Subscription } from 'rxjs';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { OnPagingFiltersChangeService } from '../../Shared/services/OnPagingFiltersChange.service';\r\nimport { FilterType } from '../../Shared/Enums/FilterType';\r\nimport { RequestHandlerService, RequestOptionsModel, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { plainToClass } from 'class-transformer';\r\nimport { PagingPayload } from '../../Shared/Models/PagingPayload';\r\n\r\n// tslint:disable-next-line: no-conflicting-lifecycle\r\n@Component({\r\n selector: 'BBSF-Paging',\r\n templateUrl: './Paging.component.html'\r\n})\r\nexport class PagingComponent<T> implements OnInit, OnDestroy {\r\n\r\n items = [];\r\n pageOfItems: Array<any>;\r\n result: T[] = [];\r\n pagerConfig: any = null;\r\n totalRow: any = 0;\r\n pageSize: any = 10\r\n Pages: any = 0\r\n pagesText: string;\r\n itemsText: string;\r\n CurrentPage: any = 1\r\n ShowPageSizeOption = true;\r\n ShowFirstAndLast = true;\r\n hidePaginationWhenPageSizeEqualOne = true\r\n Sum = 0;\r\n Throttle = 300;\r\n ScrollDistance = 1;\r\n ScrollUpDistance = 2;\r\n direction = '';\r\n Headers: HttpHeaders;\r\n IsFirstCall: boolean = true;\r\n @Output() Items: EventEmitter<T[]> = new EventEmitter<T[]>();\r\n @Input() options: PagingOptions;\r\n @Input() group: FormGroup;\r\n subscriptions = new Subscription();\r\n\r\n constructor(public utilityService: UtilityService, private http: HttpClient, private router: Router, private onChangeService: OnPagingFiltersChangeService, private requestHandlerService: RequestHandlerService) {\r\n }\r\n ngOnDestroy(): void {\r\n this.subscriptions.unsubscribe()\r\n }\r\n\r\n ngOnInit() {\r\n if (this.options.IsLoadMoreControl)\r\n this.Sum = this.options.PageSize;\r\n\r\n if (this.options.DropdownFiltersControlNames != null && this.options.DropdownFiltersControlNames.length > 0) {\r\n const DropdownFiltersControlNames = this.options.DropdownFiltersControlNames;\r\n this.subscriptions.add(\r\n this.onChangeService.GetValue().subscribe((value) => {\r\n let result = this.options.DropdownFiltersControlNames.filter((item) => item == value)\r\n if (result.length > 0) {\r\n this.IsFirstCall = true;\r\n this.CurrentPage = 1;\r\n this.getItemList(this.CurrentPage, true);\r\n }\r\n }))\r\n }\r\n\r\n if (this.options.BootstrapDatePickersFiltersControlNames != null && this.options.BootstrapDatePickersFiltersControlNames.length > 0) {\r\n const BootstrapDatePickersFiltersControlNames = this.options.BootstrapDatePickersFiltersControlNames;\r\n this.subscriptions.add(this.onChangeService.GetValue().subscribe((value) => {\r\n let result = this.options.BootstrapDatePickersFiltersControlNames.filter((item) => item == value)\r\n if (result.length > 0) {\r\n this.IsFirstCall = true;\r\n this.CurrentPage = 1;\r\n this.getItemList(this.CurrentPage, true);\r\n }\r\n }))\r\n }\r\n this.IsFirstCall = true;\r\n this.getItemList(this.CurrentPage, true);\r\n }\r\n ngAfterViewInit(): void {\r\n\r\n if (this.options.OnClickFiltersControlNames != null && this.options.OnClickFiltersControlNames.length > 0) {\r\n const OnClickFiltersControlNames = this.options.OnClickFiltersControlNames;\r\n for (let index = 0; index < OnClickFiltersControlNames.length; index++) {\r\n const OnClickFiltersControlName = OnClickFiltersControlNames[index];\r\n document.getElementById(OnClickFiltersControlName).addEventListener(\"click\", () => {\r\n this.CurrentPage = 1;\r\n this.IsFirstCall = true;\r\n this.getItemList(this.CurrentPage, true);\r\n }, false);\r\n }\r\n }\r\n if (this.options.OnKeyPressFiltersControlNames != null && this.options.OnKeyPressFiltersControlNames.length > 0) {\r\n const OnKeyPressFiltersControlNames = this.options.OnKeyPressFiltersControlNames;\r\n for (let index = 0; index < OnKeyPressFiltersControlNames.length; index++) {\r\n const OnKeyPressFiltersControlName = OnKeyPressFiltersControlNames[index];\r\n let element = (<any>this.group.get(OnKeyPressFiltersControlName)).nativeElement as HTMLElement;\r\n element.addEventListener(\"keypress\", (e) => {\r\n if (e.key == \"Enter\") {\r\n this.CurrentPage = 1;\r\n this.IsFirstCall = true;\r\n this.getItemList(this.CurrentPage, true);\r\n }\r\n }, false);\r\n }\r\n }\r\n //Add click event on Reset Filter button\r\n if (this.options.ResetFilterButtonName != null) {\r\n const button = document.getElementsByName(this.options.ResetFilterButtonName)[0];\r\n if (button != undefined) {\r\n let element = button as HTMLElement;\r\n element.addEventListener(\"click\", (e) => {\r\n this.clearFilters();\r\n }, false);\r\n }\r\n }\r\n if (this.options.TypeaheadSearchControlNames != null && this.options.TypeaheadSearchControlNames.length > 0) {\r\n const TypeaheadSearchControlNames = this.options.TypeaheadSearchControlNames;\r\n for (let index = 0; index < TypeaheadSearchControlNames.length; index++) {\r\n const TypeaheadSearchControlName = TypeaheadSearchControlNames[index];\r\n document.getElementById(TypeaheadSearchControlName).addEventListener(\"keypress\", (e) => {\r\n if (e.key == \"Enter\") {\r\n this.CurrentPage = 1;\r\n this.IsFirstCall = true;\r\n this.getItemList(this.CurrentPage, true);\r\n }\r\n }, false);\r\n\r\n }\r\n }\r\n\r\n }\r\n\r\n onDropDownChange(result) {\r\n if (result) {\r\n this.CurrentPage = 1;\r\n this.IsFirstCall = true;\r\n this.getItemList(this.CurrentPage, true);\r\n }\r\n }\r\n\r\n onChangePage(Page) {\r\n if (Page == 0)\r\n return;\r\n if (Page > 0) {\r\n if (this.IsFirstCall) {\r\n this.IsFirstCall = false;\r\n return;\r\n }\r\n this.CurrentPage = Page;\r\n this.getItemList(Page);\r\n }\r\n }\r\n changePageSize(e) {\r\n this.options.PageSize = e.target.value;\r\n this.CurrentPage = 1;\r\n this.IsFirstCall = true;\r\n this.getItemList(this.CurrentPage, true);\r\n }\r\n\r\n\r\n\r\n\r\n onScrollDown() {\r\n this.Sum += this.options.PageSize\r\n this.CurrentPage = 1\r\n this.IsFirstCall = true;\r\n this.direction = 'down';\r\n this.getItemList(this.CurrentPage, true);\r\n }\r\n\r\n\r\n\r\n getItemList(page, IsFilterUpdated = false) {\r\n if (this.options.StartPagingCallback)\r\n this.options.StartPagingCallback.call(null);\r\n\r\n let pagingDTO = new PagingDTO();\r\n let size = Number.parseInt(this.options.PageSize.toString());\r\n if (this.options.IsLoadMoreControl)\r\n pagingDTO.PageCount = this.Sum;\r\n else\r\n pagingDTO.PageCount = size;\r\n\r\n pagingDTO.CurrentPageNumber = page;\r\n pagingDTO.TotalCount = this.totalRow;\r\n pagingDTO.IsFilterUpdated = IsFilterUpdated;\r\n let filters = {};\r\n filters = this.getFiltersValue();\r\n\r\n //Set Filters object that sent to action URL\r\n let filtersDTO: PagingPayload = {\r\n PagingDTO: pagingDTO,\r\n Filters: filters\r\n };\r\n\r\n let requestOptions = new RequestOptionsModel();\r\n requestOptions.disableBlockUI = this.options.DisableBlockUI;\r\n this.requestHandlerService.post(this.options.ActionPostURL, this.options.Filters && this.options.Filters.length > 0 ? filtersDTO : pagingDTO, null, null, requestOptions)\r\n .subscribe((responseData: any) => {\r\n this.result = responseData.items //this.castItems(responseData.items);\r\n let castedResult = plainToClass(this.options.TypeOfResponse, this.result, { excludeExtraneousValues: true })\r\n this.Items.emit(castedResult);\r\n this.totalRow = responseData.totalCount;\r\n\r\n if (IsFilterUpdated) {\r\n this.items = [];\r\n this.Pages = Math.ceil((this.totalRow / this.options.PageSize));\r\n this.items = Array(this.totalRow);\r\n\r\n this.setText(this.Pages, this.totalRow);\r\n\r\n }\r\n }, (error: HttpErrorResponse) => {\r\n if (error.status == 401)\r\n this.router.navigate([\"/Admin/account/login\"])\r\n });\r\n }\r\n\r\n ReinitializePaging = () => {\r\n this.IsFirstCall = true;\r\n this.getItemList(1, true);\r\n }\r\n\r\n UpdatePaging = () => {\r\n //this.IsFirstCall=true;\r\n this.getItemList(this.CurrentPage);\r\n }\r\n\r\n castItems(objectArr: any[]): T[] {\r\n let originalArray: T[] = []\r\n for (let index = 0; index < objectArr.length; index++) {\r\n const element = objectArr[index];\r\n let key, keys = Object.keys(element);\r\n let n = keys.length;\r\n let newObject = {}\r\n while (n--) {\r\n key = keys[n];\r\n let Okey = key\r\n newObject[key.charAt(0).toUpperCase() + Okey.slice(1)] = element[key];\r\n }\r\n let finalObject = newObject as T\r\n originalArray.push(finalObject)\r\n }\r\n\r\n return originalArray;\r\n }\r\n\r\n setText(pagesNumber: number, itemsNumber: number) {\r\n if (this.utilityService.isCurrentLanguageArabic()) {\r\n //Set pages text\r\n if (pagesNumber < 3 || pagesNumber > 10)\r\n this.pagesText = this.utilityService.getResourceValue(\"Page\");\r\n else\r\n this.pagesText = this.utilityService.getResourceValue(\"Pages\");\r\n //Set items text\r\n if (itemsNumber < 3 || itemsNumber > 10)\r\n this.itemsText = this.utilityService.getResourceValue(\"Item\");\r\n else\r\n this.itemsText = this.utilityService.getResourceValue(\"Items\");\r\n }\r\n else {\r\n //Set pages text\r\n if (pagesNumber > 1)\r\n this.pagesText = this.utilityService.getResourceValue(\"Pages\");\r\n else\r\n this.pagesText = this.utilityService.getResourceValue(\"Page\");\r\n //Set items text\r\n if (itemsNumber > 1)\r\n this.itemsText = this.utilityService.getResourceValue(\"Items\");\r\n else\r\n this.itemsText = this.utilityService.getResourceValue(\"Item\");\r\n }\r\n }\r\n\r\n clearFilters() {\r\n if (this.options.Filters != null && this.options.Filters != []) {\r\n for (let index = 0; index < this.options.Filters.length; index++) {\r\n if (this.options.Filters[index].FormControlName != null && this.options.Filters[index].FormControlName != \"\") {\r\n const FormControlName = this.options.Filters[index].FormControlName;\r\n this.group.controls[FormControlName].setValue(null);\r\n }\r\n }\r\n this.ReinitializePaging();\r\n }\r\n }\r\n\r\n getFiltersValue() {\r\n let filters = {};\r\n if (this.options.Filters != null && this.options.Filters != []) {\r\n for (let index = 0; index < this.options.Filters.length; index++) {\r\n if (this.options.Filters[index].FormControlName != null && this.options.Filters[index].FormControlName != \"\") {\r\n const FormControlName = this.options.Filters[index].FormControlName;\r\n let ControlValue = this.group.controls[FormControlName].value;\r\n if (ControlValue != undefined && ControlValue != null && ControlValue != \"\") {\r\n if (this.options.Filters[index].FilterType == FilterType.DatePicker) {\r\n //if (Array.isArray(ControlValue)) {\r\n // for (let element = 0; element < ControlValue.length; element++) {\r\n // const value = ControlValue[element];\r\n // filters[this.options.Filters[index].ActionParameterName] = value;\r\n // }\r\n //}\r\n //else {\r\n filters[this.options.Filters[index].ActionParameterName] = ControlValue;\r\n //}\r\n }\r\n else {\r\n if (this.options.Filters[index].FilterType == FilterType.AutocompleteTextBox)\r\n ControlValue = ControlValue;\r\n if (this.options.Filters[index].FilterType == FilterType.TagInput)\r\n ControlValue = ControlValue;\r\n\r\n filters[this.options.Filters[index].ActionParameterName] = ControlValue;\r\n }\r\n }\r\n else {\r\n filters[this.options.Filters[index].ActionParameterName] = null;\r\n }\r\n }\r\n else {\r\n const ElementjQuerySelector = this.options.Filters[index].jQuerySelector;\r\n let ElementValue = (document.querySelector(ElementjQuerySelector) as HTMLInputElement).value;\r\n if (ElementValue != undefined && ElementValue != null)\r\n filters[this.options.Filters[index].ActionParameterName] = ElementValue;\r\n else\r\n filters[this.options.Filters[index].ActionParameterName] = null;\r\n }\r\n }\r\n }\r\n return filters;\r\n }\r\n}\r\n","import { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'jw-pagination',\r\n template: `\r\n <ul *ngIf=\"pager.pages && pager.pages.length\" class=\"pagination\">\r\n <li *ngIf=\"ShowFirstAndLast\" [ngClass]=\"{disabled:pager.currentPage === 1}\" class=\"page-item first-item\">\r\n <a (click)=\"setPage(1)\" class=\"page-link\">❮❮</a>\r\n </li>\r\n <li [ngClass]=\"{disabled:pager.currentPage === 1}\" class=\"page-item previous-item\">\r\n <a (click)=\"setPage(pager.currentPage - 1)\" class=\"page-link\">❮</a>\r\n </li>\r\n <li *ngFor=\"let page of pager.pages\" [ngClass]=\"{active:pager.currentPage === page}\" class=\"page-item number-item\">\r\n <a (click)=\"setPage(page)\" class=\"page-link\">{{page}}</a>\r\n </li>\r\n <li [ngClass]=\"{disabled:pager.currentPage === pager.totalPages}\" class=\"page-item next-item\">\r\n <a (click)=\"setPage(pager.currentPage + 1)\" class=\"page-link\">❯</a>\r\n </li>\r\n <li *ngIf=\"ShowFirstAndLast\" [ngClass]=\"{disabled:pager.currentPage === pager.totalPages}\" class=\"page-item last-item\">\r\n <a (click)=\"setPage(pager.totalPages)\" class=\"page-link\">❯❯</a>\r\n </li>\r\n</ul>\r\n`\r\n})\r\n\r\nexport class JwPaginationComponent implements OnInit, OnChanges {\r\n @Input() items: Array<any>;\r\n @Output() changePage = new EventEmitter();\r\n @Input() initialPage = 1;\r\n @Input() pageSize = 10;\r\n @Input() maxPages = 10;\r\n @Input() ShowFirstAndLast = false;\r\n\r\n\r\n pager: any = {};\r\n\r\n ngOnInit() {\r\n // set page if items array isn't empty\r\n if (this.items && this.items.length) {\r\n this.setPage(this.initialPage);\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.items.firstChange)\r\n return\r\n // reset page if items array has changed\r\n if (changes.items.currentValue !== changes.items.previousValue) {\r\n this.setPage(this.initialPage);\r\n }\r\n }\r\n\r\n setPage(page: number) {\r\n // get new pager object for specified page\r\n this.pager = this.paginate(this.items.length, page, this.pageSize, this.maxPages);\r\n\r\n // get new page of items from items array\r\n var pageOfItems = this.items.slice(this.pager.startIndex, this.pager.endIndex + 1);\r\n\r\n // call change page function in parent component\r\n this.changePage.emit(this.pager.currentPage);\r\n }\r\n\r\n paginate(totalItems, currentPage, pageSize, maxPages) {\r\n if (currentPage === void 0) { currentPage = 1; }\r\n if (pageSize === void 0) { pageSize = 10; }\r\n if (maxPages === void 0) { maxPages = 10; }\r\n // calculate total pages\r\n var totalPages = Math.ceil(totalItems / pageSize);\r\n // ensure current page isn't out of range\r\n if (currentPage < 1) {\r\n currentPage = 1;\r\n }\r\n else if (currentPage > totalPages) {\r\n currentPage = totalPages;\r\n }\r\n var startPage, endPage;\r\n if (totalPages <= maxPages) {\r\n // total pages less than max so show all pages\r\n startPage = 1;\r\n endPage = totalPages;\r\n }\r\n else {\r\n // total pages more than max so calculate start and end pages\r\n var maxPagesBeforeCurrentPage = Math.floor(maxPages / 2);\r\n var maxPagesAfterCurrentPage = Math.ceil(maxPages / 2) - 1;\r\n if (currentPage <= maxPagesBeforeCurrentPage) {\r\n // current page near the start\r\n startPage = 1;\r\n endPage = maxPages;\r\n }\r\n else if (currentPage + maxPagesAfterCurrentPage >= totalPages) {\r\n // current page near the end\r\n startPage = totalPages - maxPages + 1;\r\n endPage = totalPages;\r\n }\r\n else {\r\n // current page somewhere in the middle\r\n startPage = currentPage - maxPagesBeforeCurrentPage;\r\n endPage = currentPage + maxPagesAfterCurrentPage;\r\n }\r\n }\r\n // calculate start and end item indexes\r\n var startIndex = (currentPage - 1) * pageSize;\r\n var endIndex = Math.min(startIndex + pageSize - 1, totalItems - 1);\r\n // create an array of pages to ng-repeat in the pager control\r\n var pages = Array.from(Array((endPage + 1) - startPage).keys()).map(function (i) { return startPage + i; });\r\n // return object with all pager properties required by the view\r\n return {\r\n totalItems: totalItems,\r\n currentPage: currentPage,\r\n pageSize: pageSize,\r\n totalPages: totalPages,\r\n startPage: startPage,\r\n endPage: endPage,\r\n startIndex: startIndex,\r\n endIndex: endIndex,\r\n pages: pages\r\n };\r\n }\r\n\r\n}","import { Component, OnInit, Input, Optional, Output, EventEmitter } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, AbstractControl, ControlContainer, FormGroupDirective } from '@angular/forms';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { RadioButtonOptions } from '../../Shared/Models/RadioButtonOptions';\r\nimport { ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n // tslint:disable-next-line: component-selector\r\n selector: 'BBSF-RadioButton',\r\n templateUrl: './RadioButton.component.html'\r\n})\r\nexport class RadioButtonComponent implements OnInit {\r\n\r\n\r\n static controlContainerstatic = null;\r\n // tslint:disable-next-line: max-line-length\r\n constructor(private controlUtility: ControlUtility, @Optional() private controlContainer: ControlContainer,\r\n public RadioButtonControlHost: FormGroupDirective, private UtilityService: UtilityService,\r\n private controlValidationService: ControlValidationService, private globalSettings: GlobalSettings) {\r\n RadioButtonComponent.controlContainerstatic = this.controlContainer;\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: RadioButtonOptions;\r\n @Output() OnChange = new EventEmitter();\r\n\r\n RadioButtonFormControl: AbstractControl;\r\n markAllAsTouched: boolean = false;\r\n validationRules = [];\r\n validationRulesasync = [];\r\n ngOnInit() {\r\n\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.RadioButtonFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n }\r\n this.RadioButtonFormControl.setValidators(this.validationRules);\r\n this.RadioButtonFormControl.setAsyncValidators(this.validationRulesasync);\r\n if (this.options.IsDisabled) {\r\n this.RadioButtonFormControl.disable();\r\n }\r\n\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\")\r\n this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);\r\n\r\n\r\n this.RadioButtonControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n })\r\n\r\n if (this.options.Value) {\r\n this.RadioButtonFormControl.setValue(this.options.Value.Value);\r\n }\r\n\r\n }\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n\r\n onValueChanged() {\r\n let originalValue = this.RadioButtonFormControl.value;\r\n if (this.options.PatchFunction && this.options.PatchPath && this.RadioButtonFormControl.valid) {\r\n this.controlUtility.patchControlValue(originalValue,this.options.PatchFunction ,this.options.PatchPath)\r\n }\r\n //Use this line to enable two way binding.\r\n this.options.Value= originalValue;\r\n this.OnChange.emit(originalValue)\r\n }\r\n\r\n getSelectedItemValue(value)\r\n {\r\n return this.options.Items.filter(item=>item.Value==value)[0].Text\r\n }\r\n\r\n //External Method\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(this.RadioButtonFormControl, this.validationRules, this.options)\r\n }\r\n //External Method\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(this.RadioButtonFormControl, this.validationRules, this.options)\r\n }\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(this.RadioButtonFormControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(this.RadioButtonFormControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.RadioButtonFormControl)\r\n }\r\n}\r\n\r\n\r\n","export enum LanguageValidation {\r\n English = 1,\r\n Arabic = 2\r\n }","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n Optional,\r\n Output,\r\n EventEmitter,\r\n} from '@angular/core';\r\nimport {\r\n FormControl,\r\n Validators,\r\n FormGroup,\r\n AbstractControl,\r\n ControlContainer,\r\n FormGroupDirective,\r\n} from '@angular/forms';\r\nimport { TextBoxOptions } from '../../Shared/Models/TextBoxOptions';\r\nimport { InputType } from '../../Shared/Enums/InputType';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport {\r\n ControlValidationService,\r\n UtilityService,\r\n} from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\nimport { LanguageValidation } from '../../Shared/Enums/LanguageValidation';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'BBSF-TextBox',\r\n templateUrl: './TextBox.component.html',\r\n})\r\nexport class TextboxComponent implements OnInit {\r\n static controlContainerstatic = null;\r\n // tslint:disable-next-line: max-line-length\r\n constructor(\r\n private controlUtility: ControlUtility,\r\n @Optional() private controlContainer: ControlContainer,\r\n public TextControlHost: FormGroupDirective,\r\n public UtilityService: UtilityService,\r\n private controlValidationService: ControlValidationService,\r\n private globalSettings: GlobalSettings\r\n ) {\r\n TextboxComponent.controlContainerstatic = this.controlContainer;\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: TextBoxOptions;\r\n @Output() OnChange = new EventEmitter();\r\n @Output() OnBlur = new EventEmitter();\r\n\r\n public inputType = InputType\r\n TextBoxFormControl: AbstractControl;\r\n MaskPattern: string = '';\r\n WordCount: number = 0;\r\n WordCountArray: number = 0;\r\n EmailValidationKey: string;\r\n URLValidationKey: string;\r\n PasswordComplexityHasNumber: string;\r\n ArabicLetterOnly: string;\r\n EnglishLetterOnly: string;\r\n PasswordComplexityHasCapitalLetter: string;\r\n PasswordComplexityHasSmallLetter: string;\r\n PasswordComplexityHasSpecialLetter: string;\r\n MaxWordCountValidationKey: string;\r\n IsShowWordCount: boolean = false;\r\n markAllAsTouched: boolean = false;\r\n validationRules = [];\r\n validationRulesasync = [];\r\n //For Show warning message of max length limit\r\n currentCharsCount: number = 0;\r\n showCharsLimitMsg: boolean = false;\r\n hasCharsLimitValidationError: boolean = false;\r\n charsLimitMsgClass: string;\r\n minCharsLimit: number = -1; //To disable chars limit feature by default\r\n maxLimitWarningMsg: string = '';\r\n textDir;\r\n ngOnInit() {\r\n if (this.options.IsReadonly && !this.options.Value) {\r\n this.options.Value = this.UtilityService.getResourceValue('NA');\r\n }\r\n if (this.options.ForceDirection)\r\n this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';\r\n else\r\n this.textDir = localStorage.getItem('language') == 'ar' ? 'rtl' : 'ltr';\r\n\r\n this.controlValidationService.isCreatedBefor = false;\r\n\r\n if (!this.options.MaxLength)\r\n this.options.MaxLength = this.globalSettings.MaxLengthTextBox;\r\n\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n if (this.options.MaskPattern != null && this.options.MaskPattern != '') {\r\n this.MaskPattern = this.options.MaskPattern;\r\n this.options.Placeholder = this.MaskPattern;\r\n }\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.TextBoxFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n this.TextBoxFormControl.setValue(this.options.Value);\r\n\r\n if (this.options.LabelKey != null && this.options.LabelKey != '')\r\n this.options.LabelValue = this.UtilityService.getResourceValue(\r\n this.options.LabelKey\r\n );\r\n\r\n this.getCustomErrorsMassages();\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n }\r\n switch (this.options.Type) {\r\n case InputType.Email:\r\n this.validationRules.push(\r\n Validators.compose([\r\n this.controlUtility.patternValidator(\r\n /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\r\n { EmailValidationKey: this.EmailValidationKey }\r\n ),\r\n ])\r\n );\r\n break;\r\n\r\n case InputType.URL:\r\n const pattern = /^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]!\\$&'\\(\\)\\*\\+,;=.]+$/;\r\n this.validationRules.push(\r\n Validators.compose([\r\n this.controlUtility.patternValidator(\r\n pattern,\r\n { URLValidationKey: this.URLValidationKey }\r\n ),\r\n ])\r\n );\r\n break;\r\n case InputType.EID:\r\n this.MaskPattern = '000-0000-0000000-0';\r\n this.options.Placeholder = this.MaskPattern;\r\n\r\n break;\r\n\r\n case InputType.Number:\r\n if (this.options.CustomValidation.length == 0) {\r\n this.validationRules.push(\r\n Validators.compose([\r\n this.controlUtility.patternValidator(/^[0-9]*$/, {\r\n IntegerNumberValidationKey: '',\r\n }),\r\n ])\r\n );\r\n this.validationRules.push(\r\n Validators.compose([\r\n this.controlUtility.patternValidator(\r\n /^[+]?([.]\\d+|\\d+[.]?\\d*)$/,\r\n { PositiveNumberValidationKey: '' }\r\n ),\r\n ])\r\n );\r\n }\r\n if (this.options.NumberRange != null) {\r\n this.validationRules.push(\r\n Validators.min(this.options.NumberRange.From)\r\n );\r\n this.validationRules.push(\r\n Validators.max(this.options.NumberRange.To)\r\n );\r\n }\r\n break;\r\n case InputType.Password:\r\n if (!this.options.RemoveDefaultPasswordValidation) {\r\n this.validationRules.push(\r\n Validators.compose([\r\n this.controlUtility.patternValidator(/\\d/, {\r\n PasswordComplexityHasNumber: this.PasswordComplexityHasNumber,\r\n }),\r\n this.controlUtility.patternValidator(/[A-Z]/, {\r\n PasswordComplexityHasCapitalLetter:\r\n this.PasswordComplexityHasCapitalLetter,\r\n }),\r\n this.controlUtility.patternValidator(/[a-z]/, {\r\n PasswordComplexityHasSmallLetter:\r\n this.PasswordComplexityHasSmallLetter,\r\n }),\r\n this.controlUtility.patternValidator(/[!@#$%^&*(),.?\":{}|<>]/, {\r\n PasswordComplexityHasSpecialLetter:\r\n this.PasswordComplexityHasSpecialLetter,\r\n }),\r\n Validators.minLength(8),\r\n ])\r\n );\r\n }\r\n break;\r\n }\r\n if (this.options.LanguageValidation) {\r\n if (this.options.LanguageValidation == LanguageValidation.Arabic) {\r\n this.validationRules.push(\r\n Validators.compose([\r\n this.controlUtility.patternValidator(/^[^A-Za-z]*$/, {\r\n ArabicLetterOnly: this.ArabicLetterOnly,\r\n }),\r\n ])\r\n );\r\n } else if (\r\n this.options.LanguageValidation == LanguageValidation.English\r\n ) {\r\n this.validationRules.push(\r\n Validators.compose([\r\n this.controlUtility.patternValidator(\r\n /^[~`!@#$%^&*()‘’“”_+=[\\]\\\\{}|;':\",.\\/<>?a-zA-Z0-9- ]*$/,\r\n { EnglishLetterOnly: this.EnglishLetterOnly }\r\n ),\r\n ])\r\n );\r\n }\r\n }\r\n\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation;\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.validationRules.push(Validation.functionBody);\r\n }\r\n }\r\n if (this.options.MinLength > 0) {\r\n this.validationRules.push(Validators.minLength(this.options.MinLength));\r\n }\r\n if (this.options.MaxLength > 0) {\r\n this.validationRules.push(Validators.maxLength(this.options.MaxLength));\r\n\r\n if (!this.options.MaxLengthWarningLimit)\r\n this.options.MaxLengthWarningLimit =\r\n this.globalSettings.MaxLengthWarningLimit;\r\n\r\n this.minCharsLimit =\r\n this.options.MaxLength - this.options.MaxLengthWarningLimit;\r\n }\r\n this.TextBoxFormControl.setValidators(this.validationRules);\r\n this.TextBoxFormControl.setAsyncValidators(this.validationRulesasync);\r\n if (this.options.IsDisabled) {\r\n this.TextBoxFormControl.disable();\r\n }\r\n\r\n this.TextControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched();\r\n this.markAllAsTouched = true;\r\n });\r\n\r\n this.options.ValidationRules = this.validationRules;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.controlUtility.setAttributeForControl(this.options);\r\n }\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n };\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError();\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError();\r\n this.markAllAsTouched = false;\r\n }\r\n\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n\r\n getInputType(type: number) {\r\n return this.controlUtility.getInputType(type);\r\n }\r\n\r\n trimControlValue() {\r\n let originalValue = this.controlUtility.trimControlValue(\r\n this.TextBoxFormControl.value\r\n );\r\n this.TextBoxFormControl.patchValue(originalValue);\r\n if (\r\n this.options.PatchFunction &&\r\n this.options.PatchPath &&\r\n this.TextBoxFormControl.valid\r\n ) {\r\n this.controlUtility.patchControlValue(\r\n originalValue,\r\n this.options.PatchFunction,\r\n this.options.PatchPath\r\n );\r\n }\r\n }\r\n\r\n copyInputMessage(inputElement) {\r\n this.controlUtility.CopyInputMessage(inputElement);\r\n }\r\n\r\n getCustomErrorsMassages() {\r\n this.EmailValidationKey =\r\n this.UtilityService.getResourceValue('EmailValidationKey');\r\n this.URLValidationKey =\r\n this.UtilityService.getResourceValue('urlValidationError');\r\n this.PasswordComplexityHasCapitalLetter =\r\n this.UtilityService.getResourceValue(\r\n 'PasswordComplexityHasCapitalLetter'\r\n );\r\n this.PasswordComplexityHasNumber = this.UtilityService.getResourceValue(\r\n 'PasswordComplexityHasNumber'\r\n );\r\n this.PasswordComplexityHasSmallLetter =\r\n this.UtilityService.getResourceValue('PasswordComplexityHasSmallLetter');\r\n this.PasswordComplexityHasSpecialLetter =\r\n this.UtilityService.getResourceValue(\r\n 'PasswordComplexityHasSpecialLetter'\r\n );\r\n this.MaxWordCountValidationKey = this.UtilityService.getResourceValue(\r\n 'MaxWordCountValidationKey'\r\n );\r\n this.ArabicLetterOnly = this.UtilityService.getResourceValue(\r\n 'ArabicIsRequiredAndOnly50CharactersEnglish'\r\n );\r\n this.EnglishLetterOnly =\r\n this.UtilityService.getResourceValue('EnglishLetterOnly');\r\n }\r\n\r\n onTextChange() {\r\n if (this.options.Type == InputType.Number)\r\n if (!this.TextBoxFormControl.value) {\r\n this.TextBoxFormControl.setErrors({ IntegerNumberValidationKey: '' });\r\n return;\r\n }\r\n\r\n if (this.TextBoxFormControl.value == '') {\r\n this.WordCountArray = 0;\r\n this.WordCount = 0;\r\n } else {\r\n this.WordCountArray = this.TextBoxFormControl.value.split(' ').length;\r\n if (this.WordCountArray > 0) {\r\n if (this.WordCountArray > this.options.MaxWordCount) {\r\n this.WordCount = this.options.MaxWordCount;\r\n this.TextBoxFormControl.setErrors({\r\n MaxWordCountValidationKey: this.options.MaxWordCount,\r\n });\r\n this.TextBoxFormControl.markAsTouched();\r\n this.TextBoxFormControl.invalid;\r\n } else {\r\n this.WordCount = this.WordCountArray;\r\n }\r\n }\r\n //Check for maxlength limit count\r\n //MaxLength should be gretaer than or equals chars limit so that minCharsLimit would be >= 0\r\n if (this.options.MaxLength && this.minCharsLimit >= 0) {\r\n this.currentCharsCount = this.TextBoxFormControl.value.length;\r\n if (this.currentCharsCount > this.minCharsLimit) {\r\n this.showCharsLimitMsg = true;\r\n this.hasCharsLimitValidationError = true;\r\n if (this.currentCharsCount == this.options.MaxLength)\r\n this.charsLimitMsgClass = 'danger';\r\n else this.charsLimitMsgClass = 'warning';\r\n } else {\r\n this.showCharsLimitMsg = false;\r\n this.hasCharsLimitValidationError = false;\r\n }\r\n var max: number = this.options.MaxLength;\r\n var current: number = this.currentCharsCount;\r\n\r\n var resource = this.UtilityService.getResourceValue(\r\n 'MaxLengthLimitWarning'\r\n );\r\n this.maxLimitWarningMsg = eval('`' + resource + '`');\r\n }\r\n }\r\n\r\n this.OnChange.emit(this.TextBoxFormControl.value);\r\n }\r\n\r\n onFocus(isFocus: boolean) {\r\n this.IsShowWordCount = isFocus;\r\n\r\n //onFocus\r\n if (isFocus) {\r\n if (this.hasCharsLimitValidationError)\r\n //check if there was previous validation error\r\n this.showCharsLimitMsg = true;\r\n } //onFocusOut\r\n else this.showCharsLimitMsg = false;\r\n }\r\n //External Method\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(\r\n this.TextBoxFormControl,\r\n this.validationRules,\r\n this.options\r\n );\r\n };\r\n //External Method\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(\r\n this.TextBoxFormControl,\r\n this.validationRules,\r\n this.options\r\n );\r\n };\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(\r\n this.TextBoxFormControl,\r\n this.validationRules,\r\n CustomValidation\r\n );\r\n };\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(\r\n this.TextBoxFormControl,\r\n this.validationRules,\r\n CustomValidation\r\n );\r\n };\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.TextBoxFormControl);\r\n };\r\n\r\n onTextBlur() {\r\n this.OnBlur.emit(this.TextBoxFormControl.value);\r\n }\r\n}\r\n","export class MapAutocompleteDTO\r\n{\r\n Text:string= null;\r\n Latitude:number;\r\n Longitude:number;\r\n PlaceID :string;\r\n GoogleMapsURL:string\r\n}","declare const google: any\r\nimport { Component, OnInit, Input, Optional, NgZone, ElementRef, ViewChild, EventEmitter, Output } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, AbstractControl, ControlContainer, FormGroupDirective } from '@angular/forms';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { MapAutoCompleteOptions } from '../../Shared/Models/MapAutoCompleteOptions';\r\nimport { MapAutocompleteDTO } from '../../Shared/Models/MapAutocompleteDTO';\r\nimport { MatGoogleMapsAutocompleteComponent } from '@angular-material-extensions/google-maps-autocomplete';\r\nimport { MapsAPILoader, LazyMapsAPILoader } from '@agm/core';\r\nimport { BBSFTranslateService, ControlValidationService, environment, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'BBSF-MapAutoComplete',\r\n templateUrl: './MapAutoComplete.component.html'\r\n})\r\n\r\nexport class MapAutoCompleteComponent implements OnInit {\r\n\r\n\r\n static controlContainerstatic = null;\r\n constructor(private mapsAPILoader: MapsAPILoader,\r\n private ngZone: NgZone, private controlUtility: ControlUtility, @Optional() private controlContainer: ControlContainer,\r\n public MapAutoCompleteControlHost: FormGroupDirective, private UtilityService: UtilityService, private translate: BBSFTranslateService,\r\n private controlValidationService: ControlValidationService, private globalSettings: GlobalSettings) {\r\n MapAutoCompleteComponent.controlContainerstatic = this.controlContainer;\r\n this.CurrentLanguage = translate.currentLang != undefined ? translate.currentLang : translate.defaultLang\r\n\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: MapAutoCompleteOptions;\r\n @Output() OnChange = new EventEmitter();\r\n\r\n MapAutoCompleteFormControl: AbstractControl;\r\n MapAutoCompleteModel: MapAutocompleteDTO = new MapAutocompleteDTO();\r\n CurrentLanguage: string = \"\";\r\n onAutocompleteSelected = new EventEmitter();\r\n onGermanAddressMapped = new EventEmitter();\r\n onLocationSelected = new EventEmitter();\r\n @ViewChild(\"search\", { static: false })\r\n public searchElementRef: ElementRef;\r\n MatGoogleMapsAutocompleteComponent: MatGoogleMapsAutocompleteComponent\r\n LazyMapsAPILoader: LazyMapsAPILoader\r\n markAllAsTouched: boolean = false;\r\n validationRules = [];\r\n validationRulesasync = [];\r\n place: any;\r\n ngOnInit() {\r\n this.controlValidationService.isCreatedBefor = false\r\n\r\n this.MapAutoCompleteModel = new MapAutocompleteDTO();\r\n this.translate.onLangChange.subscribe((event) => {\r\n this.CurrentLanguage = event.lang;\r\n ;\r\n if (this.CurrentLanguage == 'ar')\r\n this.mapsAPILoader[\"_config\"][\"localeId\"] = \"ar-EG\";\r\n if (this.CurrentLanguage == 'en')\r\n this.mapsAPILoader[\"_config\"][\"localeId\"] = \"en-US\";\r\n this.mapsAPILoader[\"_scriptLoadingPromise\"] = null\r\n this.mapsAPILoader[\"_config\"][\"apiKey\"] = `${environment.BBSF_GoogleMapKey}&language=${this.CurrentLanguage}`;\r\n var ScriptTag = document.getElementById(this.mapsAPILoader[\"_SCRIPT_ID\"]);\r\n if (ScriptTag)\r\n ScriptTag.remove();\r\n var elements = document.getElementsByClassName(\"pac-container\");\r\n while (elements.length > 0)\r\n elements[0].remove();\r\n\r\n let window = this.mapsAPILoader[\"_windowRef\"].getNativeWindow();\r\n window.google = null\r\n\r\n\r\n\r\n this.LazyMapsAPILoader = new LazyMapsAPILoader({\r\n // &language=${UtilityService.CurrentLanguage}\r\n apiKey: `${environment.BBSF_GoogleMapKey}&language=${this.CurrentLanguage}`,\r\n libraries: ['places'],\r\n }, this.mapsAPILoader[\"_windowRef\"], this.mapsAPILoader[\"_documentRef\"], this.mapsAPILoader[\"_config\"][\"localeId\"]);\r\n this.LazyMapsAPILoader.load().then(() => {\r\n let autocomplete = new google.maps.places.Autocomplete(this.searchElementRef.nativeElement, {\r\n types: [\"address\"]\r\n\r\n });\r\n autocomplete.addListener('place_changed', (/**\r\n * @return {?}\r\n */\r\n () => {\r\n\r\n this.ngZone.run((/**\r\n * @return {?}\r\n */\r\n () => {\r\n // get the place result\r\n /** @type {?} */\r\n const place = autocomplete.getPlace();\r\n /** @type {?} */\r\n const germanAddress = {\r\n gmID: place.id,\r\n icon: place.icon,\r\n url: place.url,\r\n placeID: place.place_id,\r\n displayAddress: place.formatted_address,\r\n name: place.name,\r\n vicinity: place.vicinity,\r\n locality: {},\r\n state: {},\r\n country: {},\r\n geoLocation: { latitude: -1, longitude: -1 },\r\n };\r\n\r\n if (place.geometry && place.geometry.location) {\r\n germanAddress.geoLocation.latitude = place.geometry.location.lat();\r\n germanAddress.geoLocation.longitude = place.geometry.location.lng();\r\n }\r\n place.address_components.forEach((/**\r\n * @param {?} value\r\n * @return {?}\r\n */\r\n value => {\r\n if (value.types.indexOf('street_number') > -1) {\r\n germanAddress[\"streetNumber\"] = value.short_name;\r\n }\r\n if (value.types.indexOf('route') > -1) {\r\n germanAddress[\"streetName\"] = value.long_name;\r\n }\r\n if (value.types.indexOf('postal_code') > -1) {\r\n germanAddress[\"postalCode\"] = Number(value.short_name);\r\n }\r\n if (value.types.indexOf('sublocality') > -1) {\r\n germanAddress[\"sublocality\"] = value.long_name;\r\n }\r\n if (value.types.indexOf('locality') > -1) {\r\n germanAddress.locality[\"long\"] = value.long_name;\r\n germanAddress.locality[\"short\"] = value.short_name;\r\n }\r\n if (value.types.indexOf('administrative_area_level_1') > -1) {\r\n germanAddress.state[\"long\"] = value.long_name;\r\n germanAddress.state[\"short\"] = value.short_name;\r\n }\r\n if (value.types.indexOf('country') > -1) {\r\n germanAddress.country[\"long\"] = value.long_name;\r\n germanAddress.country[\"short\"] = value.short_name;\r\n }\r\n if (value.types.indexOf('administrative_area_level_3') > -1) {\r\n germanAddress.locality[\"short\"] = value.short_name;\r\n }\r\n }));\r\n\r\n this.onGermanAddressMapped.emit(germanAddress);\r\n this.GermanAddressMapped(germanAddress)\r\n if (!place.place_id || place.geometry === undefined || place.geometry === null) {\r\n // place result is not valid\r\n return;\r\n }\r\n else {\r\n // show dialog to select a address from the input\r\n // emit failed event\r\n }\r\n // this.address = place.formatted_address;\r\n this.onAutocompleteSelected.emit(place);\r\n this.AutocompleteSelected(place)\r\n\r\n this.onLocationSelected.emit({\r\n latitude: place.geometry.location.lat(),\r\n longitude: place.geometry.location.lng()\r\n });\r\n }));\r\n }));\r\n });\r\n\r\n });\r\n\r\n if (this.CurrentLanguage == 'ar')\r\n this.mapsAPILoader[\"_config\"][\"localeId\"] = \"ar-EG\";\r\n if (this.CurrentLanguage == 'en')\r\n this.mapsAPILoader[\"_config\"][\"localeId\"] = \"en-US\";\r\n this.mapsAPILoader[\"_scriptLoadingPromise\"] = null\r\n this.mapsAPILoader[\"_config\"][\"apiKey\"] = `${environment.BBSF_GoogleMapKey}&language=${this.CurrentLanguage}`;\r\n var leftSection = document.getElementById(this.mapsAPILoader[\"_SCRIPT_ID\"]);\r\n if (leftSection)\r\n leftSection.remove();\r\n this.LazyMapsAPILoader = new LazyMapsAPILoader({\r\n apiKey: `${environment.BBSF_GoogleMapKey}&language=${this.CurrentLanguage}`,\r\n libraries: ['places'],\r\n }, this.mapsAPILoader[\"_windowRef\"], this.mapsAPILoader[\"_documentRef\"], this.mapsAPILoader[\"_config\"][\"localeId\"]);\r\n this.LazyMapsAPILoader.load();\r\n\r\n this.mapsAPILoader.load().then(() => {\r\n let autocomplete = new google.maps.places.Autocomplete(this.searchElementRef.nativeElement, {\r\n types: [\"address\"]\r\n\r\n });\r\n\r\n })\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.MapAutoCompleteFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n }\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\")\r\n this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);\r\n\r\n this.MapAutoCompleteFormControl.setValidators(this.validationRules);\r\n this.MapAutoCompleteFormControl.setAsyncValidators(this.validationRulesasync);\r\n if (this.options.IsDisabled) {\r\n this.MapAutoCompleteFormControl.disable();\r\n }\r\n if (this.options.Value != null) {\r\n let germanAddress = {\r\n\r\n url: this.options.Value.GoogleMapsURL,\r\n placeID: this.options.Value.PlaceID,\r\n displayAddress: this.options.Value.Text,\r\n name: this.options.Value.Text,\r\n locality: {},\r\n state: {},\r\n country: {},\r\n geoLocation: { latitude: -1, longitude: -1 },\r\n };\r\n\r\n germanAddress.geoLocation.latitude = this.options.Value.Latitude;\r\n germanAddress.geoLocation.longitude = this.options.Value.Longitude;\r\n this.onGermanAddressMapped.emit(germanAddress);\r\n this.GermanAddressMapped(germanAddress)\r\n this.place = {\r\n\r\n url: this.options.Value.GoogleMapsURL,\r\n place_id: this.options.Value.PlaceID,\r\n formatted_address: this.options.Value.Text,\r\n name: this.options.Value.Text,\r\n };\r\n this.onAutocompleteSelected.emit(this.place);\r\n this.AutocompleteSelected(this.place)\r\n\r\n this.onLocationSelected.emit({\r\n latitude: this.options.Value.Latitude,\r\n longitude: this.options.Value.Longitude\r\n });\r\n this.group.controls[this.options.Name].setValue(this.MapAutoCompleteModel)\r\n this.MapAutoCompleteFormControl.setValue(this.options.Value);\r\n }\r\n\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.validationRules.push(Validation.functionBody);\r\n }\r\n\r\n }\r\n\r\n\r\n this.MapAutoCompleteControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n })\r\n\r\n\r\n }\r\n ngAfterViewInit() {\r\n if (this.options.AttributeList != null) {\r\n var element = document.getElementById(this.options.Name);\r\n for (let index = 0; index < this.options.AttributeList.length; index++) {\r\n element.setAttribute(this.options.AttributeList[index].Key, this.options.AttributeList[index].value);\r\n }\r\n }\r\n var elementHTML = document.getElementById(this.options.Name) as any\r\n elementHTML.value = this.MapAutoCompleteModel.Text;\r\n }\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n\r\n AutocompleteSelected(result) {\r\n\r\n\r\n this.MapAutoCompleteModel == new MapAutocompleteDTO();\r\n this.MapAutoCompleteModel.Text = result.formatted_address;\r\n this.MapAutoCompleteModel.PlaceID = result.place_id;\r\n this.MapAutoCompleteModel.GoogleMapsURL = result.url;\r\n }\r\n LocationSelected(location) {\r\n\r\n this.MapAutoCompleteModel.Latitude = location.latitude;\r\n this.MapAutoCompleteModel.Longitude = location.longitude;\r\n this.MapAutoCompleteFormControl.setValue(null);\r\n\r\n this.MapAutoCompleteFormControl.setValue(this.MapAutoCompleteModel);\r\n let originalValue = this.MapAutoCompleteFormControl.value;\r\n if (this.options.PatchFunction && this.options.PatchPath && this.MapAutoCompleteFormControl.valid) {\r\n this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath)\r\n }\r\n //Use this line to enable two way binding.\r\n this.options.Value=this.MapAutoCompleteModel;\r\n }\r\n\r\n GermanAddressMapped(result) {\r\n if (result.type) {\r\n if (result.target.value == \"\") {\r\n this.MapAutoCompleteFormControl.setValue(result);\r\n this.group.controls[this.options.Name].setValue(result);\r\n this.options.Value=result;\r\n }\r\n return;\r\n }\r\n this.MapAutoCompleteModel == new MapAutocompleteDTO();\r\n this.MapAutoCompleteModel.Text = result.displayAddress;\r\n this.MapAutoCompleteModel.PlaceID = result.placeID;\r\n this.MapAutoCompleteModel.GoogleMapsURL = result.url;\r\n this.MapAutoCompleteModel.Latitude = result.geoLocation.latitude;\r\n this.MapAutoCompleteModel.Longitude = result.geoLocation.longitude;\r\n this.MapAutoCompleteFormControl.setValue(this.MapAutoCompleteModel);\r\n this.group.controls[this.options.Name].setValue(this.MapAutoCompleteModel)\r\n this.OnChange.emit(this.MapAutoCompleteFormControl.value)\r\n //Use this line to enable two way binding.\r\n this.options.Value=this.MapAutoCompleteModel;\r\n }\r\n\r\n //External Method\r\n\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(this.MapAutoCompleteFormControl, this.validationRules, this.options)\r\n }\r\n //External Method\r\n\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(this.MapAutoCompleteFormControl, this.validationRules, this.options)\r\n }\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(this.MapAutoCompleteFormControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(this.MapAutoCompleteFormControl, this.validationRules, CustomValidation)\r\n }\r\n\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.MapAutoCompleteFormControl)\r\n }\r\n}\r\n\r\n\r\n","\r\nexport enum CalendarView {\r\n Month = 1,\r\n Weekly = 2,\r\n Daily = 3,\r\n Agenda = 4\r\n }","import { FullCalendarComponent } from '@fullcalendar/angular';\r\nimport * as core from '@fullcalendar/core';\r\nimport dayGridPlugin from '@fullcalendar/daygrid';\r\nimport timeGrigPlugin from '@fullcalendar/timegrid';\r\nimport interactionPlugin from '@fullcalendar/interaction'; // for dateClick\r\nimport timeGridPlugin from '@fullcalendar/timegrid';\r\nimport listPlugin from '@fullcalendar/list';\r\nimport { Component, OnInit, Input, DoCheck, Optional, ViewChild } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, AbstractControl, ControlContainer, FormGroupDirective, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport { ErrorMassageValidation } from '../../Shared/services/validationErrorMassage.service';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { CalendarOptions } from '../../Shared/Models/CalendarOptions';\r\nimport { CalendarView } from '../../Shared/Enums/CalendarView';\r\n// import { CalendarOptions as CalendarOptionsModel, DateSelectArg, EventApi, EventClickArg } from '@fullcalendar/angular';\r\nimport enGbLocale from '@fullcalendar/core/locales/en-gb';\r\nimport ArLocale from '@fullcalendar/core/locales/ar';\r\nimport { LangChangeEvent } from '@ngx-translate/core';\r\nimport { BBSFTranslateService, ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';\r\n\r\n@Component({\r\n selector: 'BBSF-Calendar',\r\n templateUrl: './Calendar.component.html',\r\n styleUrls: ['./Calendar.component.scss']\r\n})\r\nexport class CalendarComponent implements OnInit {\r\n\r\n\r\n static controlContainerstatic = null;\r\n // tslint:disable-next-line: max-line-length\r\n constructor(private ErrorHandler: ErrorMassageValidation, private controlUtility: ControlUtility, @Optional() private controlContainer: ControlContainer, public PhoneControlHost: FormGroupDirective,private UtilityService:UtilityService,private translate: BBSFTranslateService,private controlValidationService:ControlValidationService) {\r\n CalendarComponent.controlContainerstatic = this.controlContainer;\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: CalendarOptions;\r\n CalendarFormControl: AbstractControl;\r\n @ViewChild('calendar', { static: false }) calendarComponent: FullCalendarComponent; // the #calendar in the template\r\n\r\n\r\n\r\n calendarVisible = true;\r\n calendarOptions: core.CalendarOptions;\r\n currentEvents: core.EventApi[] = [];\r\n calendarPlugins = [dayGridPlugin, timeGrigPlugin, interactionPlugin, listPlugin];\r\n calendarWeekends = true;\r\n calendarEvents: core.EventInput[] = [];\r\n DefaultView = \"\"\r\n CalendarViews = ''\r\n locales = [];\r\n CurrentLanguage = \"\"\r\n async ngOnInit() {\r\n switch (await this.UtilityService.getCurrentLanguage()) {\r\n case 'ar':\r\n this.locales = [ArLocale]\r\n this.CurrentLanguage = \"Ar\"\r\n break;\r\n case 'en':\r\n this.locales = [enGbLocale]\r\n this.CurrentLanguage = \"En\"\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n this.translate.onLangChange.subscribe((event: LangChangeEvent) => {\r\n switch (event.lang) {\r\n case 'ar':\r\n this.locales = [ArLocale]\r\n this.CurrentLanguage = \"Ar\"\r\n break;\r\n case 'en':\r\n this.locales = [enGbLocale]\r\n this.CurrentLanguage = \"En\"\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n });\r\n this.calendarEvents = this.options.EventList\r\n this.calendarWeekends = this.options.AllowCalendarWeekends\r\n switch (this.options.DefaultView) {\r\n case CalendarView.Month:\r\n this.DefaultView = \"dayGridMonth\"\r\n break;\r\n case CalendarView.Weekly:\r\n this.DefaultView = \"timeGridWeek\"\r\n break;\r\n case CalendarView.Daily:\r\n this.DefaultView = \"timeGridDay\"\r\n break;\r\n default:\r\n break;\r\n }\r\n if (this.options.CalendarViews != null && this.options.CalendarViews.length > 0)\r\n for (let index = 0; index < this.options.CalendarViews.length; index++) {\r\n const element = this.options.CalendarViews[index];\r\n switch (element) {\r\n case CalendarView.Agenda:\r\n this.CalendarViews += \"listWeek,\"\r\n break;\r\n case CalendarView.Daily:\r\n this.CalendarViews += \"timeGridDay,\"\r\n break;\r\n case CalendarView.Weekly:\r\n this.CalendarViews += \"timeGridWeek,\"\r\n break;\r\n case CalendarView.Month:\r\n this.CalendarViews += \"dayGridMonth,\"\r\n break;\r\n\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.CalendarFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n\r\n\r\n this.calendarOptions = {\r\n plugins: [\r\n dayGridPlugin,\r\n timeGridPlugin,\r\n listPlugin,\r\n interactionPlugin\r\n ],\r\n headerToolbar: {\r\n left: 'prev,next today',\r\n center: 'title',\r\n right: this.CalendarViews.substring(0, this.CalendarViews.length - 1)\r\n },\r\n locales: this.locales,\r\n locale: this.CurrentLanguage,\r\n initialView: this.CalendarViews.split(',')[0],\r\n initialEvents: this.calendarEvents,\r\n initialDate: this.options.DefaultDate,\r\n weekends: this.options.AllowCalendarWeekends,\r\n editable: this.options.Eventeditable,\r\n selectable: this.options.Eventselectable,\r\n // selectMirror: true,\r\n dayMaxEvents: this.options.dayMaxEvents,\r\n select: this.OnDayClickFunction.bind(this),\r\n eventClick: this.OnEventClickFunction.bind(this),\r\n // eventsSet: this.handleEvents.bind(this)\r\n /* you can update a remote database when these fire:\r\n eventAdd:\r\n eventChange:\r\n eventRemove:\r\n */\r\n };\r\n\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n\r\n\r\n }\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n getErrorValidation(Errorsitem: any[]) {\r\n }\r\n\r\n\r\n OnDayClickFunction(arg) {\r\n\r\n if (this.options.OnDayClickFunction != null) {\r\n let DayClickFunction = this.options.OnDayClickFunction;\r\n DayClickFunction(arg);\r\n }\r\n }\r\n\r\n OnEventClickFunction(arg) {\r\n if (this.options.OnEventClickFunction != null) {\r\n let EventClickFunction = this.options.OnEventClickFunction;\r\n EventClickFunction(arg.event);\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n // handleDateSelect(selectInfo: DateSelectArg) {\r\n // const title = prompt('Please enter a new title for your event');\r\n // const calendarApi = selectInfo.view.calendar;\r\n\r\n // calendarApi.unselect(); // clear date selection\r\n\r\n // if (title) {\r\n // calendarApi.addEvent({\r\n // id: \"1\",\r\n // title,\r\n // start: selectInfo.startStr,\r\n // end: selectInfo.endStr,\r\n // allDay: selectInfo.allDay\r\n // });\r\n // }\r\n // }\r\n\r\n // handleEventClick(clickInfo: EventClickArg) {\r\n // if (confirm(`Are you sure you want to delete the event '${clickInfo.event.title}'`)) {\r\n // clickInfo.event.remove();\r\n // }\r\n // }\r\n\r\n // handleEvents(events: EventApi[]) {\r\n // this.currentEvents = events;\r\n // }\r\n\r\n\r\n\r\n\r\n}\r\n\r\n\r\n","export enum PagingActionMode {\r\n Reinitialize ,\r\n Update\r\n}\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { NgbActiveModal, NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ControlValidationService, RequestOptionsModel, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { Observable } from 'rxjs';\r\nimport { PagingActionMode } from '../../Shared/Enums/PagingActionMode';\r\nimport { FormOptions } from '../../Shared/Models/FormOptions';\r\nimport { PagingComponent } from '../Paging/Paging.component';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n // tslint:disable-next-line: component-selector\r\n selector: 'BBSF-Form',\r\n templateUrl: './Form.component.html',\r\n})\r\nexport class FormComponent implements OnInit {\r\n\r\n fromName: string;\r\n isChange: boolean = null;\r\n @Output() OnChange = new EventEmitter();\r\n\r\n constructor(private controlUtility: ControlUtility, private utilityService: UtilityService, private controlValidationService: ControlValidationService, private modalService: NgbModal, private ngbActiveModal: NgbActiveModal, private router: Router,\r\n ) {\r\n }\r\n @Input() options: FormOptions;\r\n\r\n ngOnInit() {\r\n this.fromName = this.randomString(5)\r\n }\r\n ngAfterViewInit(): void {\r\n this.options.FormGroup.valueChanges.subscribe((es) => {\r\n this.OnChange.emit(true);\r\n\r\n });\r\n }\r\n\r\n submit() {\r\n this.options.FormGroup.markAllAsTouched()\r\n if (this.options.FormGroup.invalid) {\r\n this.showGlobalError();\r\n return\r\n }\r\n else {\r\n\r\n let submitModel = this.options.GetModelFunction() as any[]\r\n let submittedService = this.options.ServiceSubmitFunction.apply(null, submitModel) as Observable<any>\r\n submittedService.subscribe(\r\n (result) => {\r\n if (!this.options.DisableModalDismiss) {\r\n //Dismiss closest modal of the form only\r\n let modal = document.getElementById(this.fromName).closest('.modal.show');\r\n if (modal) {\r\n let closeButton = modal.querySelector(\"[data-dismiss='modal']\") as any\r\n closeButton.click();\r\n }\r\n }\r\n if (!this.options.DisableSuccessNotification)\r\n this.utilityService.notifySuccessMessage()\r\n if (this.options.OnSuccessHandler)\r\n this.options.OnSuccessHandler(result)\r\n if (!this.options.DisableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n if (this.options.PagingReference) {\r\n let paging = this.options.PagingReference;\r\n this.options.PagingActionMode == PagingActionMode.Reinitialize ? paging.ReinitializePaging() : paging.UpdatePaging();\r\n }\r\n }, (error) => {\r\n if (this.options.OnErrorHandler)\r\n this.options.OnErrorHandler(error)\r\n else\r\n this.handleError(error)\r\n })\r\n\r\n }\r\n\r\n }\r\n\r\n private handleError(err: HttpErrorResponse) {\r\n let errorMessage = '';\r\n if (err.error instanceof ErrorEvent) {\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n if (!this.options.DisableErrorNotification)\r\n this.utilityService.notifyErrorMessage()\r\n }\r\n else {\r\n this.controlValidationService.renderServerErrors(this.options.FormGroup, err, new RequestOptionsModel(), this.fromName)\r\n }\r\n if (!this.options.DisableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError(this.fromName)\r\n }\r\n randomString(length) {\r\n var randomChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\r\n var result = '';\r\n for (var i = 0; i < length; i++) {\r\n result += randomChars.charAt(Math.floor(Math.random() * randomChars.length));\r\n }\r\n return result;\r\n }\r\n\r\n\r\n}\r\n\r\n","export enum StyleConfirmationMode {\r\n Danger,\r\n Warning,\r\n Success\r\n}\r\n","import { Router } from '@angular/router';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { UtilityService } from '@bnsights/bbsf-utilities'\r\nimport { Observable } from 'rxjs';\r\nimport { PagingActionMode } from '../../Shared/Enums/PagingActionMode';\r\nimport { ConfirmationModalOptions } from '../../Shared/Models/ConfirmationModalOptions';\r\nimport Swal, { SweetAlertIcon } from 'sweetalert2';\r\nimport { StyleConfirmationMode } from '../../Shared/Enums/StyleConfirmationMode';\r\n\r\n@Component({\r\n templateUrl: 'ConfirmationModal.component.html',\r\n selector: 'BBSF-ConfirmationModal',\r\n})\r\nexport class ConfirmationModalComponent implements OnInit {\r\n @Input() options: ConfirmationModalOptions;\r\n styleDanger: StyleConfirmationMode = StyleConfirmationMode.Danger;\r\n styleWarning: StyleConfirmationMode = StyleConfirmationMode.Warning;\r\n styleSuccess: StyleConfirmationMode = StyleConfirmationMode.Success;\r\n @ViewChild('confirmationModal', { static: false }) confirmationModal: ElementRef;\r\n icon: SweetAlertIcon;\r\n btnColor: any;\r\n iconHtml: string;\r\n\r\n\r\n constructor(public utilityService: UtilityService, private modalService: NgbModal, private router: Router) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n //Method used to show confirmation modal\r\n showModal() {\r\n this.utilityService.startBlockUI()\r\n //check for options text values\r\n this.setTextValues();\r\n //sweetalert styles//\r\n switch (this.options.StyleConfirmationMode) {\r\n case this.styleSuccess: {\r\n this.icon = 'success'\r\n this.btnColor = '#50cd89'\r\n this.iconHtml = '<i class=\"fa fa-check\"></i>'\r\n break;\r\n }\r\n case this.styleWarning: {\r\n this.icon = 'warning'\r\n this.btnColor = '#ffc700'\r\n this.iconHtml = '<i class=\"fa fa-warning\"></i>'\r\n break;\r\n\r\n }\r\n case this.styleDanger: {\r\n this.icon = 'error'\r\n this.btnColor = '#f1416c'\r\n this.iconHtml = '<i class=\"fa fa-close\"></i>'\r\n break;\r\n\r\n }\r\n }\r\n Swal.fire({\r\n title: this.utilityService.getResourceValue(this.options.ConfirmationHeader),\r\n text: this.options.ConfirmationBody,\r\n icon: this.icon,\r\n iconColor: this.btnColor,\r\n confirmButtonColor: this.btnColor,\r\n cancelButtonColor: '#f5f8fa',\r\n cancelButtonText: this.utilityService.getResourceValue(\"CancelLabel\"),\r\n confirmButtonText: this.options.SubmitButtonText,\r\n showCancelButton: this.options.showCancelButton,\r\n showCloseButton: this.options.showCloseButton,\r\n allowOutsideClick: false\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.submit()\r\n }\r\n })\r\n this.utilityService.stopBlockUI()\r\n }\r\n private setTextValues() {\r\n if (!this.options.ConfirmationHeader)\r\n this.options.ConfirmationHeader = this.utilityService.getResourceValue(\"DeleteConfirmation\");\r\n if (!this.options.ConfirmationBody)\r\n this.options.ConfirmationBody = this.utilityService.getResourceValue(\"Delete_Question\");\r\n if (!this.options.SubmitButtonText)\r\n this.options.SubmitButtonText = this.utilityService.getResourceValue(\"Delete\");\r\n if (!this.options.SuccessNotificationMessage)\r\n this.options.SuccessNotificationMessage = this.utilityService.getResourceValue(\"DeletedSuccessfully\");\r\n }\r\n //Modal confirmation submit function\r\n submit() {\r\n let submitModel = this.options.ServiceSubmitModel;\r\n\r\n let submittedService = this.options.ServiceSubmitFunction.apply(null, submitModel) as Observable<any>\r\n submittedService.subscribe(\r\n (result) => {\r\n if (!this.options.DisableModalDismiss)\r\n this.modalService.dismissAll();\r\n\r\n if (!this.options.DisableSuccessNotification) {\r\n if (!this.options.SuccessNotificationMessage)\r\n this.options.SuccessNotificationMessage = this.utilityService.getResourceValue(\"DeletedSuccessfully\");\r\n this.utilityService.notifySuccessMessage(this.options.SuccessNotificationMessage)\r\n }\r\n if (this.options.OnSuccessHandler)\r\n this.options.OnSuccessHandler(result)\r\n if (this.options.PagingReference) {\r\n let paging = this.options.PagingReference;\r\n this.options.PagingActionMode == PagingActionMode.Reinitialize ? paging.ReinitializePaging() : paging.UpdatePaging();\r\n }\r\n this.utilityService.stopBlockUI();\r\n }, (error) => {\r\n if (this.options.OnErrorHandler)\r\n this.options.OnErrorHandler(error)\r\n else\r\n this.handleError(error)\r\n })\r\n }\r\n\r\n private handleError(err: HttpErrorResponse) {\r\n let errorMessage = '';\r\n if (err.error instanceof ErrorEvent) {\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n if (!this.options.DisableErrorNotification)\r\n this.utilityService.notifyErrorMessage()\r\n }\r\n\r\n else if (err.status == 401) {\r\n this.router.navigate([\"/Admin/account/login\"])\r\n }\r\n else if (err.status == 510) {\r\n errorMessage = this.utilityService.getCurrentLanguage() == \"en\" ? \"Can not delete this item as it is related to others\" : \"لا يمكن حذف هذا العنصر لأنه مرتبط بعناصر أخرى\";\r\n if (!this.options.DisableErrorNotification)\r\n this.utilityService.notifyErrorMessage(errorMessage)\r\n }\r\n else {\r\n errorMessage = `Server returned code: ${err.status}, error message is: ${err.message}`;\r\n console.log(errorMessage);\r\n if (!this.options.DisableErrorNotification)\r\n this.utilityService.notifyErrorMessage()\r\n }\r\n this.utilityService.stopBlockUI();\r\n }\r\n\r\n\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'ng-template[name]'\r\n})\r\nexport class NgTemplateNameDirective {\r\n @Input() name: string;\r\n\r\n constructor(public template: TemplateRef<any>) { }\r\n}","import { Component, Input, OnInit, QueryList, TemplateRef, ViewChild, ViewChildren } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { RepeaterOptions } from '../../../Shared/Models/RepeaterOptions';\r\nimport { NgTemplateNameDirective } from '../../../Shared/Directives/template-name.directive';\r\n\r\n\r\n@Component({\r\n selector: 'BBSF-repeater',\r\n templateUrl: './repeater.component.html'\r\n})\r\nexport class RepeaterComponent implements OnInit {\r\n @Input() group: FormGroup;\r\n @Input() options: RepeaterOptions;\r\n @Input() initialTemplate: TemplateRef<any>;\r\n @ViewChildren(NgTemplateNameDirective) private _templates: QueryList<NgTemplateNameDirective>;\r\n @ViewChild('delete', { static: false }) delete: TemplateRef<any>;\r\n templateRefs: Array<TemplateRef<any>> = [];\r\n items: number[] = []\r\n originalItems: any[] = [];\r\n repeaterGroup: FormGroup;\r\n currentTemplate: TemplateRef<any>;\r\n repeaterContext = { index: 0, delete: null, elements: null };\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.currentTemplate = this.initialTemplate;\r\n this.repeaterGroup = new FormGroup({});\r\n this.group.addControl(this.options.Name, this.repeaterGroup);\r\n if (this.options.RepeaterValue.length > 0) {\r\n this.originalItems = this.options.RepeaterValue;\r\n for (let index = 0; index < this.options.RepeaterValue.length; index++) {\r\n this.items.push(index + 1);\r\n }\r\n }\r\n else\r\n for (let index = 0; index < this.options.MinRequiredItems; index++) {\r\n this.items.push(index);\r\n }\r\n\r\n this.repeaterGroup.valueChanges.subscribe((res) => {\r\n let result = [];\r\n let rowNumber = [];\r\n let addItems = [];\r\n for (const key in this.repeaterGroup.controls) {\r\n if (Object.prototype.hasOwnProperty.call(this.repeaterGroup.controls, key)) {\r\n const keySplitArr = key.split('.')\r\n let item = {\r\n [keySplitArr[1]]: { [keySplitArr[0]]: this.group.controls[this.options.Name].value[key] }\r\n }\r\n addItems.push(item)\r\n if (!rowNumber.includes(keySplitArr[1]))\r\n rowNumber.push(keySplitArr[1])\r\n }\r\n }\r\n for (let index = 0; index < rowNumber.length; index++) {\r\n const row = rowNumber[index];\r\n let addObject = {}\r\n let filteredElements = addItems.filter(item => item[row])\r\n for (let index = 0; index < filteredElements.length; index++) {\r\n const filteredElement = filteredElements[index];\r\n for (const key in filteredElement) {\r\n if (Object.prototype.hasOwnProperty.call(filteredElement, key)) {\r\n const element = filteredElement[key];\r\n for (const key in element) {\r\n if (Object.prototype.hasOwnProperty.call(element, key)) {\r\n const value = element[key];\r\n addObject[key] = value\r\n }\r\n }\r\n }\r\n }\r\n }\r\n result.push(addObject)\r\n }\r\n this.options.RepeaterValue = result;\r\n })\r\n\r\n }\r\n\r\n deleteItem(Index) {\r\n if (this.items.length == this.options.MinRequiredItems && this.options.IsRequired)\r\n return;\r\n let deletedControls: any[] = []\r\n let controlNames = this.options.RepeaterStructure.map(e => e.ControlOptions.Name)\r\n for (const key in this.repeaterGroup.controls) {\r\n if (Object.prototype.hasOwnProperty.call(this.repeaterGroup.controls, key)) {\r\n for (let index = 0; index < controlNames.length; index++) {\r\n const element = controlNames[index];\r\n const keySplitArr = key.split('.')\r\n if (keySplitArr[0] + keySplitArr[1] == `${element}${Index}`) {\r\n const element = this.repeaterGroup.controls[key];\r\n deletedControls.push({ [key]: element })\r\n }\r\n }\r\n }\r\n }\r\n for (let index = 0; index < deletedControls.length; index++) {\r\n const element = deletedControls[index];\r\n for (const key in element) {\r\n if (Object.prototype.hasOwnProperty.call(element, key)) {\r\n this.repeaterGroup.removeControl(key)\r\n }\r\n }\r\n }\r\n this.items = this.items.filter((res) => res != this.items[Index])\r\n }\r\n\r\n\r\n addItem() {\r\n this.items.push(this.items.length);\r\n }\r\n\r\n ngAfterViewInit() {\r\n let templateRefs = (this._templates[\"_results\"] as any[]).map((item) => item[\"template\"])\r\n this.templateRefs = templateRefs\r\n this.repeaterContext.elements = this.templateRefs\r\n this.repeaterContext.delete = this.delete\r\n\r\n }\r\n\r\n setCurrentIndex(i: number) {\r\n this.repeaterContext.index = i;\r\n }\r\n\r\n}\r\n","export enum PermissionSets {\r\n Admin = 1,\r\n BusinessAdmin = 2,\r\n Customer = 3\r\n}\r\nexport enum DataType {\r\n Text = \"7F35E246-7C93-4666-8031-3CE9D2262DB9\",\r\n Email = \"E4F974F6-682F-4CAC-8597-C94E8BF60539\",\r\n Number = \"962060E2-539C-4257-88E5-0259EB8A64F4\",\r\n Name = \"54FE6A3E-1F71-42B8-8C99-06279ED8AA2F\",\r\n Mobile = \"266E2903-D105-4847-AC9B-002AE884A31E\",\r\n MultilineText = \"97F904E0-991B-4F68-B227-217A7B87B8B3\",\r\n HTML = \"57335E2B-E286-401A-A374-72888C3FB753\",\r\n Image = \"1AE5FF1F-856E-41DA-923E-07966F6F8FFE\",\r\n File = \"ACDFEFA7-B406-45B8-9264-78AA440D94B5\",\r\n MultiFile = \"11FAC9EB-D1BB-4F73-9386-64A6C89A70AC\",\r\n Boolean = \"7F89617B-5863-4741-A948-106BBE82D38D\",\r\n Date = \"41182659-A638-4FF0-8E3F-66B89B0B544C\",\r\n DateTime = \"8D899956-8187-4EA1-92EB-B62D50A66323\",\r\n Time = \"B8C225ED-17C3-4AE0-A0E8-3C722B38D8A7\",\r\n Location = \"C486F9C5-0065-4A81-AFA1-03946DBD2214\",\r\n SingleSelect = \"1A63B4B7-DEDE-48C8-8407-10E4170BF761\",\r\n MulipleSelect = \"2CB28735-9D0B-4FBE-A504-8793A4544F94\",\r\n Goal = \"108310CE-9FE1-4914-AB6B-2CF6284472AD\",\r\n Challenge = \"48C419CE-5306-4F6B-87A3-F016E522D9E3\",\r\n CoverPhoto = \"9CC8C0BB-C670-466F-A632-8632FF5C1296\",\r\n InnovationLab = \"4B914ED0-8B36-4E24-B85E-9A04C9F266BE\",\r\n Country = \"342AA701-76C7-4E5D-8056-407BFC86F888\",\r\n AreaOfFocus = \"06a4cfb7-216a-4a60-8388-7a859aab90b4\",\r\n}","import { ControlLayout } from \"../Enums/ControlLayout\"\r\nimport { Attribute } from './Attribute';\r\nimport { CustomValidation } from \"./CustomValidation\";\r\nexport class ControlOptionsBase {\r\n /** Represent Name Of Form Control*/\r\n Name: string\r\n /** Represent classes to Control that allow us to select the Control by jquery or javascript */\r\n ExtraClasses: string\r\n /** Represent classes to label that allow us to select the Control by jquery or javascript */\r\n LabelExtraClasses: string\r\n /** Represent value of the label*/\r\n LabelValue: string\r\n /** Represent Key of the label*/\r\n LabelKey: string\r\n /** Represent value of the labelDescription show under Control*/\r\n LabelDescription: string\r\n /** Represent value of the Placeholder of Control */\r\n Placeholder: string\r\n /**\r\n * Display \"*\" beside the label \r\n * if ForceAsterisk=true and IsRequired=True his display \"*\" ,\r\n * if ForceAsterisk=false and IsRequired=false this remove \"*\",\r\n *if ForceAsterisk=false and IsRequired=True this display \"*\" , \r\n */\r\n ShowAsterisk: boolean\r\n /** Ability to set Control required */\r\n IsRequired: boolean\r\n /** Ability to display or hide the label of Control */\r\n HideLabel: boolean\r\n /** Sets an attribute disable=\"disabled\" */\r\n IsDisabled: boolean = false\r\n /** to set type of view if Control is Vertical or Horizontal */\r\n ViewType: ControlLayout = null;\r\n /** Set List of Custom Attribute to Control */\r\n AttributeList: Attribute[]\r\n /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage */\r\n CustomValidation: CustomValidation[] = []\r\n /** Path of propriety which we need to patch value */\r\n PatchPath: string;\r\n /** Function which call to patch value */\r\n PatchFunction: Function;\r\n /** Sets an attribute readonly */\r\n IsReadonly: boolean = false;\r\n}\r\n","import { ForceDirection } from '../Enums/ForceDirection';\r\nimport { StartView } from '../Enums/StartView';\r\nimport { PickerType } from '../Enums/PickerType';\r\nimport { SelectMode } from '../Enums/SelectMode';\r\nimport { ControlOptionsBase } from './ControlOptionsBase';\r\n\r\nexport class DatePickerOptions extends ControlOptionsBase {\r\n\r\n /**To set value to DatePicker */\r\n Value: Date\r\n /**To set StartDate to DatePicker */\r\n StartDate: Date\r\n /**To set EndDate to DatePicker */\r\n EndDate: Date;\r\n /** add button to for coping to clipboard */\r\n EnableCopyToClipboard: boolean\r\n IsGMT: boolean\r\n /**To set First Day Of Week to DatePicker */\r\n FirstDayOfWeek: number = 1\r\n /**To set Hour12Timer to DatePicker is 12 Hour or 24 Hour*/\r\n Hour12Timer: boolean = true\r\n /**To set PickerType to DatePicker is Calendar or Timer Or Both */\r\n PickerType: PickerType = PickerType.Calendar\r\n /**To set StartView to DatePicker is Year or Month Or Multi-Year */\r\n StartView: StartView = StartView.Month\r\n /**To set SelectMode to DatePicker is Single or Range */\r\n SelectMode: SelectMode = SelectMode.Single\r\n ForceDirection: ForceDirection = null\r\n /**Name of DatePicker control to compare value with it */\r\n StartControlToCompareWith: string = null;\r\n\r\n}\r\n","export enum ForceDirection {\r\n English = 1,\r\n Arabic = 2\r\n }","import { ControlLayout } from '../Enums/ControlLayout'\r\nimport { DropdownListItem } from './DropdownListItem'\r\nimport { CustomValidation } from './CustomValidation'\r\nimport { Attribute } from './Attribute'\r\nimport { ForceDirection } from '../Enums/ForceDirection'\r\nimport { ControlOptionsBase } from './ControlOptionsBase'\r\n\r\nexport class DropdownOptions extends ControlOptionsBase {\r\n\r\n /**To set DataSource to DropdownList */\r\n DataSource: DropdownListItem[]\r\n /**To set SelectedItem to DropdownList */\r\n SelectedItems: any\r\n /** Disable Bootstrap DropdownList */\r\n DisableBootstrapSelect: boolean = false;\r\n /** to set DropdownList in SingleMode Or MultibleMode ,,If false => DisableBootstrapSelect must be equal false */\r\n SingleSelection: boolean\r\n /** to set Number Of selected Element That will Show In The Box */\r\n ItemsShowLimit: number\r\n /** to Show Search Filter Box*/\r\n AllowSearchFilter: boolean\r\n /** to set Limit Of selected Element For DropdownList */\r\n LimitSelection?: number\r\n /** Set css classes to DropdownList */\r\n Classes: string;\r\n /** Allow Show Checkbox */\r\n ShowCheckbox?: boolean;\r\n /** Allow Check ALL Items */\r\n EnableCheckAll?: boolean;\r\n /** Set key for item in DropdownList */\r\n ItemTempletkey: string = \"key\"\r\n /** Set value for item in DropdownList */\r\n ItemTempletvalue: string = \"value\"\r\n ForceDirection: ForceDirection = ForceDirection.English\r\n NotFoundText: string = \"\"\r\n /** Represent Value of disabled items tooltip*/\r\n DisabledItemsTooltipValue: string\r\n\r\n}\r\n","import { FileType } from '../Enums/FileType';\r\nimport { ControlOptionsBase } from './ControlOptionsBase';\r\n\r\nexport class FileUploadOptions extends ControlOptionsBase {\r\n\r\n Value: any;\r\n /** Ability to set FileInput required */\r\n IsMultipleFile: boolean = false\r\n /** Sets boolean Value to Show IsDropZone Or Not */\r\n IsDropZone: boolean = false\r\n /** Set File MaxSize In MB */\r\n FileMaxSizeInMB: number;\r\n /** Set Max Number Of Files */\r\n MaxNoOfFiles: number;\r\n /** Set Min Number Of Files */\r\n MinNoOfFiles: number;\r\n /** Set File MaxSizeForAllFilesInMB In MB */\r\n MaxSizeForAllFilesInMB: number;\r\n /** Set List of Custom Attribute to FileInput */\r\n FileUploadAcceptsTypes: FileType[]\r\n}\r\n","import { ForceDirection } from '../Enums/ForceDirection';\r\nimport { Attribute } from './Attribute';\r\nimport { Misc } from '../Enums/Misc';\r\nimport { Style } from '../Enums/Style';\r\nimport { FontSize } from '../Enums/FontSize';\r\nimport { Para } from '../Enums/Para';\r\nimport { Insert } from '../Enums/Insert';\r\nimport { ControlOptionsBase } from './ControlOptionsBase';\r\n\r\nexport class HtmlEditorOptions extends ControlOptionsBase {\r\n /**To set value to HtmlEditor */\r\n Value:any\r\n //** Set the MaxLength of characters In HtmlEditor */\r\n MaxLength?:number\r\n /**Set the MinLength of characters In HtmlEditor */\r\n MinLength?:number\r\n/** to set Direction of HtmlEditor if HtmlEditor is Arabic or English */\r\n ForceDirection: ForceDirection=ForceDirection.English\r\n /** Set Height For */\r\n Height: number=5\r\n /** Set List of Custom Attribute to HtmlEditor */\r\n AttributeList:Attribute[]\r\n /** Set List of Misc like codeview Or undo Or redo */\r\n ToolsList_Misc?: Misc[];\r\n /** Set List of Style like bold Or italic Or underline Or clear */\r\n ToolsList_Style?: Style[];\r\n /** Set List of FontSize like fontname Or fontsize Or color */\r\n ToolsList_FontSize?: FontSize[];\r\n /** Set List of Para like style Or ul Or ol Or paragraph Or height */\r\n ToolsList_Para?: Para[];\r\n /** Set List of Insert like table Or picture Or link Or video Or hr */\r\n ToolsList_Insert?: Insert[];\r\n\r\n\r\n}\r\n","export enum ImageType\r\n{\r\n ImageTypes='image/png,image/bmp,image/jpeg',\r\n PNG='image/png',\r\n JPG='image/jpeg',\r\n JPEG='image/jpeg',\r\n SVG='image/svg+xml',\r\n None='',\r\n}","import { FileDTO } from './FileDTO';\r\nimport { ImageType } from '../Enums/ImageType';\r\nimport { ControlOptionsBase } from './ControlOptionsBase';\r\n\r\nexport class ImageUploadOptions extends ControlOptionsBase {\r\n\r\n /**To set value to ImageUpload */\r\n Value: FileDTO\r\n /** Allow to Upload Multiple File */\r\n IsMultiple: boolean = false\r\n /** Allow to Use Drop Zone */\r\n AllowDropZone: boolean = true\r\n /** Sets an attribute AllowImageCropper=\"true\" */\r\n AllowImageCropper: boolean\r\n /** Set Height of Image Cropper Box */\r\n ImageCropperHeight: number\r\n /** Set Width of Image Cropper Box */\r\n ImageCropperWidth: number\r\n /** Set File MaxSize In MB */\r\n FileMaxSizeInMB: number;\r\n /** Set List of Custom Attribute to FileInput */\r\n FileUploadAcceptsTypes: ImageType[] = [ImageType.ImageTypes]\r\n /** Set Default Image */\r\n DefaultImageSrc: string\r\n}\r\n","import { MapAutocompleteDTO } from './MapAutocompleteDTO'\r\nimport { ControlOptionsBase } from './ControlOptionsBase'\r\n\r\nexport class MapAutoCompleteOptions extends ControlOptionsBase {\r\n /** Sets Value of MapAutoComplete */\r\n Value:MapAutocompleteDTO\r\n \r\n}\r\n","import { Country } from '../Enums/Countries';\r\nimport { ForceDirection } from '../Enums/ForceDirection';\r\nimport { ControlOptionsBase } from './ControlOptionsBase';\r\n\r\nexport class PhoneOptions extends ControlOptionsBase {\r\n\r\n /**To set value to Phonebox */\r\n Value: any\r\n /** To allow search in country list*/\r\n AllowSearch: boolean\r\n /**Allow To Show Placeholder */\r\n EnablePlaceholder: boolean\r\n /**Allow To Select First Country */\r\n SelectFirstCountry: boolean\r\n /**Set Selected Country To Phone Box*/\r\n SelectedCountryISO: Country\r\n /**Allow Phone Validation */\r\n PhoneValidation: boolean\r\n /**Set List Of Countries As Preferred Countries*/\r\n PreferredCountries: Country[] = []\r\n // **Set List Of Countries to show it in dropdown list and ignore another countries */\r\n OnlyCountries: Country[] = []\r\n ForceDirection: ForceDirection = ForceDirection.English\r\n\r\n}\r\n","export class RangeNumber\r\n{\r\n From?:number\r\n To?: number\r\n}","import { ForceDirection } from '../Enums/ForceDirection';\r\nimport { ControlOptionsBase } from './ControlOptionsBase';\r\n\r\n\r\nexport class TextAreaOptions extends ControlOptionsBase {\r\n /**To set value to Control */\r\n Value: any\r\n //** Set the MaxLength of characters In TextArea */\r\n MaxLength?: number\r\n /**Set the MinLength of characters In TextArea */\r\n MinLength?: number\r\n /**Set Number Of Rows */\r\n Rows: number\r\n /**Set Number Of columns */\r\n Cols: number\r\n //** Set the MaxWordCount of characters In TextArea */\r\n MaxWordCount: number;\r\n /**Prevent AutoComplete of TextArea*/\r\n AutoComplete: boolean\r\n /** text input on change */\r\n TrimTextOnChange: boolean\r\n /** add button to for coping to clipboard */\r\n EnableCopyToClipboard: boolean\r\n /** to set Direction of TextArea if TextArea is Arabic or English */\r\n ForceDirection: ForceDirection\r\n //** Set the MaxLength Limit to show warning message*/\r\n MaxLengthWarningLimit: number;\r\n}\r\n","export enum IconPosition {\r\n left = 1,\r\n right = 2\r\n }\r\n","import { InputType } from '../Enums/InputType';\r\nimport { RangeNumber } from './RangeNumber';\r\nimport { ForceDirection } from '../Enums/ForceDirection';\r\nimport { IconPosition } from '../Enums/IconPosition';\r\nimport { LanguageValidation } from '../Enums/LanguageValidation';\r\nimport { ControlOptionsBase } from './ControlOptionsBase';\r\n\r\nexport class TextBoxOptions extends ControlOptionsBase {\r\n /**To set value to Control */\r\n Value: any\r\n //** Set the MaxLength of characters In TextBox */\r\n MaxLength?: number\r\n /**Set the MinLength of characters In TextBox */\r\n MinLength?: number\r\n //** Set the MaxWordCount of characters In TextBox */\r\n MaxWordCount: number;\r\n /** set Range Number to Textbox with type number with From-Value and To-value*/\r\n NumberRange: RangeNumber = new RangeNumber()\r\n /**Prevent AutoComplete of textbox default value is \"on\" available values \"on\" and \"off\"*/\r\n AutoComplete: string = \"on\"\r\n /** text input on change */\r\n TrimTextOnChange: boolean\r\n /** add button to for coping to clipboard */\r\n EnableCopyToClipboard: boolean\r\n /**Prevent Defulat Password Validation to set Custom Validation */\r\n RemoveDefaultPasswordValidation: boolean\r\n /** to set Direction of textbox if textbox is Arabic or English */\r\n ForceDirection: ForceDirection = null\r\n /** to set Language of textbox if textbox language is Arabic or English */\r\n LanguageValidation: LanguageValidation = null\r\n /** Set Type of TextBox (\"text\",\"password\",\"email\",\"number\") */\r\n Type: InputType = InputType.Text;\r\n /** Set Mask Pattern Attribute to TextBox */\r\n MaskPattern: string\r\n /*icon options*/\r\n Icon: string\r\n IconPosition: IconPosition = IconPosition.left\r\n NoMargin: boolean = false;\r\n ValidationRules: any[] = [];\r\n //** Set the MaxLength Limit to show warning message*/\r\n MaxLengthWarningLimit: number;\r\n\r\n}\r\n","import { ForceDirection } from '../Enums/ForceDirection';\r\nimport { ControlOptionsBase } from './ControlOptionsBase';\r\n\r\nexport class ToggleSlideOptions extends ControlOptionsBase {\r\n\r\n /**Display validation message only on added repeater when add class \"v-required\"*/\r\n ValidationClasses: string\r\n /**To set value to ToggleSlide */\r\n Value: boolean\r\n ForceDirection: ForceDirection = ForceDirection.English\r\n\r\n}\r\n","import { Component, ComponentFactoryResolver, EmbeddedViewRef, Injectable, ViewChild, ViewContainerRef } from \"@angular/core\";\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n\r\n\r\n @Injectable()\r\n export class RenderComponentService {\r\n\r\n constructor( private componentFactoryResolver: ComponentFactoryResolver) {\r\n }\r\n \r\n renderDynamicComponent<T>(viewContainerRef: ViewContainerRef, component: any, group: FormGroup, options: any, size: number = 0) {\r\n let factory = this.componentFactoryResolver.resolveComponentFactory<T>(component)\r\n const componentRef = viewContainerRef.createComponent<T>(factory) as any;\r\n componentRef.instance.group = group;\r\n componentRef.instance.options = options;\r\n if (size > 0) {\r\n let htmlElement = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n // `element` is the element you want to wrap\r\n var parent = htmlElement.parentNode;\r\n var wrapper = document.createElement('div');\r\n wrapper.className = `col-md-${size}`\r\n // set the wrapper as child (instead of the element)\r\n parent.replaceChild(wrapper, htmlElement);\r\n // set element as child of wrapper\r\n wrapper.appendChild(htmlElement);\r\n }\r\n\r\n\r\n }\r\n}\r\n","import { Component, OnInit, Input, Optional, EventEmitter, Output } from '@angular/core';\r\nimport { FormGroup, ControlContainer, FormGroupDirective, AbstractControl, FormControl } from '@angular/forms';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { ToggleSlideOptions } from '../../Shared/Models/ToggleslideOptions';\r\nimport { ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'BBSF-Toggleslide',\r\n templateUrl: './Toggleslide.component.html'\r\n})\r\nexport class ToggleslideComponent implements OnInit {\r\n\r\n\r\n static controlContainerstatic = null;\r\n // tslint:disable-next-line: max-line-length\r\n constructor(private controlUtility: ControlUtility, @Optional() private controlContainer: ControlContainer,\r\n public ToggleslideControlHost: FormGroupDirective, public TextControlHost: FormGroupDirective,\r\n public UtilityService: UtilityService, private controlValidationService: ControlValidationService,\r\n private globalSettings: GlobalSettings) {\r\n ToggleslideComponent.controlContainerstatic = this.controlContainer;\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: ToggleSlideOptions;\r\n @Output() OnChange = new EventEmitter();\r\n ToggleslideFormControl: AbstractControl;\r\n SlideValue: boolean = false;\r\n markAllAsTouched: boolean = false;\r\n textDir;\r\n\r\n ngOnInit() {\r\n if(this.options.ForceDirection)\r\n this.textDir=this.options.ForceDirection==2?'rtl':'ltr';\r\n else\r\n this.textDir=localStorage.getItem('language')=='ar'?'rtl':'ltr';\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.ToggleslideFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n let validationRules = [];\r\n let validationRulesasync = [];\r\n this.SlideValue = this.options.Value == undefined ? false : this.options.Value;\r\n\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n if (this.options.IsDisabled ||this.options.IsReadonly ) {\r\n this.ToggleslideFormControl.disable();\r\n }\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\")\r\n this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n if (this.options.AttributeList != null) {\r\n var element = document.getElementById(this.options.Name);\r\n for (let index = 0; index < this.options.AttributeList.length; index++) {\r\n element.setAttribute(this.options.AttributeList[index].Key, this.options.AttributeList[index].value);\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n resetError() {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n getErrorValidation(ErrorList: any[]): string {\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n\r\n\r\n changeValueToggle() {\r\n this.OnChange.emit(this.SlideValue)\r\n this.options.Value= this.SlideValue\r\n this.ToggleslideFormControl.setValue(this.SlideValue)\r\n if (this.options.PatchFunction && this.options.PatchPath && this.ToggleslideFormControl.valid) {\r\n this.controlUtility.patchControlValue(this.SlideValue,this.options.PatchFunction ,this.options.PatchPath)\r\n }\r\n }\r\n}\r\n","import { AfterViewInit, Component, Input, OnInit, SimpleChanges, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { FormGroup, FormGroupDirective } from '@angular/forms';\r\nimport { UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { DataType } from '../../../Shared/Enums/Enums';\r\nimport { InputType } from '../../../Shared/Enums/InputType';\r\nimport { LanguageValidation } from '../../../Shared/Enums/LanguageValidation';\r\nimport { PickerType } from '../../../Shared/Enums/PickerType';\r\nimport { SelectMode } from '../../../Shared/Enums/SelectMode';\r\nimport { StartView } from '../../../Shared/Enums/StartView';\r\nimport { DatePickerOptions } from '../../../Shared/Models/datePickerOptions';\r\nimport { DropdownOptions } from '../../../Shared/Models/DropdownOptions';\r\nimport { FileUploadOptions } from '../../../Shared/Models/FileUploadOptions';\r\nimport { HtmlEditorOptions } from '../../../Shared/Models/HtmlEditorOptions';\r\nimport { ImageUploadOptions } from '../../../Shared/Models/ImageUploadOptions';\r\nimport { MapAutoCompleteOptions } from '../../../Shared/Models/MapAutoCompleteOptions';\r\nimport { PhoneOptions } from '../../../Shared/Models/PhoneOptions';\r\nimport { RangeNumber } from '../../../Shared/Models/RangeNumber';\r\nimport { RepeaterField } from '../../../Shared/Models/RepeaterField';\r\nimport { TextAreaOptions } from '../../../Shared/Models/TextAreaOptions';\r\nimport { TextBoxOptions } from '../../../Shared/Models/TextBoxOptions';\r\nimport { ToggleSlideOptions } from '../../../Shared/Models/ToggleslideOptions';\r\nimport { RenderComponentService } from '../../../Shared/services/render-component-service.service';\r\nimport { DateInputComponent } from '../../DateTimePicker/DateTimePicker.component';\r\nimport { DropdownListComponent } from '../../DropdownList/DropdownList.component';\r\nimport { FileUploadComponent } from '../../FileUplaod/FileUplaod.component';\r\nimport { HtmlEditorComponent } from '../../HtmlEditor/HtmlEditor.component';\r\nimport { ImageUploaderComponent } from '../../ImageUpload/ImageUpload.component';\r\nimport { MapAutoCompleteComponent } from '../../MapAutoComplete/MapAutoComplete.component';\r\nimport { PhoneComponent } from '../../Phone/Phone.component';\r\nimport { TextAreaComponent } from '../../TextArea/TextArea.component';\r\nimport { TextboxComponent } from '../../TextBox/TextBox.component';\r\nimport { ToggleslideComponent } from '../../Toggleslide/toggleslide.component';\r\n\r\n\r\n@Component({\r\n selector: 'repeater-field-builder',\r\n templateUrl: './repeater-field-builder.component.html',\r\n})\r\nexport class RepeaterFieldBuilderComponent implements OnInit, AfterViewInit {\r\n\r\n @ViewChild(\"Item\", { read: ViewContainerRef }) Item: ViewContainerRef;\r\n @Input() group: FormGroup;\r\n @Input() itemNumber: number;\r\n @Input() controlNumber: number;\r\n @Input() RepeaterField: RepeaterField;\r\n @Input() itemsValue: any[] = [];\r\n itemValue: any = null;\r\n value: any;\r\n\r\n constructor(private renderComponentService: RenderComponentService, public TextControlHost: FormGroupDirective) { }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n if (this.itemsValue.length > 0)\r\n this.itemValue = this.itemsValue[this.itemNumber]\r\n if (this.itemValue) {\r\n for (const key in this.itemValue) {\r\n if (Object.prototype.hasOwnProperty.call(this.itemValue, key) && key == this.RepeaterField.ControlOptions.Name) {\r\n const element = this.itemValue[key];\r\n this.value = element;\r\n }\r\n }\r\n }\r\n this.Item.clear()\r\n switch (this.RepeaterField.ControlType) {\r\n ///TextBox\r\n case DataType.Text:\r\n let Text = new TextBoxOptions();\r\n Text.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n Text.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Text.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Text.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Text.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Text.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Text.Type = InputType.Text;\r\n Text.LanguageValidation = this.RepeaterField.ControlOptions.LanguageValidation;\r\n if (this.RepeaterField.ControlOptions.maxLength)\r\n Text.MaxLength = this.RepeaterField.ControlOptions.maxLength\r\n if (this.RepeaterField.ControlOptions.minLength)\r\n Text.MinLength = this.RepeaterField.ControlOptions.minLength\r\n Text.Value = this.value;\r\n Text.IsReadonly = this.RepeaterField.ControlOptions.IsReadonly;\r\n this.renderComponentService.renderDynamicComponent<TextboxComponent>(this.Item, TextboxComponent, this.group, Text)\r\n break;\r\n\r\n case DataType.Name:\r\n let Name = new TextBoxOptions();\r\n Name.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n Name.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Name.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Name.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Name.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Name.LanguageValidation = this.RepeaterField.ControlOptions.LanguageValidation;\r\n Name.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n if (this.RepeaterField.ControlOptions.maxLength)\r\n Name.MaxLength = this.RepeaterField.ControlOptions.maxLength\r\n if (this.RepeaterField.ControlOptions.minLength)\r\n Name.MinLength = this.RepeaterField.ControlOptions.minLength\r\n Name.Type = InputType.Text;\r\n Name.Value = this.value;\r\n this.renderComponentService.renderDynamicComponent<TextboxComponent>(this.Item, TextboxComponent, this.group, Name)\r\n break;\r\n\r\n case DataType.Email:\r\n let Email = new TextBoxOptions();\r\n Email.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n Email.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Email.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Email.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Email.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Email.LanguageValidation = this.RepeaterField.ControlOptions.LanguageValidation;\r\n Email.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Email.Type = InputType.Email;\r\n Email.Value = this.value;\r\n this.renderComponentService.renderDynamicComponent<TextboxComponent>(this.Item, TextboxComponent, this.group, Email)\r\n break;\r\n\r\n case DataType.Number:\r\n let Number = new TextBoxOptions();\r\n Number.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n Number.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Number.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Number.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Number.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Number.LanguageValidation = this.RepeaterField.ControlOptions.LanguageValidation;\r\n Number.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Number.Type = InputType.Number;\r\n let rangeNumber = new RangeNumber()\r\n if(this.RepeaterField.ControlOptions.NumberRange){\r\n rangeNumber.To = this.RepeaterField.ControlOptions.NumberRange.To\r\n rangeNumber.From = this.RepeaterField.ControlOptions.NumberRange.From\r\n }\r\n Number.NumberRange = rangeNumber;\r\n Number.Value = this.value;\r\n Number.IsReadonly = this.RepeaterField.ControlOptions.IsReadonly;\r\n this.renderComponentService.renderDynamicComponent<TextboxComponent>(this.Item, TextboxComponent, this.group, Number)\r\n break;\r\n\r\n ///DateTime\r\n case DataType.Date:\r\n let Date = new DatePickerOptions();\r\n Date.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n Date.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Date.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Date.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Date.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Date.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Date.PickerType = PickerType.Calendar;\r\n Date.SelectMode = SelectMode.Single\r\n Date.StartView = StartView.Month\r\n Date.Value = this.value;\r\n this.renderComponentService.renderDynamicComponent<DateInputComponent>(this.Item, DateInputComponent, this.group, Date)\r\n break;\r\n\r\n case DataType.DateTime:\r\n let DateTime = new DatePickerOptions();\r\n DateTime.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n DateTime.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n DateTime.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n DateTime.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n DateTime.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n DateTime.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n DateTime.PickerType = PickerType.Both;\r\n DateTime.SelectMode = SelectMode.Single\r\n DateTime.StartView = StartView.Month\r\n DateTime.Value = this.value;\r\n this.renderComponentService.renderDynamicComponent<DateInputComponent>(this.Item, DateInputComponent, this.group, DateTime)\r\n break;\r\n\r\n case DataType.Time:\r\n let Time = new DatePickerOptions();\r\n Time.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n Time.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Time.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Time.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Time.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Time.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Time.PickerType = PickerType.Timer;\r\n Time.SelectMode = SelectMode.Single\r\n Time.StartView = StartView.Month\r\n Time.Value = this.value;\r\n this.renderComponentService.renderDynamicComponent<DateInputComponent>(this.Item, DateInputComponent, this.group, Time)\r\n break;\r\n\r\n //Dropdown\r\n case DataType.SingleSelect:\r\n let SingleSelect = new DropdownOptions();\r\n SingleSelect.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n SingleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n SingleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n SingleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n SingleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n SingleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n SingleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource\r\n SingleSelect.SingleSelection = true\r\n SingleSelect.ShowCheckbox = false\r\n SingleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch\r\n SingleSelect.SelectedItems = this.value;\r\n this.renderComponentService.renderDynamicComponent<DropdownListComponent>(this.Item, DropdownListComponent, this.group, SingleSelect)\r\n break;\r\n case DataType.MulipleSelect:\r\n let MulipleSelect = new DropdownOptions();\r\n MulipleSelect.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n MulipleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n MulipleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n MulipleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n MulipleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n MulipleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n MulipleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource\r\n MulipleSelect.SingleSelection = false\r\n MulipleSelect.ShowCheckbox = false\r\n MulipleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch\r\n MulipleSelect.SelectedItems = this.value;\r\n this.renderComponentService.renderDynamicComponent<DropdownListComponent>(this.Item, DropdownListComponent, this.group, MulipleSelect)\r\n break;\r\n case DataType.Goal:\r\n let Goal = new DropdownOptions();\r\n Goal.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n Goal.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Goal.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Goal.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Goal.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Goal.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Goal.DataSource = this.RepeaterField.ControlOptions.dataSource\r\n Goal.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple\r\n Goal.ShowCheckbox = false\r\n Goal.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch\r\n Goal.SelectedItems = this.value;\r\n this.renderComponentService.renderDynamicComponent<DropdownListComponent>(this.Item, DropdownListComponent, this.group, Goal)\r\n break;\r\n case DataType.Challenge:\r\n let Challenge = new DropdownOptions();\r\n Challenge.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n Challenge.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Challenge.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Challenge.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Challenge.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Challenge.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource\r\n Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource\r\n Challenge.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple\r\n Challenge.ShowCheckbox = false\r\n Challenge.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch\r\n Challenge.SelectedItems = this.value;\r\n this.renderComponentService.renderDynamicComponent<DropdownListComponent>(this.Item, DropdownListComponent, this.group, Challenge)\r\n break;\r\n case DataType.InnovationLab:\r\n let InnovationLab = new DropdownOptions();\r\n InnovationLab.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n InnovationLab.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n InnovationLab.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n InnovationLab.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n InnovationLab.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n InnovationLab.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n InnovationLab.DataSource = this.RepeaterField.ControlOptions.dataSource\r\n InnovationLab.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple\r\n InnovationLab.ShowCheckbox = false\r\n InnovationLab.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch\r\n InnovationLab.SelectedItems = this.value;\r\n this.renderComponentService.renderDynamicComponent<DropdownListComponent>(this.Item, DropdownListComponent, this.group, InnovationLab)\r\n break;\r\n case DataType.Country:\r\n let Country = new DropdownOptions();\r\n Country.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n Country.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Country.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Country.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Country.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Country.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Country.DataSource = this.RepeaterField.ControlOptions.dataSource\r\n Country.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple\r\n Country.ShowCheckbox = false\r\n Country.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch\r\n Country.SelectedItems = this.value;\r\n this.renderComponentService.renderDynamicComponent<DropdownListComponent>(this.Item, DropdownListComponent, this.group, Country)\r\n break;\r\n\r\n //FileUpload\r\n case DataType.File:\r\n let File = new FileUploadOptions();\r\n File.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n File.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n File.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n File.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n File.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB\r\n File.Value = this.value;\r\n this.renderComponentService.renderDynamicComponent<FileUploadComponent>(this.Item, FileUploadComponent, this.group, File)\r\n break;\r\n case DataType.MultiFile:\r\n let MultiFile = new FileUploadOptions();\r\n File.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n File.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n File.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n File.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n MultiFile.MaxSizeForAllFilesInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB\r\n MultiFile.MaxNoOfFiles = this.RepeaterField.ControlOptions.maxFileCount\r\n MultiFile.IsMultipleFile = true;\r\n MultiFile.Value = this.value;\r\n this.renderComponentService.renderDynamicComponent<FileUploadComponent>(this.Item, FileUploadComponent, this.group, MultiFile)\r\n break;\r\n //ImageUpload\r\n case DataType.Image:\r\n let Image = new ImageUploadOptions();\r\n Image.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n Image.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Image.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Image.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Image.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Image.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n if (this.RepeaterField.ControlOptions.maxFileSizeInMB)\r\n Image.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB\r\n Image.Value = this.value;\r\n this.renderComponentService.renderDynamicComponent<ImageUploaderComponent>(this.Item, ImageUploaderComponent, this.group, Image)\r\n break;\r\n case DataType.CoverPhoto:\r\n let CoverPhoto = new ImageUploadOptions();\r\n CoverPhoto.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n CoverPhoto.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n CoverPhoto.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n CoverPhoto.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n CoverPhoto.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n CoverPhoto.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n if (this.RepeaterField.ControlOptions.maxFileSizeInMB)\r\n CoverPhoto.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB\r\n CoverPhoto.Value = this.value;\r\n this.renderComponentService.renderDynamicComponent<ImageUploaderComponent>(this.Item, ImageUploaderComponent, this.group, CoverPhoto)\r\n break;\r\n //Mobile\r\n case DataType.Mobile:\r\n let Mobile = new PhoneOptions();\r\n Mobile.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n Mobile.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Mobile.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Mobile.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Mobile.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Mobile.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Mobile.AllowSearch = true;\r\n Mobile.PhoneValidation = true;\r\n Mobile.SelectFirstCountry = true;\r\n Mobile.EnablePlaceholder = true\r\n Mobile.Value = this.value;\r\n this.renderComponentService.renderDynamicComponent<PhoneComponent>(this.Item, PhoneComponent, this.group, Mobile)\r\n break;\r\n //MultilineText\r\n case DataType.MultilineText:\r\n let MultilineText = new TextAreaOptions();\r\n MultilineText.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n MultilineText.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n MultilineText.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n MultilineText.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n MultilineText.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n MultilineText.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n if (this.RepeaterField.ControlOptions.maxLength)\r\n MultilineText.MaxLength = this.RepeaterField.ControlOptions.maxLength\r\n if (this.RepeaterField.ControlOptions.minLength)\r\n MultilineText.MinLength = this.RepeaterField.ControlOptions.minLength\r\n MultilineText.Rows = this.RepeaterField.ControlOptions.rows;\r\n MultilineText.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection\r\n MultilineText.Value = this.value;\r\n this.renderComponentService.renderDynamicComponent<TextAreaComponent>(this.Item, TextAreaComponent, this.group, MultilineText)\r\n break;\r\n //HTML\r\n case DataType.HTML:\r\n let HTML = new HtmlEditorOptions();\r\n HTML.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n HTML.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n HTML.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n HTML.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n HTML.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n HTML.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n if (this.RepeaterField.ControlOptions.maxLength)\r\n HTML.MaxLength = this.RepeaterField.ControlOptions.maxLength\r\n if (this.RepeaterField.ControlOptions.minLength)\r\n HTML.MinLength = this.RepeaterField.ControlOptions.minLength\r\n HTML.Height = this.RepeaterField.ControlOptions.rows;\r\n HTML.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection\r\n HTML.Value = this.value;\r\n this.renderComponentService.renderDynamicComponent<HtmlEditorComponent>(this.Item, HtmlEditorComponent, this.group, HTML)\r\n break;\r\n //Boolean\r\n case DataType.Boolean:\r\n let Boolean = new ToggleSlideOptions();\r\n Boolean.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n Boolean.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Boolean.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Boolean.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Boolean.Value = this.value;\r\n Boolean.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n this.renderComponentService.renderDynamicComponent<ToggleslideComponent>(this.Item, ToggleslideComponent, this.group, Boolean)\r\n break;\r\n //Location\r\n case DataType.Location:\r\n let Location = new MapAutoCompleteOptions();\r\n Location.Name = this.RepeaterField.ControlOptions.Name + \".\" + this.itemNumber.toString() + \".\" + this.controlNumber.toString()\r\n Location.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Location.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Location.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Location.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Location.Value = this.value;\r\n Location.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n this.renderComponentService.renderDynamicComponent<MapAutoCompleteComponent>(this.Item, MapAutoCompleteComponent, this.group, Location)\r\n break;\r\n default:\r\n break;\r\n }\r\n }, 0);\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.itemNumber)\r\n if (changes.itemNumber.previousValue) {\r\n let name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.previousValue.toString() + \".\" + this.controlNumber.toString()\r\n let value = this.group.controls[name].value\r\n this.Item.clear()\r\n this.group.removeControl(name)\r\n switch (this.RepeaterField.ControlType) {\r\n ///TextBox\r\n case DataType.Text:\r\n let Text = new TextBoxOptions();\r\n Text.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n Text.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Text.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Text.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Text.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Text.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Text.Type = InputType.Text;\r\n if (this.RepeaterField.ControlOptions.maxLength)\r\n Text.MaxLength = this.RepeaterField.ControlOptions.maxLength\r\n if (this.RepeaterField.ControlOptions.minLength)\r\n Text.MinLength = this.RepeaterField.ControlOptions.minLength\r\n Text.Value = value;\r\n this.renderComponentService.renderDynamicComponent<TextboxComponent>(this.Item, TextboxComponent, this.group, Text)\r\n break;\r\n\r\n case DataType.Name:\r\n let Name = new TextBoxOptions();\r\n Name.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n Name.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Name.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Name.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Name.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Name.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n if (this.RepeaterField.ControlOptions.maxLength)\r\n Name.MaxLength = this.RepeaterField.ControlOptions.maxLength\r\n if (this.RepeaterField.ControlOptions.minLength)\r\n Name.MinLength = this.RepeaterField.ControlOptions.minLength\r\n Name.Type = InputType.Text;\r\n Name.Value = value;\r\n this.renderComponentService.renderDynamicComponent<TextboxComponent>(this.Item, TextboxComponent, this.group, Name)\r\n break;\r\n\r\n case DataType.Email:\r\n let Email = new TextBoxOptions();\r\n Email.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n Email.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Email.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Email.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Email.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Email.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Email.Type = InputType.Email;\r\n Email.Value = value;\r\n this.renderComponentService.renderDynamicComponent<TextboxComponent>(this.Item, TextboxComponent, this.group, Email)\r\n break;\r\n\r\n case DataType.Number:\r\n let Number = new TextBoxOptions();\r\n Number.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n Number.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Number.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Number.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Number.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Number.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Number.Type = InputType.Number;\r\n let rangeNumber = new RangeNumber()\r\n rangeNumber.To = this.RepeaterField.ControlOptions.maxLength\r\n rangeNumber.From = this.RepeaterField.ControlOptions.minLength\r\n Number.NumberRange = rangeNumber;\r\n Number.Value = value;\r\n this.renderComponentService.renderDynamicComponent<TextboxComponent>(this.Item, TextboxComponent, this.group, Number)\r\n break;\r\n\r\n ///DateTime\r\n case DataType.Date:\r\n let Date = new DatePickerOptions();\r\n Date.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n Date.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Date.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Date.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Date.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Date.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Date.PickerType = PickerType.Calendar;\r\n Date.SelectMode = SelectMode.Single\r\n Date.StartView = StartView.Month\r\n Date.Value = value;\r\n this.renderComponentService.renderDynamicComponent<DateInputComponent>(this.Item, DateInputComponent, this.group, Date)\r\n break;\r\n\r\n case DataType.DateTime:\r\n let DateTime = new DatePickerOptions();\r\n DateTime.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n DateTime.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n DateTime.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n DateTime.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n DateTime.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n DateTime.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n DateTime.PickerType = PickerType.Both;\r\n DateTime.SelectMode = SelectMode.Single\r\n DateTime.StartView = StartView.Month\r\n DateTime.Value = value;\r\n this.renderComponentService.renderDynamicComponent<DateInputComponent>(this.Item, DateInputComponent, this.group, DateTime)\r\n break;\r\n\r\n case DataType.Time:\r\n let Time = new DatePickerOptions();\r\n Time.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n Time.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Time.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Time.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Time.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Time.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Time.PickerType = PickerType.Timer;\r\n Time.SelectMode = SelectMode.Single\r\n Time.StartView = StartView.Month\r\n Time.Value = value;\r\n this.renderComponentService.renderDynamicComponent<DateInputComponent>(this.Item, DateInputComponent, this.group, Time)\r\n break;\r\n\r\n //Dropdown\r\n case DataType.SingleSelect:\r\n let SingleSelect = new DropdownOptions();\r\n SingleSelect.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n SingleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n SingleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n SingleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n SingleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n SingleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n SingleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource\r\n SingleSelect.SingleSelection = true\r\n SingleSelect.ShowCheckbox = false\r\n SingleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch\r\n SingleSelect.SelectedItems = value;\r\n this.renderComponentService.renderDynamicComponent<DropdownListComponent>(this.Item, DropdownListComponent, this.group, SingleSelect)\r\n break;\r\n case DataType.MulipleSelect:\r\n let MulipleSelect = new DropdownOptions();\r\n MulipleSelect.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n MulipleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n MulipleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n MulipleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n MulipleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n MulipleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n MulipleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource\r\n MulipleSelect.SingleSelection = false\r\n MulipleSelect.ShowCheckbox = false\r\n MulipleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch\r\n MulipleSelect.SelectedItems = value;\r\n this.renderComponentService.renderDynamicComponent<DropdownListComponent>(this.Item, DropdownListComponent, this.group, MulipleSelect)\r\n break;\r\n case DataType.Goal:\r\n let Goal = new DropdownOptions();\r\n Goal.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n Goal.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Goal.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Goal.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Goal.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Goal.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Goal.DataSource = this.RepeaterField.ControlOptions.dataSource\r\n Goal.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple\r\n Goal.ShowCheckbox = false\r\n Goal.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch\r\n Goal.SelectedItems = value;\r\n this.renderComponentService.renderDynamicComponent<DropdownListComponent>(this.Item, DropdownListComponent, this.group, Goal)\r\n break;\r\n case DataType.Challenge:\r\n let Challenge = new DropdownOptions();\r\n Challenge.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n Challenge.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Challenge.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Challenge.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Challenge.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Challenge.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource\r\n Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource\r\n Challenge.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple\r\n Challenge.ShowCheckbox = false\r\n Challenge.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch\r\n Challenge.SelectedItems = value;\r\n this.renderComponentService.renderDynamicComponent<DropdownListComponent>(this.Item, DropdownListComponent, this.group, Challenge)\r\n break;\r\n case DataType.InnovationLab:\r\n let InnovationLab = new DropdownOptions();\r\n InnovationLab.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n InnovationLab.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n InnovationLab.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n InnovationLab.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n InnovationLab.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n InnovationLab.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n InnovationLab.DataSource = this.RepeaterField.ControlOptions.dataSource\r\n InnovationLab.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple\r\n InnovationLab.ShowCheckbox = false\r\n InnovationLab.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch\r\n InnovationLab.SelectedItems = value;\r\n this.renderComponentService.renderDynamicComponent<DropdownListComponent>(this.Item, DropdownListComponent, this.group, InnovationLab)\r\n break;\r\n case DataType.Country:\r\n let Country = new DropdownOptions();\r\n Country.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n Country.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Country.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Country.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Country.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Country.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Country.DataSource = this.RepeaterField.ControlOptions.dataSource\r\n Country.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple\r\n Country.ShowCheckbox = false\r\n Country.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch\r\n Country.SelectedItems = value;\r\n this.renderComponentService.renderDynamicComponent<DropdownListComponent>(this.Item, DropdownListComponent, this.group, Country)\r\n break;\r\n\r\n //FileUpload\r\n case DataType.File:\r\n let File = new FileUploadOptions();\r\n File.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n File.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n File.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n File.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n File.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB\r\n File.Value = value;\r\n this.renderComponentService.renderDynamicComponent<FileUploadComponent>(this.Item, FileUploadComponent, this.group, File)\r\n break;\r\n case DataType.MultiFile:\r\n let MultiFile = new FileUploadOptions();\r\n File.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n File.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n File.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n File.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n MultiFile.MaxSizeForAllFilesInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB\r\n MultiFile.MaxNoOfFiles = this.RepeaterField.ControlOptions.maxFileCount\r\n MultiFile.IsMultipleFile = true;\r\n MultiFile.Value = value;\r\n this.renderComponentService.renderDynamicComponent<FileUploadComponent>(this.Item, FileUploadComponent, this.group, MultiFile)\r\n break;\r\n //ImageUpload\r\n case DataType.Image:\r\n let Image = new ImageUploadOptions();\r\n Image.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n Image.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Image.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Image.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Image.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Image.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n if (this.RepeaterField.ControlOptions.maxFileSizeInMB)\r\n Image.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB\r\n Image.Value = value;\r\n this.renderComponentService.renderDynamicComponent<ImageUploaderComponent>(this.Item, ImageUploaderComponent, this.group, Image)\r\n break;\r\n case DataType.CoverPhoto:\r\n let CoverPhoto = new ImageUploadOptions();\r\n CoverPhoto.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n CoverPhoto.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n CoverPhoto.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n CoverPhoto.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n CoverPhoto.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n CoverPhoto.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n if (this.RepeaterField.ControlOptions.maxFileSizeInMB)\r\n CoverPhoto.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB\r\n CoverPhoto.Value = value;\r\n this.renderComponentService.renderDynamicComponent<ImageUploaderComponent>(this.Item, ImageUploaderComponent, this.group, CoverPhoto)\r\n break;\r\n //Mobile\r\n case DataType.Mobile:\r\n let Mobile = new PhoneOptions();\r\n Mobile.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n Mobile.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Mobile.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Mobile.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Mobile.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Mobile.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Mobile.AllowSearch = true;\r\n Mobile.PhoneValidation = true;\r\n Mobile.SelectFirstCountry = true;\r\n Mobile.EnablePlaceholder = true\r\n Mobile.Value = value;\r\n this.renderComponentService.renderDynamicComponent<PhoneComponent>(this.Item, PhoneComponent, this.group, Mobile)\r\n break;\r\n //MultilineText\r\n case DataType.MultilineText:\r\n let MultilineText = new TextAreaOptions();\r\n MultilineText.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n MultilineText.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n MultilineText.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n MultilineText.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n MultilineText.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n MultilineText.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n if (this.RepeaterField.ControlOptions.maxLength)\r\n MultilineText.MaxLength = this.RepeaterField.ControlOptions.maxLength\r\n if (this.RepeaterField.ControlOptions.minLength)\r\n MultilineText.MinLength = this.RepeaterField.ControlOptions.minLength\r\n MultilineText.Rows = this.RepeaterField.ControlOptions.rows;\r\n MultilineText.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection\r\n MultilineText.Value = value;\r\n this.renderComponentService.renderDynamicComponent<TextAreaComponent>(this.Item, TextAreaComponent, this.group, MultilineText)\r\n break;\r\n //HTML\r\n case DataType.HTML:\r\n let HTML = new HtmlEditorOptions();\r\n HTML.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n HTML.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n HTML.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n HTML.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n HTML.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n HTML.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n if (this.RepeaterField.ControlOptions.maxLength)\r\n HTML.MaxLength = this.RepeaterField.ControlOptions.maxLength\r\n if (this.RepeaterField.ControlOptions.minLength)\r\n HTML.MinLength = this.RepeaterField.ControlOptions.minLength\r\n HTML.Height = this.RepeaterField.ControlOptions.rows;\r\n HTML.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection\r\n HTML.Value = value;\r\n this.renderComponentService.renderDynamicComponent<HtmlEditorComponent>(this.Item, HtmlEditorComponent, this.group, HTML)\r\n break;\r\n //Boolean\r\n case DataType.Boolean:\r\n let Boolean = new ToggleSlideOptions();\r\n Boolean.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n Boolean.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Boolean.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Boolean.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Boolean.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Boolean.Value = value;\r\n this.renderComponentService.renderDynamicComponent<ToggleslideComponent>(this.Item, ToggleslideComponent, this.group, Boolean)\r\n break;\r\n //Location\r\n case DataType.Location:\r\n let Location = new MapAutoCompleteOptions();\r\n Location.Name = this.RepeaterField.ControlOptions.Name + \".\" + changes.itemNumber.currentValue + \".\" + this.controlNumber.toString()\r\n Location.HideLabel = this.RepeaterField.ControlOptions.HideLabel\r\n Location.LabelKey = this.RepeaterField.ControlOptions.LabelKey\r\n Location.IsRequired = this.RepeaterField.ControlOptions.IsRequired;\r\n Location.ViewType = this.RepeaterField.ControlOptions.ViewType;\r\n Location.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : \"\"\r\n Location.Value = value;\r\n this.renderComponentService.renderDynamicComponent<MapAutoCompleteComponent>(this.Item, MapAutoCompleteComponent, this.group, Location)\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit, TemplateRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'repeater-item-field',\r\n templateUrl: './repeater-item-field.component.html'\r\n})\r\nexport class RepeaterItemFieldComponent implements OnInit {\r\n @Input() templates: Array<TemplateRef<any>>;\r\n @Input() filedIndex: number;\r\n @Input() itemIndex: number;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit, QueryList, TemplateRef, ViewChild, ViewChildren } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { RepeaterOptions } from '../../../Shared/Models/RepeaterOptions';\r\nimport { UtilityService } from '@bnsights/bbsf-utilities';\r\n\r\n\r\n@Component({\r\n selector: 'BBSF-repeater-table',\r\n templateUrl: './repeater-table.component.html',\r\n})\r\nexport class RepeaterTableComponent implements OnInit { \r\n @Input() group: FormGroup;\r\n @Input() options: RepeaterOptions;\r\n items: number[] = []\r\n repeaterGroup: FormGroup;\r\n originalItems:any []=[];\r\n\r\n constructor(public utilityService:UtilityService) { }\r\n\r\n ngOnInit(): void {\r\n this.repeaterGroup = new FormGroup({});\r\n this.group.addControl(this.options.Name, this.repeaterGroup);\r\n if(this.options.RepeaterValue.length>0)\r\n {\r\n this.originalItems= this.options.RepeaterValue;\r\n for (let index = 0; index < this.options.RepeaterValue.length; index++) {\r\n this.items.push(index);\r\n }\r\n }\r\n \r\n else\r\n for (let index = 0; index < this.options.MinRequiredItems; index++) {\r\n this.items.push(index);\r\n }\r\n this.repeaterGroup.valueChanges.subscribe((res) => {\r\n let result = [];\r\n let rowNumber = [];\r\n let addItems = [];\r\n for (const key in this.repeaterGroup.controls) {\r\n if (Object.prototype.hasOwnProperty.call(this.repeaterGroup.controls, key)) {\r\n const keySplitArr = key.split('.')\r\n let item = {\r\n [keySplitArr[1]]: { [keySplitArr[0]]: this.group.controls[this.options.Name].value[key] }\r\n }\r\n addItems.push(item)\r\n if (!rowNumber.includes(keySplitArr[1]))\r\n rowNumber.push(keySplitArr[1])\r\n }\r\n }\r\n for (let index = 0; index < rowNumber.length; index++) {\r\n const row = rowNumber[index];\r\n let addObject = {}\r\n let filteredElements = addItems.filter(item => item[row])\r\n for (let index = 0; index < filteredElements.length; index++) {\r\n const filteredElement = filteredElements[index];\r\n for (const key in filteredElement) {\r\n if (Object.prototype.hasOwnProperty.call(filteredElement, key)) {\r\n const element = filteredElement[key];\r\n for (const key in element) {\r\n if (Object.prototype.hasOwnProperty.call(element, key)) {\r\n const value = element[key];\r\n addObject[key] = value\r\n }\r\n }\r\n }\r\n }\r\n }\r\n result.push(addObject)\r\n }\r\n this.options.RepeaterValue = result;\r\n })\r\n\r\n }\r\n\r\n deleteItem(Index) {\r\n if (this.items.length == this.options.MinRequiredItems && this.options.IsRequired)\r\n return;\r\n let deletedControls: any[] = []\r\n let controlNames = this.options.RepeaterStructure.map(e => e.ControlOptions.Name)\r\n for (const key in this.repeaterGroup.controls) {\r\n if (Object.prototype.hasOwnProperty.call(this.repeaterGroup.controls, key)) {\r\n for (let index = 0; index < controlNames.length; index++) {\r\n const element = controlNames[index];\r\n const keySplitArr = key.split('.')\r\n if (keySplitArr[0] + keySplitArr[1] == `${element}${Index}`) {\r\n const element = this.repeaterGroup.controls[key];\r\n deletedControls.push({ [key]: element })\r\n }\r\n }\r\n }\r\n }\r\n for (let index = 0; index < deletedControls.length; index++) {\r\n const element = deletedControls[index];\r\n for (const key in element) {\r\n if (Object.prototype.hasOwnProperty.call(element, key)) {\r\n this.repeaterGroup.removeControl(key)\r\n }\r\n }\r\n }\r\n\r\n this.items = this.items.filter((res) => res != this.items[Index])\r\n }\r\n\r\n addItem() {\r\n if(this.items.length==0)\r\n this.items.push(this.items.length);\r\n else\r\n this.items.push(this.items[this.items.length-1]+1);\r\n}\r\n\r\n\r\n}\r\n","export class RecaptchaModel\r\n{\r\n ID:string;\r\n Text:string;\r\n EncryptedText:string\r\n ImageJpeg:any[]=[];\r\n}","export class CaptchaStyle {\r\n /*Pass hexa-color primary background color*/\r\n BackgroundColorPrimary: string\r\n /*Pass hexa-color secondary background color*/\r\n BackgroundColorSecondary: string\r\n /*Pass hexa-color primary text color*/\r\n TextColorPrimary: string\r\n /*Pass hexa-color secondary text color*/\r\n TextColorSecondary: string\r\n /*Pass font Size */\r\n FontSize: number\r\n}","import { Component, OnInit, Input, Optional, Output, EventEmitter } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, AbstractControl, ControlContainer, FormGroupDirective } from '@angular/forms';\r\nimport { ControlUtility } from '../../Shared/services/ControlUtility';\r\nimport { ControlValidationService, RequestHandlerService, RequestOptionsModel, UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { GlobalSettings } from '../../Shared/services/GlobalSettings.service';\r\nimport { RecaptchaOptions } from '../../Shared/Models/RecaptchaOptions';\r\nimport { RecaptchaModel } from '../../Shared/Models/Recaptcha';\r\nimport { CaptchaStyle } from '../../Shared/Models/CaptchaStyle';\r\n\r\n@Component({\r\n selector: 'BBSF-Recaptcha',\r\n templateUrl: './Recaptcha.component.html',\r\n})\r\nexport class RecaptchaComponent implements OnInit {\r\n markAllAsTouched: boolean;\r\n constructor(private controlUtility: ControlUtility, private requestHandlerService: RequestHandlerService,\r\n public recaptchaControlHost: FormGroupDirective, public UtilityService: UtilityService,\r\n private controlValidationService: ControlValidationService, private globalSettings: GlobalSettings) {\r\n }\r\n @Input() group: FormGroup;\r\n @Input() options: RecaptchaOptions;\r\n @Output() OnChange = new EventEmitter();\r\n\r\n ReCaptchaFormControl: AbstractControl;\r\n validationRules = [];\r\n validationRulesAsync = [];\r\n image: string\r\n recaptchaModel: RecaptchaModel = new RecaptchaModel();\r\n textDir;\r\n\r\n ngOnInit() {\r\n if(this.options.ForceDirection)\r\n this.textDir=this.options.ForceDirection==2?'rtl':'ltr';\r\n else\r\n this.textDir=localStorage.getItem('language')=='ar'?'rtl':'ltr';\r\n this.controlValidationService.isCreatedBefor = false\r\n\r\n this.loadImage();\r\n if (!this.options.ViewType)\r\n this.options.ViewType = this.globalSettings.ViewType;\r\n\r\n this.group.addControl(this.options.Name, new FormControl(''));\r\n this.ReCaptchaFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);\r\n\r\n if (this.options.LabelKey != null && this.options.LabelKey != \"\")\r\n this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);\r\n\r\n if (this.options.IsRequired) {\r\n this.validationRules.push(Validators.required);\r\n }\r\n if (this.options.CustomValidation.length > 0) {\r\n let Validations = this.options.CustomValidation\r\n for (let index = 0; index < Validations.length; index++) {\r\n const Validation = Validations[index];\r\n this.validationRules.push(Validation.functionBody);\r\n }\r\n\r\n }\r\n this.ReCaptchaFormControl.setValidators(this.validationRules);\r\n this.ReCaptchaFormControl.setAsyncValidators(this.validationRulesAsync);\r\n if (this.options.IsDisabled) {\r\n this.ReCaptchaFormControl.disable();\r\n }\r\n\r\n this.recaptchaControlHost.ngSubmit.subscribe((value) => {\r\n this.group.markAllAsTouched()\r\n this.markAllAsTouched = true\r\n })\r\n }\r\n\r\n loadImage() {\r\n let style: CaptchaStyle = new CaptchaStyle();\r\n style.BackgroundColorPrimary = this.options.BackgroundColorPrimary;\r\n style.BackgroundColorSecondary = this.options.BackgroundColorSecondary;\r\n style.TextColorPrimary= this.options.TextColorPrimary;\r\n style.TextColorSecondary = this.options.TextColorSecondary;\r\n style.FontSize = this.options.FontSize;\r\n let requestOptionsModel = new RequestOptionsModel()\r\n requestOptionsModel.disableBlockUI = true;\r\n requestOptionsModel.disableSuccessNotification = true;\r\n this.requestHandlerService.post(this.options.ActionURL, style, null, null, requestOptionsModel).subscribe((res) => {\r\n let model = res as any\r\n this.recaptchaModel.ID = model.id;\r\n this.recaptchaModel.EncryptedText = model.encryptedText;\r\n this.recaptchaModel.ImageJpeg = model.imageJpeg;\r\n this.image = 'data:image/jpeg;base64,' + this.recaptchaModel.ImageJpeg;\r\n })\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.controlUtility.setAttributeForControl(this.options)\r\n }\r\n\r\n resetError = () => {\r\n this.controlValidationService.RemoveGlobalError();\r\n }\r\n\r\n showGlobalError() {\r\n this.controlUtility.showGlobalError()\r\n }\r\n\r\n getErrorValidation(ErrorList) {\r\n\r\n if (this.markAllAsTouched && this.group.invalid) {\r\n this.showGlobalError()\r\n this.markAllAsTouched = false\r\n }\r\n\r\n return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);\r\n }\r\n\r\n\r\n onTextChange(valueText) {\r\n let value = valueText.target.value;\r\n this.recaptchaModel.Text = value;\r\n this.group.get(this.options.Name).setValue(this.recaptchaModel);\r\n this.options.Value = this.recaptchaModel;\r\n this.OnChange.emit(this.ReCaptchaFormControl.value);\r\n }\r\n //External Method\r\n RemoveRequiredValidation = () => {\r\n this.controlUtility.RemoveRequiredValidation(this.ReCaptchaFormControl, this.validationRules, this.options)\r\n }\r\n //External Method\r\n AddRequiredValidation = () => {\r\n this.controlUtility.AddRequiredValidation(this.ReCaptchaFormControl, this.validationRules, this.options)\r\n }\r\n\r\n //External Method\r\n RemoveCustomValidation = (CustomValidation) => {\r\n this.controlUtility.RemoveCustomValidation(this.ReCaptchaFormControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n AddCustomValidation = (CustomValidation) => {\r\n this.controlUtility.AddCustomValidation(this.ReCaptchaFormControl, this.validationRules, CustomValidation)\r\n }\r\n //External Method\r\n IsValid = () => {\r\n this.controlUtility.IsValid(this.ReCaptchaFormControl)\r\n }\r\n}\r\n\r\n\r\n","import { Component, Injector, Input, OnInit } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { UtilityService } from '@bnsights/bbsf-utilities';\r\nimport { DataType } from '../../Shared/Enums/Enums';\r\nimport { PageHeaderOptions } from '../../Shared/Models/page-header-options';\r\n@Component({\r\n selector: 'bbsf-page-header-component',\r\n templateUrl: './page-header-component.component.html'\r\n})\r\nexport class PageHeaderComponentComponent implements OnInit {\r\n EN: boolean;\r\n @Input() group: FormGroup;\r\n @Input() options: PageHeaderOptions;\r\n\r\n public DataTypeEnum = DataType;\r\n\r\n constructor(private router: Router,public utilityService: UtilityService) {\r\n \r\n }\r\n\r\n translate(key: string): string {\r\n return this.utilityService.getResourceValue(key);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.EN = this.utilityService.isCurrentLanguageEnglish();\r\n }\r\n\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'bbsfDateTime'\r\n})\r\nexport class BBSFDateTimePipe implements PipeTransform {\r\n\r\n constructor(public datePipe: DatePipe) { }\r\n transform(value: Date) {\r\n let latest_date = this.datePipe.transform(value, 'dd/MM/yyyy hh:mm a');\r\n return latest_date;\r\n }\r\n}\r\n\r\n\r\n","import { DatePipe } from '@angular/common';\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'bbsfDate'\r\n})\r\nexport class BBSFDatePipe implements PipeTransform {\r\n\r\n constructor(public datePipe: DatePipe){}\r\n transform(value: Date) {\r\n let latest_date =this.datePipe.transform(value, 'dd/MM/yyyy');\r\n return latest_date;\r\n }\r\n\r\n}\r\n","\r\nimport { ModuleWithProviders } from '@angular/core';\r\nexport enum TagInputView {\r\n WithImage = 1,\r\n WithoutImage = 2,\r\n WithInitial = 3,\r\n \r\n }","import { Component, forwardRef, Input, Output, EventEmitter, OnChanges, SimpleChanges, DoCheck, OnInit } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\nimport { TypeaheadMatch } from 'ngx-bootstrap/typeahead/public_api';\r\nimport { TagInputView } from '../Enums/TagInputView';\r\n\r\nconst noop = () => { };\r\n\r\nconst TAGS_INPUT_TEMPLATE = `\r\n\r\n<div class=\"tags-input\">\r\n<span class=\"tags-input__tag label label-primary badge badge-primary\" *ngFor=\"let tag of tags\">\r\n\r\n<span [ngSwitch]=\"ViewMode\">\r\n<span *ngSwitchCase=\"tagInputViewEnum.WithImage\">\r\n<img style=\"border-radius:50%; height:40px; width: 40px; float:left; margin-left:5px ; margin-top: 5px;margin-right: 5px;\"\r\nsrc=\"{{(tag.imageURL?tag.imageURL:defaultImageURL)}}\" />\r\n</span>\r\n\r\n<span *ngSwitchCase=\"tagInputViewEnum.WithInitial\">\r\n<div class=\"user-initials\">{{calculateInitials(tag.name)}}</div>\r\n</span>\r\n\r\n<span *ngSwitchDefault>\r\n</span>\r\n\r\n</span>\r\n {{tag[displayField]}}\r\n <span *ngIf=\"isDeleteable(tag)\" role=\"button\" class=\"tags-input__tag-remove-btn\" (click)=\"removeTag(tag)\"\r\n (touch)=\"removeTag(tag)\">\r\n <span aria-hidden=\"true\">×</span>\r\n <span class=\"sr-only\">Close</span>\r\n </span>\r\n</span>\r\n\r\n<input *ngIf=\"options === null; else withTypeahead\" class=\"tags-input__input-field\" type=\"text\"\r\n [placeholder]=\"getPlaceholder()\" name=\"tags\" (keyup.enter)=\"addTag(tagInput)\"\r\n (keydown.backspace)=\"removeLastTag(tagInput)\" [disabled]=\"!canAddTags || maximumOfTagsReached()\"\r\n [hidden]=\"!canAddTags || maximumOfTagsReached()\" #tagInput />\r\n\r\n<ng-template #withTypeahead>\r\n <span [ngSwitch]=\"ViewMode\">\r\n <span *ngSwitchCase=\"tagInputViewEnum.WithImage\">\r\n <input *ngIf=\"(options !== null)\" class=\"tags-input__input-field\" type=\"text\" [placeholder]=\"getPlaceholder()\"\r\n name=\"tags\" (keydown.backspace)=\"removeLastTag(tagInput)\" [(ngModel)]=\"selected\" [typeahead]=\"options\"\r\n [typeaheadOptionField]=\"displayField\" (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\r\n (typeaheadNoResults)=\"typeaheadOnNoMatch($event)\" [typeaheadMinLength]=\"minLengthBeforeOptions\"\r\n [typeaheadScrollable]=\"scrollableOptions\" [typeaheadLatinize]=\"true\"\r\n [typeaheadItemTemplate]=\"itemTemplateWithImage\" [typeaheadOptionsInScrollableView]=\"scrollableOptionsInView\"\r\n [disabled]=\"!canAddTags || maximumOfTagsReached()\" [hidden]=\"!canAddTags || maximumOfTagsReached()\"\r\n (blur)=\"onBlur()\" autocomplete=\"off\"\r\n #tagInput />\r\n </span>\r\n\r\n <span *ngSwitchCase=\"tagInputViewEnum.WithoutImage\">\r\n <input *ngIf=\"(options !== null)\" class=\"tags-input__input-field\" type=\"text\" [placeholder]=\"getPlaceholder()\"\r\n name=\"tags\" (keydown.backspace)=\"removeLastTag(tagInput)\" [(ngModel)]=\"selected\" [typeahead]=\"options\"\r\n [typeaheadOptionField]=\"displayField\" (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\r\n (typeaheadNoResults)=\"typeaheadOnNoMatch($event)\" [typeaheadMinLength]=\"minLengthBeforeOptions\"\r\n [typeaheadScrollable]=\"scrollableOptions\" [typeaheadLatinize]=\"true\"\r\n [typeaheadItemTemplate]=\"itemTemplateWithoutImage\"\r\n [typeaheadOptionsInScrollableView]=\"scrollableOptionsInView\"\r\n [disabled]=\"!canAddTags || maximumOfTagsReached()\" [hidden]=\"!canAddTags || maximumOfTagsReached()\"\r\n (blur)=\"onBlur()\" autocomplete=\"off\"\r\n #tagInput />\r\n </span>\r\n\r\n <span *ngSwitchCase=\"tagInputViewEnum.WithInitial\">\r\n <input *ngIf=\"(options !== null)\" class=\"tags-input__input-field\" type=\"text\" [placeholder]=\"getPlaceholder()\"\r\n name=\"tags\" (keydown.backspace)=\"removeLastTag(tagInput)\" [(ngModel)]=\"selected\" [typeahead]=\"options\"\r\n [typeaheadOptionField]=\"displayField\" (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\r\n (typeaheadNoResults)=\"typeaheadOnNoMatch($event)\" [typeaheadMinLength]=\"minLengthBeforeOptions\"\r\n [typeaheadScrollable]=\"scrollableOptions\" [typeaheadLatinize]=\"true\"\r\n [typeaheadItemTemplate]=\"itemTemplateWithoutInitial\"\r\n [typeaheadOptionsInScrollableView]=\"scrollableOptionsInView\"\r\n [disabled]=\"!canAddTags || maximumOfTagsReached()\" [hidden]=\"!canAddTags || maximumOfTagsReached()\"\r\n (blur)=\"onBlur()\" autocomplete=\"off\"\r\n #tagInput />\r\n </span>\r\n\r\n <span *ngSwitchDefault>\r\n <input *ngIf=\"(options !== null)\" class=\"tags-input__input-field\" type=\"text\" [placeholder]=\"getPlaceholder()\"\r\n name=\"tags\" (keydown.backspace)=\"removeLastTag(tagInput)\" [(ngModel)]=\"selected\" [typeahead]=\"options\"\r\n [typeaheadOptionField]=\"displayField\" (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\r\n (typeaheadNoResults)=\"typeaheadOnNoMatch($event)\" [typeaheadMinLength]=\"minLengthBeforeOptions\"\r\n [typeaheadScrollable]=\"scrollableOptions\" [typeaheadLatinize]=\"true\"\r\n [typeaheadItemTemplate]=\"itemTemplateWithoutImage\"\r\n [typeaheadOptionsInScrollableView]=\"scrollableOptionsInView\"\r\n [disabled]=\"!canAddTags || maximumOfTagsReached()\" [hidden]=\"!canAddTags || maximumOfTagsReached()\"\r\n (blur)=\"onBlur()\" autocomplete=\"off\"\r\n #tagInput />\r\n </span>\r\n\r\n </span>\r\n\r\n</ng-template>\r\n\r\n<ng-template #itemTemplateWithImage let-model=\"item\" let-index=\"index\">\r\n <img\r\n style=\"border-radius:50%; height:40px; width: 40px; float:left; margin-left:5px ; margin-top: 5px;margin-right: 5px;\"\r\n src=\"{{(model.imageURL?model.imageURL:defaultImageURL)}}\" />\r\n <div>\r\n <a [innerHTML]=\"model.name\"></a>\r\n <p *ngIf=\"showDescription\">\r\n {{model.description}}\r\n </p>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #itemTemplateWithoutImage let-model=\"item\" let-index=\"index\">\r\n <div>\r\n <a [innerHTML]=\"model.name\"></a>\r\n <p *ngIf=\"showDescription\">\r\n {{model.description}}\r\n </p>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #itemTemplateWithoutInitial let-model=\"item\" let-index=\"index\">\r\n <div class=\"user-image\">\r\n <div class=\"user-initials\">{{calculateInitials(model.name)}}</div>\r\n </div>\r\n <div>\r\n <a [innerHTML]=\"model.name\"></a>\r\n <p *ngIf=\"showDescription\">\r\n {{model.description}}\r\n </p>\r\n </div>\r\n</ng-template>\r\n</div>\r\n`;\r\n\r\nconst TAGS_INPUT_STYLE = `\r\n :host {\r\n overflow: auto;\r\n white-space: nowrap;\r\n }\r\n\r\n .tags-input {\r\n align-items: center;\r\n display: flex;\r\n flex-wrap: wrap;\r\n }\r\n\r\n .tags-input__tag {\r\n display: inline-block;\r\n margin-bottom: 2px;\r\n margin-right: 5px;\r\n padding-right: 0.3em;\r\n }\r\n\r\n .tags-input__tag-remove-btn {\r\n cursor: pointer;\r\n display: inline-block;\r\n font-size: 12px;\r\n margin: -3px 0 0 3px;\r\n padding: 0;\r\n vertical-align: top;\r\n }\r\n\r\n .tags-input__input-field {\r\n border: none;\r\n flex-grow: 1;\r\n outline: none;\r\n }\r\n`;\r\n\r\nconst CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => BTagsInputComponent),\r\n multi: true\r\n};\r\n\r\nexport interface TagsChangedEvent {\r\n change: string,\r\n tag: any\r\n}\r\n\r\n@Component({\r\n selector: 'b-tags-input',\r\n template: TAGS_INPUT_TEMPLATE,\r\n styles: [TAGS_INPUT_STYLE],\r\n providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR]\r\n})\r\nexport class BTagsInputComponent implements ControlValueAccessor {\r\n\r\n selected: string = '';\r\n public tags: Array<any> = [];\r\n private onTouchedCallback: () => void = noop;\r\n private onChangeCallback: (_: any) => void = noop;\r\n public tagInputViewEnum = TagInputView;\r\n @Input() maxTags: number;\r\n @Input() removeLastOnBackspace: boolean = false;\r\n @Input() canDeleteTags: boolean = true;\r\n @Input() canAddTags: boolean = true;\r\n @Input() ViewMode: TagInputView = TagInputView.WithoutImage;\r\n @Input() placeholder: string = '';\r\n @Input() showDescription: boolean = true;\r\n @Input() options: any = null;\r\n @Input() defaultImageURL: any = null;\r\n displayField: string = 'name';\r\n @Input() minLengthBeforeOptions: number = 1;\r\n @Input() scrollableOptions: boolean = false;\r\n @Input() scrollableOptionsInView: number = 5;\r\n @Output() onTagsChanged: EventEmitter<TagsChangedEvent> = new EventEmitter();\r\n @Output() onMaxTagsReached: EventEmitter<void> = new EventEmitter();\r\n @Output() onNoOptionsMatch: EventEmitter<boolean> = new EventEmitter();\r\n @Output() onBlurInput: EventEmitter<void> = new EventEmitter();\r\n getPlaceholder(): string {\r\n if (this.tags && this.tags.length > 0) {\r\n return '';\r\n }\r\n return this.placeholder;\r\n }\r\n\r\n private tagsChanged(type: string, tag: any): void {\r\n this.onChangeCallback(this.tags);\r\n this.onTagsChanged.emit({\r\n change: type,\r\n tag: tag\r\n });\r\n if (this.maximumOfTagsReached()) {\r\n this.onMaxTagsReached.emit();\r\n }\r\n }\r\n\r\n removeLastTag(tagInput: HTMLInputElement): void {\r\n if (!this.removeLastOnBackspace || !this.tags?.length) {\r\n return;\r\n }\r\n\r\n if (tagInput.value === '') {\r\n this.removeTag(this.tags[this.tags.length - 1]);\r\n }\r\n }\r\n\r\n addTag(tagInput: HTMLInputElement): void {\r\n if (tagInput.value.trim() !== '') {\r\n let tag = {\r\n [this.displayField]: tagInput.value\r\n };\r\n this.addPredefinedTag(tag);\r\n }\r\n tagInput.value = '';\r\n }\r\n\r\n private addPredefinedTag(tag: Object): void {\r\n if (this.tags == null)\r\n this.tags = [];\r\n if (!this.maximumOfTagsReached()) {\r\n this.tags.push(tag);\r\n this.tagsChanged('add', tag);\r\n }\r\n }\r\n\r\n removeTag(tagToRemove: any): void {\r\n if (!this.isDeleteable(tagToRemove)) {\r\n return;\r\n }\r\n this.tags = this.tags.filter(tag => tagToRemove !== tag);\r\n this.tagsChanged('remove', tagToRemove);\r\n }\r\n\r\n maximumOfTagsReached(): boolean {\r\n return typeof this.maxTags !== 'undefined' && this.tags && this.tags.length >= this.maxTags;\r\n }\r\n\r\n isDeleteable(tag: any) {\r\n if (typeof tag.deleteable !== \"undefined\" && !tag.deleteable) {\r\n return false;\r\n }\r\n return this.canDeleteTags;\r\n }\r\n\r\n typeaheadOnSelect(e: TypeaheadMatch): void {\r\n if (typeof e.item === 'string') {\r\n this.addPredefinedTag({\r\n [this.displayField]: e.value\r\n });\r\n } else {\r\n this.addPredefinedTag(e.item);\r\n }\r\n this.selected = '';\r\n }\r\n\r\n typeaheadOnNoMatch(e: any): void {\r\n if (typeof this.onNoOptionsMatch !== 'undefined') {\r\n this.onNoOptionsMatch.emit(e)\r\n }\r\n }\r\n\r\n writeValue(value: any) {\r\n if (value !== this.tags) {\r\n this.tags = value;\r\n }\r\n }\r\n\r\n registerOnChange(fn: any) {\r\n this.onChangeCallback = fn;\r\n }\r\n\r\n registerOnTouched(fn: any) {\r\n this.onTouchedCallback = fn;\r\n }\r\n\r\n calculateInitials(name: string): string {\r\n var fullName = name.split(' ');\r\n var initials = \"\"\r\n if (fullName.length > 1)\r\n initials = fullName.shift().charAt(0) + fullName.pop().charAt(0);\r\n else\r\n initials = fullName.shift().charAt(0)\r\n return initials.toUpperCase();\r\n }\r\n\r\n onBlur(): void {\r\n this.onBlurInput.emit();\r\n }\r\n // (keydown.Tab) = \"onTab($event)\"\r\n //onTab(event) {\r\n // this.onTabInput.emit();\r\n // event.preventDefault();\r\n // event.stopPropagation();\r\n //}\r\n}\r\n","import { FullCalendarModule } from '@fullcalendar/angular';\r\nimport dayGridPlugin from '@fullcalendar/daygrid';\r\nimport timeGridPlugin from '@fullcalendar/timegrid';\r\nimport listPlugin from '@fullcalendar/list';\r\nimport interactionPlugin from '@fullcalendar/interaction';\r\nimport { NgModule, Injector, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, ModuleWithProviders } from '@angular/core';\r\nimport { BlockUIModule } from 'ng-block-ui';\r\nimport { FormGroupDirective, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { HttpModule } from '@angular/http';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { NgxPermissionsModule } from 'ngx-permissions';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\nimport { StoreDevtoolsModule } from '@ngrx/store-devtools';\r\nimport { CommonModule, DatePipe } from '@angular/common';\r\nimport { NgxIntlTelInputModule } from 'ngx-intl-tel-input';\r\nimport { ErrorMassageValidation } from '../Shared/services/validationErrorMassage.service';\r\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\r\nimport { DateInputComponent } from './DateTimePicker/DateTimePicker.component';\r\nimport { FileUploadComponent } from './FileUplaod/FileUplaod.component';\r\nimport { MultiLingualTextBoxComponent } from './MultiLingualTextBox/MultiLingualTextBox.component';\r\nimport { ControlUtility } from '../Shared/services/ControlUtility';\r\nimport { TextAreaComponent } from './TextArea/TextArea.component';\r\nimport { MultiLingualTextAreaComponent } from './MultiLingualTextArea/MultiLingualTextArea.component';\r\nimport { CheckBoxComponent } from './CheckBox/CheckBox.component';\r\nimport { BrowserAnimationsModule, NoopAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { OwlDateTimeModule, OwlNativeDateTimeModule, OWL_DATE_TIME_LOCALE } from 'ng-pick-datetime';\r\nimport { NgMultiSelectDropDownModule } from 'ng-multiselect-dropdown';\r\nimport { DropdownListComponent } from './DropdownList/DropdownList.component';\r\nimport { AngularMultiSelectModule } from 'angular2-multiselect-dropdown';\r\nimport { PhoneComponent } from './Phone/Phone.component';\r\n// import { ToggleslideComponent } from './Toggleslide/toggleslide.component';\r\nimport { HtmlEditorComponent } from './HtmlEditor/HtmlEditor.component';\r\nimport { NgxSummernoteModule } from 'ngx-summernote';\r\nimport { MultiLingualHtmlEditorComponent } from './MultiLingualHtmlEditor/MultiLingualHtmlEditor.component';\r\nimport { NgxMaskModule, IConfig } from 'ngx-mask'\r\nimport { TooltipModule } from '@syncfusion/ej2-angular-popups';\r\nimport { FileUploadModule } from 'ng2-file-upload';\r\nimport { ImageUploaderComponent } from './ImageUpload/ImageUpload.component';\r\nimport { NgxDropzoneModule } from 'ngx-dropzone';\r\nimport { AngularCropperjsModule } from 'angular-cropperjs';\r\nimport { ImageCropperModule } from 'ngx-image-cropper';\r\nimport { NgbActiveModal, NgbModal, NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ProfileImageUploaderComponent } from './ProfileImageUploader/ProfileImageUploader.component';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { NgxTypeaheadModule } from 'ngx-typeahead';\r\nimport { AutocompleteTextBoxComponent } from './AutocompleteTextBox/AutocompleteTextBox.component';\r\nimport { NgxTagsInputModule } from 'ngx-tags-input';\r\nimport { TagsInputComponent } from './TagsInput/TagsInput.component';\r\nimport { PagingComponent } from './Paging/Paging.component';\r\nimport { JwPaginationComponent } from './Paging/JwPagination.component';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { OnPagingFiltersChangeService } from '../Shared/services/OnPagingFiltersChange.service';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { RadioButtonComponent } from './RadioButton/RadioButton.component';\r\nimport { TextboxComponent } from './TextBox/TextBox.component';\r\nimport { MapAutoCompleteComponent } from './MapAutoComplete/MapAutoComplete.component';\r\nimport { AgmCoreModule } from '@agm/core';\r\nimport { MatGoogleMapsAutocompleteModule } from '@angular-material-extensions/google-maps-autocomplete';\r\nimport { CalendarComponent } from './Calendar/Calendar.component';\r\nimport { TypeaheadModule } from 'ngx-bootstrap/typeahead';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { AngularEditorModule } from '@kolkov/angular-editor';\r\nimport { AutocompleteLibModule } from 'angular-ng-autocomplete';\r\nimport { InlineSVGModule } from 'ng-inline-svg';\r\nimport { BBSFUtilitiesModule, environment } from '@bnsights/bbsf-utilities';\r\nimport { FormComponent } from './Form/Form.component';\r\nimport { ConfirmationModalComponent } from './ConfirmationModal/ConfirmationModal.component';\r\nimport { SweetAlert2Module } from '@sweetalert2/ngx-sweetalert2';\r\nimport { RepeaterComponent } from './Repeater/repeater/repeater.component';\r\nimport { RepeaterFieldBuilderComponent } from './Repeater/repeater-field-builder/repeater-field-builder.component';\r\nimport { NgTemplateNameDirective } from '../Shared/Directives/template-name.directive';\r\nimport { RepeaterItemFieldComponent } from './Repeater/repeater-item-field/repeater-item-field.component';\r\nimport { RenderComponentService } from '../Shared/services/render-component-service.service';\r\nimport { RepeaterTableComponent } from './Repeater/repeater-table/repeater-table.component';\r\n// import { BBSFDateTimePipe } from '../shared/Pipes/bbsf-date-time.pipe';\r\n// import { BBSFDatePipe } from '../shared/Pipes/bbsf-date.pipe';\r\n// import { BTagsInputComponent } from '../Shared/components/ng-tag-input';\r\nimport { RecaptchaComponent } from './Recaptcha/Recaptcha.component';\r\nimport { PageHeaderComponentComponent } from './page-header-component/page-header-component.component';\r\nimport { ToggleslideComponent } from './Toggleslide/toggleslide.component';\r\nimport { BBSFDateTimePipe } from '../shared/Pipes/bbsf-date-time.pipe';\r\nimport { BBSFDatePipe } from '../shared/Pipes/bbsf-date.pipe';\r\nimport { BTagsInputComponent } from '../Shared/Components/ng-tag-input';\r\n\r\nexport let options: Partial<IConfig> | (() => Partial<IConfig>);\r\n\r\nexport let AppInjector: Injector;\r\n\r\n\r\n\r\n// FullCalendarModule.registerPlugins([\r\n// dayGridPlugin,\r\n// timeGridPlugin,\r\n// listPlugin,\r\n// interactionPlugin\r\n// ])\r\n@NgModule({\r\n declarations: [\r\n DateInputComponent,\r\n FileUploadComponent,\r\n MultiLingualTextBoxComponent,\r\n TextboxComponent,\r\n TextAreaComponent,\r\n MultiLingualTextAreaComponent,\r\n CheckBoxComponent,\r\n DropdownListComponent,\r\n PhoneComponent,\r\n ToggleslideComponent,\r\n HtmlEditorComponent,\r\n MultiLingualHtmlEditorComponent,\r\n // MultiLingualHtmlEditorComponent,\r\n ImageUploaderComponent,\r\n ProfileImageUploaderComponent,\r\n CalendarComponent,\r\n MapAutoCompleteComponent,\r\n AutocompleteTextBoxComponent,\r\n TagsInputComponent,\r\n PagingComponent,\r\n JwPaginationComponent,\r\n RadioButtonComponent,\r\n FormComponent,\r\n ConfirmationModalComponent,\r\n RepeaterComponent,\r\n RepeaterFieldBuilderComponent,\r\n NgTemplateNameDirective,\r\n RepeaterItemFieldComponent,\r\n RepeaterTableComponent,\r\n BBSFDateTimePipe,\r\n BBSFDatePipe,\r\n BTagsInputComponent,\r\n RecaptchaComponent,\r\n PageHeaderComponentComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n InfiniteScrollModule,\r\n NgSelectModule,\r\n NgxTagsInputModule,\r\n NgxTypeaheadModule,\r\n AgmCoreModule.forRoot({\r\n // &language=${UtilityService.CurrentLanguage}\r\n apiKey: environment.BBSF_GoogleMapKey,\r\n libraries: ['places'],\r\n }),\r\n MatGoogleMapsAutocompleteModule,\r\n FullCalendarModule,\r\n AngularCropperjsModule,\r\n ImageCropperModule,\r\n NgbModule,\r\n NgxDropzoneModule,\r\n FileUploadModule,\r\n TooltipModule,\r\n NgxMaskModule.forRoot(),\r\n NgxSummernoteModule,\r\n MatSlideToggleModule,\r\n NgxIntlTelInputModule,\r\n AngularMultiSelectModule,\r\n NgMultiSelectDropDownModule.forRoot(),\r\n OwlDateTimeModule,\r\n OwlNativeDateTimeModule,\r\n CommonModule,\r\n BlockUIModule.forRoot(),\r\n ReactiveFormsModule,\r\n HttpModule,\r\n RouterModule,\r\n ToastrModule.forRoot(),\r\n HttpClientModule,\r\n NgxPermissionsModule.forRoot(),\r\n OverlayModule,\r\n StoreDevtoolsModule.instrument(),\r\n FormsModule,\r\n BsDatepickerModule.forRoot(),\r\n TypeaheadModule.forRoot(),\r\n AngularEditorModule,\r\n AutocompleteLibModule,\r\n BBSFUtilitiesModule,\r\n InlineSVGModule.forRoot(),\r\n SweetAlert2Module,\r\n\r\n ],\r\n providers: [\r\n ErrorMassageValidation,\r\n ControlUtility,\r\n OnPagingFiltersChangeService,\r\n TranslateService,\r\n FormGroupDirective,\r\n NgbModal,\r\n NgbActiveModal,\r\n DatePipe,\r\n BBSFDateTimePipe,\r\n BBSFDatePipe,\r\n RenderComponentService,\r\n { provide: OWL_DATE_TIME_LOCALE, useValue: ControlUtility.getLocal() },\r\n\r\n\r\n ],\r\n schemas: [\r\n NO_ERRORS_SCHEMA\r\n ],\r\n\r\n exports: [\r\n DateInputComponent,\r\n FileUploadComponent,\r\n MultiLingualTextBoxComponent,\r\n TextboxComponent,\r\n TextAreaComponent,\r\n MultiLingualTextAreaComponent,\r\n CheckBoxComponent,\r\n DropdownListComponent,\r\n PhoneComponent,\r\n ToggleslideComponent,\r\n HtmlEditorComponent,\r\n MultiLingualHtmlEditorComponent,\r\n ImageUploaderComponent,\r\n ProfileImageUploaderComponent,\r\n CalendarComponent,\r\n MapAutoCompleteComponent,\r\n AutocompleteTextBoxComponent,\r\n TagsInputComponent,\r\n PagingComponent,\r\n JwPaginationComponent,\r\n RadioButtonComponent,\r\n FormComponent,\r\n PagingComponent,\r\n ConfirmationModalComponent,\r\n RepeaterComponent,\r\n RepeaterFieldBuilderComponent,\r\n NgTemplateNameDirective,\r\n RepeaterItemFieldComponent,\r\n RepeaterTableComponent,\r\n BBSFDateTimePipe,\r\n BBSFDatePipe,\r\n RecaptchaComponent,\r\n PageHeaderComponentComponent\r\n ]\r\n})\r\nexport class BBSFControlsModule {\r\n\r\n constructor(private injector: Injector, private translate: TranslateService) {\r\n AppInjector = this.injector;\r\n\r\n }\r\n\r\n}\r\n","import { AbstractControl } from '@angular/forms';\r\n\r\nexport class CustomValidation\r\n{\r\n massage:string;\r\n functionBody:any;\r\n}\r\nexport class CustomValidator{\r\n // Number only validation\r\n static numeric(control: AbstractControl) {\r\n let val = control.value;\r\n \r\n if (val === null || val === '') return null;\r\n \r\n if (!val.toString().match(/^[0-9]+(\\.?[0-9]+)?$/)) return { 'invalidNumber': true };\r\n \r\n return null;\r\n }\r\n }","import { Injector, Injectable } from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport {\r\n UtilityService,\r\n AuthService,\r\n ConfigurationService,\r\n} from '@bnsights/bbsf-utilities';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { AbstractControl, FormGroup, Validators } from '@angular/forms';\r\nimport { ControlUtility } from '../services/ControlUtility';\r\nimport { FilterItem } from '../Models/FilterItem';\r\nimport { CustomValidation } from '../Models/CustomValidation';\r\nimport { EnglishArabicDTO } from '../Models/EnglishArabicDTO';\r\nimport * as saveAs from 'file-saver';\r\nimport { EnvironmentService } from '@bnsights/bbsf-utilities';\r\n\r\n@Injectable()\r\nexport abstract class AppBaseComponent {\r\n public utilityService: UtilityService;\r\n public modalService: NgbModal;\r\n private controlUtility: ControlUtility;\r\n private titleService: Title;\r\n private auhService: AuthService;\r\n private configurationService: ConfigurationService;\r\n public environmentService: EnvironmentService;\r\n public isEN: boolean;\r\n //Labels\r\n public exportLabel: string;\r\n public filtersLabel: string;\r\n public addLabel: string;\r\n public userName: string;\r\n public pageTitle: string = '';\r\n public PageCount: number = 12;\r\n constructor(injector: Injector) {\r\n this.utilityService = injector.get(UtilityService);\r\n this.controlUtility = injector.get(ControlUtility);\r\n this.configurationService = injector.get(ConfigurationService);\r\n this.environmentService = injector.get(EnvironmentService);\r\n this.modalService = injector.get(NgbModal);\r\n this.titleService = injector.get(Title);\r\n this.auhService = injector.get(AuthService);\r\n this.exportLabel = this.utilityService.getResourceValue('Export');\r\n this.filtersLabel = this.utilityService.getResourceValue('Filters');\r\n this.addLabel = this.utilityService.getResourceValue('Add');\r\n this.userName = this.auhService.name();\r\n this.isEN = this.utilityService.isCurrentLanguageEnglish();\r\n }\r\n updatePageTitle(title: string | undefined) {\r\n this.titleService.setTitle(this.calculatePageTitle(title));\r\n }\r\n\r\n l(key: string): string {\r\n return this.utilityService.getResourceValue(key);\r\n }\r\n getConfigurationValue(key: string) {\r\n return this.configurationService.getConfigurationValue(key);\r\n }\r\n getLanguageModeValue() {\r\n return this.configurationService.getConfigurationValue('LanguageMode');\r\n }\r\n stopBlockUI() {\r\n this.utilityService.stopBlockUI();\r\n }\r\n\r\n startBlockUI() {\r\n this.utilityService.startBlockUI();\r\n }\r\n\r\n openModal(modal: any, size?: string) {\r\n if (size)\r\n this.modalService.open(modal, {\r\n size: size,\r\n backdrop: 'static',\r\n keyboard: false,\r\n });\r\n else this.modalService.open(modal, { backdrop: 'static', keyboard: false });\r\n }\r\n\r\n download(fileDTO: any, fileName: string): void {\r\n /*let blob = new Blob([file]);*/\r\n let file = new Blob([fileDTO], {\r\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n });\r\n saveAs(file, fileName);\r\n }\r\n\r\n downloadPDF(fileDTO: any, fileName: string): void {\r\n let file = new Blob([fileDTO], { type: \"application/pdf\" });\r\n saveAs(file, fileName);\r\n }\r\n downloadWord(fileDTO: any, fileName: string): void {\r\n let file = new Blob([fileDTO], { type: \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\" });\r\n saveAs(file, fileName);\r\n }\r\n\r\n\r\n private base64toBlob(base64Data, contentType) {\r\n contentType = contentType || '';\r\n var sliceSize = 1024;\r\n var byteCharacters = atob(base64Data);\r\n var bytesLength = byteCharacters.length;\r\n var slicesCount = Math.ceil(bytesLength / sliceSize);\r\n var byteArrays = new Array(slicesCount);\r\n\r\n for (var sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) {\r\n var begin = sliceIndex * sliceSize;\r\n var end = Math.min(begin + sliceSize, bytesLength);\r\n\r\n var bytes = new Array(end - begin);\r\n for (var offset = begin, i = 0; offset < end; ++i, ++offset) {\r\n bytes[i] = byteCharacters[offset].charCodeAt(0);\r\n }\r\n byteArrays[sliceIndex] = new Uint8Array(bytes);\r\n }\r\n return new Blob(byteArrays, { type: contentType });\r\n }\r\n\r\n private calculatePageTitle(title: string | undefined): string | undefined {\r\n return title\r\n ? title.substring(0, 100) + ` | ${this.l('ApplicationName')}`\r\n : `${this.l('ApplicationName')}`;\r\n }\r\n\r\n getPagingFiltersValues(form: FormGroup, filters: FilterItem[]): any {\r\n let model = new Object();\r\n for (var i = 0; i < filters.length; i++) {\r\n let filterItem = filters[i];\r\n if (form.controls[filterItem.FormControlName].value == undefined)\r\n continue;\r\n model[filterItem.ActionParameterName] =\r\n form.controls[filterItem.FormControlName].value == undefined\r\n ? ''\r\n : form.controls[filterItem.FormControlName].value;\r\n // params = params.append(filterItem.ActionParameterName, form.controls[filterItem.FormControlName].value == undefined ? '' : form.controls[filterItem.FormControlName].value);\r\n }\r\n return model;\r\n }\r\n\r\n removeControl(controlName: string, form: FormGroup) {\r\n form.removeControl(controlName);\r\n }\r\n\r\n copyToClipboard(val: string) {\r\n const selBox = document.createElement('textarea');\r\n selBox.style.position = 'fixed';\r\n selBox.style.left = '0';\r\n selBox.style.top = '0';\r\n selBox.style.opacity = '0';\r\n selBox.value = val;\r\n document.body.appendChild(selBox);\r\n selBox.focus();\r\n selBox.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(selBox);\r\n this.utilityService.notifySuccessMessage(this.l('CopiedSuccessfully'));\r\n }\r\n\r\n addRequiredRule(control: AbstractControl, controlOptions: any) {\r\n this.controlUtility.addRequiredToControl(control, controlOptions);\r\n }\r\n\r\n removeRequiredRule(control: AbstractControl, controlOptions: any) {\r\n this.controlUtility.removeRequiredFromControl(control, controlOptions);\r\n }\r\n\r\n validateDates(\r\n form: FormGroup,\r\n fromDateControl: string,\r\n toDateControl: string,\r\n validationMessageKey: string\r\n ): CustomValidation {\r\n var validator = new CustomValidation();\r\n validator.functionBody = (control) => {\r\n let fromDate = form.controls[fromDateControl].value;\r\n let toDate = form.controls[toDateControl].value;\r\n\r\n if (fromDate && toDate && toDate <= fromDate)\r\n return { customerError: true };\r\n\r\n return null;\r\n };\r\n validator.massage = this.l(validationMessageKey);\r\n return validator;\r\n }\r\n\r\n onSuccessAddHandler = (success: any) => {\r\n this.utilityService.notifySuccessMessage(\r\n this.l('RecordAdded'),\r\n null,\r\n null,\r\n false\r\n );\r\n };\r\n\r\n onSuccessEditHandler = (success: any) => {\r\n this.utilityService.notifySuccessMessage(\r\n this.l('RecordUpdated'),\r\n null,\r\n null,\r\n false\r\n );\r\n };\r\n\r\n onSuccessDeleteHandler = (success: any) => {\r\n this.utilityService.notifySuccessMessage(\r\n this.l('RecordDeleted'),\r\n null,\r\n null,\r\n false\r\n );\r\n };\r\n\r\n recalculatePageTitle() {\r\n this.titleService.setTitle(this.calculatePageTitle(''));\r\n }\r\n\r\n isEnglish() {\r\n return this.utilityService.isCurrentLanguageEnglish();\r\n }\r\n\r\n calculateInitials(name: string): string {\r\n let language = localStorage.getItem('language');\r\n let currentUser = this.auhService.user.profile;\r\n console.log(currentUser);\r\n let userName =\r\n language == 'en' ? currentUser.given_nameEn : currentUser.given_nameAr;\r\n if (currentUser) {\r\n let fullName = userName.split(' ');\r\n let initials: string;\r\n if (fullName.length > 1) {\r\n if (this.isEN)\r\n initials = fullName.shift().charAt(0) + fullName.pop().charAt(0);\r\n else\r\n initials =\r\n fullName.shift().charAt(0) + ' ' + fullName.pop().charAt(0);\r\n } else {\r\n initials = fullName.pop().charAt(0);\r\n }\r\n return initials.toUpperCase();\r\n }\r\n return '';\r\n }\r\n\r\n getCurrentUserInitials(): string {\r\n return this.calculateInitials(this.auhService.name());\r\n }\r\n\r\n getCurrentFailOver(val: EnglishArabicDTO): string {\r\n if (this.isEnglish()) {\r\n if (val.English) return val.English;\r\n else return val.Arabic;\r\n } else {\r\n if (val.Arabic) return val.Arabic;\r\n else return val.English;\r\n }\r\n }\r\n}\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = Object.assign({\r\n},\r\n(window as any).Environment);\r\n\r\n\r\n/*\r\n * In development mode, to ignore zone related error stack frames such as\r\n * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can\r\n * import the following file, but please comment it out in production mode\r\n * because it will have performance impact when throw error\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","import { InputType } from '../Enums/InputType';\r\nimport { RangeNumber } from './RangeNumber';\r\nimport { ForceDirection } from '../Enums/ForceDirection';\r\nimport { IconPosition } from '../Enums/IconPosition';\r\nimport { LanguageValidation } from '../Enums/LanguageValidation';\r\nimport { ControlOptionsBase } from './ControlOptionsBase';\r\nimport { RecaptchaModel } from './Recaptcha';\r\n\r\nexport class RecaptchaOptions extends ControlOptionsBase {\r\n /**To set value to Control */\r\n Value: RecaptchaModel = new RecaptchaModel()\r\n ForceDirection: ForceDirection = null\r\n /**Prevent AutoComplete of control default value is \"on\" available values \"on\" and \"off\"*/\r\n AutoComplete: string = \"on\"\r\n NoMargin: boolean = false;\r\n /**the url of a remote server that supports jsonp calls */\r\n ActionURL: string = \"/api/Home/GetReCaptchaModel\";\r\n /*Pass hexa-color primary background color*/\r\n BackgroundColorPrimary: string = \"\"\r\n /*Pass hexa-color secondary background color*/\r\n BackgroundColorSecondary: string = \"\"\r\n /*Pass hexa-color primary text color*/\r\n TextColorPrimary: string\r\n /*Pass hexa-color secondary text color*/\r\n TextColorSecondary: string\r\n /*Pass font Size */\r\n FontSize: number = 0;\r\n}\r\n","import { ControlLayout } from '../Enums/ControlLayout';\r\nimport { LanguageMode } from '../Enums/LanguageMode';\r\nimport { CustomValidation } from './CustomValidation';\r\nimport { EnglishArabicDTO } from './EnglishArabicDTO';\r\n\r\nexport class MultilingualControlOptionsBase {\r\n /** Represent Name Of Form Control*/\r\n Name: string;\r\n /** Represent key of the Label*/\r\n LabelKey: string;\r\n /** Represent value of the Label*/\r\n LabelValue: string;\r\n /** Represent Key of the label*/\r\n ArabicLabelKey: string;\r\n /** Represent Key of the label*/\r\n EnglishLabelKey: string;\r\n /** Represent value of the ArabicLabel*/\r\n ArabicLabelValue: string;\r\n /** Represent value of the EnglishLabel*/\r\n EnglishLabelValue: string;\r\n /** Represent value of the LabelDescription show under textbox*/\r\n LabelDescription: string;\r\n /** Represent value of the ArabicLabelDescription show under MultipleLanguageText*/\r\n ArabicLabelDescription: string;\r\n /** Represent value of the EnglishLabelDescription show under MultipleLanguageText*/\r\n EnglishLabelDescription: string;\r\n /**Represent ArabicPlaceholder Of Form Control*/\r\n ArabicPlaceholder: string;\r\n /**Represent EnglishPlaceholder Of Form Control*/\r\n EnglishPlaceholder: string;\r\n /** Represent classes to label that allow us to select the Control by jquery or javascript */\r\n LabelExtraClasses: string;\r\n /**Represent classes to Arabic textbox that allow us to select the MultipleLanguageText by jquery or javascript */\r\n ExtraClasses_AR: string;\r\n /**Represent classes to English textbox that allow us to select the MultipleLanguageText by jquery or javascript */\r\n ExtraClasses_EN: string;\r\n /** to set type of view if MultipleLanguageText is Vertical or Horizontal */\r\n ViewType: ControlLayout = null;\r\n /** add button to for coping to clipboard */\r\n EnableCopyToClipboard: boolean;\r\n /**To Set Value To MultipleLanguageText with Object From Type \"EnglishArabicDTO\" */\r\n Value: EnglishArabicDTO = new EnglishArabicDTO();\r\n /**Set the MinLength of characters In TextBox */\r\n MinLength: number;\r\n //** Set the MaxLength of characters In TextBox */\r\n MaxLength: number;\r\n //** Set the MaxWordCount of characters In TextBox */\r\n MaxWordCount: number;\r\n /**\r\n * Display \"*\" beside the label\r\n * if ForceAsterisk=true and IsRequired=True his display \"*\" ,\r\n * if if ForceAsterisk=false and IsRequired=false this remove \"*\",\r\n *if ForceAsterisk=false and IsRequired=True this display \"*\" ,\r\n */\r\n ShowAsterisk: boolean;\r\n /** Ability to set MultipleLanguageText required */\r\n IsRequired: boolean;\r\n /** Sets an attribute disable=\"disabled\" */\r\n IsDisabled: boolean;\r\n /** Ability to display or hide the EnglishField of MultipleLanguageText */\r\n IsHideEnglishFields: boolean;\r\n /** Ability to display or hide the ArabicField of MultipleLanguageText */\r\n IsHideArabicFields: boolean;\r\n /** Ability to display or hide the EnglishLabel of MultipleLanguageText */\r\n IsHideEnglishLabel: boolean;\r\n /** Ability to display or hide the ArabicLable of MultipleLanguageText */\r\n IsHideArabicLabel: boolean;\r\n /** trim input on change */\r\n TrimTextOnChange: boolean;\r\n /**To Set LanguageMode To MultipleLanguageText */\r\n LanguageMode: LanguageMode = null;\r\n /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage */\r\n CustomValidation: CustomValidation[] = [];\r\n /** Path of propriety which we need to patch value */\r\n PatchPath: string;\r\n /** Function which call to patch value */\r\n PatchFunction: Function;\r\n /** Sets an attribute readonly */\r\n IsReadonly: boolean = false;\r\n}\r\n","import { ControlLayout } from '../Enums/ControlLayout';\r\nimport { IconPosition } from '../Enums/IconPosition';\r\nimport { MultilingualControlOptionsBase } from './MultilingualControlOptionsBase';\r\n\r\nexport class MultiLingualTextBoxOptions extends MultilingualControlOptionsBase {\r\n\r\n /*icon options*/\r\n Icon: string\r\n IconPositionEN: IconPosition = IconPosition.left\r\n IconPositionAR: IconPosition = IconPosition.right\r\n /*multi control placement type*/\r\n MultiControlPlacementType: ControlLayout = null\r\n //** Set the MaxLength Limit to show warning message*/\r\n MaxLengthWarningLimit: number;\r\n /**Prevent AutoComplete of inputs default value is \"on\" available values \"on\" and \"off\"*/\r\n AutoComplete: string = \"on\"\r\n}\r\n","export class Attribute\r\n{\r\n Key:string\r\n value: any\r\n}","import { InputType } from '../Enums/InputType';\r\nimport { ControlLayout } from '../Enums/ControlLayout';\r\nimport { MultilingualControlOptionsBase } from './MultilingualControlOptionsBase';\r\n\r\nexport class MultiLingualTextAreaOptions extends MultilingualControlOptionsBase {\r\n Type: InputType;\r\n /**Set Number Of Rows */\r\n Rows: number\r\n /**Set Number Of columns */\r\n Cols: number\r\n /*multi control placement type*/\r\n MultiControlPlacementType: ControlLayout = null;\r\n //** Set the MaxLength Limit to show warning message*/\r\n MaxLengthWarningLimit: number;\r\n}\r\n","import { ForceDirection } from '../Enums/ForceDirection';\r\nimport { ControlOptionsBase } from './ControlOptionsBase';\r\n\r\nexport class CheckBoxOptions extends ControlOptionsBase {\r\n /**To set value to CheckBox */\r\n Value: boolean = null\r\n ForceDirection: ForceDirection = ForceDirection.English\r\n\r\n}","\r\nexport class DropdownListItem\r\n{\r\n id:any\r\n itemName:any\r\n}\r\n","import { InputType } from '../Enums/InputType';\r\nimport { Misc } from '../Enums/Misc';\r\nimport { Style } from '../Enums/Style';\r\nimport { FontSize } from '../Enums/FontSize';\r\nimport { Para } from '../Enums/Para';\r\nimport { Insert } from '../Enums/Insert';\r\nimport { MultilingualControlOptionsBase } from './MultilingualControlOptionsBase';\r\n\r\nexport class MultiLingualHtmlEditorOptions extends MultilingualControlOptionsBase {\r\n Type: InputType;\r\n /** Set Height For */\r\n Height: number=150\r\n /** Set List of Misc like codeview Or undo Or redo */\r\n ToolsList_Misc?: Misc[];\r\n /** Set List of Style like bold Or italic Or underline Or clear */\r\n ToolsList_Style?: Style[];\r\n /** Set List of FontSize like fontname Or fontsize Or color */\r\n ToolsList_FontSize?: FontSize[];\r\n /** Set List of Para like style Or ul Or ol Or paragraph Or height */\r\n ToolsList_Para?: Para[];\r\n /** Set List of Insert like table Or picture Or link Or video Or hr */\r\n ToolsList_Insert?: Insert[];\r\n\r\n\r\n}\r\n","import { ImageType } from '../Enums/ImageType';\r\nimport { EditPersonalImage } from './EditPersonalImage';\r\nimport { SaveDTO } from './SaveDTO';\r\nimport { CancelDTO } from './CancelDTO';\r\nimport { UploadPersonalImage } from './UploadPersonalImage';\r\nimport { ProfilePictureDTO } from './ProfilePictureDTO';\r\nimport { ControlOptionsBase } from './ControlOptionsBase';\r\n\r\nexport class ProfileImageUploadOptions extends ControlOptionsBase {\r\n\r\n /**To set value to FileInput */\r\n Value: ProfilePictureDTO\r\n AllowDropZone: boolean = false\r\n /** Set File MaxSize In MB */\r\n FileMaxSizeInMB: number;\r\n /** Set List of Custom Attribute to FileInput */\r\n ImageUploadAcceptsTypes: ImageType[] = [ImageType.ImageTypes]\r\n /** Set Default Image */\r\n DefaultImageSrc: string\r\n /** Set ImageID Encrypted */\r\n ImageIDEncrypted: string\r\n /** Set EditPersonalImage */\r\n EditPersonalImageTitle: EditPersonalImage\r\n /** Set SaveDTO */\r\n SaveTitle: SaveDTO\r\n /** Set CancelDTO */\r\n CancelTitle: CancelDTO\r\n /** Set UploadPersonalImage */\r\n UploadPersonalImageTitle: UploadPersonalImage\r\n}\r\n","export class SaveDTO\r\n{\r\n constructor()\r\n {\r\n this.English = \"Save\";\r\n this.Arabic = \"حفظ\";\r\n }\r\n English:string \r\n Arabic:string \r\n}","export class CancelDTO\r\n{\r\n constructor()\r\n {\r\n this.English = \"Cancel\";\r\n this.Arabic = \"الغاء\";\r\n }\r\n English:string \r\n Arabic:string \r\n}","export class EditPersonalImage\r\n{\r\n constructor()\r\n {\r\n this.English = \"Edit Personal Image\";\r\n this.Arabic = \"تعديل الصورة الشخصية\";\r\n }\r\n English:string \r\n Arabic:string \r\n}","export class UploadPersonalImage\r\n{\r\n constructor()\r\n {\r\n this.English = \"Upload Personal Image\";\r\n this.Arabic = \"تحميل صورة الشخصية\";\r\n }\r\n English:string \r\n Arabic:string \r\n}","import { CalendarView } from '../Enums/CalendarView'\r\nimport { CalendarEventDTO } from './CalendarEventDTO'\r\nimport { ControlOptionsBase } from './ControlOptionsBase'\r\n\r\nexport class CalendarOptions extends ControlOptionsBase {\r\n /** Represent DefaultView Of Calendar*/\r\n DefaultView: CalendarView = CalendarView.Month\r\n /** Represent OnEventClickFunction Of Calendar*/\r\n OnEventClickFunction: any\r\n /** Represent CalendarViews Of Calendar*/\r\n CalendarViews: CalendarView[] = [CalendarView.Agenda, CalendarView.Daily, CalendarView.Month, CalendarView.Weekly]\r\n /** Represent OnDayClickFunction Of Calendar*/\r\n OnDayClickFunction: any\r\n EventList: CalendarEventDTO[]\r\n /** Set Allowc Calendar Weekends Of Calendar*/\r\n AllowCalendarWeekends: boolean\r\n /** Set Calendar Visible Of Calendar*/\r\n CalendarVisible: boolean = true\r\n /** Set DefaultDate Of Calendar*/\r\n DefaultDate: Date = new Date()\r\n Eventeditable: boolean = false\r\n Eventselectable: boolean = false\r\n dayMaxEvents: boolean | number = false;\r\n\r\n}","export class CalendarEventDTO\r\n{\r\n id: string;\r\n title: string;\r\n start: Date;\r\n end: Date;\r\n colour: string;\r\n allDay:boolean\r\n}","import { TemplateRef } from '@angular/core';\r\nimport { AutocompleteDTO } from './AutocompleteDTO';\r\nimport { InputType } from '../Enums/InputType';\r\nimport { ForceDirection } from '../Enums/ForceDirection';\r\nimport { RangeNumber } from './RangeNumber';\r\nimport { ControlOptionsBase } from './ControlOptionsBase';\r\n\r\nexport class AutocompleteOptions extends ControlOptionsBase {\r\n\r\n /**Represent classes to textbox that allow us to select the AutoComplete by jquery or javascript */\r\n ValidationToken: string = null\r\n /**To set value to textbox */\r\n Value: any = null\r\n //** Set the MaxLength of characters In AutoComplete */\r\n MaxLength?: number\r\n /**Set the MinLength of characters In AutoComplete */\r\n MinLength?: number\r\n //** Set the MaxWordCount of characters In AutoComplete */\r\n MaxWordCount: number;\r\n /** set Range Number to Textbox with type number with From-Value and To-value*/\r\n NumberRange: RangeNumber = new RangeNumber()\r\n /**Prevent AutoComplete of textbox*/\r\n AutoComplete: boolean\r\n /** text input on change */\r\n TrimTextOnChange: boolean\r\n /** add button to for coping to clipboard */\r\n EnableCopyToClipboard: boolean\r\n /**Prevent Defulat Password Validation to set Custom Validation */\r\n RemoveDefulatPasswordValidation: boolean\r\n /** to set Direction of textbox if textbox is Arabic or English */\r\n ForceDirection: ForceDirection = ForceDirection.English\r\n /** Set Type of AutoComplete (\"text\",\"password\",\"email\",\"number\") */\r\n Type: InputType\r\n /** allow add value of AutoComplete dosn't exist in list*/\r\n AllowNewSelection: boolean = false;\r\n ControlId: string;\r\n /**the url of a remote server that supports jsonp calls */\r\n ActionURL: string;\r\n // /**a {key,value} (json) object to include as params for the json call. Each api supports different structure.*/\r\n // Params: object={};\r\n QueryParam: string = 'query'\r\n AutocompleteDTO: AutocompleteDTO\r\n SelectedValue: any = null\r\n ItemWithImage: boolean = false\r\n CustomTemplate:TemplateRef<any>\r\n}\r\n","export class TagsInputDTO\r\n {\r\n ID :string\r\n Name :string\r\n Description :string\r\n ImageURL: string;\r\n}\r\n","import { ControlLayout } from '../Enums/ControlLayout'\r\nimport { CustomValidation } from './CustomValidation'\r\nimport { ForceDirection } from '../Enums/ForceDirection'\r\nimport { Attribute } from './Attribute'\r\nimport { ControlOptionsBase } from './ControlOptionsBase'\r\nimport { TagInputView } from '../Enums/TagInputView'\r\n\r\n\r\nexport class TagsInputOptions extends ControlOptionsBase {\r\n /**To set value to Control */\r\n Value: any\r\n //** Set the MaxLength of characters In AutoComplete */\r\n MaxLength?: number\r\n /**Set the MinLength of characters In AutoComplete */\r\n MinLength?: number\r\n //** Set the MaxWordCount of characters In AutoComplete */\r\n MaxWordCount: number;\r\n /**Prevent AutoComplete of tagsinput*/\r\n AutoComplete: boolean\r\n /** text input on change */\r\n TrimTextOnChange: boolean\r\n /** add button to for coping to clipboard */\r\n EnableCopyToClipboard: boolean\r\n /**Prevent Defulat Password Validation to set Custom Validation */\r\n RemoveDefulatPasswordValidation: boolean\r\n /** to set Direction of tagsinput if tagsinput is Arabic or English */\r\n ForceDirection: ForceDirection = ForceDirection.English\r\n /**the url of a remote server that supports jsonp calls */\r\n ActionURL: string;\r\n /**Remove Last When User Click On Backspace */\r\n RemoveLastOnBackspace: boolean = false\r\n /** Allow User To Delete Tags */\r\n CanDeleteTags: boolean = true\r\n /** Allow User To Add Tags */\r\n CanAddTags: boolean = true\r\n /** Set Max Number Of Tags That User Can Be Select */\r\n MaxNumberTags: number = 30\r\n /** Set Min Length Of Char To Call Search Function */\r\n MinSearchLength: number = 1\r\n /**Allow Scrolle Option In Dropdown */\r\n ScrollableOptions: boolean = true\r\n /** Set Max Number Of Tags That will Be Appear ON Dropdown */\r\n MaxSearchResultsCount: number = 10\r\n /**Value Name Of Tag Option In Dropdown */\r\n DatasourceItemValue: string = \"id\"\r\n /**Text Of Tag That Will Show In Dropdown */\r\n DatasourceItemText: string = \"name\"\r\n /**Text Show when none of the given options match the entered text */\r\n NoResultText: string;\r\n /**Set Query Param Name By Default It's 'query'*/\r\n QueryParamName: string = \"query\"\r\n /**Set Query Param Name By Default It's 'query'*/\r\n SelectedItemsParamName: string = \"SelectedItems\"\r\n /**Set Filter Param Name By Default It's 'query'*/\r\n FilterParamName: string = \"\"\r\n DefaultImgUrl: string = \"\"\r\n /** allow add value of TagInput dosn't exist in list*/\r\n AllowNewSelection: boolean = false;\r\n ValidationToken: string = null;\r\n /**Set Extra Filters*/\r\n ExtraFilters: string;\r\n \r\n TagInputMode: TagInputView = TagInputView.WithoutImage\r\n\r\n ShowDescription: boolean = true;\r\n\r\n}\r\n","import { FilterType } from '../Enums/FilterType';\r\n\r\nexport class FilterItem {\r\n \r\n /** jQuery selector used to retrieve the parameter value*/\r\n\r\n jQuerySelector: string\r\n /** FormControlName used to retrieve the value Of Control*/\r\n FormControlName: string;\r\n /** The action parameter exact name (case sensitive)*/\r\n ActionParameterName: string\r\n /** Check If This Filter Is Form Control Or js Filter */\r\n IsFormControl: boolean=true\r\n /**Set Filter Type To Filter*/\r\n FilterType:FilterType\r\n\r\n}\r\n","import { FilterItem } from './FilterItem'\r\nimport { ForceDirection } from '../Enums/ForceDirection'\r\n\r\nexport class PagingOptions<T = any>{\r\n /**URL of the action that will be called on update*/\r\n ActionPostURL: string = \"\"\r\n ValidationToken: string = null\r\n /** Comma separater list of parameters that need to be passed to the updated function, the parameter name must be the ID of the element that holds the value of the filter.\r\n * ex \"searchText,fromDateTimePicker\" we should have now an input with id searchText and a datetime picker with id fromDateTimePicker*/\r\n Filters: FilterItem[] = []\r\n /**The total count for the items in the datasource */\r\n TotalCount: number = 0\r\n /** No of items in one page \r\n * Default is 10\r\n */\r\n PageSize: number = 10\r\n /**Typeahead search input, used to attach on change events to the search input to refresh the paging after change */\r\n TypeaheadSearchControlNames: string[] = []\r\n /**Comma separater list of Dropdowns filters , used to attach on change events to the dropdown filter to refresh the paging after change */\r\n DropdownFiltersControlNames: string[] = []\r\n /**Comma separater list of Bootstrap datepicker filters, used to attach on change events to the datepicker filter to refresh the paging after change */\r\n BootstrapDatePickersFiltersControlNames: string[] = []\r\n /**Comma separater list of any button/element filters to attach on click event, this will refresh the paging after the event is fired */\r\n OnClickFiltersControlNames: string[] = []\r\n /** Comma separater list of any button/element filters to attach on keypress/Enter event, this will refresh the paging after the event is fired */\r\n OnKeyPressFiltersControlNames: string[] = []\r\n /** The js function name to be called to update the paging total count and keep the current page as is, have to pass the new total count of the datasource items\r\n * Default value is Paging_Update fill this parameter in case there are multiple paging controls */\r\n UpdateFunctionName: string\r\n /** The js function name to be called to reinitialize the paging component with a new items count and reset the curent page to 1, you must pass the new total count of the datasource items\r\n * Default value is Paging_Reinitialize fill this parameter in case there are multiple paging controls*/\r\n ReinitializeFunctionName: string\r\n /**Show a dropdown to be able to change the page size */\r\n ShowPageSizeOption: boolean = false\r\n /**js function name to be called when a page is updated */\r\n OnSuccessCallBackJSFunction: string\r\n /** bool to set block ui by container rather than the whole window */\r\n BlockUIByContainer: boolean = true\r\n /**hide Pagination When Page Size Equal One */\r\n HidePaginationWhenPageSizeEqualOne: boolean = true\r\n /**Show First And Last */\r\n ShowFirstAndLast: boolean = true\r\n /**Show Load More Button And Hide Paging */\r\n IsLoadMoreControl: boolean = false\r\n /** Load More items While Scrolling */\r\n IsInfiniteScroll: boolean = false\r\n /**should get a html element or css selector for a scrollable element; window or current element will be used if this attribute is empty. */\r\n InfiniteScrollContainer\r\n /**listens to the window scroll instead of the actual element scroll. this allows to invoke a callback function in the scope of the element while listenning to the window scroll. */\r\n ScrollWindow: boolean = true\r\n ForceDirection: ForceDirection = ForceDirection.English\r\n TypeOfResponse?: new () => T\r\n /** Clear Filter button selector */\r\n ResetFilterButtonName: string = null;\r\n DisableBlockUI: boolean = false;\r\n StartPagingCallback: Function = null;\r\n}\r\n","\r\nimport { ControlOptionsBase } from './ControlOptionsBase';\r\nimport { RadioButtonItem } from './RadioButtonItem';\r\n\r\nexport class RadioButtonOptions extends ControlOptionsBase {\r\n /**To set value to RadioButton */\r\n Value: RadioButtonItem\r\n /** Set List of Custom Attribute to RadioButton */\r\n Items: RadioButtonItem[]\r\n\r\n}\r\n","\r\n\r\nexport class RadioButtonItem {\r\n Text: string\r\n Value :any\r\n}\r\n","import { FormGroup } from '@angular/forms';\r\nimport { ElementRef } from '@angular/core';\r\nimport { PagingActionMode } from '../Enums/PagingActionMode';\r\nimport { PagingComponent } from '../../controls/Paging/Paging.component';\r\n\r\nexport class FormOptions {\r\n\r\n //Represents form group of contol\r\n FormGroup: FormGroup = null;\r\n\r\n //Represents refrence to paging control that needs to be updated after success\r\n PagingReference: PagingComponent<any> = null\r\n\r\n //Represents paging action excutes after submission (Reinitialize/Update)\r\n PagingActionMode: PagingActionMode = PagingActionMode.Reinitialize;\r\n\r\n //Represents function that get form model for submission\r\n GetModelFunction: Function = null;\r\n\r\n //Represents service function for submission\r\n ServiceSubmitFunction: Function = null;\r\n\r\n //Represents function that excutes after submission error\r\n OnErrorHandler: Function = null;\r\n\r\n //Represents function that excutes after submission success\r\n OnSuccessHandler: Function = null;\r\n\r\n //If =\"true\" disable notification after submission success\r\n DisableSuccessNotification: boolean = false;\r\n\r\n //If =\"true\" disable notification after submission error\r\n DisableErrorNotification: boolean = false;\r\n\r\n //If =\"true\" disable startblockui before submission\r\n DisableBlockUI: boolean = false;\r\n\r\n //If =\"true\" disable modal from dismiss automatically \r\n DisableModalDismiss: boolean = false;\r\n}\r\n","import { PagingComponent } from \"../../controls/Paging/Paging.component\";\r\nimport { PagingActionMode } from \"../Enums/PagingActionMode\";\r\nimport { StyleConfirmationMode } from \"../Enums/StyleConfirmationMode\";\r\n\r\n\r\nexport class ConfirmationModalOptions {\r\n //Represents confirmation modal title\r\n ConfirmationHeader: string = null;\r\n\r\n //Represents confirmation modal body\r\n ConfirmationBody: string = null;\r\n\r\n //Represents confirmation modal submit button text\r\n SubmitButtonText: string = null;\r\n\r\n //Represents confirmation modal body style\r\n StyleConfirmationMode: StyleConfirmationMode = StyleConfirmationMode.Danger;\r\n\r\n //Represents service function for submission\r\n ServiceSubmitFunction: Function = null;\r\n\r\n //Represents model sent to service submit function\r\n ServiceSubmitModel: any[] = [];\r\n\r\n //Represents refrence to paging control that needs to be updated after success\r\n PagingReference: PagingComponent<any> = null\r\n\r\n //Represents paging action excutes after submission (Reinitialize/Update)\r\n PagingActionMode: PagingActionMode = PagingActionMode.Reinitialize;\r\n\r\n //Represents function that excutes after submission error\r\n OnErrorHandler: Function = null;\r\n\r\n //Represents function that excutes after submission success\r\n OnSuccessHandler: Function = null;\r\n\r\n //Represents message appears in notification after success\r\n SuccessNotificationMessage: string = null;\r\n\r\n //If =\"true\" disable notification after submission success\r\n DisableSuccessNotification: boolean = false;\r\n\r\n //If =\"true\" disable notification after submission error\r\n DisableErrorNotification: boolean = false;\r\n\r\n //If =\"true\" disable prevent modal from dismiss automatically \r\n DisableModalDismiss: boolean = false;\r\n //If =\"false\" prevent modal to show cancel button\r\n showCancelButton: boolean = true;\r\n //If =\"false\" prevent modal to show close button\r\n showCloseButton: boolean = true;\r\n\r\n}\r\n","import { DataType } from \"../Enums/Enums\";\r\nexport class RepeaterField {\r\n HeaderTitle: string;\r\n ControlType: DataType;\r\n ControlOptions: any;\r\n IsHiddenInput: boolean;\r\n}\r\n","import { RepeaterField } from \"./RepeaterField\";\r\n\r\nexport class RepeaterOptions {\r\n IsRequired: boolean;\r\n MinRequiredItems: number;\r\n ExtraClasses: string;\r\n Name: string;\r\n ActionLabelKey: string = \"\";\r\n AddButtonExtraClasses: string;\r\n RepeaterTableExtraClasses: string\r\n RepeaterTableRowExtraClasses: string\r\n AddButtonText: string = \"Add\";\r\n DeleteButtonExtraClasses: string;\r\n DeleteButtonText: string = \"Delete\";\r\n RepeaterValue: any[] = [];\r\n RepeaterStructure: RepeaterField[] = [];\r\n DisableAddButton: boolean = false;\r\n DisableDeleteButton: boolean = false;\r\n IsReadonly: boolean = false;\r\n}\r\n","import { ControlFilterItem } from \"./control-filter-Item\";\r\nexport class FilterOptions {\r\n ControlsOptions:ControlFilterItem[]=[];\r\n ApplyFunction:Function = null;\r\n RestFunction:Function = null;\r\n ShowLoadingInFiltersBox:boolean=false;\r\n}\r\n","import { BreadCrumb } from \"./bread-crumb\";\r\nimport { FilterOptions } from \"./filter-options\";\r\nimport { TextBoxOptions } from \"./TextBoxOptions\";\r\n\r\nexport class PageHeaderOptions {\r\n constructor() {\r\n this.BreadCrumb = new BreadCrumbModel();\r\n this.AddButton = new AddButton();\r\n this.EditButton = new EditButton();\r\n this.DeleteButton = new DeleteButton();\r\n this.ExportButton = new ExportButton();\r\n this.GridView = new GridViewModel();\r\n this.SearchTextBox = new TextBoxModel();\r\n this.FiltersButton = new FiltersButton();\r\n this.Filters = new FilterOptions();\r\n this.DropDownActions = new DropdownActions();\r\n }\r\n TitleKey: string;\r\n TitleValue: string;\r\n SubTitleKey: string;\r\n BreadCrumb: BreadCrumbModel;\r\n AddButton: AddButton;\r\n EditButton: EditButton;\r\n DeleteButton: DeleteButton;\r\n ExportButton: ExportButton;\r\n GridView: GridViewModel;\r\n SearchTextBox: TextBoxModel;\r\n FiltersButton: FiltersButton;\r\n Filters: FilterOptions;\r\n DropDownActions: DropdownActions;\r\n Listing: boolean;\r\n}\r\n\r\nexport class BreadCrumbModel {\r\n Active: boolean\r\n BreadCrumbItems: BreadCrumb[] = [];\r\n}\r\nexport class AddButton {\r\n Active: boolean;\r\n ButtonTextKey: string=\"Add\";\r\n Function: Function = null;\r\n}\r\nexport class EditButton {\r\n Active: boolean;\r\n ButtonTextKey: string = \"Edit\";\r\n Function: Function = null;\r\n}\r\nexport class DeleteButton {\r\n Active: boolean;\r\n ButtonTextKey: string = \"Delete\";\r\n Function: Function = null;\r\n}\r\nexport class FiltersButton {\r\n Active: boolean;\r\n ButtonTextKey: string = \"Filter\";\r\n Function: Function = null;\r\n ShowLoadingInFiltersBox: boolean = true;\r\n\r\n constructor() {\r\n this.ButtonTextKey = \"Filter\";\r\n }\r\n}\r\nexport class ExportButton {\r\n Active: boolean;\r\n ButtonTextKey: string = \"Export\";\r\n Function: Function = null;\r\n}\r\nexport class GridViewModel {\r\n Active: boolean;\r\n ToggleFunction: Function = null;\r\n ShowGridViewByDefault: boolean;\r\n}\r\nexport class TextBoxModel {\r\n Active: boolean;\r\n TextSearchBoxOptions: TextBoxOptions = new TextBoxOptions();\r\n}\r\nexport class DropdownActions {\r\n Active: boolean;\r\n DropdownActionItems: DropdownActionItem[] = []\r\n}\r\nexport class DropdownActionItem {\r\n constructor(text: string, svg: string, functionName: Function,routerLink:string=null) {\r\n this.Text = text;\r\n this.SVG = svg;\r\n this.Function = functionName;\r\n this.RouterLink = routerLink;\r\n }\r\n Text: string;\r\n SVG: string;\r\n Function: Function = null;\r\n RouterLink :string\r\n}\r\n","import { DataType } from \"../Enums/Enums\";\r\nexport class ControlFilterItem {\r\n key:DataType;\r\n value:any;\r\n onChange?:Function = null;\r\n}\r\n","export class BreadCrumb {\r\n constructor(label: string, active: boolean, route: string = null) {\r\n this.label = label;\r\n this.active = active;\r\n this.route = route;\r\n }\r\n label: string;\r\n active: boolean;\r\n route: string;\r\n }\r\n ","export enum MenuListType {\r\n AdminType =1 ,\r\n UserType = 2,\r\n \r\n}","export enum Country {\r\n Afghanistan = \"af\",\r\n Albania = \"al\",\r\n Algeria = \"dz\",\r\n AmericanSamoa = \"as\",\r\n Andorra = \"ad\",\r\n Angola = \"ao\",\r\n Anguilla = \"ai\",\r\n AntiguaAndBarbuda = \"ag\",\r\n Argentina = \"ar\",\r\n Armenia = \"am\",\r\n Aruba = \"aw\",\r\n Australia = \"au\",\r\n Austria = \"at\",\r\n Azerbaijan = \"az\",\r\n Bahamas = \"bs\",\r\n Bahrain = \"bh\",\r\n Bangladesh = \"bd\",\r\n Barbados = \"bb\",\r\n Belarus = \"by\",\r\n Belgium = \"be\",\r\n Belize = \"bz\",\r\n Benin = \"bj\",\r\n Bermuda = \"bm\",\r\n Bhutan = \"bt\",\r\n Bolivia = \"bo\",\r\n BosniaAndHerzegovina = \"ba\",\r\n Botswana = \"bw\",\r\n Brazil = \"br\",\r\n BritishIndianOceanTerritory = \"io\",\r\n BritishVirginIslands = \"vg\",\r\n Brunei = \"bn\",\r\n Bulgaria = \"bg\",\r\n BurkinaFaso = \"bf\",\r\n Burundi = \"bi\",\r\n Cambodia = \"kh\",\r\n Cameroon = \"cm\",\r\n Canada = \"ca\",\r\n CapeVerde = \"cv\",\r\n CaribbeanNetherlands = \"bq\",\r\n CaymanIslands = \"ky\",\r\n CentralAfricanRepublic = \"cf\",\r\n Chad = \"td\",\r\n Chile = \"cl\",\r\n China = \"cn\",\r\n ChristmasIsland = \"cx\",\r\n Cocos = \"cc\",\r\n Colombia = \"co\",\r\n Comoros = \"km\",\r\n CongoDRCJamhuriYaKidemokrasiaYaKongo = \"cd\",\r\n CongoRepublicCongoBrazzaville = \"cg\",\r\n CookIslands = \"ck\",\r\n CostaRica = \"cr\",\r\n CôteDIvoire = \"ci\",\r\n Croatia = \"hr\",\r\n Cuba = \"cu\",\r\n Curaçao = \"cw\",\r\n Cyprus = \"cy\",\r\n CzechRepublic = \"cz\",\r\n Denmark = \"dk\",\r\n Djibouti = \"dj\",\r\n Dominica = \"dm\",\r\n DominicanRepublic = \"do\",\r\n Ecuador = \"ec\",\r\n Egypt = \"eg\",\r\n ElSalvador = \"sv\",\r\n EquatorialGuinea = \"gq\",\r\n Eritrea = \"er\",\r\n Estonia = \"ee\",\r\n Ethiopia = \"et\",\r\n FalklandIslands = \"fk\",\r\n FaroeIslands = \"fo\",\r\n Fiji = \"fj\",\r\n Finland = \"fi\",\r\n France = \"fr\",\r\n FrenchGuiana = \"gf\",\r\n FrenchPolynesia = \"pf\",\r\n Gabon = \"ga\",\r\n Gambia = \"gm\",\r\n Georgia = \"ge\",\r\n Germany = \"de\",\r\n Ghana = \"gh\",\r\n Gibraltar = \"gi\",\r\n Greece = \"gr\",\r\n Greenland = \"gl\",\r\n Grenada = \"gd\",\r\n Guadeloupe = \"gp\",\r\n Guam = \"gu\",\r\n Guatemala = \"gt\",\r\n Guernsey = \"gg\",\r\n Guinea = \"gn\",\r\n GuineaBissau = \"gw\",\r\n Guyana = \"gy\",\r\n Haiti = \"ht\",\r\n Honduras = \"hn\",\r\n HongKong = \"hk\",\r\n Hungary = \"hu\",\r\n Iceland = \"is\",\r\n India = \"in\",\r\n Indonesia = \"id\",\r\n Iran = \"ir\",\r\n Iraq = \"iq\",\r\n Ireland = \"ie\",\r\n IsleOfMan = \"im\",\r\n Israel = \"il\",\r\n Italy = \"it\",\r\n Jamaica = \"jm\",\r\n Japan = \"jp\",\r\n Jersey = \"je\",\r\n Jordan = \"jo\",\r\n Kazakhstan = \"kz\",\r\n Kenya = \"ke\",\r\n Kiribati = \"ki\",\r\n Kosovo = \"xk\",\r\n Kuwait = \"kw\",\r\n Kyrgyzstan = \"kg\",\r\n Laos = \"la\",\r\n Latvia = \"lv\",\r\n Lebanon = \"lb\",\r\n Lesotho = \"ls\",\r\n Liberia = \"lr\",\r\n Libya = \"ly\",\r\n Liechtenstein = \"li\",\r\n Lithuania = \"lt\",\r\n Luxembourg = \"lu\",\r\n Macau = \"mo\",\r\n Macedonia = \"mk\",\r\n Madagascar = \"mg\",\r\n Malawi = \"mw\",\r\n Malaysia = \"my\",\r\n Maldives = \"mv\",\r\n Mali = \"ml\",\r\n Malta = \"mt\",\r\n MarshallIslands = \"mh\",\r\n Martinique = \"mq\",\r\n Mauritania = \"mr\",\r\n Mauritius = \"mu\",\r\n Mayotte = \"yt\",\r\n Mexico = \"mx\",\r\n Micronesia = \"fm\",\r\n Moldova = \"md\",\r\n Monaco = \"mc\",\r\n Mongolia = \"mn\",\r\n Montenegro = \"me\",\r\n Montserrat = \"ms\",\r\n Morocco = \"ma\",\r\n Mozambique = \"mz\",\r\n Myanmar = \"mm\",\r\n Namibia = \"na\",\r\n Nauru = \"nr\",\r\n Nepal = \"np\",\r\n Netherlands = \"nl\",\r\n NewCaledonia = \"nc\",\r\n NewZealand = \"nz\",\r\n Nicaragua = \"ni\",\r\n Niger = \"ne\",\r\n Nigeria = \"ng\",\r\n Niue = \"nu\",\r\n NorfolkIsland = \"nf\",\r\n NorthKorea = \"kp\",\r\n NorthernMarianaIslands = \"mp\",\r\n Norway = \"no\",\r\n Oman = \"om\",\r\n Pakistan = \"pk\",\r\n Palau = \"pw\",\r\n Palestine = \"ps\",\r\n Panama = \"pa\",\r\n PapuaNewGuinea = \"pg\",\r\n Paraguay = \"py\",\r\n Peru = \"pe\",\r\n Philippines = \"ph\",\r\n Poland = \"pl\",\r\n Portugal = \"pt\",\r\n PuertoRico = \"pr\",\r\n Qatar = \"qa\",\r\n Réunion = \"re\",\r\n Romania = \"ro\",\r\n Russia = \"ru\",\r\n Rwanda = \"rw\",\r\n SaintBarthélemy = \"bl\",\r\n SaintHelena = \"sh\",\r\n SaintKittsAndNevis = \"kn\",\r\n SaintLucia = \"lc\",\r\n SaintMartin = \"mf\",\r\n SaintPierreAndMiquelon = \"pm\",\r\n SaintVincentAndTheGrenadines = \"vc\",\r\n Samoa = \"ws\",\r\n SanMarino = \"sm\",\r\n SãoToméAndPríncipe = \"st\",\r\n SaudiArabia = \"sa\",\r\n Senegal = \"sn\",\r\n Serbia = \"rs\",\r\n Seychelles = \"sc\",\r\n SierraLeone = \"sl\",\r\n Singapore = \"sg\",\r\n SintMaarten = \"sx\",\r\n Slovakia = \"sk\",\r\n Slovenia = \"si\",\r\n SolomonIslands = \"sb\",\r\n Somalia = \"so\",\r\n SouthAfrica = \"za\",\r\n SouthKorea = \"kr\",\r\n SouthSudan = \"ss\",\r\n Spain = \"es\",\r\n SriLanka = \"lk\",\r\n Sudan = \"sd\",\r\n Suriname = \"sr\",\r\n SvalbardAndJanMayen = \"sj\",\r\n Swaziland = \"sz\",\r\n Sweden = \"se\",\r\n Switzerland = \"ch\",\r\n Syria = \"sy\",\r\n Taiwan = \"tw\",\r\n Tajikistan = \"tj\",\r\n Tanzania = \"tz\",\r\n Thailand = \"th\",\r\n TimorLeste = \"tl\",\r\n Togo = \"tg\",\r\n Tokelau = \"tk\",\r\n Tonga = \"to\",\r\n TrinidadAndTobago = \"tt\",\r\n Tunisia = \"tn\",\r\n Turkey = \"tr\",\r\n Turkmenistan = \"tm\",\r\n TurksAndCaicosIslands = \"tc\",\r\n Tuvalu = \"tv\",\r\n USVirginIslands = \"vi\",\r\n Uganda = \"ug\",\r\n Ukraine = \"ua\",\r\n UnitedArabEmirates = \"ae\",\r\n UnitedKingdom = \"gb\",\r\n UnitedStates = \"us\",\r\n Uruguay = \"uy\",\r\n Uzbekistan = \"uz\",\r\n Vanuatu = \"vu\",\r\n VaticanCity = \"va\",\r\n Venezuela = \"ve\",\r\n Vietnam = \"vn\",\r\n WallisAndFutuna = \"wf\",\r\n WesternSahara = \"eh\",\r\n Yemen = \"ye\",\r\n Zambia = \"zm\",\r\n Zimbabwe = \"zw\",\r\n ÅlandIslands = \"ax\"\r\n}\r\n","export enum FontSize\r\n{\r\n fontname = 'fontname' ,\r\n fontsize = 'fontsize',\r\n color = 'color',\r\n \r\n}\r\n\r\n","export enum Insert\r\n{\r\n table = 'table' ,\r\n picture = 'picture',\r\n link = 'link',\r\n video='video',\r\n hr='hr'\r\n}\r\n\r\n\r\n","export enum Misc\r\n{\r\n codeview = 'codeview' ,\r\n undo = 'undo',\r\n redo = 'redo',\r\n}\r\n","export enum Para\r\n{\r\n style = 'style' ,\r\n ul = 'ul',\r\n ol = 'ol',\r\n paragraph='paragraph',\r\n height='height'\r\n}\r\n\r\n","export enum Style\r\n{\r\n bold = 'bold' ,\r\n italic = 'italic',\r\n underline = 'underline',\r\n clear='clear'\r\n}\r\n\r\n","export enum FileType {\r\n PDF = 'application/pdf',\r\n Word = 'application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document',\r\n Excel = 'application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n ImageTypes = 'image/png,image/bmp,image/jpeg',\r\n PNG = 'image/png',\r\n JPG = 'image/jpeg',\r\n JPEG = 'image/jpeg',\r\n ZIP = 'application/zip',\r\n RAR = 'application/x-rar-compressed',\r\n VIDEO = 'video/webm,video/ogg,video/mp4,video/quicktime,video/x-msvideo,video/x-ms-wmv',\r\n License = 'application/BN',\r\n Xml = 'text/xml',\r\n OctetSteam = 'application/octet-stream',\r\n Txt = 'text/plain',\r\n JSON = 'application/json',\r\n PowerPoint = 'application/vnd.ms-powerpoint,applicationapplication/vnd.openxmlformats-officedocument.presentationml.presentation',\r\n SVG = 'image/svg+xml',\r\n None = '',\r\n}\r\n","/*\r\n * Public API Surface of bnsights-library\r\n */\r\n//export module \r\nexport * from './lib/controls/bbsf-controls.module';\r\n// export * from './lib/areas/admin-panel/layout-modules/adminPage.module';\r\n\r\n// //export component \r\n export * from './lib/controls/TextBox/TextBox.component'\r\nexport * from './lib/controls/DateTimePicker/DateTimePicker.component'\r\nexport * from './lib/controls/FileUplaod/FileUplaod.component'\r\nexport * from './lib/controls/MultiLingualTextBox/MultiLingualTextBox.component'\r\nexport * from './lib/controls/TextArea/TextArea.component'\r\nexport * from './lib/controls/MultiLingualTextArea/MultiLingualTextArea.component'\r\nexport * from './lib/controls/CheckBox/CheckBox.component'\r\nexport * from './lib/controls/DropdownList/DropdownList.component'\r\nexport * from './lib/controls/Phone/Phone.component'\r\nexport * from './lib/controls/Toggleslide/toggleslide.component'\r\nexport * from './lib/controls/HtmlEditor/HtmlEditor.component'\r\nexport * from './lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component';\r\nexport * from './lib/controls/ImageUpload/ImageUpload.component'\r\nexport * from './lib/controls/ProfileImageUploader/ProfileImageUploader.component'\r\nexport * from './lib/controls/Calendar/Calendar.component'\r\nexport * from './lib/controls/MapAutoComplete/MapAutoComplete.component'\r\nexport * from './lib/controls/AutocompleteTextBox/AutocompleteTextBox.component'\r\nexport * from './lib/controls/TagsInput/TagsInput.component'\r\nexport * from './lib/controls/Paging/JwPagination.component'\r\nexport * from './lib/controls/Paging/Paging.component'\r\nexport * from './lib/controls/RadioButton/RadioButton.component'\r\nexport * from './lib/controls/ConfirmationModal/ConfirmationModal.component'\r\nexport * from './lib/controls/Form/Form.component'\r\nexport * from './lib/controls/Repeater/repeater/repeater.component'\r\nexport * from './lib/controls/Repeater/repeater-table/repeater-table.component'\r\n\r\nexport * from './lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component'\r\nexport * from './lib/controls/Repeater/repeater-item-field/repeater-item-field.component'\r\nexport * from './lib/controls/Recaptcha/Recaptcha.component'\r\nexport * from './lib/controls/page-header-component/page-header-component.component'\r\nexport * from './lib/Shared/Components/app-base-component'\r\n\r\n// //adminPageModule\r\n// export * from './lib/areas/admin-panel/home/adminHome.component'\r\n// export * from './lib/areas/admin-panel/layout-modules/adminPage.component'\r\n\r\n//export services\r\nexport * from './lib/Shared/services/validationErrorMassage.service'\r\nexport * from './lib/Shared/services/ControlUtility'\r\nexport * from './lib/Shared/services/OnPagingFiltersChange.service'\r\nexport * from './lib/Shared/config/environment'\r\nexport * from './lib/Shared/services/GlobalSettings.service'\r\nexport * from './lib/Shared/services/render-component-service.service'\r\nexport * from './lib/Shared/default_intl'\r\n\r\n\r\n\r\n//export Models\r\nexport * from './lib/Shared/Models/ControlOptionsBase'\r\nexport * from './lib/Shared/Models/ReCaptchaOptions'\r\nexport * from './lib/Shared/Models/Recaptcha'\r\nexport * from './lib/Shared/Models/MultilingualControlOptionsBase'\r\nexport * from './lib/Shared/Models/CustomValidation'\r\nexport * from './lib/Shared/Models/datePickerOptions'\r\nexport * from './lib/Shared/Models/TextBoxOptions'\r\nexport * from './lib/Shared/Models/FileUploadOptions'\r\nexport * from './lib/Shared/Models/FileUploadModel'\r\nexport * from './lib/Shared/Models/MultipleFileUploadModel'\r\nexport * from './lib/Shared/Models/MultilingualTextBoxOptions'\r\nexport * from './lib/Shared/Models/RangeNumber'\r\nexport * from './lib/Shared/Models/EnglishArabicDTO'\r\nexport * from './lib/Shared/Models/Attribute'\r\nexport * from './lib/Shared/Models/TextAreaOptions'\r\nexport * from './lib/Shared/Models/MultiLingualTextAreaOptions'\r\nexport * from './lib/Shared/Models/CheckBoxOptions'\r\nexport * from './lib/Shared/Models/DropdownListItem'\r\nexport * from './lib/Shared/Models/DropdownOptions'\r\nexport * from './lib/Shared/Models/PhoneOptions'\r\nexport * from './lib/Shared/Models/ToggleslideOptions'\r\nexport * from './lib/Shared/Models/HtmlEditorOptions'\r\nexport * from './lib/Shared/Models/MultiLingualHtmlEditorOptions'\r\nexport * from './lib/Shared/Models/FileDTO'\r\nexport * from './lib/Shared/Models/ImageUploadOptions'\r\nexport * from './lib/Shared/Models/ProfileImageUploadOptions'\r\nexport * from './lib/Shared/Models/ProfilePictureDTO'\r\nexport * from './lib/Shared/Models/SaveDTO'\r\nexport * from './lib/Shared/Models/CancelDTO'\r\nexport * from './lib/Shared/Models/EditPersonalImage'\r\nexport * from './lib/Shared/Models/UploadPersonalImage'\r\nexport * from './lib/Shared/Models/CalendarOptions'\r\nexport * from './lib/Shared/Models/CalendarEventDTO'\r\nexport * from './lib/Shared/Models/MapAutoCompleteOptions'\r\nexport * from './lib/Shared/Models/MapAutocompleteDTO'\r\nexport * from './lib/Shared/Models/AutocompleteDTO'\r\nexport * from './lib/Shared/Models/AutocompleteOptions'\r\nexport * from './lib/Shared/Models/TagsInputDTO'\r\nexport * from './lib/Shared/Models/TagsInputOptions'\r\nexport * from './lib/Shared/Models/FilterItem'\r\nexport * from './lib/Shared/Models/PagingDTO'\r\nexport * from './lib/Shared/Models/PagingOptions'\r\nexport * from './lib/Shared/Models/RadioButtonOptions'\r\nexport * from './lib/Shared/Models/RadioButtonItem'\r\nexport * from './lib/Shared/Models/FormOptions'\r\nexport * from './lib/Shared/Models/ConfirmationModalOptions'\r\nexport * from './lib/Shared/Models/RepeaterField'\r\nexport * from './lib/Shared/Models/RepeaterOptions'\r\nexport * from './lib/Shared/Models/page-header-options'\r\nexport * from './lib/Shared/Models/filter-options'\r\nexport * from './lib/Shared/Models/control-filter-Item'\r\nexport * from './lib/Shared/Models/bread-crumb'\r\nexport * from './lib/Shared/Directives/template-name.directive'\r\nexport * from './lib/shared/Pipes/bbsf-date-time.pipe';\r\nexport * from './lib/shared/Pipes/bbsf-date.pipe';\r\n\r\n\r\n//export Enums\r\nexport * from './lib/Shared/Enums/InputType'\r\nexport * from './lib/Shared/Enums/menu-list-enum'\r\nexport * from './lib/Shared/Enums/ControlLayout'\r\nexport * from './lib/Shared/Enums/ForceDirection'\r\nexport * from './lib/Shared/Enums/PickerType'\r\nexport * from './lib/Shared/Enums/StartView'\r\nexport * from './lib/Shared/Enums/SelectMode'\r\nexport * from './lib/Shared/Enums/Countries'\r\nexport * from './lib/Shared/Enums/FontSize'\r\nexport * from './lib/Shared/Enums/Insert'\r\nexport * from './lib/Shared/Enums/Misc'\r\nexport * from './lib/Shared/Enums/Para'\r\nexport * from './lib/Shared/Enums/Style'\r\nexport * from './lib/Shared/Enums/FileType'\r\nexport * from './lib/Shared/Enums/ImageType'\r\nexport * from './lib/Shared/Enums/LanguageMode'\r\nexport * from './lib/Shared/Enums/CalendarView'\r\nexport * from './lib/Shared/Enums/FilterType'\r\nexport * from './lib/Shared/Enums/IconPosition'\r\nexport * from './lib/Shared/Enums/PagingActionMode'\r\nexport * from './lib/Shared/Enums/StyleConfirmationMode'\r\nexport * from './lib/Shared/Enums/Enums'\r\nexport * from './lib/Shared/Enums/LanguageValidation'\r\nexport * from './lib/Shared/Enums/TagInputView'\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {BTagsInputComponent as ɵa} from './lib/Shared/Components/ng-tag-input';"],"names":["noop","environment","timeGridPlugin"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAOa,sBAAsB;;IAIjC,YACU,IAAU,EACE,gBAAkC,EAC9C,cAA8B;QAF9B,SAAI,GAAJ,IAAI,CAAM;QACE,qBAAgB,GAAhB,gBAAgB,CAAkB;QAC9C,mBAAc,GAAd,cAAc,CAAgB;QAIxC,QAAG,GAAG,sBAAsB,CAAC;QAF3B,sBAAsB,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC;KACvE;;IAID,OAAO,SAAS,CAAC,eAAuB;QACtC,IAAI,IAAI,GAAG,sBAAsB,CAAC,sBAAsB;aACrD,OAAoB,CAAC;QACxB,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAgB,CAAC;;QAEvD,OAAO,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,OAAO,CAAC,aAAa,EAAE,CAAC;KACzB;;;;;;;;;;;;IAcD,yBAAyB,CAAC,KAAU;QAClC,IAAI,MAAM,GAAW,EAAE,CAAC;QACxB,QAAQ,KAAK,CAAC,GAAG;YACf,KAAK,UAAU;gBACb,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;gBACvE,MAAM;YACR,KAAK,OAAO;gBACV,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;gBACpE,MAAM;YACR,KAAK,oBAAoB;gBACvB,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;gBACpE,MAAM;YACR,KAAK,kBAAkB;gBACrB,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;gBACpE,MAAM;YACR,KAAK,SAAS;gBACZ,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;gBACrE,MAAM;YACR,KAAK,WAAW;gBACd,MAAM;oBACJ,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,wBAAwB,CAAC;wBAC9D,GAAG;wBACH,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC;gBAC7B,MAAM;YACR,KAAK,WAAW;gBACd,MAAM;oBACJ,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,wBAAwB,CAAC;wBAC9D,GAAG;wBACH,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC;gBAC7B,MAAM;YACR,KAAK,KAAK;gBACR,MAAM;oBACJ,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,uBAAuB,CAAC;wBAC7D,GAAG;wBACH,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;gBAClB,MAAM;YACR,KAAK,KAAK;gBACR,MAAM;oBACJ,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,uBAAuB,CAAC;wBAC7D,GAAG;wBACH,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;gBAClB,MAAM;YACR,KAAK,4BAA4B;gBAC/B,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAC3C,4BAA4B,CAC7B,CAAC;gBACF,MAAM;YACR,KAAK,6BAA6B;gBAChC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAC3C,6BAA6B,CAC9B,CAAC;gBACF,MAAM;YACR,KAAK,qBAAqB;gBACxB,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAC3C,0BAA0B,CAC3B,CAAC;gBACF,MAAM;YACR,KAAK,MAAM;gBACT,MAAM;oBACJ,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,mBAAmB,CAAC;wBACzD,GAAG;wBACH,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC;gBAC3B,MAAM;YACR,KAAK,6BAA6B;gBAChC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAC3C,6BAA6B,CAC9B,CAAC;gBACF,MAAM;YACR,KAAK,kBAAkB;gBACrB,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;gBAClE,MAAM;YACR,KAAK,mBAAmB;gBACtB,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;gBACnE,MAAM;YACR,KAAK,4CAA4C;gBAC/C,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAC3C,4CAA4C,CAC7C,CAAC;gBACF,MAAM;YACR,KAAK,oCAAoC;gBACvC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAC3C,oCAAoC,CACrC,CAAC;gBACF,MAAM;YACR,KAAK,kCAAkC;gBACrC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAC3C,kCAAkC,CACnC,CAAC;gBACF,MAAM;YACR,KAAK,oCAAoC;gBACvC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAC3C,oCAAoC,CACrC,CAAC;gBACF,MAAM;YACR,KAAK,2BAA2B;gBAC9B,MAAM;oBACJ,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,2BAA2B,CAAC;wBACjE,GAAG;wBACH,KAAK,CAAC,KAAK,CAAC;gBACd,MAAM;YACR,KAAK,2BAA2B;gBAC9B,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAC3C,2BAA2B,CAC5B,CAAC;gBACF,MAAM;YACR,KAAK,2BAA2B;gBAC9B,MAAM;oBACJ,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,2BAA2B,CAAC;wBACjE,GAAG;wBACH,KAAK,CAAC,KAAK,CAAC;gBACd,MAAM;YACR,KAAK,2BAA2B;gBAC9B,MAAM;oBACJ,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,2BAA2B,CAAC;wBACjE,GAAG;wBACH,KAAK,CAAC,KAAK,CAAC;gBACd,MAAM;YACR,KAAK,wBAAwB;gBAC3B,MAAM;oBACJ,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,wBAAwB,CAAC;wBAC9D,GAAG;wBACH,KAAK,CAAC,KAAK,CAAC;gBACd,MAAM;YACR,KAAK,iBAAiB;gBACpB,MAAM;oBACJ,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,iBAAiB,CAAC;wBACvD,GAAG;wBACH,KAAK,CAAC,KAAK,CAAC;gBACd,MAAM;YACR,KAAK,kBAAkB;gBACrB,MAAM;oBACJ,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,kBAAkB,CAAC;wBACxD,GAAG;wBACH,KAAK,CAAC,KAAK,CAAC;gBACd,MAAM;YACR,KAAK,gBAAgB;gBACnB,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;gBAChE,MAAM;YACR,KAAK,kBAAkB;gBACrB,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;gBAClE,MAAM;YACR;gBACE,MAAM;SACT;QACD,OAAO,MAAM,CAAC;KACf;;AAnLM,6CAAsB,GAAG,IAAI,CAAC;;YAFtC,UAAU;;;YALF,IAAI;YAEJ,gBAAgB,uBAUpB,QAAQ;YATJ,cAAc;;;ICJX;AAAZ,WAAY,SAAS;IACnB,yCAAQ,CAAA;IACR,iDAAY,CAAA;IACZ,2CAAS,CAAA;IACT,6CAAU,CAAA;IACV,uCAAO,CAAA;IACP,uCAAO,CAAA;AACT,CAAC,EAPW,SAAS,KAAT,SAAS;;MCUR,cAAc;IACzB,YAAoB,YAAoC,EAAU,wBAAkD,EAAU,cAA8B;QAAxI,iBAAY,GAAZ,YAAY,CAAwB;QAAU,6BAAwB,GAAxB,wBAAwB,CAA0B;QAAU,mBAAc,GAAd,cAAc,CAAgB;KAE3J;IAED,kBAAkB,CAAC,UAAiB,EAAE,gBAAmC;QACvE,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,UAAU,CAAC,OAAO,CAAC,OAAO;YAExB,IAAI,OAAO,CAAC,GAAG,KAAK,eAAe,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC9D,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;aACvC;iBAAM,IAAI,OAAO,CAAC,GAAG,KAAK,iBAAiB,EAAE;gBAC5C,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;aACzB;iBAAM,IAAI,OAAO,CAAC,GAAG,KAAK,WAAW,EAAE;gBACtC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;aACzB;iBACI,IAAI,OAAO,CAAC,GAAG,KAAK,cAAc,EAAE;gBACvC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;aACzB;iBACI;gBACH,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;aAChE;SACF,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;KAChB;IAED,gBAAgB,CAAC,KAAa,EAAE,KAAuB;QACrD,OAAO,CAAC,OAAwB;YAC9B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;gBAClB,OAAO,IAAI,CAAC;aACb;YAED,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACxC,OAAO,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;SAC7B,CAAC;KACH;IACD,iBAAiB,CAAC,aAAa,EAAE,aAAa,EAAE,SAAS;QACvD,IAAI,OAAO,GAAG,CAAC;gBACb,EAAE,EAAE,SAAS;gBACb,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,aAAa;aACrB,CAAC,CAAA;QACF,IAAI,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAoB,CAAC;QACxE,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;KAErG;IACD,eAAe,CAAC,KAAuB;QACrC,OAAO,CAAC,OAAwB;YAC9B,IAAI,CAAC,OAAO,CAAC,KAAK;gBAChB,OAAO,IAAI,CAAC;YACd,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE;gBAC1C,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE;;oBAE3C,IAAI,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC;oBAC3E,IAAI,MAAM,GAAG,EAAE,EAAE;wBACf,OAAO,KAAK,CAAC;qBACd;yBAAM;wBACL,OAAO,IAAI,CAAC;qBACb;iBACF;qBACI;;oBAEH,OAAO,IAAI,CAAC;iBACb;aACF;iBACI;gBACH,OAAO,KAAK,CAAC;aACd;SACF,CAAC;KACH;IAED,YAAY,CAAC,IAAY;QACvB,OAAO,SAAS,CAAC,IAAI,CAAW,CAAA;KACjC;IAGD,gBAAgB,CAAC,KAAU;QACzB,MAAM,UAAU,GAAW,GAAG,CAAC;QAC/B,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;YAC9D,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;SACrB;;YAEC,OAAO,KAAK,CAAA;KACf;IAED,gBAAgB,CAAC,YAAY;QAC3B,YAAY,CAAC,MAAM,EAAE,CAAC;QACtB,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC7B,YAAY,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACtC;IAGD,yBAAyB,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO;;;;;;QAMjD,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;KACrE;IAED,0BAA0B;QACxB,IAAI,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACjD,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;KACnE;IACD,sBAAsB,CAAC,OAAO;QAC5B,IAAI,OAAO,CAAC,aAAa,IAAI,IAAI,EAAE;YACjC,IAAI,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACjE,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;aAC5F;SAEF;KAEF;IAED,eAAe,CAAC,MAAe;QAC7B,IAAI,CAAC,wBAAwB,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5D,IAAI,CAAC,0BAA0B,EAAE,CAAA;KAClC;IAED,wBAAwB,CAAC,WAA4B,EAAE,cAAqB,EAAE,OAAY;QACxF,OAAO,CAAC,UAAU,GAAG,KAAK,CAAA;QAC1B,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAA;QACvE,WAAW,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAC1C,WAAW,CAAC,sBAAsB,EAAE,CAAA;KACrC;IAED,qBAAqB,CAAC,WAA4B,EAAE,cAAqB,EAAE,OAAY;QACrF,OAAO,CAAC,UAAU,GAAG,IAAI,CAAA;QACzB,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;QACxC,WAAW,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAC1C,WAAW,CAAC,sBAAsB,EAAE,CAAA;KACrC;IAED,oBAAoB,CAAC,WAA4B,EAAE,OAAY;QAC7D,OAAO,CAAC,UAAU,GAAG,IAAI,CAAA;QACzB,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC/C,WAAW,CAAC,sBAAsB,EAAE,CAAA;KACrC;IACD,yBAAyB,CAAC,WAA4B,EAAE,OAAY;QAClE,OAAO,CAAC,UAAU,GAAG,KAAK,CAAA;QAC1B,WAAW,CAAC,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAClD,WAAW,CAAC,sBAAsB,EAAE,CAAA;KACrC;IAGD,sBAAsB,CAAC,WAA4B,EAAE,cAAqB,EAAE,gBAAkC;QAC5G,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC,YAAY,CAAC,CAAA;QACjF,WAAW,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAC1C,WAAW,CAAC,sBAAsB,EAAE,CAAA;KACrC;IAED,mBAAmB,CAAC,WAA4B,EAAE,cAAqB,EAAE,gBAAkC;QACzG,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAA;QAClD,WAAW,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAC1C,WAAW,CAAC,sBAAsB,EAAE,CAAA;KACrC;IACD,OAAO,QAAQ;QACb,IAAI,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC5C,OAAO,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC;KACtC;IAED,OAAO,CAAC,WAA4B;QAClC,WAAW,CAAC,aAAa,EAAE,CAAC;KAC7B;;;YAvKF,UAAU;;;YAPF,sBAAsB;YAGtB,wBAAwB;YAAE,cAAc;;;ICLrC;AAAZ,WAAY,UAAU;IACpB,2CAAQ,CAAA;IACR,mDAAY,CAAA;IACZ,6CAAS,CAAA;AACT,CAAC,EAJS,UAAU,KAAV,UAAU;;ICAV;AAAZ,WAAY,SAAS;IACnB,2CAAS,CAAA;IACT,yCAAQ,CAAA;IACR,mDAAW,CAAA;AACX,CAAC,EAJS,SAAS,KAAT,SAAS;;ICAT;AAAZ,WAAY,UAAU;IAElB,+CAAU,CAAA;IACV,6CAAS,CAAA;AACb,CAAC,EAJW,UAAU,KAAV,UAAU;;MCIT,4BAA4B;IADzC;QAEY,YAAO,GAAG,IAAI,OAAO,EAAO,CAAC;KAaxC;IAXG,WAAW,CAAC,KAAa;QACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5B;IAED,UAAU;QACN,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;KACvB;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;KACtC;;;;YAdJ,UAAU,SAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACElC;MACa,WAAY,SAAQ,eAAe;IAC9C,YAAoB,cAA8B;QAChD,KAAK,EAAE,CAAC;QADU,mBAAc,GAAd,cAAc,CAAgB;;QAKlD,mBAAc,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;;QAE9D,iBAAY,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;;QAE1D,mBAAc,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;;QAEhE,gBAAW,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;;QAE3D,kBAAa,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;;QAE3D,kBAAa,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;KAb1D;;;YALF,UAAU;;;YAHF,cAAc;;;MCuBV,kBAAkB;;IAG7B,YAAmB,QAAkB,EAAU,eAA6C,EAAU,YAAoC,EAAU,cAA8B,EAAsB,gBAAkC,EAAS,oBAAwC,EAAU,cAA8B,EAAU,SAA+B,EAAU,wBAAkD,EAAU,eAAqC;QAApc,aAAQ,GAAR,QAAQ,CAAU;QAAU,oBAAe,GAAf,eAAe,CAA8B;QAAU,iBAAY,GAAZ,YAAY,CAAwB;QAAU,mBAAc,GAAd,cAAc,CAAgB;QAAsB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAAS,yBAAoB,GAApB,oBAAoB,CAAoB;QAAU,mBAAc,GAAd,cAAc,CAAgB;QAAU,cAAS,GAAT,SAAS,CAAsB;QAAU,6BAAwB,GAAxB,wBAAwB,CAA0B;QAAU,oBAAe,GAAf,eAAe,CAAsB;QAM7c,aAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QACxC,qBAAgB,GAAY,KAAK,CAAC;QAClC,oBAAe,GAAG,EAAE,CAAC;QACrB,yBAAoB,GAAG,EAAE,CAAC;QAC1B,oBAAe,GAAoB,IAAI,CAAC;QACxC,cAAS,GAAY,KAAK,CAAC;QA8D3B,eAAU,GAAG;YACX,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,CAAC;SACnD,CAAA;QAgFD,iCAA4B,GAAG;YAC7B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;gBAC3E,OAAO,IAAI,CAAC;aACb;YACD,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;gBAC5F,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACrC,OAAO,IAAI,CAAC;aACb;iBACI;gBACH,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACrC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;aACjC;SACF,CAAC;QACF,iCAA4B,GAAG;YAC7B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;gBAC3E,OAAO,IAAI,CAAC;aACb;YACD,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;gBAC5F,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAClD,OAAO,IAAI,CAAC;aACb;iBACI;gBACH,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAClD,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC;aACnC;SACF,CAAC;;QAGF,6BAAwB,GAAG;YACzB,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;SAC7G,CAAA;;QAED,0BAAqB,GAAG;YACtB,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;SAC1G,CAAA;;QAGD,2BAAsB,GAAG,CAAC,gBAAgB;YACxC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;SAC/G,CAAA;;QAED,wBAAmB,GAAG,CAAC,gBAAgB;YACrC,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;SAC5G,CAAA;;QAGD,YAAO,GAAG;YACR,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;SACxD,CAAA;QA1MC,kBAAkB,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC;KACnE;IAaD,QAAQ;QACN,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc;YAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;;YAEhE,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;QAC1E,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC;aAC3B;YACH,IAAI,CAAC,SAAS,GAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAY,CAAC,WAAW,EAAE,CAAA;SAC7E;;QAED,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,IAAI,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC;QAClG,IAAI,CAAC,wBAAwB,CAAC,cAAc,GAAG,KAAK,CAAA;QACpD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEpE,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAExD,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5C,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAA;YAC/C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACvD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;aACpD;SACF;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SAChD;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE;YAC9D,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAGxF,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;SACtC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE;YAC1C,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,EAAE;gBAC1D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAA;gBAC7E,IAAI,CAAC,oBAAoB,EAAE,CAAA;aAC5B;SACF;QAED,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC/D,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACzE,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK;YACjD,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAA;YAC7B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;SAC7B,CAAC,CAAA;KAEH;IAGD,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;KACzD;IAOD,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAA;KACtC;IAED,kBAAkB,CAAC,SAAS;QAC1B,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAC/C,IAAI,CAAC,eAAe,EAAE,CAAA;YACtB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAA;SAC9B;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3F;IAKD,gBAAgB,CAAC,YAAY;QAC3B,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAA;KACnD;IAED,aAAa,CAAC,IAAY;QACxB,IAAI,KAAK,GAAI,UAAU,CAAC,IAAI,CAAY,CAAA;QACxC,OAAO,KAAK,CAAC,WAAW,EAA8B,CAAA;KACvD;IACD,aAAa,CAAC,IAAY;QACxB,IAAI,KAAK,GAAI,UAAU,CAAC,IAAI,CAAY,CAAA;QACxC,OAAO,KAAK,CAAC,WAAW,EAA8B,CAAA;KACvD;IACD,YAAY,CAAC,IAAY;QACvB,IAAI,IAAI,IAAI,CAAC;YACX,OAAO,YAAY,CAAC;aACjB;YACH,MAAM,KAAK,GAAI,SAAS,CAAC,IAAI,CAAY,CAAC,WAAW,EAAE,CAAA;YACvD,OAAO,KAAK,CAAA;SACb;KACF;IAGD,YAAY,CAAC,IAAI;QACf,IAAI,CAAC,IAAI;YACP,OAAO;QACT,IAAI,SAAS,CAAC;QACd,IAAI,QAAQ,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,iBAAiB,EAAE,GAAG,KAAK,CAAC;QAExD,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,EAAE;YAChC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACtD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aAEvF;YACD,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;SACxB;aACI;YACH,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAExE;QACD,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QAC9C,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,aAAa,GAAG,SAAS,CAAC;QAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;YACnG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;SACzG;;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACnC;IAED,oBAAoB;QAClB,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;QAC3D,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC;QACtE,gBAAgB,CAAC,SAAS,CAAC,KAAK;YAC9B,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YACtE,IAAI,CAAC,eAAe,CAAC,sBAAsB,EAAE,CAAC;SAC/C,CAAC,CAAC;QACH,cAAc,CAAC,SAAS,CAAC,GAAG;YAC1B,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC5E,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,EAAE,CAAC;SACrD,CAAC,CAAC;KACJ;IAoDD,YAAY;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,kBAAkB,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;KAC1I;;AAjNM,yCAAsB,GAAG,IAAI,CAAC;;YARtC,SAAS,SAAC;gBACT,QAAQ,EAAE,qBAAqB;gBAC/B,q0GAA8C;gBAC9C,SAAS,EAAE;oBACT,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,WAAW,EAAE;iBACpD;aACF;;;YAZQ,QAAQ;YAHR,4BAA4B;YAL5B,sBAAsB;YACtB,cAAc;YAH2D,gBAAgB,uBA0BqF,QAAQ;YA1BjI,kBAAkB;YASvB,cAAc;YAA9D,oBAAoB;YAAE,wBAAwB;YAE9C,eAAe;;;oBAkBrB,KAAK;sBACL,KAAK;uBAEL,MAAM;;;MC/BI,eAAe;;;MCAf,uBAAuB;IAApC;QACE,uBAAkB,GAAY,IAAI,CAAC;QACnC,kBAAa,GAAc,EAAE,CAAA;QAC7B,kBAAa,GAAc,EAAE,CAAA;QAC7B,iBAAY,GAAa,EAAE,CAAA;KAC5B;;;ICPW;AAAZ,WAAY,aAAa;IACrB,yDAAY,CAAA;IACZ,6DAAc,CAAA;AAClB,CAAC,EAHW,aAAa,KAAb,aAAa;;ICAb;AAAZ,WAAY,YAAY;IACpB,mFAAmE,CAAA;IACnE,yFAAyE,CAAA;IACzE,wFAAwE,CAAA;IACxE,oGAAoF,CAAA;IACpF,mGAAmF,CAAA;IACnF,sGAAsF,CAAA;IACtF,yHAAyG,CAAA;AAC5G,CAAC,EARU,YAAY,KAAZ,YAAY;;MCMX,cAAc;IAD3B;;QAGE,aAAQ,GAAkB,aAAa,CAAC,QAAQ,CAAC;;QAEjD,8BAAyB,GAAkB,aAAa,CAAC,UAAU,CAAC;;QAEpE,iBAAY,GAAiB,YAAY,CAAC,0BAA0B,CAAC;QACrE,6BAAwB,GAAY,KAAK,CAAC;;QAE1C,0BAAqB,GAAW,EAAE,CAAC;;QAEnC,qBAAgB,GAAW,GAAG,CAAC;;QAE/B,sBAAiB,GAAW,IAAI,CAAC;;QAEjC,oBAAe,GAAW,mCAAmC,CAAC;KAC/D;;;;YAjBA,UAAU,SAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MC6BrB,mBAAmB;IA2B9B,YACsB,gBAAkC,EAC/C,6BAAiD,EAChD,cAA8B,EAC/B,cAA8B,EAC7B,wBAAkD,EAClD,cAA8B;QALlB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAC/C,kCAA6B,GAA7B,6BAA6B,CAAoB;QAChD,mBAAc,GAAd,cAAc,CAAgB;QAC/B,mBAAc,GAAd,cAAc,CAAgB;QAC7B,6BAAwB,GAAxB,wBAAwB,CAA0B;QAClD,mBAAc,GAAd,cAAc,CAAgB;QAzB9B,aAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAGxC,sBAAiB,GAAG,EAAE,CAAC;QACvB,2BAAsB,GAAG,EAAE,CAAC;QAG5B,iBAAY,GAAW,EAAE,CAAC;QAC1B,sBAAiB,GAAa,EAAE,CAAC;QACjC,qBAAgB,GAAa,EAAE,CAAC;QAEhC,qBAAgB,GAAY,KAAK,CAAC;QAClC,oBAAe,GAAG,EAAE,CAAC;QACrB,yBAAoB,GAAG,EAAE,CAAC;QAI1B,iBAAY,GAAc,EAAE,CAAC;QAoN7B,eAAU,GAAG;YACX,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,CAAC;SACnD,CAAC;;QAqPF,6BAAwB,GAAG;YACzB,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAC1C,IAAI,CAAC,qBAAqB,EAC1B,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,OAAO,CACb,CAAC;SACH,CAAC;;QAEF,0BAAqB,GAAG;YACtB,IAAI,CAAC,cAAc,CAAC,qBAAqB,CACvC,IAAI,CAAC,qBAAqB,EAC1B,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,OAAO,CACb,CAAC;SACH,CAAC;;QAGF,2BAAsB,GAAG,CAAC,gBAAgB;YACxC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CACxC,IAAI,CAAC,qBAAqB,EAC1B,IAAI,CAAC,eAAe,EACpB,gBAAgB,CACjB,CAAC;SACH,CAAC;;QAEF,wBAAmB,GAAG,CAAC,gBAAgB;YACrC,IAAI,CAAC,cAAc,CAAC,mBAAmB,CACrC,IAAI,CAAC,qBAAqB,EAC1B,IAAI,CAAC,eAAe,EACpB,gBAAgB,CACjB,CAAC;SACH,CAAC;;QAEF,YAAO,GAAG;YACR,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;SACzD,CAAC;QApeA,mBAAmB,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACnE,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC;YAC/B,gBAAgB,EAAE,KAAK;SAExB,CAAC,CAAC;QACH,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;KACrC;IAED,QAAQ;QACN,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAC7C,IAAI,CAAC,uBAAuB,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAC7D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;YACxB,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;QAEvD,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE;YAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,EAAE;;aAExC;iBAAM;;aAEN;SACF;aAAM;YACL,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,EAAE;gBACvC,IAAI,KAAK,GAAU,EAAE,CAAC;gBACtB,IAAI,CAAC,uBAAuB,CAAC,aAAa;oBACxC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC;gBACnC,IAAI,CAAC,uBAAuB,CAAC,aAAa,GAAG,EAAE,CAAC;gBAChD,KACE,IAAI,KAAK,GAAG,CAAC,EACb,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAC/C,KAAK,EAAE,EACP;oBACA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;oBACxD,IAAI,KAAK,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,KAAK,CAAQ,CAAC;oBACjD,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;oBACpD,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC;wBACvC,IAAI,EAAE,OAAO,CAAC,iBAAiB;wBAC/B,IAAI,EAAE,OAAO,CAAC,QAAQ;wBACtB,OAAO,EAAE,MAAM;qBAChB,CAAC,CAAC;;;;;;oBAMH,IAAI,IAAI,GAAG,IAAI,CAAC,cAAqB,CAAC;oBACtC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;oBAC3B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAClB;gBACD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aAClC;iBAAM;gBACL,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;gBACnC,IAAI,KAAK,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,KAAK,CAAQ,CAAC;gBACjD,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;gBACpD,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC;oBACvC,IAAI,EAAE,OAAO,CAAC,iBAAiB;oBAC/B,IAAI,EAAE,OAAO,CAAC,QAAQ;oBACtB,OAAO,EAAE,MAAM;iBAChB,CAAC,CAAC;gBACH,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;gBACpB,IAAI,IAAI,GAAG,IAAI,CAAC,cAAqB,CAAC;gBACtC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;gBAC3B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAW,CAAC,CAAC,CAAC;aACzC;SACF;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE;YAC9D,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAC5D,IAAI,CAAC,OAAO,CAAC,QAAQ,CACtB,CAAC;QAEJ,IACE,IAAI,CAAC,OAAO,CAAC,sBAAsB,IAAI,IAAI;YAC3C,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAC9C;YACA,KACE,IAAI,KAAK,GAAG,CAAC,EACb,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,MAAM,EAClD,KAAK,EAAE,EACP;gBACA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;gBACxD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,GAAG,CAAC;aACpD;YACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAClE,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBAC9C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBAClE,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;oBAC9C,QAAQ,OAAO;wBACb,KAAK,iBAAiB;4BACpB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC;gCACxC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BACpC,MAAM;wBACR,KAAK,oBAAoB;4BACvB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC;gCACzC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;4BACrC,MAAM;wBACR,KAAK,yEAAyE;4BAC5E,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC;gCACzC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;4BACrC,MAAM;wBACR,KAAK,0BAA0B;4BAC7B,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC;gCAC1C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;4BACtC,MAAM;wBACR,KAAK,mEAAmE;4BACtE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC;gCAC1C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;4BACtC,MAAM;wBACR,KAAK,+BAA+B;4BAClC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC;gCAC/C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;4BAC3C,MAAM;wBACR,KAAK,sFAAsF;4BACzF,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC;gCAC/C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;4BAC3C,MAAM;wBACN,KAAK,WAAW;4BAChB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC;gCACxC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BACpC,MAAM;wBACN,KAAK,WAAW;4BAChB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC;gCACxC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BACpC,MAAM;wBACN,KAAK,YAAY;4BACjB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC;gCACzC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;4BACrC,MAAM;wBACR;4BACE,MAAM;qBACT;iBACF;aACF;YACD,IAAI,CAAC,iBAAiB;gBACpB,IAAI,CAAC,iBAAiB;oBACtB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,YAAY,CAAC,KACnD,IAAI,CAAC,gBACP,IAAI,CAAC;SACR;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,CAAC,EAAE;YACpC,IAAI,CAAC,iBAAiB;gBACpB,IAAI,CAAC,iBAAiB;oBACtB,WAAY,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,GAAC,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,CAAC;SACvG;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,EAAE;YACjC,IAAI,CAAC,iBAAiB;gBACpB,IAAI,CAAC,iBAAiB;oBACtB,UAAU,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,2BAA2B,CAAC,GAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;SAC5G;QAED,IACE,IAAI,CAAC,OAAO,CAAC,sBAAsB,IAAI,IAAI;YAC3C,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAC9C;SACD;QACD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEpE,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5C,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;YAChD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACvD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;aACpD;SACF;QAED,IAAG,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,GAAC,CAAC,EAC3D;YACE,IAAI,CAAC,sBAAsB,GAAC,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;SACvH;QACH,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SAChD;QAED,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC/D,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACzE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;SACtC;QAED,IAAI,CAAC,6BAA6B,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK;YAC1D,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC9B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;SAC9B,CAAC,CAAC;QAEH,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACzD;IAED,eAAe;QACb,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,EAAE;YACtC,IAAI,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACzD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACtE,OAAO,CAAC,YAAY,CAClB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,GAAG,EACrC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,CACxC,CAAC;aACH;SACF;KACF;IAMD,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;KACvC;IAED,kBAAkB,CAAC,SAAS;QAC1B,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAC/C,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;SAC/B;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAClD,SAAS,EACT,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,OAAO,CACb,CAAC;KACH;IAED,eAAe,CAAC,KAAU;QACxB,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;KACrC;IACD,WAAW;QACT,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;YAC/B,IACE,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI;gBACjC,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC;gBAC7B,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EACvD;gBACA,OAAO,IAAI,CAAC;aACb;SACF;aAAM;YACL,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBAClC,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC;KACd;IACD,YAAY;QACV,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IACE,IAAI,CAAC,OAAO,CAAC,cAAc;YAC3B,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI;YACjC,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EACtD;YACA,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC;YAC/C,WAAW,CAAC,SAAS,CAAC;gBACpB,yBAAyB,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;aACrD,CAAC,CAAC;YACH,WAAW,CAAC,aAAa,EAAE,CAAC;YAC5B,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;YACzB,OAAO;SACR;QAED,IACE,IAAI,CAAC,OAAO,CAAC,cAAc;YAC3B,IAAI,CAAC,OAAO,CAAC,sBAAsB,IAAI,IAAI;YAC3C,IAAI,CAAC,OAAO,CAAC,sBAAsB,GAAG,CAAC,EACvC;YACA,IAAI,WAAW,GAAG,CAAC,CAAC;YACpB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;gBAC1B,WAAW,GAAG,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;aACvC;YACD,MAAM,kBAAkB,GACtB,IAAI,CAAC,OAAO,CAAC,sBAAsB,GAAG,IAAI,GAAG,IAAI,CAAC;YACpD,IAAI,WAAW,GAAG,kBAAkB,EAAE;gBACpC,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC;gBAC/C,WAAW,CAAC,SAAS,CAAC;oBACpB,sBAAsB,EAAE,IAAI,CAAC,OAAO,CAAC,sBAAsB,GAAG,GAAG;iBAClE,CAAC,CAAC;gBACH,WAAW,CAAC,aAAa,EAAE,CAAC;gBAC5B,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;gBACzB,OAAO;aACR;SACF;QACD,IAAI,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CACzC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,IAAI,IAAI,CAChD,CAAC;QACF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACtD,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,GAAG,IAAI,CAAC;YAC/D,IAAI,IAAI,EAAE;gBACR,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;gBAC3B,IAAI,IAAI,CAAC,IAAI,GAAG,WAAW,EAAE;oBAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC;oBAC/C,WAAW,CAAC,SAAS,CAAC;wBACpB,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,GAAG;qBACpD,CAAC,CAAC;oBACH,WAAW,CAAC,aAAa,EAAE,CAAC;oBAC5B,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;oBACzB,OAAO;iBACR;gBACD,IACE,IAAI,CAAC,OAAO,CAAC,sBAAsB,IAAI,IAAI;oBAC3C,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC;oBAC9C,EACE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;wBACvD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CACxD,EACD;oBACA,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC;oBAC/C,WAAW,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;oBACnE,WAAW,CAAC,aAAa,EAAE,CAAC;oBAC5B,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;oBACzB,OAAO;iBACR;gBACD,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC9B,IAAI,UAAU,GAAG,IAAI,CAAC,OAAc,CAAC;gBACrC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;gBACjC,MAAM,CAAC,MAAM,GAAG;;oBACd,IAAI,eAAe,GAAG,IAAI,CAAC;oBAC3B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI;wBAC3C,eAAe;4BACb,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,IAAI;kCACpC,IAAI,CAAC,IAAI,CAAC,OAAO;kCACjB,IAAI,CAAC;oBAEb,IAAI,SAAS,GAAG;wBACd,QAAQ,EAAE,IAAI,CAAC,IAAI;wBACnB,QAAQ,EAAE,IAAI,CAAC,IAAI;wBACnB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBAClD,YAAY,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI;wBACrC,iBAAiB,EAAE,IAAI,CAAC,IAAI;wBAC5B,OAAO,EAAE,eAAe;qBACzB,CAAC;oBACF,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,KAAK,EAAE;wBACxC,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;wBAC7C,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,SAAS,CAAC;wBAEtC,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;wBAC1D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;wBAEjE,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC;qBAC3C;yBAAM;wBACL,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBAC3B,IAAI,CAAC,uBAAuB,CAAC,aAAa,GAAG,UAAU,CAAC;wBACxD,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,SAAS,EAAE;4BACjE,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,IAAI,IAAI,EAAE;gCACjD,IAAI,CAAC,uBAAuB,CAAC,YAAY,GAAG,EAAE,CAAC;6BAChD;yBACF;wBACD,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,GAAC,MAAA,IAAI,CAAC,OAAO,CAAC,KAAK,0CAAE,kBAAkB,CAAA;wBACtF,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;wBAClE,IAAI,CAAC,KAAK;6BACP,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;6BACtB,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;;wBAE1C,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC;qBACnD;iBACF,CAAC;gBACF,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;gBAC5D,IACE,IAAI,CAAC,OAAO,CAAC,aAAa;oBAC1B,IAAI,CAAC,OAAO,CAAC,SAAS;oBACtB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EACvC;oBACA,IAAI,CAAC,cAAc,CAAC,iBAAiB,CACnC,aAAa,EACb,IAAI,CAAC,OAAO,CAAC,aAAa,EAC1B,IAAI,CAAC,OAAO,CAAC,SAAS,CACvB,CAAC;iBACH;gBACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC;SACF;KACF;IACD,sBAAsB,CAAC,IAAI;;QACzB,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,KAAK,EAAE;YACxC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;gBACnC,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE,CAAC;gBAC3C,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;aACpC;YACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACjE,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC;SAC3C;aAAM;YACL,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,SAAS,EAAE;gBACjE,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,IAAI,IAAI,EAAE;oBACjD,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;oBACvB,IAAI,CAAC,uBAAuB,CAAC,YAAY,GAAG,EAAE,CAAC;iBAChD;qBAAM;oBACL,IAAI,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,EAAE;wBACzD,IAAI,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;wBACnC,IAAI,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,MAAM,CACjE,CAAC,MAAM,KAAK,MAAM,CAAC,iBAAiB,IAAI,UAAU,CAAC,IAAI,CACxD,CAAC,CAAC,CAAC,CAAC;wBACL,IAAI,CAAC,uBAAuB,CAAC,aAAa;4BACxC,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,MAAM,CAC/C,CAAC,MAAM,KAAK,MAAM,CAAC,iBAAiB,IAAI,UAAU,CAAC,IAAI,CACxD,CAAC;wBACJ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;wBACpC,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;qBACrE;yBAAM;wBACL,IAAI,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;wBACnC,IAAI,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CACxC,CAAC,MAAM,KAAK,MAAM,CAAC,iBAAiB,IAAI,UAAU,CAAC,IAAI,CACxD,CAAC;wBACF,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,IAAI,WAAW,IAAI,SAAS,EAAE;4BACvD,IAAI,WAAW,GACb,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,MAAM,CAC/C,CAAC,MAAM,KAAK,MAAM,CAAC,iBAAiB,IAAI,UAAU,CAAC,IAAI,CACxD,CAAC,CAAC,CAAC,CAAC;4BACP,IAAI,CAAC,uBAAuB,CAAC,aAAa;gCACxC,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,MAAM,CAC/C,CAAC,MAAM,KAAK,MAAM,CAAC,iBAAiB,IAAI,UAAU,CAAC,IAAI,CACxD,CAAC;4BACJ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;4BACpC,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,IAAI,CAC5C,WAAW,CAAC,OAAO,CACpB,CAAC;yBACH;qBACF;iBACF;aACF;iBAAM;gBACL,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;gBACvB,IAAI,CAAC,uBAAuB,CAAC,YAAY,GAAG,EAAE,CAAC;aAChD;YACD,IAAI,CAAC,uBAAuB,CAAC,aAAa;gBACxC,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,MAAM,CAC/C,CAAC,MAAM,KAAK,MAAM,CAAC,iBAAiB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CACxD,CAAC;YACJ,IACE,CAAC,IAAI,CAAC,uBAAuB,CAAC,aAAa,IAAI,IAAI;gBAChD,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC;gBACzD,IAAI,CAAC,OAAO,CAAC,UAAU,EACvB;gBACA,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC;gBAC/C,WAAW,CAAC,SAAS,CAAC;oBACpB,yBAAyB,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;iBACrD,CAAC,CAAC;gBACH,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE,CAAC;gBAC3C,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;aACpC;YACD,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,GAAC,MAAA,IAAI,CAAC,OAAO,CAAC,KAAK,0CAAE,kBAAkB,CAAA;YACtF,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YAClE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;;YAEzE,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC;SACnD;KACF;;AAjeM,0CAAsB,GAAG,IAAI,CAAC;;YALtC,SAAS,SAAC;gBACT,QAAQ,EAAE,iBAAiB;gBAC3B,smNAA0C;aAC3C;;;YAlBC,gBAAgB,uBA+Cb,QAAQ;YA9CX,kBAAkB;YAGX,cAAc;YAMrB,cAAc;YADd,wBAAwB;YAGjB,cAAc;;;wBAUpB,SAAS,SAAC,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;oBAGxC,KAAK;sBACL,KAAK;uBACL,MAAM;;;MCzCI,gBAAgB;CAI5B;AAF+B;IAA3B,MAAM,CAAC,EAAC,IAAI,EAAE,SAAS,EAAC,CAAC;iDAAiB;AACjB;IAAzB,MAAM,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC;gDAAc;;MCY9B,4BAA4B;IAIvC,YAAmB,kCAAsD,EAAsB,gBAAkC,EACvH,cAA8B,EAAU,cAA8B,EAAU,SAA+B,EAC/G,wBAAkD,EAAU,cAA8B;QAFjF,uCAAkC,GAAlC,kCAAkC,CAAoB;QAAsB,qBAAgB,GAAhB,gBAAgB,CAAkB;QACvH,mBAAc,GAAd,cAAc,CAAgB;QAAU,mBAAc,GAAd,cAAc,CAAgB;QAAU,cAAS,GAAT,SAAS,CAAsB;QAC/G,6BAAwB,GAAxB,wBAAwB,CAA0B;QAAU,mBAAc,GAAd,cAAc,CAAgB;QAM1F,aAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAMxC,oBAAe,GAAW,CAAC,CAAC;QAC5B,yBAAoB,GAAW,CAAC,CAAC;QACjC,qBAAgB,GAAW,CAAC,CAAC;QAC7B,0BAAqB,GAAW,CAAC,CAAC;QAClC,oBAAe,GAAW,EAAE,CAAC;QAG7B,0BAAqB,GAAG,EAAE,CAAC;QAC3B,+BAA0B,GAAG,EAAE,CAAC;QAChC,2BAAsB,GAAG,EAAE,CAAC;QAC5B,gCAA2B,GAAG,EAAE,CAAC;QAEjC,0BAAqB,GAAY,KAAK,CAAC;QACvC,2BAAsB,GAAY,KAAK,CAAC;QAExC,2BAAsB,GAAY,KAAK,CAAC;QACxC,4BAAuB,GAAY,KAAK,CAAC;QACzC,qBAAgB,GAAY,KAAK,CAAC;QAGlC,qBAAgB,GAAW,EAAE,CAAA;QAC7B,sBAAiB,GAAW,EAAE,CAAA;;QAG9B,kBAAa,GAAW,CAAC,CAAC,CAAC;QAC3B,6BAAwB,GAAW,CAAC,CAAC;QACrC,4BAAuB,GAAW,CAAC,CAAC;QACpC,6BAAwB,GAAY,KAAK,CAAC;QAC1C,4BAAuB,GAAY,KAAK,CAAC;QACzC,wCAAmC,GAAY,KAAK,CAAC;QACrD,uCAAkC,GAAY,KAAK,CAAC;QAGpD,8BAAyB,GAAW,EAAE,CAAC;QACvC,6BAAwB,GAAW,EAAE,CAAC;;QA6NtC,6BAAwB,GAAG;YACzB,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;YAC/G,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;SAChH,CAAA;;QAED,0BAAqB,GAAG;YACtB,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;YAC5G,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;SAC7G,CAAA;;QAGD,2BAAsB,GAAG,CAAC,gBAAgB;YACxC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,sBAAsB,EAAE,gBAAgB,CAAC,CAAA;YACjH,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAA;SAClH,CAAA;;QAED,wBAAmB,GAAG,CAAC,gBAAgB;YACrC,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,sBAAsB,EAAE,gBAAgB,CAAC,CAAA;YAC9G,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAA;SAC/G,CAAA;;QAGD,YAAO,GAAG;YACR,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;YACnD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;SACrD,CAAA;QAnSC,4BAA4B,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC5E,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,WAAW,IAAI,SAAS,GAAG,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAA;KAC1G;IA6CD,uBAAuB;QACrB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,4CAA4C,CAAC,CAAC;QAC3G,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;KAGpF;IACK,QAAQ;;YACZ,IAAI,CAAC,wBAAwB,CAAC,cAAc,GAAG,KAAK,CAAA;YACpD,IAAI,CAAC,eAAe,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC;;;;;YAMtE,IAAI,CAAC,kBAAkB,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;YAAA,CAAC;YAC7C,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;YAClE,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;YACnE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACpE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACtE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC1F,IAAI,CAAC,uBAAuB,EAAE,CAAA;YAE9B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;gBACxB,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;YACvD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY;gBAC5B,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;YAC/D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB;gBACzC,IAAI,CAAC,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC;YACzF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS;gBACzB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC;YAEhE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE;gBAChE,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;gBACrJ,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;aACxJ;iBACI;gBACH,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE;oBAC1E,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;gBAEpG,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,EAAE;oBAC5E,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;aACvG;YAID,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC5C,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAA;gBAC/C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBACvD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;oBACtC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;oBAC1D,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;iBAC1D;aACF;YAGD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,EAAE;gBAC9B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC9E,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;aAChF;YAED,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,EAAE;gBAC9B,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC/E,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;gBAE9E,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB;oBACrC,IAAI,CAAC,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC;gBAEjF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC;aAClF;YAED,IAAI,CAAC,0BAA0B,EAAE,CAAC;YAElC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBACjD,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,0CAA0C,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;aAE3G,CAAC,CAAC,CAAC;YACJ,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBAClD,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,wDAAwD,EAAE,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;aAE9I,CAAC,CAAC,CAAC;YAEJ,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACjE,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAC3E,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACnE,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAC7E,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;gBAC3B,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;gBAClC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;aAClC;YACD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YAC1D,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAE5D,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;gBAClD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACvE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;aACzE;YAED,IAAI,CAAC,kCAAkC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK;gBAC/D,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAA;gBAC7B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;aAC7B,CAAC,CAAA;SACH;KAAA;IAGD,YAAY;;QAEV,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,EAAE;YACvC,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;SAC3B;aACI;YACH,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,IAAI,SAAS,EAAE;gBACvF,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;gBAC7E,IAAI,IAAI,CAAC,qBAAqB,GAAG,CAAC,EAAE;oBAClC,IAAI,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;wBAC1D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;wBAClD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,yBAAyB,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;wBAChH,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,aAAa,EAAE,CAAC;wBAC5D,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;qBACrD;yBACI;wBACH,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC;qBACpD;oBACD,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;iBAC9C;aACF;;;YAID,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,EAAE;gBACrD,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC;gBACrE,IAAI,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,aAAa,EAAE;oBACtD,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;oBACrC,IAAI,CAAC,mCAAmC,GAAG,IAAI,CAAC;oBAChD,IAAI,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS;wBACzD,IAAI,CAAC,yBAAyB,GAAG,QAAQ,CAAC;;wBAE1C,IAAI,CAAC,yBAAyB,GAAG,SAAS,CAAC;iBAC9C;qBACI;oBACH,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;oBACtC,IAAI,CAAC,mCAAmC,GAAG,KAAK,CAAC;iBAClD;gBACD,IAAI,GAAG,GAAW,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;gBACzC,IAAI,OAAO,GAAW,IAAI,CAAC,wBAAwB,CAAC;gBAEpD,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;gBAC7E,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,GAAG,GAAG,QAAQ,GAAG,GAAG,CAAC,CAAC;aAC7D;SAEF;QACD,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,IAAI,EAAE,EAAE;YACtC,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;YAC9B,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;SAC1B;aACI;YACH,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,IAAI,SAAS,EAAE;gBACrF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;gBAC3E,IAAI,IAAI,CAAC,oBAAoB,GAAG,CAAC,EAAE;oBACjC,IAAI,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;wBACzD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;wBACjD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,yBAAyB,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;wBAC/G,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAC;wBAC3D,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;qBACpD;yBACI;wBACH,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC;qBAClD;oBACD,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;iBAC5C;aACF;;;YAID,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,EAAE;gBACrD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC;gBACnE,IAAI,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,aAAa,EAAE;oBACrD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;oBACpC,IAAI,CAAC,kCAAkC,GAAG,IAAI,CAAC;oBAC/C,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS;wBACxD,IAAI,CAAC,wBAAwB,GAAG,QAAQ,CAAC;;wBAEzC,IAAI,CAAC,wBAAwB,GAAG,SAAS,CAAC;iBAC7C;qBACI;oBACH,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;oBACrC,IAAI,CAAC,kCAAkC,GAAG,KAAK,CAAC;iBACjD;gBAED,IAAI,GAAG,GAAW,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;gBACzC,IAAI,OAAO,GAAW,IAAI,CAAC,uBAAuB,CAAC;gBAEnD,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;gBAC7E,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,GAAG,GAAG,QAAQ,GAAG,GAAG,CAAC,CAAC;aAC5D;SACF;QACD,IAAI,cAAc,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAC5C,cAAc,CAAC,MAAM,GAAG,WAAW,CAAC;QACpC,cAAc,CAAC,OAAO,GAAG,YAAY,CAAC;;;QAGtC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAClC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;;QAE3D,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC;QACpC,IAAI,CAAC,kCAAkC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK;YAC/D,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAA;YAC7B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;SAC7B,CAAC,CAAA;KACH;IAID,UAAU;QACR,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,CAAC;KACnD;IA6BD,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAA;KACtC;IAED,kBAAkB,CAAC,SAAS;QAC1B,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAC/C,IAAI,CAAC,eAAe,EAAE,CAAA;YACtB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAA;SAC9B;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3F;IAGD,YAAY,CAAC,IAAY;QACvB,OAAO,SAAS,CAAC,IAAI,CAAC,CAAA;KACvB;IAED,gBAAgB,CAAC,IAAY;QAC3B,MAAM,UAAU,GAAW,GAAG,CAAC;QAC/B,IAAI,IAAI,IAAI,IAAI,EAAE;YAChB,IAAI,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACxF,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;YAEjD,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE;gBACzF,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;aACzG;YACD,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;gBAC9G,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;aACnD;SACF;QACD,IAAI,IAAI,IAAI,IAAI,EAAE;YAChB,IAAI,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACvF,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;YAChD,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;gBACxF,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;aAEzG;YACD,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;gBAC5G,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;aAClD;SACF;KAEF;IAED,gBAAgB,CAAC,YAAY;QAC3B,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAA;KACnD;IAED,0BAA0B;QACxB,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC;QACrG,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC;QAEvG,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,CAAC;QACzC,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,CAAC;QAE1C,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,CAAC;QAChD,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,CAAC;QAEjD,QAAQ,IAAI,CAAC,OAAO,CAAC,YAAY;YAC/B,KAAK,YAAY,CAAC,0BAA0B;gBAC1C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;gBAC9B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;oBACnC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBACtD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBACrD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;oBACnC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;iBACrC;gBACD,MAAM;YACR,KAAK,YAAY,CAAC,+BAA+B;gBAC/C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;gBAC9B,IAAI,CAAC,OAAO,CAAC,yBAAyB,GAAG,aAAa,CAAC,QAAQ,CAAC;gBAEhE,MAAM;YACR,KAAK,YAAY,CAAC,gCAAgC;gBAChD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,yBAAyB,GAAG,aAAa,CAAC,QAAQ,CAAC;gBAEhE,MAAM;YACR,KAAK,YAAY,CAAC,gEAAgE;gBAChF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;gBAC9B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAA;gBAEtF,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE;oBAChC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;wBACnC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;wBACrD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;qBAEpC;iBACF;gBACD,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE;oBAChC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;wBACnC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;wBACtD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;qBAErC;iBACF;gBACD,MAAM;YACR,KAAK,YAAY,CAAC,0CAA0C;gBAC1D,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;gBAC9B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAA;gBAEtF,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;oBACnC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBACrD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;iBAEpC;gBACD,MAAM;YACR,KAAK,YAAY,CAAC,2CAA2C;gBAC3D,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;gBAC9B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAA;gBAEtF,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;oBACnC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBACtD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;iBAErC;gBACD,MAAM;YACR,KAAK,YAAY,CAAC,6CAA6C;gBAC7D,IAAI,CAAC,OAAO,CAAC,yBAAyB,GAAG,aAAa,CAAC,QAAQ,CAAC;gBAChE,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE;oBAChC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;oBAC9B,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;oBAChC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;wBACnC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;wBACrD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;qBAEpC;iBACF;gBACD,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE;oBAChC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;oBAC/B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;oBAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;wBACnC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;wBACtD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;qBAErC;iBACF;gBACD,MAAM;YACR;gBACE,MAAM;SACT;QAED,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACjE,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACnE,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,CAAC;QAChD,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,CAAC;KAElD;IAED,aAAa,CAAC,OAAgB;QAC5B,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAA;;QAGpC,IAAI,OAAO,EAAE;YACX,IAAI,IAAI,CAAC,kCAAkC;gBACzC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;SACvC;;YAEC,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;KACxC;IAED,cAAc,CAAC,OAAgB;QAC7B,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAA;;QAGrC,IAAI,OAAO,EAAE;YACX,IAAI,IAAI,CAAC,mCAAmC;gBAC1C,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;SACxC;;YAEC,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;KACzC;;AAzdM,mDAAsB,GAAG,IAAI,CAAC;;YANtC,SAAS,SAAC;gBACT,QAAQ,EAAE,0BAA0B;gBACpC,++QAAmD;aACpD;;;YAd+E,kBAAkB;YAApC,gBAAgB,uBAmBA,QAAQ;YAhB7E,cAAc;YAEkC,cAAc;YAA9D,oBAAoB;YAAE,wBAAwB;YAC9C,cAAc;;;oBAmBpB,KAAK;sBACL,KAAK;uBACL,MAAM;;;MChBI,iBAAiB;IAI5B,YAAoB,cAA8B,EAAsB,gBAAkC,EACjG,mBAAuC,EAAU,cAA8B,EAC9E,wBAAkD,EAAU,cAA8B;QAFhF,mBAAc,GAAd,cAAc,CAAgB;QAAsB,qBAAgB,GAAhB,gBAAgB,CAAkB;QACjG,wBAAmB,GAAnB,mBAAmB,CAAoB;QAAU,mBAAc,GAAd,cAAc,CAAgB;QAC9E,6BAAwB,GAAxB,wBAAwB,CAA0B;QAAU,mBAAc,GAAd,cAAc,CAAgB;QAK1F,aAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAGxC,cAAS,GAAW,CAAC,CAAC;QACtB,mBAAc,GAAW,CAAC,CAAC;QAC3B,oBAAe,GAAY,KAAK,CAAC;QACjC,qBAAgB,GAAY,KAAK,CAAC;QAClC,oBAAe,GAAG,EAAE,CAAC;QACrB,yBAAoB,GAAG,EAAE,CAAC;;QAE1B,sBAAiB,GAAW,CAAC,CAAC;QAC9B,sBAAiB,GAAY,KAAK,CAAC;QACnC,iCAA4B,GAAY,KAAK,CAAC;QAE9C,kBAAa,GAAW,CAAC,CAAC,CAAC;QAC3B,uBAAkB,GAAW,EAAE,CAAC;QAmEhC,eAAU,GAAG;YACX,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,CAAC;SACnD,CAAA;;QA4FD,6BAAwB,GAAG;YACzB,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;SAC3G,CAAA;;QAED,0BAAqB,GAAG;YACtB,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;SACxG,CAAA;;QAGD,2BAAsB,GAAG,CAAC,gBAAgB;YACxC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;SAC7G,CAAA;;QAED,wBAAmB,GAAG,CAAC,gBAAgB;YACrC,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;SAC1G,CAAA;;QAED,YAAO,GAAG;YACR,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;SACtD,CAAA;QAvMC,iBAAiB,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC;KAClE;IAqBD,QAAQ;QACN,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;YAChD,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAElE,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc;YAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;;YAEhE,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;QAE1E,IAAI,CAAC,wBAAwB,CAAC,cAAc,GAAG,KAAK,CAAA;QAEpD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAElE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS;YACzB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC;QAEjE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;YACxB,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;QAEvD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE;YAC9D,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAExF,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5C,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAA;YAC/C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACvD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;aACpD;SAEF;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,EAAE;YAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;SACzE;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,EAAE;YAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;YAExE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB;gBACrC,IAAI,CAAC,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC;YAEjF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC;SAClF;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SAChD;QACD,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC7D,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACvE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;SACpC;QAED,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK;YAChD,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAA;YAC7B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;SAC7B,CAAC,CAAA;KAEH;IAGD,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;KACzD;IAMD,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAA;KACtC;IAED,kBAAkB,CAAC,SAAS;QAC1B,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAC/C,IAAI,CAAC,eAAe,EAAE,CAAA;YACtB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAA;SAC9B;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3F;IACD,YAAY,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;KAC9C;IAED,gBAAgB;QACd,IAAI,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACzF,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;QAClD,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE;YAC1F,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;SACzG;KACF;IAED,gBAAgB,CAAC,YAAY;QAC3B,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAA;KACnD;IAED,YAAY;QAEV,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,IAAI,EAAE,EAAE;YACxC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;YACxB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;SACpB;aAEI;YACH,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;YACvE,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE;gBAC3B,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;oBACnD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;oBAC3C,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,4CAA4C,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;oBAChI,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,CAAC;oBACzC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;iBAClC;qBACI;oBACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC;iBAEtC;aAEF;SACF;;;QAGD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,EAAE;YACrD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC;YAC/D,IAAI,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,EAAE;gBAC/C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;gBAC9B,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;gBAEzC,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS;oBAClD,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC;;oBAEnC,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;aACvC;iBACI;gBACH,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;gBAC/B,IAAI,CAAC,4BAA4B,GAAG,KAAK,CAAC;aAC3C;YACD,IAAI,GAAG,GAAW,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;YACzC,IAAI,OAAO,GAAW,IAAI,CAAC,iBAAiB,CAAC;YAE7C,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;YAC7E,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,GAAG,QAAQ,GAAG,GAAG,CAAC,CAAC;SACtD;QACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;KAEnD;IAED,OAAO,CAAC,OAAgB;QACtB,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;;QAG/B,IAAI,OAAO,EAAE;YACX,IAAI,IAAI,CAAC,4BAA4B;gBACnC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;SACjC;;YAEC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;KAClC;;AArLM,wCAAsB,GAAG,IAAI,CAAC;;YAPtC,SAAS,SAAC;gBACT,QAAQ,EAAE,eAAe;gBACzB,66FAAwC;aACzC;;;YARQ,cAAc;YAFuC,gBAAgB,uBAevB,QAAQ;YAfiB,kBAAkB;YAC/D,cAAc;YAAxC,wBAAwB;YAGxB,cAAc;;;oBAgBpB,KAAK;sBACL,KAAK;uBACL,MAAM;;;MCNI,6BAA6B;IAKxC,YAAmB,mCAAuD,EAAsB,gBAAkC,EACxH,cAA8B,EAAU,cAA8B,EAAU,wBAAkD,EAClI,cAA8B;QAFrB,wCAAmC,GAAnC,mCAAmC,CAAoB;QAAsB,qBAAgB,GAAhB,gBAAgB,CAAkB;QACxH,mBAAc,GAAd,cAAc,CAAgB;QAAU,mBAAc,GAAd,cAAc,CAAgB;QAAU,6BAAwB,GAAxB,wBAAwB,CAA0B;QAClI,mBAAc,GAAd,cAAc,CAAgB;QAM9B,aAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAMxC,oBAAe,GAAW,CAAC,CAAC;QAC5B,yBAAoB,GAAW,CAAC,CAAC;QACjC,qBAAgB,GAAW,CAAC,CAAC;QAC7B,0BAAqB,GAAW,CAAC,CAAC;QAClC,oBAAe,GAAW,EAAE,CAAC;QAG7B,0BAAqB,GAAG,EAAE,CAAC;QAC3B,+BAA0B,GAAG,EAAE,CAAC;QAChC,2BAAsB,GAAG,EAAE,CAAC;QAC5B,gCAA2B,GAAG,EAAE,CAAC;QACjC,oBAAe,GAAG,EAAE,CAAC;QACrB,yBAAoB,GAAG,EAAE,CAAC;QAC1B,0BAAqB,GAAY,KAAK,CAAC;QACvC,2BAAsB,GAAY,KAAK,CAAC;QACxC,qBAAgB,GAAY,KAAK,CAAC;QAGlC,qBAAgB,GAAW,EAAE,CAAA;QAC7B,sBAAiB,GAAW,EAAE,CAAA;;QAG9B,kBAAa,GAAW,CAAC,CAAC,CAAC;QAC3B,6BAAwB,GAAW,CAAC,CAAC;QACrC,4BAAuB,GAAW,CAAC,CAAC;QACpC,6BAAwB,GAAY,KAAK,CAAC;QAC1C,4BAAuB,GAAY,KAAK,CAAC;QACzC,wCAAmC,GAAY,KAAK,CAAC;QACrD,uCAAkC,GAAY,KAAK,CAAC;QAGpD,8BAAyB,GAAW,EAAE,CAAC;QACvC,6BAAwB,GAAW,EAAE,CAAC;QAqOtC,eAAU,GAAG;YACX,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,CAAC;SACnD,CAAA;;QAmLD,6BAAwB,GAAG;YACzB,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;YACxH,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,yBAAyB,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;SACvH,CAAA;;QAED,0BAAqB,GAAG;YACtB,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;YACrH,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,yBAAyB,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;SACpH,CAAA;;QAID,2BAAsB,GAAG,CAAC,gBAAgB;YACxC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,sBAAsB,EAAE,gBAAgB,CAAC,CAAA;YAC1H,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,yBAAyB,EAAE,IAAI,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAA;SACzH,CAAA;;QAED,wBAAmB,GAAG,CAAC,gBAAgB;YACrC,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,sBAAsB,EAAE,gBAAgB,CAAC,CAAA;YACvH,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,yBAAyB,EAAE,IAAI,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAA;SACtH,CAAA;;QAED,YAAO,GAAG;YACR,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;YAC5D,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;SAC5D,CAAA;QA7dC,6BAA6B,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC;KAC9E;IA2CD,uBAAuB;QACrB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,4CAA4C,CAAC,CAAC;QAC3G,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;KAGpF;IAEK,QAAQ;;YACZ,IAAI,CAAC,wBAAwB,CAAC,cAAc,GAAG,KAAK,CAAA;YACpD,IAAI,CAAC,eAAe,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC;;;;;YAMtE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;gBACxB,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;YACvD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY;gBAC5B,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;YAC/D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB;gBACzC,IAAI,CAAC,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC;YACzF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS;gBACzB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC;YAEjE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE;gBAChE,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;gBACrJ,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;aACxJ;iBACI;gBACH,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE;oBAC1E,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;gBAEpG,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,EAAE;oBAC5E,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;aACvG;YAED,IAAI,CAAC,0BAA0B,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;YACpD,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1E,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3E,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACpF,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACtF,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClG,IAAI,CAAC,uBAAuB,EAAE,CAAA;YAE9B,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI;gBACvB,KAAK,SAAS,CAAC,KAAK;oBAClB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;wBAClD,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,0CAA0C,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC;qBAE7G,CAAC,CAAC,CAAC;oBACJ,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;wBACjD,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,0CAA0C,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC;qBAE7G,CAAC,CAAC,CAAC;oBACJ,MAAM;gBAER,KAAK,SAAS,CAAC,MAAM;oBACnB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC;oBAC7E,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC;oBAC5E,MAAM;aACT;YAID,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC5C,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAA;gBAC/C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBACvD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;oBACtC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;oBAC1D,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;iBAC1D;aAEF;YAED,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,EAAE;gBAC9B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC9E,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;aAChF;YACD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,EAAE;gBAC9B,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC/E,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;gBAE9E,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB;oBACrC,IAAI,CAAC,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC;gBAEjF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC;aAClF;YAED,IAAI,CAAC,0BAA0B,EAAE,CAAC;YAElC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBACjD,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,0CAA0C,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;aAE3G,CAAC,CAAC,CAAC;YACJ,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBAClD,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,0DAA0D,EAAE,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;aAEhJ,CAAC,CAAC,CAAC;YAEJ,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACzE,IAAI,CAAC,yBAAyB,CAAC,kBAAkB,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACnF,IAAI,CAAC,0BAA0B,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAC3E,IAAI,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAGrF,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;gBAC3B,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,CAAC;gBAC1C,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,CAAC;aAC1C;YACD,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YAClE,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAEpE,IAAI,CAAC,mCAAmC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK;gBAChE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAA;gBAC7B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;aAC7B,CAAC,CAAA;YAEF,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;gBAClD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACvE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;aACzE;SAEF;KAAA;IAGD,YAAY;QACV,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,0BAA0B,CAAC,KAAK,IAAI,EAAE,EAAE;YAC/C,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;SAC3B;aACI;YACH,IAAI,IAAI,CAAC,0BAA0B,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,0BAA0B,CAAC,KAAK,IAAI,SAAS,EAAE;gBACvG,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;gBACrF,IAAI,IAAI,CAAC,qBAAqB,GAAG,CAAC,EAAE;oBAClC,IAAI,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;wBAC1D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;wBAClD,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,yBAAyB,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;wBACxH,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,aAAa,EAAE,CAAC;wBACpE,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;qBAC7D;yBACI;wBACH,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC;qBACpD;oBACD,YAAY,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC;iBAEtD;aACF;;;YAID,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,EAAE;gBACrD,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC7E,IAAI,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,aAAa,EAAE;oBACtD,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;oBACrC,IAAI,CAAC,mCAAmC,GAAG,IAAI,CAAC;oBAChD,IAAI,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS;wBACzD,IAAI,CAAC,yBAAyB,GAAG,QAAQ,CAAC;;wBAE1C,IAAI,CAAC,yBAAyB,GAAG,SAAS,CAAC;iBAC9C;qBACI;oBACH,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;oBACtC,IAAI,CAAC,mCAAmC,GAAG,KAAK,CAAC;iBAClD;gBACD,IAAI,GAAG,GAAW,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;gBACzC,IAAI,OAAO,GAAW,IAAI,CAAC,wBAAwB,CAAC;gBAEpD,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;gBAC7E,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,GAAG,GAAG,QAAQ,GAAG,GAAG,CAAC,CAAC;aAC7D;SACF;QACD,IAAI,IAAI,CAAC,yBAAyB,CAAC,KAAK,IAAI,EAAE,EAAE;YAC9C,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;YAC9B,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;SAC1B;aACI;YACH,IAAI,IAAI,CAAC,yBAAyB,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,yBAAyB,CAAC,KAAK,IAAI,SAAS,EAAE;gBACrG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;gBACnF,IAAI,IAAI,CAAC,oBAAoB,GAAG,CAAC,EAAE;oBACjC,IAAI,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;wBACzD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;wBACjD,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,yBAAyB,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;wBACvH,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAC;wBACnE,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;qBAC5D;yBACI;wBACH,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC;qBAClD;oBACD,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;iBACpD;aACF;;;YAID,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,EAAE;gBACrD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC3E,IAAI,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,aAAa,EAAE;oBACrD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;oBACpC,IAAI,CAAC,kCAAkC,GAAG,IAAI,CAAC;oBAC/C,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS;wBACxD,IAAI,CAAC,wBAAwB,GAAG,QAAQ,CAAC;;wBAEzC,IAAI,CAAC,wBAAwB,GAAG,SAAS,CAAC;iBAC7C;qBACI;oBACH,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;oBACrC,IAAI,CAAC,kCAAkC,GAAG,KAAK,CAAC;iBACjD;gBACD,IAAI,GAAG,GAAW,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;gBACzC,IAAI,OAAO,GAAW,IAAI,CAAC,uBAAuB,CAAC;gBAEnD,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;gBAC7E,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,GAAG,GAAG,QAAQ,GAAG,GAAG,CAAC,CAAC;aAC5D;SACF;QACD,IAAI,cAAc,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAC5C,cAAc,CAAC,MAAM,GAAG,WAAW,CAAC;QACpC,cAAc,CAAC,OAAO,GAAG,YAAY,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAClC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;;QAE3D,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC;KAErC;IAQD,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAA;KACtC;IAED,kBAAkB,CAAC,SAAS;QAC1B,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAC/C,IAAI,CAAC,eAAe,EAAE,CAAA;YACtB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAA;SAC9B;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3F;IAED,YAAY,CAAC,IAAY;QACvB,OAAO,SAAS,CAAC,IAAI,CAAC,CAAA;KACvB;IAED,gBAAgB,CAAC,IAAY;QAC3B,MAAM,UAAU,GAAW,GAAG,CAAC;QAC/B,IAAI,IAAI,IAAI,IAAI,EAAE;YAChB,IAAI,aAAa,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC;YAC1D,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE;gBACjG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;aACzG;YACD,IAAI,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;gBAC9H,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;aAC3D;SACF;QACD,IAAI,IAAI,IAAI,IAAI,EAAE;YAChB,IAAI,aAAa,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;YACzD,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE;gBAChG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;aACzG;YACD,IAAI,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;gBAC5H,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;aAC1D;SACF;KAEF;IAED,gBAAgB,CAAC,YAAY;QAC3B,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAA;KACnD;IAGD,0BAA0B;QAExB,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC;QACrG,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC;QAEvG,IAAI,CAAC,yBAAyB,CAAC,eAAe,EAAE,CAAC;QACjD,IAAI,CAAC,0BAA0B,CAAC,eAAe,EAAE,CAAC;QAElD,IAAI,CAAC,yBAAyB,CAAC,sBAAsB,EAAE,CAAC;QACxD,IAAI,CAAC,0BAA0B,CAAC,sBAAsB,EAAE,CAAC;QAEzD,QAAQ,IAAI,CAAC,OAAO,CAAC,YAAY;YAC/B,KAAK,YAAY,CAAC,0BAA0B;gBAC1C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBAC/B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;oBACnC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBACtD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBACrD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;oBACnC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;iBACrC;gBACD,MAAM;YACR,KAAK,YAAY,CAAC,+BAA+B;gBAC/C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,yBAAyB,GAAG,aAAa,CAAC,QAAQ,CAAC;gBAEhE,MAAM;YACR,KAAK,YAAY,CAAC,gCAAgC;gBAChD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,yBAAyB,GAAG,aAAa,CAAC,QAAQ,CAAC;gBAEhE,MAAM;YACR,KAAK,YAAY,CAAC,gEAAgE;gBAChF,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBAC/B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAA;gBAEtF,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE;oBAChC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;wBACnC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;wBACrD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;qBAEpC;iBACF;gBACD,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE;oBAChC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;wBACnC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;wBACtD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;qBAErC;iBACF;gBACD,MAAM;YACR,KAAK,YAAY,CAAC,0CAA0C;gBAC1D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBAC/B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAA;gBAEtF,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;oBACnC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBACrD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;iBAEpC;gBACD,MAAM;YACR,KAAK,YAAY,CAAC,2CAA2C;gBAC3D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBAC/B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAA;gBAEtF,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;oBACnC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBACtD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;iBAErC;gBACD,MAAM;YACR,KAAK,YAAY,CAAC,6CAA6C;gBAC7D,IAAI,CAAC,OAAO,CAAC,yBAAyB,GAAG,aAAa,CAAC,QAAQ,CAAC;gBAChE,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE;oBAChC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;oBAC/B,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;oBAChC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;wBACnC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;wBACrD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;qBAEpC;iBACF;gBACD,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE;oBAChC,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;oBAChC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;oBAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;wBACnC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;wBACtD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;qBAErC;iBACF;gBACD,MAAM;YACR;gBACE,MAAM;SACT;QAED,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACzE,IAAI,CAAC,0BAA0B,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC3E,IAAI,CAAC,yBAAyB,CAAC,sBAAsB,EAAE,CAAC;QACxD,IAAI,CAAC,0BAA0B,CAAC,sBAAsB,EAAE,CAAC;KAC1D;IAGD,aAAa,CAAC,OAAgB;QAC5B,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAA;;QAGpC,IAAI,OAAO,EAAE;YACX,IAAI,IAAI,CAAC,kCAAkC;gBACzC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;SACvC;;YAEC,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;KACxC;IAED,cAAc,CAAC,OAAgB;QAC7B,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAA;;QAGrC,IAAI,OAAO,EAAE;YACX,IAAI,IAAI,CAAC,mCAAmC;gBAC1C,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;SACxC;;YAEC,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;KACzC;;AAxcM,oDAAsB,GAAG,IAAI,CAAC;;YANtC,SAAS,SAAC;gBACT,QAAQ,EAAE,2BAA2B;gBACrC,m3PAAoD;aACrD;;;YAf+E,kBAAkB;YAApC,gBAAgB,uBAqBC,QAAQ;YAjB9E,cAAc;YAEY,cAAc;YAAxC,wBAAwB;YACxB,cAAc;;;oBAoBpB,KAAK;sBACL,KAAK;uBACL,MAAM;;;MClBI,iBAAiB;;IAK5B,YAAoB,cAA8B,EAAsB,gBAAkC,EAAS,mBAAuC,EAAS,cAA6B,EAAS,SAA+B,EAAS,wBAAiD;QAA9Q,mBAAc,GAAd,cAAc,CAAgB;QAAsB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAAS,wBAAmB,GAAnB,mBAAmB,CAAoB;QAAS,mBAAc,GAAd,cAAc,CAAe;QAAS,cAAS,GAAT,SAAS,CAAsB;QAAS,6BAAwB,GAAxB,wBAAwB,CAAyB;QAKxR,aAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAGxC,qBAAgB,GAAY,KAAK,CAAC;QAClC,oBAAe,GAAG,EAAE,CAAC;QACrB,yBAAoB,GAAG,EAAE,CAAC;QAkD1B,eAAU,GAAG;YACX,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,CAAC;SACnD,CAAA;;QAyBD,6BAAwB,GAAG;YACzB,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;SAC3G,CAAA;;QAED,0BAAqB,GAAG;YACtB,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;SACxG,CAAA;;QAGD,2BAAsB,GAAG,CAAC,gBAAgB;YACxC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;SAC7G,CAAA;;QAED,wBAAmB,GAAG,CAAC,gBAAgB;YACrC,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;SAC1G,CAAA;;QAGD,YAAO,GAAG;YACR,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;SACtD,CAAA;QA1GC,iBAAiB,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC;KAClE;IAWD,QAAQ;QACN,IAAG,IAAI,CAAC,OAAO,CAAC,cAAc;YAC9B,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,OAAO,CAAC,cAAc,IAAE,CAAC,GAAC,KAAK,GAAC,KAAK,CAAC;;YAExD,IAAI,CAAC,OAAO,GAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,IAAE,IAAI,GAAC,KAAK,GAAC,KAAK,CAAC;QAChE,IAAI,CAAC,wBAAwB,CAAC,cAAc,GAAG,KAAK,CAAA;QACpD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClE,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;QAC/B,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE;YAC9D,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAGxF,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SAChD;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5C,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAA;YAC/C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACvD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;aACpD;SAEF;QAGD,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC7D,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACvE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;SACpC;QAED,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK;YAChD,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAA;YAC7B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;SAC7B,CAAC,CAAA;KAGH;IAGD,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;KACzD;IAQD,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAA;KACtC;IAED,kBAAkB,CAAC,SAAS;QAC1B,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAC/C,IAAI,CAAC,eAAe,EAAE,CAAA;YACtB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAA;SAC9B;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3F;IAED,cAAc;QACZ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;QAClD,IAAI,aAAa,GAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;QAClD,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;YACnG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,aAAa,EAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;SACxG;KACF;;AAtFM,wCAAsB,GAAG,IAAI,CAAC;;YARtC,SAAS,SAAC;;gBAET,QAAQ,EAAE,eAAe;gBACzB,kzDAAwC;aACzC;;;YARQ,cAAc;YAFuC,gBAAgB,uBAgBvB,QAAQ;YAhBiB,kBAAkB;YAIzC,cAAc;YAA9D,oBAAoB;YAAE,wBAAwB;;;oBAepD,KAAK;sBACL,KAAK;uBACL,MAAM;;;MCPI,qBAAqB;;IAGhC,YAAoB,eAA6C,EAAU,cAA8B,EAAsB,gBAAkC,EAAS,uBAA2C,EAC5M,cAA8B,EAAU,wBAAkD,EACzF,cAA8B;QAFpB,oBAAe,GAAf,eAAe,CAA8B;QAAU,mBAAc,GAAd,cAAc,CAAgB;QAAsB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAAS,4BAAuB,GAAvB,uBAAuB,CAAoB;QAC5M,mBAAc,GAAd,cAAc,CAAgB;QAAU,6BAAwB,GAAxB,wBAAwB,CAA0B;QACzF,mBAAc,GAAd,cAAc,CAAgB;QAOxC,qBAAgB,GAAG,EAAE,CAAC;QAEtB,iBAAY,GAAU,EAAE,CAAA;QACd,aAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAC9B,YAAO,GAAG,IAAI,YAAY,EAAE,CAAC;QAEvC,qBAAgB,GAAY,KAAK,CAAC;QAElC,mBAAc,GAAY,KAAK,CAAC;QAChC,oBAAe,GAAG,EAAE,CAAC;QACrB,yBAAoB,GAAG,EAAE,CAAC;QAwE1B,eAAU,GAAG;YACX,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,CAAC;SACnD,CAAA;;QAsED,6BAAwB,GAAG;YACzB,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;SAC/G,CAAA;;QAGD,0BAAqB,GAAG;YACtB,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;SAC5G,CAAA;;QAGD,2BAAsB,GAAG,CAAC,gBAAgB;YACxC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;SACjH,CAAA;;QAED,wBAAmB,GAAG,CAAC,gBAAgB;YACrC,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;SAC9G,CAAA;;QAED,YAAO,GAAG;YACR,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;SAC1D,CAAA;;QAGD,qBAAgB,GAAG,CAAC,UAA8B;YAChD,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;SACtC,CAAA;QAzLC,qBAAqB,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC;;KAEtE;IAgBD,QAAQ;QACN,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc;YAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;;YAEhE,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;QAC1E,IAAI,CAAC,wBAAwB,CAAC,cAAc,GAAG,KAAK,CAAA;QACpD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAA;QAC9C,IAAI,CAAC,gBAAgB,GAAG;YACtB,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe;YAC7C,IAAI,EAAE,QAAQ;YACd,aAAa,EAAE,YAAY;YAC3B,eAAe,EAAE,cAAc;YAC/B,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB;YAClD,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC7B,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU;YACjC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;YACvC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;YAC3C,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;YAC3C,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB;YACjD,sBAAsB,EAAE,IAAI;YAC5B,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;YAC3C,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;YAC/C,QAAQ,EAAE,OAAO;YACjB,UAAU,EAAE,KAAK;SAClB,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAGtE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;YACxB,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;QAEvD,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5C,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAA;YAC/C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACvD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;aACpD;SAEF;QAID,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SAEhD;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE;YAC9D,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAExF,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACjE,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC3E,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,CAAC;SACxC;QAED,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK;YACpD,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAA;YAC7B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;SAC7B,CAAC,CAAA;KACH;IAID,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;KACzD;IAOD,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAA;KACtC;IAED,kBAAkB,CAAC,SAAS;QAC1B,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAC/C,IAAI,CAAC,eAAe,EAAE,CAAA;YACtB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAA;SAC9B;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3F;IAED,oBAAoB;QAClB,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;YAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe;gBAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;;gBAEhJ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAA;SACzK;;YACC,OAAO,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;KACrD;IAED,YAAY;QACV,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACnD,IAAI,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QAC/C,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;YACnG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;SACzG;QACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;;KAElC;IACD,KAAK;;QAEH,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1D,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACnD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;KACrB;IACD,WAAW,CAAC,KAAK;QACf,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KAC3D;IACD,UAAU,CAAC,KAAK;QACd,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;YACvE,IAAI,CAAC,uBAAuB,CAAC,aAAa,EAAE,CAAC;YAC7C,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;SAEtC;KAEF;IACD,aAAa,CAAC,KAAK;QACjB,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;YACvE,IAAI,CAAC,uBAAuB,CAAC,aAAa,EAAE,CAAC;YAC7C,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;SAEtC;KACF;IAED,eAAe;QACb,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;YAC1G,IAAI,CAAC,uBAAuB,CAAC,aAAa,EAAE,CAAC;YAC7C,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;SAEtC;KACF;;AAlKM,4CAAsB,GAAG,IAAI,CAAC;;YANtC,SAAS,SAAC;;gBAET,QAAQ,EAAE,mBAAmB;gBAC7B,m/HAA4C;aAC7C;;;YATQ,4BAA4B;YAH5B,cAAc;YAD2D,gBAAgB,uBAiBY,QAAQ;YAjBxD,kBAAkB;YAK7C,cAAc;YAAxC,wBAAwB;YACxB,cAAc;;;oBAiBpB,KAAK;sBACL,KAAK;uBAKL,MAAM;sBACN,MAAM;;;MClBI,cAAc;;IAKzB,YAAoB,cAA8B,EAAsB,gBAAkC,EACjG,gBAAoC,EAAU,cAA8B,EAC3E,wBAAkD,EAAU,cAA8B;QAFhF,mBAAc,GAAd,cAAc,CAAgB;QAAsB,qBAAgB,GAAhB,gBAAgB,CAAkB;QACjG,qBAAgB,GAAhB,gBAAgB,CAAoB;QAAU,mBAAc,GAAd,cAAc,CAAgB;QAC3E,6BAAwB,GAAxB,wBAAwB,CAA0B;QAAU,mBAAc,GAAd,cAAc,CAAgB;QAK1F,aAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAExC,uBAAkB,GAAG,kBAAkB,CAAC;;QAExC,qBAAgB,GAAY,KAAK,CAAA;QACjC,oBAAe,GAAG,EAAE,CAAC;QACrB,yBAAoB,GAAG,EAAE,CAAC;QAC1B,qBAAgB,GAAG,KAAK,CAAC;QAuDzB,eAAU,GAAG;YACX,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,CAAC;SACnD,CAAA;;QA+BD,6BAAwB,GAAG;YACzB,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;SACxG,CAAA;;QAGD,0BAAqB,GAAG;YACtB,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;SACrG,CAAA;;QAID,2BAAsB,GAAG,CAAC,gBAAgB;YACxC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;SAC1G,CAAA;;QAED,wBAAmB,GAAG,CAAC,gBAAgB;YACrC,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;SACvG,CAAA;;QAGD,YAAO,GAAG;YACR,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;SACnD,CAAA;QAzHC,cAAc,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC;KAC/D;IAaD,QAAQ;QAEN,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;YAChD,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAElE,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc;YAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;;YAEhE,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;QAE1E,IAAI,CAAC,wBAAwB,CAAC,cAAc,GAAG,KAAK,CAAA;QACpD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE/D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;YACxB,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;QAEvD,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SAChD;QACD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnD,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5C,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAA;YAC/C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACvD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;aACpD;SAEF;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE;YAC9D,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAExF,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC1D,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACpE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;SACjC;QAED,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAA;YAC7B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;SAC7B,CAAC,CAAA;KAEH;IAED,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;KACzD;IAQD,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAA;KACtC;IAED,kBAAkB,CAAC,SAAS;QAC1B,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAC/C,IAAI,CAAC,eAAe,EAAE,CAAA;YACtB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAA;SAC9B;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3F;IAED,cAAc;QACZ,IAAI,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,mBAA6B,CAAC;QACvE,IAAI,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;YACnG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;SACzG;QACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACnC;IACD,kBAAkB,CAAC,eAAwB;QACzC,IAAI,KAAK,GAAG,eAAyB,CAAC;QACtC,OAAO,KAAmB,CAAA;KAC3B;;AAnGM,qCAAsB,GAAG,IAAI,CAAC;;YAPtC,SAAS,SAAC;gBACT,QAAQ,EAAE,YAAY;gBACtB,yzEAAqC;aACtC;;;YANQ,cAAc;YALG,gBAAgB,uBAiBa,QAAQ;YAjBK,kBAAkB;YACnD,cAAc;YAAxC,wBAAwB;YAKxB,cAAc;;;oBAgBpB,KAAK;sBACL,KAAK;uBACL,MAAM;;;MCZI,mBAAmB;IAI9B,YAAoB,IAAY,EAAU,cAA8B,EAAsB,gBAAkC,EACvH,qBAAyC,EAAU,cAA8B,EAChF,wBAAkD,EAAU,cAA8B;QAFhF,SAAI,GAAJ,IAAI,CAAQ;QAAU,mBAAc,GAAd,cAAc,CAAgB;QAAsB,qBAAgB,GAAhB,gBAAgB,CAAkB;QACvH,0BAAqB,GAArB,qBAAqB,CAAoB;QAAU,mBAAc,GAAd,cAAc,CAAgB;QAChF,6BAAwB,GAAxB,wBAAwB,CAA0B;QAAU,mBAAc,GAAd,cAAc,CAAgB;QAK1F,aAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAExC,cAAS,GAAW,CAAC,CAAC;QACtB,mBAAc,GAAW,CAAC,CAAC;QAC3B,qBAAgB,GAAY,KAAK,CAAC;QAOlC,oBAAe,GAAG,EAAE,CAAC;QACrB,yBAAoB,GAAG,EAAE,CAAC;QAkK1B,eAAU,GAAG;YACX,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,CAAC;SACnD,CAAA;;QA4BD,6BAAwB,GAAG;YACzB,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;SAC7G,CAAA;;QAGD,0BAAqB,GAAG;YACtB,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;SAC1G,CAAA;;QAID,2BAAsB,GAAG,CAAC,gBAAgB;YACxC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;SAC/G,CAAA;;QAED,wBAAmB,GAAG,CAAC,gBAAgB;YACrC,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;SAC5G,CAAA;;QAGD,YAAO,GAAG;YACR,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;SACxD,CAAA;QAtOC,mBAAmB,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC;KACpE;IAkBD,QAAQ;QACN,IAAG,IAAI,CAAC,OAAO,CAAC,cAAc;YAC9B,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,OAAO,CAAC,cAAc,IAAE,CAAC,GAAC,KAAK,GAAC,KAAK,CAAC;;YAExD,IAAI,CAAC,OAAO,GAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,IAAE,IAAI,GAAC,KAAK,GAAC,KAAK,CAAC;QAChE,IAAI,CAAC,YAAY,GAAG;YAChB,QAAQ,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU;YAClC,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK;YACnC,SAAS,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK;YACtC,SAAS,EAAG,MAAM;YAClB,KAAK,EAAE,MAAM;YACb,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,KAAK;YAChB,aAAa,EAAE,IAAI;YACnB,WAAW,EAAE,IAAI;YACjB,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;YACrC,yBAAyB,EAAE,EAAE;YAC7B,eAAe,EAAE,EAAE;YACnB,eAAe,EAAE,EAAE;YACnB,KAAK,EAAE;gBACL,EAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAC;gBAC/B,EAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAC;gBACnD,EAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAC;gBACnC,EAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAC;aAChD;YACD,aAAa,EAAE;gBACf;oBACE,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,OAAO;iBACf;gBACD;oBACE,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,SAAS;iBACjB;gBACD;oBACE,IAAI,EAAE,WAAW;oBACjB,KAAK,EAAE,WAAW;oBAClB,GAAG,EAAE,IAAI;iBACV;aACF;YACD,SAAS,EAAE,UAAU;YACrB,qBAAqB,EAAE,KAAK;YAC5B,QAAQ,EAAE,KAAK;YACf,eAAe,EAAE,KAAK;YACtB,oBAAoB,EAAE;gBACpB;oBACE,MAAM;oBACN,QAAQ;oBACR,aAAa;oBACb,aAAa;oBACb,sBAAsB;iBACvB;aACF;SACJ,CAAC;QACF,IAAI,CAAC,wBAAwB,CAAC,cAAc,GAAG,KAAK,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA2ClD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpE,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAExD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;YACxB,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;QAEvD,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5C,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAA;YAC/C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACvD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;aACpD;SAEF;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE;YAC9D,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAIxF,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,EAAE;YAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;SACzE;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,EAAE;YAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;SACzE;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SAChD;QACD,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC/D,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACzE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;SACtC;QAED,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK;YAClD,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAA;YAC7B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;SAC7B,CAAC,CAAA;KAEH;IAGD,kBAAkB;QAChB,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,EAAE;YACtC,IAAI,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACzD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACtE,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;aACtG;YAED,IAAI,aAAa,GAAG,QAAQ,CAAC,sBAAsB,CAAC,yCAAyC,CAAC,CAAC,CAAC,CAAC,CAAA;YACjG,IAAI,GAAG,GAAE,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,IAAE,IAAI,GAAC,KAAK,GAAC,KAAK,CAAA;YACnE,aAAa,CAAC,YAAY,CAAC,KAAK,EAAC,GAAG,CAAC,CAAC;SAEvC;KAGF;IAOD,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAA;KACtC;IAED,kBAAkB,CAAC,SAAS;QAC1B,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAC/C,IAAI,CAAC,eAAe,EAAE,CAAA;YACtB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAA;SAC9B;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3F;IACD,cAAc;QACZ,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7E,IAAI,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC3F,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE;YAC5F,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,aAAa,EAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;SACxG;;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,GAAC,aAAa,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;KAClC;;AA/MM,0CAAsB,GAAG,IAAI,CAAC;;YAPtC,SAAS,SAAC;gBACT,QAAQ,EAAE,iBAAiB;gBAC3B,mtDAA0C;aAC3C;;;YAZqD,MAAM;YAEnD,cAAc;YADuC,gBAAgB,uBAgBD,QAAQ;YAhBL,kBAAkB;YAI/D,cAAc;YAAxC,wBAAwB;YACxB,cAAc;;;oBAgBpB,KAAK;sBACL,KAAK;uBACL,MAAM;;;MCRI,+BAA+B;IAK1C,YAAmB,qCAAyD,EAAsB,gBAAkC,EAC1H,cAA8B,EAAU,cAA8B,EAAU,wBAAkD,EAClI,cAA8B;QAFrB,0CAAqC,GAArC,qCAAqC,CAAoB;QAAsB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAC1H,mBAAc,GAAd,cAAc,CAAgB;QAAU,mBAAc,GAAd,cAAc,CAAgB;QAAU,6BAAwB,GAAxB,wBAAwB,CAA0B;QAClI,mBAAc,GAAd,cAAc,CAAgB;QAM9B,aAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAkBxC,oBAAe,GAAW,EAAE,CAAC;QAG7B,0BAAqB,GAAG,EAAE,CAAC;QAC3B,+BAA0B,GAAG,EAAE,CAAC;QAChC,2BAAsB,GAAG,EAAE,CAAC;QAC5B,gCAA2B,GAAG,EAAE,CAAC;QACjC,qBAAgB,GAAY,KAAK,CAAC;QAClC,oBAAe,GAAG,EAAE,CAAC;QACrB,yBAAoB,GAAG,EAAE,CAAC;QAE1B,qBAAgB,GAAW,EAAE,CAAA;QAC7B,sBAAiB,GAAW,EAAE,CAAA;QAE9B,iBAAY,GAAG,IAAI,CAAA;QACnB,gBAAW,GAAG,IAAI,CAAA;QAkSlB,eAAU,GAAG;YACX,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,CAAC;SACnD,CAAA;;QAoHD,6BAAwB,GAAG;YACzB,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;YAC1H,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,2BAA2B,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;SACzH,CAAA;;QAGD,0BAAqB,GAAG;YACtB,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;YACvH,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,2BAA2B,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;SACtH,CAAA;;QAKD,2BAAsB,GAAG,CAAC,gBAAgB;YACxC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,sBAAsB,EAAE,gBAAgB,CAAC,CAAA;YAC5H,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,2BAA2B,EAAE,IAAI,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAA;SAC3H,CAAA;;QAED,wBAAmB,GAAG,CAAC,gBAAgB;YACrC,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,sBAAsB,EAAE,gBAAgB,CAAC,CAAA;YACzH,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,2BAA2B,EAAE,IAAI,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAA;SACxH,CAAA;;QAGD,YAAO,GAAG;YACR,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;YAC9D,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;SAC9D,CAAA;QAzdC,+BAA+B,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC;KAChF;;IAsCD,uBAAuB;QACrB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;QACjF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;KACpF;IAGK,QAAQ;;YACZ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;gBACxB,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;YAEvD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY;gBAC5B,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;YAE/D,IAAI,CAAC,mBAAmB,GAAG;gBACzB,QAAQ,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU;gBAClC,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE;gBACtC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE;gBACzC,SAAS,EAAE,MAAM;gBACjB,KAAK,EAAE,MAAM;gBACb,QAAQ,EAAE,MAAM;gBAChB,SAAS,EAAE,KAAK;gBAChB,aAAa,EAAE,IAAI;gBACnB,WAAW,EAAE,IAAI;gBACjB,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB;gBAC5C,yBAAyB,EAAE,EAAE;gBAC7B,eAAe,EAAE,EAAE;gBACnB,eAAe,EAAE,EAAE;gBACnB,KAAK,EAAE;oBACL,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;oBACjC,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAE;oBACrD,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;oBACrC,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE;iBAClD;gBACD,aAAa,EAAE;oBACb;wBACE,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,OAAO;qBACf;oBACD;wBACE,IAAI,EAAE,SAAS;wBACf,KAAK,EAAE,SAAS;qBACjB;oBACD;wBACE,IAAI,EAAE,WAAW;wBACjB,KAAK,EAAE,WAAW;wBAClB,GAAG,EAAE,IAAI;qBACV;iBACF;gBACD,SAAS,EAAE,UAAU;gBACrB,qBAAqB,EAAE,KAAK;gBAC5B,QAAQ,EAAE,KAAK;gBACf,eAAe,EAAE,KAAK;gBACtB,oBAAoB,EAAE,EAErB;aACF,CAAC;YAGF,IAAI,CAAC,kBAAkB,GAAG;gBACxB,QAAQ,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU;gBAClC,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE;gBACtC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE;gBACzC,SAAS,EAAE,MAAM;gBACjB,KAAK,EAAE,MAAM;gBACb,QAAQ,EAAE,MAAM;gBAChB,SAAS,EAAE,KAAK;gBAChB,aAAa,EAAE,IAAI;gBACnB,WAAW,EAAE,IAAI;gBACjB,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB;gBAC3C,yBAAyB,EAAE,EAAE;gBAC7B,eAAe,EAAE,EAAE;gBACnB,eAAe,EAAE,EAAE;gBACnB,KAAK,EAAE;oBACL,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;oBACjC,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAE;oBACrD,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;oBACrC,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE;iBAClD;gBACD,aAAa,EAAE;oBACb;wBACE,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,OAAO;qBACf;oBACD;wBACE,IAAI,EAAE,SAAS;wBACf,KAAK,EAAE,SAAS;qBACjB;oBACD;wBACE,IAAI,EAAE,WAAW;wBACjB,KAAK,EAAE,WAAW;wBAClB,GAAG,EAAE,IAAI;qBACV;iBACF;gBACD,SAAS,EAAE,UAAU;gBACrB,qBAAqB,EAAE,KAAK;gBAC5B,QAAQ,EAAE,KAAK;gBACf,eAAe,EAAE,KAAK;gBACtB,oBAAoB,EAAE,EAErB;aACF,CAAC;YAEF,IAAI,CAAC,wBAAwB,CAAC,cAAc,GAAG,KAAK,CAAA;YAEpD,IAAI,CAAC,eAAe,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAuCtE,IAAI,CAAC,2BAA2B,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;YAAA,CAAC;YACtD,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3E,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5E,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACvF,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACzF,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC,CAAC;YACnG,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI;gBACvB,KAAK,SAAS,CAAC,KAAK;oBAClB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;wBAClD,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,0CAA0C,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC;qBAC7G,CAAC,CAAC,CAAC;oBACJ,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;wBACjD,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,0CAA0C,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC;qBAC7G,CAAC,CAAC,CAAC;oBACJ,MAAM;gBACR,KAAK,SAAS,CAAC,MAAM;oBACnB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC;oBAC7E,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC;oBAC5E,MAAM;aACT;YAED,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC5C,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAA;gBAC/C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBACvD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;oBACtC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;oBAC1D,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;iBAC1D;aAEF;YACD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,EAAE;gBAC9B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC9E,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;aAChF;YAED,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,EAAE;gBAC9B,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC/E,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;aAE/E;YACD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE;gBAChE,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;gBACrJ,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;aACxJ;iBACI;gBACH,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE;oBAC1E,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;gBAEpG,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,EAAE;oBAC5E,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;aACvG;YACD,IAAI,CAAC,0BAA0B,EAAE,CAAC;YAClC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBACjD,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,kCAAkC,EAAE,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;aAEtH,CAAC,CAAC,CAAC;YACJ,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBAClD,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,wDAAwD,EAAE,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;aAE9I,CAAC,CAAC,CAAC;;;;;YAOJ,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;gBAC3B,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,CAAC;gBAC5C,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,CAAC;aAC5C;YACD,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YACpE,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACtE,IAAI,CAAC,qCAAqC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK;gBAClE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAA;gBAC7B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;aAC7B,CAAC,CAAA;SACH;KAAA;IAED,kBAAkB;QAChB,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,IAAI,IAAI,GAAG,KAAK,GAAG,KAAK,CAAA;QAC1E,IAAI,aAAa,GAAG,QAAQ,CAAC,sBAAsB,CAAC,yCAAyC,CAAC,CAAC;QAC/F,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACzD,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;YACrC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;SAClC;KACF;IACD,YAAY,CAAC,IAAY;QAEvB,IAAI,IAAI,IAAI,IAAI,EAAE;YAChB,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACjI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;YACzJ,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC9D,IAAI,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC;gBACtC,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,4BAA4B,CAAC,KAAK,EAAE;oBACnG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;iBACzG;aACF;YACD,IAAI,oBAAoB,GAAI,IAAI,CAAC,4BAA4B,CAAC,KAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAA;YAChG,IAAI,oBAAoB,GAAG,CAAC,EAAE;gBAC5B,IAAI,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY;oBAClD,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,yBAAyB,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;gBAC1H,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,aAAa,EAAE,CAAA;gBACpE,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,CAAA;aAE7D;SAEF;QAED,IAAI,IAAI,IAAI,IAAI,EAAE;YAChB,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAE/H,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;YAEtJ,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC5D,IAAI,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC;gBACrC,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE;oBAClG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;iBACzG;aACF;YAED,IAAI,oBAAoB,GAAI,IAAI,CAAC,2BAA2B,CAAC,KAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAA;YAC/F,IAAI,oBAAoB,GAAG,CAAC,EAAE;gBAC5B,IAAI,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY;oBAClD,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,yBAAyB,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;gBACzH,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAA;gBACnE,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAA;aAE5D;SACF;QAED,IAAI,cAAc,GAAG,IAAI,gBAAgB,EAAE,CAAA;QAC3C,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;QACzC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAA;QAC1C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAClC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY;YACvC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;;QAE5D,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC;KACrC;IAMD,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAA;KACtC;IAED,kBAAkB,CAAC,SAAS;QAC1B,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAC/C,IAAI,CAAC,eAAe,EAAE,CAAA;YACtB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAA;SAC9B;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3F;IAID,0BAA0B;QAExB,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC;QACrG,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC;QAEvG,IAAI,CAAC,2BAA2B,CAAC,eAAe,EAAE,CAAC;QACnD,IAAI,CAAC,4BAA4B,CAAC,eAAe,EAAE,CAAC;QAEpD,IAAI,CAAC,2BAA2B,CAAC,sBAAsB,EAAE,CAAC;QAC1D,IAAI,CAAC,4BAA4B,CAAC,sBAAsB,EAAE,CAAC;QAE3D,QAAQ,IAAI,CAAC,OAAO,CAAC,YAAY;YAC/B,KAAK,YAAY,CAAC,0BAA0B;gBAC1C,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;gBACjC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;gBAClC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;oBACnC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBACtD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBACrD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;oBACnC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;iBACrC;gBACD,MAAM;YACR,KAAK,YAAY,CAAC,+BAA+B;gBAC/C,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;gBACjC,MAAM;YACR,KAAK,YAAY,CAAC,gCAAgC;gBAChD,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;gBAClC,MAAM;YACR,KAAK,YAAY,CAAC,gEAAgE;gBAChF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;gBACjC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;gBAElC,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE;oBAChC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;wBACnC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;wBACrD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;qBAEpC;iBACF;gBACD,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE;oBAChC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;wBACnC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;wBACtD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;qBACrC;iBACF;gBACD,MAAM;YACR,KAAK,YAAY,CAAC,0CAA0C;gBAC1D,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;gBACjC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;gBAClC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;oBACnC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBACrD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;iBACpC;gBACD,MAAM;YACR,KAAK,YAAY,CAAC,2CAA2C;gBAC3D,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;gBACjC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;gBAClC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;oBACnC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBACtD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;iBAErC;gBACD,MAAM;YACR,KAAK,YAAY,CAAC,6CAA6C;gBAC7D,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE;oBAChC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;oBACjC,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;oBAEnC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;wBACnC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;wBACrD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;qBAEpC;iBACF;gBACD,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE;oBAChC,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;oBAClC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;oBAElC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;wBACnC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;wBACtD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;qBAErC;iBACF;gBACD,MAAM;YACR;gBACE,MAAM;SACT;QAED,IAAI,CAAC,2BAA2B,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC3E,IAAI,CAAC,4BAA4B,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC7E,IAAI,CAAC,2BAA2B,CAAC,sBAAsB,EAAE,CAAC;QAC1D,IAAI,CAAC,4BAA4B,CAAC,sBAAsB,EAAE,CAAC;KAE5D;;AA/bM,sDAAsB,GAAG,IAAI,CAAC;;YANtC,SAAS,SAAC;gBACT,QAAQ,EAAE,6BAA6B;gBACvC,22JAAsD;aACvD;;;YAd+E,kBAAkB;YAApC,gBAAgB,uBAoBG,QAAQ;YAhBhF,cAAc;YAIY,cAAc;YAAxC,wBAAwB;YACxB,cAAc;;;oBAiBpB,KAAK;sBACL,KAAK;uBACL,MAAM;;;MCOI,sBAAsB;IAgCjC,YACU,IAAY,EACZ,cAA8B,EAClB,gBAAkC,EAC/C,wBAA4C,EAC5C,cAA8B,EAC7B,wBAAkD,EAClD,cAA8B,EAC9B,YAAsB;QAPtB,SAAI,GAAJ,IAAI,CAAQ;QACZ,mBAAc,GAAd,cAAc,CAAgB;QAClB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAC/C,6BAAwB,GAAxB,wBAAwB,CAAoB;QAC5C,mBAAc,GAAd,cAAc,CAAgB;QAC7B,6BAAwB,GAAxB,wBAAwB,CAA0B;QAClD,mBAAc,GAAd,cAAc,CAAgB;QAC9B,iBAAY,GAAZ,YAAY,CAAU;QApChC,UAAK,GAAW,EAAE,CAAC;QAKT,aAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAGxC,sBAAiB,GAAG,EAAE,CAAC;QAGvB,iBAAY,GAAW,EAAE,CAAC;QAC1B,sBAAiB,GAAa,EAAE,CAAC;QACjC,qBAAgB,GAAa,EAAE,CAAC;QAKhC,WAAM,GAAG,IAAI,CAAC;QACd,WAAM,GAAG,IAAI,CAAC;QACd,aAAQ,GAAG,EAAE,CAAC;QACd,YAAO,GAAG,EAAE,CAAC;QAEb,oBAAe,GAAY,KAAK,CAAC;QACjC,qBAAgB,GAAY,KAAK,CAAC;QAClC,oBAAe,GAAG,EAAE,CAAC;QACrB,yBAAoB,GAAG,EAAE,CAAC;QAC1B,gBAAW,GAAW,CAAC,CAAC;QAgKxB,eAAU,GAAG;YACX,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,CAAC;SACnD,CAAC;;QAmLF,6BAAwB,GAAG;YACzB,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAC1C,IAAI,CAAC,sBAAsB,EAC3B,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,OAAO,CACb,CAAC;SACH,CAAC;;QAGF,0BAAqB,GAAG;YACtB,IAAI,CAAC,cAAc,CAAC,qBAAqB,CACvC,IAAI,CAAC,sBAAsB,EAC3B,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,OAAO,CACb,CAAC;SACH,CAAC;;QAGF,2BAAsB,GAAG,CAAC,gBAAgB;YACxC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CACxC,IAAI,CAAC,sBAAsB,EAC3B,IAAI,CAAC,eAAe,EACpB,gBAAgB,CACjB,CAAC;SACH,CAAC;;QAEF,wBAAmB,GAAG,CAAC,gBAAgB;YACrC,IAAI,CAAC,cAAc,CAAC,mBAAmB,CACrC,IAAI,CAAC,sBAAsB,EAC3B,IAAI,CAAC,eAAe,EACpB,gBAAgB,CACjB,CAAC;SACH,CAAC;;QAEF,YAAO,GAAG;YACR,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;SAC1D,CAAC;QA9WA,sBAAsB,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACtE,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC;YAC/B,gBAAgB,EAAE,KAAK;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;KACrC;IAED,QAAQ;QACN,IAAI,CAAC,wBAAwB,CAAC,cAAc,GAAG,KAAK,CAAC;QAErD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;YACxB,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;QAEvD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe;YAC/B,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC;;;QAKrE,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;YAClC,IAAI,CAAC,MAAM,GAAG;gBACZ,WAAW,EACT,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB;gBAClE,QAAQ,EAAE,MAAM;gBAChB,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,IAAI;gBACf,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,CAAC;gBACX,gBAAgB,EAAE,IAAI;gBACtB,KAAK,EAAE,IAAI;gBACX,gBAAgB,EAAE,KAAK;gBACvB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB;gBACrC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB;gBACvC,gBAAgB,EAAE,KAAK;gBACvB,QAAQ,EAAE,IAAI;aACf,CAAC;SACH;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,sBAAsB,IAAI,IAAI,EAAE;YAC/C,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC;SACrC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE;YAC9B,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC3C,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,IAAI,IAAI,EAAE;gBACzD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;gBAC1B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;aACxB;YAED,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YACjC,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC;gBACvC,IAAI,EAAE,OAAO,CAAC,QAAQ;gBACtB,IAAI,EAAE,OAAO,CAAC,YAAY,GAAG,IAAI,GAAG,IAAI;gBACxC,IAAI,EAAE,OAAO,CAAC,QAAQ;aACvB,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,cAAqB,CAAC,CAAC,CAAC;SACxD;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe;YAC9B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,GAAG,IAAI,CAAC;QAEhE,IACE,IAAI,CAAC,OAAO,CAAC,sBAAsB,IAAI,IAAI;YAC3C,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAC9C;YACA,KACE,IAAI,KAAK,GAAG,CAAC,EACb,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,MAAM,EAClD,KAAK,EAAE,EACP;gBACA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;gBACxD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;aAC1E;YACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAClE,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBAC9C,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;aACxD;YACD,IAAI,CAAC,iBAAiB;gBACpB,IAAI,CAAC,iBAAiB;oBACtB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,cAAc,CAAC;oBACpD,KAAK,IAAI,CAAC,gBAAgB,IAAI,CAAC;SAClC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,CAAC,EAAE;YACpC,IAAI,CAAC,iBAAiB;gBACpB,IAAI,CAAC,iBAAiB;oBACtB,WAAW,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,IAChE,IAAI,CAAC,OAAO,CAAC,eACf,EAAE,CAAC;SACN;QACD,IACE,IAAI,CAAC,OAAO,CAAC,sBAAsB,IAAI,IAAI;YAC3C,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAC9C;SACD;QACD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAErE,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI;YAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEjE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE;YAC9D,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAC5D,IAAI,CAAC,OAAO,CAAC,QAAQ,CACtB,CAAC;QAEJ,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5C,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;YAChD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACvD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;aACpD;SACF;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SAChD;QAED,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAChE,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC1E,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,CAAC;SACvC;QACD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK;YACrD,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC9B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;SAC9B,CAAC,CAAC;KACJ;IAED,eAAe;QACb,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,EAAE;YACtC,IAAI,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACzD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACtE,OAAO,CAAC,YAAY,CAClB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,GAAG,EACrC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,CACxC,CAAC;aACH;SACF;KACF;IACD,iBAAiB,CAAC,OAAoB;QACpC,IAAI,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,CAC3D,kBAAkB,CACJ,CAAC;QACjB,KAAK,CAAC,KAAK,EAAE,CAAC;KACf;IAMD,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;KACvC;IAED,kBAAkB,CAAC,SAAS;QAC1B,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAC/C,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;SAC/B;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAClD,SAAS,EACT,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,OAAO,CACb,CAAC;KACH;IAED,YAAY,CAAC,KAAK;QAChB,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAClC,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,GAAG,IAAI,CAAC;YAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;YAC3B,IAAI,IAAI,CAAC,IAAI,GAAG,WAAW,EAAE;gBAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC;gBAChD,WAAW,CAAC,SAAS,CAAC;oBACpB,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,GAAG;iBACpD,CAAC,CAAC;gBACH,WAAW,CAAC,aAAa,EAAE,CAAC;gBAC5B,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;gBACzB,OAAO;aACR;YACD,IACE,IAAI,CAAC,OAAO,CAAC,sBAAsB,IAAI,IAAI;gBAC3C,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC;gBAC9C,EACE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;oBACvD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CACxD,EACD;gBACA,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC;gBAChD,WAAW,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;gBACnE,WAAW,CAAC,aAAa,EAAE,CAAC;gBAC5B,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;gBACzB,OAAO;aACR;SACF;QACD,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,GAAG,IAAI,CAAC;YAC/D,IAAI,IAAI,EAAE;gBACR,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,GAAG,IAAI,CAAC;gBAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;gBAC3B,IAAI,IAAI,CAAC,IAAI,GAAG,WAAW,EAAE;oBAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC;oBAChD,WAAW,CAAC,SAAS,CAAC;wBACpB,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,GAAG;qBACpD,CAAC,CAAC;oBACH,WAAW,CAAC,aAAa,EAAE,CAAC;oBAC5B,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;oBACzB,OAAO;iBACR;gBACD,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC9B,IAAI,UAAU,GAAG,IAAI,CAAC;gBACtB,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;gBACjC,MAAM,CAAC,MAAM,GAAG;oBACd,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;wBAClC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;wBACzC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;qBACtB;yBAAM;wBACL,IAAI,UAAU,GAAY;4BACxB,QAAQ,EAAE,IAAI,CAAC,IAAI;4BACnB,QAAQ,EAAE,IAAI,CAAC,IAAI;4BACnB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;4BAClD,YAAY,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI;4BACrC,iBAAiB,EAAE,IAAI,CAAC,IAAI;yBAC7B,CAAC;wBACF,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC;wBAChC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wBAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;wBACvD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;wBAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;qBACtC;oBACD,IAAI,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;oBACtD,IACE,IAAI,CAAC,OAAO,CAAC,aAAa;wBAC1B,IAAI,CAAC,OAAO,CAAC,SAAS;wBACtB,IAAI,CAAC,sBAAsB,CAAC,KAAK,EACjC;wBACA,IAAI,CAAC,cAAc,CAAC,iBAAiB,CACnC,aAAa,EACb,IAAI,CAAC,OAAO,CAAC,aAAa,EAC1B,IAAI,CAAC,OAAO,CAAC,SAAS,CACvB,CAAC;qBACH;;oBAED,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC;oBACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;iBACnC,CAAC;aACH;SACF;KACF;IAED,sBAAsB,CAAC,KAAK;QAC1B,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;QACvD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,QAAQ,GAAG,IAAI,CAAC;;QAEhB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;QAEhD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YACrD,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE,CAAC;YAC5C,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC3D,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC;SACrC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;;QAE3D,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;KAC/D;IAED,SAAS;QACP,IAAI,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC;YACpE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB;YACrC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB;YACvC,qBAAqB,EAAE,KAAK;YAC5B,qBAAqB,EAAE,MAAM;SAC9B,CAAC,CAAC;QACH,kBAAkB,CAAC,MAAM,CAAC,CAAC,IAAI;YAC7B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBACZ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aACxB,CAAC,CAAC;SACJ,CAAC,CAAC;KACJ;IAED,WAAW,CAAC,IAAI;QACd,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,QAAQ,CAAC;QACb,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC9B,QAAQ,GAAG,IAAI,CAAC;QAChB,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC/B,MAAM,CAAC,MAAM,GAAG;YACd,IAAI,UAAU,GAAY;gBACxB,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;gBAC7B,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;gBAC7B,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAClD,YAAY,EAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI;gBACzC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;aACvC,CAAC;YACF,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAEpC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACvD,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC;YAChC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SACvB,CAAC;KACH;IAED,WAAW,CAAC,MAAc;QACxB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KAC5C;IACD,SAAS,CAAC,OAAe,EAAE,OAAe;QACxC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;KACpD;IACD,SAAS,CAAC,KAAa;QACrB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzC;IAED,SAAS,CAAC,IAAa;QACrB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;KAC7B;;AA/WM,6CAAsB,GAAG,IAAI,CAAC;;YALtC,SAAS,SAAC;gBACT,QAAQ,EAAE,kBAAkB;gBAC5B,kzRAA2C;aAC5C;;;YA5BC,MAAM;YAYC,cAAc;YAHrB,gBAAgB,uBAuDb,QAAQ;YAtDX,kBAAkB;YASlB,cAAc;YADd,wBAAwB;YAGjB,cAAc;YAEd,QAAQ;;;wBASd,SAAS,SAAC,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;oBAIxC,KAAK;sBACL,KAAK;uBACL,MAAM;6BAWN,SAAS,SAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;;MCtDnC,iBAAiB;;;MCkCjB,6BAA6B;IAiCxC,YACU,IAAY,EACZ,cAA8B,EAClB,gBAAkC,EAC/C,+BAAmD,EACnD,cAA8B,EAC7B,wBAAkD,EAClD,cAA8B;QAN9B,SAAI,GAAJ,IAAI,CAAQ;QACZ,mBAAc,GAAd,cAAc,CAAgB;QAClB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAC/C,oCAA+B,GAA/B,+BAA+B,CAAoB;QACnD,mBAAc,GAAd,cAAc,CAAgB;QAC7B,6BAAwB,GAAxB,wBAAwB,CAA0B;QAClD,mBAAc,GAAd,cAAc,CAAgB;QApCxC,UAAK,GAAW,EAAE,CAAC;QACnB,gBAAW,GAAW,8BAA8B,CAAC;QAI3C,aAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAExC,sBAAiB,GAAG,EAAE,CAAC;QAGvB,iBAAY,GAAW,EAAE,CAAC;QAC1B,sBAAiB,GAAa,EAAE,CAAC;QACjC,qBAAgB,GAAa,EAAE,CAAC;QAIhC,qBAAgB,GAAY,KAAK,CAAC;QAIlC,WAAM,GAAG,IAAI,CAAC;QACd,WAAM,GAAG,IAAI,CAAC;QACd,aAAQ,GAAG,EAAE,CAAC;QACd,YAAO,GAAG,EAAE,CAAC;QAEb,oBAAe,GAAY,KAAK,CAAC;QACjC,oBAAe,GAAG,EAAE,CAAC;QACrB,yBAAoB,GAAG,EAAE,CAAC;QAwJ1B,eAAU,GAAG;YACX,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,CAAC;SACnD,CAAC;;QAuNF,6BAAwB,GAAG;YACzB,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAC1C,IAAI,CAAC,6BAA6B,EAClC,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,OAAO,CACb,CAAC;SACH,CAAC;;QAEF,0BAAqB,GAAG;YACtB,IAAI,CAAC,cAAc,CAAC,qBAAqB,CACvC,IAAI,CAAC,6BAA6B,EAClC,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,OAAO,CACb,CAAC;SACH,CAAC;;QAEF,2BAAsB,GAAG,CAAC,gBAAgB;YACxC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CACxC,IAAI,CAAC,6BAA6B,EAClC,IAAI,CAAC,eAAe,EACpB,gBAAgB,CACjB,CAAC;SACH,CAAC;;QAEF,wBAAmB,GAAG,CAAC,gBAAgB;YACrC,IAAI,CAAC,cAAc,CAAC,mBAAmB,CACrC,IAAI,CAAC,6BAA6B,EAClC,IAAI,CAAC,eAAe,EACpB,gBAAgB,CACjB,CAAC;SACH,CAAC;;QAEF,YAAO,GAAG;YACR,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;SACjE,CAAC;QAxYA,6BAA6B,CAAC,sBAAsB;YAClD,IAAI,CAAC,gBAAgB,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC;YAC/B,gBAAgB,EAAE,KAAK;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACpC,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC;KAClD;IAED,QAAQ;QACN,IAAI,CAAC,wBAAwB,CAAC,cAAc,GAAG,KAAK,CAAC;QAErD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;YACxB,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;QAEvD,IACE,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,IAAI;YACpC,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,EAAE;YAElC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;QAElD,IAAI,CAAC,MAAM,GAAG;YACZ,WAAW,EAAE,GAAG,GAAG,GAAG;YACtB,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,CAAC;YACX,gBAAgB,EAAE,IAAI;YACtB,KAAK,EAAE,IAAI;YACX,gBAAgB,EAAE,KAAK;YACvB,gBAAgB,EAAE,KAAK;YACvB,QAAQ,EAAE,IAAI;SACf,CAAC;QAEF,IAAI,IAAI,CAAC,OAAO,CAAC,uBAAuB,IAAI,IAAI,EAAE;YAChD,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC;SACtC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE;YAC9B,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC3C,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,IAAI,IAAI;gBACvD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;YAE5B,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YACjC,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC;gBACvC,IAAI,EAAE,OAAO,CAAC,QAAQ;aACvB,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,cAAqB,CAAC,CAAC,CAAC;SACxD;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE;YAC9D,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAC5D,IAAI,CAAC,OAAO,CAAC,QAAQ,CACtB,CAAC;QAEJ,IACE,IAAI,CAAC,OAAO,CAAC,uBAAuB,IAAI,IAAI;YAC5C,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAC/C;YACA,KACE,IAAI,KAAK,GAAG,CAAC,EACb,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,MAAM,EACnD,KAAK,EAAE,EACP;gBACA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;gBACzD,IAAI,CAAC,YAAY;oBACf,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;aACxD;YACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAClE,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBAC9C,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;aACxD;YACD,IAAI,CAAC,iBAAiB;gBACpB,IAAI,CAAC,iBAAiB;oBACtB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,cAAc,CAAC;oBACpD,KAAK,IAAI,CAAC,gBAAgB,IAAI,CAAC;SAClC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,CAAC,EAAE;YACpC,IAAI,CAAC,iBAAiB;gBACpB,IAAI,CAAC,iBAAiB;oBACtB,WAAW,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,IAChE,IAAI,CAAC,OAAO,CAAC,eACf,EAAE,CAAC;SACN;QACD,IACE,IAAI,CAAC,OAAO,CAAC,uBAAuB,IAAI,IAAI;YAC5C,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAChD;SACA;QACD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE5E,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5C,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;YAChD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACvD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;aACpD;SACF;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SAChD;QAED,IAAI,CAAC,6BAA6B,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACvE,IAAI,CAAC,6BAA6B,CAAC,kBAAkB,CACnD,IAAI,CAAC,oBAAoB,CAC1B,CAAC;QACF,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,6BAA6B,CAAC,OAAO,EAAE,CAAC;SAC9C;QAED,IAAI,CAAC,+BAA+B,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK;YAC5D,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC9B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;SAC9B,CAAC,CAAC;KACJ;IAED,eAAe;QACb,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,EAAE;YACtC,IAAI,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACzD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACtE,OAAO,CAAC,YAAY,CAClB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,GAAG,EACrC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,CACxC,CAAC;aACH;SACF;KACF;IAED,iBAAiB,CAAC,OAAoB;QACpC,IAAI,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,CAC3D,kBAAkB,CACJ,CAAC;QACjB,KAAK,CAAC,KAAK,EAAE,CAAC;KACf;IAMD,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;KACvC;IAED,kBAAkB,CAAC,SAAS;QAC1B,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAC/C,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;SAC/B;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAClD,SAAS,EACT,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,OAAO,CACb,CAAC;KACH;IAED,YAAY,CAAC,KAAK;QAChB,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAClC,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,GAAG,IAAI,CAAC;YAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;YAC3B,IAAI,IAAI,CAAC,IAAI,GAAG,WAAW,EAAE;gBAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,6BAA6B,CAAC;gBACvD,WAAW,CAAC,SAAS,CAAC;oBACpB,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,GAAG;iBACpD,CAAC,CAAC;gBACH,WAAW,CAAC,aAAa,EAAE,CAAC;gBAC5B,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;gBACzB,OAAO;aACR;YACD,IACE,IAAI,CAAC,OAAO,CAAC,uBAAuB,IAAI,IAAI;gBAC5C,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,MAAM,GAAG,CAAC;gBAC/C,EACE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;oBACvD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CACxD,EACD;gBACA,MAAM,WAAW,GAAG,IAAI,CAAC,6BAA6B,CAAC;gBACvD,WAAW,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;gBACnE,WAAW,CAAC,aAAa,EAAE,CAAC;gBAC5B,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;gBACzB,OAAO;aACR;SACF;QACD,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,GAAG,IAAI,CAAC;YAC/D,IAAI,IAAI,EAAE;gBACR,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,GAAG,IAAI,CAAC;gBAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;gBAC3B,IAAI,IAAI,CAAC,IAAI,GAAG,WAAW,EAAE;oBAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,6BAA6B,CAAC;oBACvD,WAAW,CAAC,SAAS,CAAC;wBACpB,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,GAAG;qBACpD,CAAC,CAAC;oBACH,WAAW,CAAC,aAAa,EAAE,CAAC;oBAC5B,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;oBACzB,OAAO;iBACR;gBACD,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC9B,IAAI,UAAU,GAAG,IAAI,CAAC;gBACtB,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;gBACjC,MAAM,CAAC,MAAM,GAAG;oBACd,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACzC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBACrB,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;oBAC5D,IACE,IAAI,CAAC,OAAO,CAAC,aAAa;wBAC1B,IAAI,CAAC,OAAO,CAAC,SAAS;wBACtB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EACvC;wBACA,IAAI,CAAC,cAAc,CAAC,iBAAiB,CACnC,aAAa,EACb,IAAI,CAAC,OAAO,CAAC,aAAa,EAC1B,IAAI,CAAC,OAAO,CAAC,SAAS,CACvB,CAAC;qBACH;;oBAED,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC;oBACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;iBACnC,CAAC;aACH;SACF;KACF;IACD,sBAAsB,CAAC,KAAK;QAC1B,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;QACvD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAChD,QAAQ,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YACrD,IAAI,CAAC,6BAA6B,CAAC,aAAa,EAAE,CAAC;YACnD,IAAI,CAAC,6BAA6B,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAClE,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC;SAC5C;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;KAC9D;IACD,SAAS;QACP,IAAI,CAAC,iBAAiB,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QACtD,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;QAC1C,IAAI,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAClD,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,GAAG;YACX,qBAAqB,EAAE,KAAK;YAC5B,qBAAqB,EAAE,MAAM;SAC9B,CAAC,CAAC;QACH,IAAI,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAClD,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,GAAG;YACX,qBAAqB,EAAE,KAAK;YAC5B,qBAAqB,EAAE,MAAM;SAC9B,CAAC,CAAC;QACH,IAAI,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;YACpD,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,GAAG;YACX,qBAAqB,EAAE,KAAK;YAC5B,qBAAqB,EAAE,MAAM;SAC9B,CAAC,CAAC;QACH,oBAAoB,CAAC,MAAM,CAAC,CAAC,IAAI;YAC/B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBACZ,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;aAC5D,CAAC,CAAC;SACJ,CAAC,CAAC;QACH,oBAAoB,CAAC,MAAM,CAAC,CAAC,IAAI;YAC/B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBACZ,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;aAC5D,CAAC,CAAC;SACJ,CAAC,CAAC;QACH,sBAAsB,CAAC,MAAM,CAAC,CAAC,IAAI;YACjC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBACZ,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC;aAC9D,CAAC,CAAC;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAEhB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;KACvB;IACD,uBAAuB,CAAC,IAAI,EAAE,IAAI;QAChC,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,QAAQ,CAAC;QACb,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC9B,QAAQ,GAAG,IAAI,CAAC;QAChB,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC/B,MAAM,CAAC,MAAM,GAAG;YACd,IAAI,UAAmB,CAAC;YACxB,QAAQ,IAAI;gBACV,KAAK,sBAAsB;oBACzB,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,eAAe,CAAC;oBACtD,UAAU,GAAG;wBACX,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,eAAe;wBAC/C,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;wBAC7B,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBAClD,YAAY,EAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI;qBAC1C,CAAC;oBACF,IAAI,CAAC,iBAAiB,CAAC,cAAc,GAAG,UAAU,CAAC;oBACnD,IAAI,CAAC,iBAAiB,CAAC,aAAa;wBAClC,UAAU,CAAC,QAAQ,GAAG,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC;oBACpD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC1B,MAAM;gBACR,KAAK,sBAAsB;oBACzB,UAAU,GAAG;wBACX,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,cAAc;wBAC9C,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;wBAC7B,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBAClD,YAAY,EAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI;qBAC1C,CAAC;oBACF,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,UAAU,CAAC;oBAClD,IAAI,CAAC,iBAAiB,CAAC,YAAY;wBACjC,UAAU,CAAC,QAAQ,GAAG,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC;oBACpD,MAAM;gBAER,KAAK,wBAAwB;oBAC3B,UAAU,GAAG;wBACX,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU;wBAC1C,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;wBAC7B,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBAClD,YAAY,EAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI;qBAC1C,CAAC;oBACF,IAAI,CAAC,iBAAiB,CAAC,eAAe,GAAG,UAAU,CAAC;oBACpD,IAAI,CAAC,iBAAiB,CAAC,QAAQ;wBAC7B,UAAU,CAAC,QAAQ,GAAG,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC;oBACpD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;oBACnE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;oBAE5D,MAAM;gBACR;oBACE,MAAM;aACT;YAED,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC;SAC7C,CAAC;KACH;IAED,WAAW,CAAC,MAAc;QACxB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KAC5C;IACD,SAAS,CAAC,OAAe,EAAE,OAAe;QACxC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;KACpD;IACD,SAAS,CAAC,KAAa;QACrB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzC;IAED,SAAS,CAAC,IAAa;QACrB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;KAC7B;;AA5YM,oDAAsB,GAAG,IAAI,CAAC;;YALtC,SAAS,SAAC;gBACT,QAAQ,EAAE,2BAA2B;gBACrC,ivQAAoD;aACrD;;;YA5BC,MAAM;YAYC,cAAc;YAHrB,gBAAgB,uBAwDb,QAAQ;YAvDX,kBAAkB;YAUlB,cAAc;YADd,wBAAwB;YAGjB,cAAc;;;wBAUpB,SAAS,SAAC,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;oBAIxC,KAAK;sBACL,KAAK;uBACL,MAAM;6BAaN,SAAS,SAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;;MC1DnC,eAAe;IAA5B;QAEI,QAAG,GAAS,EAAE,CAAC;QACf,UAAK,GAAW,EAAE,CAAC;QACrB,UAAK,GAAW,EAAE,CAAC;KAEpB;;;MCWY,4BAA4B;;IAKvC,YAAoB,IAAgB,EAAU,YAAoC,EAAU,qBAA4C,EAC9H,cAA8B,EAAsB,gBAC1C,EAAS,8BAAkD,EAAU,cAA8B,EAC7G,wBAAkD,EAAU,cAA8B;QAHhF,SAAI,GAAJ,IAAI,CAAY;QAAU,iBAAY,GAAZ,YAAY,CAAwB;QAAU,0BAAqB,GAArB,qBAAqB,CAAuB;QAC9H,mBAAc,GAAd,cAAc,CAAgB;QAAsB,qBAAgB,GAAhB,gBAAgB,CAC1D;QAAS,mCAA8B,GAA9B,8BAA8B,CAAoB;QAAU,mBAAc,GAAd,cAAc,CAAgB;QAC7G,6BAAwB,GAAxB,wBAAwB,CAA0B;QAAU,mBAAc,GAAd,cAAc,CAAgB;QAK1F,aAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QACxC,YAAO,GAAW,OAAO,CAAA;QAEzB,WAAM,GAAW,EAAE,CAAA;QACnB,QAAG,GAAW,EAAE,CAAA;QAEhB,QAAG,GAAW,MAAM,CAAC;QACrB,UAAK,GAAW,OAAO,CAAA;QACvB,8BAAyB,GAAW,EAAE,CAAC;QACvC,qBAAgB,GAAY,KAAK,CAAC;QAClC,oBAAe,GAAG,EAAE,CAAC;QACrB,yBAAoB,GAAG,EAAE,CAAC;QAI1B,aAAQ,GAAU,EAAE,CAAC;QACrB,kBAAa,GAAW,EAAE,CAAA;QAC1B,gBAAW,GAAW,iCAAiC,CAAC;QAiGxD,eAAU,GAAG;YACX,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,CAAC;SACnD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAwID,6BAAwB,GAAG;YACzB,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;SAClH,CAAA;;QAED,0BAAqB,GAAG;YACtB,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;SAC/G,CAAA;;QAGD,2BAAsB,GAAG,CAAC,gBAAgB;YACxC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;SACpH,CAAA;;QAED,wBAAmB,GAAG,CAAC,gBAAgB;YACrC,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;SACjH,CAAA;;QAED,YAAO,GAAG;YACR,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;SAC7D,CAAA;QAnRC,4BAA4B,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC;KAC7E;IAuBD,QAAQ;QACN,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;YAChD,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAElE,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc;YAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;;YAEhE,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;QAC1E,IAAI,CAAC,wBAAwB,CAAC,cAAc,GAAG,KAAK,CAAA;QACpD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEzE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;YACxB,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;QAEvD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE;YAC9D,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;;QAIxF,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5C,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAA;YAC/C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACvD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;aACpD;SACF;QAGD,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SAChD;QACD,IAAI,CAAC,0BAA0B,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACpE,IAAI,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC9E,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,CAAC;SAC3C;QAGD,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,EAAE;YACjF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;SACjD;QAGD,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK;YAC3D,IAAI,IAAI,CAAC,0BAA0B,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,KAAK,EAAE;gBACnG,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,EAAE,yBAAyB,EAAE,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;gBACzG,IAAI,CAAC,0BAA0B,CAAC,aAAa,EAAE,CAAC;gBAChD,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC;aACzC;YACD,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAA;YAC7B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;SAC7B,CAAC,CAAA;QAEF,MAAM,WAAW,GAAG;YAClB,OAAO,EAAE,IAAI,WAAW,CAAC;gBACvB,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe;aAC9C,CAAC;SACH,CAAC;QAKF,IAAI,CAAC,YAAY,GAAG,IAAI,UAAU,CAAC,CAAC,QAA0B;YAC5D,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC5B,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,KAAa;YACtB,IAAI,KAAK,EAAE;gBACT,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC9B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;gBACvD,IAAI,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAA;gBACnD,mBAAmB,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC1C,mBAAmB,CAAC,0BAA0B,GAAG,IAAI,CAAC;;gBAEtD,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,CAAC;qBAC7F,IAAI,CACH,GAAG,CAAC,CAAC,IAAI,KAAK,IAAmB,IAAI,EAAE,CAAC,EACxC,GAAG,CAAC,MAAMA,MAAI,EAAE,GAAG;;oBAEjB,IAAI,CAAC,YAAY,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,IAAI,sBAAsB,CAAC;iBAClE,CAAC,CACH,CAAC;aACL;YAED,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;SACf,CAAC,CACH,CAAC;KACH;IAGD,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;KACzD;IAKD,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAA;KACtC;IAGD,kBAAkB,CAAC,SAAS;QAE1B,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAC/C,IAAI,CAAC,eAAe,EAAE,CAAA;YACtB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAA;SAC9B;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3F;IAED,gBAAgB,CAAC,YAAY;QAC3B,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAA;KACnD;IAGD,WAAW,CAAC,IAAI;QAEd,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,IAAI,EAAE;YAC1C,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,EAAE;gBAC7B,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC/C,IAAI,CAAC,0BAA0B,CAAC,sBAAsB,EAAE,CAAA;aACzD;iBACI;gBACH,IAAI,iBAAiB,GAAG,IAAI,eAAe,EAAE,CAAC;gBAC9C,iBAAiB,CAAC,KAAK,GAAG,IAAI,CAAC;gBAC/B,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;gBAC5D,IAAI,CAAC,0BAA0B,CAAC,sBAAsB,EAAE,CAAA;aACzD;SACF;aACI;YACH,IAAI,IAAI,CAAC,0BAA0B,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;gBACvD,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,EAAE,yBAAyB,EAAE,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;gBACzG,IAAI,CAAC,0BAA0B,CAAC,aAAa,EAAE,CAAC;gBAChD,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC;gBACxC,OAAO;aACR;iBACI;gBACH,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC/C,IAAI,CAAC,0BAA0B,CAAC,sBAAsB,EAAE,CAAA;gBACxD,IAAI,aAAa,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC;gBAC1D,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;oBACnG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;iBACzG;aAEF;SACF;;QAGD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAA;;QAEzD,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC;KAC5D;IAEK,cAAc,CAAC,MAAc;;YACjC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;gBACpE,MAAM,WAAW,GAAG,IAAI,CAAC,0BAA0B,CAAC;gBACpD,WAAW,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;gBACvI,WAAW,CAAC,aAAa,EAAE,CAAC;gBAC5B,OAAO;aACR;YACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM;gBACvC,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,IAAI,EAAE;oBAC1G,IAAI,CAAC,QAAQ,GAAG;wBACd;4BACE,GAAG,EAAE,CAAC;4BACN,KAAK,EAAE,IAAI,CAAC,MAAM;yBACnB;qBACF,CAAA;iBACF;qBACI;oBACH,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAA;iBACvB;aACF,CAAC,CAAA;SACH;KAAA;IAED,cAAc;QACZ,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,0BAA0B,CAAC,sBAAsB,EAAE,CAAA;KACzD;;AAtNM,mDAAsB,GAAG,IAAI,CAAC;;YARtC,SAAS,SAAC;;gBAET,QAAQ,EAAE,0BAA0B;gBACpC,o1GAAmD;aACpD;;;YARQ,UAAU;YANV,sBAAsB;YAOI,qBAAqB;YAN/C,cAAc;YAFuC,gBAAgB,uBAsBjC,QAAQ;YAtB2B,kBAAkB;YAQnB,cAAc;YAApF,wBAAwB;YACxB,cAAc;;;oBAkBpB,KAAK;sBACL,KAAK;uBACL,MAAM;;;MCfI,kBAAkB;;IAG7B,YAAoB,IAAgB,EAAU,cAA8B,EAAU,qBAA4C,EAAsB,gBAAkC,EAAS,oBAAwC,EACjO,cAA8B,EAAU,wBAAkD,EAC1F,cAA8B;QAFpB,SAAI,GAAJ,IAAI,CAAY;QAAU,mBAAc,GAAd,cAAc,CAAgB;QAAU,0BAAqB,GAArB,qBAAqB,CAAuB;QAAsB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAAS,yBAAoB,GAApB,oBAAoB,CAAoB;QACjO,mBAAc,GAAd,cAAc,CAAgB;QAAU,6BAAwB,GAAxB,wBAAwB,CAA0B;QAC1F,mBAAc,GAAd,cAAc,CAAgB;QAM9B,aAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;;QAIxC,eAAU,GAAU,EAAE,CAAA;QACtB,SAAI,GAAG,EAAE,CAAC;QACV,8BAAyB,GAAW,EAAE,CAAC;QAIvC,qBAAgB,GAAY,KAAK,CAAC;QAClC,oBAAe,GAAG,EAAE,CAAC;QACrB,yBAAoB,GAAG,EAAE,CAAC;QAE1B,yBAAoB,GAAY,KAAK,CAAC;QAyGtC,eAAU,GAAG;YACX,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,CAAC;SACnD,CAAA;;QAwGD,6BAAwB,GAAG;YACzB,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;SACvG,CAAA;;QAED,0BAAqB,GAAG;YACtB,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;SACpG,CAAA;;QAGD,2BAAsB,GAAG,CAAC,gBAAgB;YACxC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;SACzG,CAAA;;QAED,wBAAmB,GAAG,CAAC,gBAAgB;YACrC,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;SACtG,CAAA;;QAGD,YAAO,GAAG;YACR,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;SAClD,CAAA;QA1PC,kBAAkB,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC;KACnE;IAoBD,OAAO,iBAAiB,CAAC,MAAW;QAClC,MAAM,sBAAsB,GAAG,kBAAkB,CAAC,sBAAsB,CAAC;QACzE,MAAM,SAAS,GAAG,sBAAsB,CAAC,OAAoB,CAAC;QAC9D,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;YACxB,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;gBAC9B,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;oBAClC,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAgB,CAAC;oBACtD,WAAW,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;oBACjD,WAAW,CAAC,aAAa,EAAE,CAAC;iBAC7B;aACF;SACF;KACF;IACD,WAAW;QACT,IAAI,IAAI,CAAC,uBAAuB;YAC9B,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,CAAC;KAC9C;IACD,QAAQ;QACN,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;YAChD,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAElE,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc;YAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;;YAEhE,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;QAC1E,IAAI,CAAC,wBAAwB,CAAC,cAAc,GAAG,KAAK,CAAA;QAEpD,IAAI,CAAC,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;QAChF,IAAI,CAAC,aAAa,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;QAAA,CAAC;QACxC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC3D,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAE/D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;YACxB,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;QAEvD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE;YAC9D,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAExF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY;YAC5B,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;;;QAKnF,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAElD,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SAChD;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5C,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAA;YAC/C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACvD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;aACpD;SAIF;QAED,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACzD,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACnE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;SAChC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACpE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC1C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;aAClC;YACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAA;YAC9B,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SACnD;QAED,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK;YACjD,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAA;YAC7B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;SAC7B,CAAC,CAAC;;QAEH,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;;YAC1E,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;YACvC,IAAI,CAAC,UAAU,GAAG,MAAA,IAAI,CAAC,IAAI,0CAAE,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1E,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;gBACrB,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC;gBAC7B,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;gBACf,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;aAClC;SACF,CAAC,CAAC;KACJ;IACD,eAAe;QACb,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,EAAE;YACtC,IAAI,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACzD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACtE,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;aACtG;SACF;QACD,IAAI,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9F,YAAY,CAAC,YAAY,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;KACjD;IAMD,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAA;KACtC;IAED,kBAAkB,CAAC,SAAS;QAC1B,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAC/C,IAAI,CAAC,eAAe,EAAE,CAAA;YACtB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAA;SAC9B;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3F;IAED,gBAAgB,CAAC,YAAY;QAC3B,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAA;KACnD;IAED,qBAAqB,CAAC,IAAS;;QAE7B,IAAI,CAAC,IAAI;YACP,OAAO,KAAK,CAAC;QAEf,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,sBAAsB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAA;QAC1J,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY;YAC3B,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAA;QAC7C,IAAI,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAA;QACnD,mBAAmB,CAAC,cAAc,GAAG,IAAI,CAAC;QAC1C,mBAAmB,CAAC,0BAA0B,GAAG,IAAI,CAAC;QACtD,IAAI,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,mBAAmB,CAAC,CAAC;QACjF,OAAO,KAAY,CAAC;KACrB;IAED,MAAM,CAAC,KAAK,EAAE,GAAG;;;QAEf,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK;YACrB,OAAO;;QAET,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,IAAI,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,GAAG,CAAC,QAAQ,EAAE;YACpG,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;gBACrD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACvC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBACrD,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC;gBACpC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;oBAC3C,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACpB,OAAO;iBACR;;oBAEC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;aACnB;SACF;;aAEI,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;YAC7D,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,GAAG,CAAC,QAAQ,EAAE;gBACrE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;gBAC9E,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;aACtC;iBACI,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,KAAK,EAAE;gBAC3E,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC;gBACvC,IAAI,CAAC,eAAe,CAAC,sBAAsB,EAAE,CAAC;aAC/C;SACF;;aAEI,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,CAAA,MAAA,GAAG,CAAC,QAAQ,0CAAE,MAAM,KAAI,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;YAChH,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;YACzD,IAAI,CAAC,eAAe,CAAC,sBAAsB,EAAE,CAAC;YAC9C,IAAI,CAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,MAAM,KAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;gBAC3D,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;gBACjD,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;aACtC;SACF;KACF;IAED,aAAa,CAAC,MAAM;;QAElB,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,EAAE;YAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SACrC;QACD,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,EAAE;YAChC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC1E,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;gBAClE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;gBACjD,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;gBACrC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;aAC9B;SACF;QACD,IAAI,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAClF,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;YACtF,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;SAC1G;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAA;QAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,eAAe,CAAC,sBAAsB,EAAE,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACnC;IAED,gBAAgB,CAAC,KAAK;QACpB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;IAyBD,eAAe,CAAC,SAAS;QACvB,IAAI,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;YAC3H,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACrD,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;gBAC3C,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC;gBAC1B,OAAO;aACR;;gBAEC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;SACnB;KACF;IACD,YAAY;QACV,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;YACtB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAA;KAC1C;;AAlRM,yCAAsB,GAAG,IAAI,CAAC;;YANtC,SAAS,SAAC;;gBAET,QAAQ,EAAE,gBAAgB;gBAC1B,qsFAAyC;aAC1C;;;YAVQ,UAAU;YAFV,cAAc;YAIY,qBAAqB;YALM,gBAAgB,uBAiByD,QAAQ;YAjB/D,kBAAkB;YAKnB,cAAc;YAApF,wBAAwB;YACxB,cAAc;;;oBAiBpB,KAAK;sBACL,KAAK;uBACL,MAAM;wBACN,SAAS,SAAC,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;;MC3B9B,SAAS;IAClB;QAGE,eAAU,GAAQ,CAAC,CAAA;QACnB,cAAS,GAAQ,EAAE,CAAA;QACnB,sBAAiB,GAAQ,CAAC,CAAA;QAC1B,oBAAe,GAAS,KAAK,CAAA;QAC7B,SAAI,GAAQ,CAAC,CAAA;QACb,SAAI,GAAQ,CAAC,CAAA;QACb,YAAO,GAAS,IAAI,CAAA;QACpB,oBAAe,GAAQ,CAAC,CAAA;KARzB;;;ICFO;AAAZ,WAAY,UAAU;IACpB,iDAAW,CAAA;IACX,2DAAgB,CAAA;IAChB,yEAAuB,CAAA;IACvB,uDAAc,CAAA;IACd,mDAAY,CAAA;IACZ,mDAAY,CAAA;IACZ,6CAAO,CAAA;AACT,CAAC,EARW,UAAU,KAAV,UAAU;;ACatB;MAKa,eAAe;IA2B1B,YAAmB,cAA8B,EAAU,IAAgB,EAAU,MAAc,EAAU,eAA6C,EAAU,qBAA4C;QAA7L,mBAAc,GAAd,cAAc,CAAgB;QAAU,SAAI,GAAJ,IAAI,CAAY;QAAU,WAAM,GAAN,MAAM,CAAQ;QAAU,oBAAe,GAAf,eAAe,CAA8B;QAAU,0BAAqB,GAArB,qBAAqB,CAAuB;QAzBhN,UAAK,GAAG,EAAE,CAAC;QAEX,WAAM,GAAQ,EAAE,CAAC;QACjB,gBAAW,GAAQ,IAAI,CAAC;QACxB,aAAQ,GAAQ,CAAC,CAAC;QAClB,aAAQ,GAAQ,EAAE,CAAA;QAClB,UAAK,GAAQ,CAAC,CAAA;QAGd,gBAAW,GAAQ,CAAC,CAAA;QACpB,uBAAkB,GAAG,IAAI,CAAC;QAC1B,qBAAgB,GAAG,IAAI,CAAC;QACxB,uCAAkC,GAAG,IAAI,CAAA;QACzC,QAAG,GAAG,CAAC,CAAC;QACR,aAAQ,GAAG,GAAG,CAAC;QACf,mBAAc,GAAG,CAAC,CAAC;QACnB,qBAAgB,GAAG,CAAC,CAAC;QACrB,cAAS,GAAG,EAAE,CAAC;QAEf,gBAAW,GAAY,IAAI,CAAC;QAClB,UAAK,GAAsB,IAAI,YAAY,EAAO,CAAC;QAG7D,kBAAa,GAAG,IAAI,YAAY,EAAE,CAAC;QAmLnC,uBAAkB,GAAG;YACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;SAC3B,CAAA;QAED,iBAAY,GAAG;;YAEb,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACpC,CAAA;KAxLA;IACD,WAAW;QACT,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAA;KACjC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB;YAChC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QAEnC,IAAI,IAAI,CAAC,OAAO,CAAC,2BAA2B,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3G,MAAM,2BAA2B,GAAG,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC;YAC7E,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK;gBAC9C,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,CAAA;gBACrF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;oBACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;oBACxB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;oBACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;iBAC1C;aACF,CAAC,CAAC,CAAA;SACN;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,uCAAuC,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,uCAAuC,CAAC,MAAM,GAAG,CAAC,EAAE;YACnI,MAAM,uCAAuC,GAAG,IAAI,CAAC,OAAO,CAAC,uCAAuC,CAAC;YACrG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK;gBACrE,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,uCAAuC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,CAAA;gBACjG,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;oBACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;oBACxB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;oBACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;iBAC1C;aACF,CAAC,CAAC,CAAA;SACJ;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;KAC1C;IACD,eAAe;QAEb,IAAI,IAAI,CAAC,OAAO,CAAC,0BAA0B,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,MAAM,GAAG,CAAC,EAAE;YACzG,MAAM,0BAA0B,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC;YAC3E,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,0BAA0B,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACtE,MAAM,yBAAyB,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;gBACpE,QAAQ,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE;oBAC3E,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;oBACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;oBACxB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;iBAC1C,EAAE,KAAK,CAAC,CAAC;aACX;SACF;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,6BAA6B,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,6BAA6B,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/G,MAAM,6BAA6B,GAAG,IAAI,CAAC,OAAO,CAAC,6BAA6B,CAAC;YACjF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,6BAA6B,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACzE,MAAM,4BAA4B,GAAG,6BAA6B,CAAC,KAAK,CAAC,CAAC;gBAC1E,IAAI,OAAO,GAAS,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAE,CAAC,aAA4B,CAAC;gBAC/F,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC;oBACrC,IAAI,CAAC,CAAC,GAAG,IAAI,OAAO,EAAE;wBACpB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;wBACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;wBACxB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;qBAC1C;iBACF,EAAE,KAAK,CAAC,CAAC;aACX;SACF;;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,IAAI,IAAI,EAAE;YAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;YACjF,IAAI,MAAM,IAAI,SAAS,EAAE;gBACvB,IAAI,OAAO,GAAG,MAAqB,CAAC;gBACpC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;oBAClC,IAAI,CAAC,YAAY,EAAE,CAAC;iBACrB,EAAE,KAAK,CAAC,CAAC;aACX;SACF;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,2BAA2B,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3G,MAAM,2BAA2B,GAAG,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC;YAC7E,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,2BAA2B,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACvE,MAAM,0BAA0B,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC;gBACtE,QAAQ,CAAC,cAAc,CAAC,0BAA0B,CAAC,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC;oBACjF,IAAI,CAAC,CAAC,GAAG,IAAI,OAAO,EAAE;wBACpB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;wBACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;wBACxB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;qBAC1C;iBACF,EAAE,KAAK,CAAC,CAAC;aAEX;SACF;KAEF;IAED,gBAAgB,CAAC,MAAM;QACrB,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;YACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;SAC1C;KACF;IAED,YAAY,CAAC,IAAI;QACf,IAAI,IAAI,IAAI,CAAC;YACX,OAAO;QACT,IAAI,IAAI,GAAG,CAAC,EAAE;YACZ,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gBACzB,OAAO;aACR;YACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SACxB;KACF;IACD,cAAc,CAAC,CAAC;QACd,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;KAC1C;IAKD,YAAY;QACV,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAA;QACjC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAA;QACpB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;KAC1C;IAID,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,KAAK;QACvC,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB;YAClC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE9C,IAAI,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QAChC,IAAI,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB;YAChC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC;;YAE/B,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC;QAE7B,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC;QACnC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC;QACrC,SAAS,CAAC,eAAe,GAAG,eAAe,CAAC;QAC5C,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;;QAGjC,IAAI,UAAU,GAAkB;YAC9B,SAAS,EAAE,SAAS;YACpB,OAAO,EAAE,OAAO;SACjB,CAAC;QAEF,IAAI,cAAc,GAAG,IAAI,mBAAmB,EAAE,CAAC;QAC/C,cAAc,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QAC5D,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,GAAG,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC;aACtK,SAAS,CAAC,CAAC,YAAiB;YAC3B,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,KAAK,CAAA;YAChC,IAAI,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,uBAAuB,EAAE,IAAI,EAAE,CAAC,CAAA;YAC5G,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC9B,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,UAAU,CAAC;YAExC,IAAI,eAAe,EAAE;gBACnB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;gBAChB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAChE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAElC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;aAEzC;SACF,EAAE,CAAC,KAAwB;YAC1B,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG;gBACrB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAA;SACjD,CAAC,CAAC;KACN;IAYD,SAAS,CAAC,SAAgB;QACxB,IAAI,aAAa,GAAQ,EAAE,CAAA;QAC3B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACrD,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,GAAG,EAAE,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;YACpB,IAAI,SAAS,GAAG,EAAE,CAAA;YAClB,OAAO,CAAC,EAAE,EAAE;gBACV,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACd,IAAI,IAAI,GAAG,GAAG,CAAA;gBACd,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;aACvE;YACD,IAAI,WAAW,GAAG,SAAc,CAAA;YAChC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;SAChC;QAED,OAAO,aAAa,CAAC;KACtB;IAED,OAAO,CAAC,WAAmB,EAAE,WAAmB;QAC9C,IAAI,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,EAAE;;YAEjD,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,GAAG,EAAE;gBACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;;gBAE9D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;;YAEjE,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,GAAG,EAAE;gBACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;;gBAE9D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;SAClE;aACI;;YAEH,IAAI,WAAW,GAAG,CAAC;gBACjB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;;gBAE/D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;;YAEhE,IAAI,WAAW,GAAG,CAAC;gBACjB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;;gBAE/D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;SACjE;KACF;IAED,YAAY;QACV,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE;YAC9D,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAChE,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,eAAe,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,eAAe,IAAI,EAAE,EAAE;oBAC5G,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC;oBACpE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;iBACrD;aACF;YACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B;KACF;IAED,eAAe;QACb,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE;YAC9D,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAChE,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,eAAe,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,eAAe,IAAI,EAAE,EAAE;oBAC5G,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC;oBACpE,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC;oBAC9D,IAAI,YAAY,IAAI,SAAS,IAAI,YAAY,IAAI,IAAI,IAAI,YAAY,IAAI,EAAE,EAAE;wBAC3E,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,UAAU,IAAI,UAAU,CAAC,UAAU,EAAE;;;;;;;;4BAQnE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,GAAG,YAAY,CAAC;;yBAEzE;6BACI;4BACH,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,UAAU,IAAI,UAAU,CAAC,mBAAmB;gCAC1E,YAAY,GAAG,YAAY,CAAC;4BAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,UAAU,IAAI,UAAU,CAAC,QAAQ;gCAC/D,YAAY,GAAG,YAAY,CAAC;4BAE9B,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,GAAG,YAAY,CAAC;yBACzE;qBACF;yBACI;wBACH,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC;qBACjE;iBACF;qBACI;oBACH,MAAM,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC;oBACzE,IAAI,YAAY,GAAI,QAAQ,CAAC,aAAa,CAAC,qBAAqB,CAAsB,CAAC,KAAK,CAAC;oBAC7F,IAAI,YAAY,IAAI,SAAS,IAAI,YAAY,IAAI,IAAI;wBACnD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,GAAG,YAAY,CAAC;;wBAExE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC;iBACnE;aACF;SACF;QACD,OAAO,OAAO,CAAC;KAChB;;;YA/TF,SAAS,SAAC;gBACT,QAAQ,EAAE,aAAa;gBACvB,m3DAAsC;aACvC;;;YARoD,cAAc;YAR1D,UAAU;YADV,MAAM;YAON,4BAA4B;YAE5B,qBAAqB;;;oBA+B3B,MAAM;sBACN,KAAK;oBACL,KAAK;;;MClBK,qBAAqB;IAvBlC;QAyBc,eAAU,GAAG,IAAI,YAAY,EAAE,CAAC;QACjC,gBAAW,GAAG,CAAC,CAAC;QAChB,aAAQ,GAAG,EAAE,CAAC;QACd,aAAQ,GAAG,EAAE,CAAC;QACd,qBAAgB,GAAG,KAAK,CAAC;QAGlC,UAAK,GAAQ,EAAE,CAAC;KAuFnB;IArFG,QAAQ;;QAEJ,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAClC;KACJ;IAED,WAAW,CAAC,OAAsB;QAC9B,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW;YACzB,OAAM;;QAEV,IAAI,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE;YAC5D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAClC;KACJ;IAED,OAAO,CAAC,IAAY;;QAEhB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;;QAGlF,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;;QAGnF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;KAChD;IAED,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ;QAChD,IAAI,WAAW,KAAK,KAAK,CAAC,EAAE;YAAE,WAAW,GAAG,CAAC,CAAC;SAAE;QAChD,IAAI,QAAQ,KAAK,KAAK,CAAC,EAAE;YAAE,QAAQ,GAAG,EAAE,CAAC;SAAE;QAC3C,IAAI,QAAQ,KAAK,KAAK,CAAC,EAAE;YAAE,QAAQ,GAAG,EAAE,CAAC;SAAE;;QAE3C,IAAI,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC;;QAElD,IAAI,WAAW,GAAG,CAAC,EAAE;YACjB,WAAW,GAAG,CAAC,CAAC;SACnB;aACI,IAAI,WAAW,GAAG,UAAU,EAAE;YAC/B,WAAW,GAAG,UAAU,CAAC;SAC5B;QACD,IAAI,SAAS,EAAE,OAAO,CAAC;QACvB,IAAI,UAAU,IAAI,QAAQ,EAAE;;YAExB,SAAS,GAAG,CAAC,CAAC;YACd,OAAO,GAAG,UAAU,CAAC;SACxB;aACI;;YAED,IAAI,yBAAyB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YACzD,IAAI,wBAAwB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAC3D,IAAI,WAAW,IAAI,yBAAyB,EAAE;;gBAE1C,SAAS,GAAG,CAAC,CAAC;gBACd,OAAO,GAAG,QAAQ,CAAC;aACtB;iBACI,IAAI,WAAW,GAAG,wBAAwB,IAAI,UAAU,EAAE;;gBAE3D,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,CAAC,CAAC;gBACtC,OAAO,GAAG,UAAU,CAAC;aACxB;iBACI;;gBAED,SAAS,GAAG,WAAW,GAAG,yBAAyB,CAAC;gBACpD,OAAO,GAAG,WAAW,GAAG,wBAAwB,CAAC;aACpD;SACJ;;QAED,IAAI,UAAU,GAAG,CAAC,WAAW,GAAG,CAAC,IAAI,QAAQ,CAAC;QAC9C,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,QAAQ,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;;QAEnE,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,OAAO,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;;QAE5G,OAAO;YACH,UAAU,EAAE,UAAU;YACtB,WAAW,EAAE,WAAW;YACxB,QAAQ,EAAE,QAAQ;YAClB,UAAU,EAAE,UAAU;YACtB,SAAS,EAAE,SAAS;YACpB,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,UAAU;YACtB,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,KAAK;SACf,CAAC;KACL;;;YArHJ,SAAS,SAAC;gBACP,QAAQ,EAAE,eAAe;gBACzB,QAAQ,EAAE;;;;;;;;;;;;;;;;;;CAkBb;aACA;;;oBAGI,KAAK;yBACL,MAAM;0BACN,KAAK;uBACL,KAAK;uBACL,KAAK;+BACL,KAAK;;;MClBG,oBAAoB;;IAK/B,YAAoB,cAA8B,EAAsB,gBAAkC,EACjG,sBAA0C,EAAU,cAA8B,EACjF,wBAAkD,EAAU,cAA8B;QAFhF,mBAAc,GAAd,cAAc,CAAgB;QAAsB,qBAAgB,GAAhB,gBAAgB,CAAkB;QACjG,2BAAsB,GAAtB,sBAAsB,CAAoB;QAAU,mBAAc,GAAd,cAAc,CAAgB;QACjF,6BAAwB,GAAxB,wBAAwB,CAA0B;QAAU,mBAAc,GAAd,cAAc,CAAgB;QAK1F,aAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAGxC,qBAAgB,GAAY,KAAK,CAAC;QAClC,oBAAe,GAAG,EAAE,CAAC;QACrB,yBAAoB,GAAG,EAAE,CAAC;QAiC1B,eAAU,GAAG;YACX,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,CAAC;SACnD,CAAA;;QA+BD,6BAAwB,GAAG;YACzB,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;SAC9G,CAAA;;QAED,0BAAqB,GAAG;YACtB,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;SAC3G,CAAA;;QAGD,2BAAsB,GAAG,CAAC,gBAAgB;YACxC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;SAChH,CAAA;;QAED,wBAAmB,GAAG,CAAC,gBAAgB;YACrC,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;SAC7G,CAAA;;QAED,YAAO,GAAG;YACR,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;SACzD,CAAA;QA9FC,oBAAoB,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC;KACrE;IASD,QAAQ;QAEN,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAErE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;YACxB,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;QAEvD,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SAChD;QACD,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAChE,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC1E,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,CAAC;SACvC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE;YAC9D,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAGxF,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK;YACnD,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAA;YAC7B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;SAC7B,CAAC,CAAA;QAEF,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YACtB,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAChE;KAEF;IAMD,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAA;KACtC;IAED,kBAAkB,CAAC,SAAS;QAC1B,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAC/C,IAAI,CAAC,eAAe,EAAE,CAAA;YACtB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAA;SAC9B;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3F;IAED,cAAc;QACZ,IAAI,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;QACtD,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE;YAC7F,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,aAAa,EAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;SACxG;;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,GAAE,aAAa,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;KAClC;IAED,oBAAoB,CAAC,KAAK;QAExB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAE,IAAI,CAAC,KAAK,IAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;KAClE;;AA7EM,2CAAsB,GAAG,IAAI,CAAC;;YARtC,SAAS,SAAC;;gBAET,QAAQ,EAAE,kBAAkB;gBAC5B,qhEAA2C;aAC5C;;;YAVQ,cAAc;YADuC,gBAAgB,uBAiBvB,QAAQ;YAjBiB,kBAAkB;YAG/D,cAAc;YAAxC,wBAAwB;YACxB,cAAc;;;oBAkBpB,KAAK;sBACL,KAAK;uBACL,MAAM;;;ICzBG;AAAZ,WAAY,kBAAkB;IAC1B,iEAAW,CAAA;IACX,+DAAU,CAAA;AACZ,CAAC,EAHS,kBAAkB,KAAlB,kBAAkB;;MC+BjB,gBAAgB;;IAG3B,YACU,cAA8B,EAClB,gBAAkC,EAC/C,eAAmC,EACnC,cAA8B,EAC7B,wBAAkD,EAClD,cAA8B;QAL9B,mBAAc,GAAd,cAAc,CAAgB;QAClB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAC/C,oBAAe,GAAf,eAAe,CAAoB;QACnC,mBAAc,GAAd,cAAc,CAAgB;QAC7B,6BAAwB,GAAxB,wBAAwB,CAA0B;QAClD,mBAAc,GAAd,cAAc,CAAgB;QAM9B,aAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAC9B,WAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAE/B,cAAS,GAAG,SAAS,CAAA;QAE5B,gBAAW,GAAW,EAAE,CAAC;QACzB,cAAS,GAAW,CAAC,CAAC;QACtB,mBAAc,GAAW,CAAC,CAAC;QAU3B,oBAAe,GAAY,KAAK,CAAC;QACjC,qBAAgB,GAAY,KAAK,CAAC;QAClC,oBAAe,GAAG,EAAE,CAAC;QACrB,yBAAoB,GAAG,EAAE,CAAC;;QAE1B,sBAAiB,GAAW,CAAC,CAAC;QAC9B,sBAAiB,GAAY,KAAK,CAAC;QACnC,iCAA4B,GAAY,KAAK,CAAC;QAE9C,kBAAa,GAAW,CAAC,CAAC,CAAC;QAC3B,uBAAkB,GAAW,EAAE,CAAC;QAkLhC,eAAU,GAAG;YACX,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,CAAC;SACnD,CAAC;;QAoIF,6BAAwB,GAAG;YACzB,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAC1C,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,OAAO,CACb,CAAC;SACH,CAAC;;QAEF,0BAAqB,GAAG;YACtB,IAAI,CAAC,cAAc,CAAC,qBAAqB,CACvC,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,OAAO,CACb,CAAC;SACH,CAAC;;QAGF,2BAAsB,GAAG,CAAC,gBAAgB;YACxC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CACxC,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,eAAe,EACpB,gBAAgB,CACjB,CAAC;SACH,CAAC;;QAEF,wBAAmB,GAAG,CAAC,gBAAgB;YACrC,IAAI,CAAC,cAAc,CAAC,mBAAmB,CACrC,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,eAAe,EACpB,gBAAgB,CACjB,CAAC;SACH,CAAC;;QAEF,YAAO,GAAG;YACR,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;SACtD,CAAC;QA1XA,gBAAgB,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC;KACjE;IAgCD,QAAQ;QACN,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YAClD,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;SACjE;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc;YAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;;YAEhE,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;QAE1E,IAAI,CAAC,wBAAwB,CAAC,cAAc,GAAG,KAAK,CAAC;QAErD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS;YACzB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC;QAEhE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;YACxB,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;QAEvD,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,EAAE;YACtE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;YAC5C,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;SAC7C;QACD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAErD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE;YAC9D,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAC5D,IAAI,CAAC,OAAO,CAAC,QAAQ,CACtB,CAAC;QAEJ,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SAChD;QACD,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI;YACvB,KAAK,SAAS,CAAC,KAAK;gBAClB,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,UAAU,CAAC,OAAO,CAAC;oBACjB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAClC,2JAA2J,EAC3J,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAChD;iBACF,CAAC,CACH,CAAC;gBACF,MAAM;YAER,KAAK,SAAS,CAAC,GAAG;gBAChB,MAAM,OAAO,GAAG,+EAA+E,CAAC;gBAChG,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,UAAU,CAAC,OAAO,CAAC;oBACjB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAClC,OAAO,EACP,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAC5C;iBACF,CAAC,CACH,CAAC;gBACF,MAAM;YACR,KAAK,SAAS,CAAC,GAAG;gBAChB,IAAI,CAAC,WAAW,GAAG,oBAAoB,CAAC;gBACxC,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;gBAE5C,MAAM;YAER,KAAK,SAAS,CAAC,MAAM;gBACnB,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,IAAI,CAAC,EAAE;oBAC7C,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,UAAU,CAAC,OAAO,CAAC;wBACjB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,UAAU,EAAE;4BAC/C,0BAA0B,EAAE,EAAE;yBAC/B,CAAC;qBACH,CAAC,CACH,CAAC;oBACF,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,UAAU,CAAC,OAAO,CAAC;wBACjB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAClC,2BAA2B,EAC3B,EAAE,2BAA2B,EAAE,EAAE,EAAE,CACpC;qBACF,CAAC,CACH,CAAC;iBACH;gBACD,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,EAAE;oBACpC,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAC9C,CAAC;oBACF,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAC5C,CAAC;iBACH;gBACD,MAAM;YACR,KAAK,SAAS,CAAC,QAAQ;gBACrB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,+BAA+B,EAAE;oBACjD,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,UAAU,CAAC,OAAO,CAAC;wBACjB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,EAAE;4BACzC,2BAA2B,EAAE,IAAI,CAAC,2BAA2B;yBAC9D,CAAC;wBACF,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE;4BAC5C,kCAAkC,EAChC,IAAI,CAAC,kCAAkC;yBAC1C,CAAC;wBACF,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE;4BAC5C,gCAAgC,EAC9B,IAAI,CAAC,gCAAgC;yBACxC,CAAC;wBACF,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,wBAAwB,EAAE;4BAC7D,kCAAkC,EAChC,IAAI,CAAC,kCAAkC;yBAC1C,CAAC;wBACF,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;qBACxB,CAAC,CACH,CAAC;iBACH;gBACD,MAAM;SACT;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;YACnC,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,EAAE;gBAChE,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,UAAU,CAAC,OAAO,CAAC;oBACjB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,cAAc,EAAE;wBACnD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;qBACxC,CAAC;iBACH,CAAC,CACH,CAAC;aACH;iBAAM,IACL,IAAI,CAAC,OAAO,CAAC,kBAAkB,IAAI,kBAAkB,CAAC,OAAO,EAC7D;gBACA,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,UAAU,CAAC,OAAO,CAAC;oBACjB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAClC,wDAAwD,EACxD,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAC9C;iBACF,CAAC,CACH,CAAC;aACH;SACF;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5C,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;YAChD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACvD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;aACpD;SACF;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,EAAE;YAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;SACzE;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,EAAE;YAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;YAExE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB;gBACrC,IAAI,CAAC,OAAO,CAAC,qBAAqB;oBAChC,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC;YAE9C,IAAI,CAAC,aAAa;gBAChB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC;SAC/D;QACD,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC5D,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACtE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;SACnC;QAED,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK;YAC5C,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC9B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;SAC9B,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;KACrD;IAED,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC1D;IAMD,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;KACvC;IAED,kBAAkB,CAAC,SAAS;QAC1B,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAC/C,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;SAC/B;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3F;IAED,YAAY,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;KAC/C;IAED,gBAAgB;QACd,IAAI,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CACtD,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAC9B,CAAC;QACF,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAClD,IACE,IAAI,CAAC,OAAO,CAAC,aAAa;YAC1B,IAAI,CAAC,OAAO,CAAC,SAAS;YACtB,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAC7B;YACA,IAAI,CAAC,cAAc,CAAC,iBAAiB,CACnC,aAAa,EACb,IAAI,CAAC,OAAO,CAAC,aAAa,EAC1B,IAAI,CAAC,OAAO,CAAC,SAAS,CACvB,CAAC;SACH;KACF;IAED,gBAAgB,CAAC,YAAY;QAC3B,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;KACpD;IAED,uBAAuB;QACrB,IAAI,CAAC,kBAAkB;YACrB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;QAC7D,IAAI,CAAC,gBAAgB;YACnB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;QAC7D,IAAI,CAAC,kCAAkC;YACrC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAClC,oCAAoC,CACrC,CAAC;QACJ,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CACrE,6BAA6B,CAC9B,CAAC;QACF,IAAI,CAAC,gCAAgC;YACnC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,kCAAkC,CAAC,CAAC;QAC3E,IAAI,CAAC,kCAAkC;YACrC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAClC,oCAAoC,CACrC,CAAC;QACJ,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CACnE,2BAA2B,CAC5B,CAAC;QACF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAC1D,4CAA4C,CAC7C,CAAC;QACF,IAAI,CAAC,iBAAiB;YACpB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;KAC7D;IAED,YAAY;QACV,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM;YACvC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE;gBAClC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,0BAA0B,EAAE,EAAE,EAAE,CAAC,CAAC;gBACtE,OAAO;aACR;QAEH,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,EAAE;YACvC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;YACxB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;SACpB;aAAM;YACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;YACtE,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE;gBAC3B,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;oBACnD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;oBAC3C,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC;wBAChC,yBAAyB,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;qBACrD,CAAC,CAAC;oBACH,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;oBACxC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;iBACjC;qBAAM;oBACL,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC;iBACtC;aACF;;;YAGD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,EAAE;gBACrD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC9D,IAAI,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,EAAE;oBAC/C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;oBAC9B,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;oBACzC,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS;wBAClD,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC;;wBAChC,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;iBAC1C;qBAAM;oBACL,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;oBAC/B,IAAI,CAAC,4BAA4B,GAAG,KAAK,CAAC;iBAC3C;gBACD,IAAI,GAAG,GAAW,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;gBACzC,IAAI,OAAO,GAAW,IAAI,CAAC,iBAAiB,CAAC;gBAE7C,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CACjD,uBAAuB,CACxB,CAAC;gBACF,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,GAAG,QAAQ,GAAG,GAAG,CAAC,CAAC;aACtD;SACF;QAED,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;KACnD;IAED,OAAO,CAAC,OAAgB;QACtB,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;;QAG/B,IAAI,OAAO,EAAE;YACX,IAAI,IAAI,CAAC,4BAA4B;;gBAEnC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;SACjC;;YACI,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;KACrC;IAuCD,UAAU;QACR,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;KACjD;;AAxYM,uCAAsB,GAAG,IAAI,CAAC;;YALtC,SAAS,SAAC;gBACT,QAAQ,EAAE,cAAc;gBACxB,4gKAAuC;aACxC;;;YAZQ,cAAc;YALrB,gBAAgB,uBAuBb,QAAQ;YAtBX,kBAAkB;YAOlB,cAAc;YADd,wBAAwB;YAGjB,cAAc;;;oBAqBpB,KAAK;sBACL,KAAK;uBACL,MAAM;qBACN,MAAM;;;MC/CI,kBAAkB;IAA/B;QAEI,SAAI,GAAS,IAAI,CAAC;KAKrB;;;MCUY,wBAAwB;IAInC,YAAoB,aAA4B,EACtC,MAAc,EAAU,cAA8B,EAAsB,gBAAkC,EAC/G,0BAA8C,EAAU,cAA8B,EAAU,SAA+B,EAC9H,wBAAkD,EAAU,cAA8B;QAHhF,kBAAa,GAAb,aAAa,CAAe;QACtC,WAAM,GAAN,MAAM,CAAQ;QAAU,mBAAc,GAAd,cAAc,CAAgB;QAAsB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAC/G,+BAA0B,GAA1B,0BAA0B,CAAoB;QAAU,mBAAc,GAAd,cAAc,CAAgB;QAAU,cAAS,GAAT,SAAS,CAAsB;QAC9H,6BAAwB,GAAxB,wBAAwB,CAA0B;QAAU,mBAAc,GAAd,cAAc,CAAgB;QAO1F,aAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAGxC,yBAAoB,GAAuB,IAAI,kBAAkB,EAAE,CAAC;QACpE,oBAAe,GAAW,EAAE,CAAC;QAC7B,2BAAsB,GAAG,IAAI,YAAY,EAAE,CAAC;QAC5C,0BAAqB,GAAG,IAAI,YAAY,EAAE,CAAC;QAC3C,uBAAkB,GAAG,IAAI,YAAY,EAAE,CAAC;QAKxC,qBAAgB,GAAY,KAAK,CAAC;QAClC,oBAAe,GAAG,EAAE,CAAC;QACrB,yBAAoB,GAAG,EAAE,CAAC;QAoO1B,eAAU,GAAG;YACX,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,CAAC;SACnD,CAAA;;QA8DD,6BAAwB,GAAG;YACzB,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;SAClH,CAAA;;QAGD,0BAAqB,GAAG;YACtB,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;SAC/G,CAAA;;QAGD,2BAAsB,GAAG,CAAC,gBAAgB;YACxC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;SACpH,CAAA;;QAED,wBAAmB,GAAG,CAAC,gBAAgB;YACrC,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;SACjH,CAAA;;QAGD,YAAO,GAAG;YACR,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;SAC7D,CAAA;QA7UC,wBAAwB,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACxE,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,WAAW,IAAI,SAAS,GAAG,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAA;KAE1G;IAmBD,QAAQ;QACN,IAAI,CAAC,wBAAwB,CAAC,cAAc,GAAG,KAAK,CAAA;QAEpD,IAAI,CAAC,oBAAoB,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACrD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK;YAC1C,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC;YAClC,CAAC;YACD,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI;gBAC9B,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC;YACtD,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI;gBAC9B,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC;YACtD,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,GAAG,IAAI,CAAA;YAClD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,GAAGC,aAAW,CAAC,iBAAiB,aAAa,IAAI,CAAC,eAAe,EAAE,CAAC;YAC9G,IAAI,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;YAC1E,IAAI,SAAS;gBACX,SAAS,CAAC,MAAM,EAAE,CAAC;YACrB,IAAI,QAAQ,GAAG,QAAQ,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC;YAChE,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC;gBACxB,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YAEvB,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,eAAe,EAAE,CAAC;YAChE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAA;YAIpB,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAAC;;gBAE7C,MAAM,EAAE,GAAGA,aAAW,CAAC,iBAAiB,aAAa,IAAI,CAAC,eAAe,EAAE;gBAC3E,SAAS,EAAE,CAAC,QAAQ,CAAC;aACtB,EAAE,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;YACpH,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;gBACjC,IAAI,YAAY,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE;oBAC1F,KAAK,EAAE,CAAC,SAAS,CAAC;iBAEnB,CAAC,CAAC;gBACH,YAAY,CAAC,WAAW,CAAC,eAAe;;0BAGtC;oBAEE,IAAI,CAAC,MAAM,CAAC,GAAG;;8BAGb;;;wBAGE,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;;wBAEtC,MAAM,aAAa,GAAG;4BACpB,IAAI,EAAE,KAAK,CAAC,EAAE;4BACd,IAAI,EAAE,KAAK,CAAC,IAAI;4BAChB,GAAG,EAAE,KAAK,CAAC,GAAG;4BACd,OAAO,EAAE,KAAK,CAAC,QAAQ;4BACvB,cAAc,EAAE,KAAK,CAAC,iBAAiB;4BACvC,IAAI,EAAE,KAAK,CAAC,IAAI;4BAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;4BACxB,QAAQ,EAAE,EAAE;4BACZ,KAAK,EAAE,EAAE;4BACT,OAAO,EAAE,EAAE;4BACX,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE;yBAC7C,CAAC;wBAEF,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE;4BAC7C,aAAa,CAAC,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;4BACnE,aAAa,CAAC,WAAW,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;yBACrE;wBACD,KAAK,CAAC,kBAAkB,CAAC,OAAO;;;;;;mCAI9B,KAAK;4BACH,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE;gCAC7C,aAAa,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC;6BAClD;4BACD,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE;gCACrC,aAAa,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC;6BAC/C;4BACD,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE;gCAC3C,aAAa,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;6BACxD;4BACD,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE;gCAC3C,aAAa,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC;6BAChD;4BACD,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;gCACxC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC;gCACjD,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC;6BACpD;4BACD,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,6BAA6B,CAAC,GAAG,CAAC,CAAC,EAAE;gCAC3D,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC;gCAC9C,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC;6BACjD;4BACD,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE;gCACvC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC;gCAChD,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC;6BACnD;4BACD,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,6BAA6B,CAAC,GAAG,CAAC,CAAC,EAAE;gCAC3D,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC;6BACpD;yBACF,EAAE,CAAC;wBAEN,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;wBAC/C,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAA;wBACvC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE;;4BAE9E,OAAO;yBACR;6BACI;;;yBAGJ;;wBAED,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBACxC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAA;wBAEhC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;4BAC3B,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE;4BACvC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE;yBACzC,CAAC,CAAC;qBACJ,EAAE,CAAC;iBACP,EAAE,CAAC;aACP,CAAC,CAAC;SAEJ,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI;YAC9B,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC;QACtD,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI;YAC9B,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC;QACtD,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,GAAG,IAAI,CAAA;QAClD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,GAAGA,aAAW,CAAC,iBAAiB,aAAa,IAAI,CAAC,eAAe,EAAE,CAAC;QAC9G,IAAI,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;QAC5E,IAAI,WAAW;YACb,WAAW,CAAC,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAAC;YAC7C,MAAM,EAAE,GAAGA,aAAW,CAAC,iBAAiB,aAAa,IAAI,CAAC,eAAe,EAAE;YAC3E,SAAS,EAAE,CAAC,QAAQ,CAAC;SACtB,EAAE,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QACpH,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;QAE9B,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;YAC7B,IAAI,YAAY,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE;gBAC1F,KAAK,EAAE,CAAC,SAAS,CAAC;aAEnB,CAAC,CAAC;SAEJ,CAAC,CAAA;QACF,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEzE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;YACxB,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;QAEvD,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SAChD;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE;YAC9D,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAExF,IAAI,CAAC,0BAA0B,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACpE,IAAI,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC9E,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,CAAC;SAC3C;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE;YAC9B,IAAI,aAAa,GAAG;gBAElB,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa;gBACrC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO;gBACnC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI;gBACvC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI;gBAC7B,QAAQ,EAAE,EAAE;gBACZ,KAAK,EAAE,EAAE;gBACT,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE;aAC7C,CAAC;YAEF,aAAa,CAAC,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;YACjE,aAAa,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;YACnE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC/C,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAA;YACvC,IAAI,CAAC,KAAK,GAAG;gBAEX,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa;gBACrC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO;gBACpC,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI;gBAC1C,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI;aAC9B,CAAC;YACF,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAErC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;gBAC3B,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ;gBACrC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS;aACxC,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;YAC1E,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SAC9D;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5C,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAA;YAC/C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACvD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;aACpD;SAEF;QAGD,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK;YACvD,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAA;YAC7B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;SAC7B,CAAC,CAAA;KAGH;IACD,eAAe;QACb,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,EAAE;YACtC,IAAI,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACzD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACtE,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;aACtG;SACF;QACD,IAAI,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAQ,CAAA;QACnE,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;KACpD;IAMD,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAA;KACtC;IAED,kBAAkB,CAAC,SAAS;QAC1B,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAC/C,IAAI,CAAC,eAAe,EAAE,CAAA;YACtB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAA;SAC9B;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3F;IAED,oBAAoB,CAAC,MAAM;QAGzB,IAAI,CAAC,oBAAoB,IAAI,IAAI,kBAAkB,EAAE,CAAC;QACtD,IAAI,CAAC,oBAAoB,CAAC,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAC1D,IAAI,CAAC,oBAAoB,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC;QACpD,IAAI,CAAC,oBAAoB,CAAC,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC;KACtD;IACD,gBAAgB,CAAC,QAAQ;QAEvB,IAAI,CAAC,oBAAoB,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACvD,IAAI,CAAC,oBAAoB,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACzD,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE/C,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACpE,IAAI,aAAa,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC;QAC1D,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE;YACjG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;SACzG;;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,GAAC,IAAI,CAAC,oBAAoB,CAAC;KAC9C;IAED,mBAAmB,CAAC,MAAM;QACxB,IAAI,MAAM,CAAC,IAAI,EAAE;YACf,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE;gBAC7B,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACjD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACxD,IAAI,CAAC,OAAO,CAAC,KAAK,GAAC,MAAM,CAAC;aAC3B;YACD,OAAO;SACR;QACD,IAAI,CAAC,oBAAoB,IAAI,IAAI,kBAAkB,EAAE,CAAC;QACtD,IAAI,CAAC,oBAAoB,CAAC,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC;QACvD,IAAI,CAAC,oBAAoB,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QACnD,IAAI,CAAC,oBAAoB,CAAC,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC;QACrD,IAAI,CAAC,oBAAoB,CAAC,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;QACjE,IAAI,CAAC,oBAAoB,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC;QACnE,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;QAC1E,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAA;;QAEzD,IAAI,CAAC,OAAO,CAAC,KAAK,GAAC,IAAI,CAAC,oBAAoB,CAAC;KAC9C;;AAzTM,+CAAsB,GAAG,IAAI,CAAC;;YARtC,SAAS,SAAC;gBACT,QAAQ,EAAE,sBAAsB;gBAChC,4oEAA+C;aAChD;;;YARQ,aAAa;YANuB,MAAM;YAE1C,cAAc;YADuC,gBAAgB,uBAoBT,QAAQ;YApBG,kBAAkB;YAM5B,cAAc;YAA3E,oBAAoB;YAAE,wBAAwB;YAC9C,cAAc;;;oBAoBpB,KAAK;sBACL,KAAK;uBACL,MAAM;+BAQN,SAAS,SAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;;ICtC5B;AAAZ,WAAY,YAAY;IACpB,iDAAS,CAAA;IACT,mDAAU,CAAA;IACV,iDAAS,CAAA;IACT,mDAAU,CAAA;AACZ,CAAC,EALS,YAAY,KAAZ,YAAY;;MCuBX,iBAAiB;;IAK5B,YAAoB,YAAoC,EAAU,cAA8B,EAAsB,gBAAkC,EAAS,gBAAoC,EAAS,cAA6B,EAAS,SAA+B,EAAS,wBAAiD;QAAzT,iBAAY,GAAZ,YAAY,CAAwB;QAAU,mBAAc,GAAd,cAAc,CAAgB;QAAsB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAAS,qBAAgB,GAAhB,gBAAgB,CAAoB;QAAS,mBAAc,GAAd,cAAc,CAAe;QAAS,cAAS,GAAT,SAAS,CAAsB;QAAS,6BAAwB,GAAxB,wBAAwB,CAAyB;QAU7U,oBAAe,GAAG,IAAI,CAAC;QAEvB,kBAAa,GAAoB,EAAE,CAAC;QACpC,oBAAe,GAAG,CAAC,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;QACjF,qBAAgB,GAAG,IAAI,CAAC;QACxB,mBAAc,GAAsB,EAAE,CAAC;QACvC,gBAAW,GAAG,EAAE,CAAA;QAChB,kBAAa,GAAG,EAAE,CAAA;QAClB,YAAO,GAAG,EAAE,CAAC;QACb,oBAAe,GAAG,EAAE,CAAA;QAgHpB,eAAU,GAAG;YACX,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,CAAC;SACnD,CAAA;QApIC,iBAAiB,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC;KAClE;IAkBK,QAAQ;;YACZ,QAAQ,MAAM,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE;gBACpD,KAAK,IAAI;oBACP,IAAI,CAAC,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAA;oBACzB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;oBAC3B,MAAM;gBACR,KAAK,IAAI;oBACP,IAAI,CAAC,OAAO,GAAG,CAAC,UAAU,CAAC,CAAA;oBAC3B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;oBAC3B,MAAM;gBAER;oBACE,MAAM;aACT;YACD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAsB;gBAC3D,QAAQ,KAAK,CAAC,IAAI;oBAChB,KAAK,IAAI;wBACP,IAAI,CAAC,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAA;wBACzB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;wBAC3B,MAAM;oBACR,KAAK,IAAI;wBACP,IAAI,CAAC,OAAO,GAAG,CAAC,UAAU,CAAC,CAAA;wBAC3B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;wBAC3B,MAAM;oBAER;wBACE,MAAM;iBACT;aAEF,CAAC,CAAC;YACH,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAA;YAC5C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAA;YAC1D,QAAQ,IAAI,CAAC,OAAO,CAAC,WAAW;gBAC9B,KAAK,YAAY,CAAC,KAAK;oBACrB,IAAI,CAAC,WAAW,GAAG,cAAc,CAAA;oBACjC,MAAM;gBACR,KAAK,YAAY,CAAC,MAAM;oBACtB,IAAI,CAAC,WAAW,GAAG,cAAc,CAAA;oBACjC,MAAM;gBACR,KAAK,YAAY,CAAC,KAAK;oBACrB,IAAI,CAAC,WAAW,GAAG,aAAa,CAAA;oBAChC,MAAM;gBACR;oBACE,MAAM;aACT;YACD,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;gBAC7E,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBACtE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;oBAClD,QAAQ,OAAO;wBACb,KAAK,YAAY,CAAC,MAAM;4BACtB,IAAI,CAAC,aAAa,IAAI,WAAW,CAAA;4BACjC,MAAM;wBACR,KAAK,YAAY,CAAC,KAAK;4BACrB,IAAI,CAAC,aAAa,IAAI,cAAc,CAAA;4BACpC,MAAM;wBACR,KAAK,YAAY,CAAC,MAAM;4BACtB,IAAI,CAAC,aAAa,IAAI,eAAe,CAAA;4BACrC,MAAM;wBACR,KAAK,YAAY,CAAC,KAAK;4BACrB,IAAI,CAAC,aAAa,IAAI,eAAe,CAAA;4BACrC,MAAM;wBAGR;4BACE,MAAM;qBACT;iBACF;YACH,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9D,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAGlE,IAAI,CAAC,eAAe,GAAG;gBACrB,OAAO,EAAE;oBACP,aAAa;oBACbC,cAAc;oBACd,UAAU;oBACV,iBAAiB;iBAClB;gBACD,aAAa,EAAE;oBACb,IAAI,EAAE,iBAAiB;oBACvB,MAAM,EAAE,OAAO;oBACf,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;iBACtE;gBACD,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,MAAM,EAAE,IAAI,CAAC,eAAe;gBAC5B,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC7C,aAAa,EAAE,IAAI,CAAC,cAAc;gBAClC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;gBACrC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,qBAAqB;gBAC5C,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;gBACpC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe;;gBAExC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;gBACvC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC1C,UAAU,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;aAOjD,CAAC;SAEH;KAAA;IAGD,eAAe;KAGd;IAMD,kBAAkB,CAAC,UAAiB;KACnC;IAGD,kBAAkB,CAAC,GAAG;QAEpB,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,IAAI,IAAI,EAAE;YAC3C,IAAI,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;YACvD,gBAAgB,CAAC,GAAG,CAAC,CAAC;SACvB;KACF;IAED,oBAAoB,CAAC,GAAG;QACtB,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,IAAI,IAAI,EAAE;YAC7C,IAAI,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;YAC3D,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC/B;KAEF;;AA3JM,wCAAsB,GAAG,IAAI,CAAC;;YARtC,SAAS,SAAC;gBACT,QAAQ,EAAE,eAAe;gBACzB,gzCAAwC;;aAEzC;;;YAdQ,sBAAsB;YACtB,cAAc;YAFuC,gBAAgB,uBAqBuB,QAAQ;YArB7B,kBAAkB;YASzC,cAAc;YAA9D,oBAAoB;YAAE,wBAAwB;;;oBAepD,KAAK;sBACL,KAAK;gCAEL,SAAS,SAAC,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;;ICnC9B;AAAZ,WAAY,gBAAgB;IAC1B,uEAAY,CAAA;IACZ,2DAAM,CAAA;AACR,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB;;MCiBf,aAAa;IAMxB,YAAoB,cAA8B,EAAU,cAA8B,EAAU,wBAAkD,EAAU,YAAsB,EAAU,cAA8B,EAAU,MAAc;QAAlO,mBAAc,GAAd,cAAc,CAAgB;QAAU,mBAAc,GAAd,cAAc,CAAgB;QAAU,6BAAwB,GAAxB,wBAAwB,CAA0B;QAAU,iBAAY,GAAZ,YAAY,CAAU;QAAU,mBAAc,GAAd,cAAc,CAAgB;QAAU,WAAM,GAAN,MAAM,CAAQ;QAHtP,aAAQ,GAAY,IAAI,CAAC;QACf,aAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;KAIvC;IAGD,QAAQ;QACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;KACrC;IACD,eAAe;QACb,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE;YAC/C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAE1B,CAAC,CAAC;KACJ;IAED,MAAM;QACJ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAA;QACzC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE;YAClC,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,OAAM;SACP;aACI;YAEH,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAW,CAAA;YAC1D,IAAI,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAoB,CAAA;YACrG,gBAAgB,CAAC,SAAS,CACxB,CAAC,MAAM;gBACL,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;;oBAErC,IAAI,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;oBAC1E,IAAI,KAAK,EAAE;wBACT,IAAI,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,wBAAwB,CAAQ,CAAA;wBACtE,WAAW,CAAC,KAAK,EAAE,CAAC;qBACrB;iBACF;gBACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,0BAA0B;oBAC1C,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAA;gBAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB;oBAC/B,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;gBACvC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc;oBAC9B,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;gBACpC,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;oBAChC,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;oBAC1C,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,YAAY,GAAG,MAAM,CAAC,kBAAkB,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;iBACtH;aACF,EAAE,CAAC,KAAK;gBACP,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc;oBAC7B,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;;oBAElC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;aAC1B,CAAC,CAAA;SAEL;KAEF;IAEO,WAAW,CAAC,GAAsB;QACxC,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,IAAI,GAAG,CAAC,KAAK,YAAY,UAAU,EAAE;YACnC,YAAY,GAAG,sBAAsB,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACzD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB;gBACxC,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAA;SAC3C;aACI;YACH,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,mBAAmB,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;SACxH;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc;YAC9B,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;KACrC;IAED,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;KACnD;IACD,YAAY,CAAC,MAAM;QACjB,IAAI,WAAW,GAAG,gEAAgE,CAAC;QACnF,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/B,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;SAC9E;QACD,OAAO,MAAM,CAAC;KACf;;;YA3FF,SAAS,SAAC;;gBAET,QAAQ,EAAE,WAAW;gBACrB,2PAAoC;aACrC;;;YAPQ,cAAc;YALiC,cAAc;YAA7D,wBAAwB;YADR,QAAQ;YAAxB,cAAc;YAOd,MAAM;;;uBAWZ,MAAM;sBAKN,KAAK;;;IC1BI;AAAZ,WAAY,qBAAqB;IAC/B,qEAAM,CAAA;IACN,uEAAO,CAAA;IACP,uEAAO,CAAA;AACT,CAAC,EAJW,qBAAqB,KAArB,qBAAqB;;MCepB,0BAA0B;IAWrC,YAAmB,cAA8B,EAAU,YAAsB,EAAU,MAAc;QAAtF,mBAAc,GAAd,cAAc,CAAgB;QAAU,iBAAY,GAAZ,YAAY,CAAU;QAAU,WAAM,GAAN,MAAM,CAAQ;QATzG,gBAAW,GAA0B,qBAAqB,CAAC,MAAM,CAAC;QAClE,iBAAY,GAA0B,qBAAqB,CAAC,OAAO,CAAC;QACpE,iBAAY,GAA0B,qBAAqB,CAAC,OAAO,CAAC;KAO0C;IAE9G,QAAQ;KACP;;IAGD,SAAS;QACP,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAA;;QAElC,IAAI,CAAC,aAAa,EAAE,CAAC;;QAErB,QAAQ,IAAI,CAAC,OAAO,CAAC,qBAAqB;YACxC,KAAK,IAAI,CAAC,YAAY,EAAE;gBACtB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAA;gBACrB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAA;gBACzB,IAAI,CAAC,QAAQ,GAAG,6BAA6B,CAAA;gBAC7C,MAAM;aACP;YACD,KAAK,IAAI,CAAC,YAAY,EAAE;gBACtB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAA;gBACrB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAA;gBACzB,IAAI,CAAC,QAAQ,GAAG,+BAA+B,CAAA;gBAC/C,MAAM;aAEP;YACD,KAAK,IAAI,CAAC,WAAW,EAAE;gBACrB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAA;gBACnB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAA;gBACzB,IAAI,CAAC,QAAQ,GAAG,6BAA6B,CAAA;gBAC7C,MAAM;aAEP;SACF;QACD,IAAI,CAAC,IAAI,CAAC;YACR,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;YAC5E,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB;YACnC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,QAAQ;YACxB,kBAAkB,EAAE,IAAI,CAAC,QAAQ;YACjC,iBAAiB,EAAE,SAAS;YAC5B,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,aAAa,CAAC;YACrE,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB;YAChD,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB;YAC/C,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe;YAC7C,iBAAiB,EAAE,KAAK;SACzB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM;YACb,IAAI,MAAM,CAAC,WAAW,EAAE;gBACtB,IAAI,CAAC,MAAM,EAAE,CAAA;aACd;SACF,CAAC,CAAA;QACF,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAA;KAClC;IACO,aAAa;QACnB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB;YAClC,IAAI,CAAC,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;QAC/F,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB;YAChC,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;QAC1F,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB;YAChC,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACjF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,0BAA0B;YAC1C,IAAI,CAAC,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;KACzG;;IAED,MAAM;QACJ,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAElD,IAAI,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAoB,CAAA;QACrG,gBAAgB,CAAC,SAAS,CACxB,CAAC,MAAM;YACL,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB;gBACnC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;YAEjC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,0BAA0B,EAAE;gBAC5C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,0BAA0B;oBAC1C,IAAI,CAAC,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;gBACxG,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAA;aAClF;YACD,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB;gBAC/B,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;YACvC,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;gBAChC,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;gBAC1C,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,YAAY,GAAG,MAAM,CAAC,kBAAkB,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;aACtH;YACD,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;SACnC,EAAE,CAAC,KAAK;YACP,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc;gBAC7B,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;;gBAElC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;SAC1B,CAAC,CAAA;KACL;IAEO,WAAW,CAAC,GAAsB;QACxC,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,IAAI,GAAG,CAAC,KAAK,YAAY,UAAU,EAAE;YACnC,YAAY,GAAG,sBAAsB,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACzD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB;gBACxC,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAA;SAC3C;aAEI,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;YAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAA;SAC/C;aACI,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;YAC1B,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,IAAI,IAAI,GAAG,qDAAqD,GAAG,+CAA+C,CAAC;YAC1K,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB;gBACxC,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAA;SACvD;aACI;YACH,YAAY,GAAG,yBAAyB,GAAG,CAAC,MAAM,uBAAuB,GAAG,CAAC,OAAO,EAAE,CAAC;YACvF,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB;gBACxC,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAA;SAC3C;QACD,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;KACnC;;;YAlIF,SAAS,SAAC;gBACT,YAA+C;gBAC/C,QAAQ,EAAE,wBAAwB;aACnC;;;YAVQ,cAAc;YADd,QAAQ;YAHR,MAAM;;;sBAgBZ,KAAK;gCAIL,SAAS,SAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;;MCftC,uBAAuB;IAGlC,YAAmB,QAA0B;QAA1B,aAAQ,GAAR,QAAQ,CAAkB;KAAK;;;YANnD,SAAS,SAAC;gBACT,QAAQ,EAAE,mBAAmB;aAC9B;;;YAJ0B,WAAW;;;mBAMnC,KAAK;;;MCIK,iBAAiB;IAa5B;QAPA,iBAAY,GAA4B,EAAE,CAAC;QAC3C,UAAK,GAAa,EAAE,CAAA;QACpB,kBAAa,GAAU,EAAE,CAAC;QAG1B,oBAAe,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;KAE5C;IAEjB,QAAQ;QACN,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YACzC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;YAChD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACtE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;aAC5B;SACF;;YAEC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,EAAE,EAAE;gBAClE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACxB;QAEH,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,GAAG;YAC5C,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,SAAS,GAAG,EAAE,CAAC;YACnB,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;gBAC7C,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE;oBAC1E,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBAClC,IAAI,IAAI,GAAG;wBACT,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;qBAC1F,CAAA;oBACD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBACnB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;wBACrC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;iBACjC;aACF;YACD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACrD,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC7B,IAAI,SAAS,GAAG,EAAE,CAAA;gBAClB,IAAI,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;gBACzD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBAC5D,MAAM,eAAe,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;oBAChD,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE;wBACjC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,EAAE;4BAC9D,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;4BACrC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;gCACzB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;oCACtD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;oCAC3B,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;iCACvB;6BACF;yBACF;qBACF;iBACF;gBACD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;aACvB;YACD,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,MAAM,CAAC;SACrC,CAAC,CAAA;KAEH;IAED,UAAU,CAAC,KAAK;QACd,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU;YAC/E,OAAO;QACT,IAAI,eAAe,GAAU,EAAE,CAAA;QAC/B,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QACjF,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;YAC7C,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE;gBAC1E,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBACxD,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpC,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBAClC,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,OAAO,GAAG,KAAK,EAAE,EAAE;wBAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;wBACjD,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,OAAO,EAAE,CAAC,CAAA;qBACzC;iBACF;aACF;SACF;QACD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAC3D,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;YACvC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;gBACzB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;oBACtD,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;iBACtC;aACF;SACF;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;KAClE;IAGD,OAAO;QACL,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KACpC;IAED,eAAe;QACb,IAAI,YAAY,GAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAW,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;QACzF,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAChC,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAA;QACjD,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;KAE1C;IAED,eAAe,CAAC,CAAS;QACvB,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC,CAAC;KAChC;;;YArHF,SAAS,SAAC;gBACT,QAAQ,EAAE,eAAe;gBACzB,s1CAAwC;aACzC;;;;oBAEE,KAAK;sBACL,KAAK;8BACL,KAAK;yBACL,YAAY,SAAC,uBAAuB;qBACpC,SAAS,SAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;;ICf5B;AAAZ,WAAY,cAAc;IACxB,qDAAS,CAAA;IACT,qEAAiB,CAAA;IACjB,2DAAY,CAAA;AACd,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB;IACW;AAAZ,WAAY,QAAQ;IAClB,yDAA6C,CAAA;IAC7C,0DAA8C,CAAA;IAC9C,2DAA+C,CAAA;IAC/C,yDAA6C,CAAA;IAC7C,2DAA+C,CAAA;IAC/C,kEAAsD,CAAA;IACtD,yDAA6C,CAAA;IAC7C,0DAA8C,CAAA;IAC9C,yDAA6C,CAAA;IAC7C,8DAAkD,CAAA;IAClD,4DAAgD,CAAA;IAChD,yDAA6C,CAAA;IAC7C,6DAAiD,CAAA;IACjD,yDAA6C,CAAA;IAC7C,6DAAiD,CAAA;IACjD,iEAAqD,CAAA;IACrD,kEAAsD,CAAA;IACtD,yDAA6C,CAAA;IAC7C,8DAAkD,CAAA;IAClD,+DAAmD,CAAA;IACnD,kEAAsD,CAAA;IACtD,4DAAgD,CAAA;IAChD,gEAAoD,CAAA;AACtD,CAAC,EAxBW,QAAQ,KAAR,QAAQ;;MCFP,kBAAkB;IAA/B;;QA2BE,eAAU,GAAY,KAAK,CAAA;;QAE3B,aAAQ,GAAkB,IAAI,CAAC;;QAI/B,qBAAgB,GAAuB,EAAE,CAAA;;QAMzC,eAAU,GAAY,KAAK,CAAC;KAC7B;;;MCrCY,iBAAkB,SAAQ,kBAAkB;IAAzD;;;QAYE,mBAAc,GAAW,CAAC,CAAA;;QAE1B,gBAAW,GAAY,IAAI,CAAA;;QAE3B,eAAU,GAAe,UAAU,CAAC,QAAQ,CAAA;;QAE5C,cAAS,GAAc,SAAS,CAAC,KAAK,CAAA;;QAEtC,eAAU,GAAe,UAAU,CAAC,MAAM,CAAA;QAC1C,mBAAc,GAAmB,IAAI,CAAA;;QAErC,8BAAyB,GAAW,IAAI,CAAC;KAE1C;;;IC/BW;AAAZ,WAAY,cAAc;IACtB,yDAAW,CAAA;IACX,uDAAU,CAAA;AACZ,CAAC,EAHS,cAAc,KAAd,cAAc;;MCOb,eAAgB,SAAQ,kBAAkB;IAAvD;;;QAOE,2BAAsB,GAAY,KAAK,CAAC;;QAgBxC,mBAAc,GAAW,KAAK,CAAA;;QAE9B,qBAAgB,GAAW,OAAO,CAAA;QAClC,mBAAc,GAAmB,cAAc,CAAC,OAAO,CAAA;QACvD,iBAAY,GAAW,EAAE,CAAA;KAI1B;;;MCnCY,iBAAkB,SAAQ,kBAAkB;IAAzD;;;QAIE,mBAAc,GAAY,KAAK,CAAA;;QAE/B,eAAU,GAAY,KAAK,CAAA;KAW5B;;;MCXY,iBAAkB,SAAQ,kBAAkB;IAAzD;;;QAQE,mBAAc,GAAiB,cAAc,CAAC,OAAO,CAAA;;QAErD,WAAM,GAAS,CAAC,CAAA;KAejB;;;IClCW;AAAZ,WAAY,SAAS;IAEjB,0DAA2C,CAAA;IAC3C,8BAAe,CAAA;IACf,+BAAgB,CAAA;IAChB,gCAAiB,CAAA;IACjB,kCAAmB,CAAA;IACnB,sBAAO,CAAA;AACX,CAAC,EARW,SAAS,KAAT,SAAS;;MCIR,kBAAmB,SAAQ,kBAAkB;IAA1D;;;QAKE,eAAU,GAAY,KAAK,CAAA;;QAE3B,kBAAa,GAAY,IAAI,CAAA;;QAU7B,2BAAsB,GAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;KAG7D;;;MCrBY,sBAAuB,SAAQ,kBAAkB;;;MCCjD,YAAa,SAAQ,kBAAkB;IAApD;;;QAeE,uBAAkB,GAAc,EAAE,CAAA;;QAElC,kBAAa,GAAc,EAAE,CAAA;QAC7B,mBAAc,GAAmB,cAAc,CAAC,OAAO,CAAA;KAExD;;;MCxBY,WAAW;;;MCIX,eAAgB,SAAQ,kBAAkB;;;ICJ3C;AAAZ,WAAY,YAAY;IACpB,+CAAQ,CAAA;IACR,iDAAS,CAAA;AACX,CAAC,EAHS,YAAY,KAAZ,YAAY;;MCOX,cAAe,SAAQ,kBAAkB;IAAtD;;;QAUE,gBAAW,GAAgB,IAAI,WAAW,EAAE,CAAA;;QAE5C,iBAAY,GAAW,IAAI,CAAA;;QAQ3B,mBAAc,GAAmB,IAAI,CAAA;;QAErC,uBAAkB,GAAuB,IAAI,CAAA;;QAE7C,SAAI,GAAc,SAAS,CAAC,IAAI,CAAC;QAKjC,iBAAY,GAAiB,YAAY,CAAC,IAAI,CAAA;QAC9C,aAAQ,GAAY,KAAK,CAAC;QAC1B,oBAAe,GAAU,EAAE,CAAC;KAI7B;;;MCvCY,kBAAmB,SAAQ,kBAAkB;IAA1D;;QAME,mBAAc,GAAmB,cAAc,CAAC,OAAO,CAAA;KAExD;;;MCLc,sBAAsB;IAEjC,YAAqB,wBAAkD;QAAlD,6BAAwB,GAAxB,wBAAwB,CAA0B;KACtE;IAED,sBAAsB,CAAI,gBAAkC,EAAE,SAAc,EAAE,KAAgB,EAAE,OAAY,EAAE,OAAe,CAAC;QAC5H,IAAI,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAI,SAAS,CAAC,CAAA;QACjF,MAAM,YAAY,GAAG,gBAAgB,CAAC,eAAe,CAAI,OAAO,CAAQ,CAAC;QACzE,YAAY,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;QACpC,YAAY,CAAC,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;QACxC,IAAI,IAAI,GAAG,CAAC,EAAE;YACZ,IAAI,WAAW,GAAI,YAAY,CAAC,QAAiC,CAAC,SAAS,CAAC,CAAC,CAAgB,CAAC;;YAE9F,IAAI,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC;YACpC,IAAI,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC5C,OAAO,CAAC,SAAS,GAAG,UAAU,IAAI,EAAE,CAAA;;YAEpC,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;;YAE1C,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;SAClC;KAGF;;;YAxBF,UAAU;;;YALO,wBAAwB;;;MCY/B,oBAAoB;;IAK/B,YAAoB,cAA8B,EAAsB,gBAAkC,EACjG,sBAA0C,EAAS,eAAmC,EACtF,cAA8B,EAAU,wBAAkD,EACzF,cAA8B;QAHpB,mBAAc,GAAd,cAAc,CAAgB;QAAsB,qBAAgB,GAAhB,gBAAgB,CAAkB;QACjG,2BAAsB,GAAtB,sBAAsB,CAAoB;QAAS,oBAAe,GAAf,eAAe,CAAoB;QACtF,mBAAc,GAAd,cAAc,CAAgB;QAAU,6BAAwB,GAAxB,wBAAwB,CAA0B;QACzF,mBAAc,GAAd,cAAc,CAAgB;QAK9B,aAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAExC,eAAU,GAAY,KAAK,CAAC;QAC5B,qBAAgB,GAAY,KAAK,CAAC;QAPhC,oBAAoB,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC;KACrE;IASD,QAAQ;QACN,IAAG,IAAI,CAAC,OAAO,CAAC,cAAc;YAC9B,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,OAAO,CAAC,cAAc,IAAE,CAAC,GAAC,KAAK,GAAC,KAAK,CAAC;;YAExD,IAAI,CAAC,OAAO,GAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,IAAE,IAAI,GAAC,KAAK,GAAC,KAAK,CAAC;QAChE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrE,IAAI,eAAe,GAAG,EAAE,CAAC;QACzB,IAAI,oBAAoB,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAE/E,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;YACxB,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;QAErD,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAG;YACtD,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,CAAC;SACvC;QACH,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE;YAC9D,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;KACzF;IAGD,eAAe;QACb,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,EAAE;YACtC,IAAI,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACzD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACtE,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;aACtG;SAEF;KAEF;IAED,UAAU;QACR,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,CAAC;KACnD;IAED,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAA;KACtC;IAED,kBAAkB,CAAC,SAAgB;QACjC,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAC/C,IAAI,CAAC,eAAe,EAAE,CAAA;YACtB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAA;SAC9B;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3F;IAGD,iBAAiB;QACf,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACnC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAE,IAAI,CAAC,UAAU,CAAA;QACnC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACrD,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE;YAC7F,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;SAC1G;KACF;;AA1EM,2CAAsB,GAAG,IAAI,CAAC;;YAPtC,SAAS,SAAC;gBACT,QAAQ,EAAE,kBAAkB;gBAC5B,mxCAA2C;aAC5C;;;YATQ,cAAc;YADH,gBAAgB,uBAgBmB,QAAQ;YAhBzB,kBAAkB;YAAlB,kBAAkB;YAGrB,cAAc;YAAxC,wBAAwB;YACxB,cAAc;;;oBAkBpB,KAAK;sBACL,KAAK;uBACL,MAAM;;;MCaI,6BAA6B;IAWxC,YAAoB,sBAA8C,EAAS,eAAmC;QAA1F,2BAAsB,GAAtB,sBAAsB,CAAwB;QAAS,oBAAe,GAAf,eAAe,CAAoB;QAJrG,eAAU,GAAU,EAAE,CAAC;QAChC,cAAS,GAAQ,IAAI,CAAC;KAG6F;IAEnH,QAAQ;KAEP;IACD,eAAe;QACb,UAAU,CAAC;YACT,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;gBAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YACnD,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE;oBAChC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,EAAE;wBAC9G,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBACpC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;qBACtB;iBACF;aACF;YACD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;YACjB,QAAQ,IAAI,CAAC,aAAa,CAAC,WAAW;;gBAEpC,KAAK,QAAQ,CAAC,IAAI;oBAChB,IAAI,IAAI,GAAG,IAAI,cAAc,EAAE,CAAC;oBAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;oBAC3H,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;oBAC1D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;oBAC/D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;oBAC3D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;oBACpI,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;oBAC3B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,kBAAkB,CAAC;oBAC/E,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS;wBAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBAC9D,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS;wBAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBAC9D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;oBACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;oBAC/D,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAmB,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;oBACnH,MAAM;gBAER,KAAK,QAAQ,CAAC,IAAI;oBAChB,IAAI,IAAI,GAAG,IAAI,cAAc,EAAE,CAAC;oBAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;oBAC3H,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;oBAC1D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;oBAC/D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;oBAC3D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,kBAAkB,CAAC;oBAC/E,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;oBACpI,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS;wBAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBAC9D,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS;wBAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBAC9D,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;oBAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;oBACxB,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAmB,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;oBACnH,MAAM;gBAER,KAAK,QAAQ,CAAC,KAAK;oBACjB,IAAI,KAAK,GAAG,IAAI,cAAc,EAAE,CAAC;oBACjC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;oBAC5H,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBAC7D,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;oBAC3D,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;oBAChE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;oBAC5D,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,kBAAkB,CAAC;oBAChF,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;oBACrI,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC;oBAC7B,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;oBACzB,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAmB,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;oBACpH,MAAM;gBAER,KAAK,QAAQ,CAAC,MAAM;oBAClB,IAAI,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;oBAClC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;oBAC7H,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBAC9D,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;oBAC5D,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;oBACjE,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;oBAC7D,MAAM,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,kBAAkB,CAAC;oBACjF,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;oBACtI,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC;oBAC/B,IAAI,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;oBACnC,IAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,WAAW,EAAC;wBAC/C,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAA;wBACjE,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAA;qBACtE;oBACD,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;oBACjC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;oBAC1B,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;oBACjE,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAmB,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;oBACrH,MAAM;;gBAGR,KAAK,QAAQ,CAAC,IAAI;oBAChB,IAAI,IAAI,GAAG,IAAI,iBAAiB,EAAE,CAAC;oBACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;oBAC3H,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;oBAC1D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;oBAC/D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;oBAC3D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;oBACpI,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC;oBACtC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAA;oBACnC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAA;oBAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;oBACxB,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAqB,IAAI,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;oBACvH,MAAM;gBAER,KAAK,QAAQ,CAAC,QAAQ;oBACpB,IAAI,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAC;oBACvC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;oBAC/H,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBAChE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;oBAC9D,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;oBACnE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;oBAC/D,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;oBACxI,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC;oBACtC,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAA;oBACvC,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAA;oBACpC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;oBAC5B,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAqB,IAAI,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;oBAC3H,MAAM;gBAER,KAAK,QAAQ,CAAC,IAAI;oBAChB,IAAI,IAAI,GAAG,IAAI,iBAAiB,EAAE,CAAC;oBACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;oBAC3H,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;oBAC1D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;oBAC/D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;oBAC3D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;oBACpI,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC;oBACnC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAA;oBACnC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAA;oBAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;oBACxB,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAqB,IAAI,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;oBACvH,MAAM;;gBAGR,KAAK,QAAQ,CAAC,YAAY;oBACxB,IAAI,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;oBACzC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;oBACnI,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBACpE,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;oBAClE,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;oBACvE,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;oBACnE,YAAY,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;oBAC5I,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAA;oBACtE,YAAY,CAAC,eAAe,GAAG,IAAI,CAAA;oBACnC,YAAY,CAAC,YAAY,GAAG,KAAK,CAAA;oBACjC,YAAY,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBAC5E,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;oBACxC,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAwB,IAAI,CAAC,IAAI,EAAE,qBAAqB,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;oBACrI,MAAM;gBACR,KAAK,QAAQ,CAAC,aAAa;oBACzB,IAAI,aAAa,GAAG,IAAI,eAAe,EAAE,CAAC;oBAC1C,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;oBACpI,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBACrE,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;oBACnE,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;oBACxE,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;oBACpE,aAAa,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;oBAC7I,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAA;oBACvE,aAAa,CAAC,eAAe,GAAG,KAAK,CAAA;oBACrC,aAAa,CAAC,YAAY,GAAG,KAAK,CAAA;oBAClC,aAAa,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBAC7E,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;oBACzC,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAwB,IAAI,CAAC,IAAI,EAAE,qBAAqB,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;oBACtI,MAAM;gBACR,KAAK,QAAQ,CAAC,IAAI;oBAChB,IAAI,IAAI,GAAG,IAAI,eAAe,EAAE,CAAC;oBACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;oBAC3H,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;oBAC1D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;oBAC/D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;oBAC3D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;oBACpI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAA;oBAC9D,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAA;oBACpE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;oBACzB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBACpE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;oBAChC,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAwB,IAAI,CAAC,IAAI,EAAE,qBAAqB,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;oBAC7H,MAAM;gBACR,KAAK,QAAQ,CAAC,SAAS;oBACrB,IAAI,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;oBACtC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;oBAChI,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBACjE,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;oBAC/D,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;oBACpE,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;oBAChE,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;oBACzI,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAA;oBACnE,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAA;oBACnE,SAAS,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAA;oBACzE,SAAS,CAAC,YAAY,GAAG,KAAK,CAAA;oBAC9B,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBACzE,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;oBACrC,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAwB,IAAI,CAAC,IAAI,EAAE,qBAAqB,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;oBAClI,MAAM;gBACR,KAAK,QAAQ,CAAC,aAAa;oBACzB,IAAI,aAAa,GAAG,IAAI,eAAe,EAAE,CAAC;oBAC1C,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;oBACpI,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBACrE,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;oBACnE,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;oBACxE,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;oBACpE,aAAa,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;oBAC7I,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAA;oBACvE,aAAa,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAA;oBAC7E,aAAa,CAAC,YAAY,GAAG,KAAK,CAAA;oBAClC,aAAa,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBAC7E,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;oBACzC,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAwB,IAAI,CAAC,IAAI,EAAE,qBAAqB,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;oBACtI,MAAM;gBACR,KAAK,QAAQ,CAAC,OAAO;oBACnB,IAAI,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;oBACpC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;oBAC9H,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBAC/D,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;oBAC7D,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;oBAClE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;oBAC9D,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;oBACvI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAA;oBACjE,OAAO,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAA;oBACvE,OAAO,CAAC,YAAY,GAAG,KAAK,CAAA;oBAC5B,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBACvE,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;oBACnC,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAwB,IAAI,CAAC,IAAI,EAAE,qBAAqB,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;oBAChI,MAAM;;gBAGR,KAAK,QAAQ,CAAC,IAAI;oBAChB,IAAI,IAAI,GAAG,IAAI,iBAAiB,EAAE,CAAC;oBACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;oBAC3H,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;oBAC1D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;oBAC/D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;oBAC3D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;oBACpI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,eAAe,CAAA;oBACxE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;oBACxB,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAsB,IAAI,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;oBACzH,MAAM;gBACR,KAAK,QAAQ,CAAC,SAAS;oBACrB,IAAI,SAAS,GAAG,IAAI,iBAAiB,EAAE,CAAC;oBACxC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;oBAC3H,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;oBAC1D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;oBAC/D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;oBAC3D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;oBACpI,SAAS,CAAC,sBAAsB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,eAAe,CAAA;oBACpF,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,YAAY,CAAA;oBACvE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC;oBAChC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;oBAC7B,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAsB,IAAI,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;oBAC9H,MAAM;;gBAER,KAAK,QAAQ,CAAC,KAAK;oBACjB,IAAI,KAAK,GAAG,IAAI,kBAAkB,EAAE,CAAC;oBACrC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;oBAC5H,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBAC7D,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;oBAC3D,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;oBAChE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;oBAC5D,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;oBACrI,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,eAAe;wBACnD,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,eAAe,CAAA;oBAC3E,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;oBACzB,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAyB,IAAI,CAAC,IAAI,EAAE,sBAAsB,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;oBAChI,MAAM;gBACR,KAAK,QAAQ,CAAC,UAAU;oBACtB,IAAI,UAAU,GAAG,IAAI,kBAAkB,EAAE,CAAC;oBAC1C,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;oBACjI,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBAClE,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;oBAChE,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;oBACrE,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;oBACjE,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;oBAC1I,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,eAAe;wBACnD,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,eAAe,CAAA;oBAChF,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;oBAC9B,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAyB,IAAI,CAAC,IAAI,EAAE,sBAAsB,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;oBACrI,MAAM;;gBAER,KAAK,QAAQ,CAAC,MAAM;oBAClB,IAAI,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;oBAChC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;oBAC7H,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBAC9D,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;oBAC5D,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;oBACjE,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;oBAC7D,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;oBACtI,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;oBAC1B,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC;oBAC9B,MAAM,CAAC,kBAAkB,GAAG,IAAI,CAAC;oBACjC,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAA;oBAC/B,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;oBAC1B,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAiB,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;oBACjH,MAAM;;gBAER,KAAK,QAAQ,CAAC,aAAa;oBACzB,IAAI,aAAa,GAAG,IAAI,eAAe,EAAE,CAAC;oBAC1C,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;oBACpI,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBACrE,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;oBACnE,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;oBACxE,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;oBACpE,aAAa,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;oBAC7I,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS;wBAC7C,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBACvE,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS;wBAC7C,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBACvE,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC;oBAC5D,aAAa,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,cAAc,CAAA;oBAC/E,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;oBACjC,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAoB,IAAI,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;oBAC9H,MAAM;;gBAER,KAAK,QAAQ,CAAC,IAAI;oBAChB,IAAI,IAAI,GAAG,IAAI,iBAAiB,EAAE,CAAC;oBACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;oBAC3H,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;oBAC1D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;oBAC/D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;oBAC3D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;oBACpI,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS;wBAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBAC9D,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS;wBAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBAC9D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC;oBACrD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,cAAc,CAAA;oBACtE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;oBACxB,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAsB,IAAI,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;oBACzH,MAAM;;gBAER,KAAK,QAAQ,CAAC,OAAO;oBACnB,IAAI,OAAO,GAAG,IAAI,kBAAkB,EAAE,CAAC;oBACvC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;oBAC9H,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBAC/D,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;oBAC7D,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;oBAC9D,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;oBAC3B,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;oBACvI,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAuB,IAAI,CAAC,IAAI,EAAE,oBAAoB,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;oBAC9H,MAAM;;gBAER,KAAK,QAAQ,CAAC,QAAQ;oBACpB,IAAI,QAAQ,GAAG,IAAI,sBAAsB,EAAE,CAAC;oBAC5C,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;oBAC/H,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;oBAChE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;oBAC9D,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;oBACnE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;oBAC/D,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;oBAC5B,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;oBACxI,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAA2B,IAAI,CAAC,IAAI,EAAE,wBAAwB,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;oBACvI,MAAM;gBACR;oBACE,MAAM;aACT;SACF,EAAE,CAAC,CAAC,CAAC;KACP;IACD,WAAW,CAAC,OAAsB;QAChC,IAAI,OAAO,CAAC,UAAU;YACpB,IAAI,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE;gBACpC,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;gBAC3I,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAA;gBAC3C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;gBACjB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;gBAC9B,QAAQ,IAAI,CAAC,aAAa,CAAC,WAAW;;oBAEpC,KAAK,QAAQ,CAAC,IAAI;wBAChB,IAAI,IAAI,GAAG,IAAI,cAAc,EAAE,CAAC;wBAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;wBAChI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;wBAC1D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;wBAC/D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;wBAC3D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;wBACpI,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;wBAC3B,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS;4BAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBAC9D,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS;4BAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBAC9D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;wBACnB,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAmB,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;wBACnH,MAAM;oBAER,KAAK,QAAQ,CAAC,IAAI;wBAChB,IAAI,IAAI,GAAG,IAAI,cAAc,EAAE,CAAC;wBAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;wBAChI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;wBAC1D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;wBAC/D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;wBAC3D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;wBACpI,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS;4BAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBAC9D,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS;4BAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBAC9D,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;wBAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;wBACnB,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAmB,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;wBACnH,MAAM;oBAER,KAAK,QAAQ,CAAC,KAAK;wBACjB,IAAI,KAAK,GAAG,IAAI,cAAc,EAAE,CAAC;wBACjC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;wBACjI,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBAC7D,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;wBAC3D,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;wBAChE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;wBAC5D,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;wBACrI,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC;wBAC7B,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;wBACpB,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAmB,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;wBACpH,MAAM;oBAER,KAAK,QAAQ,CAAC,MAAM;wBAClB,IAAI,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;wBAClC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;wBAClI,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBAC9D,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;wBAC5D,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;wBACjE,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;wBAC7D,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;wBACtI,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC;wBAC/B,IAAI,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;wBACnC,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBAC5D,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBAC9D,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;wBACjC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;wBACrB,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAmB,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;wBACrH,MAAM;;oBAGR,KAAK,QAAQ,CAAC,IAAI;wBAChB,IAAI,IAAI,GAAG,IAAI,iBAAiB,EAAE,CAAC;wBACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;wBAChI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;wBAC1D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;wBAC/D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;wBAC3D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;wBACpI,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC;wBACtC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAA;wBACnC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAA;wBAChC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;wBACnB,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAqB,IAAI,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;wBACvH,MAAM;oBAER,KAAK,QAAQ,CAAC,QAAQ;wBACpB,IAAI,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAC;wBACvC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;wBACpI,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBAChE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;wBAC9D,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;wBACnE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;wBAC/D,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;wBACxI,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC;wBACtC,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAA;wBACvC,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAA;wBACpC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;wBACvB,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAqB,IAAI,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;wBAC3H,MAAM;oBAER,KAAK,QAAQ,CAAC,IAAI;wBAChB,IAAI,IAAI,GAAG,IAAI,iBAAiB,EAAE,CAAC;wBACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;wBAChI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;wBAC1D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;wBAC/D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;wBAC3D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;wBACpI,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC;wBACnC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAA;wBACnC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAA;wBAChC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;wBACnB,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAqB,IAAI,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;wBACvH,MAAM;;oBAGR,KAAK,QAAQ,CAAC,YAAY;wBACxB,IAAI,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;wBACzC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;wBACxI,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBACpE,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;wBAClE,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;wBACvE,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;wBACnE,YAAY,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;wBAC5I,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAA;wBACtE,YAAY,CAAC,eAAe,GAAG,IAAI,CAAA;wBACnC,YAAY,CAAC,YAAY,GAAG,KAAK,CAAA;wBACjC,YAAY,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBAC5E,YAAY,CAAC,aAAa,GAAG,KAAK,CAAC;wBACnC,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAwB,IAAI,CAAC,IAAI,EAAE,qBAAqB,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;wBACrI,MAAM;oBACR,KAAK,QAAQ,CAAC,aAAa;wBACzB,IAAI,aAAa,GAAG,IAAI,eAAe,EAAE,CAAC;wBAC1C,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;wBACzI,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBACrE,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;wBACnE,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;wBACxE,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;wBACpE,aAAa,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;wBAC7I,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAA;wBACvE,aAAa,CAAC,eAAe,GAAG,KAAK,CAAA;wBACrC,aAAa,CAAC,YAAY,GAAG,KAAK,CAAA;wBAClC,aAAa,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBAC7E,aAAa,CAAC,aAAa,GAAG,KAAK,CAAC;wBACpC,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAwB,IAAI,CAAC,IAAI,EAAE,qBAAqB,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;wBACtI,MAAM;oBACR,KAAK,QAAQ,CAAC,IAAI;wBAChB,IAAI,IAAI,GAAG,IAAI,eAAe,EAAE,CAAC;wBACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;wBAChI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;wBAC1D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;wBAC/D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;wBAC3D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;wBACpI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAA;wBAC9D,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAA;wBACpE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;wBACzB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBACpE,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;wBAC3B,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAwB,IAAI,CAAC,IAAI,EAAE,qBAAqB,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;wBAC7H,MAAM;oBACR,KAAK,QAAQ,CAAC,SAAS;wBACrB,IAAI,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;wBACtC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;wBACrI,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBACjE,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;wBAC/D,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;wBACpE,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;wBAChE,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;wBACzI,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAA;wBACnE,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAA;wBACnE,SAAS,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAA;wBACzE,SAAS,CAAC,YAAY,GAAG,KAAK,CAAA;wBAC9B,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBACzE,SAAS,CAAC,aAAa,GAAG,KAAK,CAAC;wBAChC,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAwB,IAAI,CAAC,IAAI,EAAE,qBAAqB,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;wBAClI,MAAM;oBACR,KAAK,QAAQ,CAAC,aAAa;wBACzB,IAAI,aAAa,GAAG,IAAI,eAAe,EAAE,CAAC;wBAC1C,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;wBACzI,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBACrE,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;wBACnE,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;wBACxE,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;wBACpE,aAAa,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;wBAC7I,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAA;wBACvE,aAAa,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAA;wBAC7E,aAAa,CAAC,YAAY,GAAG,KAAK,CAAA;wBAClC,aAAa,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBAC7E,aAAa,CAAC,aAAa,GAAG,KAAK,CAAC;wBACpC,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAwB,IAAI,CAAC,IAAI,EAAE,qBAAqB,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;wBACtI,MAAM;oBACR,KAAK,QAAQ,CAAC,OAAO;wBACnB,IAAI,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;wBACpC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;wBACnI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBAC/D,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;wBAC7D,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;wBAClE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;wBAC9D,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;wBACvI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAA;wBACjE,OAAO,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAA;wBACvE,OAAO,CAAC,YAAY,GAAG,KAAK,CAAA;wBAC5B,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBACvE,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;wBAC9B,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAwB,IAAI,CAAC,IAAI,EAAE,qBAAqB,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;wBAChI,MAAM;;oBAGR,KAAK,QAAQ,CAAC,IAAI;wBAChB,IAAI,IAAI,GAAG,IAAI,iBAAiB,EAAE,CAAC;wBACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;wBAChI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;wBAC1D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;wBAC/D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;wBAC3D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;wBACpI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,eAAe,CAAA;wBACxE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;wBACnB,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAsB,IAAI,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;wBACzH,MAAM;oBACR,KAAK,QAAQ,CAAC,SAAS;wBACrB,IAAI,SAAS,GAAG,IAAI,iBAAiB,EAAE,CAAC;wBACxC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;wBAChI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;wBAC1D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;wBAC/D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;wBAC3D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;wBACpI,SAAS,CAAC,sBAAsB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,eAAe,CAAA;wBACpF,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,YAAY,CAAA;wBACvE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC;wBAChC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;wBACxB,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAsB,IAAI,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;wBAC9H,MAAM;;oBAER,KAAK,QAAQ,CAAC,KAAK;wBACjB,IAAI,KAAK,GAAG,IAAI,kBAAkB,EAAE,CAAC;wBACrC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;wBACjI,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBAC7D,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;wBAC3D,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;wBAChE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;wBAC5D,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;wBACrI,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,eAAe;4BACnD,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,eAAe,CAAA;wBAC3E,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;wBACpB,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAyB,IAAI,CAAC,IAAI,EAAE,sBAAsB,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;wBAChI,MAAM;oBACR,KAAK,QAAQ,CAAC,UAAU;wBACtB,IAAI,UAAU,GAAG,IAAI,kBAAkB,EAAE,CAAC;wBAC1C,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;wBACtI,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBAClE,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;wBAChE,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;wBACrE,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;wBACjE,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;wBAC1I,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,eAAe;4BACnD,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,eAAe,CAAA;wBAChF,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC;wBACzB,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAyB,IAAI,CAAC,IAAI,EAAE,sBAAsB,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;wBACrI,MAAM;;oBAER,KAAK,QAAQ,CAAC,MAAM;wBAClB,IAAI,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;wBAChC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;wBAClI,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBAC9D,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;wBAC5D,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;wBACjE,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;wBAC7D,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;wBACtI,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;wBAC1B,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC;wBAC9B,MAAM,CAAC,kBAAkB,GAAG,IAAI,CAAC;wBACjC,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAA;wBAC/B,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;wBACrB,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAiB,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;wBACjH,MAAM;;oBAER,KAAK,QAAQ,CAAC,aAAa;wBACzB,IAAI,aAAa,GAAG,IAAI,eAAe,EAAE,CAAC;wBAC1C,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;wBACzI,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBACrE,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;wBACnE,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;wBACxE,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;wBACpE,aAAa,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;wBAC7I,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS;4BAC7C,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBACvE,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS;4BAC7C,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBACvE,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC;wBAC5D,aAAa,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,cAAc,CAAA;wBAC/E,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC;wBAC5B,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAoB,IAAI,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;wBAC9H,MAAM;;oBAER,KAAK,QAAQ,CAAC,IAAI;wBAChB,IAAI,IAAI,GAAG,IAAI,iBAAiB,EAAE,CAAC;wBACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;wBAChI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;wBAC1D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;wBAC/D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;wBAC3D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;wBACpI,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS;4BAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBAC9D,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS;4BAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBAC9D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC;wBACrD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,cAAc,CAAA;wBACtE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;wBACnB,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAsB,IAAI,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;wBACzH,MAAM;;oBAER,KAAK,QAAQ,CAAC,OAAO;wBACnB,IAAI,OAAO,GAAG,IAAI,kBAAkB,EAAE,CAAC;wBACvC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;wBACnI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBAC/D,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;wBAC7D,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;wBAC9D,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;wBACvI,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;wBACtB,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAuB,IAAI,CAAC,IAAI,EAAE,oBAAoB,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;wBAC9H,MAAM;;oBAER,KAAK,QAAQ,CAAC,QAAQ;wBACpB,IAAI,QAAQ,GAAG,IAAI,sBAAsB,EAAE,CAAC;wBAC5C,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;wBACpI,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAA;wBAChE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAA;wBAC9D,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC;wBACnE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC;wBAC/D,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAA;wBACxI,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;wBACvB,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAA2B,IAAI,CAAC,IAAI,EAAE,wBAAwB,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;wBACvI,MAAM;oBACR;wBACE,MAAM;iBACT;aAEF;KAEJ;;;YAvtBF,SAAS,SAAC;gBACT,QAAQ,EAAE,wBAAwB;gBAClC,mDAAsD;aACvD;;;YAhBQ,sBAAsB;YApBX,kBAAkB;;;mBAuCnC,SAAS,SAAC,MAAM,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;oBAC5C,KAAK;yBACL,KAAK;4BACL,KAAK;4BACL,KAAK;yBACL,KAAK;;;MCvCK,0BAA0B;IAKrC,iBAAiB;IAEjB,QAAQ;KACP;;;YAZF,SAAS,SAAC;gBACT,QAAQ,EAAE,qBAAqB;gBAC/B,mQAAmD;aACpD;;;;wBAEE,KAAK;yBACL,KAAK;wBACL,KAAK;;;MCCK,sBAAsB;IAOjC,YAAmB,cAA6B;QAA7B,mBAAc,GAAd,cAAc,CAAe;QAJhD,UAAK,GAAa,EAAE,CAAA;QAEpB,kBAAa,GAAQ,EAAE,CAAC;KAE6B;IAErD,QAAQ;QACN,IAAI,CAAC,aAAa,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC7D,IAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,GAAC,CAAC,EACtC;YACE,IAAI,CAAC,aAAa,GAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;YAC/C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACtE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACxB;SACF;;YAGD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,EAAE,EAAE;gBAClE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACxB;QACD,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,GAAG;YAC5C,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,SAAS,GAAG,EAAE,CAAC;YACnB,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;gBAC7C,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE;oBAC1E,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBAClC,IAAI,IAAI,GAAG;wBACT,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;qBAC1F,CAAA;oBACD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBACnB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;wBACrC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;iBACjC;aACF;YACD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACrD,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC7B,IAAI,SAAS,GAAG,EAAE,CAAA;gBAClB,IAAI,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;gBACzD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBAC5D,MAAM,eAAe,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;oBAChD,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE;wBACjC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,EAAE;4BAC9D,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;4BACrC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;gCACzB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;oCACtD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;oCAC3B,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;iCACvB;6BACF;yBACF;qBACF;iBACF;gBACD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;aACvB;YACD,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,MAAM,CAAC;SACrC,CAAC,CAAA;KAEH;IAED,UAAU,CAAC,KAAK;QACd,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU;YAC/E,OAAO;QACT,IAAI,eAAe,GAAU,EAAE,CAAA;QAC/B,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QACjF,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;YAC7C,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE;gBAC1E,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBACxD,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpC,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBAClC,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,OAAO,GAAG,KAAK,EAAE,EAAE;wBAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;wBACjD,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,OAAO,EAAE,CAAC,CAAA;qBACzC;iBACF;aACF;SACF;QACD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAC3D,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;YACvC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;gBACzB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;oBACtD,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;iBACtC;aACF;SACF;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;KAClE;IAED,OAAO;QACL,IAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAE,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;;YAEnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC;KACtD;;;YAtGA,SAAS,SAAC;gBACT,QAAQ,EAAE,qBAAqB;gBAC/B,y5DAA8C;aAC/C;;;YANQ,cAAc;;;oBAQpB,KAAK;sBACL,KAAK;;;MCZK,cAAc;IAA3B;QAKI,cAAS,GAAO,EAAE,CAAC;KACtB;;;MCNY,YAAY;;;MCaZ,kBAAkB;IAE7B,YAAoB,cAA8B,EAAU,qBAA4C,EAC/F,oBAAwC,EAAS,cAA8B,EAC9E,wBAAkD,EAAU,cAA8B;QAFhF,mBAAc,GAAd,cAAc,CAAgB;QAAU,0BAAqB,GAArB,qBAAqB,CAAuB;QAC/F,yBAAoB,GAApB,oBAAoB,CAAoB;QAAS,mBAAc,GAAd,cAAc,CAAgB;QAC9E,6BAAwB,GAAxB,wBAAwB,CAA0B;QAAU,mBAAc,GAAd,cAAc,CAAgB;QAI1F,aAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAGxC,oBAAe,GAAG,EAAE,CAAC;QACrB,yBAAoB,GAAG,EAAE,CAAC;QAE1B,mBAAc,GAAmB,IAAI,cAAc,EAAE,CAAC;QAkEtD,eAAU,GAAG;YACX,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,CAAC;SACnD,CAAA;;QAyBD,6BAAwB,GAAG;YACzB,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;SAC5G,CAAA;;QAED,0BAAqB,GAAG;YACtB,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;SACzG,CAAA;;QAGD,2BAAsB,GAAG,CAAC,gBAAgB;YACxC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;SAC9G,CAAA;;QAED,wBAAmB,GAAG,CAAC,gBAAgB;YACrC,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;SAC3G,CAAA;;QAED,YAAO,GAAG;YACR,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;SACvD,CAAA;KAzHA;IAYD,QAAQ;QACN,IAAG,IAAI,CAAC,OAAO,CAAC,cAAc;YAC9B,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,OAAO,CAAC,cAAc,IAAE,CAAC,GAAC,KAAK,GAAC,KAAK,CAAC;;YAExD,IAAI,CAAC,OAAO,GAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,IAAE,IAAI,GAAC,KAAK,GAAC,KAAK,CAAC;QAChE,IAAI,CAAC,wBAAwB,CAAC,cAAc,GAAG,KAAK,CAAA;QAEnD,IAAI,CAAC,SAAS,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;YACxB,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;QAEvD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEnE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE;YAC9D,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAExF,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SAChD;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5C,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAA;YAC/C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACvD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;aACpD;SAEF;QACD,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC9D,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACxE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;SACrC;QAED,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK;YACjD,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAA;YAC7B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;SAC7B,CAAC,CAAA;KACH;IAED,SAAS;QACP,IAAI,KAAK,GAAiB,IAAI,YAAY,EAAE,CAAC;QAC7C,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC;QACnE,KAAK,CAAC,wBAAwB,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC;QACvE,KAAK,CAAC,gBAAgB,GAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;QACtD,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAC3D,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QACvC,IAAI,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAA;QACnD,mBAAmB,CAAC,cAAc,GAAG,IAAI,CAAC;QAC1C,mBAAmB,CAAC,0BAA0B,GAAG,IAAI,CAAC;QACtD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,mBAAmB,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG;YAC5G,IAAI,KAAK,GAAG,GAAU,CAAA;YACtB,IAAI,CAAC,cAAc,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,cAAc,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;YACxD,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;YAChD,IAAI,CAAC,KAAK,GAAG,yBAAyB,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;SACxE,CAAC,CAAA;KACH;IAED,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;KACzD;IAMD,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAA;KACtC;IAED,kBAAkB,CAAC,SAAS;QAE1B,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAC/C,IAAI,CAAC,eAAe,EAAE,CAAA;YACtB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAA;SAC9B;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3F;IAGD,YAAY,CAAC,SAAS;QACpB,IAAI,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;QACnC,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAChE,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;KACrD;;;YA7GF,SAAS,SAAC;gBACT,QAAQ,EAAE,gBAAgB;gBAC1B,s+DAAyC;aAC1C;;;YAVQ,cAAc;YACY,qBAAqB;YAFwB,kBAAkB;YAEnB,cAAc;YAApF,wBAAwB;YACxB,cAAc;;;oBAepB,KAAK;sBACL,KAAK;uBACL,MAAM;;;MCXI,4BAA4B;IAOvC,YAAoB,MAAc,EAAQ,cAA8B;QAApD,WAAM,GAAN,MAAM,CAAQ;QAAQ,mBAAc,GAAd,cAAc,CAAgB;QAFjE,iBAAY,GAAG,QAAQ,CAAC;KAI9B;IAED,SAAS,CAAC,GAAW;QACnB,OAAO,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;KAClD;IAED,QAAQ;QACN,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,wBAAwB,EAAE,CAAC;KAC1D;;;YArBF,SAAS,SAAC;gBACT,QAAQ,EAAE,4BAA4B;gBACtC,mwOAAqD;aACtD;;;YAPQ,MAAM;YACN,cAAc;;;oBASpB,KAAK;sBACL,KAAK;;;MCPK,gBAAgB;IAE3B,YAAmB,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;KAAK;IAC1C,SAAS,CAAC,KAAW;QACnB,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;QACvE,OAAO,WAAW,CAAC;KACpB;;;YATF,IAAI,SAAC;gBACJ,IAAI,EAAE,cAAc;aACrB;;;YALQ,QAAQ;;;MCMJ,YAAY;IAEvB,YAAmB,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;KAAG;IACxC,SAAS,CAAC,KAAW;QACnB,IAAI,WAAW,GAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC9D,OAAO,WAAW,CAAC;KACpB;;;YATF,IAAI,SAAC;gBACJ,IAAI,EAAE,UAAU;aACjB;;;YALQ,QAAQ;;;ICEL;AAAZ,WAAY,YAAY;IACpB,yDAAa,CAAA;IACb,+DAAgB,CAAA;IAChB,6DAAe,CAAA;AAEjB,CAAC,EALS,YAAY,KAAZ,YAAY;;ACGxB,MAAM,IAAI,GAAG,SAAS,CAAC;;AAEvB,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0H3B,CAAC;AAEF,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCxB,CAAC;AAEF,MAAM,mCAAmC,GAAQ;IAC/C,OAAO,EAAE,iBAAiB;IAC1B,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;IAClD,KAAK,EAAE,IAAI;CACZ,CAAC;MAaW,mBAAmB;IANhC;QAQE,aAAQ,GAAW,EAAE,CAAC;QACf,SAAI,GAAe,EAAE,CAAC;QACrB,sBAAiB,GAAe,IAAI,CAAC;QACrC,qBAAgB,GAAqB,IAAI,CAAC;QAC3C,qBAAgB,GAAG,YAAY,CAAC;QAE9B,0BAAqB,GAAY,KAAK,CAAC;QACvC,kBAAa,GAAY,IAAI,CAAC;QAC9B,eAAU,GAAY,IAAI,CAAC;QAC3B,aAAQ,GAAiB,YAAY,CAAC,YAAY,CAAC;QACnD,gBAAW,GAAW,EAAE,CAAC;QACzB,oBAAe,GAAY,IAAI,CAAC;QAChC,YAAO,GAAQ,IAAI,CAAC;QACpB,oBAAe,GAAQ,IAAI,CAAC;QACrC,iBAAY,GAAW,MAAM,CAAC;QACrB,2BAAsB,GAAW,CAAC,CAAC;QACnC,sBAAiB,GAAY,KAAK,CAAC;QACnC,4BAAuB,GAAW,CAAC,CAAC;QACnC,kBAAa,GAAmC,IAAI,YAAY,EAAE,CAAC;QACnE,qBAAgB,GAAuB,IAAI,YAAY,EAAE,CAAC;QAC1D,qBAAgB,GAA0B,IAAI,YAAY,EAAE,CAAC;QAC7D,gBAAW,GAAuB,IAAI,YAAY,EAAE,CAAC;;;;;;;KAqHhE;IApHC,cAAc;QACZ,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACrC,OAAO,EAAE,CAAC;SACX;QACD,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;IAEO,WAAW,CAAC,IAAY,EAAE,GAAQ;QACxC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YACtB,MAAM,EAAE,IAAI;YACZ,GAAG,EAAE,GAAG;SACT,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;YAC/B,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;SAC9B;KACF;IAED,aAAa,CAAC,QAA0B;;QACtC,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,EAAC,MAAA,IAAI,CAAC,IAAI,0CAAE,MAAM,CAAA,EAAE;YACrD,OAAO;SACR;QAED,IAAI,QAAQ,CAAC,KAAK,KAAK,EAAE,EAAE;YACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;SACjD;KACF;IAED,MAAM,CAAC,QAA0B;QAC/B,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAChC,IAAI,GAAG,GAAG;gBACR,CAAC,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,KAAK;aACpC,CAAC;YACF,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;SAC5B;QACD,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;KACrB;IAEO,gBAAgB,CAAC,GAAW;QAClC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI;YACnB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;YAChC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;SAC9B;KACF;IAED,SAAS,CAAC,WAAgB;QACxB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE;YACnC,OAAO;SACR;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,WAAW,KAAK,GAAG,CAAC,CAAC;QACzD,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;KACzC;IAED,oBAAoB;QAClB,OAAO,OAAO,IAAI,CAAC,OAAO,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC;KAC7F;IAED,YAAY,CAAC,GAAQ;QACnB,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,WAAW,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE;YAC5D,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;IAED,iBAAiB,CAAC,CAAiB;QACjC,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC9B,IAAI,CAAC,gBAAgB,CAAC;gBACpB,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,KAAK;aAC7B,CAAC,CAAC;SACJ;aAAM;YACL,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAC/B;QACD,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;IAED,kBAAkB,CAAC,CAAM;QACvB,IAAI,OAAO,IAAI,CAAC,gBAAgB,KAAK,WAAW,EAAE;YAChD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;SAC9B;KACF;IAED,UAAU,CAAC,KAAU;QACnB,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,EAAE;YACvB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;SACnB;KACF;IAED,gBAAgB,CAAC,EAAO;QACtB,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;KAC5B;IAED,iBAAiB,CAAC,EAAO;QACvB,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;KAC7B;IAED,iBAAiB,CAAC,IAAY;QAC5B,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,QAAQ,GAAG,EAAE,CAAA;QACjB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YACrB,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;;YAEjE,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACvC,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;KAC/B;IAED,MAAM;QACJ,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KACzB;;;YA3IF,SAAS,SAAC;gBACT,QAAQ,EAAE,cAAc;gBACxB,QAAQ,EAAE,mBAAmB;gBAE7B,SAAS,EAAE,CAAC,mCAAmC,CAAC;yBADvC,gBAAgB;aAE1B;;;sBAQE,KAAK;oCACL,KAAK;4BACL,KAAK;yBACL,KAAK;uBACL,KAAK;0BACL,KAAK;8BACL,KAAK;sBACL,KAAK;8BACL,KAAK;qCAEL,KAAK;gCACL,KAAK;sCACL,KAAK;4BACL,MAAM;+BACN,MAAM;+BACN,MAAM;0BACN,MAAM;;;ICxHE,QAAqD;IAErD,YAAsB;WA0Gc,cAAc,CAAC,QAAQ;AAtGtE;AACA;AACA;AACA;AACA;AACA;MA6Ia,kBAAkB;IAE7B,YAAoB,QAAkB,EAAU,SAA2B;QAAvD,aAAQ,GAAR,QAAQ,CAAU;QAAU,cAAS,GAAT,SAAS,CAAkB;QACzE,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC;KAE7B;;;YAjJF,QAAQ,SAAC;gBACR,YAAY,EAAE;oBACZ,kBAAkB;oBAClB,mBAAmB;oBACnB,4BAA4B;oBAC5B,gBAAgB;oBAChB,iBAAiB;oBACjB,6BAA6B;oBAC7B,iBAAiB;oBACjB,qBAAqB;oBACrB,cAAc;oBACd,oBAAoB;oBACpB,mBAAmB;oBACnB,+BAA+B;;oBAE/B,sBAAsB;oBACtB,6BAA6B;oBAC7B,iBAAiB;oBACjB,wBAAwB;oBACxB,4BAA4B;oBAC5B,kBAAkB;oBAClB,eAAe;oBACf,qBAAqB;oBACrB,oBAAoB;oBACpB,aAAa;oBACb,0BAA0B;oBAC1B,iBAAiB;oBACjB,6BAA6B;oBAC7B,uBAAuB;oBACvB,0BAA0B;oBAC1B,sBAAsB;oBACtB,gBAAgB;oBAChB,YAAY;oBACZ,mBAAmB;oBACnB,kBAAkB;oBAClB,4BAA4B;iBAC7B;gBACD,OAAO,EAAE;oBACP,YAAY;oBACZ,oBAAoB;oBACpB,cAAc;oBACd,kBAAkB;oBAClB,kBAAkB;oBAClB,aAAa,CAAC,OAAO,CAAC;;wBAEpB,MAAM,EAAED,aAAW,CAAC,iBAAiB;wBACrC,SAAS,EAAE,CAAC,QAAQ,CAAC;qBACtB,CAAC;oBACF,+BAA+B;oBAC/B,kBAAkB;oBAClB,sBAAsB;oBACtB,kBAAkB;oBAClB,SAAS;oBACT,iBAAiB;oBACjB,gBAAgB;oBAChB,aAAa;oBACb,aAAa,CAAC,OAAO,EAAE;oBACvB,mBAAmB;oBACnB,oBAAoB;oBACpB,qBAAqB;oBACrB,wBAAwB;oBACxB,2BAA2B,CAAC,OAAO,EAAE;oBACrC,iBAAiB;oBACjB,uBAAuB;oBACvB,YAAY;oBACZ,aAAa,CAAC,OAAO,EAAE;oBACvB,mBAAmB;oBACnB,UAAU;oBACV,YAAY;oBACZ,YAAY,CAAC,OAAO,EAAE;oBACtB,gBAAgB;oBAChB,oBAAoB,CAAC,OAAO,EAAE;oBAC9B,aAAa;oBACb,mBAAmB,CAAC,UAAU,EAAE;oBAChC,WAAW;oBACX,kBAAkB,CAAC,OAAO,EAAE;oBAC5B,eAAe,CAAC,OAAO,EAAE;oBACzB,mBAAmB;oBACnB,qBAAqB;oBACrB,mBAAmB;oBACnB,eAAe,CAAC,OAAO,EAAE;oBACzB,iBAAiB;iBAElB;gBACD,SAAS,EAAE;oBACT,sBAAsB;oBACtB,cAAc;oBACd,4BAA4B;oBAC5B,gBAAgB;oBAChB,kBAAkB;oBAClB,QAAQ;oBACR,cAAc;oBACd,QAAQ;oBACR,gBAAgB;oBAChB,YAAY;oBACZ,sBAAsB;oBACtB,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,IAA2B,EAAE;iBAGvE;gBACD,OAAO,EAAE;oBACP,gBAAgB;iBACjB;gBAED,OAAO,EAAE;oBACP,kBAAkB;oBAClB,mBAAmB;oBACnB,4BAA4B;oBAC5B,gBAAgB;oBAChB,iBAAiB;oBACjB,6BAA6B;oBAC7B,iBAAiB;oBACjB,qBAAqB;oBACrB,cAAc;oBACd,oBAAoB;oBACpB,mBAAmB;oBACnB,+BAA+B;oBAC/B,sBAAsB;oBACtB,6BAA6B;oBAC7B,iBAAiB;oBACjB,wBAAwB;oBACxB,4BAA4B;oBAC5B,kBAAkB;oBAClB,eAAe;oBACf,qBAAqB;oBACrB,oBAAoB;oBACpB,aAAa;oBACb,eAAe;oBACf,0BAA0B;oBAC1B,iBAAiB;oBACjB,6BAA6B;oBAC7B,uBAAuB;oBACvB,0BAA0B;oBAC1B,sBAAsB;oBACtB,gBAAgB;oBAChB,YAAY;oBACZ,kBAAkB;oBAClB,4BAA4B;iBAC7B;aACF;;;YAxOkB,QAAQ;YAuClB,gBAAgB;;;MC1CZ,gBAAgB;CAI5B;MACY,eAAe;;IAExB,OAAO,OAAO,CAAC,OAAwB;QACrC,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC;QAExB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC;QAE5C,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC;YAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;QAEpF,OAAO,IAAI,CAAC;KACb;;;MCAiB,gBAAgB;IAgBpC,YAAY,QAAkB;QAFvB,cAAS,GAAW,EAAE,CAAC;QACvB,cAAS,GAAW,EAAE,CAAC;QAyJ9B,wBAAmB,GAAG,CAAC,OAAY;YACjC,IAAI,CAAC,cAAc,CAAC,oBAAoB,CACtC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,EACrB,IAAI,EACJ,IAAI,EACJ,KAAK,CACN,CAAC;SACH,CAAC;QAEF,yBAAoB,GAAG,CAAC,OAAY;YAClC,IAAI,CAAC,cAAc,CAAC,oBAAoB,CACtC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,EACvB,IAAI,EACJ,IAAI,EACJ,KAAK,CACN,CAAC;SACH,CAAC;QAEF,2BAAsB,GAAG,CAAC,OAAY;YACpC,IAAI,CAAC,cAAc,CAAC,oBAAoB,CACtC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,EACvB,IAAI,EACJ,IAAI,EACJ,KAAK,CACN,CAAC;SACH,CAAC;QAhLA,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACnD,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACnD,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAC/D,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAC3D,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAClE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACpE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,wBAAwB,EAAE,CAAC;KAC5D;IACD,eAAe,CAAC,KAAyB;QACvC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;KAC5D;IAED,CAAC,CAAC,GAAW;QACX,OAAO,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;KAClD;IACD,qBAAqB,CAAC,GAAW;QAC/B,OAAO,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;KAC7D;IACD,oBAAoB;QAClB,OAAO,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;KACxE;IACD,WAAW;QACT,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;KACnC;IAED,YAAY;QACV,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KACpC;IAED,SAAS,CAAC,KAAU,EAAE,IAAa;QACjC,IAAI,IAAI;YACN,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE;gBAC5B,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,QAAQ;gBAClB,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC;;YACA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;KAC7E;IAED,QAAQ,CAAC,OAAY,EAAE,QAAgB;;QAErC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE;YAC7B,IAAI,EAAE,mEAAmE;SAC1E,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KACxB;IAED,WAAW,CAAC,OAAY,EAAE,QAAgB;QACxC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC5D,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KACxB;IACD,YAAY,CAAC,OAAY,EAAE,QAAgB;QACzC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,yEAAyE,EAAE,CAAC,CAAC;QACpH,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KACxB;IAGO,YAAY,CAAC,UAAU,EAAE,WAAW;QAC1C,WAAW,GAAG,WAAW,IAAI,EAAE,CAAC;QAChC,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,IAAI,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;QACtC,IAAI,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC;QACxC,IAAI,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;QACrD,IAAI,UAAU,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;QAExC,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,WAAW,EAAE,EAAE,UAAU,EAAE;YAC/D,IAAI,KAAK,GAAG,UAAU,GAAG,SAAS,CAAC;YACnC,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,SAAS,EAAE,WAAW,CAAC,CAAC;YAEnD,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;YACnC,KAAK,IAAI,MAAM,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE;gBAC3D,KAAK,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;aACjD;YACD,UAAU,CAAC,UAAU,CAAC,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;SAChD;QACD,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;KACpD;IAEO,kBAAkB,CAAC,KAAyB;QAClD,OAAO,KAAK;cACR,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE;cAC3D,GAAG,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC;KACpC;IAED,sBAAsB,CAAC,IAAe,EAAE,OAAqB;QAC3D,IAAI,KAAK,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvC,IAAI,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,KAAK,IAAI,SAAS;gBAC9D,SAAS;YACX,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAC;gBACnC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,KAAK,IAAI,SAAS;sBACxD,EAAE;sBACF,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC;;SAEvD;QACD,OAAO,KAAK,CAAC;KACd;IAED,aAAa,CAAC,WAAmB,EAAE,IAAe;QAChD,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;KACjC;IAED,eAAe,CAAC,GAAW;QACzB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAClD,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;QACxB,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;QACvB,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;QAC3B,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,MAAM,EAAE,CAAC;QAChB,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC;KACxE;IAED,eAAe,CAAC,OAAwB,EAAE,cAAmB;QAC3D,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;KACnE;IAED,kBAAkB,CAAC,OAAwB,EAAE,cAAmB;QAC9D,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;KACxE;IAED,aAAa,CACX,IAAe,EACf,eAAuB,EACvB,aAAqB,EACrB,oBAA4B;QAE5B,IAAI,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACvC,SAAS,CAAC,YAAY,GAAG,CAAC,OAAO;YAC/B,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC;YACpD,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC;YAEhD,IAAI,QAAQ,IAAI,MAAM,IAAI,MAAM,IAAI,QAAQ;gBAC1C,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;YAEjC,OAAO,IAAI,CAAC;SACb,CAAC;QACF,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;QACjD,OAAO,SAAS,CAAC;KAClB;IA6BD,oBAAoB;QAClB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;KACzD;IAED,SAAS;QACP,OAAO,IAAI,CAAC,cAAc,CAAC,wBAAwB,EAAE,CAAC;KACvD;IAED,iBAAiB,CAAC,IAAY;QAC5B,IAAI,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzB,IAAI,QAAQ,GACV,QAAQ,IAAI,IAAI,GAAG,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;QACzE,IAAI,WAAW,EAAE;YACf,IAAI,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,QAAgB,CAAC;YACrB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvB,IAAI,IAAI,CAAC,IAAI;oBACX,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;;oBAEjE,QAAQ;wBACN,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aACjE;iBAAM;gBACL,QAAQ,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aACrC;YACD,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;SAC/B;QACD,OAAO,EAAE,CAAC;KACX;IAED,sBAAsB;QACpB,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;KACvD;IAED,kBAAkB,CAAC,GAAqB;QACtC,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,IAAI,GAAG,CAAC,OAAO;gBAAE,OAAO,GAAG,CAAC,OAAO,CAAC;;gBAC/B,OAAO,GAAG,CAAC,MAAM,CAAC;SACxB;aAAM;YACL,IAAI,GAAG,CAAC,MAAM;gBAAE,OAAO,GAAG,CAAC,MAAM,CAAC;;gBAC7B,OAAO,GAAG,CAAC,OAAO,CAAC;SACzB;KACF;;;YA/OF,UAAU;;;YAhBF,QAAQ;;;ACAjB;AACA;AACA;MAEa,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EACxC,EACA,MAAc,CAAC,WAAW,EAAE;AAG7B;;;;;;AAMA;;MCPa,gBAAiB,SAAQ,kBAAkB;IAAxD;;;QAEE,UAAK,GAAmB,IAAI,cAAc,EAAE,CAAA;QAC5C,mBAAc,GAAmB,IAAI,CAAA;;QAErC,iBAAY,GAAW,IAAI,CAAA;QAC3B,aAAQ,GAAY,KAAK,CAAC;;QAE1B,cAAS,GAAW,6BAA6B,CAAC;;QAElD,2BAAsB,GAAW,EAAE,CAAA;;QAEnC,6BAAwB,GAAW,EAAE,CAAA;;QAMrC,aAAQ,GAAW,CAAC,CAAC;KACtB;;;MCtBY,8BAA8B;IAA3C;;QAgCE,aAAQ,GAAkB,IAAI,CAAC;;QAI/B,UAAK,GAAqB,IAAI,gBAAgB,EAAE,CAAC;;QA6BjD,iBAAY,GAAiB,IAAI,CAAC;;QAElC,qBAAgB,GAAuB,EAAE,CAAC;;QAM1C,eAAU,GAAY,KAAK,CAAC;KAC7B;;;MC3EY,0BAA2B,SAAQ,8BAA8B;IAA9E;;QAIE,mBAAc,GAAiB,YAAY,CAAC,IAAI,CAAA;QAChD,mBAAc,GAAiB,YAAY,CAAC,KAAK,CAAA;;QAEjD,8BAAyB,GAAkB,IAAI,CAAA;;QAI/C,iBAAY,GAAW,IAAI,CAAA;KAC5B;;;MChBY,SAAS;;;MCIT,2BAA4B,SAAQ,8BAA8B;IAA/E;;;QAOE,8BAAyB,GAAkB,IAAI,CAAC;KAGjD;;;MCXY,eAAgB,SAAQ,kBAAkB;IAAvD;;;QAEE,UAAK,GAAY,IAAI,CAAA;QACrB,mBAAc,GAAmB,cAAc,CAAC,OAAO,CAAA;KAExD;;;MCPY,gBAAgB;;;MCOhB,6BAA8B,SAAQ,8BAA8B;IAAjF;;;QAGE,WAAM,GAAS,GAAG,CAAA;KAanB;;;MChBY,yBAA0B,SAAQ,kBAAkB;IAAjE;;QAIE,kBAAa,GAAY,KAAK,CAAA;;QAI9B,4BAAuB,GAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;KAa9D;;;MC7BY,OAAO;IAEhB;QAEQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACvB;;;MCNI,SAAS;IAElB;QAEQ,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;KACzB;;;MCNI,iBAAiB;IAE1B;QAEQ,IAAI,CAAC,OAAO,GAAG,qBAAqB,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,sBAAsB,CAAC;KACxC;;;MCNI,mBAAmB;IAE5B;QAEQ,IAAI,CAAC,OAAO,GAAG,uBAAuB,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,oBAAoB,CAAC;KACtC;;;MCFI,eAAgB,SAAQ,kBAAkB;IAAvD;;;QAEE,gBAAW,GAAiB,YAAY,CAAC,KAAK,CAAA;;QAI9C,kBAAa,GAAmB,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,CAAA;;QAOlH,oBAAe,GAAY,IAAI,CAAA;;QAE/B,gBAAW,GAAS,IAAI,IAAI,EAAE,CAAA;QAC9B,kBAAa,GAAY,KAAK,CAAA;QAC9B,oBAAe,GAAY,KAAK,CAAA;QAChC,iBAAY,GAAqB,KAAK,CAAC;KAExC;;;MCxBY,gBAAgB;;;MCOhB,mBAAoB,SAAQ,kBAAkB;IAA3D;;;QAGE,oBAAe,GAAW,IAAI,CAAA;;QAE9B,UAAK,GAAQ,IAAI,CAAA;;QAQjB,gBAAW,GAAgB,IAAI,WAAW,EAAE,CAAA;;QAU5C,mBAAc,GAAmB,cAAc,CAAC,OAAO,CAAA;;QAIvD,sBAAiB,GAAY,KAAK,CAAC;;;QAMnC,eAAU,GAAW,OAAO,CAAA;QAE5B,kBAAa,GAAQ,IAAI,CAAA;QACzB,kBAAa,GAAY,KAAK,CAAA;KAE/B;;;MC7CY,YAAY;;;MCQZ,gBAAiB,SAAQ,kBAAkB;IAAxD;;;QAkBE,mBAAc,GAAmB,cAAc,CAAC,OAAO,CAAA;;QAIvD,0BAAqB,GAAY,KAAK,CAAA;;QAEtC,kBAAa,GAAY,IAAI,CAAA;;QAE7B,eAAU,GAAY,IAAI,CAAA;;QAE1B,kBAAa,GAAW,EAAE,CAAA;;QAE1B,oBAAe,GAAW,CAAC,CAAA;;QAE3B,sBAAiB,GAAY,IAAI,CAAA;;QAEjC,0BAAqB,GAAW,EAAE,CAAA;;QAElC,wBAAmB,GAAW,IAAI,CAAA;;QAElC,uBAAkB,GAAW,MAAM,CAAA;;QAInC,mBAAc,GAAW,OAAO,CAAA;;QAEhC,2BAAsB,GAAW,eAAe,CAAA;;QAEhD,oBAAe,GAAW,EAAE,CAAA;QAC5B,kBAAa,GAAW,EAAE,CAAA;;QAE1B,sBAAiB,GAAY,KAAK,CAAC;QACnC,oBAAe,GAAW,IAAI,CAAC;QAI/B,iBAAY,GAAiB,YAAY,CAAC,YAAY,CAAA;QAEtD,oBAAe,GAAY,IAAI,CAAC;KAEjC;;;MChEY,UAAU;IAAvB;;;QAUI,kBAAa,GAAU,IAAI,CAAA;KAI9B;;;MCbY,aAAa;IAA1B;;QAEE,kBAAa,GAAW,EAAE,CAAA;QAC1B,oBAAe,GAAW,IAAI,CAAA;;;QAG9B,YAAO,GAAiB,EAAE,CAAA;;QAE1B,eAAU,GAAW,CAAC,CAAA;;;;QAItB,aAAQ,GAAW,EAAE,CAAA;;QAErB,gCAA2B,GAAa,EAAE,CAAA;;QAE1C,gCAA2B,GAAa,EAAE,CAAA;;QAE1C,4CAAuC,GAAa,EAAE,CAAA;;QAEtD,+BAA0B,GAAa,EAAE,CAAA;;QAEzC,kCAA6B,GAAa,EAAE,CAAA;;QAQ5C,uBAAkB,GAAY,KAAK,CAAA;;QAInC,uBAAkB,GAAY,IAAI,CAAA;;QAElC,uCAAkC,GAAY,IAAI,CAAA;;QAElD,qBAAgB,GAAY,IAAI,CAAA;;QAEhC,sBAAiB,GAAY,KAAK,CAAA;;QAElC,qBAAgB,GAAY,KAAK,CAAA;;QAIjC,iBAAY,GAAY,IAAI,CAAA;QAC5B,mBAAc,GAAmB,cAAc,CAAC,OAAO,CAAA;;QAGvD,0BAAqB,GAAW,IAAI,CAAC;QACrC,mBAAc,GAAY,KAAK,CAAC;QAChC,wBAAmB,GAAa,IAAI,CAAC;KACtC;;;MCpDY,kBAAoB,SAAQ,kBAAkB;;;MCF9C,eAAe;;;MCGf,WAAW;IAAxB;;QAGE,cAAS,GAAc,IAAI,CAAC;;QAG5B,oBAAe,GAAyB,IAAI,CAAA;;QAG5C,qBAAgB,GAAqB,gBAAgB,CAAC,YAAY,CAAC;;QAGnE,qBAAgB,GAAa,IAAI,CAAC;;QAGlC,0BAAqB,GAAa,IAAI,CAAC;;QAGvC,mBAAc,GAAa,IAAI,CAAC;;QAGhC,qBAAgB,GAAa,IAAI,CAAC;;QAGlC,+BAA0B,GAAY,KAAK,CAAC;;QAG5C,6BAAwB,GAAY,KAAK,CAAC;;QAG1C,mBAAc,GAAY,KAAK,CAAC;;QAGhC,wBAAmB,GAAY,KAAK,CAAC;KACtC;;;MClCY,wBAAwB;IAArC;;QAEE,uBAAkB,GAAW,IAAI,CAAC;;QAGlC,qBAAgB,GAAW,IAAI,CAAC;;QAGhC,qBAAgB,GAAW,IAAI,CAAC;;QAGhC,0BAAqB,GAA0B,qBAAqB,CAAC,MAAM,CAAC;;QAG5E,0BAAqB,GAAa,IAAI,CAAC;;QAGvC,uBAAkB,GAAU,EAAE,CAAC;;QAG/B,oBAAe,GAAyB,IAAI,CAAA;;QAG5C,qBAAgB,GAAqB,gBAAgB,CAAC,YAAY,CAAC;;QAGnE,mBAAc,GAAa,IAAI,CAAC;;QAGhC,qBAAgB,GAAa,IAAI,CAAC;;QAGlC,+BAA0B,GAAW,IAAI,CAAC;;QAG1C,+BAA0B,GAAY,KAAK,CAAC;;QAG5C,6BAAwB,GAAY,KAAK,CAAC;;QAG1C,wBAAmB,GAAY,KAAK,CAAC;;QAErC,qBAAgB,GAAY,IAAI,CAAC;;QAEjC,oBAAe,GAAY,IAAI,CAAC;KAEjC;;;MCnDY,aAAa;;;MCCb,eAAe;IAA5B;QAKE,mBAAc,GAAW,EAAE,CAAC;QAI5B,kBAAa,GAAW,KAAK,CAAC;QAE9B,qBAAgB,GAAW,QAAQ,CAAC;QACpC,kBAAa,GAAU,EAAE,CAAC;QAC1B,sBAAiB,GAAoB,EAAE,CAAC;QACxC,qBAAgB,GAAY,KAAK,CAAC;QAClC,wBAAmB,GAAY,KAAK,CAAC;QACrC,eAAU,GAAY,KAAK,CAAC;KAC7B;;;MClBY,aAAa;IAA1B;QACI,oBAAe,GAAqB,EAAE,CAAC;QACvC,kBAAa,GAAY,IAAI,CAAC;QAC9B,iBAAY,GAAY,IAAI,CAAC;QAC7B,4BAAuB,GAAS,KAAK,CAAC;KACzC;;;MCFY,iBAAiB;IAC5B;QACE,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;QACpC,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;QACxC,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;QACnC,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;KAC9C;CAeF;MAEY,eAAe;IAA5B;QAEE,oBAAe,GAAiB,EAAE,CAAC;KACpC;CAAA;MACY,SAAS;IAAtB;QAEE,kBAAa,GAAS,KAAK,CAAC;QAC5B,aAAQ,GAAa,IAAI,CAAC;KAC3B;CAAA;MACY,UAAU;IAAvB;QAEE,kBAAa,GAAW,MAAM,CAAC;QAC/B,aAAQ,GAAa,IAAI,CAAC;KAC3B;CAAA;MACY,YAAY;IAAzB;QAEE,kBAAa,GAAW,QAAQ,CAAC;QACjC,aAAQ,GAAa,IAAI,CAAC;KAC3B;CAAA;MACY,aAAa;IAMxB;QAJA,kBAAa,GAAW,QAAQ,CAAC;QACjC,aAAQ,GAAa,IAAI,CAAC;QAC1B,4BAAuB,GAAY,IAAI,CAAC;QAGtC,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;KAC/B;CACF;MACY,YAAY;IAAzB;QAEE,kBAAa,GAAW,QAAQ,CAAC;QACjC,aAAQ,GAAa,IAAI,CAAC;KAC3B;CAAA;MACY,aAAa;IAA1B;QAEE,mBAAc,GAAa,IAAI,CAAC;KAEjC;CAAA;MACY,YAAY;IAAzB;QAEE,yBAAoB,GAAmB,IAAI,cAAc,EAAE,CAAC;KAC7D;CAAA;MACY,eAAe;IAA5B;QAEE,wBAAmB,GAAyB,EAAE,CAAA;KAC/C;CAAA;MACY,kBAAkB;IAC7B,YAAY,IAAY,EAAE,GAAW,EAAE,YAAsB,EAAC,aAAkB,IAAI;QAQpF,aAAQ,GAAa,IAAI,CAAC;QAPxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;KAC9B;;;MCrFU,iBAAiB;IAA9B;QAGI,aAAQ,GAAa,IAAI,CAAC;KAC7B;;;MCLY,UAAU;IACnB,YAAY,KAAa,EAAE,MAAe,EAAE,QAAgB,IAAI;QAC9D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;;;ICLO;AAAZ,WAAY,YAAY;IACpB,yDAAY,CAAA;IACZ,uDAAY,CAAA;AAEhB,CAAC,EAJW,YAAY,KAAZ,YAAY;;ICAX;AAAb,WAAa,OAAO;IAChB,6BAAkB,CAAA;IAClB,yBAAc,CAAA;IACd,yBAAc,CAAA;IACd,+BAAoB,CAAA;IACpB,yBAAc,CAAA;IACd,wBAAa,CAAA;IACb,0BAAe,CAAA;IACf,mCAAwB,CAAA;IACxB,2BAAgB,CAAA;IAChB,yBAAc,CAAA;IACd,uBAAY,CAAA;IACZ,2BAAgB,CAAA;IAChB,yBAAc,CAAA;IACd,4BAAiB,CAAA;IACjB,yBAAc,CAAA;IACd,yBAAc,CAAA;IACd,4BAAiB,CAAA;IACjB,0BAAe,CAAA;IACf,yBAAc,CAAA;IACd,yBAAc,CAAA;IACd,wBAAa,CAAA;IACb,uBAAY,CAAA;IACZ,yBAAc,CAAA;IACd,wBAAa,CAAA;IACb,yBAAc,CAAA;IACd,sCAA2B,CAAA;IAC3B,0BAAe,CAAA;IACf,wBAAa,CAAA;IACb,6CAAkC,CAAA;IAClC,sCAA2B,CAAA;IAC3B,wBAAa,CAAA;IACb,0BAAe,CAAA;IACf,6BAAkB,CAAA;IAClB,yBAAc,CAAA;IACd,0BAAe,CAAA;IACf,0BAAe,CAAA;IACf,wBAAa,CAAA;IACb,2BAAgB,CAAA;IAChB,sCAA2B,CAAA;IAC3B,+BAAoB,CAAA;IACpB,wCAA6B,CAAA;IAC7B,sBAAW,CAAA;IACX,uBAAY,CAAA;IACZ,uBAAY,CAAA;IACZ,iCAAsB,CAAA;IACtB,uBAAY,CAAA;IACZ,0BAAe,CAAA;IACf,yBAAc,CAAA;IACd,sDAA2C,CAAA;IAC3C,+CAAoC,CAAA;IACpC,6BAAkB,CAAA;IAClB,2BAAgB,CAAA;IAChB,kCAAkB,CAAA;IAClB,yBAAc,CAAA;IACd,sBAAW,CAAA;IACX,8BAAc,CAAA;IACd,wBAAa,CAAA;IACb,+BAAoB,CAAA;IACpB,yBAAc,CAAA;IACd,0BAAe,CAAA;IACf,0BAAe,CAAA;IACf,mCAAwB,CAAA;IACxB,yBAAc,CAAA;IACd,uBAAY,CAAA;IACZ,4BAAiB,CAAA;IACjB,kCAAuB,CAAA;IACvB,yBAAc,CAAA;IACd,yBAAc,CAAA;IACd,0BAAe,CAAA;IACf,iCAAsB,CAAA;IACtB,8BAAmB,CAAA;IACnB,sBAAW,CAAA;IACX,yBAAc,CAAA;IACd,wBAAa,CAAA;IACb,8BAAmB,CAAA;IACnB,iCAAsB,CAAA;IACtB,uBAAY,CAAA;IACZ,wBAAa,CAAA;IACb,yBAAc,CAAA;IACd,yBAAc,CAAA;IACd,uBAAY,CAAA;IACZ,2BAAgB,CAAA;IAChB,wBAAa,CAAA;IACb,2BAAgB,CAAA;IAChB,yBAAc,CAAA;IACd,4BAAiB,CAAA;IACjB,sBAAW,CAAA;IACX,2BAAgB,CAAA;IAChB,0BAAe,CAAA;IACf,wBAAa,CAAA;IACb,8BAAmB,CAAA;IACnB,wBAAa,CAAA;IACb,uBAAY,CAAA;IACZ,0BAAe,CAAA;IACf,0BAAe,CAAA;IACf,yBAAc,CAAA;IACd,yBAAc,CAAA;IACd,uBAAY,CAAA;IACZ,2BAAgB,CAAA;IAChB,sBAAW,CAAA;IACX,sBAAW,CAAA;IACX,yBAAc,CAAA;IACd,2BAAgB,CAAA;IAChB,wBAAa,CAAA;IACb,uBAAY,CAAA;IACZ,yBAAc,CAAA;IACd,uBAAY,CAAA;IACZ,wBAAa,CAAA;IACb,wBAAa,CAAA;IACb,4BAAiB,CAAA;IACjB,uBAAY,CAAA;IACZ,0BAAe,CAAA;IACf,wBAAa,CAAA;IACb,wBAAa,CAAA;IACb,4BAAiB,CAAA;IACjB,sBAAW,CAAA;IACX,wBAAa,CAAA;IACb,yBAAc,CAAA;IACd,yBAAc,CAAA;IACd,yBAAc,CAAA;IACd,uBAAY,CAAA;IACZ,+BAAoB,CAAA;IACpB,2BAAgB,CAAA;IAChB,4BAAiB,CAAA;IACjB,uBAAY,CAAA;IACZ,2BAAgB,CAAA;IAChB,4BAAiB,CAAA;IACjB,wBAAa,CAAA;IACb,0BAAe,CAAA;IACf,0BAAe,CAAA;IACf,sBAAW,CAAA;IACX,uBAAY,CAAA;IACZ,iCAAsB,CAAA;IACtB,4BAAiB,CAAA;IACjB,4BAAiB,CAAA;IACjB,2BAAgB,CAAA;IAChB,yBAAc,CAAA;IACd,wBAAa,CAAA;IACb,4BAAiB,CAAA;IACjB,yBAAc,CAAA;IACd,wBAAa,CAAA;IACb,0BAAe,CAAA;IACf,4BAAiB,CAAA;IACjB,4BAAiB,CAAA;IACjB,yBAAc,CAAA;IACd,4BAAiB,CAAA;IACjB,yBAAc,CAAA;IACd,yBAAc,CAAA;IACd,uBAAY,CAAA;IACZ,uBAAY,CAAA;IACZ,6BAAkB,CAAA;IAClB,8BAAmB,CAAA;IACnB,4BAAiB,CAAA;IACjB,2BAAgB,CAAA;IAChB,uBAAY,CAAA;IACZ,yBAAc,CAAA;IACd,sBAAW,CAAA;IACX,+BAAoB,CAAA;IACpB,4BAAiB,CAAA;IACjB,wCAA6B,CAAA;IAC7B,wBAAa,CAAA;IACb,sBAAW,CAAA;IACX,0BAAe,CAAA;IACf,uBAAY,CAAA;IACZ,2BAAgB,CAAA;IAChB,wBAAa,CAAA;IACb,gCAAqB,CAAA;IACrB,0BAAe,CAAA;IACf,sBAAW,CAAA;IACX,6BAAkB,CAAA;IAClB,wBAAa,CAAA;IACb,0BAAe,CAAA;IACf,4BAAiB,CAAA;IACjB,uBAAY,CAAA;IACZ,8BAAc,CAAA;IACd,yBAAc,CAAA;IACd,wBAAa,CAAA;IACb,wBAAa,CAAA;IACb,sCAAsB,CAAA;IACtB,6BAAkB,CAAA;IAClB,oCAAyB,CAAA;IACzB,4BAAiB,CAAA;IACjB,6BAAkB,CAAA;IAClB,wCAA6B,CAAA;IAC7B,8CAAmC,CAAA;IACnC,uBAAY,CAAA;IACZ,2BAAgB,CAAA;IAChB,mDAAyB,CAAA;IACzB,6BAAkB,CAAA;IAClB,yBAAc,CAAA;IACd,wBAAa,CAAA;IACb,4BAAiB,CAAA;IACjB,6BAAkB,CAAA;IAClB,2BAAgB,CAAA;IAChB,6BAAkB,CAAA;IAClB,0BAAe,CAAA;IACf,0BAAe,CAAA;IACf,gCAAqB,CAAA;IACrB,yBAAc,CAAA;IACd,6BAAkB,CAAA;IAClB,4BAAiB,CAAA;IACjB,4BAAiB,CAAA;IACjB,uBAAY,CAAA;IACZ,0BAAe,CAAA;IACf,uBAAY,CAAA;IACZ,0BAAe,CAAA;IACf,qCAA0B,CAAA;IAC1B,2BAAgB,CAAA;IAChB,wBAAa,CAAA;IACb,6BAAkB,CAAA;IAClB,uBAAY,CAAA;IACZ,wBAAa,CAAA;IACb,4BAAiB,CAAA;IACjB,0BAAe,CAAA;IACf,0BAAe,CAAA;IACf,4BAAiB,CAAA;IACjB,sBAAW,CAAA;IACX,yBAAc,CAAA;IACd,uBAAY,CAAA;IACZ,mCAAwB,CAAA;IACxB,yBAAc,CAAA;IACd,wBAAa,CAAA;IACb,8BAAmB,CAAA;IACnB,uCAA4B,CAAA;IAC5B,wBAAa,CAAA;IACb,iCAAsB,CAAA;IACtB,wBAAa,CAAA;IACb,yBAAc,CAAA;IACd,oCAAyB,CAAA;IACzB,+BAAoB,CAAA;IACpB,8BAAmB,CAAA;IACnB,yBAAc,CAAA;IACd,4BAAiB,CAAA;IACjB,yBAAc,CAAA;IACd,6BAAkB,CAAA;IAClB,2BAAgB,CAAA;IAChB,yBAAc,CAAA;IACd,iCAAsB,CAAA;IACtB,+BAAoB,CAAA;IACpB,uBAAY,CAAA;IACZ,wBAAa,CAAA;IACb,0BAAe,CAAA;IACf,mCAAmB,CAAA;AACvB,CAAC,EApPY,OAAO,KAAP,OAAO;;ICAR;AAAZ,WAAY,QAAQ;IAEhB,iCAAqB,CAAA;IACrB,iCAAqB,CAAA;IACrB,2BAAe,CAAA;AAEnB,CAAC,EANW,QAAQ,KAAR,QAAQ;;ICAR;AAAZ,WAAY,MAAM;IAEd,yBAAe,CAAA;IACf,6BAAmB,CAAA;IACnB,uBAAa,CAAA;IACb,yBAAa,CAAA;IACb,mBAAO,CAAA;AACX,CAAC,EAPW,MAAM,KAAN,MAAM;;ICAN;AAAZ,WAAY,IAAI;IAEZ,6BAAqB,CAAA;IACrB,qBAAa,CAAA;IACb,qBAAa,CAAA;AACjB,CAAC,EALW,IAAI,KAAJ,IAAI;;ICAJ;AAAZ,WAAY,IAAI;IAEZ,uBAAe,CAAA;IACf,iBAAS,CAAA;IACT,iBAAS,CAAA;IACT,+BAAqB,CAAA;IACrB,yBAAe,CAAA;AACnB,CAAC,EAPW,IAAI,KAAJ,IAAI;;ICAJ;AAAZ,WAAY,KAAK;IAEb,sBAAa,CAAA;IACb,0BAAiB,CAAA;IACjB,gCAAuB,CAAA;IACvB,wBAAa,CAAA;AACjB,CAAC,EANW,KAAK,KAAL,KAAK;;ICAL;AAAZ,WAAY,QAAQ;IAClB,mCAAuB,CAAA;IACvB,+GAAmG,CAAA;IACnG,gHAAoG,CAAA;IACpG,yDAA6C,CAAA;IAC7C,6BAAiB,CAAA;IACjB,8BAAkB,CAAA;IAClB,+BAAmB,CAAA;IACnB,mCAAuB,CAAA;IACvB,gDAAoC,CAAA;IACpC,mGAAuF,CAAA;IACvF,sCAA0B,CAAA;IAC1B,4BAAgB,CAAA;IAChB,mDAAuC,CAAA;IACvC,8BAAkB,CAAA;IAClB,qCAAyB,CAAA;IACzB,6IAAiI,CAAA;IACjI,iCAAqB,CAAA;IACrB,qBAAS,CAAA;AACX,CAAC,EAnBW,QAAQ,KAAR,QAAQ;;ACApB;;;;ACAA;;;;;;"}
|