{"version":3,"file":"bsynchro-crm.mjs","sources":["../../../projects/bsynchro-crm/src/lib/crm-constants.ts","../../../projects/bsynchro-crm/src/lib/services/activity.service.ts","../../../projects/bsynchro-crm/src/lib/models/calendar/CalendarOptions.ts","../../../projects/bsynchro-crm/src/lib/models/events/EventBase.ts","../../../projects/bsynchro-crm/src/lib/models/events/CalendarEvent.ts","../../../projects/bsynchro-crm/src/lib/components/calendar/calendar.component.ts","../../../projects/bsynchro-crm/src/lib/components/calendar/calendar.component.html","../../../projects/bsynchro-crm/src/lib/models/events/ActivityListEvent.ts","../../../projects/bsynchro-crm/src/lib/components/event-list/event-list.component.ts","../../../projects/bsynchro-crm/src/lib/components/event-list/event-list.component.html","../../../projects/bsynchro-crm/src/lib/models/common/Options.ts","../../../projects/bsynchro-crm/src/lib/components/event-planner/event-planner.component.ts","../../../projects/bsynchro-crm/src/lib/components/event-planner/event-planner.component.html","../../../projects/bsynchro-crm/src/lib/services/contacts.service.ts","../../../projects/bsynchro-crm/src/lib/services/opportunities.service.ts","../../../projects/bsynchro-crm/src/lib/services/activity-management.service.ts","../../../projects/bsynchro-crm/src/lib/components/activity-complete/activity-complete.component.ts","../../../projects/bsynchro-crm/src/lib/components/activity-complete/activity-complete.component.html","../../../projects/bsynchro-crm/src/lib/services/blacklist.service.ts","../../../projects/bsynchro-crm/src/lib/models/sale-manager-selection/salesManagerSelectionSettings.ts","../../../projects/bsynchro-crm/src/lib/models/sale-manager-selection/mode.enum.ts","../../../projects/bsynchro-crm/src/lib/components/sales-manager-selection/sales-manager-selection.component.ts","../../../projects/bsynchro-crm/src/lib/components/sales-manager-selection/sales-manager-selection.component.html","../../../projects/bsynchro-crm/src/lib/components/activity-detail/activity-detail.component.ts","../../../projects/bsynchro-crm/src/lib/components/activity-detail/activity-detail.component.html","../../../projects/bsynchro-crm/src/lib/services/quotations.service.ts","../../../projects/bsynchro-crm/src/lib/components/activity-opportunity/activity-opportunity.component.ts","../../../projects/bsynchro-crm/src/lib/components/activity-opportunity/activity-opportunity.component.html","../../../projects/bsynchro-crm/src/lib/components/activity-postpone/activity-postpone.component.ts","../../../projects/bsynchro-crm/src/lib/components/activity-postpone/activity-postpone.component.html","../../../projects/bsynchro-crm/src/lib/components/activity/activity.component.ts","../../../projects/bsynchro-crm/src/lib/components/activity/activity.component.html","../../../projects/bsynchro-crm/src/lib/components/contact-summary/contact-summary.component.ts","../../../projects/bsynchro-crm/src/lib/components/contact-summary/contact-summary.component.html","../../../projects/bsynchro-crm/src/lib/services/printout.service.ts","../../../projects/bsynchro-crm/src/lib/components/contact-cna-summary/contact-cna-summary.component.ts","../../../projects/bsynchro-crm/src/lib/components/contact-cna-summary/contact-cna-summary.component.html","../../../projects/bsynchro-crm/src/lib/components/opportunity-summary/opportunity-summary.component.ts","../../../projects/bsynchro-crm/src/lib/components/opportunity-summary/opportunity-summary.component.html","../../../projects/bsynchro-crm/src/lib/components/opportunities-repeater/opportunities-repeater.component.ts","../../../projects/bsynchro-crm/src/lib/components/opportunities-repeater/opportunities-repeater.component.html","../../../projects/bsynchro-crm/src/lib/components/contact-view/contact-view.component.ts","../../../projects/bsynchro-crm/src/lib/components/contact-view/contact-view.component.html","../../../projects/bsynchro-crm/src/lib/services/sharedStore.service.ts","../../../projects/bsynchro-crm/src/lib/components/quote-view/quote-view.component.ts","../../../projects/bsynchro-crm/src/lib/components/quote-view/quote-view.component.html","../../../projects/bsynchro-crm/src/lib/components/quote-repeater/quote-repeater.component.ts","../../../projects/bsynchro-crm/src/lib/components/quote-repeater/quote-repeater.component.html","../../../projects/bsynchro-crm/src/lib/components/opportunity-view/opportunity-view.component.ts","../../../projects/bsynchro-crm/src/lib/components/opportunity-view/opportunity-view.component.html","../../../projects/bsynchro-crm/src/lib/models/printout/PrintoutModel.ts","../../../projects/bsynchro-crm/src/lib/services/crm.service.ts","../../../projects/bsynchro-crm/src/lib/bsynchro-crm.module.ts","../../../projects/bsynchro-crm/src/public-api.ts","../../../projects/bsynchro-crm/src/bsynchro-crm.ts"],"sourcesContent":["export class CRM_API_CONSTANTS {\r\n    static Action = class {\r\n        public static readonly Default = '';\r\n        public static readonly Post = 'post';\r\n        public static readonly Many = 'many';\r\n        public static readonly Get = 'get';\r\n        public static readonly Delete = 'delete';\r\n\r\n        // Contact\r\n        public static readonly Search = 'search';\r\n\r\n        // DataList\r\n        public static readonly GetDatalistByName = 'getDatalistByName';\r\n        public static readonly GetDataListsByName = 'getDataListsByName';\r\n\r\n        // Activity\r\n        public static readonly DismissActivity = 'dismiss';\r\n        public static readonly CompleteActivity = 'complete';\r\n        public static readonly GetDatalistRows = 'getDatalistRows';\r\n        public static readonly GetManyDatalistsRows = 'GetManyDatalistsRows';\r\n        public static readonly CanInviteManagerToMeeting = 'CanInviteManagerToMeeting';\r\n\r\n\r\n        // Simulation\r\n        public static readonly GetEligibleOptions = 'GetEligibleOptions';\r\n        public static readonly GetPackageProposition = 'GetPackageProposition';\r\n        public static readonly ComputeOption = 'ComputeOption';\r\n        public static readonly ComputeOptions = 'ComputeOptions';\r\n        public static readonly GetSimulationById = 'GetSimulationById';\r\n        public static readonly GetSimulationSettings = 'GetSimulationSettings';\r\n        public static readonly UpsertSimulation = \"UpsertSimulation\";\r\n\r\n        // Identity\r\n        public static readonly ChangePassword = 'ChangePassword';\r\n        public static readonly GetUniversalPrincipleById = 'GetById';\r\n        public static readonly UpdateUser = 'UpdateUser';\r\n        public static readonly GetSubordinates = 'GetSubordinates';\r\n\r\n        // Opportunity\r\n        public static readonly CloseOpportunity = 'CloseOpportunity';\r\n        public static readonly SetOpportunityState = 'SetOpportunityState';\r\n\r\n        // Quotations\r\n        public static readonly GetQuotationByOpportunityId = 'GetQuotationByOpportunityId';\r\n        public static readonly WinQuote = 'WinQuote';\r\n        public static readonly LoseQuote = 'LoseQuote';\r\n        public static readonly SetAsSentToClient = 'SetAsSentToClient';\r\n\r\n        // Printout\r\n        public static readonly GeneratePrintout = 'GeneratePrintout';\r\n\r\n        // CNA\r\n        public static readonly FindByClientId = 'findbyclientid';\r\n\r\n    }\r\n\r\n    static Controller = class {\r\n        public static readonly Contact = 'Contact';\r\n        public static readonly Activity = 'Activity';\r\n        public static readonly Opportunity = 'Opportunity';\r\n        public static readonly Simulation = 'Simulation';\r\n        public static readonly File = 'File';\r\n        public static readonly Quotations = 'Quotation';\r\n        public static readonly Printout = 'Printout';\r\n        public static readonly Cna = 'CapitalNeed';\r\n    }\r\n\r\n\r\n    static Field = class {\r\n      public static readonly OwnerId = 'OwnerId';\r\n      public static readonly ScheduledStart = 'ScheduledStart';\r\n      public static readonly ScheduledEnd = 'ScheduledEnd';\r\n      public static readonly OpportunityId = 'OpportunityId';\r\n      public static readonly ContactId = 'ContactId';\r\n      public static readonly Id = '_id';\r\n      public static readonly CreationDate = 'CreationDate';\r\n      public static readonly StateCode = 'StateCode';\r\n      public static readonly Invited = 'Invited';\r\n    }\r\n\r\n    // Common Route\r\n    static Route = class {\r\n      public static readonly Id = 'id';\r\n    }\r\n\r\n    static Operator = class {\r\n      public static readonly Equal = '=';\r\n      public static readonly Ne = '!=';\r\n      public static readonly Gt = '>';\r\n      public static readonly Gte = '>=';\r\n      public static readonly Lt = '<';\r\n      public static readonly Lte = '<=';\r\n      public static readonly Contains = 'contains';\r\n      public static readonly StartsWith = 'startsWith';\r\n\r\n    }\r\n\r\n\r\n}\r\n\r\n\r\n//#region opportunities\r\nexport class OpportunitiesConstants {\r\n\r\n    static Route = class {\r\n        public static readonly opportunity = 'opportunity';\r\n        public static readonly Id = 'id';\r\n        public static readonly OpportunityView = 'opportunityView';\r\n        public static readonly ContactId = 'contactId';\r\n        public static readonly ContactOpportunity = 'contactOpportunity';\r\n    }\r\n}\r\n\r\nexport class ContactViewProperties {\r\n        public static readonly DateOfBirth = 'dateOfBirth';\r\n        public static readonly MaritalStatus = 'maritalStatus';\r\n        public static readonly Spouses = 'spouses';\r\n        public static readonly Children = 'children';\r\n\r\n}\r\n\r\n\r\nexport enum OpportunityState {\r\n    Open = 1,\r\n    Won = 2,\r\n    Lost = 3\r\n}\r\n//#endregion\r\n\r\n\r\n//#region Activity\r\nexport class ActivityConstants {\r\n    public static ActivityTypes = {\r\n        '1': {\r\n            name: 'todo',\r\n            color: '#a864cc',\r\n            suffix: ' with ',\r\n            class: 'todo-activity'\r\n        },\r\n        '2': {\r\n            name: 'email',\r\n            color: '#eb9b4a',\r\n            suffix: ' to ',\r\n            class: 'email-activity',\r\n        },\r\n        '3': {\r\n            name: 'meeting',\r\n            color: '#55c2eb',\r\n            suffix: ' with ',\r\n            class: 'meeting-activity'\r\n        },\r\n        '4': {\r\n            name: 'call',\r\n            color: '#4ad991',\r\n            suffix: ' with ',\r\n            class: 'call-activity'\r\n        },\r\n        '5': {\r\n            name: 'none',\r\n            color: 'gray',\r\n            suffix: '',\r\n            class: 'none'\r\n        }\r\n    }\r\n\r\n    public static ActivityTypeCodes = {\r\n        TODO: '1',\r\n        Email: '2',\r\n        Meeting: '3',\r\n        Call: '4',\r\n        None: '5'\r\n    }\r\n\r\n    public static ActionName = class {\r\n        public static readonly DismissActivity = 'dismiss';\r\n    }\r\n\r\n    public static Route = class {\r\n        public static readonly ActivityId = 'activityId';\r\n        public static readonly ContactId = 'contactId';\r\n        public static readonly OpportunityId = 'opportunityId';\r\n        public static readonly Postpone = 'postpone';\r\n        public static readonly CompleteActivity = 'complete';\r\n        public static readonly ContactList = 'contact';\r\n        public static readonly OpportunityList = 'opportunity';\r\n    }\r\n\r\n    public static From = class {\r\n        public static readonly OpportunityList = 'opportunityList';\r\n        public static readonly EventList = 'eventList';\r\n        public static readonly ContactList = 'contactList';\r\n        public static readonly EventList_Postpone = 'eventList-postpone';\r\n    }\r\n\r\n\r\n    public static ActivitySteps = class {\r\n        public static readonly CurrentActivityStep = 0;\r\n        public static readonly OpportunityStep = 1;\r\n        public static readonly NextActivityWithoutOpportunityStep = 1;\r\n        public static readonly NextActivityWithOpportunityStep = 2;\r\n    }\r\n}\r\n\r\n\r\n\r\nexport enum ActivityState {\r\n    New = 1,\r\n    Completed = 2,\r\n    Dismissed = 3\r\n}\r\n\r\nexport enum ActivityMode {\r\n    Current,\r\n    Next\r\n}\r\n//#endregion\r\n\r\n\r\n//#region DataList Constants\r\nexport class DataListsConstants {\r\n\r\n    // ! requested DataListNames, dataList fields, and dataList References in formio Jsons should be EXACTLY Matching, with propertyName 'DataListName'\r\n\r\n    public static requestedDataLists = ['Religion', 'MaritalStatus', 'ContactStatus'];\r\n\r\n    public static Religion = [\r\n        {\r\n            value: '1',\r\n            label: 'JUDAISM'\r\n        },\r\n        {\r\n            value: '2',\r\n            label: 'CHRISTIANITY'\r\n        },\r\n        {\r\n            value: '3',\r\n            label: 'ISLAM'\r\n        },\r\n        {\r\n            value: '4',\r\n            label: 'HINDUISM'\r\n        },\r\n        {\r\n            value: '5',\r\n            label: 'BUDDHISM'\r\n        },\r\n        {\r\n            value: '6',\r\n            label: 'SIKHISM'\r\n        },\r\n        {\r\n            value: '7',\r\n            label: 'ANIMISM'\r\n        }\r\n    ];\r\n\r\n    public static MaritalStatus = [\r\n        {\r\n            value: '1',\r\n            label: 'Single'\r\n        },\r\n        {\r\n            value: '2',\r\n            label: 'Married'\r\n        },\r\n        {\r\n            value: '3',\r\n            label: 'Divorced'\r\n        },\r\n        {\r\n            value: '4',\r\n            label: 'Widow(er)'\r\n        },\r\n        {\r\n            value: '5',\r\n            label: 'Separated'\r\n        },\r\n        {\r\n            value: '9',\r\n            label: 'Unknown'\r\n        }\r\n    ];\r\n\r\n    public static ContactStatus = [\r\n        {\r\n            value: '1',\r\n            label: 'Lead'\r\n        },\r\n        {\r\n            value: '2',\r\n            label: 'Prospect'\r\n        },\r\n        {\r\n            value: '3',\r\n            label: 'Customer'\r\n        }\r\n    ];\r\n\r\n    public static DurationUnit = [\r\n        {\r\n            code: '1',\r\n            name: 'Days'\r\n        },\r\n        {\r\n            code: '2',\r\n            name: 'Weeks'\r\n        },\r\n        {\r\n            code: '3',\r\n            name: 'Months'\r\n        }\r\n    ];\r\n\r\n    static DataListName = class {\r\n        public static readonly ActivityType = 'ActivityType';\r\n        public static readonly ActivityPurpose = 'ActivityPurpose';\r\n        public static readonly ContactType = 'ContactType';\r\n        public static readonly NextActivityType = 'NextActivityType';\r\n        public static readonly OpportunityStatus = 'OpportunityStatus';\r\n        public static readonly OpportunityStage = 'OpportunityStage';\r\n        public static readonly LostOpportunityReasons = 'LostOpportunityReasons';\r\n        public static readonly OpportunityProbability = 'OpportunityProbability';\r\n        public static readonly Salutation = 'Salutation';\r\n\r\n        public static readonly Gender = 'gender';\r\n        public static readonly Branches = 'Branches';\r\n        public static readonly Locations = 'Location';\r\n        public static readonly LineOfBusiness = 'LineOfBusiness';\r\n    }\r\n}\r\n\r\n\r\nexport class EventTypes {\r\n  public static readonly CurrentActivityAdded = 'currentActivityAdded';\r\n  public static readonly NextActivityCompletedAndAdded = 'nextActivityCompletedAndAdded';\r\n  public static readonly CompletedActivityAdded = 'completedActivityAdded';\r\n  public static readonly ActivityCanceled = 'cancel';\r\n  public static readonly Complete = 'complete';\r\n  public static readonly Postpone = 'postpone';\r\n  public static readonly Dismiss = 'dismiss';\r\n  public static readonly AddNewActivity = 'addNewActivity';\r\n  public static readonly ActivityPostponeSave = 'activityPostponeSave';\r\n  public static readonly ActivityPostponeCancel = 'activityPostponeCancel';\r\n  public static readonly EventPlanner_EventList = 'eventPlanner-eventList';\r\n  public static readonly Contacts = 'Contacts';\r\n  public static readonly EditContact = 'EditContact';\r\n  public static readonly Opportunities = 'Opportunities';\r\n  public static readonly AddOpportunity = 'AddOpportunity';\r\n  public static readonly EditOpportunity = 'EditOpportunity';\r\n  public static readonly CloseOpportunity = 'CloseOpportunity';\r\n  public static readonly SetOpportunityState = 'SetOpportunityState';\r\n  public static readonly OpportunityAddNewActivity = 'OpportunityAddNewActivity';\r\n  public static readonly AddCna = 'AddCna';\r\n  public static readonly EditCna = 'EditCna';\r\n  public static readonly EditQuote = 'EditQuote';\r\n  public static readonly AddSimulation = 'AddSimulation';\r\n\r\n}\r\n\r\nexport class UIConstants {\r\n  static ErrorMessage = class {\r\n    public static readonly Required = 'This field is required!';\r\n  }\r\n\r\n  static CurrencyPipe = class {\r\n    public static readonly CurrencyCode = 'USD';\r\n    public static readonly Display = 'symbol'; // code, symbol, symbol-narrow,..\r\n    public static readonly DigitsInfo = '0.0'; // {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}\r\n  }\r\n\r\n  static ConfirmationDialog = class {\r\n    public static readonly CancelMessage = 'Are you sure you want to leave this page? If you leave, info won’t be saved.';\r\n    public static readonly CancelAcceptLabel = 'Leave page';\r\n    public static CancelRejectLabel = 'Stay on this page';\r\n  }\r\n}\r\n\r\nexport class CapitalNeedConstants {\r\n\r\n    static ActionName = class {\r\n\r\n        public static readonly NavigateToCnaForm = 'NavigateToCnaForm';\r\n        public static readonly GetCapitalNeedForm = 'getCapitalNeedForm';\r\n        public static readonly GetCapitalNeedContactForm = 'getCapitalNeedContactForm';\r\n        public static readonly SetSelectedContact = 'setSelectedContact';\r\n        public static readonly SetCnaFormSubmission = 'setCnaFormSubmission';\r\n        public static readonly SaveCnaAndContact = 'saveCnaAndContact';\r\n        public static readonly SaveAndSimulate = 'SaveAndSimulate';\r\n    }\r\n\r\n    static Route = class {\r\n        public static readonly CnaContactFrom = 'contact-form';\r\n        public static readonly CnaForm = 'form';\r\n    }\r\n\r\n    static Component = class {\r\n        public static readonly CapitalNeed = \"CapitalNeed\";\r\n        public static readonly CnaForm = \"CnaForm\";\r\n        public static readonly CnaContactForm = \"CnaContactForm\";\r\n    }\r\n\r\n    public static readonly Child_Id = 'name';\r\n\r\n    static Printout = class {\r\n        public static readonly CnaBodyTemplateFileName = 'fedelity\\\\CnaPrintout.cshtml';\r\n        public static readonly CnaDateFormat = 'DD-MM-YYYY HH:mm:ss';\r\n        public static readonly CnaCurrency = '$';\r\n    }\r\n}\r\n\r\nexport class SharedStoreConstants {\r\n\r\n    public static readonly IsSimulationEditMode = 'IsSimulationEditMode';\r\n    public static readonly OpportunityId = 'OpportunityId';\r\n    public static readonly ContactFullName = 'ContactFullName';\r\n    public static readonly ContactCnaCapital = 'ContactCnaCapital';\r\n    public static readonly ContactCnaAnnualInvestment = 'ContactCnaAnnualInvestment';\r\n    public static readonly QuoteId = 'QuoteId';\r\n    public static readonly ContactId = 'ContactId';\r\n    public static readonly SimulationId = 'SimulationId';\r\n    public static readonly OpportunityTitle = 'OpportunityTitle';\r\n    public static readonly ProtectionFormValue = 'ProtectionFormValue';\r\n}\r\n\r\n//#endregion","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { ApiService, FindExpression, QueryOptions, Utils, Operators } from '@bsynchro/common';\r\nimport { ActivityState, CRM_API_CONSTANTS } from '../crm-constants';\r\nimport { isDate } from 'moment';\r\n\r\n@Injectable()\r\nexport class ActivityService {\r\n    public activityOptionsQueryExpression: FindExpression;\r\n    constructor(public httpClient: HttpClient, @Inject('environment') private _environment: any) { }\r\n\r\n    //#region Dismiss\r\n    public dismissActivity(activityId: string): Observable<boolean> {\r\n        return new Observable<boolean>((observer) => {\r\n            const api = new ApiService(this.httpClient, this._environment.CRM);\r\n            api\r\n                .put(\r\n                    CRM_API_CONSTANTS.Controller.Activity,\r\n                    CRM_API_CONSTANTS.Action.DismissActivity,\r\n                    {},\r\n                    { id: activityId }\r\n                )\r\n                .subscribe((response: any) => {\r\n                    if (!Utils.isNullOrUndefined(response.id)) {\r\n                        observer.next(true);\r\n                    } else {\r\n                        alert('Dismiss Failed.');\r\n                        observer.next(false);\r\n                    }\r\n                });\r\n        });\r\n    }\r\n    //#endregion\r\n\r\n    //#region Activities in date range\r\n\r\n    private fetchActivities(\r\n        fromDate: string,\r\n        toDate: string,\r\n        contactId: string,\r\n        opportunityId: string,\r\n        hideDismissedActivities:boolean = false\r\n    ): Observable<Array<any>> {\r\n        return new Observable<Array<any>>((observer) => {\r\n            const from = new Date(fromDate);\r\n            const to = new Date(toDate);\r\n\r\n            if (isDate(from) && isDate(to)) {\r\n                const api = new ApiService(this.httpClient, this._environment.CRM);\r\n                const qo = new QueryOptions(0, 1000);\r\n\r\n                qo.addExpressionsWithAndOperator(\r\n                    new Array<FindExpression>(\r\n                        new FindExpression(CRM_API_CONSTANTS.Field.ScheduledStart, Operators.GTE, from),\r\n                        new FindExpression(CRM_API_CONSTANTS.Field.ScheduledStart, Operators.LTE, to)\r\n                    )\r\n                );\r\n\r\n                if(hideDismissedActivities)\r\n                {\r\n                    qo.addExpression(new FindExpression(CRM_API_CONSTANTS.Field.StateCode,Operators.NE,+ActivityState.Dismissed));\r\n                }\r\n\r\n\r\n                // in case not getting activity by contact/opportunity Id , then get them by ownerIds\r\n                if (Utils.isEmpty(contactId) && Utils.isEmpty(opportunityId)) {\r\n                    qo.addExpression(this.activityOptionsQueryExpression);\r\n                }\r\n\r\n                if (!Utils.isNullOrUndefined(contactId)) {\r\n                    qo.addExpressionsWithAndOperator(\r\n                        [new FindExpression(CRM_API_CONSTANTS.Field.ContactId, Operators.EQUAL, contactId)\r\n                    ]);\r\n                }\r\n\r\n                if (!Utils.isNullOrUndefined(opportunityId)) {\r\n                    qo.addExpressionsWithAndOperator(\r\n                        [new FindExpression(CRM_API_CONSTANTS.Field.OpportunityId, Operators.EQUAL, opportunityId)\r\n                        ]\r\n                    );\r\n                }\r\n\r\n                api\r\n                    .post(CRM_API_CONSTANTS.Controller.Activity, CRM_API_CONSTANTS.Action.Search, qo)\r\n                    .subscribe((activities: any) => {\r\n                        observer.next(activities.data);\r\n                    });\r\n            } else {\r\n                observer.next([]);\r\n            }\r\n        });\r\n    }\r\n\r\n    public getActivitiesByContactId(fromDate: string, toDate: string, contactId: string,hideDismissedActivities:boolean = false): Observable<Array<any>> {\r\n        return this.fetchActivities(fromDate, toDate, contactId, null,hideDismissedActivities);\r\n    }\r\n\r\n    public getActivitiesByOpportunityId(\r\n        fromDate: string,\r\n        toDate: string,\r\n        opportunityId: string,\r\n        hideDismissedActivities:boolean = false\r\n    ): Observable<Array<any>> {\r\n        return this.fetchActivities(fromDate, toDate, null, opportunityId,hideDismissedActivities);\r\n    }\r\n\r\n    public getActivities(fromDate: string, toDate: string,hideDismissedActivities:boolean = false): Observable<Array<any>> {\r\n        return this.fetchActivities(fromDate, toDate, null, null,hideDismissedActivities);\r\n    }\r\n\r\n    public canInviteManagerToMeeting(ownerId,date)\r\n    {\r\n        const api = new ApiService(this.httpClient, this._environment.CRM);\r\n        return api.post(CRM_API_CONSTANTS.Controller.Activity, CRM_API_CONSTANTS.Action.CanInviteManagerToMeeting, {subId:ownerId,date:date});\r\n    }\r\n    //#endregion\r\n\r\n    //#region  Activities Per Day\r\n    private fetchActivitiesPerDay(date: string, contactId: string, opportunityId: string,hideDismissedActivities:boolean = false): Observable<Array<any>> {\r\n        const from = new Date(date);\r\n        const to = new Date(date);\r\n        Utils.setStartEndDate(from, to);\r\n        return this.fetchActivities(from.toString(), to.toString(), contactId, opportunityId,hideDismissedActivities);\r\n    }\r\n\r\n    public getActivitiesByContactIdPerDay(fromDate: string, contactId: string,hideDismissedActivities:boolean = false): Observable<Array<any>> {\r\n        return this.fetchActivitiesPerDay(fromDate, contactId, null,hideDismissedActivities);\r\n    }\r\n\r\n    public getActivitiesByOpportunityIdPerDay(fromDate: string, opportunityId: string,hideDismissedActivities:boolean = false): Observable<Array<any>> {\r\n        return this.fetchActivitiesPerDay(fromDate, null, opportunityId,hideDismissedActivities);\r\n    }\r\n\r\n    public getActivitiesPerDay(fromDate: string,hideDismissedActivities:boolean = false): Observable<Array<any>> {\r\n        return this.fetchActivitiesPerDay(fromDate, null, null,hideDismissedActivities);\r\n    }\r\n\r\n    //#endregion\r\n\r\n    //#region Activity by Id\r\n    public getActivityById(activityId: string): Observable<any> {\r\n        return new Observable<any>((observer) => {\r\n            if (!Utils.isNullOrUndefined(activityId)) {\r\n                const api = new ApiService(this.httpClient, this._environment.CRM);\r\n                const qo = new QueryOptions();\r\n                qo.addExpression(new FindExpression(CRM_API_CONSTANTS.Field.Id, Operators.EQUAL, activityId));\r\n                api\r\n                    .post(CRM_API_CONSTANTS.Controller.Activity, CRM_API_CONSTANTS.Action.Search, qo)\r\n                    .subscribe((activities: any) => {\r\n                        if (Utils.isEmpty(activities) || Utils.isEmptyArray(activities.data)) {\r\n                            observer.next(null);\r\n                        } else {\r\n                            observer.next(activities.data[0]);\r\n                        }\r\n                    });\r\n            } else {\r\n                observer.next(null);\r\n            }\r\n        });\r\n    }\r\n    //#endregion\r\n}\r\n","import { ButtonIconsInput, FormatterInput, ToolbarInput } from \"@fullcalendar/angular\";\r\n\r\nexport class CalendarSettings {\r\n\r\n    header: HeaderFooter;\r\n    footer: HeaderFooter;\r\n    titleFormat: TitleFormatOptions;\r\n    defaultRangeSeparator: string; //The separator text used for date-formatting ranges.\r\n    headerFooterButtonIcons: headerFooterButtonIcons;\r\n    themeSystem: ThemeSystem;\r\n    refetchResourcesOnNavigate: boolean;\r\n\r\n    public constructor(init?: CalendarSettings) {\r\n        this.header = {\r\n            left: HeaderFooterOptions.Prev,\r\n            center: HeaderFooterOptions.Title,\r\n            right: HeaderFooterOptions.Next\r\n        };\r\n        this.titleFormat = {\r\n            month: 'long',\r\n            year: 'numeric'\r\n        };\r\n        this.defaultRangeSeparator = '-';\r\n        this.headerFooterButtonIcons = new headerFooterButtonIcons();\r\n        this.themeSystem = ThemeSystem.Bootstrap;\r\n        this.refetchResourcesOnNavigate = true;\r\n    }\r\n}\r\n\r\nexport class HeaderFooter implements ToolbarInput {\r\n    left?: string;\r\n    center?: string;\r\n    right?: string;\r\n}\r\n\r\nexport enum HeaderFooterOptions {\r\n    Title = 'title', //text containing the current month/week/day\r\n    Prev = 'prev', //button for moving the calendar back one month/week/day\r\n    PrevYear = 'prevYear', //button for moving the calendar back on year\r\n    Next = 'next', //button for moving the calendar forward one month/week/day\r\n    NextYear = 'nextYear', //button for moving the calendar forward one year\r\n    Today = 'today' //button for moving the calendar to the current month/week/day\r\n}\r\n\r\nexport class TitleFormatOptions {\r\n    year?: \"numeric\" | \"2-digit\" | undefined; // 'numeric' or '2-digit'\r\n    month?: \"numeric\" | \"2-digit\" | \"long\" | \"short\" | \"narrow\" | undefined; //'long' or 'short' or 'narrow' or 'numeric' or '2-digit'\r\n    day?: \"numeric\" | \"2-digit\" | undefined;// 'numeric' or '2-digit'\r\n    weekday?: \"long\" | \"short\" | \"narrow\" | undefined; // 'long' or 'short' or 'narrow'\r\n    hour?: \"numeric\" | \"2-digit\" | undefined; // 'numeric' or '2-digit'\r\n    minute?: \"numeric\" | \"2-digit\" | undefined; // If the time were 6:05 : 'numeric' would produce something like 5 OR '2-digit' would produce something like 05\r\n    second?: \"numeric\" | \"2-digit\" | undefined; // 'numeric' or '2-digit'\r\n    hour12?: boolean | undefined; // true for a 12-hour clock, false for a 24-hour clock\r\n    timeZoneName?: \"short\" | undefined; //'short' ('long' is not supported by FullCalendar)\r\n    week?: 'long' | 'short' | 'narrow' | 'numeric'; // 'short' or 'narrow' or 'numeric'\r\n    meridiem?: 'lowercase' | 'short' | 'narrow' | boolean; //'lowercase' or 'short' or 'narrow' or false \r\n    omitZeroMinute?: boolean; //if true, times like 6:00 will display as 6\r\n    omitCommas?: boolean; //if true, all commas will be stripped from the outputted string\r\n}\r\n\r\nexport class headerFooterButtonIcons implements ButtonIconsInput {\r\n    prev?: string;\r\n    next?: string;\r\n    prevYear?: string;\r\n    nextYear?: string;\r\n    close?: string;\r\n    today?: string;\r\n\r\n    public constructor(init?: headerFooterButtonIcons) {\r\n        this.close = 'fa-times';\r\n        this.prev = 'fa-chevron-left';\r\n        this.next = 'fa-chevron-right';\r\n        this.prevYear = 'fa-angle-double-left';\r\n        this.nextYear = 'fa-angle-double-right';\r\n    }\r\n    [viewOrCustomButton: string]: string;\r\n\r\n}\r\n\r\nexport enum ThemeSystem {\r\n    Standard = 'standard',\r\n    Bootstrap = 'bootstrap',\r\n}","export class EventBase {\r\n    public activityTypeCode: string;\r\n\r\n    constructor(init?: EventBase) {\r\n        Object.assign(this, init);\r\n    }\r\n}","import { EventBase } from './EventBase';\r\n\r\nexport class CalendarEvent extends EventBase {\r\n    id?: string;\r\n    groupdId?: string;\r\n    allDay?: string;\r\n    start?: any;\r\n    end?: any;\r\n    title?: string;\r\n    url?: string;\r\n    classNames?: Array<string>;\r\n    editable?: any;\r\n    startEditable?: any;\r\n    duractionEditable?: any;\r\n    resourceEditable?: any;\r\n    rendering?: string;\r\n    overlap?: boolean;\r\n    constraint?: any;\r\n    backgroundColor?: string;\r\n    borderColor?: string;\r\n    textColor?: string;\r\n    extendedProps?: any;\r\n    source?: any;\r\n\r\n    constructor(init?: CalendarEvent) {\r\n        super(init);\r\n        Object.assign(this, init);\r\n    }\r\n}","import {\r\n    Component,\r\n    OnInit,\r\n    Input,\r\n    ViewEncapsulation,\r\n    EventEmitter,\r\n    Output,\r\n    ViewChild,\r\n    AfterViewInit,\r\n    OnDestroy,\r\n    OnChanges,\r\n    SimpleChanges\r\n} from '@angular/core';\r\nimport { flatten, toArray, groupBy, uniqBy } from 'lodash';\r\nimport { Observable } from 'rxjs';\r\nimport dayGridPlugin from '@fullcalendar/daygrid';\r\nimport interactionPlugin from '@fullcalendar/interaction';\r\nimport bootstrap from '@fullcalendar/bootstrap';\r\nimport { Calendar, CalendarOptions, FullCalendarComponent } from '@fullcalendar/angular';\r\nimport { DataListsConstants, ActivityConstants } from '../../crm-constants';\r\nimport { ActivityService } from '../../services/activity.service';\r\nimport { CalendarSettings } from '../../models/calendar/CalendarOptions';\r\nimport * as _moment from 'moment';\r\nimport { Options } from '../../models/common/Options';\r\nimport { Subscription } from 'rxjs/internal/Subscription';\r\nimport { DataListService, UITranslateService, Utils } from '@bsynchro/common';\r\nimport { CalendarEvent } from '../../models/events/CalendarEvent';\r\n\r\nconst moment = (_moment as any).default;\r\n@Component({\r\n    selector: 'app-calendar',\r\n    templateUrl: './calendar.component.html',\r\n    styleUrls: ['./calendar.component.scss'],\r\n    providers: [ActivityService],\r\n    encapsulation: ViewEncapsulation.None\r\n})\r\nexport class CalendarComponent implements OnInit, AfterViewInit, OnDestroy, OnChanges {\r\n    @Input() showLegend = true;\r\n    @Input() contactId: string;\r\n    @Input() opportunityId: string;\r\n    @Input() options: Options;\r\n    @Output() dayEvents: EventEmitter<any>;\r\n    @Output() selectedDate: EventEmitter<any>;\r\n    @ViewChild('calendar', { static: false })\r\n    calendarComponent: FullCalendarComponent;\r\n\r\n    //#region Private fields\r\n    private _calendar: Calendar;\r\n    private _langChangeSubscription: Subscription;\r\n    //#endregion\r\n\r\n    //#region Public fields\r\n    public calendarSettings = new CalendarSettings();\r\n    public calendarOptions: CalendarOptions = {};\r\n    public calendarPlugins = [interactionPlugin, dayGridPlugin, bootstrap];\r\n    public activityTypes: Array<any>;\r\n    public get translateService(): UITranslateService {\r\n        return this._translateService;\r\n    }\r\n    //#endregion\r\n\r\n    constructor(private _dataListService: DataListService, private _activityService: ActivityService, private _translateService: UITranslateService) {\r\n        this.dayEvents = new EventEmitter<any>();\r\n        this.selectedDate = new EventEmitter<any>();\r\n        this.activityTypes = [];\r\n        this.loadDatalists();\r\n    }\r\n\r\n    ngOnInit() {\r\n        this.calendarOptions.plugins = this.calendarPlugins;\r\n        this.calendarOptions.headerToolbar = this.calendarSettings.header;\r\n        this.calendarOptions.footerToolbar = this.calendarSettings.footer;\r\n        this.calendarOptions.titleFormat = {\r\n            year: this.calendarSettings.titleFormat.year,\r\n            month: this.calendarSettings.titleFormat.month,\r\n            day: this.calendarSettings.titleFormat.day,\r\n            weekday: this.calendarSettings.titleFormat.weekday,\r\n            hour: this.calendarSettings.titleFormat.hour,\r\n            minute: this.calendarSettings.titleFormat.minute,\r\n            second: this.calendarSettings.titleFormat.second,\r\n            hour12: this.calendarSettings.titleFormat.hour12,\r\n            timeZoneName: this.calendarSettings.titleFormat.timeZoneName,\r\n            week: this.calendarSettings.titleFormat.week,\r\n            meridiem: this.calendarSettings.titleFormat.meridiem,\r\n            omitZeroMinute: this.calendarSettings.titleFormat.omitZeroMinute,\r\n            omitCommas: this.calendarSettings.titleFormat.omitCommas\r\n        },\r\n            this.calendarOptions.themeSystem = this.calendarSettings.themeSystem;\r\n        this.calendarOptions.dateClick = (dateClickInfo) => this.onDateClick(dateClickInfo);\r\n        this.calendarOptions.events = this.fetchEvents;\r\n        this.calendarOptions.displayEventTime = false;\r\n        this.calendarOptions.bootstrapFontAwesome = this.calendarSettings.headerFooterButtonIcons;\r\n        this.calendarOptions.defaultRangeSeparator = this.calendarSettings.defaultRangeSeparator;\r\n        this.calendarOptions.initialView = \"dayGridMonth\";\r\n        this.calendarOptions.height = \"auto\";\r\n        this.calendarOptions.locale = this.translateService.calendarSetup == null\r\n            ? this.translateService.defaultLanguage\r\n            : this.translateService.currentLanguage;\r\n        this._langChangeSubscription = this._translateService.onLanguageChange.subscribe((event) =>\r\n            this.loadDatalists());\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges): void {\r\n        if (changes['options'] && !Utils.isEmpty(changes['options'].currentValue)) {\r\n            this._activityService.activityOptionsQueryExpression = this.options.query;\r\n            this.refetchEvents();\r\n        }\r\n    }\r\n\r\n    ngAfterViewInit(): void {\r\n        this._calendar = this.calendarComponent.getApi();\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this._langChangeSubscription.unsubscribe();\r\n    }\r\n\r\n    //#region Private\r\n    private mapEvents(eventList: Array<any>): Array<CalendarEvent> {\r\n        const result: Array<CalendarEvent> = eventList.map(function (activity) {\r\n            return new CalendarEvent({\r\n                id: activity.Id,\r\n                start: activity.scheduledStart,\r\n                classNames: ['grid-event', ActivityConstants.ActivityTypes[activity.activityTypeCode].name],\r\n                overlap: false,\r\n                backgroundColor: ActivityConstants.ActivityTypes[activity.activityTypeCode].color,\r\n                borderColor: 'transparent',\r\n                activityTypeCode: activity.activityTypeCode\r\n            });\r\n        });\r\n        return result;\r\n    }\r\n\r\n    private selectCurrentDate(start: Date, end: Date) {\r\n        const currentDate = Date.now();\r\n        const isBetween = moment(currentDate).isBetween(start, end);\r\n        if (isBetween) {\r\n            const dateInfo = { dateStr: '', date: new Date(Date.now()) };\r\n            dateInfo.dateStr = moment(currentDate).format('YYYY-MM-DD');\r\n            this.onDateClick(dateInfo);\r\n        } else {\r\n            this.dayEvents.emit([]); // Reset day event list\r\n        }\r\n    }\r\n\r\n    private getActivities(from: string, to: string): Observable<Array<any>> {\r\n        if (this.opportunityId) {\r\n            return this._activityService.getActivitiesByOpportunityId(from, to, this.opportunityId,this.options.hideDismissedActivities);\r\n        }\r\n        if (this.contactId) {\r\n            return this._activityService.getActivitiesByContactId(from, to, this.contactId,this.options.hideDismissedActivities);\r\n        }\r\n        return this._activityService.getActivities(from, to,this.options.hideDismissedActivities);\r\n    }\r\n\r\n    private getActivitiesPerDay(from: string): Observable<Array<any>> {\r\n        if (this.opportunityId) {\r\n            return this._activityService.getActivitiesByOpportunityIdPerDay(from, this.opportunityId,this.options.hideDismissedActivities);\r\n        }\r\n\r\n        if (this.contactId) {\r\n            return this._activityService.getActivitiesByContactIdPerDay(from, this.contactId,this.options.hideDismissedActivities);\r\n        }\r\n\r\n        return this._activityService.getActivitiesPerDay(from,this.options.hideDismissedActivities);\r\n    }\r\n\r\n    private loadDatalists() {\r\n        (<Observable<any>>this._dataListService.getDataListsByName([\r\n            DataListsConstants.DataListName.ActivityType\r\n        ])).subscribe((response) => {\r\n            if (response.length > 0) {\r\n                const datalists = this._translateService.getLocalizedDataLists(response);\r\n                this.activityTypes = datalists[0];\r\n            }\r\n        });\r\n    }\r\n    //#endregion\r\n\r\n    //#region Public\r\n    public getActivityClass(activity): {} {\r\n        return ActivityConstants.ActivityTypes[activity.code].class;\r\n    }\r\n\r\n    public getActivityStyle(activityCode): {} {\r\n        return { color: ActivityConstants.ActivityTypes[activityCode].color };\r\n    }\r\n\r\n    public onDateClick(dateClickInfo): void {\r\n        this._calendar.select(dateClickInfo.date); // Highlight selected day\r\n        this.getActivitiesPerDay(dateClickInfo.dateStr).subscribe((activities) => {\r\n            this.selectedDate.emit(dateClickInfo.dateStr);\r\n            this.dayEvents.emit(activities);\r\n        });\r\n    }\r\n\r\n    public fetchEvents = (fetchInfo, successCallback, failureCallback): void => {\r\n        this.getActivities(fetchInfo.start, fetchInfo.end).subscribe(\r\n            (activities) => {\r\n                const groupedActivities = toArray(\r\n                    groupBy(this.mapEvents(activities), function (activity) {\r\n                        return moment(activity.start).startOf('day').format();\r\n                    })\r\n                );\r\n                const uniqTypes = [];\r\n                groupedActivities.forEach((activity) => {\r\n                    uniqTypes.push(uniqBy(activity, 'activityTypeCode'));\r\n                });\r\n                this.selectCurrentDate(fetchInfo.start, fetchInfo.end);\r\n                successCallback(flatten(uniqTypes));\r\n            },\r\n            (error) => {\r\n                failureCallback(error);\r\n            }\r\n        );\r\n    };\r\n\r\n    public refetchEvents() {\r\n        if (this._calendar !== undefined) {\r\n            this._calendar.refetchEvents();\r\n        }\r\n    }\r\n\r\n    //#endregion\r\n}\r\n","<div class=\"calendar-component\">\r\n  <full-calendar #calendar *ngIf=\"translateService.calendarSetup == null; else localized_calendar\"\r\n    [options]=\"calendarOptions\">\r\n  </full-calendar>\r\n  <ng-template #localized_calendar>\r\n    <full-calendar #calendar [options]=\"calendarOptions\">\r\n    </full-calendar>\r\n  </ng-template>\r\n\r\n  <div *ngIf=\"showLegend\" class=\"activity-types\">\r\n    <div class=\"box-tile\"><label>{{'activity.title' | translate}}</label></div>\r\n    <div class=\"types\">\r\n      <div *ngFor=\"let type of activityTypes\">\r\n        <span [ngClass]=\"getActivityClass(type)\" [ngStyle]=\"getActivityStyle(type.code)\">\r\n          <i class=\"legend\"></i>\r\n        </span>\r\n        <span>{{type.name}}</span>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</div>","import { EventBase } from './EventBase';\r\n\r\nexport class ActivityListEvent extends EventBase {\r\n    id: string;\r\n    title: string;\r\n    date: Date;\r\n    stateCode: number;\r\n    createdByDisplay: string;\r\n    contactName: string;\r\n    opportunityDisplay:string;\r\n    ownerId:string;\r\n    ownerDisplay:string;\r\n    invited:boolean;\r\n    invitedByDisplay:string;\r\n\r\n    constructor(init?: ActivityListEvent) {\r\n        super(init);\r\n        Object.assign(this, init);\r\n    }\r\n}\r\n","import {\r\n    Component,\r\n    OnInit,\r\n    Input,\r\n    ViewEncapsulation,\r\n    OnChanges,\r\n    SimpleChanges,\r\n    EventEmitter,\r\n    Output,\r\n    OnDestroy,\r\n    ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ActivityService } from '../../services/activity.service';\r\nimport { ActivityConstants, DataListsConstants, EventTypes } from '../../crm-constants';\r\nimport { ActivityListEvent } from '../../models/events/ActivityListEvent';\r\nimport { DataListService, EventPayload, UITranslateService, Utils } from '@bsynchro/common';\r\nimport { Observable, Subscription } from 'rxjs';\r\n\r\n@Component({\r\n    selector: 'app-event-list',\r\n    templateUrl: './event-list.component.html',\r\n    styleUrls: ['./event-list.component.scss'],\r\n    providers: [ActivityService],\r\n    encapsulation: ViewEncapsulation.None\r\n})\r\nexport class EventListComponent implements OnInit, OnChanges, OnDestroy {\r\n    @Input() date: string;\r\n    @Input('rows') data: Array<any>;\r\n    @Input() showHeader = true;\r\n    @Input() scrollHeight: string; // 500px\r\n    @Input() itemSize: number; // Height of an item in the list.\r\n    @Input('rowsPerPage') rows: number; // Number of rows to display per page.\r\n\r\n    @Input() showCompleteActivityAction = true;\r\n    @Input() showEditActivityAction = true;\r\n    @Input() showDismissActivityAction = true;\r\n    @Input() loggedInUserId:string = null;\r\n\r\n    @Output() eventListEvent: EventEmitter<any> = new EventEmitter();\r\n\r\n    isVirtualScrollVisibile:boolean=true;\r\n\r\n    //#region  private fields\r\n    private _events: Array<any>;\r\n    private _dataListsName: Array<string> = [\r\n        DataListsConstants.DataListName.ActivityType\r\n    ];\r\n    private _languageChangeSubscription: Subscription;\r\n    private _dataList: Array<any>;\r\n    // mock\r\n\r\n    //#endregion\r\n    //#region setters\r\n    public set dataList(value: Array<any>) {\r\n        this._dataList = value;\r\n    }\r\n    //#endregion\r\n\r\n    //#region getters\r\n    public get dataListsName() {\r\n        return this._dataListsName;\r\n    }\r\n\r\n    public get dataList() {\r\n        return this._dataList;\r\n    }\r\n    //#endregion\r\n\r\n    //#region translation UI helpers\r\n    getEventName(activityTypeCode: string) {\r\n        if (this.dataList == null || this.dataList[0] == null) return '';\r\n        return this.dataList[0].find(type => type.code === activityTypeCode).name;\r\n    }\r\n\r\n    getEventSuffixTranslationKey(activityTypeCode: string) {\r\n        return 'activity.event.suffix.' + (<string>ActivityConstants.ActivityTypes[activityTypeCode].suffix).replace(/\\s/g, \"\");\r\n    }\r\n    //#endregion\r\n\r\n    //#region public fields\r\n    public todayLabel: boolean;\r\n    public dateLabel: string;\r\n    public dayLabel: string;\r\n    public eventDropdownItems: Array<any>;\r\n    //#endregion\r\n\r\n    constructor(public httpClient: HttpClient,\r\n        private _activityService: ActivityService,\r\n        private _uiTranslateService: UITranslateService,\r\n        private _dataListService: DataListService,\r\n        private _cd:ChangeDetectorRef) {\r\n        this._events = new Array<any>();\r\n        this.eventDropdownItems = [\r\n            {\r\n                label: 'Complete',\r\n                value: 'complete',\r\n                command: (event) => {\r\n                    this.complete(event);\r\n                }\r\n            },\r\n            {\r\n                label: 'Edit Activity',\r\n                value: 'edit',\r\n                command: (event) => {\r\n                    this.postpone(event);\r\n                }\r\n            },\r\n            {\r\n                label: 'Dismiss',\r\n                value: 'dismiss',\r\n                command: (event) => {\r\n                    this.dismiss(event);\r\n                }\r\n            }\r\n        ];\r\n        this._languageChangeSubscription = new Subscription();\r\n    }\r\n\r\n    //#region hooks\r\n\r\n    ngOnInit() {\r\n        this._languageChangeSubscription = this._uiTranslateService.onLanguageChange.subscribe(\r\n            (res: any) => {\r\n                this.loadDataLists();\r\n            }\r\n        )\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes['data'] && !Utils.isNullOrUndefined(changes['data'].currentValue)) {\r\n            this.loadDataLists();\r\n            if (this.data.length > 0) {\r\n                this._events = this.mapEvents(this.data);\r\n                this._events.sort(this.sortByDate);\r\n                //fixing a bug where the virtual scroll don't render \r\n                //the records after changed displayed data\r\n                this.isVirtualScrollVisibile=false;\r\n                this._cd.detectChanges();\r\n                this.isVirtualScrollVisibile=true;\r\n            } else {\r\n                this._events = [{}];\r\n            }\r\n        }\r\n\r\n        if (changes['date'] && !Utils.isNullOrUndefined(changes['date'].currentValue) && this.showHeader) {\r\n            this.updateDatesLabels();\r\n        }\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this._languageChangeSubscription.unsubscribe();\r\n    }\r\n    //#endregion\r\n\r\n    //#region properties\r\n\r\n    public get events(): Array<any> {\r\n        return this._events;\r\n    }\r\n\r\n    //#endregion\r\n\r\n    //#region Actions\r\n    public complete(event) {\r\n        this.eventListEvent.emit(new EventPayload(EventTypes.Complete, event));\r\n        // ! parent component should listen to this event to do any action\r\n    }\r\n\r\n    public postpone(event) {\r\n        this.eventListEvent.emit(new EventPayload(EventTypes.Postpone, event));\r\n        // ! parent component should listen to this event to do any action\r\n    }\r\n\r\n    public dismiss(event: ActivityListEvent) {\r\n        const activityId = event.id;\r\n        this._activityService.dismissActivity(activityId).subscribe((response) => {\r\n            this.eventListEvent.emit(new EventPayload(EventTypes.Dismiss, event));\r\n            // ! parent component should listen to this event to do any action\r\n        });\r\n    }\r\n    //#endregion\r\n\r\n    //#region load Datalists\r\n    private loadDataLists() {\r\n        (this._dataListService.getDataListsByName(this.dataListsName) as Observable<any>).subscribe(\r\n            (response) => {\r\n                this.dataList = this._uiTranslateService.getLocalizedDataLists(response);\r\n            }\r\n        );\r\n    }\r\n    //#endregion\r\n    //#region Map\r\n    private mapEvents(activities: Array<any>): Array<ActivityListEvent> {\r\n        const result: Array<ActivityListEvent> = activities.map(function (activity) {\r\n            let title =\r\n                activity.activityTypeDisplay +\r\n                ActivityConstants.ActivityTypes[activity.activityTypeCode].suffix +\r\n                activity.contactDisplay;\r\n            if (activity.opportunityDisplay) {\r\n                title += ' regarding ' + activity.opportunityDisplay;\r\n            }\r\n            return new ActivityListEvent({\r\n                id: activity.id,\r\n                activityTypeCode: activity.activityTypeCode,\r\n                title,\r\n                date: new Date(activity.scheduledStart),\r\n                stateCode: activity.stateCode,\r\n                createdByDisplay: activity.createdByDisplay,\r\n                contactName: activity.contactDisplay,\r\n                opportunityDisplay:activity.opportunityDisplay,\r\n                ownerId:activity.ownerId,\r\n                invited:activity.invited,\r\n                ownerDisplay:activity.ownerDisplay,\r\n                invitedByDisplay:activity.invitedByDisplay\r\n            });\r\n        });\r\n        return result;\r\n    }\r\n    //#endregion\r\n    //#region list items management\r\n\r\n    private sortByDate = (a, b) => {\r\n        if (new Date(a.date) > new Date(b.date)) {\r\n            return 1;\r\n        }\r\n        if (new Date(a.date) < new Date(b.date)) {\r\n            return -1;\r\n        }\r\n        return 0;\r\n    };\r\n    //#endregion\r\n    //#region Date Title\r\n    private getDay(dayNumber: number): string {\r\n        switch (dayNumber) {\r\n            case 0:\r\n                return 'Sunday';\r\n            case 1:\r\n                return 'Monday';\r\n            case 2:\r\n                return 'Tuesday';\r\n            case 3:\r\n                return 'Wednesday';\r\n            case 4:\r\n                return 'Thursday';\r\n            case 5:\r\n                return 'Friday';\r\n            case 6:\r\n                return 'Saturday';\r\n            default:\r\n                return 'NaN';\r\n        }\r\n    }\r\n\r\n    private getMonth(monthNumber: number): string {\r\n        switch (monthNumber) {\r\n            case 0:\r\n                return 'January';\r\n            case 1:\r\n                return 'February';\r\n            case 2:\r\n                return 'March';\r\n            case 3:\r\n                return 'April';\r\n            case 4:\r\n                return 'May';\r\n            case 5:\r\n                return 'June';\r\n            case 6:\r\n                return 'July';\r\n            case 7:\r\n                return 'August';\r\n            case 8:\r\n                return 'September';\r\n            case 9:\r\n                return 'October';\r\n            case 10:\r\n                return 'November';\r\n            case 11:\r\n                return 'December';\r\n            default:\r\n                return 'NaN';\r\n        }\r\n    }\r\n    //#endregion\r\n\r\n    //#region Public\r\n    public updateDatesLabels(): string {\r\n        if (!Utils.isNullOrUndefined(this.date)) {\r\n            const date = new Date(this.date);\r\n            const today = new Date(); // today date\r\n            const isDateToday =\r\n                date.getDate() == today.getDate() &&\r\n                date.getMonth() == today.getMonth() &&\r\n                date.getFullYear() == today.getFullYear();\r\n\r\n            this.todayLabel = isDateToday ? true : false;\r\n\r\n            const month = this._uiTranslateService.getInstantTranslation(this._uiTranslateService.getTranslationKey('dates', this.getMonth(date.getMonth()), 'months'));\r\n            const dayOfMonth = this._uiTranslateService.getNumberTranslation(date.getDate());\r\n            const dayOfWeek = this._uiTranslateService.getInstantTranslation(this._uiTranslateService.getTranslationKey('dates', this.getDay(date.getDay()), 'days')); // Monday,Tuesday ...\r\n            const year = this._uiTranslateService.getNumberTranslation(date.getFullYear()).replace(/,|٬/g, \"\");\r\n            switch (this._uiTranslateService.currentLcid.toString()) {\r\n                case \"1033\":\r\n                    return month + ' ' + dayOfMonth + ',' + year;\r\n                case \"12289\":\r\n                    return month + dayOfMonth + \" ،\" + year;\r\n            }\r\n        }\r\n        return \"\";\r\n    }\r\n\r\n    public getDayTranslation(): string {\r\n        if (!Utils.isNullOrUndefined(this.date)) {\r\n            const date = new Date(this.date);\r\n            const dayOfWeek = this._uiTranslateService.getInstantTranslation(this._uiTranslateService.getTranslationKey('dates', this.getDay(date.getDay()), 'days')); // Monday,Tuesday ...\r\n            return dayOfWeek;\r\n        }\r\n        return \"\";\r\n    }\r\n\r\n    public getActivityClass(activityCode): {} {\r\n        return ActivityConstants.ActivityTypes[activityCode].class;\r\n    }\r\n\r\n    public getActivityStyle(activityCode): {} {\r\n        return { color: ActivityConstants.ActivityTypes[activityCode].color };\r\n    }\r\n\r\n    public getHeight() {\r\n        return { height: this.scrollHeight };\r\n    }\r\n\r\n    public getDate() {\r\n\r\n    }\r\n\r\n\r\n    //#endregion\r\n\r\n    public getLocalizedTime(time: any) {\r\n        return time.toLocaleTimeString(this._uiTranslateService.currentLanguage, {\r\n            hour: '2-digit',\r\n            minute: '2-digit'\r\n        });\r\n    }\r\n\r\n    actionsVisibile(event)\r\n    {\r\n        return event.stateCode == 1 && (!this.loggedInUserId || this.loggedInUserId==event.ownerId)\r\n    }\r\n\r\n\r\n    getLocalizedEventTitle(event:any)\r\n    {\r\n        let safeContactName=this.escapeHtml(event.contactName);\r\n        let safeOpportunityDisplay= !Utils.isNullOrUndefined(event.opportunityDisplay) ? this.escapeHtml(event.opportunityDisplay) : null;\r\n\r\n        let title:string= this._uiTranslateService.getInstantTranslation('activity.event.title'\r\n        ,{\r\n            'eventType': this.getEventName(event.activityTypeCode), \r\n            'suffix': this._uiTranslateService.getInstantTranslation(this.getEventSuffixTranslationKey(event.activityTypeCode)), \r\n            'contactName': \"<b>\"+safeContactName+\"</b>\"}\r\n         );\r\n\r\n         if(!Utils.isNullOrUndefined(event.opportunityDisplay) && !Utils.isEmpty(event.opportunityDisplay))\r\n         {\r\n            title=title+\" \"+this._uiTranslateService.getInstantTranslation('common.regarding')+\" \"+\"<b>\"+safeOpportunityDisplay+\"</b>\";\r\n         }\r\n\r\n         return title;\r\n    }\r\n\r\n    private escapeHtml(unsafe: string): string {\r\n        if (Utils.isNullOrUndefined(unsafe)) {\r\n            return \"\";\r\n        }\r\n\r\n        return unsafe\r\n            .replace(/&/g, \"&amp;\")\r\n            .replace(/</g, \"&lt;\")\r\n            .replace(/>/g, \"&gt;\")\r\n            .replace(/\"/g, \"&quot;\")\r\n            .replace(/'/g, \"&#039;\");\r\n    }\r\n\r\n}\r\n","<div class=\"events-list\">\r\n  <div class=\"events-scroller\">\r\n    <p-virtualScroller *ngIf=\"isVirtualScrollVisibile\" [value]=\"events\" [scrollHeight]=\"scrollHeight\">\r\n      <p-header *ngIf=\"showHeader\">\r\n        <div class=\"header-content\">\r\n          <p class=\"date-label\" *ngIf=\"this.todayLabel; else date\"> {{'activity.today' | translate: { 'date': updateDatesLabels() } }}</p>\r\n          <ng-template #date>\r\n            <p class=\"date-label\"> {{'activity.notToday' | translate: { 'date': updateDatesLabels() } }}</p>\r\n          </ng-template>\r\n          <p class=\"day-label\">{{getDayTranslation()}}</p>\r\n        </div>\r\n      </p-header>\r\n      <ng-template pTemplate=\"item\" let-event>\r\n        <div *ngIf=\"data.length>0\">\r\n          <div class=\"row m-0 position-relative\">\r\n            <div class=\"event-icon col-1\">\r\n              <span [ngClass]=\"getActivityClass(event.activityTypeCode)\"\r\n                [ngStyle]=\"getActivityStyle(event.activityTypeCode)\">\r\n                <i class=\"icon\"></i>\r\n              </span>\r\n            </div>\r\n            <div class=\"event-details col-10\">\r\n              <!-- <span class=\"event-title\">{{event.title}} </span> -->\r\n              <span class=\"event-title\" [innerHtml]=\"getLocalizedEventTitle(event)\"></span>\r\n              <span class=\"event-time\">{{event.date | date: 'shortTime'}}</span>\r\n              <span *ngIf=\"!event.invited\" class=\"event-createdBy\"> {{'activity.createdByOwner' | translate : {'owner':event.createdByDisplay } }}</span>\r\n              <span *ngIf=\"event.invited\" class=\"event-createdBy d-block\"><b style=\"color: black;font-weight: 700;\">{{'activity.invitation' | translate}}</b> {{ 'activity.invitationFromTo' | translate : {'inviter':event.invitedByDisplay,'invitedPerson':event.ownerDisplay} }}</span>\r\n            </div>\r\n            <div class=\"col-1 p-0\" *ngIf=\"actionsVisibile(event)\">\r\n              <div class=\"contact-actions\">\r\n                <div class=\"btn-group\">\r\n                  <button type=\"button\" class=\"btn btn-primary dropdown-toggle\" data-toggle=\"dropdown\">\r\n                    <i class=\"fa fa-ellipsis-v\" aria-hidden=\"true\"></i>\r\n                  </button>\r\n                  <div class=\"dropdown-menu\">\r\n                    <div class=\"dropdown-menu-options\">\r\n                      <a *ngIf=\"showCompleteActivityAction\" class=\"row dropdown-item complete\"\r\n                        (click)=\"complete(event)\">\r\n                        <i class=\"col-3 ic-check\" aria-hidden=\"true\"></i>\r\n                        <span class=\"col-10\">{{ \"activity.complete\" | translate }}</span>\r\n                      </a>\r\n                      <a *ngIf=\"showEditActivityAction\" class=\"row dropdown-item postpone\"\r\n                        (click)=\"postpone(event)\">\r\n                        <i class=\"col-3 ic-postpone\" aria-hidden=\"true\"></i>\r\n                        <span class=\"col-10\">{{ (!event.invited ? \"activity.editActivity\" : \"activity.requestToReschedule\") | translate}}</span>\r\n                      </a>\r\n                      <a *ngIf=\"showDismissActivityAction\" class=\"row dropdown-item dismiss\" (click)=\"dismiss(event)\">\r\n                        <i class=\"col-3  ic-dismiss\" aria-hidden=\"true\"></i>\r\n                        <span class=\"col-10\">{{\"activity.dismiss\" | translate }}</span>\r\n                      </a>\r\n                    </div>\r\n                  </div>\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div class=\"no-events\" *ngIf=\"data.length==0\">\r\n          <div class=\"content\" [ngStyle]=\"getHeight()\">\r\n            <div class=\"event-icon\">\r\n              <i class=\"fa fa-bell-o\" aria-hidden=\"true\"></i>\r\n            </div>\r\n            <div class=\"event-details\">\r\n              <span class=\"event-title-placeholder\"> {{\"activity.noEvent\" | translate}} </span>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </ng-template>\r\n      <!-- Hidden -->\r\n      <p-footer>Footer Content</p-footer>\r\n    </p-virtualScroller>\r\n  </div>\r\n</div>\r\n","import { SalesManagerSelectionSettings } from '../sale-manager-selection/salesManagerSelectionSettings';\r\nimport { FindExpression } from '@bsynchro/common';\r\n\r\nexport interface IOptions {\r\n    isSalesManager: boolean;\r\n    salesManagerSelectionSettings?: SalesManagerSelectionSettings;\r\n    query: FindExpression;\r\n    showAddActivityAction: boolean;\r\n    showCompleteActivityAction: boolean;\r\n    showEditActivityAction: boolean;\r\n    showDismissActivityAction: boolean;\r\n}\r\n\r\nexport class Options implements IOptions {\r\n    isSalesManager: boolean;\r\n    salesManagerSelectionSettings?: SalesManagerSelectionSettings;\r\n    query: FindExpression;\r\n    opportunitiesQuery: FindExpression;\r\n    showAddActivityAction = true;\r\n    showCompleteActivityAction = true;\r\n    showEditActivityAction = true;\r\n    showDismissActivityAction = true;\r\n    hasTeamAccess = true;\r\n    canCreateContact = true;\r\n    canEditContact = true;\r\n    canEditOpportunity = true;\r\n    calendarDatePlaceholder = 'dd/mm/yyyy';\r\n    calendarDateFormat = 'dd/mm/yy';\r\n    hideDismissedActivities:boolean = false;\r\n    intialCountry:string = null;\r\n    loggedInUserId:string = null;\r\n    onlyOwnerCanDoChanges:boolean = false;\r\n    closeOpportunityBasedOnQuotations:boolean = true;\r\n}\r\n","import { Component, OnInit, EventEmitter, Output, ViewChild, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { EventTypes } from '../../crm-constants';\r\nimport { Options } from '../../models/common/Options';\r\nimport { EventPayload, Utils } from '@bsynchro/common';\r\nimport { CalendarComponent } from '../calendar/calendar.component';\r\n\r\n@Component({\r\n    // tslint:disable-next-line: component-selector\r\n    selector: 'app-event-planner',\r\n    templateUrl: './event-planner.component.html',\r\n    styleUrls: ['./event-planner.component.scss']\r\n})\r\nexport class EventPlannerComponent implements OnInit, OnChanges {\r\n    @Output() eventPlannerEvent: EventEmitter<any> = new EventEmitter();\r\n    @ViewChild('calendar', { static: false })\r\n    calendar: CalendarComponent;\r\n\r\n    @Input() options: Options;\r\n    @Input() isFilterFormVisible: boolean = false;\r\n\r\n    //#region Public Fields\r\n    public selectedDate: string;\r\n    public rows: Array<any>;\r\n    //#endregion\r\n\r\n    constructor() {\r\n        this.selectedDate = new Date().toString();\r\n        this.options = new Options();\r\n    }\r\n\r\n    ngOnInit() { }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes[\"options\"]) {\r\n        }\r\n    }\r\n    //#region Public\r\n    public updateDayEvents(event: any): void {\r\n        this.rows = event;\r\n    }\r\n\r\n    public updateSelectedDate(event: any): void {\r\n        this.selectedDate = event;\r\n    }\r\n\r\n    public addNewActivity(): void {\r\n        this.eventPlannerEvent.emit(new EventPayload(EventTypes.AddNewActivity, true));\r\n    }\r\n\r\n    public eventListEvent(event: EventPayload): void {\r\n        this.eventPlannerEvent.emit(event);\r\n    }\r\n\r\n    public refetchEvents() {\r\n        this.calendar.refetchEvents();\r\n    }\r\n    //#endregion\r\n}\r\n","<div class=\"container-fluid\">\r\n  <div class=\"event-planner\">\r\n    <div class=\"row header pb-3\">\r\n      <h3 class=\"title\">My Calendar</h3>\r\n\r\n      <div class=\"p-0\">\r\n        <ng-content select=\"[filterButtons]\"></ng-content>\r\n        <button *ngIf=\"options?.showAddActivityAction\" class=\"btn add-activity\" type=\"button\"\r\n          (click)=\"addNewActivity()\">\r\n          <i aria-hidden=\"true\" class=\"fa fa-plus\"></i>\r\n          New Activity\r\n        </button>\r\n      </div>\r\n    </div>\r\n    <div *ngIf=\"isFilterFormVisible\" class=\"row\">\r\n      <ng-content select=\"[filterComponent]\"></ng-content>\r\n    </div>\r\n    <div [hidden]=\"isFilterFormVisible\" class=\"row\">\r\n      <div class=\"col-xsm-12 col-sm-6 col-md-6 col-lg-4 pr-md-0\">\r\n        <app-calendar #calendar [options]=\"options\" (dayEvents)=\"updateDayEvents($event)\"\r\n          (selectedDate)=\"updateSelectedDate($event)\">\r\n        </app-calendar>\r\n      </div>\r\n      <div class=\"col-xsm-12 col-sm-6 col-md-6 col-lg-8 pl-sm-0 pl-md-4\">\r\n        <app-event-list [showEditActivityAction]=\"options?.showEditActivityAction\"\r\n          [showCompleteActivityAction]=\"options?.showCompleteActivityAction\"\r\n          [showDismissActivityAction]=\"options?.showDismissActivityAction\" [rows]=\"rows\" [date]=\"selectedDate\"\r\n          [loggedInUserId]=\"options?.loggedInUserId\"\r\n          [showHeader]=\"true\" scrollHeight=\"450px\" (eventListEvent)=\"eventListEvent($event) \">\r\n        </app-event-list>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</div>\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, Inject } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { ApiService, QueryOptions, IdentityService, Utils } from '@bsynchro/common';\r\nimport { CRM_API_CONSTANTS } from '../crm-constants';\r\n\r\n\r\n@Injectable()\r\nexport class ContactsService {\r\n  constructor(public httpClient: HttpClient, @Inject('environment') private _environment: any,\r\n    private _identityService: IdentityService) { }\r\n\r\n  //#region Getting Data\r\n  public getContactById(contactId: string): Observable<any> {\r\n    return new Observable<any>(\r\n      observer => {\r\n        const api = new ApiService(this.httpClient, this._environment.CRM);\r\n        api.get(CRM_API_CONSTANTS.Controller.Contact, contactId)\r\n          .subscribe(contact => {\r\n            if ((contact as any).id) {\r\n              observer.next(contact);\r\n            } else {\r\n              observer.next(null);\r\n            }\r\n          });\r\n      });\r\n  }\r\n\r\n  public getContacts(qo: QueryOptions): Observable<any> {\r\n    return new Observable<any>(observer => {\r\n      let api = new ApiService(this.httpClient, this._environment.CRM);\r\n      api.post(CRM_API_CONSTANTS.Controller.Contact, CRM_API_CONSTANTS.Action.Search, qo\r\n      ).subscribe((response: any) => {\r\n\r\n        observer.next(response);\r\n      });\r\n    });\r\n\r\n  }\r\n  //#endregion\r\n  //!check references before deletion\r\n\r\n  //#region Action Handler\r\n  //   public actionHandler(actionName: string, payload?: any): void | string | Observable<any> {\r\n  //     switch (actionName) {\r\n  //       case ContactsConstants.ActionName.GetContactForm:\r\n  //         return this.getContactForm();\r\n  //       case ContactsConstants.ActionName.SetContactSubmission:\r\n  //         return this.setContactFormSubmission(payload);\r\n  //       case ContactsConstants.ActionName.GetContacts:\r\n  //         return this.getContacts(payload);\r\n  //       case ContactsConstants.ActionName.GetContactById:\r\n  //         return this.getContactById(payload);\r\n  //       case ContactsConstants.ActionName.DismissContact:\r\n  //         return this.dismissContact(payload);\r\n\r\n  //       case ContactsConstants.ActionName.GetContactReferralsForm:\r\n  //         return this.getContactReferralsForm();\r\n  //       // case ContactsConstants.ActionName.SetContactReferralsSubmission:\r\n  //       //   return this.setContactReferralsSubmission(payload);\r\n  //       case ContactsConstants.ActionName.SubmitContact:\r\n  //         this._loaderService.show();\r\n  //         this.onSubmit(payload).subscribe(response => {\r\n  //           this._loaderService.hide();\r\n  //         });\r\n  //         break;\r\n  //       case ContactsConstants.ActionName.AddContact:\r\n  //         return this.addContact(payload);\r\n  //       case ContactsConstants.ActionName.SubmitContactReferrals:\r\n  //         this._loaderService.show();\r\n  //         this.saveContactReferrals().subscribe(response => {\r\n  //           this._loaderService.hide();\r\n  //         });\r\n  //         break;\r\n  //       default:\r\n  //         break;\r\n  //     }\r\n  //   }\r\n\r\n  //   public customEventCaller(event) {\r\n  //     switch (event.type) {\r\n  //       case FormIoConstants.ButtonEvent.ContactReferrals_Cancel:\r\n  //         this.contactReferralsOnCancel();\r\n  //         break;\r\n  //       case FormIoConstants.ButtonEvent.Contact_Cancel:\r\n  //         this.contactFormOnCancel();\r\n  //         break;\r\n  //       default:\r\n  //         break;\r\n  //     }\r\n  //   }\r\n  //#endregion\r\n\r\n\r\n  //#region Contact Form\r\n  public addContact(contact: any): Observable<any> {\r\n    return new Observable<any>(observer => {\r\n      // contact.ownerId = this._identityService.claims.sub;\r\n      // contact.ownerDisplay = this._identityService.claims.name;\r\n      let payload = { entity: contact };\r\n      let api = new ApiService(this.httpClient, this._environment.CRM);\r\n      api.post(CRM_API_CONSTANTS.Controller.Contact, CRM_API_CONSTANTS.Action.Default, payload)\r\n        .subscribe((response: any) => {\r\n          console.log('Add Contact Response: ', response);\r\n          observer.next(response);\r\n        });\r\n    });\r\n  }\r\n\r\n\r\n  public updateContactBasicInfo(contactPayload,extendedPropertiesToUpsert?:string[]): Observable<any> {\r\n\r\n    return new Observable<any>(observer => {\r\n      this.getContactById(contactPayload.id)\r\n        .subscribe(contact => {\r\n          contact['firstName'] = contactPayload['firstName'];\r\n          contact['lastName'] = contactPayload['lastName'];\r\n          contact['personalPhoneNumber'] = contactPayload['personalPhoneNumber'];\r\n\r\n          if(Object.keys(contactPayload).includes(\"corporateName\"))\r\n          contact['corporateName'] = contactPayload['corporateName'];\r\n          \r\n          if(extendedPropertiesToUpsert && extendedPropertiesToUpsert.length > 0)\r\n          {\r\n            if(!contact.extendedProperties)\r\n              contact.extendedProperties = {}\r\n            \r\n            extendedPropertiesToUpsert.forEach(property => \r\n              contact.extendedProperties[property] = contactPayload.extendedProperties[property]\r\n            );\r\n\r\n          }\r\n\r\n          this.updateContact(contact)\r\n            .subscribe(response => {\r\n              observer.next(response);\r\n            });\r\n        });\r\n    });\r\n  }\r\n\r\n  public updateContact(contact: any): Observable<any> {\r\n\r\n    return new Observable<any>(observer => {\r\n\r\n\r\n      let payload = { entity: contact };\r\n      let api = new ApiService(this.httpClient, this._environment.CRM);\r\n      api.put(CRM_API_CONSTANTS.Controller.Contact, CRM_API_CONSTANTS.Action.Default, payload)\r\n        .subscribe((response: any) => {\r\n          console.log('Update Contact Response: ', response);\r\n          observer.next(response);\r\n        });\r\n    });\r\n  }\r\n  //#endregion\r\n\r\n  //#region Contact Referrals\r\n  public saveContactReferrals(payload: Array<any>): Observable<any> {\r\n    return new Observable<boolean>(observer => {\r\n      let api = new ApiService(this.httpClient, this._environment.CRM);\r\n      api.post(CRM_API_CONSTANTS.Controller.Contact, CRM_API_CONSTANTS.Action.Many, payload).subscribe((response: any) => {\r\n        if (Utils.isNullOrUndefined((response as Array<any>).find(r => Utils.isNullOrUndefined(r.contactId)))) {\r\n          observer.next(true);\r\n        } else {\r\n          observer.next(false);\r\n        }\r\n      });\r\n    });\r\n  }\r\n  //#endregion\r\n\r\n\r\n\r\n\r\n  //#region public methods\r\n  public isValidContact(contact: any): boolean {\r\n    return !Utils.isNullOrUndefined(contact) && !Utils.isNullOrUndefined(contact.firstName) && !Utils.isNullOrUndefined(contact.lastName);\r\n  }\r\n  //#endregion\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { CRM_API_CONSTANTS, OpportunityState } from '../crm-constants';\r\nimport { Operators, IdentityService, QueryOptions, ApiService, FindExpression, Utils } from '@bsynchro/common';\r\nimport { SetOpportunityStatePayload } from '../models/opportunity/opportunity.models';\r\n\r\n@Injectable()\r\nexport class OpportunitiesService {\r\n    constructor(\r\n        public httpClient: HttpClient,\r\n        private _identityService: IdentityService,\r\n        @Inject('environment') private _environment: any\r\n    ) { }\r\n    public getOpportunities(queryOptions: QueryOptions): Observable<any> {\r\n        return new Observable<any>((observer) => {\r\n            const api = new ApiService(this.httpClient, this._environment.CRM);\r\n            api\r\n                .post(CRM_API_CONSTANTS.Controller.Opportunity, CRM_API_CONSTANTS.Action.Search, queryOptions)\r\n                .subscribe((result: any) => {\r\n                    if (!result) {\r\n                        observer.next(null);\r\n                    } else if (result && result.totalRecords == 0) {\r\n                        observer.next(null);\r\n                    } else {\r\n                        observer.next(result.data);\r\n                    }\r\n                });\r\n        });\r\n    }\r\n\r\n    public getOpportunityById(id): Observable<any> {\r\n        if (id) {\r\n            const qo = new QueryOptions();\r\n            qo.addExpression(new FindExpression(CRM_API_CONSTANTS.Field.Id, Operators.EQUAL, id));\r\n            return new Observable<any>((observer) => {\r\n                this.getOpportunities(qo).subscribe((response) => {\r\n                    observer.next(response[0]);\r\n                });\r\n            });\r\n        } else {\r\n            return new Observable<any>((observer) => observer.next(null));\r\n        }\r\n    }\r\n\r\n    public getOpportunitiesByContactId(\r\n        contactId: string,\r\n        ownerIdQueryExpression: FindExpression\r\n    ): Observable<Array<any>> {\r\n        const qo = new QueryOptions();\r\n        qo.addExpression(new FindExpression('ContactId', Operators.EQUAL, contactId));\r\n        qo.addExpression(ownerIdQueryExpression);\r\n        return this.getOpportunities(qo);\r\n    }\r\n\r\n    public getOpenOpportunitiesByContactId(\r\n        contactId: string,\r\n        opportunitiesQuery: FindExpression\r\n    ): Observable<Array<any>> {\r\n        const qo = new QueryOptions();\r\n        qo.addExpression(new FindExpression('ContactId', Operators.EQUAL, contactId));\r\n        qo.addExpression(new FindExpression('StateCode', Operators.EQUAL, OpportunityState.Open));\r\n        qo.addExpression(opportunitiesQuery);\r\n        return this.getOpportunities(qo);\r\n    }\r\n\r\n    public addOpportunity(opportunity): Observable<any> {\r\n        return new Observable<any>((observer) => {\r\n            const api = new ApiService(this.httpClient, this._environment.CRM);\r\n            opportunity.ownerId = this._identityService.claims.sub;\r\n            opportunity.ownerDisplay = this._identityService.user?.fullName;\r\n            const payload = { entity: opportunity };\r\n            api\r\n                .post(CRM_API_CONSTANTS.Controller.Opportunity, CRM_API_CONSTANTS.Action.Default, payload)\r\n                .subscribe((response: any) => {\r\n                    if (!response) {\r\n                        observer.next(null);\r\n                    }\r\n                    observer.next(response);\r\n                });\r\n        });\r\n    }\r\n\r\n    public closeOpportunity(opportunityId: string): Observable<boolean> {\r\n        return new Observable<boolean>((observer) => {\r\n            const api = new ApiService(this.httpClient, this._environment.CRM);\r\n            const params = {\r\n                id: opportunityId\r\n            };\r\n            api\r\n                .put(CRM_API_CONSTANTS.Controller.Opportunity, CRM_API_CONSTANTS.Action.CloseOpportunity, {}, params)\r\n                .subscribe((response) => {\r\n                    observer.next(true);\r\n                });\r\n        });\r\n    }\r\n\r\n    public setOpportunityState(setOpportunityStatePayload: SetOpportunityStatePayload): Observable<boolean> {\r\n        return new Observable<boolean>((observer) => {\r\n            // let payload = { entity: opportunityPayload };\r\n            const api = new ApiService(this.httpClient, this._environment.CRM);\r\n            api\r\n                .put(CRM_API_CONSTANTS.Controller.Opportunity, CRM_API_CONSTANTS.Action.SetOpportunityState, setOpportunityStatePayload)\r\n                .subscribe((response: any) => {\r\n                    if (!Utils.isNullOrUndefined(response.id)) {\r\n                        observer.next(true);\r\n                    } else {\r\n                        observer.next(false);\r\n                    }\r\n                });\r\n        });\r\n    }\r\n    //#endregion\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, Inject } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { ContactsService } from './contacts.service';\r\nimport { OpportunitiesService } from './opportunities.service';\r\nimport { IdentityService, ApiService, FindExpression, Utils } from '@bsynchro/common';\r\nimport { CRM_API_CONSTANTS } from '../crm-constants';\r\nimport { SetOpportunityStatePayload } from '../models/opportunity/opportunity.models';\r\n\r\n@Injectable()\r\nexport class ActivityManagementService {\r\n    constructor(\r\n        @Inject('environment') private _environment: any,\r\n        private _contactsService: ContactsService,\r\n        private _opportunityService: OpportunitiesService,\r\n        public httpClient: HttpClient\r\n    ) { }\r\n\r\n    //#region Actions\r\n    public addActivity(activityPayload: any): Observable<any> {\r\n        return new Observable<boolean>((observer) => {\r\n            const payload = { entity: activityPayload };\r\n            const api = new ApiService(this.httpClient, this._environment.CRM);\r\n            api\r\n                .post(CRM_API_CONSTANTS.Controller.Activity, CRM_API_CONSTANTS.Action.Default, payload)\r\n                .subscribe((response: any) => {\r\n                    observer.next(response);\r\n                });\r\n        });\r\n    }\r\n\r\n    public completeActivity(completeActivityPayload: any): Observable<boolean> {\r\n        return new Observable<boolean>((observer) => {\r\n            const api = new ApiService(this.httpClient, this._environment.CRM);\r\n            api\r\n                .post(\r\n                    CRM_API_CONSTANTS.Controller.Activity,\r\n                    CRM_API_CONSTANTS.Action.CompleteActivity,\r\n                    completeActivityPayload\r\n                )\r\n                .subscribe((response: any) => {\r\n                    if (!Utils.isNullOrUndefined(response.id)) {\r\n                        observer.next(true);\r\n                    } else {\r\n                        alert('Complete Failed.');\r\n                        observer.next(false);\r\n                    }\r\n                });\r\n        });\r\n    }\r\n\r\n    public postponeActivity(postponeActivityPayload: any): Observable<boolean> {\r\n        return new Observable<boolean>((observer) => {\r\n            const payload = { entity: postponeActivityPayload };\r\n            const api = new ApiService(this.httpClient, this._environment.CRM);\r\n            api\r\n                .put(CRM_API_CONSTANTS.Controller.Activity, CRM_API_CONSTANTS.Action.Default, payload)\r\n                .subscribe((response: any) => {\r\n                    if (!Utils.isNullOrUndefined(response.id)) {\r\n                        observer.next(true);\r\n                    } else {\r\n                        alert('Postponse Failed.');\r\n                        observer.next(false);\r\n                    }\r\n                });\r\n        });\r\n    }\r\n\r\n    public updateOpportunity(opportunityPayload: any): Observable<boolean> {\r\n        return new Observable<boolean>((observer) => {\r\n            // let payload = { entity: opportunityPayload };\r\n            const api = new ApiService(this.httpClient, this._environment.CRM);\r\n            api\r\n                .put(CRM_API_CONSTANTS.Controller.Opportunity, CRM_API_CONSTANTS.Action.Default, opportunityPayload)\r\n                .subscribe((response: any) => {\r\n                    if (!Utils.isNullOrUndefined(response.id)) {\r\n                        observer.next(true);\r\n                    } else {\r\n                        observer.next(false);\r\n                    }\r\n                });\r\n        });\r\n    }\r\n\r\n\r\n    public setOpportunityState(setOpportunityStatePayload: SetOpportunityStatePayload): Observable<boolean> {\r\n        return new Observable<boolean>((observer) => {\r\n            // let payload = { entity: opportunityPayload };\r\n            const api = new ApiService(this.httpClient, this._environment.CRM);\r\n            api\r\n                .put(CRM_API_CONSTANTS.Controller.Opportunity, CRM_API_CONSTANTS.Action.SetOpportunityState, setOpportunityStatePayload)\r\n                .subscribe((response: any) => {\r\n                    if (!Utils.isNullOrUndefined(response.id)) {\r\n                        observer.next(true);\r\n                    } else {\r\n                        observer.next(false);\r\n                    }\r\n                });\r\n        });\r\n    }\r\n\r\n    public getContactById(contactId): Observable<any> {\r\n        return new Observable<any>((observer) => {\r\n            this._contactsService.getContactById(contactId).subscribe((contact) => {\r\n                observer.next(contact);\r\n            });\r\n        });\r\n    }\r\n\r\n    public getOpportunityById(opportunityId: string): Observable<any> {\r\n        return new Observable<any>((observer) => {\r\n            this._opportunityService.getOpportunityById(opportunityId).subscribe((opportunity) => {\r\n                observer.next(opportunity);\r\n            });\r\n        });\r\n    }\r\n\r\n    public getOpenOpportunitiesByContactId(contactId: string, opportunitiesQuery: FindExpression): Observable<any> {\r\n        return new Observable<any>((observer) => {\r\n            this._opportunityService\r\n                .getOpenOpportunitiesByContactId(contactId, opportunitiesQuery)\r\n                .subscribe((opportunities) => {\r\n                    observer.next(opportunities);\r\n                });\r\n        });\r\n    }\r\n    //#endregion\r\n}\r\n","import { Component, OnInit, Input, OnChanges, SimpleChanges, Output, EventEmitter, OnDestroy } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators, FormControl } from '@angular/forms';\r\nimport { Utils, UITranslateService, DataListService } from '@bsynchro/common';\r\nimport { ActivityConstants, DataListsConstants, UIConstants } from '../../crm-constants';\r\nimport { ActivityManagementService } from '../../services/activity-management.service';\r\nimport { Options } from '../../models/common/Options';\r\nimport { Subscription } from 'rxjs/internal/Subscription';\r\nimport { Observable } from 'rxjs/internal/Observable';\r\n\r\n@Component({\r\n    selector: 'app-activity-complete',\r\n    templateUrl: './activity-complete.component.html',\r\n    styleUrls: ['./activity-complete.component.scss']\r\n})\r\nexport class ActivityCompleteComponent implements OnInit, OnChanges, OnDestroy {\r\n    @Input() activity: any;\r\n    @Input() options: Options;\r\n    @Output() onContactChange: EventEmitter<any>;\r\n    @Output() contactOpportunities: EventEmitter<any>;\r\n    @Output() onOpportunityChange: EventEmitter<any>;\r\n\r\n    //#region Private Fields\r\n    private _activityDetailFormGroup: FormGroup;\r\n    private _languageChangeSubscription: Subscription;\r\n    private _activityType: Array<any>;\r\n    //#endregion\r\n\r\n    //#region Public properties\r\n    public scheduledEndMaxDate: Date = new Date();\r\n    public get isValid(): boolean {\r\n        return this.activityDetailFormGroup.valid;\r\n    }\r\n\r\n    public get contactFullName(): string {\r\n        if (Utils.isEmpty(this.activity)) {\r\n            return '';\r\n        }\r\n        return this.activity.contactFullName;\r\n    }\r\n\r\n    public get opportunityTopic(): string {\r\n        if (Utils.isEmpty(this.activity)) {\r\n            return '';\r\n        }\r\n        return this.activity.opportunityDisplay;\r\n    }\r\n\r\n    public get activityTypeDisplay(): string {\r\n        if (Utils.isEmpty(this.activity)) {\r\n            return '';\r\n        }\r\n        return this.activity.activityTypeDisplay;\r\n    }\r\n\r\n    public get activityDetailFormGroup(): FormGroup {\r\n        return this._activityDetailFormGroup;\r\n    }\r\n\r\n    public get isCompleteActionOnMeetingActivity(): boolean {\r\n        if (Utils.isNull(this.activity)) {\r\n            return false;\r\n        }\r\n        return this.activity.activityTypeCode == ActivityConstants.ActivityTypeCodes.Meeting;\r\n    }\r\n\r\n    public get requiredErrorTitle() {\r\n        return 'activity.fieldIsRequired';\r\n    }\r\n\r\n    public get activityType() {\r\n        return this._activityType;\r\n    }\r\n\r\n    public get translateService(): UITranslateService {\r\n        return this._translateService;\r\n    }\r\n\r\n    public set activityType(value: any) {\r\n        this._activityType = value;\r\n    }\r\n    //#endregion\r\n    constructor(\r\n        private _fb: FormBuilder,\r\n        private _activityManagementService: ActivityManagementService,\r\n        private _translateService: UITranslateService,\r\n        private _dataListService: DataListService\r\n    ) {\r\n        this._activityDetailFormGroup = null;\r\n        this.onContactChange = new EventEmitter<any>();\r\n        this.contactOpportunities = new EventEmitter<any>();\r\n        this.onOpportunityChange = new EventEmitter<any>();\r\n        this._languageChangeSubscription = new Subscription();\r\n    }\r\n\r\n    ngOnInit() {\r\n        this.loadDataList();\r\n        this._languageChangeSubscription.unsubscribe();\r\n        this._languageChangeSubscription = this._translateService.onLanguageChange.subscribe(\r\n            (event) => {\r\n                this.loadDataList();\r\n            }\r\n        )\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes['activity'] && !Utils.isNullOrUndefined(changes['activity'].currentValue)) {\r\n            this.initializeCompleteActivityForm();\r\n            this._activityDetailFormGroup.patchValue({\r\n                scheduledEnd: new Date(this.activity.scheduledStart)\r\n            });\r\n\r\n            this._activityManagementService.getContactById(this.activity.contactId).subscribe((contact) => {\r\n                this.onContactChange.emit(contact);\r\n            });\r\n\r\n            if (Utils.isNotEmpty(this.activity.opportunityId)) {\r\n                this._activityManagementService\r\n                    .getOpportunityById(this.activity.opportunityId)\r\n                    .subscribe((opportunity) => {\r\n                        this.onOpportunityChange.emit(opportunity);\r\n\r\n                        this._activityManagementService\r\n                            .getOpenOpportunitiesByContactId(this.activity.contactId, this.options.opportunitiesQuery)\r\n                            .subscribe((opportunities) => {\r\n                                this.contactOpportunities.emit(opportunities);\r\n                            });\r\n                    });\r\n            }\r\n        }\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this._languageChangeSubscription.unsubscribe();\r\n    }\r\n\r\n    //#region FormControl Validator\r\n    private isDateInPast = (date: FormControl): { [key: string]: string } => {\r\n        if (Utils.isNotNull(date.value) && Utils.isDateOneBefore(new Date(Date.now()), new Date(date.value))) {\r\n            return { invalidDate: 'Date should be in the Past.' };\r\n        }\r\n        return null;\r\n    };\r\n\r\n    private actualDurationMinutesValidator = (formControl) => {\r\n        if (Utils.isNull(formControl.value) && this.isCompleteActionOnMeetingActivity) {\r\n            return { required: UIConstants.ErrorMessage.Required };\r\n        }\r\n        return null;\r\n    };\r\n    //#endregion\r\n\r\n    //#region Initialization\r\n    private initializeCompleteActivityForm(): void {\r\n        if (Utils.isNull(this._activityDetailFormGroup)) {\r\n            this._activityDetailFormGroup = this._fb.group({\r\n                scheduledEnd: [null, [Validators.required, this.isDateInPast]],\r\n                actualDurationMinutes: [0, [this.actualDurationMinutesValidator]],\r\n                description: [''],\r\n                feedback: ['']\r\n            });\r\n        }\r\n    }\r\n    //#endregion\r\n\r\n    //#region Helper\r\n    public checkCondition(formGroup: FormGroup, controlName: string, errorKey?: string): boolean {\r\n        return Utils.checkCondition(formGroup, controlName, errorKey);\r\n    }\r\n\r\n    public getErrorTitle(formGroup: FormGroup, controlName: string, errorKey: string): string {\r\n        return Utils.getErrorTitle(formGroup, controlName, errorKey);\r\n    }\r\n\r\n    private loadDataList() {\r\n        (<Observable<any>>this._dataListService.getDataListsByName([\r\n            DataListsConstants.DataListName.ActivityType\r\n        ])).subscribe((response) => {\r\n            if (response.length > 0) {\r\n                const datalists = this._translateService.getLocalizedDataLists(response);\r\n                this.activityType = datalists[0];\r\n            }\r\n        })\r\n    }\r\n    //#endregion\r\n}\r\n","<div class=\"activity-complete-component\">\r\n  <header>\r\n    <h3 class=\"sidebar_title\">{{ 'activity.completeActivity' | translate: { 'activity': activityTypeDisplay } }}</h3>\r\n  </header>\r\n\r\n  <section>\r\n    <div class=\"activity-body\" *ngIf=\"activityDetailFormGroup\">\r\n      <label>{{contactFullName}} {{opportunityTopic}}</label>\r\n\r\n      <form [formGroup]=\"activityDetailFormGroup\">\r\n\r\n        <div class=\"row form-group\">\r\n          <div class=\"col-3\">\r\n            <label>{{'activity.dateAndTime' | translate}} <span\r\n                *ngIf=\"checkCondition(activityDetailFormGroup, 'scheduledEnd')\" class=\"text-danger\">*</span>\r\n            </label>\r\n          </div>\r\n          <div class=\"col-9\">\r\n            <!-- <input type=\"datetime-local\" formControlName=\"scheduledEnd\" /> -->\r\n            <p-calendar *ngIf=\"translateService.calendarSetup == null; else localized_calendar\"\r\n              [ngClass]=\"{'has-error': checkCondition(activityDetailFormGroup, 'scheduledEnd', 'required') }\"\r\n              class=\"form-item-input\"\r\n              formControlName=\"scheduledEnd\" [monthNavigator]=\"true\" [yearNavigator]=\"true\" yearRange=\"2000:2100\"\r\n              dataType=\"date\" [showTime]=\"true\" hourFormat=\"12\" [maxDate]=\"scheduledEndMaxDate\"\r\n              [placeholder]='options?.calendarDatePlaceholder' [dateFormat]='options?.calendarDateFormat' [hideOnDateTimeSelect]=\"false\">\r\n            </p-calendar>\r\n            <ng-template #localized_calendar>\r\n              <p-calendar [locale]=\"translateService.calendarSetup\" class=\"form-item-input\"\r\n                [ngClass]=\"{'has-error': checkCondition(activityDetailFormGroup, 'scheduledEnd', 'required') }\"\r\n                formControlName=\"scheduledEnd\" [monthNavigator]=\"true\" [yearNavigator]=\"true\" yearRange=\"2000:2100\"\r\n                dataType=\"date\" [showTime]=\"true\" hourFormat=\"12\" [maxDate]=\"scheduledEndMaxDate\"\r\n                [placeholder]='options?.calendarDatePlaceholder' [dateFormat]='options?.calendarDateFormat' [hideOnDateTimeSelect]=\"false\">\r\n              </p-calendar>\r\n            </ng-template>\r\n            <span\r\n              *ngIf=\"checkCondition(activityDetailFormGroup, 'scheduledEnd', 'required'); else scheduledEndInvalidDate\"\r\n              class=\"text-danger error-message\">{{requiredErrorTitle | translate}}</span>\r\n            <ng-template #scheduledEndInvalidDate>\r\n              <span class=\"text-danger error-message\"\r\n                *ngIf=\"checkCondition(activityDetailFormGroup, 'scheduledEnd', 'invalidDate')\">\r\n                {{'activity.dateShouldBeInThePast' | translate}}</span>\r\n            </ng-template>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"row form-group\" *ngIf=\"isCompleteActionOnMeetingActivity\">\r\n          <div class=\"col-3\">\r\n            <label>{{ 'activity.durationOfMeeting' | translate}} <span\r\n                *ngIf=\"checkCondition(activityDetailFormGroup, 'actualDurationMinutes')\" class=\"text-danger\">*</span>\r\n            </label>\r\n          </div>\r\n          <div class=\"col-9\">\r\n            <p-spinner class=\"form-item-input\" formControlName=\"actualDurationMinutes\" [min]=\"0\"></p-spinner>\r\n            <span *ngIf=\"checkCondition(activityDetailFormGroup, 'actualDurationMinutes',\r\n                'required')\" class=\"text-danger error-message\">{{requiredErrorTitle | translate}}</span>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"row form-group\">\r\n          <div class=\"col-3\">\r\n            <label>{{'activity.description' | translate}}</label>\r\n          </div>\r\n          <div class=\"col-9\">\r\n            <div class=\"form-item-input\">\r\n              <textarea pInputTextarea formControlName=\"description\" type=\"string\" rows=\"3\" cols=\"30\"\r\n                [autoResize]=\"true\"></textarea>\r\n            </div>\r\n          </div>\r\n        </div>\r\n\r\n\r\n        <div class=\"row form-group\" *ngIf=\"isCompleteActionOnMeetingActivity\">\r\n          <div class=\"col-3\">\r\n            <label>{{ 'activity.feedback' | translate}}</label>\r\n          </div>\r\n          <div class=\"col-9\">\r\n            <div class=\"form-item-input\">\r\n              <textarea pInputTextarea formControlName=\"feedback\" type=\"string\" rows=\"3\" cols=\"30\"\r\n                [autoResize]=\"true\"></textarea>\r\n            </div>\r\n          </div>\r\n        </div>\r\n\r\n      </form>\r\n    </div>\r\n  </section>\r\n</div>","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class BlacklistService {\r\n\r\n  private _blacklistedPhoneNumbers:string[];\r\n  constructor() {}\r\n\r\n\r\n  initBlackListedPhoneNumbers(phoneNumbers:string[])\r\n  {\r\n    if(phoneNumbers)\r\n    {\r\n      this._blacklistedPhoneNumbers = phoneNumbers\r\n    }\r\n    else\r\n    {\r\n      this._blacklistedPhoneNumbers = [];\r\n    }\r\n  }\r\n\r\n  isPhoneNumberBlackListed(phoneNumber:string)\r\n  {\r\n    if(!this._blacklistedPhoneNumbers || !phoneNumber)\r\n      return false;\r\n\r\n    return this._blacklistedPhoneNumbers.includes(phoneNumber);\r\n  }\r\n}\r\n","import { Mode } from './mode.enum';\r\n\r\nexport class SalesManagerSelectionSettings {\r\n    Mode: Mode;\r\n    EntityName: String;\r\n    Required: boolean;\r\n    Label: string;\r\n\r\n    /**\r\n     *\r\n     */\r\n    constructor(mode: Mode, entityName: string, required: boolean = false, label: string = 'Owner') {\r\n        this.Mode = mode;\r\n        this.EntityName = entityName;\r\n        this.Label = label;\r\n        this.Required = required;\r\n    }\r\n}\r\n","export enum Mode {\r\n    DROP_DOWN = 1,\r\n    MULTI_SELECT = 2\r\n\r\n}","import {\r\n    Component,\r\n    OnInit,\r\n    SimpleChanges,\r\n    Input,\r\n    ViewEncapsulation,\r\n    forwardRef,\r\n    Output,\r\n    EventEmitter\r\n} from '@angular/core';\r\nimport { IdentityService, Utils } from '@bsynchro/common';\r\nimport { ControlValueAccessor, FormGroup, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { SalesManagerSelectionSettings } from '../../models/sale-manager-selection/salesManagerSelectionSettings';\r\nimport { Mode } from '../../models/sale-manager-selection/mode.enum';\r\n\r\n@Component({\r\n    selector: 'app-sales-manager-selection',\r\n    templateUrl: './sales-manager-selection.component.html',\r\n    styleUrls: ['./sales-manager-selection.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => SalesManagerSelectionComponent),\r\n            multi: true\r\n        }\r\n    ]\r\n})\r\nexport class SalesManagerSelectionComponent implements OnInit, ControlValueAccessor {\r\n    @Input() settings: SalesManagerSelectionSettings;\r\n\r\n    @Output() ownerChanged: EventEmitter<any> = new EventEmitter<any>();\r\n    private _subordinatesOptions: Array<any>;\r\n    private _value: any;\r\n    public salesManagerSelectionFormGroup: FormGroup;\r\n    private onChange: any = (_: any) => { };\r\n\r\n    constructor(private _identityService: IdentityService) {\r\n        this.settings = new SalesManagerSelectionSettings(Mode.MULTI_SELECT, '');\r\n        this.salesManagerSelectionFormGroup = new FormGroup({\r\n            subordinates: new FormControl([[]])\r\n        });\r\n    }\r\n\r\n    public get subordinatesOptions(): Array<any> {\r\n        return this._subordinatesOptions;\r\n    }\r\n\r\n    public get value(): Array<any> {\r\n        return this._value;\r\n    }\r\n\r\n    public set value(v: Array<any>) {\r\n        this._value = v;\r\n        this.onChange(v);\r\n    }\r\n\r\n    public get isDropdown(): boolean {\r\n        return this.settings.Mode === Mode.DROP_DOWN;\r\n    }\r\n    public get isMultiSelect(): boolean {\r\n        return this.settings.Mode === Mode.MULTI_SELECT;\r\n    }\r\n\r\n    ngOnInit() {\r\n        this._subordinatesOptions = [];\r\n        this._value = [this._identityService.claims.sub];\r\n        this.getSubordinates();\r\n        this.salesManagerSelectionFormGroup.valueChanges.subscribe((response) => {\r\n            this._value = response.subordinates;\r\n        });\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges): void {\r\n        // tslint:disable-next-line: no-string-literal\r\n        const settings = changes['settings'];\r\n        if (settings) {\r\n            this.settings = settings.currentValue;\r\n        }\r\n    }\r\n\r\n    writeValue(obj: any): void {\r\n        this.salesManagerSelectionFormGroup.get('subordinates').setValue(obj, { emitEvent: true });\r\n        this._value = obj;\r\n    }\r\n\r\n    registerOnChange(fn: any): void {\r\n        this.onChange = fn;\r\n    }\r\n\r\n    registerOnTouched(fn: any): void { }\r\n\r\n    setDisabledState?(isDisabled: boolean): void {\r\n        isDisabled ? this.salesManagerSelectionFormGroup.disable() : this.salesManagerSelectionFormGroup.enable();\r\n    }\r\n\r\n    //#region methods\r\n    private getSubordinates(): void {\r\n        this._identityService.getUserClan().subscribe((subs: Array<any>) => {\r\n            const currentMode = this.settings.Mode;\r\n            if (currentMode == Mode.DROP_DOWN) {\r\n                const loggedInUserName = this._identityService.user?.fullName;\r\n                this._subordinatesOptions = subs.map((s) => {\r\n                    return { label: s.fullName, value: [{ id: s.id, fullName: s.fullName }] };\r\n                });\r\n                this._subordinatesOptions.reverse();\r\n            }\r\n            if (currentMode == Mode.MULTI_SELECT) {\r\n                const usersWithoutLoggedInUser = subs.filter((s) => s.id !== this._identityService.claims.sub);\r\n                this._subordinatesOptions = usersWithoutLoggedInUser.map((s) => {\r\n                    return {\r\n                        label: s.fullName + \"'s \" + this.settings.EntityName,\r\n                        value: [{ id: s.id, fullName: s.fullName }]\r\n                    };\r\n                });\r\n                this._subordinatesOptions.push({\r\n                    label: \"My Team Member's \" + this.settings.EntityName,\r\n                    value: subs.map((s) => {\r\n                        return s;\r\n                    })\r\n                });\r\n                this._subordinatesOptions.push({\r\n                    label: 'My ' + this.settings.EntityName,\r\n                    value: [{ fullName: this._identityService.user?.fullName, id: this._identityService.claims.sub }]\r\n                });\r\n                this._subordinatesOptions.reverse();\r\n                this.salesManagerSelectionFormGroup.patchValue({\r\n                    subordinates: [\r\n                        [{ fullName: this._identityService.user?.fullName, id: this._identityService.claims.sub }]\r\n                    ]\r\n                });\r\n                this.onChange([\r\n                    [{ fullName: this._identityService.user?.fullName, id: this._identityService.claims.sub }]\r\n                ]);\r\n            }\r\n            //set the salesmanager item by default\r\n        });\r\n    }\r\n\r\n    public onSelection(event) {\r\n        const value = <Array<any>>event.value;\r\n        this._value = value;\r\n        this.onChange(value);\r\n        this.ownerChanged.emit(value);\r\n    }\r\n\r\n    public get hasValue() {\r\n        return !Utils.isNullOrUndefined(this._value) && this.value !== [];\r\n    }\r\n    //#endregion\r\n}\r\n","<form [formGroup]=\"salesManagerSelectionFormGroup\" class=\"owner-selection\">\r\n    <div class=\"ui-g-3 ownerSelection-title\">\r\n        <label>{{settings?.Label}}\r\n            <span class=\"ui-message ui-messages-error ui-corner-all\" *ngIf=\"settings?.Required\">\r\n                *</span>\r\n        </label>\r\n\r\n    </div>\r\n    <div *ngIf=\"isDropdown\" class=\"ui-g-9 ownerSelection-dropdown\">\r\n        <p-dropdown [options]=\"subordinatesOptions\" formControlName=\"subordinates\" [virtualScroll]=\"true\"\r\n            [itemSize]=\"30\" [autoDisplayFirst]=\"false\" [showClear]=\"true\" (onChange)=\"onSelection($event)\">\r\n        </p-dropdown>\r\n        <span class=\"ui-message ui-messages-error ui-corner-all\" *ngIf=\"settings?.Required && !hasValue\">\r\n            This field is required</span>\r\n    </div>\r\n\r\n\r\n    <div *ngIf=\"isMultiSelect\" class=\"ui-g-9 ownerSelection-multiSelect\">\r\n        <p-multiSelect [options]=\"subordinatesOptions\" formControlName=\"subordinates\" [virtualScroll]=\"true\"\r\n            [itemSize]=\"30\" (onChange)=\"onSelection($event)\">\r\n        </p-multiSelect>\r\n        <span class=\"ui-message ui-messages-error ui-corner-all\" *ngIf=\"settings?.Required && !hasValue\">\r\n            This field is required</span>\r\n    </div>\r\n</form>","import {\r\n    Component,\r\n    OnInit,\r\n    ViewEncapsulation,\r\n    Input,\r\n    SimpleChanges,\r\n    OnChanges,\r\n    Output,\r\n    EventEmitter,\r\n    Inject, ViewChild, OnDestroy, ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport {\r\n    DataListsConstants,\r\n    ActivityMode,\r\n    ActivityConstants,\r\n    CRM_API_CONSTANTS,\r\n    UIConstants\r\n} from '../../crm-constants';\r\nimport { FormGroup, FormBuilder, FormControl, Validators, ValidationErrors } from '@angular/forms';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { DataListService, Utils, QueryOptions, Operators, FindExpression, ApiService, IdentityService, PhoneNumberComponent, UITranslateService, LabelValueObject } from '@bsynchro/common';\r\nimport { ActivityManagementService } from '../../services/activity-management.service';\r\nimport { cloneDeep } from 'lodash';\r\nimport { Options } from '../../models/common/Options';\r\nimport { Subscription } from 'rxjs/internal/Subscription';\r\nimport { distinctUntilChanged, debounceTime } from 'rxjs/operators';\r\nimport { BlacklistService } from '../../services/blacklist.service';\r\n\r\n@Component({\r\n    selector: 'app-activity-detail',\r\n    templateUrl: './activity-detail.component.html',\r\n    styleUrls: ['./activity-detail.component.scss'],\r\n    encapsulation: ViewEncapsulation.None\r\n})\r\nexport class ActivityDetailComponent implements OnInit, OnChanges, OnDestroy {\r\n    @Input() activityMode: ActivityMode;\r\n    @Input() selectedContact: any;\r\n    @Input() opportunities: any;\r\n    @Input() selectedOpportunity: any;\r\n    @Input() options: Options;\r\n    @Input() scheduledStartMinDate: Date = null;\r\n    @Input() canInviteManager: boolean = false;\r\n    @Input() canChangeContactType: boolean = false;\r\n    // user of activity component will specify the logic for blacklisting in his project\r\n    // he can also show some toast or dialogs \r\n    \r\n    @Output() blacklistedContact: EventEmitter<boolean> = new EventEmitter();\r\n    @Output() onContactChange: EventEmitter<any>;\r\n    @Output() contactOpportunities: EventEmitter<any>;\r\n    @Output() onOpportunityChange: EventEmitter<any>;\r\n\r\n    @ViewChild('phoneNumberComponent', { static: false })\r\n    contactPhoneNumberComponent: PhoneNumberComponent;\r\n\r\n    //#region Private fields\r\n    public fileUrl: string;\r\n    public activityAtSameTimeExist:boolean = false;\r\n    public managerHasActivityAtSameTimeExist:boolean = false;\r\n    private dataListNames: Array<string> = [\r\n        DataListsConstants.DataListName.ActivityPurpose,\r\n        DataListsConstants.DataListName.ActivityType,\r\n        DataListsConstants.DataListName.ContactType\r\n    ];\r\n    private _contactOptions: Array<any>;\r\n    private _purposeOptions: Array<any>;\r\n    private _contactTypeOptions = new Array<LabelValueObject>();\r\n    private _activityTypeOptions: Array<any>;\r\n    private _nextActivityTypeOptions: Array<any>;\r\n    private _isNoneSelected: boolean;\r\n    private _isAddingCompletedActivity: boolean;\r\n    private _isMeetingActivity: boolean;\r\n    private _activityDetailFormGroup: FormGroup;\r\n    private _opportunityOptions: Array<any>;\r\n    private _showOwnerSelection: boolean;\r\n    private contactPhoneNumberValidationFn: () => ValidationErrors | null;\r\n    private _currentContactSnapshot: any;// hold the last set contact to compare with when changing selection in contact dropdown\r\n    //#endregion\r\n\r\n    //#region language\r\n    private _langChangeSubscription: Subscription;\r\n    public placeholder = \"activity.enterFirst3Characters\";\r\n    //#endregion\r\n\r\n    //#region Suggested Values\r\n    public get contactOptions(): Array<any> {\r\n        return this._contactOptions;\r\n    }\r\n\r\n    public get purposeOptions(): Array<any> {\r\n        return this._purposeOptions;\r\n    }\r\n\r\n    public get contactTypeOptions(): Array<any> {\r\n        return this._contactTypeOptions;\r\n    }\r\n\r\n    public get activityTypeOptions(): Array<any> {\r\n        return this._activityTypeOptions;\r\n    }\r\n\r\n    public get nextActivityTypeOptions(): Array<any> {\r\n        return this._nextActivityTypeOptions;\r\n    }\r\n    //#endregion\r\n\r\n    //#region UI Properties\r\n    public get actualDurationMinutesVisibility(): boolean {\r\n        return this.isAddingCompletedActivity && this._isMeetingActivity;\r\n    }\r\n\r\n    public get isNoneSelected(): boolean {\r\n        return this._isNoneSelected;\r\n    }\r\n\r\n    //the user is adding and activity with date in past (completed)\r\n    public get isAddingCompletedActivity(): boolean {\r\n        return this._isAddingCompletedActivity;\r\n    }\r\n\r\n    public get isMeetingActivity(): boolean {\r\n        return this._isMeetingActivity;\r\n    }\r\n\r\n    public get isNextActivity(): boolean {\r\n        return this.activityMode == ActivityMode.Next;\r\n    }\r\n\r\n    public get isValid(): boolean {\r\n        if(this._blacklistService.isPhoneNumberBlackListed(this._activityDetailFormGroup.get(\"contactPhoneNumber\").value))\r\n        {\r\n            this.blacklistedContact.emit(true);\r\n            return false;\r\n        }\r\n\r\n        //#region Next Activity\r\n        if (this.isNextActivity) {\r\n            return this.activityDetailFormGroup.valid;\r\n        }\r\n        //#endregion\r\n\r\n        if (!this.actualDurationMinutesVisibility) {\r\n            this.activityDetailFormGroup.get('actualDurationMinutes').disable();\r\n        } else {\r\n            this.activityDetailFormGroup.get('actualDurationMinutes').enable();\r\n        }\r\n        return this.activityDetailFormGroup.valid;\r\n    }\r\n\r\n    public get environmentLocation() {\r\n        return this._environment && this._environment.location ? this._environment.location : 'lb';\r\n    }\r\n    //#endregion\r\n\r\n    //#region Public Properties\r\n    public get activityDetailFormGroup(): FormGroup {\r\n        return this._activityDetailFormGroup;\r\n    }\r\n\r\n    public get opportunityOptions(): Array<any> {\r\n        return this._opportunityOptions;\r\n    }\r\n\r\n    public get requiredErrorTitle() {\r\n        return 'activity.fieldIsRequired';\r\n    }\r\n\r\n    public get translateService(): UITranslateService {\r\n        return this._translateService;\r\n    }\r\n\r\n    public get isContactTypeCorporate()\r\n    {\r\n        // when the feature is off contactType stays null, and null != \"0\" would\r\n        // wrongly report the contact as corporate: that requires the companyName\r\n        // field, which is never rendered in that case, and drops the required\r\n        // validators off the first and last name inputs.\r\n        return this.canChangeContactType\r\n               && this.activityDetailFormGroup\r\n               && this.activityDetailFormGroup.get(\"contactType\")\r\n               && this.activityDetailFormGroup.get(\"contactType\").value != \"0\"\r\n    }\r\n    \r\n    //#endregion\r\n\r\n    constructor(\r\n        private _fb: FormBuilder,\r\n        private cd:ChangeDetectorRef,\r\n        private httpClient: HttpClient,\r\n        private _dataListService: DataListService,\r\n        private _identityService: IdentityService,\r\n        private _activityManagementService: ActivityManagementService,\r\n        private _translateService: UITranslateService,\r\n        private _blacklistService:BlacklistService,\r\n        @Inject('environment') private _environment: any,\r\n        @Inject('fileSettings') private _fileSettings: any\r\n    ) {\r\n        this._contactOptions = new Array<any>();\r\n        this._purposeOptions = new Array<any>();\r\n        this._activityTypeOptions = new Array<any>();\r\n        this._nextActivityTypeOptions = new Array<any>();\r\n        this._isNoneSelected = false;\r\n        this._isAddingCompletedActivity = false;\r\n        this._isMeetingActivity = false;\r\n        this._activityDetailFormGroup = null;\r\n        this._opportunityOptions = new Array<any>();\r\n        this.onContactChange = new EventEmitter<any>();\r\n        this.contactOpportunities = new EventEmitter<any>();\r\n        this.onOpportunityChange = new EventEmitter<any>();\r\n        this.fileUrl = this._fileSettings.fileUrl;\r\n        this._showOwnerSelection = true;\r\n    }\r\n\r\n    ngOnInit() {\r\n        this._langChangeSubscription = this.translateService.onLanguageChange.subscribe((event) =>\r\n            this.loadDataLists());\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes['activityMode'] && !Utils.isNullOrUndefined(changes['activityMode'].currentValue)) {\r\n            this.loadDataLists();\r\n            this.initializeFormGroup();\r\n\r\n            this._activityDetailFormGroup.get('contactPhoneNumber')?.valueChanges.pipe(distinctUntilChanged(), debounceTime(300))\r\n            .subscribe((v) => {\r\n            if(this._blacklistService.isPhoneNumberBlackListed(v))\r\n            {\r\n                this.blacklistedContact.emit(true);\r\n            }\r\n        });\r\n        }\r\n\r\n        // if (changes['selectedContact'] && !isNullOrUndefined(changes['selectedContact'].currentValue)) {\r\n        if (changes['selectedContact']) {\r\n            this.updateActivityDetailFormGroup(this.selectedContact);\r\n        }\r\n\r\n        if (changes['opportunities'] && !Utils.isNullOrUndefined(changes['opportunities'].currentValue)) {\r\n            this._opportunityOptions = this.opportunities;\r\n        }\r\n\r\n        if (changes['selectedOpportunity'] && !Utils.isNullOrUndefined(changes['selectedOpportunity'].currentValue)) {\r\n            this._activityDetailFormGroup.patchValue({\r\n                opportunity: this.selectedOpportunity\r\n            });\r\n        }\r\n        // if (changes['options'] && !isNullOrUndefined(changes['options'].currentValue)) {\r\n        // if (!this.options.isSalesManager) {\r\n        // const c = this._activityDetailFormGroup.get('ownerSelection');\r\n        // if (!isNullOrUndefined(c)) {\r\n        //     c.disable();\r\n        // }\r\n        // }\r\n        // }\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this._langChangeSubscription.unsubscribe();\r\n    }\r\n    //#region getters{\r\n    public get isContactNullOrUndefined() {\r\n        return Utils.isNullOrUndefined(this.selectedContact);\r\n    }\r\n\r\n    public get isOpportunityNullOrUndefined() {\r\n        return Utils.isNullOrUndefined(this.selectedOpportunity);\r\n    }\r\n\r\n    public get showOwnerSelection(): boolean {\r\n        return this._showOwnerSelection;\r\n    }\r\n\r\n    public set showOwnerSelection(value) {\r\n        this._showOwnerSelection = value;\r\n    }\r\n\r\n    //#region FormControl Validator\r\n    private actualDurationMinutesValidator = (formControl) => {\r\n        if (Utils.isNull(this._activityDetailFormGroup)) {\r\n            return null;\r\n        }\r\n        if (Utils.isNull(formControl.value) && this.actualDurationMinutesVisibility) {\r\n            return { required: UIConstants.ErrorMessage.Required };\r\n        }\r\n        return null;\r\n    };\r\n\r\n    private isDateInFuture = (date: FormControl): { [key: string]: string } => {\r\n        if (Utils.isNotNull(date.value) && Utils.isDateOneBefore(new Date(date.value), new Date(Date.now()))) {\r\n            return { invalidDate: 'Date should be in the future.' };\r\n        }\r\n        return null;\r\n    };\r\n\r\n    public setContactPhoneNumberValidationFn(event) {\r\n        this.contactPhoneNumberValidationFn = event;\r\n    }\r\n\r\n    public isContactPhoneNumberValid() {\r\n        if (\r\n            !Utils.isNullOrUndefined(this.contactPhoneNumberValidationFn) &&\r\n            this._activityDetailFormGroup.getRawValue().contactPhoneNumber\r\n        ) {\r\n            const validationResult = this.contactPhoneNumberValidationFn.apply(this);\r\n            return validationResult === null ? true : false;\r\n        }\r\n        return true;\r\n    }\r\n\r\n    public onContactTypeChange() {\r\n        if (!this.isContactTypeCorporate) {\r\n            this.activityDetailFormGroup.get(\"contactFirstName\").addValidators([Validators.required]);\r\n            this.activityDetailFormGroup.get(\"contactLastName\").addValidators([Validators.required]);\r\n            this.activityDetailFormGroup.get(\"companyName\").removeValidators([Validators.required]);\r\n            this.activityDetailFormGroup.get(\"companyName\").setValue(\"\");\r\n        }\r\n        else {\r\n            this.activityDetailFormGroup.get(\"contactFirstName\").removeValidators([Validators.required]);\r\n            this.activityDetailFormGroup.get(\"contactLastName\").removeValidators([Validators.required]);\r\n            this.activityDetailFormGroup.get(\"companyName\").addValidators([Validators.required]);\r\n            this.activityDetailFormGroup.get(\"contactFirstName\").setValue(\"\");\r\n            this.activityDetailFormGroup.get(\"contactLastName\").setValue(\"\");\r\n        }\r\n\r\n        [\"contactFirstName\",\"contactLastName\",\"companyName\"].forEach(\r\n            c => {\r\n                this.activityDetailFormGroup.get(c).updateValueAndValidity();\r\n            }\r\n        );\r\n}\r\n\r\n    private personalMobileValidator = (c: FormControl): ValidationErrors | null => {\r\n        if (!Utils.isNullOrUndefined(this.contactPhoneNumberValidationFn) && c.value) {\r\n            return this.contactPhoneNumberValidationFn.apply(this);\r\n        }\r\n        return null;\r\n    };\r\n\r\n\r\n\r\n    private ownerValidator = (c: FormControl) => {\r\n        // if (!isNullOrUndefined(this._activityDetailFormGroup)) {\r\n        //     this.onClearContact(null);\r\n        // }\r\n\r\n        if (!Utils.isNullOrUndefined(this._activityDetailFormGroup)) {\r\n            this.clearContact();\r\n        }\r\n    };\r\n    private contactValidator = (c: FormControl) => {\r\n        if (!Utils.isNullOrUndefined(this._activityDetailFormGroup)) {\r\n\r\n            if (!Utils.isNullOrUndefined(this._currentContactSnapshot) && JSON.stringify(c.value) != JSON.stringify(this._currentContactSnapshot)) {\r\n                this._activityDetailFormGroup.patchValue({\r\n                    contactType:this.canChangeContactType ? \"0\" : null,\r\n                    contactFirstName: '',\r\n                    contactLastName: '',\r\n                    companyName: '',\r\n                    contactPhoneNumber: null,\r\n                    opportunity: null\r\n                });\r\n                // this.onContactChange.emit(null);\r\n                this.contactOpportunities.emit(null);\r\n            }\r\n\r\n            this._currentContactSnapshot = c.value;\r\n        }\r\n\r\n    }\r\n\r\n    enableDisableContactFields(contact)\r\n    {\r\n        this.cd.detectChanges();\r\n        let isCustomer:boolean=(contact?.stateCode==3);\r\n\r\n            [\r\n                \"contactType\",\r\n                \"contactFirstName\",\r\n                \"contactLastName\",\r\n                \"companyName\"\r\n\r\n            ].forEach(\r\n                key => {\r\n                    if(isCustomer)\r\n                    this._activityDetailFormGroup.get(key).disable();\r\n                    else\r\n                    this._activityDetailFormGroup.get(key).enable();\r\n                }\r\n            );\r\n    }\r\n\r\n    //#endregion\r\n\r\n    //#region Initialization\r\n    private initializeFormGroup(): void {\r\n        switch (this.activityMode) {\r\n            case ActivityMode.Current:\r\n                if (Utils.isNull(this._activityDetailFormGroup)) {\r\n                    this.initializeCurrentActivityForm();\r\n                }\r\n                break;\r\n            case ActivityMode.Next:\r\n                this.scheduledStartMinDate = new Date();\r\n                if (Utils.isNull(this._activityDetailFormGroup)) {\r\n                    this.initializeNextActivityForm();\r\n                }\r\n                break;\r\n        }\r\n    }\r\n\r\n    private initializeNextActivityForm(): void {\r\n        this._activityDetailFormGroup = this._fb.group({\r\n            ownerSelection: [\r\n                [{ id: this._identityService.claims.sub, fullName: this._identityService.user?.fullName }],\r\n                // [ this.ownerValidator ]\r\n                []\r\n            ],\r\n            activityTypeCode: [null, [Validators.required]],\r\n            contact: [null],\r\n            contactType:[this.canChangeContactType ? \"0\":null],\r\n            contactFirstName: [''],\r\n            contactLastName: [''],\r\n            companyName:[''],\r\n            contactPhoneNumber: [null],\r\n            subjectCode: [null],\r\n            opportunity: [{ value: null, disabled: false }],\r\n            scheduledStart: [null, [Validators.required, this.isDateInFuture]],\r\n            description: [''],\r\n            inviteManager: [false]\r\n        });\r\n        // this._activityDetailFormGroup.get('contactFirstName').disable();\r\n        // this._activityDetailFormGroup.get('contactLastName').disable();\r\n        // this._activityDetailFormGroup.get('contactPhoneNumber').disable();\r\n    }\r\n\r\n    private initializeCurrentActivityForm(): void {\r\n        this._activityDetailFormGroup = this._fb.group({\r\n            ownerSelection: [\r\n                [{ id: this._identityService.claims.sub, fullName: this._identityService.user?.fullName }],\r\n                [Validators.required, this.ownerValidator]\r\n            ],\r\n            activityTypeCode: [null, [Validators.required]],\r\n            contact: [null, this.contactValidator],\r\n            contactType: [this.canChangeContactType ? \"0\" : null],\r\n            contactFirstName: ['', [Validators.required]],\r\n            contactLastName: ['', [Validators.required]],\r\n            companyName:[''],\r\n            contactPhoneNumber: [null, [Validators.required, this.personalMobileValidator]],\r\n            subjectCode: [null],\r\n            opportunity: [{ value: null, disabled: false }],\r\n            scheduledStart: [null, [Validators.required]],\r\n            actualDurationMinutes: [null, [this.actualDurationMinutesValidator]],\r\n            description: [''],\r\n            feedback: [''],\r\n            inviteManager: [false]\r\n        });\r\n    }\r\n\r\n    private loadDataLists(): void {\r\n        const requestedDataListNames = this.canChangeContactType\r\n            ? this.dataListNames\r\n            : this.dataListNames.filter((n) => n !== DataListsConstants.DataListName.ContactType);\r\n\r\n        (this._dataListService.getDataListsByName(requestedDataListNames) as Observable<any>).subscribe((response) => {\r\n            const datalists = this.translateService.getLocalizedDataLists(response);\r\n            this._activityTypeOptions = datalists.find(\r\n                (d) => d[0].dataListName == this._dataListService.treatDataListName( DataListsConstants.DataListName.ActivityType)\r\n            );\r\n            this._purposeOptions = datalists.find(\r\n                (d) => d[0].dataListName == this._dataListService.treatDataListName(DataListsConstants.DataListName.ActivityPurpose)\r\n            );\r\n\r\n            if (this.canChangeContactType) {\r\n                this._contactTypeOptions = this._dataListService.mapNameCodeRowsIntoLabelValue(\r\n                    datalists,\r\n                    this._dataListService.treatDataListName(DataListsConstants.DataListName.ContactType)\r\n                )\r\n            }\r\n\r\n            if (\r\n                this.activityMode == ActivityMode.Next &&\r\n                this.nextActivityTypeOptions.findIndex((a) => a.code == '5') == -1\r\n            ) {\r\n                this._nextActivityTypeOptions = cloneDeep(this._activityTypeOptions);\r\n                this._nextActivityTypeOptions.push({ code: '5', name: 'None' });\r\n            }\r\n        });\r\n    }\r\n    //#endregion\r\n\r\n    //#region UI\r\n    public getActivityClass(activityCode): string {\r\n        if (Utils.isNull(activityCode)) {\r\n            return '';\r\n        }\r\n        return ActivityConstants.ActivityTypes[activityCode].class;\r\n    }\r\n\r\n    public getActivityStyle(activityCode): {} {\r\n        return { color: ActivityConstants.ActivityTypes[activityCode].color };\r\n    }\r\n    //#endregion\r\n\r\n    //#region Actions\r\n    public search(event) {\r\n        const query = (event.query as string).trim();\r\n        const queryOptions = new QueryOptions();\r\n\r\n        var nameExpression = new FindExpression();\r\n        nameExpression.addExpressionsWithOrOperator(\r\n            [\r\n                new FindExpression('FirstName', Operators.CONTAINS, query),\r\n                new FindExpression('LastName', Operators.CONTAINS, query),\r\n                new FindExpression('CorporateName', Operators.CONTAINS, query)\r\n            ]\r\n        );\r\n        queryOptions.addExpression(nameExpression);\r\n        queryOptions.addExpression(new FindExpression('Hidden', Operators.EQUAL, false));\r\n        if (this.options.isSalesManager) {\r\n            if (!Utils.isEmpty(this.activityDetailFormGroup.get('ownerSelection').value)) {\r\n                const selection = this.activityDetailFormGroup.get('ownerSelection').value;\r\n                const ownerExpression = new FindExpression('OwnerId', Operators.EQUAL, selection[0].id);\r\n                queryOptions.addExpression(ownerExpression);\r\n                this.searchContact(queryOptions);\r\n            }\r\n        } else {\r\n            queryOptions.addExpression(this.options.query);\r\n            this.searchContact(queryOptions);\r\n        }\r\n    }\r\n\r\n    private searchContact(queryOptions) {\r\n        const api = new ApiService(this.httpClient, this._environment.CRM);\r\n        api\r\n            .post(CRM_API_CONSTANTS.Controller.Contact, CRM_API_CONSTANTS.Action.Search, queryOptions)\r\n            .subscribe((response: any) => {\r\n                this._contactOptions = response.data;\r\n            });\r\n    }\r\n\r\n    private updateActivityDetailFormGroup(contact: any) {\r\n        if (Utils.isNotEmpty(contact)) {\r\n            this._activityDetailFormGroup.patchValue({\r\n                contact: contact,\r\n                contactType:contact.extendedProperties ? contact.extendedProperties.contactType : null,\r\n                contactFirstName: contact.firstName,\r\n                contactLastName: contact.lastName,\r\n                contactPhoneNumber: contact.personalPhoneNumber.number,\r\n                companyName:contact.corporateName\r\n            });\r\n            this.enableDisableContactFields(contact);\r\n            this.onContactTypeChange();\r\n        } else {\r\n            this._activityDetailFormGroup.patchValue({\r\n                contact: null,\r\n                contactType:this.canChangeContactType ? \"0\" : null,\r\n                contactFirstName: '',\r\n                contactLastName: '',\r\n                contactPhoneNumber: null,\r\n                companyName:''\r\n            });\r\n            this.enableDisableContactFields(null);\r\n        }\r\n    }\r\n    //#endregion\r\n\r\n    //#region Change Handler\r\n    public onSelectContact(contact) {\r\n        this.onContactChange.emit(contact);\r\n        this.clearContact();\r\n        this._activityManagementService\r\n            .getOpenOpportunitiesByContactId(contact.id, this.options.opportunitiesQuery)\r\n            .subscribe((response) => {\r\n                this._opportunityOptions = response;\r\n                this.contactOpportunities.emit(response);\r\n            });\r\n    }\r\n\r\n    private clearContact(): void {\r\n        this._activityDetailFormGroup.patchValue({\r\n            contact: null,\r\n            // contactFirstName: '',\r\n            // contactLastName: '',\r\n            // contactPhoneNumber: null,\r\n            // opportunity :null\r\n        });\r\n    }\r\n\r\n    public onClearContact(event) {\r\n        this.onContactChange.emit(null);\r\n        this.contactOpportunities.emit(null);\r\n        this.contactPhoneNumberComponent.initCountry();\r\n    }\r\n\r\n    public onOpportunityChanged(event) {\r\n        this.onOpportunityChange.emit(event.value);\r\n    }\r\n\r\n    public onActivityTypeChange(event) {\r\n        this._isNoneSelected = event.value.code == ActivityConstants.ActivityTypeCodes.None;\r\n        this._isMeetingActivity = event.value.code == ActivityConstants.ActivityTypeCodes.Meeting;\r\n        if(this.isMeetingActivity)\r\n        {\r\n            this._activityDetailFormGroup.controls['subjectCode'].addValidators([Validators.required])\r\n            this._activityDetailFormGroup.controls['subjectCode'].updateValueAndValidity();\r\n            this._activityDetailFormGroup.controls['subjectCode'].markAsUntouched();\r\n            this._activityDetailFormGroup.controls['subjectCode'].markAsPristine();\r\n            this._activityDetailFormGroup.controls['subjectCode'].setErrors(null);\r\n        }\r\n        else\r\n        {\r\n            this._activityDetailFormGroup.controls['subjectCode'].removeValidators([Validators.required])\r\n            this._activityDetailFormGroup.controls['subjectCode'].updateValueAndValidity();\r\n            this._activityDetailFormGroup.controls['subjectCode'].setValue(null);\r\n        }\r\n    }\r\n\r\n    public onScheduledStartChange(date): void {\r\n        this.activityAtSameTimeExist = false;\r\n        this.managerHasActivityAtSameTimeExist = false;\r\n        if (this.isNextActivity) {\r\n            return;\r\n        }\r\n        this._isAddingCompletedActivity = Utils.isDateOneBefore(new Date(date), new Date());\r\n    }\r\n    //#endregion\r\n\r\n    //#region Helper\r\n    public checkCondition(formGroup: FormGroup, controlName: string, errorKey?: string): boolean {\r\n        return Utils.checkCondition(formGroup, controlName, errorKey);\r\n    }\r\n\r\n    public getErrorTitle(formGroup: FormGroup, controlName: string, errorKey: string): string {\r\n        return Utils.getErrorTitle(formGroup, controlName, errorKey);\r\n    }\r\n    //#endregion\r\n\r\n    //#region authorization\r\n    public isContactFieldDisabled(name: string): boolean {\r\n        const value = this._activityDetailFormGroup.get(name).value;\r\n        if (Utils.isEmpty(value) && !this.options.canCreateContact) {\r\n            return true;\r\n        }\r\n\r\n        if (!Utils.isEmpty(value) && !this.options.canEditContact) {\r\n            return true;\r\n        }\r\n\r\n        return false;\r\n    }\r\n    //#endregion\r\n}\r\n","<div class=\"activity-detail-component\">\r\n  <header>\r\n    <h3 class=\"sidebar_title\" *ngIf=\"isNextActivity; else isCurrentActivity\">{{ \"activity.whatToDoNext\" | translate }}\r\n    </h3>\r\n  </header>\r\n  <section>\r\n    <div class=\"activity-body\">\r\n      <form [formGroup]=\"activityDetailFormGroup\">\r\n\r\n        <div class=\"row form-group\">\r\n          <div class=\"col-12\">\r\n            <label>\r\n              {{ \"activity.chooseActivity\" | translate }}\r\n              <span class=\"text-danger\">*</span>\r\n            </label>\r\n          </div>\r\n          <div class=\"col-12 pb-2\">\r\n            <p-selectButton formControlName=\"activityTypeCode\"\r\n              [options]=\"isNextActivity ? nextActivityTypeOptions : activityTypeOptions\" optionLabel=\"name\"\r\n              (onChange)=\"onActivityTypeChange($event)\">\r\n              <ng-template let-item>\r\n                <span [ngClass]=\"getActivityClass(item.code)\">\r\n                  <i class=\"icon\" [ngStyle]=\"getActivityStyle(item.code)\"></i>\r\n                  <span>{{item.name}}</span>\r\n                </span>\r\n              </ng-template>\r\n            </p-selectButton>\r\n            <span *ngIf=\"checkCondition(activityDetailFormGroup, 'activityTypeCode', 'required')\"\r\n              class=\"text-danger error-message\">{{requiredErrorTitle | translate}}</span>\r\n          </div>\r\n          <label>\r\n            <span *ngIf=\"checkCondition(activityDetailFormGroup, 'activityTypeCode')\"\r\n              class=\"text-danger\">{{\"activity.fieldIsRequired\" | translate}}</span>\r\n          </label>\r\n        </div>\r\n\r\n        <div *ngIf=\"!isNoneSelected\">\r\n \r\n          <div class=\"row form-group\" *ngIf=\"!isNextActivity\">\r\n\r\n            <div class=\"col-12  md-inputfield\" *ngIf=\"options?.hasTeamAccess\">\r\n              <app-sales-manager-selection [settings]=\"options?.salesManagerSelectionSettings\"\r\n                formControlName=\"ownerSelection\">\r\n              </app-sales-manager-selection>\r\n            </div>\r\n            <!-- Contact Selection -->\r\n            <div class=\"col-3\">\r\n              <label>\r\n                {{\"activity.contact\" | translate}} <span *ngIf=\"checkCondition(activityDetailFormGroup, 'contact')\"\r\n                  class=\"text-danger\">*</span>\r\n              </label>\r\n\r\n            </div>\r\n            <div class=\"col-9\">\r\n              <p-autoComplete id=\"acSimple\" class=\"form-item-input\" [dropdown]=\"true\" formControlName=\"contact\"\r\n                type=\"search\" placeholder=\"{{ placeholder | translate }}\" [suggestions]=\"contactOptions\"\r\n                field=\"fullName\" [minLength]=\"2\" (completeMethod)=\"search($event)\" (onSelect)=\"onSelectContact($event)\"\r\n                [forceSelection]=\"true\" (onClear)=\"onClearContact($event)\">\r\n                <ng-template let-contact pTemplate=\"item\">\r\n                  <div class=\"ui-helper-clearfix d-flex\">\r\n                    <div class=\"d-none d-lg-block col-lg-2 align-self-center\">\r\n                      <img src=\"/assets/images/default.svg\" alt=\"default image\" *ngIf=\"!contact.imageUri\"\r\n                        class=\"img-fluid rounded-circle {{contact.imageUri ? 'hidden': ''}}\">\r\n                      <img src=\"{{fileUrl}}/{{contact.imageUri}}\" alt=\"Contact image\" *ngIf=\"contact.imageUri\"\r\n                        class=\"img-fluid rounded-circle {{!contact.imageUri ? 'hidden': ''}}\">\r\n                    </div>\r\n                    <div class=\"col-md-12 col-lg-10 align-self-center\">{{contact.fullName}}</div>\r\n                  </div>\r\n                </ng-template>\r\n              </p-autoComplete>\r\n              <!-- <span *ngIf=\"checkCondition(activityDetailFormGroup, 'contact', 'required')\"\r\n                class=\"text-danger error-message\">{{requiredErrorTitle}}</span> -->\r\n\r\n            </div>\r\n            <div class=\"col-3\"></div>\r\n            <div class=\"clearBtn\">\r\n              <button class=\"cancel\" type=\"button\" pButton (click)=\"onClearContact($event)\">{{ \"activity.clear\" |\r\n                translate}}</button>\r\n            </div>\r\n            <div class=\"col-3\"></div>\r\n          </div>\r\n\r\n\r\n\r\n          <div class=\"row form-group\" *ngIf=\"!isNextActivity && canChangeContactType\">\r\n            <!-- Contact First Name -->\r\n            <div class=\"col-3\">\r\n              <label>\r\n                {{\"activity.contactType\" | translate}} <span class=\"text-danger\">*</span>\r\n              </label>\r\n            </div>\r\n            <div class=\"col-9\">\r\n              <div class=\"form-item-input\">\r\n                <p-dropdown\r\n                [options]=\"contactTypeOptions\"\r\n                formControlName=\"contactType\"\r\n                [disabled]=\"isContactFieldDisabled('contactType')\"\r\n                placeholder=\"{{'common.selectOne' | translate}}\"\r\n                [filter]=\"true\"\r\n                filterBy=\"label\"\r\n                (onChange)=\"onContactTypeChange()\"\r\n                >\r\n                </p-dropdown>\r\n\r\n                <span *ngIf=\"checkCondition(activityDetailFormGroup, 'contactType', 'required')\"\r\n                  class=\"text-danger error-message\">{{requiredErrorTitle | translate}}</span>\r\n              </div>\r\n            </div>\r\n            <label> <span *ngIf=\"checkCondition(activityDetailFormGroup, 'contactType')\"\r\n                class=\"text-danger\">{{'activity.fieldIsRequired' | translate}}</span>\r\n            </label>\r\n          </div>\r\n\r\n          <div class=\"row form-group\" *ngIf=\"!isNextActivity && (!canChangeContactType || !isContactTypeCorporate)\">\r\n            <!-- Contact First Name -->\r\n            <div class=\"col-3\">\r\n              <label>\r\n                {{\"activity.firstName\" | translate}} <span class=\"text-danger\">*</span>\r\n              </label>\r\n            </div>\r\n            <div class=\"col-9\">\r\n              <div class=\"form-item-input\">\r\n                <input type=\"text\" formControlName=\"contactFirstName\"\r\n                  [disableControl]=\"isContactFieldDisabled('contactFirstName')\"\r\n                  attr.aria-label=\"{{ 'activity.firstName' | translate}}\" alphaNumericOnly>\r\n                <span *ngIf=\"checkCondition(activityDetailFormGroup, 'contactFirstName', 'required')\"\r\n                  class=\"text-danger error-message\">{{requiredErrorTitle | translate}}</span>\r\n              </div>\r\n            </div>\r\n            <label> <span *ngIf=\"checkCondition(activityDetailFormGroup, 'contactFirstName')\"\r\n                class=\"text-danger\">{{'activity.fieldIsRequired' | translate}}</span>\r\n            </label>\r\n          </div>\r\n\r\n          <div class=\"row form-group\" *ngIf=\"!isNextActivity && (!canChangeContactType || !isContactTypeCorporate)\">\r\n            <!-- Contact Last Name -->\r\n            <div class=\"col-3\">\r\n              <label>\r\n                {{'activity.lastName' | translate}} <span class=\"text-danger\">*</span>\r\n              </label>\r\n            </div>\r\n            <div class=\"col-9\">\r\n              <div class=\"form-item-input\">\r\n                <input type=\"text\" formControlName=\"contactLastName\"\r\n                  [disableControl]=\"isContactFieldDisabled('contactLastName')\"\r\n                  attr.aria-label=\"{{'activity.lastName' | translate}}\" alphaNumericOnly>\r\n                <span *ngIf=\"checkCondition(activityDetailFormGroup, 'contactLastName', 'required')\"\r\n                  class=\"text-danger error-message\">{{requiredErrorTitle | translate}}</span>\r\n              </div>\r\n            </div>\r\n            <label> <span *ngIf=\"checkCondition(activityDetailFormGroup, 'contactLastName')\"\r\n                class=\"text-danger\">{{'activity.fieldIsRequired' | translate}}</span>\r\n            </label>\r\n          </div>\r\n\r\n          <div class=\"row form-group\" *ngIf=\"!isNextActivity && canChangeContactType && isContactTypeCorporate\">\r\n            <!-- Contact Last Name -->\r\n            <div class=\"col-3\">\r\n              <label>\r\n                {{'activity.companyName' | translate}} <span class=\"text-danger\">*</span>\r\n              </label>\r\n            </div>\r\n            <div class=\"col-9\">\r\n              <div class=\"form-item-input\">\r\n                <input type=\"text\" formControlName=\"companyName\"\r\n                  [disableControl]=\"isContactFieldDisabled('companyName')\"\r\n                  attr.aria-label=\"{{'activity.companyName' | translate}}\" alphaNumericOnly>\r\n                <span *ngIf=\"checkCondition(activityDetailFormGroup, 'companyName', 'required')\"\r\n                  class=\"text-danger error-message\">{{requiredErrorTitle | translate}}</span>\r\n              </div>\r\n            </div>\r\n            <label> <span *ngIf=\"checkCondition(activityDetailFormGroup, 'companyName')\"\r\n                class=\"text-danger\">{{'activity.fieldIsRequired' | translate}}</span>\r\n            </label>\r\n          </div>\r\n\r\n          <div class=\"row form-group\" *ngIf=\"!isNextActivity\">\r\n            <div class=\"col-3\">\r\n              <label>\r\n                {{'activity.phone' | translate}} <span class=\"text-danger\">*</span>\r\n              </label>\r\n            </div>\r\n            <div class=\"col-9\">\r\n              <div class=\"form-item-input\">\r\n                <app-phone-number elementId=\"contactActivityMobileNumber\" #phoneNumberComponent\r\n                  [disableControl]=\"isContactFieldDisabled('contactPhoneNumber')\" formControlName=\"contactPhoneNumber\"\r\n                  [initialCountry]=\"options.intialCountry?options.intialCountry:environmentLocation\"\r\n                  [preferredCountries]=\"[environmentLocation]\"\r\n                  (validationFunctionEvent)=\"setContactPhoneNumberValidationFn($event)\">\r\n                </app-phone-number>\r\n                <span *ngIf=\"checkCondition(activityDetailFormGroup, 'contactPhoneNumber', 'required')\"\r\n                  class=\"text-danger error-message\">{{requiredErrorTitle | translate}}</span>\r\n                <span *ngIf=\"!isContactPhoneNumberValid()\"\r\n                  class=\"text-danger error-message\">{{'activity.enterValidPhoneNumber' | translate}}</span>\r\n              </div>\r\n            </div>\r\n            <label> <span *ngIf=\"checkCondition(activityDetailFormGroup, 'contactPhoneNumber')\"\r\n                class=\"text-danger\">{{'activity.fieldIsRequired' | translate}}</span>\r\n            </label>\r\n          </div>\r\n\r\n          <div class=\"row form-group\" *ngIf=\"isMeetingActivity\">\r\n            <div class=\"col-3\">\r\n              <label>\r\n                {{'activity.purpose' | translate}} <span class=\"text-danger\">*</span>\r\n              </label>\r\n            </div>\r\n            <div class=\"col-9\">\r\n              <p-dropdown class=\"form-item-input\" formControlName=\"subjectCode\" [options]=\"purposeOptions\"\r\n                optionLabel=\"name\" [virtualScroll]=\"true\" [itemSize]=\"30\" [autoDisplayFirst]=\"false\" [showClear]=\"true\">\r\n              </p-dropdown>\r\n              <label> <span *ngIf=\"checkCondition(activityDetailFormGroup, 'subjectCode','required')\"\r\n                class=\"text-danger\">{{'activity.fieldIsRequired' | translate}}</span>\r\n            </label>\r\n            </div>\r\n          </div>\r\n\r\n          <div class=\"row form-group\" *ngIf=\"!isNextActivity\">\r\n            <div class=\"col-3\">\r\n              <label>{{'activity.opportunity' | translate}}</label>\r\n            </div>\r\n            <div class=\"col-9\">\r\n              <p-dropdown class=\"form-item-input\" formControlName=\"opportunity\" [options]=\"opportunityOptions\"\r\n                [autoDisplayFirst]=\"false\" [showClear]=\"true\" optionLabel=\"title\" [filter]=\"true\" filterBy=\"title\"\r\n                (onChange)=\"onOpportunityChanged($event)\">\r\n              </p-dropdown>\r\n            </div>\r\n          </div>\r\n\r\n          <div class=\"row form-group\">\r\n            <div class=\"col-3\">\r\n              <label>{{'activity.dateAndTime' | translate}} <span class=\"text-danger\">*</span></label>\r\n            </div>\r\n            <div class=\"col-9\">\r\n              <!-- <input type=\"datetime-local\" formControlName=\"scheduledStart\" /> -->\r\n              <p-calendar [hideOnDateTimeSelect]=\"false\" class=\"form-item-input\"\r\n                *ngIf=\"translateService.calendarSetup == null; else localized_calendar\"\r\n                [ngClass]=\"{'has-error': checkCondition(activityDetailFormGroup, 'scheduledStart', 'required') }\"\r\n                [placeholder]='options?.calendarDatePlaceholder' [dateFormat]='options?.calendarDateFormat'\r\n                formControlName=\"scheduledStart\" dataType=\"date\" [showTime]=\"true\" hourFormat=\"12\"\r\n                [monthNavigator]=\"true\" [yearNavigator]=\"true\" yearRange=\"2000:2100\" [minDate]=\"scheduledStartMinDate\"\r\n                (onSelect)=\"onScheduledStartChange($event)\">\r\n              </p-calendar>\r\n              <ng-template #localized_calendar>\r\n                <p-calendar class=\"form-item-input\"\r\n                  [ngClass]=\"{'has-error': checkCondition(activityDetailFormGroup, 'scheduledStart', 'required') }\"\r\n                  [placeholder]='options?.calendarDatePlaceholder' [dateFormat]='options?.calendarDateFormat'\r\n                  formControlName=\"scheduledStart\" dataType=\"date\" [showTime]=\"true\" hourFormat=\"12\"\r\n                  [monthNavigator]=\"true\" [yearNavigator]=\"true\" yearRange=\"2000:2100\" [minDate]=\"scheduledStartMinDate\"\r\n                  (onSelect)=\"onScheduledStartChange($event)\" [locale]=\"translateService.calendarSetup\"\r\n                  [hideOnDateTimeSelect]=\"false\">\r\n                </p-calendar>\r\n              </ng-template>\r\n              <!-- <span\r\n                *ngIf=\"checkCondition(activityDetailFormGroup, 'scheduledStart', 'required'); else scheduledStartInvalidDate\"\r\n                class=\"text-danger error-message\">{{requiredErrorTitle}}</span> -->\r\n              <ng-template #scheduledStartInvalidDate>\r\n                <span class=\"text-danger error-message\" *ngIf=\"checkCondition(activityDetailFormGroup, 'scheduledStart',\r\n                    'invalidDate')\">\r\n                  {{ 'activity.dateShouldBeInThePast' | translate}}</span>\r\n              </ng-template>\r\n              <label><span *ngIf=\"checkCondition(activityDetailFormGroup, 'scheduledStart', 'required')\"\r\n                  class=\"text-danger\">{{'activity.fieldIsRequired' | translate}}</span></label>\r\n              <label><span *ngIf=\"!checkCondition(activityDetailFormGroup, 'scheduledStart', 'required') && activityAtSameTimeExist\"\r\n                class=\"text-danger\">{{'activity.activityAtSameTimeExist' | translate}}</span></label>\r\n              <label><span *ngIf=\"!checkCondition(activityDetailFormGroup, 'scheduledStart', 'required') && managerHasActivityAtSameTimeExist\"\r\n              class=\"text-danger\">{{'activity.managerHasActivityAtSameTimeExist' | translate}}</span></label>\r\n            </div>\r\n          </div>\r\n\r\n          <div class=\"row form-group\" *ngIf=\"!isNextActivity && actualDurationMinutesVisibility\">\r\n            <div class=\"col-3\">\r\n              <label>{{'activity.durationOfMeeting' | translate}}</label>\r\n              <span class=\"text-danger\">*</span>\r\n            </div>\r\n            <div class=\"col-9\">\r\n              <p-spinner formControlName=\"actualDurationMinutes\" [min]=\"0\"></p-spinner>\r\n              <!-- <span *ngIf=\"checkCondition(activityDetailFormGroup, 'actualDurationMinutes', 'required')\"\r\n                class=\"text-danger error-message\">{{requiredErrorTitle}}</span> -->\r\n              <span *ngIf=\"checkCondition(activityDetailFormGroup, 'actualDurationMinutes')\"\r\n                class=\"text-danger\">{{'activity.fieldIsRequired' | translate}}</span>\r\n            </div>\r\n          </div>\r\n\r\n          <div class=\"row form-group\">\r\n            <div class=\"col-3\">\r\n              <label>{{'activity.description' | translate}}</label>\r\n            </div>\r\n            <div class=\"col-9\">\r\n              <div class=\"form-item-input\">\r\n                <textarea pInputTextarea formControlName=\"description\" type=\"string\" rows=\"3\" cols=\"30\"\r\n                  [autoResize]=\"true\"></textarea>\r\n              </div>\r\n            </div>\r\n          </div>\r\n\r\n          <div class=\"row form-group\" *ngIf=\"!isNextActivity && actualDurationMinutesVisibility\">\r\n            <div class=\"col-3\">\r\n              <label>{{'activity.feedBack' | translate}}</label>\r\n            </div>\r\n            <div class=\"col-9\">\r\n              <div class=\"form-item-input\">\r\n                <textarea pInputTextarea formControlName=\"feedback\" type=\"string\" rows=\"3\" cols=\"30\"\r\n                  [autoResize]=\"true\"></textarea>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"row\" *ngIf=\"canInviteManager && isMeetingActivity\">\r\n          <div class=\"col-9\"></div>\r\n          <div class=\"col-3 d-flex\" style=\"align-items: center;\">\r\n            <input id=\"inviteManager\" class=\"mx-3\"  type=\"checkbox\" formControlName=\"inviteManager\">\r\n            <label style=\"padding-bottom: 3px !important;margin-bottom: 0px !important;\" for=\"inviteManager\">{{'activity.inviteManager' | translate}}</label><br>\r\n          </div>\r\n        </div>\r\n\r\n      </form>\r\n    </div>\r\n  </section>\r\n</div>\r\n\r\n\r\n<ng-template #isCurrentActivity>\r\n  <h3 class=\"sidebar_title\">{{'activity.addNewActivity' | translate}}</h3>\r\n</ng-template>","import { Injectable, Inject } from '@angular/core';\r\nimport { Observable } from 'rxjs/internal/Observable';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ApiService, QueryOptions, FindExpression } from '@bsynchro/common';\r\nimport { CRM_API_CONSTANTS } from '../crm-constants';\r\n\r\n@Injectable()\r\nexport class QuotationsService {\r\n\r\n\r\n    private readonly API: ApiService;\r\n\r\n    constructor(public httpClient: HttpClient, @Inject('environment') private _environment: any) {\r\n        this.API = new ApiService(this.httpClient, _environment.CRM);\r\n    }\r\n\r\n\r\n    //#region public\r\n    public getQuotationsByOpportunityId(opportunityId: string): Observable<any> {\r\n        return new Observable<any>(observer => {\r\n            if (opportunityId) {\r\n\r\n                const qo = new QueryOptions();\r\n                // tslint:disable-next-line: max-line-length\r\n                qo.addExpression(new FindExpression(CRM_API_CONSTANTS.Field.OpportunityId, CRM_API_CONSTANTS.Operator.Equal, opportunityId));\r\n\r\n                this.API.post(CRM_API_CONSTANTS.Controller.Quotations, CRM_API_CONSTANTS.Action.Search, qo)\r\n                    .subscribe(quotations => {\r\n                        observer.next((quotations as any).data);\r\n                    });\r\n            } else {\r\n                observer.next(null);\r\n            }\r\n        });\r\n    }\r\n\r\n    public closeQuote(payload: any, quoteState: 2 | 3): Observable<any> {\r\n        return new Observable<any>(observer => {\r\n            if (payload && quoteState) {\r\n                const actionName = (quoteState === 2) ? CRM_API_CONSTANTS.Action.WinQuote : CRM_API_CONSTANTS.Action.LoseQuote;\r\n                this.API.post(CRM_API_CONSTANTS.Controller.Quotations, actionName, payload)\r\n                    .subscribe(response => {\r\n                        observer.next(response);\r\n                    });\r\n            } else {\r\n                observer.next(null);\r\n            }\r\n        });\r\n    }\r\n\r\n    public getQuoteById(quoteId: string): Observable<any> {\r\n        return new Observable<any>(observer => {\r\n            if (quoteId) {\r\n                const qo = new QueryOptions();\r\n                qo.addExpression(new FindExpression(CRM_API_CONSTANTS.Field.Id, CRM_API_CONSTANTS.Operator.Equal, quoteId));\r\n\r\n                this.API.post(CRM_API_CONSTANTS.Controller.Quotations, CRM_API_CONSTANTS.Action.Search, qo)\r\n                    .subscribe(quotations => {\r\n                        if ((quotations as any).totalRecords > 0) {\r\n                            observer.next((quotations as any).data[0]);\r\n                        } else {\r\n                            observer.next(null);\r\n                        }\r\n                    });\r\n            } else {\r\n                observer.next(null);\r\n            }\r\n        });\r\n    }\r\n\r\n    public setQuoteAsSentToClient(quoteId: string): Observable<any> {\r\n        return new Observable<any>(observer => {\r\n            if (quoteId) {\r\n                const params = {\r\n                    id: quoteId\r\n                };\r\n                this.API.put(CRM_API_CONSTANTS.Controller.Quotations, CRM_API_CONSTANTS.Action.SetAsSentToClient, null, params)\r\n                    .subscribe(done => {\r\n                        observer.next(true);\r\n                    });\r\n            } else {\r\n                observer.next(null);\r\n            }\r\n        });\r\n    }\r\n\r\n    public checkCanCloseOpportunity(opportunityId: string): Observable<boolean> {\r\n        return new Observable<boolean>(observer => {\r\n            this.getQuotationsByOpportunityId(opportunityId).subscribe(quotations => {\r\n                let canCloseOpportunity = quotations.filter(q => q.statusCode != 1).length > 0;\r\n                observer.next(canCloseOpportunity);\r\n            });\r\n        });\r\n    }\r\n    //#endregion\r\n}\r\n","import { Component, OnInit, Input, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';\r\nimport { FormBuilder, Validators, FormGroup } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { DataListsConstants, ActivityConstants, UIConstants, OpportunityState } from '../../crm-constants';\r\nimport { DataListService, Utils, UITranslateService } from '@bsynchro/common';\r\nimport { QuotationsService } from '../../services/quotations.service';\r\nimport { Subscription } from 'rxjs/internal/Subscription';\r\n\r\n@Component({\r\n    selector: 'app-activity-opportunity',\r\n    templateUrl: './activity-opportunity.component.html',\r\n    styleUrls: ['./activity-opportunity.component.scss'],\r\n    providers: [QuotationsService]\r\n})\r\nexport class ActivityOpportunityComponent implements OnInit, OnChanges, OnDestroy {\r\n    @Input() selectedOpportunity: any;\r\n    @Input() closeOpportunityBasedOnQuotations: boolean = true;\r\n\r\n    //#region Private fields\r\n    private _activityDetailFormGroup: FormGroup;\r\n    private _statusOptions: Array<any>\r\n    private _lostReasonOptions: Array<any>;;\r\n    private _stageOptions: Array<any>;\r\n    private _probabilityOptions: Array<any>;\r\n    private _closingPeriodTypeOptions: Array<any>;\r\n    private _canCloseOpportunity: boolean;\r\n    private _dataListNames: Array<string> = [\r\n        DataListsConstants.DataListName.OpportunityProbability,\r\n        DataListsConstants.DataListName.OpportunityStage,\r\n        DataListsConstants.DataListName.OpportunityStatus,\r\n        DataListsConstants.DataListName.LostOpportunityReasons\r\n    ];\r\n    //#endregion\r\n\r\n    //#region Public properties\r\n    public get isValid(): boolean {\r\n        return this.activityDetailFormGroup.valid;\r\n    }\r\n\r\n    // public get statusOptions(): Array<any> {\r\n    //   return this._statusOptions;\r\n    // }\r\n\r\n    public get lostReasonOptions(): Array<any> {\r\n        return this._lostReasonOptions;\r\n    }\r\n\r\n    public get stageOptions(): Array<any> {\r\n        return this._stageOptions;\r\n    }\r\n\r\n    public get probabilityOptions(): Array<any> {\r\n        return this._probabilityOptions;\r\n    }\r\n\r\n    public get closingPeriodTypeOptions(): Array<any> {\r\n        return this._closingPeriodTypeOptions;\r\n    }\r\n\r\n    public get activityDetailFormGroup(): FormGroup {\r\n        return this._activityDetailFormGroup;\r\n    }\r\n\r\n    public get requiredErrorTitle(): string {\r\n        return 'activity.fieldIsRequired';\r\n    }\r\n\r\n    public get canCloseOpportunity(): boolean {\r\n        return this._canCloseOpportunity;\r\n    }\r\n\r\n    public get isSelectedStateLost()\r\n    {\r\n        return this.activityDetailFormGroup && this.activityDetailFormGroup.get('opportunityState')?.value == 3\r\n    }\r\n    //#endregion\r\n\r\n    // * language\r\n    private _langChangeSubscription: Subscription;\r\n    private _closingPeriodTypeOptionsSubscription: Subscription;\r\n    //#endregion\r\n\r\n    constructor(\r\n        private _fb: FormBuilder,\r\n        private _dataListService: DataListService,\r\n        private _quotationsService: QuotationsService,\r\n        private _translateService: UITranslateService\r\n    ) {\r\n        this._activityDetailFormGroup = null;\r\n        this._canCloseOpportunity = false;\r\n        this.initializeOpportunityForm();\r\n        this.loadDataList();\r\n        this.loadClosingPeriodTypeOptions();\r\n    }\r\n\r\n    ngOnInit() {\r\n        this._langChangeSubscription = this._translateService.onLanguageChange.subscribe((event) =>\r\n            this.loadDataList());\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes['selectedOpportunity'] && !Utils.isNullOrUndefined(changes['selectedOpportunity'].currentValue)) {\r\n            this.updateOpportunityFormGroup(this.selectedOpportunity);\r\n            this.setCanCloseOpportunityFlag(this.selectedOpportunity.id);\r\n        }\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this._langChangeSubscription.unsubscribe();\r\n        this._closingPeriodTypeOptionsSubscription.unsubscribe();\r\n    }\r\n\r\n    //#region Initialization\r\n    private initializeOpportunityForm(): void {\r\n        this._activityDetailFormGroup = this._fb.group({\r\n            // stateCode: [null, [Validators.required]],\r\n            closeOpportunity: [false],\r\n            opportunityState: [OpportunityState.Open.toString()], // Open State , if not open the opportunity step will not appear\r\n            lostReason: [null],\r\n            salesStageCode: [null, [Validators.required]],\r\n            ratingCode: [null, [Validators.required]],\r\n            estimatedClosingPeriodNumber: [null, [Validators.required]],\r\n            estimatedClosingPeriodTypeCode: [null, [Validators.required]],\r\n            estimatedValue: [null, [Validators.required]],\r\n            description: [null]\r\n        });\r\n\r\n        this._activityDetailFormGroup.get(\"opportunityState\").valueChanges.subscribe(value =>\r\n            {\r\n                if(value == OpportunityState.Lost)\r\n                {\r\n                    this._activityDetailFormGroup.get(\"lostReason\").addValidators(Validators.required);\r\n                }\r\n                else\r\n                {\r\n                    this._activityDetailFormGroup.get(\"lostReason\").removeValidators(Validators.required);\r\n                }\r\n                this._activityDetailFormGroup.get(\"lostReason\").updateValueAndValidity({ emitEvent: false });\r\n            }  \r\n        );\r\n    }\r\n\r\n    private loadDataList(): void {\r\n        (<Observable<any>>this._dataListService.getDataListsByName(this._dataListNames)).subscribe((response) => {\r\n            const datalists = this._translateService.getLocalizedDataLists(response);\r\n            this._probabilityOptions = Utils.getDataListValues(\r\n                datalists.find((d) => d[0].dataListName == this._dataListService.treatDataListName(DataListsConstants.DataListName.OpportunityProbability))\r\n            );\r\n            this._stageOptions = Utils.getDataListValues(\r\n                datalists.find((d) => d[0].dataListName ==this._dataListService.treatDataListName( DataListsConstants.DataListName.OpportunityStage))\r\n            );\r\n\r\n            this._lostReasonOptions = Utils.getDataListValues(\r\n                datalists.find((d) => d[0].dataListName ==this._dataListService.treatDataListName( DataListsConstants.DataListName.LostOpportunityReasons))\r\n            );\r\n            // this._statusOptions = Utils.getDataListValues(response.find(d => d[0].dataListName == DataListsConstants.DataListName.OpportunityStatus));\r\n        });\r\n    }\r\n\r\n    loadClosingPeriodTypeOptions() {\r\n        this._closingPeriodTypeOptions = Utils.getDataListValues(DataListsConstants.DurationUnit);\r\n        this._closingPeriodTypeOptionsSubscription = this._translateService.bindTranslationsToArray(this._closingPeriodTypeOptions, 'name', 'code');\r\n    }\r\n    //#endregion\r\n\r\n    //#region Actions\r\n    private updateOpportunityFormGroup(opportunity: any) {\r\n        if (Utils.isEmpty(opportunity)) {\r\n            this._activityDetailFormGroup.reset();\r\n        } else {\r\n            this._activityDetailFormGroup.patchValue({\r\n                // stateCode: opportunity.stateCode,\r\n                opportunityState:opportunity.stateCode.toString(),\r\n                lostReason:opportunity.lostReason,\r\n                salesStageCode: { code: opportunity.salesStageCode, name: this._translateService.getLocalizedDataListField(opportunity.salesStage) },\r\n                ratingCode: { code: opportunity.ratingCode, name: this._translateService.getLocalizedDataListField(opportunity.rating) },\r\n                estimatedClosingPeriodNumber: opportunity.estimatedClosingPeriodNumber,\r\n                estimatedClosingPeriodTypeCode: {\r\n                    code: opportunity.estimatedClosingPeriodTypeCode.toString(),\r\n                    name: opportunity.estimatedClosingPeriodTypeDisplay\r\n                },\r\n                estimatedValue: opportunity.estimatedValue,\r\n                description: opportunity.description\r\n            });\r\n        }\r\n    }\r\n\r\n    private setCanCloseOpportunityFlag(opportunityId): void {\r\n        if(this.closeOpportunityBasedOnQuotations)\r\n        {\r\n            this._quotationsService.checkCanCloseOpportunity(opportunityId).subscribe((canCloseOpportunity) => {\r\n                this._canCloseOpportunity = canCloseOpportunity;\r\n            });\r\n        }\r\n    }\r\n    //#endregion\r\n\r\n    //#region Validator\r\n    public checkCondition(formGroup: FormGroup, controlName: string, errorKey?: string): boolean {\r\n        return Utils.checkCondition(formGroup, controlName, errorKey);\r\n    }\r\n\r\n    public getErrorTitle(formGroup: FormGroup, controlName: string, errorKey: string): string {\r\n        return Utils.getErrorTitle(formGroup, controlName, errorKey);\r\n    }\r\n    //#endregion\r\n}\r\n","<div class=\"activity-opportunity-component\">\r\n  <header>\r\n    <h3 class=\"sidebar_title\">{{'activity.whatIsTheStatusOfTheOpportunityNow' | translate}}</h3>\r\n  </header>\r\n\r\n  <section>\r\n    <div class=\"activity-body\">\r\n      <form [formGroup]=\"activityDetailFormGroup\">\r\n\r\n        <!-- <div class=\"row form-group\">\r\n          <div class=\"col-3\">\r\n            <label>\r\n              Status\r\n              <span *ngIf=\"checkCondition(activityDetailFormGroup, 'stateCode')\" class=\"text-danger\">*</span>\r\n            </label>\r\n          </div>\r\n          <div class=\"col-9\">\r\n            <div class=\"radio_button_container\">\r\n              <div *ngFor=\"let status of statusOptions\" class=\"ui-g\">\r\n                <div class=\"ui-g-12\">\r\n                  <p-radioButton formControlName=\"stateCode\" name=\"stateCode\" [value]=\"status.code\"\r\n                    [label]=\"status.name\"></p-radioButton>\r\n                </div>\r\n              </div>\r\n            </div>\r\n            <span *ngIf=\"checkCondition(activityDetailFormGroup, 'stateCode', 'required')\"\r\n              class=\"text-danger error-message\">{{requiredErrorTitle}}</span>\r\n\r\n          </div>\r\n        </div> -->\r\n\r\n        <div class=\"row form-group\" *ngIf=\"closeOpportunityBasedOnQuotations && canCloseOpportunity\">\r\n          <div class=\"col-3\">\r\n            <label>{{'activity.closeOpportunity' | translate}}</label>\r\n          </div>\r\n          <div class=\"col-9\">\r\n            <p-toggleButton formControlName=\"closeOpportunity\"></p-toggleButton>\r\n          </div>\r\n        </div>\r\n\r\n        <ng-container *ngIf=\"!closeOpportunityBasedOnQuotations\">\r\n          <div class=\"row form-group\">\r\n            <div class=\"col-12\">\r\n              <label>{{'activity.selectOpportunityState' | translate}}</label>\r\n            </div>\r\n            <div class=\"col-12 d-flex\">\r\n              <input type=\"radio\" id=\"openState\" name=\"opportunityState\" formControlName=\"opportunityState\" value=\"1\"> \r\n              <label style=\"margin-inline-start: 10px !important;margin-inline-end: 15px !important;\" for=\"openState\">{{'activity.opportunityOpen' | translate}}</label>\r\n              <input type=\"radio\" id=\"wonState\" name=\"opportunityState\" formControlName=\"opportunityState\" value=\"2\"> \r\n              <label style=\"margin-inline-start: 10px !important;margin-inline-end: 15px !important;\" for=\"wonState\">{{'activity.opportunityWon' | translate}}</label>\r\n              <input type=\"radio\" id=\"lostState\" name=\"opportunityState\"  formControlName=\"opportunityState\" value=\"3\"> \r\n              <label style=\"margin-inline-start: 10px !important;margin-inline-end: 15px !important;\" for=\"lostState\">{{'activity.opportunityLost' | translate}}</label>\r\n            </div>\r\n          </div>\r\n  \r\n          <div *ngIf=\"isSelectedStateLost\" class=\"row form-group\">\r\n            <div class=\"col-3\">\r\n              <label>\r\n                {{'opportunity.form.reason' | translate}} <span class=\"text-danger\">*</span>\r\n              </label>\r\n            </div>\r\n            <div class=\"col-9\">\r\n              <p-dropdown formControlName=\"lostReason\" [options]=\"lostReasonOptions\" optionLabel=\"name\"\r\n                [autoDisplayFirst]=\"false\" [showClear]=\"true\">\r\n              </p-dropdown>\r\n              <span *ngIf=\"checkCondition(activityDetailFormGroup, 'lostReason', 'required')\"\r\n                class=\"text-danger error-message\">{{requiredErrorTitle | translate}}</span>\r\n            </div>\r\n          </div>\r\n        </ng-container>\r\n\r\n        <div class=\"row form-group\">\r\n          <div class=\"col-3\">\r\n            <label>\r\n              {{'activity.stage' | translate}} <span class=\"text-danger\">*</span>\r\n            </label>\r\n          </div>\r\n          <div class=\"col-9\">\r\n            <p-dropdown formControlName=\"salesStageCode\" [options]=\"stageOptions\" optionLabel=\"name\"\r\n              [autoDisplayFirst]=\"false\" [showClear]=\"true\">\r\n            </p-dropdown>\r\n            <span *ngIf=\"checkCondition(activityDetailFormGroup, 'salesStageCode', 'required')\"\r\n              class=\"text-danger error-message\">{{requiredErrorTitle | translate}}</span>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"row form-group\">\r\n          <div class=\"col-3\">\r\n            <label>{{'activity.probability' | translate}} <span class=\"text-danger\">*</span>\r\n            </label>\r\n          </div>\r\n          <div class=\"col-9\">\r\n            <p-dropdown formControlName=\"ratingCode\" [options]=\"probabilityOptions\" optionLabel=\"name\"\r\n              [autoDisplayFirst]=\"false\" [showClear]=\"true\">\r\n            </p-dropdown>\r\n            <span *ngIf=\"checkCondition(activityDetailFormGroup, 'ratingCode', 'required')\"\r\n              class=\"text-danger error-message\">{{requiredErrorTitle | translate}}</span>\r\n\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"row form-group\">\r\n          <div class=\"col-3\">\r\n            <label>{{'activity.closeIn' | translate}} <span class=\"text-danger\">*</span></label>\r\n          </div>\r\n          <div class=\"col-9\">\r\n            <div class=\"form-items-2\">\r\n              <div>\r\n                <p-spinner formControlName=\"estimatedClosingPeriodNumber\" [min]=\"0\"></p-spinner>\r\n              </div>\r\n              <div>\r\n                <p-dropdown formControlName=\"estimatedClosingPeriodTypeCode\" [options]=\"closingPeriodTypeOptions\"\r\n                  optionLabel=\"name\" [autoDisplayFirst]=\"false\" [showClear]=\"true\">\r\n                </p-dropdown>\r\n              </div>\r\n            </div>\r\n            <span\r\n              *ngIf=\"checkCondition(activityDetailFormGroup, 'estimatedClosingPeriodNumber', 'required') || checkCondition(activityDetailFormGroup, 'estimatedClosingPeriodTypeCode', 'required')\"\r\n              class=\"text-danger error-message\">{{requiredErrorTitle | translate}}</span>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"row form-group\">\r\n          <div class=\"col-3\">\r\n            <label>{{'activity.estimatedRevenue' | translate}} <span class=\"text-danger\">*</span>\r\n            </label>\r\n          </div>\r\n          <div class=\"col-9\">\r\n            <p-spinner formControlName=\"estimatedValue\" type=\"decimal\" [decimalSeparator]=\"'.'\" [min]=\"0\"></p-spinner>\r\n            <span *ngIf=\"checkCondition(activityDetailFormGroup, 'estimatedValue', 'required')\"\r\n              class=\"text-danger error-message\">{{requiredErrorTitle | translate}}</span>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"row form-group\">\r\n          <div class=\"col-3\">\r\n            <label>{{\"activity.description\" | translate}}</label>\r\n          </div>\r\n          <div class=\"col-9\">\r\n            <div class=\"form-item-input\">\r\n              <textarea pInputTextarea formControlName=\"description\" rows=\"3\" cols=\"30\" [autoResize]=\"true\"></textarea>\r\n            </div>\r\n          </div>\r\n        </div>\r\n\r\n      </form>\r\n    </div>\r\n  </section>\r\n</div>","import { Component, OnInit, ViewEncapsulation, Output, EventEmitter, OnDestroy } from '@angular/core';\r\nimport { ActivatedRoute, Params, Router } from '@angular/router';\r\nimport { FormGroup, Validators, FormBuilder, FormControl } from '@angular/forms';\r\nimport { ActivityConstants, UIConstants, EventTypes, DataListsConstants } from '../../crm-constants';\r\nimport { Utils, UITranslateService, DataListService, EventPayload } from '@bsynchro/common';\r\nimport { ActivityService } from '../../services/activity.service';\r\nimport { ActivityManagementService } from '../../services/activity-management.service';\r\nimport { Subscription } from 'rxjs/internal/Subscription';\r\nimport { Observable } from 'rxjs/internal/Observable';\r\n\r\n@Component({\r\n    selector: 'app-activity-postpone',\r\n    templateUrl: './activity-postpone.component.html',\r\n    providers: [],\r\n    styleUrls: ['./activity-postpone.component.scss'],\r\n    encapsulation: ViewEncapsulation.None\r\n})\r\nexport class ActivityPostponeComponent implements OnInit, OnDestroy {\r\n    @Output() activityPostponedEvent: EventEmitter<any> = new EventEmitter();\r\n    @Output() cancelEvent: EventEmitter<any> = new EventEmitter();\r\n    //#region Private fields\r\n    private _activity: any;\r\n    private _activityDetailFormGroup: FormGroup;\r\n    private _activityType: Array<any>;\r\n    private _languageChangeSubscription: Subscription;\r\n    //#endregion\r\n\r\n    //#region Public properties\r\n    public scheduledStartMinDate: Date = new Date();\r\n\r\n    public get isValid(): boolean {\r\n        return this.activityDetailFormGroup.valid;\r\n    }\r\n\r\n    public get activityType() {\r\n        return this._activityType;\r\n    }\r\n\r\n    public get contactFullName(): string {\r\n        if (Utils.isEmpty(this._activity)) {\r\n            return '';\r\n        }\r\n        return this._activity.contactFullName;\r\n    }\r\n\r\n    public get opportunityTopic(): string {\r\n        if (Utils.isEmpty(this._activity)) {\r\n            return '';\r\n        }\r\n        return this._activity.opportunityDisplay;\r\n    }\r\n\r\n    public get activityTypeDisplay(): string {\r\n        if (Utils.isEmpty(this._activity)) {\r\n            return '';\r\n        }\r\n        return this._activity.activityTypeDisplay;\r\n    }\r\n\r\n    public get activityDetailFormGroup(): FormGroup {\r\n        return this._activityDetailFormGroup;\r\n    }\r\n\r\n    public get requiredErrorTitle() {\r\n        return UIConstants.ErrorMessage.Required;\r\n    }\r\n\r\n    public get translateService(): UITranslateService {\r\n        return this._translateService;\r\n    }\r\n\r\n\r\n    public get isInvitationActivity(): boolean {\r\n        return this._activity && this._activity.invited;\r\n    }\r\n\r\n    public set activityType(value) {\r\n        this._activityType = value;\r\n    }\r\n    //#endregion\r\n\r\n    constructor(\r\n        private _fb: FormBuilder,\r\n        private _activatedRoute: ActivatedRoute,\r\n        private _activityService: ActivityService,\r\n        private _activityManagementService: ActivityManagementService,\r\n        private _translateService: UITranslateService,\r\n        private _dataListService: DataListService\r\n    ) {\r\n        this._activityDetailFormGroup = null;\r\n        this._languageChangeSubscription = new Subscription();\r\n        this.initializePostponeActivityForm();\r\n    }\r\n\r\n    ngOnInit() {\r\n        this._activatedRoute.params.subscribe((params: Params) => {\r\n            const activityId = params[ActivityConstants.Route.ActivityId];\r\n            this._activityService.getActivityById(activityId).subscribe((activity) => {\r\n                if (Utils.isNotEmpty(activity)) {\r\n                    this._activity = activity;\r\n                    this.updatePostponeActivityFormGroup(this._activity);\r\n                }\r\n            });\r\n        });\r\n        this._languageChangeSubscription.unsubscribe();\r\n        this._languageChangeSubscription = this._translateService.onLanguageChange.subscribe((response) => {\r\n            this.loadDataLists();\r\n        })\r\n    }\r\n\r\n    ngOnDestroy() {\r\n        this._languageChangeSubscription.unsubscribe();\r\n    }\r\n\r\n    //#region FormControl Validator\r\n    private isDateInFuture = (date: FormControl): { [key: string]: string } => {\r\n        if (Utils.isNotNull(date.value) && Utils.isDateOneBefore(new Date(date.value), new Date(Date.now()))) {\r\n            return { invalidDate: 'Date should be in the future.' };\r\n        }\r\n        return null;\r\n    };\r\n    //#endregion\r\n\r\n    //#region Initialization\r\n    private initializePostponeActivityForm(): void {\r\n        this._activityDetailFormGroup = this._fb.group({\r\n            scheduledStart: [null, [Validators.required, this.isDateInFuture]],\r\n            description: ['']\r\n        });\r\n    }\r\n    //#endregion\r\n\r\n    //#region Private\r\n    private loadDataLists() {\r\n        (<Observable<any>>this._dataListService.getDataListsByName([\r\n            DataListsConstants.DataListName.ActivityType\r\n        ])).subscribe((response) => {\r\n            if (response.length > 0) {\r\n                const datalists = this._translateService.getLocalizedDataLists(response);\r\n                this.activityType = datalists[0];\r\n            }\r\n        })\r\n    }\r\n\r\n    private getPostponeActivityPayload(): any {\r\n        this._activity.scheduledStart = Utils.getControlValue(this._activityDetailFormGroup, 'scheduledStart');\r\n        this._activity.description = Utils.getControlValue(this._activityDetailFormGroup, 'description');\r\n        return this._activity;\r\n    }\r\n\r\n    private postponeActivityForm(): void {\r\n        if (!this.isValid) {\r\n            Utils.markAsTouched(this._activityDetailFormGroup);\r\n        } else {\r\n            const postponePayload = this.getPostponeActivityPayload();\r\n            this._activityManagementService.postponeActivity(postponePayload).subscribe((response) => {\r\n                if (response) {\r\n                    this.activityPostponedEvent.emit(new EventPayload(EventTypes.Postpone, true));\r\n                } else {\r\n                    Utils.markAsTouched(this._activityDetailFormGroup);\r\n                }\r\n            });\r\n        }\r\n    }\r\n\r\n    private updatePostponeActivityFormGroup(activity: any) {\r\n        this._activityDetailFormGroup.patchValue({\r\n            scheduledStart: new Date(activity.scheduledStart),\r\n            description: activity.description\r\n        });\r\n\r\n        if(this.isInvitationActivity)\r\n            this._activityDetailFormGroup.controls['description'].disable();\r\n    }\r\n    //#endregion\r\n\r\n    //#region Public\r\n    public postponeActivity(): void {\r\n        this.postponeActivityForm();\r\n    }\r\n\r\n    public onCancel(): void {\r\n        this.cancelEvent.emit(new EventPayload(EventTypes.ActivityPostponeCancel, true));\r\n    }\r\n\r\n    someValuesHasChanged()\r\n    {\r\n        return this._activityDetailFormGroup\r\n                && this._activity\r\n                && \r\n                  (this._activityDetailFormGroup.get('scheduledStart').value.toString() != new Date(this._activity.scheduledStart).toString()\r\n                  || this._activityDetailFormGroup.get('description').value != this._activity.description)\r\n    }\r\n    //#endregion\r\n\r\n    //#region Validator\r\n    public checkCondition(formGroup: FormGroup, controlName: string, errorKey?: string): Boolean {\r\n        return Utils.checkCondition(formGroup, controlName, errorKey);\r\n    }\r\n\r\n    public getErrorTitle(formGroup: FormGroup, controlName: string, errorKey: string): string {\r\n        return Utils.getErrorTitle(formGroup, controlName, errorKey);\r\n    }\r\n    //#endregion\r\n}\r\n","<div class=\"activity-postpone-component activity-detail-component\">\r\n  <header>\r\n    <h3 class=\"sidebar_title\">{{!isInvitationActivity ? ('activity.editActivityName' | translate: { 'activity': activityTypeDisplay }) : ('activity.requestToRescheduleTitle' | translate: { 'activity': activityTypeDisplay }) }}</h3>\r\n  </header>\r\n\r\n  <section>\r\n    <div class=\"activity-body\" *ngIf=\"activityDetailFormGroup\">\r\n      <label>{{contactFullName}} {{opportunityTopic}}</label>\r\n\r\n      <form [formGroup]=\"activityDetailFormGroup\">\r\n\r\n        <div class=\"row form-group\">\r\n          <div class=\"col-3\">\r\n            <label>{{'activity.dateAndTime' | translate}} <span class=\"text-danger\">*</span>\r\n            </label>\r\n          </div>\r\n          <div class=\"col-9\">\r\n            <p-calendar class=\"form-item-input\" *ngIf=\"translateService.calendarSetup == null; else localized_calendar\"\r\n              [ngClass]=\"{ 'has-error': checkCondition(activityDetailFormGroup, 'scheduledStart', 'invalidDate')}\"\r\n              formControlName=\"scheduledStart\" dataType=\"date\" [showTime]=\"true\" hourFormat=\"12\" yearRange=\"2000:2100\"\r\n              [minDate]=\"scheduledStartMinDate\" [monthNavigator]=\"true\" [yearNavigator]=\"true\" [hideOnDateTimeSelect]=\"false\">\r\n            </p-calendar>\r\n            <ng-template #localized_calendar>\r\n              <p-calendar class=\"form-item-input\" [locale]=\"translateService.calendarSetup\"\r\n                [ngClass]=\"{ 'has-error': checkCondition(activityDetailFormGroup, 'scheduledStart', 'invalidDate')}\"\r\n                formControlName=\"scheduledStart\" dataType=\"date\" [showTime]=\"true\" hourFormat=\"12\" yearRange=\"2000:2100\"\r\n                [minDate]=\"scheduledStartMinDate\" [monthNavigator]=\"true\" [yearNavigator]=\"true\" [hideOnDateTimeSelect]=\"false\">\r\n              </p-calendar>\r\n            </ng-template>\r\n            <!-- <span\r\n              *ngIf=\"checkCondition(activityDetailFormGroup, 'scheduledStart', 'required'); else scheduledStartInvalidDate\"\r\n              class=\"text-danger error-message\">{{requiredErrorTitle}}</span> -->\r\n            <ng-template #scheduledStartInvalidDate>\r\n              <span class=\"text-danger error-message\"\r\n                *ngIf=\"checkCondition(activityDetailFormGroup, 'scheduledStart', 'invalidDate')\">\r\n                {{'activity.dateShouldBeInThePast' | translate}}</span>\r\n            </ng-template>\r\n            <label><span *ngIf=\"checkCondition(activityDetailFormGroup, 'scheduledStart')\"\r\n                class=\"text-danger\">{{'activity.fieldIsRequired' | translate}}</span>\r\n            </label>\r\n          </div>\r\n        </div>\r\n\r\n\r\n        <div class=\"row form-group\">\r\n          <div class=\"col-3\">\r\n            <label>{{'activity.description' | translate}}</label>\r\n          </div>\r\n          <div class=\"col-9\">\r\n            <div class=\"form-item-input\">\r\n              <textarea pInputTextarea formControlName=\"description\" type=\"string\" rows=\"3\" cols=\"30\"\r\n                [autoResize]=\"true\"></textarea>\r\n            </div>\r\n          </div>\r\n        </div>\r\n\r\n      </form>\r\n    </div>\r\n  </section>\r\n\r\n\r\n  <div class=\"row mx-0 my-2\" *ngIf=\"activityDetailFormGroup\">\r\n    <div class=\"col-3\"></div>\r\n    <div class=\"col-9 \">\r\n      <div class=\"sidebar_button_container\">\r\n        <div class=\"col pl-0 pr-1\">\r\n          <button [disabled]=\"!someValuesHasChanged()\" class=\"save\" type=\"button\" pButton (click)=\"postponeActivity()\">{{'activity.save' |\r\n            translate}}</button>\r\n        </div>\r\n        <div class=\"col p-tabview pr-0 pl-1\">\r\n          <button class=\"cancel\" type=\"button\" pButton (click)=\"onCancel()\">{{'activity.cancel' | translate}}</button>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</div>","import {\r\n    Component,\r\n    OnInit,\r\n    ViewEncapsulation,\r\n    ViewChild,\r\n    Output,\r\n    EventEmitter,\r\n    OnChanges,\r\n    SimpleChanges,\r\n    Input\r\n} from '@angular/core';\r\nimport { Params, ActivatedRoute } from '@angular/router';\r\nimport { ActivityManagementService } from '../../services/activity-management.service';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Observable, of } from 'rxjs';\r\nimport { Utils, IdentityService, UITranslateService, EventPayload, DataListField } from '@bsynchro/common';\r\nimport { ActivityMode, ActivityConstants, EventTypes } from '../../crm-constants';\r\nimport { ActivityService } from '../../services/activity.service';\r\nimport { cloneDeep } from 'lodash';\r\nimport { Options } from '../../models/common/Options';\r\nimport { ActivityDetailComponent } from '../activity-detail/activity-detail.component';\r\nimport { ContactsService } from '../../services/contacts.service';\r\nimport { SetOpportunityStatePayload } from '../../models/opportunity/opportunity.models';\r\nimport { catchError, map, switchMap } from 'rxjs/operators';\r\n\r\n@Component({\r\n    selector: 'app-activity',\r\n    templateUrl: './activity.component.html',\r\n    styleUrls: ['./activity.component.scss'],\r\n    encapsulation: ViewEncapsulation.None\r\n})\r\nexport class ActivityComponent implements OnInit, OnChanges {\r\n    @ViewChild('currentActivityDetail', { static: false })\r\n    currentActivityDetail: ActivityDetailComponent;\r\n    @ViewChild('nextActivityDetail', { static: false })\r\n    nextActivityDetail: any;\r\n    @ViewChild('opportunityDetail', { static: false })\r\n    opportunityDetail: any;\r\n    @ViewChild('completeActivityDetail', { static: false })\r\n    completeActivityDetail: any;\r\n    @Input() options: Options;\r\n    @Input() scheduledStartMinDate: Date = null;\r\n    @Output('activityEvent') activityEvent: EventEmitter<EventPayload> = new EventEmitter();\r\n\r\n    //#region private fields\r\n    private _activityId: string;\r\n    private _loadedActivity: any;\r\n    private _selectedContact: any;\r\n    private _contactOpportunities: any;\r\n    private _selectedOpportunity: any;\r\n    private _isPostponeAction: any;\r\n    private _isSalesManager: any;\r\n    private _showOwnerSelection = true;\r\n    private _tempContact: any;\r\n    //#endregion\r\n\r\n    public activityAtSameTimeExist:boolean = false;\r\n    public managerHasActivityAtSameTimeExist:boolean = false;\r\n\r\n    //#region private properties\r\n    private get _currentActivityFormGroup(): FormGroup {\r\n        if (Utils.isNull(this.currentActivityDetail)) {\r\n            return null;\r\n        }\r\n        return this.currentActivityDetail.activityDetailFormGroup;\r\n    }\r\n\r\n    private get _nextActivityFormGroup(): FormGroup {\r\n        if (Utils.isNull(this.nextActivityDetail)) {\r\n            return null;\r\n        }\r\n        return this.nextActivityDetail.activityDetailFormGroup;\r\n    }\r\n\r\n    private get _opportunityFormGroup(): FormGroup {\r\n        if (Utils.isNull(this.opportunityDetail)) {\r\n            return null;\r\n        }\r\n        return this.opportunityDetail.activityDetailFormGroup;\r\n    }\r\n\r\n    private get _completeActivityFormGroup(): FormGroup {\r\n        if (Utils.isNull(this.completeActivityDetail)) {\r\n            return null;\r\n        }\r\n        return this.completeActivityDetail.activityDetailFormGroup;\r\n    }\r\n    //#endregion\r\n\r\n    //#region Public properties\r\n    public index: number = ActivityConstants.ActivitySteps.CurrentActivityStep;\r\n\r\n    public get isOpportunityVisible(): boolean {\r\n        return Utils.isNotEmpty(this._selectedOpportunity) && Utils.isNotEmpty(this._selectedOpportunity.id) && (this.options.closeOpportunityBasedOnQuotations || this._selectedOpportunity.stateCode == 1);\r\n    }\r\n\r\n    public get selectedContact(): any {\r\n        return this._selectedContact;\r\n    }\r\n\r\n    public get contactOpportunities(): any {\r\n        return this._contactOpportunities;\r\n    }\r\n\r\n    public get selectedOpportunity(): any {\r\n        return this._selectedOpportunity;\r\n    }\r\n    public get isCompleteStepVisible(): Boolean {\r\n        return this.isAddingCompletedActivity || this.isCompleteAction;\r\n    }\r\n\r\n    //only used for complete activity action\r\n    public get isNextBtnVisible(): Boolean {\r\n        //for activty invitations the owner of the invitation can only complete the activity\r\n        //but not adding a next activity on the invitation\r\n        if(this.isInvitationActivity)\r\n        {\r\n            return false;\r\n        }\r\n\r\n        if (this.isOpportunityVisible) {\r\n            return this.index != ActivityConstants.ActivitySteps.NextActivityWithOpportunityStep;\r\n        } else {\r\n            return this.index != ActivityConstants.ActivitySteps.NextActivityWithoutOpportunityStep;\r\n        }\r\n    }\r\n\r\n    //only used for complete activity action\r\n    public get isSaveBtnVisible(): Boolean {\r\n        //when completing invitation,save button (which confirms complete activty action)\r\n        //should be visibile always,since no next activity to add for invitations\r\n        if(this.isInvitationActivity)\r\n        {\r\n            return true;\r\n        }\r\n\r\n        if (this.isOpportunityVisible) {\r\n            return this.index == ActivityConstants.ActivitySteps.NextActivityWithOpportunityStep;\r\n        } else {\r\n            return this.index == ActivityConstants.ActivitySteps.NextActivityWithoutOpportunityStep;\r\n        }\r\n    }\r\n    public get isBackBtnVisible(): Boolean {\r\n        return this.index != ActivityConstants.ActivitySteps.CurrentActivityStep;\r\n    }\r\n    public get translateService(): UITranslateService {\r\n        return this._translateService;\r\n    }\r\n    //#endregion\r\n\r\n    //#region Activity\r\n    //is completing an existing activity\r\n    public get isCompleteAction(): boolean {\r\n        return Utils.isNotEmpty(this._activityId);\r\n    }\r\n\r\n    public get nextActivity(): ActivityMode {\r\n        return ActivityMode.Next;\r\n    }\r\n\r\n    public get currentActivity(): ActivityMode {\r\n        return ActivityMode.Current;\r\n    }\r\n    //#endregion\r\n\r\n    //#region Current Activity\r\n    public get isCurrentActivityFormValid(): boolean {\r\n        if (Utils.isNull(this.currentActivityDetail)) {\r\n            return false;\r\n        }\r\n        return this.currentActivityDetail.isValid;\r\n    }\r\n\r\n    public get isAddingCompletedActivity(): boolean {\r\n        if (Utils.isNull(this.currentActivityDetail)) {\r\n            return false;\r\n        }\r\n        return this.currentActivityDetail.isAddingCompletedActivity;\r\n    }\r\n    //#endregion\r\n\r\n    //#region Next Activity\r\n    public get isNoneSelected(): boolean {\r\n        if (Utils.isNull(this.nextActivityDetail)) {\r\n            return false;\r\n        }\r\n        return this.nextActivityDetail.isNoneSelected;\r\n    }\r\n\r\n    public get isNextActivityFormValid(): boolean {\r\n        if (Utils.isNull(this.nextActivityDetail)) {\r\n            return false;\r\n        }\r\n        return this.nextActivityDetail.isValid;\r\n    }\r\n    //#endregion\r\n\r\n    //#region Complete Activity\r\n    private get isCompleteActionOnMeetingActivity(): boolean {\r\n        if (Utils.isNull(this._loadedActivity)) {\r\n            return false;\r\n        }\r\n        return this._loadedActivity.activityTypeCode == ActivityConstants.ActivityTypeCodes.Meeting;\r\n    }\r\n\r\n    public get isCompleteActivityFormValid(): boolean {\r\n        if (Utils.isNull(this.completeActivityDetail)) {\r\n            return false;\r\n        }\r\n        return this.completeActivityDetail.isValid;\r\n    }\r\n\r\n    public get loadedActivity(): any {\r\n        return this._loadedActivity;\r\n    }\r\n\r\n    public get isPostponeAction() {\r\n        return this._isPostponeAction;\r\n    }\r\n\r\n    public get isInvitationActivity(): boolean {\r\n        return this._loadedActivity && this._loadedActivity.invited;\r\n    }\r\n    //#endregion\r\n\r\n    //#region Opportunity\r\n    public get isOpportunityFormValid(): boolean {\r\n        if (Utils.isNull(this.opportunityDetail)) {\r\n            return false;\r\n        }\r\n        return this.opportunityDetail.isValid;\r\n    }\r\n    //#endregion\r\n\r\n    constructor(\r\n        private _activityService: ActivityService,\r\n        private _contactsService: ContactsService,\r\n        private _activityManagementService: ActivityManagementService,\r\n        private _activatedRoute: ActivatedRoute,\r\n        private _identityService: IdentityService,\r\n        private _translateService: UITranslateService\r\n    ) {\r\n        this._activityId = null;\r\n        this._loadedActivity = null;\r\n        this._selectedContact = null;\r\n        this._contactOpportunities = null;\r\n        this._selectedOpportunity = null;\r\n        this._isPostponeAction = false;\r\n        this._isSalesManager = false;\r\n        this._tempContact = {};\r\n    }\r\n\r\n    ngOnInit() {\r\n        this._activatedRoute.params.subscribe((params: Params) => {\r\n            const from = this._activatedRoute.snapshot.data['from'];\r\n            const activityId = params[ActivityConstants.Route.ActivityId];\r\n            switch (from) {\r\n                case ActivityConstants.From.EventList_Postpone:\r\n                    this._isPostponeAction = true;\r\n                    break;\r\n                case ActivityConstants.From.EventList:\r\n                    this.completeActionInitialization(activityId);\r\n                    break;\r\n                case ActivityConstants.From.ContactList:\r\n                    this.initializeByContactId(params[ActivityConstants.Route.ContactId]);\r\n                    break;\r\n\r\n                case ActivityConstants.From.OpportunityList:\r\n                    this.initializeByOpportunityId(params[ActivityConstants.Route.OpportunityId]);\r\n                    break;\r\n            }\r\n        });\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges): void {\r\n        if (changes['options'] && !Utils.isEmpty(changes['options'].currentValue)) {\r\n            if (this.options.isSalesManager) {\r\n                this._isSalesManager = true;\r\n            } else {\r\n                this._isSalesManager = false;\r\n            }\r\n        }\r\n    }\r\n    //#region Initialization\r\n    private completeActionInitialization(activityId: string) {\r\n        this._activityId = activityId;\r\n        if (Utils.isEmpty(this._activityId)) {\r\n            return;\r\n        }\r\n        // Complete Activity\r\n        this._activityService.getActivityById(activityId).subscribe((activity) => {\r\n            if (Utils.isEmpty(activity)) {\r\n                return;\r\n            }\r\n            this._loadedActivity = activity;\r\n        });\r\n    }\r\n\r\n    private initializeByContactId(contactId: string) {\r\n        this._activityManagementService.getContactById(contactId).subscribe((contact) => {\r\n            this._selectedContact = contact;\r\n            this._currentActivityFormGroup.get('contact').disable();\r\n            this._currentActivityFormGroup.get('ownerSelection').disable();\r\n            this.currentActivityDetail.showOwnerSelection = false;\r\n            this._showOwnerSelection = false;\r\n            this._activityManagementService\r\n                .getOpenOpportunitiesByContactId(contact.id, this.options.opportunitiesQuery)\r\n                .subscribe((opportunities) => {\r\n                    this._contactOpportunities = opportunities;\r\n                });\r\n        });\r\n    }\r\n\r\n    private initializeByOpportunityId(opportunityId: string) {\r\n        this._activityManagementService.getOpportunityById(opportunityId).subscribe((opportunity) => {\r\n            this._selectedOpportunity = opportunity;\r\n            this._currentActivityFormGroup.get('opportunity').disable();\r\n            this._currentActivityFormGroup.get('ownerSelection').disable();\r\n            this.currentActivityDetail.showOwnerSelection = false;\r\n            this._showOwnerSelection = false;\r\n            this._activityManagementService.getContactById(opportunity.contactId).subscribe((contact) => {\r\n                this._selectedContact = contact;\r\n                this._currentActivityFormGroup.get('contact').disable();\r\n            });\r\n            this._activityManagementService\r\n                .getOpenOpportunitiesByContactId(opportunity.contactId, this.options.opportunitiesQuery)\r\n                .subscribe((opportunities) => {\r\n                    this._contactOpportunities = opportunities;\r\n                });\r\n        });\r\n    }\r\n    //#endregion\r\n\r\n    //#region Handler\r\n    public setSelectedContact(value: any) {\r\n        this._selectedContact = value;\r\n    }\r\n\r\n    public setContactOpportunities(value: any) {\r\n        this._contactOpportunities = value;\r\n    }\r\n\r\n    public setSelectedOpportunity(value: any) {\r\n        this._selectedOpportunity = value;\r\n    }\r\n    //#endregion\r\n\r\n    //#region Build payload\r\n    private buildCompleteActivityPayload(activityId: string): Object {\r\n        const payload = {};\r\n        payload['scheduledEndDate'] = Utils.getControlValue(this._completeActivityFormGroup, 'scheduledEnd');\r\n        if (this.isCompleteActionOnMeetingActivity) {\r\n            payload['actualDurationMinutes'] = Utils.getControlValue(\r\n                this._completeActivityFormGroup,\r\n                'actualDurationMinutes'\r\n            );\r\n        }\r\n        payload['description'] = Utils.getControlValue(this._completeActivityFormGroup, 'description');\r\n        payload['feedback'] = Utils.getControlValue(this._completeActivityFormGroup, 'feedback');\r\n        payload['activityId'] = activityId;\r\n        return payload;\r\n    }\r\n\r\n    private getOwnerId(rawValue): string {\r\n        if (this._showOwnerSelection && this._isSalesManager) {\r\n            if (rawValue.ownerSelection != undefined) {\r\n                return rawValue.ownerSelection[0].id;\r\n            } else {\r\n                return this._tempContact.ownerId;\r\n            }\r\n        }\r\n\r\n        return this._identityService.claims.sub;\r\n    }\r\n    private buildActivityDetailPayload(activityFormGroup: FormGroup, contact: any, isComplete?: boolean): any {\r\n        const payload = {};\r\n\r\n        const rawValue = activityFormGroup.getRawValue();\r\n        payload['contactId'] = contact.id;\r\n        payload['contactDisplay'] = contact.fullName;\r\n        payload['activityTypeCode'] = rawValue.activityTypeCode.code;\r\n        payload['ActivityTypeDisplay'] = rawValue.activityTypeCode.name;\r\n        payload['ownerId'] = contact.ownerId; // this.getOwnerId(rawValue);\r\n        payload['ownerDisplay'] = contact.ownerDisplay;\r\n        payload['createdBy'] = this._identityService.claims.sub;\r\n        payload['createdByDisplay'] = this._identityService.user?.fullName;\r\n\r\n        //#region Not required fields\r\n        if (rawValue.subjectCode) {\r\n            payload['subjectCode'] = rawValue.subjectCode.code;\r\n            payload['subjectDisplay'] = rawValue.subjectCode.name;\r\n            payload['subject'] = new DataListField(rawValue.subjectCode.code);\r\n        }\r\n\r\n        if (rawValue.opportunity) {\r\n            payload['opportunityId'] = rawValue.opportunity.id;\r\n            payload['opportunityDisplay'] = rawValue.opportunity.title;\r\n        }\r\n        //#endregion\r\n        payload['feedback'] = rawValue.feedback;\r\n        payload['scheduledStart'] = rawValue.scheduledStart;\r\n        payload['description'] = rawValue.description;\r\n        payload['inviteManager'] = rawValue.inviteManager;\r\n\r\n        if (isComplete) {\r\n            payload['actualDurationMinutes'] = rawValue.actualDurationMinutes;\r\n        }\r\n\r\n        return payload;\r\n    }\r\n\r\n    private buildOpportunityPayload():any {\r\n        const payload = {};\r\n        const opportunityEntity = cloneDeep(this._selectedOpportunity);\r\n        const rawValue = this._opportunityFormGroup.getRawValue();\r\n        // opportunity['stateCode'] = rawValue.stateCode;\r\n        opportunityEntity['estimatedValue'] = rawValue.estimatedValue;\r\n        opportunityEntity['estimatedClosingPeriodNumber'] = rawValue.estimatedClosingPeriodNumber;\r\n        opportunityEntity['description'] = rawValue.description;\r\n\r\n        if (rawValue.salesStageCode) {\r\n            opportunityEntity['salesStageCode'] = rawValue.salesStageCode.code;\r\n            opportunityEntity['salesStageDisplay'] = rawValue.salesStageCode.name;\r\n        }\r\n\r\n        if (rawValue.ratingCode) {\r\n            opportunityEntity['ratingCode'] = rawValue.ratingCode.code;\r\n            opportunityEntity['ratingDisplay'] = rawValue.ratingCode.name;\r\n        }\r\n\r\n        if (rawValue.estimatedClosingPeriodTypeCode) {\r\n            opportunityEntity['estimatedClosingPeriodTypeCode'] = rawValue.estimatedClosingPeriodTypeCode.code;\r\n            opportunityEntity['estimatedClosingPeriodTypeDisplay'] = rawValue.estimatedClosingPeriodTypeCode.name;\r\n        }\r\n        payload['entity'] = opportunityEntity;\r\n        payload['closeOpportunity'] = rawValue.closeOpportunity;\r\n        return payload;\r\n    }\r\n    //#endregion\r\n\r\n    //#region Private Actions\r\n    public validateCurrentActivityFormGroup(): Boolean {\r\n        if (!this.isCurrentActivityFormValid) {\r\n            Utils.markAsTouched(this._currentActivityFormGroup);\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n    private validateOpportunityFormGroup(): Boolean {\r\n        if (this.isOpportunityVisible && !this.isOpportunityFormValid) {\r\n            Utils.markAsTouched(this._opportunityFormGroup);\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n    private validateNextActivityFormGroup(): Boolean {\r\n        if (!this.isNextActivityFormValid) {\r\n            Utils.markAsTouched(this._nextActivityFormGroup);\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n\r\n    private validateCompleteActivityFormGroup(): Boolean {\r\n        if (!this.isCompleteActivityFormValid) {\r\n            Utils.markAsTouched(this._completeActivityFormGroup);\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n\r\n    public validateAddCompletedActivity(): boolean {\r\n        if (!this.validateCurrentActivityFormGroup()) {\r\n            return false;\r\n        }\r\n        if (!this.isNoneSelected && !this.validateNextActivityFormGroup()) {\r\n            return false;\r\n        }\r\n        if (!this.validateOpportunityFormGroup()) {\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n\r\n    private validateCompleteActivity(): boolean {\r\n        let isValid = true;\r\n\r\n        if (!this.isCompleteActivityFormValid) {\r\n            Utils.markAsTouched(this._completeActivityFormGroup);\r\n            isValid = false;\r\n        }\r\n\r\n        if (!this.isInvitationActivity && !this.validateOpportunityFormGroup()) {\r\n            isValid = false;\r\n        }\r\n\r\n        if (!this.isInvitationActivity && !this.isNoneSelected && !this.validateNextActivityFormGroup()) {\r\n            isValid = false;\r\n        }\r\n\r\n        return isValid;\r\n    }\r\n\r\n    private addCompletedActivity(): Observable<any> {\r\n        return new Observable<any>((observer) => {\r\n            if (this.validateAddCompletedActivity()) {\r\n                let formValue = this._currentActivityFormGroup.getRawValue();\r\n                this.addContact().subscribe((contact) => {\r\n                    this.addCurrentActivity(contact, true).subscribe((response) => {\r\n                        if (!Utils.isNullOrUndefined(response.id)) {\r\n                            const requestPayload = {\r\n                                ActivityId: response.id,\r\n                                ScheduledEndDate: this._currentActivityFormGroup.get('scheduledStart').value\r\n                            };\r\n\r\n                            this._activityManagementService.completeActivity(requestPayload).subscribe((response) => {\r\n                                if (response) {\r\n                                    this.addNextActivity(contact).subscribe((response) => {\r\n                                        if (response) {\r\n                                            if (\r\n                                                Utils.isNotNull(this._selectedOpportunity) &&\r\n                                                this._opportunityFormGroup.dirty\r\n                                            ) {\r\n                                                const opportunityPayload = this.buildOpportunityPayload();\r\n                                                this._activityManagementService\r\n                                                    .updateOpportunity(opportunityPayload)\r\n                                                    .subscribe((response) => {\r\n                                                        if (response) {\r\n                                                            observer.next(true);\r\n                                                        } else {\r\n                                                            observer.next(false);\r\n                                                        }\r\n                                                    });\r\n                                            } else {\r\n                                                observer.next(true);\r\n                                            }\r\n                                        } else {\r\n                                            observer.next(false);\r\n                                        }\r\n                                    });\r\n                                } else {\r\n                                    alert('Complete Activity Failed.');\r\n                                    observer.next(false);\r\n                                }\r\n                            });\r\n                        } else {\r\n                            observer.next(false);\r\n                        }\r\n                    });\r\n                });\r\n            } else {\r\n                observer.next(false);\r\n            }\r\n        });\r\n    }\r\n\r\n    private addCurrentActivity(contact: any, isComplete: boolean = false): Observable<any> {\r\n        return new Observable<any>((observer) => {\r\n            if (!this.validateCurrentActivityFormGroup()) {\r\n                observer.next(false);\r\n            } else {\r\n                const currentActivityPayload = this.buildActivityDetailPayload(\r\n                    this._currentActivityFormGroup,\r\n                    contact,\r\n                    isComplete\r\n                );\r\n                this._activityManagementService.addActivity(currentActivityPayload).subscribe((response) => {\r\n                    if (!Utils.isNullOrUndefined(response.id)) {\r\n                        observer.next(response);\r\n                    } else {\r\n                        observer.next(false);\r\n                    }\r\n                });\r\n            }\r\n        });\r\n    }\r\n\r\n    private  addNextActivity(contact): Observable<any> {\r\n        if (this.isNoneSelected) {\r\n            return of(true);\r\n        }\r\n\r\n        if (!this.isNextActivityFormValid) {\r\n            Utils.markAsTouched(this._nextActivityFormGroup);\r\n            return of(false);\r\n        }\r\n\r\n        const nextActivityPayload = this.buildActivityDetailPayload(\r\n            this._nextActivityFormGroup,\r\n            contact,\r\n            false\r\n        );\r\n\r\n        const startDate = cloneDeep(this._nextActivityFormGroup.get(\"scheduledStart\").value);\r\n        const startDateISO = this.normalizeDate(startDate);\r\n        const endDateISO = this.addOneMinute(startDate);\r\n\r\n        const isManagerInvited = this._nextActivityFormGroup.get(\"inviteManager\")?.value === true;\r\n\r\n         \r\n        const managerCheck$ = isManagerInvited\r\n            ? this._activityService.canInviteManagerToMeeting(contact.ownerId, startDate).pipe(\r\n                map(canInvite => {\r\n                    if (!canInvite) {\r\n                        this.nextActivityDetail.managerHasActivityAtSameTimeExist = true;\r\n                        //catched in catch error and is used only to stop the chain\r\n                        throw new Error('Manager has conflicting activity');\r\n                    }\r\n                    return true;\r\n                })\r\n            )\r\n            : of(true);\r\n\r\n        //note if any observable throw exception the next one will not continue\r\n        //and this happens when activity is meeting and manager is invited but he has another meetings in the same time (same hour and same minute - if it differs one minute it is allowed currently -)\r\n        //or if the user has another activity at the same time (same hour and same minute - if it differs one minute it is allowed currently -)\r\n        return managerCheck$.pipe(\r\n            switchMap(() =>\r\n                this._activityService.getActivities(startDateISO, endDateISO, true).pipe(\r\n                    map(activities => {\r\n                        if (activities?.length > 0) {\r\n                            this.nextActivityDetail.activityAtSameTimeExist = true;\r\n                            //catched in catch error and is used only to stop the chain\r\n                            throw new Error('User has conflicting activity');\r\n                        }\r\n                        return true;\r\n                    })\r\n                )\r\n            ),\r\n            switchMap(() =>\r\n                this._activityManagementService.addActivity(nextActivityPayload).pipe(\r\n                    map(response => !Utils.isNullOrUndefined(response.id))\r\n                )\r\n            ),\r\n            catchError(err => {\r\n                return of(false);\r\n            })\r\n        );\r\n    }\r\n\r\n    private completeAndAddNextActivity(): Observable<any> {\r\n        return new Observable<any>((observer) => {\r\n            if (this.validateCompleteActivity()) {\r\n                const completeActivityPayload = this.buildCompleteActivityPayload(this._activityId);\r\n                this._activityManagementService.completeActivity(completeActivityPayload).subscribe((response) => {\r\n                    if (response) {\r\n                        if(!this.isInvitationActivity)\r\n                        {\r\n                            this.addNextActivity(this._selectedContact).subscribe((response) => {\r\n                                if (response) {\r\n                                    if (this.isOpportunityVisible && this._opportunityFormGroup.dirty) {\r\n                                        const opportunityPayload = this.buildOpportunityPayload();\r\n                                        this._activityManagementService\r\n                                            .updateOpportunity(opportunityPayload)\r\n                                            .subscribe((response) => {\r\n                                                var opportunityState = this._opportunityFormGroup.getRawValue().opportunityState;\r\n                                                var lostReason = this._opportunityFormGroup.getRawValue().lostReason;\r\n                                                //if opportunity not closed & user didn't keep it open\r\n                                                if(response)\r\n                                                {\r\n                                                    if(!this.options.closeOpportunityBasedOnQuotations && opportunityState != \"1\")\r\n                                                    {\r\n                                                        let setOpportunityStatePayload:SetOpportunityStatePayload =  {\r\n                                                            opportunityId : opportunityPayload.entity.id,\r\n                                                            opportunityState : +opportunityState,\r\n                                                            lostReason:lostReason\r\n                                                        };\r\n                                                        this._activityManagementService.setOpportunityState(setOpportunityStatePayload).subscribe(\r\n                                                            (response) => {\r\n                                                                observer.next(true);\r\n                                                            }\r\n                                                        );\r\n                                                    }\r\n                                                    else\r\n                                                    {\r\n                                                        observer.next(true);\r\n                                                    }\r\n\r\n                                                }\r\n                                                else\r\n                                                {\r\n                                                    observer.next(false);\r\n                                                }\r\n                                            });\r\n                                    } else {\r\n                                        observer.next(true);\r\n                                    }\r\n                                } else {\r\n                                    observer.next(false);\r\n                                }\r\n                            });\r\n                        }\r\n                        else\r\n                        {\r\n                            observer.next(true);\r\n                        }\r\n                    } else {\r\n                        observer.next(false);\r\n                    }\r\n                });\r\n            } else {\r\n                observer.next(false);\r\n            }\r\n        });\r\n    }\r\n    //#endregion\r\n\r\n    //#region New Activity\r\n    public addActivity() {\r\n        if (this.validateCurrentActivityFormGroup()) {\r\n\r\n            const isManagerInvited = this._currentActivityFormGroup.get(\"inviteManager\")?.value === true;\r\n            \r\n            const startDate = cloneDeep(this._currentActivityFormGroup.get(\"scheduledStart\").value);\r\n            const startDateISO = this.normalizeDate(startDate);\r\n            const endDateISO = this.addOneMinute(startDate);\r\n\r\n            if(isManagerInvited)\r\n            {\r\n                this._activityService.canInviteManagerToMeeting(this.getOwnerId(this._currentActivityFormGroup),startDate).subscribe(\r\n                            canInvite => {\r\n                                if(!canInvite)\r\n                                {\r\n                                    this.currentActivityDetail.managerHasActivityAtSameTimeExist = true;\r\n                                    return;\r\n                                }\r\n                            \r\n                                this.addActivityIfNoConflictingActivities(startDateISO,endDateISO);                                                         \r\n                            }\r\n                );\r\n            }\r\n            else\r\n            {\r\n                this.addActivityIfNoConflictingActivities(startDateISO,endDateISO);\r\n            }\r\n        }\r\n    }\r\n\r\n    public onCancel() {\r\n        this.activityEvent.emit(new EventPayload(EventTypes.ActivityCanceled, true));\r\n    }\r\n\r\n    //the action binded to save button visibile for complete activity action or adding completed activty\r\n    public completedActivity() {\r\n        //completeing an existing activity\r\n        if (this._activityId) {\r\n            this.completeAndAddNextActivity().subscribe((response) => {\r\n                if (response) {\r\n                    this.activityEvent.emit(new EventPayload(EventTypes.NextActivityCompletedAndAdded, true));\r\n                }\r\n            });\r\n        } \r\n        else { //adding a new activity but in past (completed)\r\n            this.addCompletedActivity().subscribe((response) => {\r\n                if (response) {\r\n                    this.activityEvent.emit(new EventPayload(EventTypes.CompletedActivityAdded, true));\r\n                }\r\n            });\r\n        }\r\n    }\r\n\r\n    public getContact()\r\n    {\r\n        let formValue = this._currentActivityFormGroup.getRawValue();\r\n\r\n            let isNewContact = Utils.isNull(formValue.contact);\r\n            let contactId = isNewContact ? null : formValue['contact'].id;\r\n            let formContact = formValue['contact'];\r\n            let contact = {\r\n                id: contactId,\r\n                ownerId: formValue['ownerSelection'] ? formValue['ownerSelection'][0].id : formContact.ownerId,\r\n                ownerDisplay: formValue['ownerSelection']\r\n                    ? formValue['ownerSelection'][0].fullName\r\n                    : formContact.ownerDisplay,\r\n                fullName: !formValue.contactType || formValue.contactType == \"0\" ? formValue['contactFirstName'] + ' ' + formValue['contactLastName']: formValue['companyName'],\r\n                firstName: formValue['contactFirstName'],\r\n                lastName: formValue['contactLastName'],\r\n                companyName: formValue['companyName'],\r\n                personalPhoneNumber: { number: formValue['contactPhoneNumber'] }\r\n            };\r\n\r\n            if(formValue.contactType)\r\n            {\r\n                contact[\"extendedProperties\"] = {contactType:formValue.contactType}\r\n            }\r\n\r\n            return contact;\r\n    }\r\n\r\n    private addContact(): Observable<any> {\r\n        return new Observable<any>((observer) => {\r\n            let formValue = this._currentActivityFormGroup.getRawValue();\r\n\r\n            let isNewContact = Utils.isNull(formValue.contact);\r\n            let contactId = isNewContact ? null : formValue['contact'].id;\r\n            let formContact = formValue['contact'];\r\n            let contact = {\r\n                id: contactId,\r\n                ownerId: formValue['ownerSelection'] ? formValue['ownerSelection'][0].id : formContact.ownerId,\r\n                ownerDisplay: formValue['ownerSelection']\r\n                    ? formValue['ownerSelection'][0].fullName\r\n                    : formContact.ownerDisplay,\r\n                fullName: !formValue.contactType || formValue.contactType == \"0\" ? formValue['contactFirstName'] + ' ' + formValue['contactLastName']: formValue['companyName'],\r\n                firstName: formValue['contactFirstName'],\r\n                lastName: formValue['contactLastName'],\r\n                companyName: formValue['companyName'],\r\n                personalPhoneNumber: { number: formValue['contactPhoneNumber'] }\r\n            };\r\n\r\n            if(formValue.contactType)\r\n            {\r\n                contact[\"extendedProperties\"] = {contactType:formValue.contactType}\r\n            }\r\n\r\n            if (!formValue['contact'] || Utils.isNullOrUndefined(formValue['contact'].id)) {\r\n                // let contact = {\r\n                //     ownerId: formValue['ownerSelection'][0].id,\r\n                //     ownerDisplay: formValue['ownerSelection'][0].fullName,\r\n                //     fullName: formValue['contactFirstName'] + \" \" + formValue['contactLastName'],\r\n                //     firstName: formValue['contactFirstName'],\r\n                //     lastName: formValue['contactLastName'],\r\n                //     personalPhoneNumber: new formValue['contactPhoneNumber']\r\n                // }\r\n                this._contactsService.addContact(contact).subscribe((response) => {\r\n                    this._contactsService.getContactById(response.id).subscribe((result) => {\r\n                        observer.next(result);\r\n                        this.setSelectedContact(result);\r\n                    });\r\n                });\r\n            } else {\r\n                // let contact = {\r\n                //     id: formValue['contact'].id,\r\n                //     ownerId: formValue['ownerSelection'][0].id,\r\n                //     ownerDisplay: formValue['ownerSelection'][0].fullName,\r\n                //     fullName: formValue['contact'].fullName,\r\n                //     firstName: formValue['contact'].firstName,\r\n                //     lastName: formValue['contact'].lastName,\r\n                //     personalPhoneNumber: formValue['contact'].mobilePhone\r\n                // };\r\n                this._contactsService.updateContactBasicInfo(contact,contact[\"extendedProperties\"] && contact[\"extendedProperties\"].contactType ?  [\"contactType\"] : null).subscribe((response) => {\r\n                    this.setSelectedContact(contact);\r\n                    observer.next(contact);\r\n                });\r\n            }\r\n        });\r\n    }\r\n\r\n    private addActivityIfNoConflictingActivities(startDateISO:string,endDateISO:string)\r\n    {\r\n        this._activityService.getActivities(startDateISO,endDateISO,true)\r\n        .subscribe(activitiesResponse => \r\n                    {\r\n                        if(activitiesResponse && activitiesResponse.length > 0)\r\n                        {\r\n                            this.currentActivityDetail.activityAtSameTimeExist = true;\r\n                        }\r\n                        else\r\n                        {\r\n                            this.handleAddActivity();\r\n                        }\r\n                    }   \r\n                    ); \r\n    }\r\n\r\n    private handleAddActivity()\r\n    {\r\n        this.addContact().subscribe((contact) => \r\n            {\r\n                this.addCurrentActivity(contact).subscribe((response) => {\r\n                    if (response) {\r\n                        this.activityEvent.emit(new EventPayload(EventTypes.CurrentActivityAdded, true));\r\n                    }\r\n                });\r\n            });\r\n    }\r\n\r\n    private normalizeDate(date: Date): string {\r\n        const normalized = cloneDeep(date);\r\n        normalized.setSeconds(0,0);\r\n        return normalized.toISOString();\r\n    }\r\n\r\n    private addOneMinute(date: Date): string {\r\n        const newDate = cloneDeep(date);\r\n        newDate.setMinutes(newDate.getMinutes() + 1, 0, 0);\r\n        return newDate.toISOString();\r\n    }\r\n    //#endregion\r\n\r\n    //#region Navigation\r\n    public onNext(): void {\r\n        if (this.index === 0) {\r\n            // First step (CurrentActivity or CompleteAction)\r\n\r\n            if (this.isCompleteAction) {\r\n                if (this.validateCompleteActivityFormGroup()) {\r\n                    if (this.options.canEditOpportunity) {\r\n                        this.index = this.index + 1;\r\n                    } else {\r\n                        this.index = this.index + 2;\r\n                    }\r\n                }\r\n            } else {\r\n                if (this.validateCurrentActivityFormGroup()) {\r\n                    let currentActivityForm = this._currentActivityFormGroup.getRawValue();\r\n                    this._tempContact = {\r\n                        ownerSelection: currentActivityForm['ownerSelection'],\r\n                        contactFirstName: currentActivityForm['contactFirstName'],\r\n                        contactLastName: currentActivityForm['contactLastName'],\r\n                        contactPhoneNumber: currentActivityForm['contactPhoneNumber']\r\n                    };\r\n\r\n                    this.index = this.index + 1;\r\n                }\r\n            }\r\n        } else {\r\n            if (this.index == 1) {\r\n                // Second step (Opportunity or NextActivity)\r\n                if (this.isOpportunityVisible) {\r\n                    if (this.validateOpportunityFormGroup()) {\r\n                        this.index = this.index + 1;\r\n                    }\r\n                } else {\r\n                    if (this.validateNextActivityFormGroup()) {\r\n                        this.index = this.index + 1;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    public onPrev(): void {\r\n        if (!this.options.canEditOpportunity && this.index === 2) {\r\n            this.index = this.index - 2;\r\n        } else {\r\n            this.index = this.index === ActivityConstants.ActivitySteps.CurrentActivityStep ? 2 : this.index - 1;\r\n        }\r\n    }\r\n    //#endregion\r\n\r\n    //#region Postpone Component Events\r\n    public postponeCancelEvent(event) {\r\n        this.activityEvent.emit(new EventPayload(event, EventTypes.ActivityPostponeCancel));\r\n    }\r\n\r\n    public postponeSaveEvent(event) {\r\n        this.activityEvent.emit(new EventPayload(event, EventTypes.ActivityPostponeSave));\r\n    }\r\n    //#endregion\r\n}\r\n","<div *ngIf=\"!isPostponeAction\" class=\"activity-component\">\r\n\r\n\r\n  <div class=\"row mx-0 my-2\">\r\n    <div class=\"col-12 p-0\">\r\n\r\n      <p-tabView [activeIndex]=\"index\">\r\n\r\n        <div class=\"back-button {{translateService.direction != 'rtl'? 'text-right': 'text-left'}}\">\r\n          <a *ngIf=\"isBackBtnVisible\" (click)=\"onPrev()\">{{'activity.back' | translate}}</a>\r\n        </div>\r\n\r\n        <p-tabPanel *ngIf=\"isCompleteAction\">\r\n          <app-activity-complete [activity]=\"loadedActivity\" [options]=\"options\" (onContactChange)=\"setSelectedContact($event)\"\r\n            (contactOpportunities)=\"setContactOpportunities($event)\"\r\n            (onOpportunityChange)=\"setSelectedOpportunity($event)\" #completeActivityDetail>\r\n          </app-activity-complete>\r\n        </p-tabPanel>\r\n        <p-tabPanel *ngIf=\"!isCompleteAction\">\r\n          <app-activity-detail [options]='options' [activityMode]=\"currentActivity\" [selectedContact]=\"selectedContact\"\r\n            [opportunities]=\"contactOpportunities\" [selectedOpportunity]=\"selectedOpportunity\"\r\n            [scheduledStartMinDate]=\"scheduledStartMinDate\" (onContactChange)=\"setSelectedContact($event)\"\r\n            (contactOpportunities)=\"setContactOpportunities($event)\"\r\n            (onOpportunityChange)=\"setSelectedOpportunity($event)\" #currentActivityDetail>\r\n          </app-activity-detail>\r\n        </p-tabPanel>\r\n\r\n\r\n\r\n        <div *ngIf=\"isCompleteStepVisible\">\r\n          <p-tabPanel *ngIf=\"isOpportunityVisible\">\r\n            <app-activity-opportunity [selectedOpportunity]=\"selectedOpportunity\" \r\n            [closeOpportunityBasedOnQuotations]=\"options.closeOpportunityBasedOnQuotations\"\r\n            #opportunityDetail>\r\n            </app-activity-opportunity>\r\n          </p-tabPanel>\r\n          <p-tabPanel>\r\n            <app-activity-detail [options]='options' [activityMode]=\"nextActivity\" [selectedContact]=\"selectedContact\"\r\n              [opportunities]=\"contactOpportunities\" [scheduledStartMinDate]=\"scheduledStartMinDate\"\r\n              [selectedOpportunity]=\"selectedOpportunity\" #nextActivityDetail>\r\n            </app-activity-detail>\r\n          </p-tabPanel>\r\n        </div>\r\n      </p-tabView>\r\n    </div>\r\n  </div>\r\n\r\n  <div class=\"row mx-0 my-2\">\r\n    <div class=\"col-3\"></div>\r\n    <div class=\"col-9 \">\r\n      <div class=\"sidebar_button_container\">\r\n        \r\n        <div class=\"col pl-0 pr-1 \" *ngIf=\"(isCompleteStepVisible); else newActivity\">\r\n          <button class=\"next\" *ngIf=\"isNextBtnVisible\" type=\"button\" pButton icon=\"fa fa-chevron-down\"\r\n            (click)=\"onNext()\">{{'activity.next' | translate}}</button>\r\n          <button class=\"save\" *ngIf=\"isSaveBtnVisible\" type=\"button\" pButton\r\n            (click)=\"completedActivity()\">{{'activity.save' | translate}}</button>\r\n        </div>\r\n\r\n        <div class=\"col p-tabview pr-0 pl-1\">\r\n          <button class=\"cancel\" type=\"button\" pButton (click)=\"onCancel()\">{{'activity.cancel' | translate}}</button>\r\n        </div>\r\n\r\n      </div>\r\n    </div>\r\n  </div>\r\n</div>\r\n\r\n<ng-template #newActivity>\r\n  <div #newActivity>\r\n    <button class=\"save\" type=\"button\" pButton (click)=\"addActivity()\">{{'activity.save' | translate}}</button>\r\n  </div>\r\n</ng-template>\r\n\r\n<div *ngIf=\"isPostponeAction\">\r\n  <app-activity-postpone (activityPostponedEvent)=\"postponeSaveEvent($event)\"\r\n    (cancelEvent)=\"postponeCancelEvent($event)\"></app-activity-postpone>\r\n</div>\r\n","import {\r\n    Component,\r\n    OnInit,\r\n    ViewEncapsulation,\r\n    OnChanges,\r\n    Input,\r\n    SimpleChanges,\r\n    Output,\r\n    EventEmitter,\r\n    Inject\r\n} from '@angular/core';\r\nimport { ContactsService } from '../../services/contacts.service';\r\nimport { EventPayload, UITranslateService, Utils } from '@bsynchro/common';\r\nimport { ContactViewProperties, EventTypes } from '../../crm-constants';\r\n\r\n@Component({\r\n    selector: 'app-contact-summary',\r\n    templateUrl: './contact-summary.component.html',\r\n    styleUrls: ['./contact-summary.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    providers: [ContactsService]\r\n})\r\nexport class ContactSummaryComponent implements OnInit, OnChanges {\r\n    \r\n    public ContactViewPropertiesConstants = ContactViewProperties;\r\n\r\n    @Output() contactSummaryEvents: EventEmitter<EventPayload> = new EventEmitter();\r\n    @Input() contactId: string;\r\n    @Input() showEditContactButton = true;\r\n    @Input() hiddenProperties :ContactViewProperties[] = [];\r\n    @Input() showFamilySection:boolean = false;\r\n    \r\n\r\n    public contactName:string = \"\";\r\n\r\n    //#region  private fields\r\n    private _contact: any;\r\n    private _contactSet: boolean;\r\n\r\n    //#endregion\r\n\r\n    //#region properties\r\n    public get contact(): any {\r\n        return this._contact;\r\n    }\r\n\r\n    public get getContactName()\r\n    {\r\n        if(this.contact)\r\n        {\r\n            if(this.contact.firstName || this.contact.lastName)\r\n            {\r\n                return this.contact.firstName+\" \"+ \r\n                       (this.contact.middleName ? this.contact.middleName + \" \" : \"\") \r\n                       + this.contact.lastName;\r\n\r\n            }\r\n            //corporate\r\n            else\r\n            {\r\n                return this.contact.corporateName;\r\n            }\r\n\r\n        }\r\n\r\n        return \"\";\r\n    }\r\n\r\n    public get contactSet(): boolean {\r\n        return this._contactSet;\r\n    }\r\n    //#endregion\r\n\r\n    constructor(private _contactsService: ContactsService, @Inject('fileSettings') public fileSettings: any,public translateService:UITranslateService) {\r\n        this._contactSet = false;\r\n    }\r\n\r\n    //#region  hooks\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes[\"contactId\"] && !Utils.isNullOrUndefined(changes[\"contactId\"].currentValue)) {\r\n            this.getContactById(this.contactId);\r\n        }\r\n        if(changes[\"hiddenProperties\"])\r\n        {\r\n            this.showFamilySection = \r\n                        !this.hiddenProperties.includes(ContactViewProperties.MaritalStatus)\r\n                        || !this.hiddenProperties.includes(ContactViewProperties.Spouses)\r\n                        || !this.hiddenProperties.includes(ContactViewProperties.Children);\r\n        }\r\n    }\r\n\r\n    ngOnInit() { }\r\n    //#endregion\r\n\r\n    //#region Private\r\n\r\n    private getContactById(contactId): void {\r\n        this._contactsService.getContactById(contactId).subscribe((contact) => {\r\n            this._contact = contact;\r\n            this._contactSet = true;\r\n            this.contactName = this.getContactName;\r\n        });\r\n    }\r\n    //#endregion\r\n\r\n    //#region public\r\n\r\n    public editContact(): void {\r\n        const contactId = this._contact.id;\r\n        this.contactSummaryEvents.emit(new EventPayload(EventTypes.EditContact,contactId));\r\n    }\r\n\r\n    public formatDate(date: string): string {\r\n        if (date) {\r\n            const day = date.substr(0, 2);\r\n            const month = date.substr(3, 2);\r\n            const year = date.substr(6, 4);\r\n            const newDate = month + '/' + day + '/' + year;\r\n\r\n            return newDate;\r\n        } else {\r\n            return '';\r\n        }\r\n    }\r\n\r\n    public getContactMainAddress(addressType: string): any {\r\n        let address = null;\r\n        if (addressType === 'residentialAddresses' && this.contact.residentialAddresses) {\r\n            address = this.contact.residentialAddresses.find((a) => a.primary === true);\r\n        } else if (addressType === 'businessAddresses' && this.contact.businessAddresses) {\r\n            address = this.contact.businessAddresses.find((a) => a.primary === true);\r\n        }\r\n        return address;\r\n    }\r\n    public getMainAddressContent(addressType: string): string {\r\n        let addressContent = '';\r\n        let address = null;\r\n        if (addressType === 'residentialAddresses' && this.contact.residentialAddresses) {\r\n            address = this.contact.residentialAddresses.find((a) => a.primary === true);\r\n        } else if (addressType === 'businessAddresses' && this.contact.businessAddresses) {\r\n            address = this.contact.businessAddresses.find((a) => a.primary === true);\r\n        }\r\n        if (address == null) {\r\n            return addressContent;\r\n        }\r\n        if (address.companyName) {\r\n            addressContent += address.companyName + ' Company,';\r\n        }\r\n        if (address.countryDisplay) {\r\n            addressContent += address.countryDisplay + ',';\r\n        }\r\n        if (address.stateOrProvinceDisplay) {\r\n            addressContent += address.stateOrProvinceDisplay + ' Province ,';\r\n        }\r\n        if (address.countyDisplay) {\r\n            addressContent += address.countyDisplay + ',';\r\n        }\r\n        if (address.cityDisplay) {\r\n            addressContent += address.cityDisplay + ',';\r\n        }\r\n        if (address.building) {\r\n            addressContent += address.building + ' Building,';\r\n        }\r\n        if (address.floor) {\r\n            addressContent += address.floor + 'th Floor,';\r\n        }\r\n        addressContent = addressContent.replace(/,+/g, ','); // remove consecutive commas\r\n        addressContent = addressContent.replace(/,\\s*$/, ''); // remove commas if the end of line\r\n        return addressContent;\r\n    }\r\n\r\n    getDataListFieldDisplay(name:string)\r\n    {\r\n        if(!Utils.isNullOrUndefined(this.contact[name]) && ! Utils.isEmpty(this.contact[name].code))\r\n        return this.translateService.getLocalizedDataListField(this.contact[name]);\r\n\r\n        //support old way\r\n        return this.contact[name+\"Display\"];       \r\n    }\r\n\r\n    //#endregion\r\n}\r\n","<div class=\"contact-summary\">\r\n  <div class=\"dataLoader\" *ngIf=\"!contactSet\">\r\n    Loading...\r\n  </div>\r\n  <!----------------------------------------------------------Header-------------------------------------------------------------------------------->\r\n  <div *ngIf=\"contactSet\" class=\"container-fluid p-0\">\r\n    <div class=\"row\">\r\n      <div class=\"header col-12 col-md-4\">\r\n        <div class=\"container-fluid\">\r\n          <div class=\"row\">\r\n            <div class=\"col-12 pb-4\">\r\n              <div class=\"container-fluid p-0\">\r\n                <div class=\"row\">\r\n                  <div class=\"col-12 p-0\">\r\n                    <div class=\"profile-pic\">\r\n                      <img *ngIf=\"!contact.imageUri\" class=\"contact-image\" src=\"/assets/images/default.png\"\r\n                        alt=\"default avatar\">\r\n                      <img *ngIf=\"contact.imageUri\" class=\"contact-image\"\r\n                        src=\"{{fileSettings.fileUrl}}/{{contact.imageUri}}\" alt=\"...\">\r\n                    </div>\r\n                    <div class=\"contact-info\">\r\n                      <span class=\"full-name\">\r\n                        {{getDataListFieldDisplay('salutation')}} {{contactName}}\r\n                      </span>\r\n                      <span *ngIf=\"contact?.stateCode==1\" class=\"status-info\">\r\n                        <span class=\"status-dot warning\"></span>\r\n                        <span class=\"col-10 pl-2 pr-0\"> Lead</span>\r\n                      </span>\r\n\r\n                      <span *ngIf=\"contact?.stateCode==2\" class=\"status-info\">\r\n                        <span class=\"status-dot success\"></span>\r\n                        <span class=\"col-10 pl-2 pr-0\"> Prospect</span>\r\n                      </span>\r\n\r\n                      <span *ngIf=\"contact?.stateCode==3\" class=\"status-info\">\r\n                        <span class=\"status-dot primary\"></span>\r\n                        <span class=\"col-10 pl-2 pr-0\"> Customer</span>\r\n                      </span>\r\n                      <div *ngIf=\"showEditContactButton\" class=\"edit-contact-action\" (click)=\"editContact()\"><span\r\n                          class=\"icon\"></span> Edit</div>\r\n\r\n                    </div>\r\n                  </div>\r\n\r\n                </div>\r\n              </div>\r\n            </div>\r\n\r\n            <div class=\"col-12\">\r\n              <div class=\"general-info-section info-section container-fluid p-0\">\r\n                <div class=\"info row p-0 mb-3  align-items-center\">\r\n                  <div class=\"col-12 p-0\">\r\n                    <span class=\"fa mobile-icon p-0\" aria-hidden=\"true\"></span>\r\n                    <span class=\"pl-0\"> {{contact.personalPhoneNumber?.number}}</span>\r\n                  </div>\r\n\r\n                </div>\r\n\r\n                <div class=\"info row p-0 mb-3  align-items-center\">\r\n                  <div class=\"col-12 p-0\">\r\n                    <span class=\"p-0 fa email-icon\" aria-hidden=\"true\"></span>\r\n                    <span *ngIf=\"contact.personalEmail != '' && contact.personalEmail != null; else emailMissing \"\r\n                      class=\"pl-0\">{{contact.personalEmail}}</span>\r\n                  </div>\r\n                </div>\r\n\r\n                <div *ngIf=\"contact.residentialAddresses!=null && contact.residentialAddresses.length>0\"\r\n                  class=\"info row p-0 mb-3  align-items-center\">\r\n                  <div class=\"col-12 p-0\">\r\n                    <span class=\"p-0 fa address-icon\" aria-hidden=\"true\"></span>\r\n                    <span class=\"pl-0 address-info\">{{getMainAddressContent('residentialAddresses')}}</span>\r\n                  </div>\r\n                </div>\r\n\r\n                <div *ngIf=\"!hiddenProperties.includes(ContactViewPropertiesConstants.DateOfBirth)\" class=\"info row p-0 mb-3  align-items-center\">\r\n                  <div class=\"col-12 p-0\">\r\n                    <span class=\"p-0 fa dob-icon\" aria-hidden=\"true\"></span>\r\n                    <span class=\"pl-0\"> {{formatDate(contact.dateOfBirth)  | date: 'dd MMMM yyyy'}}</span>\r\n                  </div>\r\n                </div>\r\n\r\n                <div class=\"info row p-0  align-items-center created-date\">\r\n                  Profile created on {{contact.creationDate  | date: 'dd MMMM yyyy'}}\r\n                </div>\r\n              </div>\r\n\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n      <!----------------------------------------------------------General info section-------------------------------------------------------------------------------->\r\n\r\n      <div class=\"content col-12 col-md-8\">\r\n\r\n        <!----------------------------------------------------------Work section-------------------------------------------------------------------------------->\r\n        <div class=\"work-section info-section\">\r\n          <div class=\"title\">Work </div>\r\n          <div class=\"items\">\r\n\r\n            <div *ngIf=\"getContactMainAddress('businessAddresses')?.companyName\" class=\"info\">\r\n              <span class=\"label\">Company:</span>\r\n              <span class=\"item-info\"> {{getContactMainAddress('businessAddresses')?.companyName}}</span>\r\n            </div>\r\n\r\n            <div *ngIf=\"getDataListFieldDisplay('accountRole')!=null && getDataListFieldDisplay('accountRole')!=''\" class=\"info\">\r\n              <span class=\"label\">Job:</span>\r\n              <span class=\"item-info\"> {{getDataListFieldDisplay('accountRole')}}</span>\r\n            </div>\r\n\r\n\r\n            <div class=\"info\">\r\n              <span class=\"label\">Phone:</span>\r\n              <span *ngIf=\"contact.businessPhoneNumber != null && contact.businessPhoneNumber.number\"\r\n                class=\"item-info\">{{contact.businessPhoneNumber?.number}}</span>\r\n              <span *ngIf=\"contact.businessPhoneNumber == null || !contact.businessPhoneNumber.number\"\r\n                class=\"item-info\">\r\n                Phone number is missing</span>\r\n            </div>\r\n          </div>\r\n\r\n        </div>\r\n        <!----------------------------------------------------------Family section-------------------------------------------------------------------------------->\r\n        <div *ngIf=\"showFamilySection\" class=\"family-section info-section\">\r\n          <div class=\"title\">Family</div>\r\n          <div class=\"items\">\r\n\r\n            <div *ngIf=\"!hiddenProperties.includes(ContactViewPropertiesConstants.MaritalStatus)\" class=\"info\">\r\n              <span class=\"label\">Marital Status:</span>\r\n              <span class=\"item-info\"> {{getDataListFieldDisplay('maritalStatus')}}</span>\r\n            </div>\r\n\r\n            <div *ngIf=\"!hiddenProperties.includes(ContactViewPropertiesConstants.Spouses) && contact.spouses && contact.spouses.length!=0\" class=\"info\">\r\n              <span class=\"label\">Spouse(s):</span>\r\n              <!-- <span *ngIf=\"contact.spouses?.length==0\" class=\"col-10\"> N/A</span> -->\r\n\r\n              <span class=\"item-info\">\r\n                <span *ngFor=\"let spouse of contact.spouses; let i=index\">\r\n                  {{spouse.firstName}} {{spouse.maidenName}} <span\r\n                    *ngIf=\"spouse.dateOfBirth\">{{formatDate(spouse.dateOfBirth)  | date: 'dd MMMM yyyy'}}</span>\r\n                </span>\r\n              </span>\r\n            </div>\r\n\r\n            <div *ngIf=\"!hiddenProperties.includes(ContactViewPropertiesConstants.Children) && contact.children && contact.children.length != 0\" class=\"info\">\r\n              <span class=\"label\">Children:</span>\r\n              <!-- <span class=\"col-10\" *ngIf=\"contact.children?.length == 0 \">N/A</span> -->\r\n              <span class=\"item-info\">{{contact.children?.length}}</span>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <!----------------------------------------------------------Additional section-------------------------------------------------------------------------------->\r\n        <div class=\"additional-section info-section\">\r\n          <div class=\"title\">Others</div>\r\n          <div class=\"items\">\r\n            <div class=\"info\" *ngIf=\"contact.referredByContactId != null\">\r\n              <span class=\"label\">Referred by</span>\r\n              <span class=\"item-info\">{{contact.referredByContactDisplay}}</span>\r\n            </div>\r\n            <div class=\"info\" *ngIf=\"contact.referredByContactId==null && contact.referredBy !=null\">\r\n              <span class=\"label\">Referred by</span>\r\n              <span class=\"item-info\">{{contact.referredBy}}</span>\r\n            </div>\r\n            <div class=\" info\" *ngIf=\"contact.incomeClassificationCode != null\">\r\n              <span class=\"label\">Potential income range</span>\r\n              <span class=\"item-info\">{{contact.incomeClassificationDisplay}}</span>\r\n            </div>\r\n\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n\r\n\r\n    </div>\r\n  </div>\r\n\r\n  <ng-template #emailMissing>\r\n    <span class=\"col-10 pl-0\">Email is\r\n      missing</span>\r\n  </ng-template>","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { saveAs } from 'file-saver';\r\nimport { PrintoutModel } from '../models/printout/PrintoutModel';\r\nimport { ApiService } from '@bsynchro/common';\r\nimport { CRM_API_CONSTANTS } from '../crm-constants';\r\n\r\n@Injectable()\r\nexport class PrintoutService {\r\n    private readonly _api: ApiService;\r\n\r\n    constructor(private _httpClient: HttpClient, @Inject('environment') private _environment: any) {\r\n        this._api = new ApiService(this._httpClient, _environment.Printout);\r\n    }\r\n\r\n    //#region Actions\r\n    public printCna(payload: PrintoutModel): Observable<boolean> {\r\n        return new Observable<boolean>((observer) => {\r\n            this._api\r\n                .post(\r\n                    CRM_API_CONSTANTS.Controller.Printout,\r\n                    CRM_API_CONSTANTS.Action.GeneratePrintout,\r\n                    payload,\r\n                    {},\r\n                    { responseType: 'blob' }\r\n                )\r\n                .subscribe((response: ArrayBuffer) => {\r\n                    saveAs(response, payload.Title);\r\n                    observer.next(true);\r\n                });\r\n        });\r\n    }\r\n    //#endregion\r\n}\r\n","import {\r\n    Input,\r\n    OnInit,\r\n    OnChanges,\r\n    Component,\r\n    ViewEncapsulation,\r\n    SimpleChanges,\r\n    EventEmitter,\r\n    Output,\r\n    Inject\r\n} from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { get } from 'lodash';\r\nimport * as _moment from 'moment';\r\nconst moment = _moment;\r\nimport { UIConstants, CapitalNeedConstants, CRM_API_CONSTANTS, EventTypes } from '../../crm-constants';\r\nimport { ContactsService } from '../../services/contacts.service';\r\nimport { PrintoutService } from '../../services/printout.service';\r\nimport { IdentityService, ApiService, Utils, EventPayload } from '@bsynchro/common';\r\nimport { PrintoutModel } from '../../models/printout/PrintoutModel';\r\n\r\n@Component({\r\n    selector: 'app-contact-cna-summary',\r\n    templateUrl: './contact-cna-summary.component.html',\r\n    styleUrls: ['./contact-cna-summary.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    providers: [PrintoutService, ContactsService]\r\n})\r\nexport class ContactCnaSummaryComponent implements OnInit, OnChanges {\r\n    @Output() cnaSummaryEvents: EventEmitter<EventPayload> = new EventEmitter();\r\n    @Input() contactId: string;\r\n    @Input() contact: any;\r\n    @Input() showAddCnaButton = true;\r\n    @Input() showEditCnaButton = true;\r\n    @Input() showPrintCnaButton = true;\r\n    //#region  private fields\r\n    private _cna: any;\r\n    private _cnaSet: boolean;\r\n    //#endregion\r\n\r\n    constructor(\r\n        private _httpClient: HttpClient,\r\n        private _printoutService: PrintoutService,\r\n        private _identityService: IdentityService,\r\n        // tslint:disable-next-line: align\r\n        @Inject('environment') private _environment: any\r\n    ) {\r\n        this._cnaSet = false;\r\n    }\r\n\r\n    //#region  hooks\r\n    ngOnInit() { }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes[\"contactId\"] && !Utils.isNullOrUndefined(changes[\"contactId\"].currentValue)) {\r\n            this.getCna(this.contactId).subscribe((cna) => {\r\n                this._cna = cna;\r\n                this._cnaSet = true;\r\n            });\r\n        }\r\n    }\r\n\r\n    //#endregion\r\n\r\n    //#region UI\r\n    public get currencyPipe() {\r\n        return UIConstants.CurrencyPipe;\r\n    }\r\n    //#endregion\r\n\r\n    //#region  Actions\r\n    public editCna() {\r\n        this.cnaSummaryEvents.emit(new EventPayload(this.cna.clientId, EventTypes.EditCna));\r\n    }\r\n\r\n    public addCna() {\r\n        this.cnaSummaryEvents.emit(new EventPayload(this.contactId, EventTypes.AddCna));\r\n    }\r\n\r\n    public printCna() {\r\n        const contactFullName = get(this.contact, 'fullName', null);\r\n        const printDate = moment(new Date()).format(CapitalNeedConstants.Printout.CnaDateFormat);\r\n        const title = 'CNA for ' + contactFullName + ' ' + printDate;\r\n        const payload: PrintoutModel = {\r\n            Title: title,\r\n            Model: {\r\n                Contact: this.contact,\r\n                CNA: this._cna,\r\n                Currency: CapitalNeedConstants.Printout.CnaCurrency,\r\n                UserName: this._identityService.user?.fullName\r\n            },\r\n            BodyTemplateFileName: CapitalNeedConstants.Printout.CnaBodyTemplateFileName\r\n        };\r\n        this._printoutService.printCna(payload).subscribe((response) => { });\r\n    }\r\n    //#endregion\r\n\r\n    //#region  properties\r\n    public get cna(): any {\r\n        return this._cna;\r\n    }\r\n\r\n    public get cnaSet(): boolean {\r\n        return this._cnaSet && Utils.isNotEmpty(this.contact);\r\n    }\r\n    //#endregion\r\n\r\n    //#region private\r\n    private getCna(contactId: string): Observable<any> {\r\n        return new Observable<any>((observer) => {\r\n            const api = new ApiService(this._httpClient, this._environment.CNA);\r\n            const params = {\r\n                id: contactId\r\n            };\r\n\r\n            api\r\n                .get(CRM_API_CONSTANTS.Controller.Cna, CRM_API_CONSTANTS.Action.FindByClientId, params)\r\n                .subscribe((cna) => {\r\n                    observer.next(cna);\r\n                });\r\n        });\r\n    }\r\n    //#endregion\r\n}\r\n","<div class=\"contact-cna-summary\">\r\n  <div class=\"header row align-items-center pb-2\">\r\n    <span class=\"col-6 title pr-0\"> Capital Need</span>\r\n    <span class=\"col-6 pl-0 add-cna-action text-right\">\r\n      <span *ngIf=\"cna != null && showPrintCnaButton\" class=\"print-btn\" (click)=\"printCna()\">\r\n        <img src=\"../../../assets/images/icons/ic-cna.svg\" />\r\n      </span>\r\n      <a *ngIf=\"cna == null && !contact?.hidden && showAddCnaButton\" class=\"edit-link\" (click)=\"addCna()\">+ Add</a>\r\n    </span>\r\n  </div>\r\n\r\n  <div class=\"dataLoader\" *ngIf=\"!cnaSet\">\r\n    Loading...\r\n  </div>\r\n\r\n  <div class=\"content\">\r\n    <ng-container *ngIf=\"cnaSet && cna != null\">\r\n\r\n      <div *ngIf=\"cna.currency\" class=\"cna-fields row mb-4\">\r\n        <div class=\"cna-field col-12 mb-lg-0\">\r\n          <span class=\"cna-cost\">{{cna.currency}}</span>\r\n        </div>\r\n        <div class=\"cna-field col-12 mb-lg-0\">\r\n          <span class=\"cna-label\">Currency</span>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"cna-fields row mb-4\">\r\n        <div class=\"cna-field col-12 mb-lg-0\">\r\n          <span\r\n            class=\"cna-cost\">{{cna.lifeGap | currency:cna.currency:currencyPipe.Display: currencyPipe.DigitsInfo}}</span>\r\n        </div>\r\n        <div class=\"cna-field col-12 mb-lg-0\">\r\n          <span class=\"cna-label\">Life Insurance Amount Needed</span>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"cna-fields row mb-4\">\r\n        <div class=\"cna-field col-12 mb-lg-0\">\r\n          <span\r\n            class=\"cna-cost\">{{cna.totalEducationCost | currency:cna.currency:currencyPipe.Display: currencyPipe.DigitsInfo}}</span>\r\n        </div>\r\n        <div class=\"cna-field col-12 mb-lg-0\">\r\n          <span class=\"cna-label\">Education Amount Needed</span>\r\n        </div>\r\n\r\n      </div>\r\n      <div class=\"cna-fields row mb-4\">\r\n        <div class=\"cna-field col-12 mb-lg-0\">\r\n          <span\r\n            class=\"cna-cost\">{{cna.retirementGap | currency:cna.currency:currencyPipe.Display: currencyPipe.DigitsInfo}}</span>\r\n        </div>\r\n        <div class=\"cna-field col-12 mb-lg-0\">\r\n          <span class=\"cna-label\">Retirement Amount Needed</span>\r\n        </div>\r\n\r\n      </div>\r\n\r\n      <div class=\"actions\">\r\n        <span class=\"edit-cna-action edit-link\" *ngIf=\"showEditCnaButton\" (click)=\"editCna()\">Edit</span>\r\n      </div>\r\n    </ng-container>\r\n  </div>\r\n\r\n</div>\r\n","import {\r\n    Component,\r\n    OnInit,\r\n    OnChanges,\r\n    Input,\r\n    SimpleChanges,\r\n    ViewEncapsulation,\r\n    Output,\r\n    EventEmitter\r\n} from '@angular/core';\r\nimport { OpportunitiesService } from '../../services/opportunities.service';\r\nimport { QuotationsService } from '../../services/quotations.service';\r\nimport { OpportunityState, CRM_API_CONSTANTS, UIConstants, EventTypes } from '../../crm-constants';\r\nimport { EventPayload, UITranslateService, Utils } from '@bsynchro/common';\r\n\r\n@Component({\r\n    selector: 'app-opportunity-summary',\r\n    templateUrl: './opportunity-summary.component.html',\r\n    styleUrls: ['./opportunity-summary.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    providers: [OpportunitiesService, QuotationsService]\r\n})\r\nexport class OpportunitySummaryComponent implements OnInit, OnChanges {\r\n    @Input() opportunityId: string;\r\n    // tslint:disable-next-line: no-input-rename\r\n    @Input('opportunity') opportunityInput: any;\r\n    @Input() showEditOpportunityButton = true;\r\n    @Input() showCloseOpportunityButton = true;\r\n    @Input() showWonAmdLoseOpportunityButtons = false;\r\n    @Input() closeOpportunityBasedOnQuotations: boolean = true;\r\n\r\n    @Output() dataUpdated: EventEmitter<any> = new EventEmitter();\r\n    @Output() opportunitySummaryEvents: EventEmitter<EventPayload> = new EventEmitter();\r\n\r\n    //#region  private fields\r\n    private _opportunity: any;\r\n    private _opportunitySet: boolean;\r\n    private _canCloseOpportunity: boolean = false;\r\n    //#endregion\r\n\r\n    constructor(private _opportunityService: OpportunitiesService, private _quotationsService: QuotationsService,private _transalteService:UITranslateService) {\r\n        this._opportunitySet = false;\r\n        this._canCloseOpportunity = false;\r\n    }\r\n\r\n    //#region UI\r\n    public get currencyPipe() {\r\n        return UIConstants.CurrencyPipe;\r\n    }\r\n\r\n    public editVisibility(): boolean {\r\n        return this.opportunity.stateCode === OpportunityState.Open;\r\n    }\r\n    //#endregion\r\n\r\n    //#region  hooks\r\n    ngOnInit() { }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes['opportunityInput'] && !Utils.isNullOrUndefined(changes['opportunityInput'].currentValue)) {\r\n            this._opportunity = this.opportunityInput;\r\n            this._opportunitySet = true;\r\n            if(this.showCloseOpportunityButton)\r\n                this.setCloseButtonStatus(this._opportunity.id);\r\n        }\r\n\r\n        if (changes['opportunityId'] && !Utils.isNullOrUndefined(changes['opportunityId'].currentValue)) {\r\n            this.refreshData();\r\n        }\r\n    }\r\n\r\n    //#endregion\r\n\r\n    //#region  Actions\r\n    public editOpportunity(): void {\r\n        const id = this.opportunityId ? this.opportunityId : this.opportunity.id;\r\n        // this._router.navigate([CRM_API_CONSTANTS.Route., CoreConstants.Route.Opportunities, OpportunitiesConstants.Route.opportunity, id]);\r\n        this.opportunitySummaryEvents.emit(new EventPayload( EventTypes.EditOpportunity,id));\r\n    }\r\n\r\n    public onOpportunityClose(): void {\r\n        if (this._canCloseOpportunity) {\r\n            this._opportunitySet = false;\r\n            this._opportunityService.closeOpportunity(this._opportunity.id).subscribe((response) => {\r\n                this.dataUpdated.emit();\r\n                this._opportunityService.getOpportunityById(this._opportunity.id).subscribe((opportunity) => {\r\n                    this._opportunity = opportunity;\r\n                    this._opportunitySet = true;\r\n                    this._canCloseOpportunity = false;\r\n                    this.opportunitySummaryEvents.emit(\r\n                        new EventPayload(this._opportunity.id, EventTypes.CloseOpportunity)\r\n                    );\r\n                });\r\n            });\r\n        } else {\r\n            console.error('Invalid Action.');\r\n            console.warn('Opportunity cannot be closed.');\r\n        }\r\n    }\r\n\r\n    public changeOpportunityState(opportunityState:string)\r\n    {\r\n        if(!this.closeOpportunityBasedOnQuotations && opportunityState != \"1\")\r\n        {\r\n            let setOpportunityStateEventPayload = {\r\n                opportunityId : this._opportunity.id,\r\n                opportunityState : +opportunityState\r\n            };\r\n\r\n            this.opportunitySummaryEvents.emit(\r\n                new EventPayload(EventTypes.SetOpportunityState,setOpportunityStateEventPayload)\r\n            );\r\n        }\r\n\r\n    }\r\n\r\n    getLostReason()\r\n    {\r\n        if(!Utils.isNullOrUndefined(this._opportunity.lostReason))\r\n        return \" (\"+this._transalteService.getLocalizedDataListField(this._opportunity.lostReason)+\")\";\r\n\r\n        return \"\";       \r\n    }\r\n\r\n    public refreshData(): void {\r\n        // to be called from parent component\r\n        this._opportunityService.getOpportunityById(this.opportunity.id).subscribe((opportunity) => {\r\n            this._opportunity = opportunity;\r\n            this._opportunitySet = true;\r\n            if(this.showCloseOpportunityButton)\r\n                this.setCloseButtonStatus(this._opportunity);\r\n        });\r\n    }\r\n    //#endregion\r\n\r\n    //#region  properties\r\n    public get opportunity(): any {\r\n        return this._opportunity;\r\n    }\r\n\r\n    public get opportunitySet(): boolean {\r\n        return this._opportunitySet;\r\n    }\r\n\r\n    public get canCloseOpportunity(): boolean {\r\n        return this._canCloseOpportunity;\r\n    }\r\n    //#endregion\r\n\r\n    //#region private\r\n    private setCloseButtonStatus(opportunityId): void {\r\n        this._quotationsService.checkCanCloseOpportunity(opportunityId).subscribe((canCloseOpportunity) => {\r\n            this._canCloseOpportunity = canCloseOpportunity;\r\n        });\r\n    }\r\n    //#endregion\r\n}\r\n","<div class=\"opportunity-summary\">\r\n  <ng-container *ngIf=\"opportunitySet\">\r\n    <div class=\"opportunity-info row align-items-center\">\r\n\r\n      <div class=\"col-12 opportunity-details\">\r\n        <div class=\"info\">\r\n          <span class=\"title\">{{opportunity.title}}</span>\r\n          <span>Probability:\r\n            <span\r\n              [ngClass]=\"{'orange-label':opportunity.ratingCode==1,'green-label':opportunity.ratingCode==2,'blue-label':opportunity.ratingCode==3 }\">\r\n              {{opportunity.ratingDisplay}}\r\n            </span>\r\n          </span>\r\n        </div>\r\n\r\n        <div class=\"info\">\r\n          <div>\r\n            <span class=\"label\">Estimated premium revenue:</span>\r\n            <span class=\"item-info\">\r\n              {{opportunity.estimatedValue | currency:opportunity.currency.code :currencyPipe.Display: currencyPipe.DigitsInfo}}</span>\r\n          </div>\r\n          <div>\r\n            <span class=\"label\">Estimated closing period:</span>\r\n            <span class=\"item-info\">{{opportunity.estimatedClosingPeriodNumber}}\r\n              {{opportunity.estimatedClosingPeriodTypeDisplay}} </span>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"info\">\r\n          <div>\r\n            <span class=\"label\">Stage:</span>\r\n            <span class=\"item-info\">{{opportunity.salesStageDisplay}}</span>\r\n          </div>\r\n          <div\r\n            [ngClass]=\"{'statusOpen':opportunity.stateCode==1,'statusWon':opportunity.stateCode==2,'statusLost':opportunity.stateCode==3}\">\r\n            <span class=\"label\">Status:</span>\r\n            <span class=\"item-info\">{{opportunity.stateDisplay}}{{getLostReason()}}</span>\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n    <div class=\"col-12  opportunity-actions text-center text-lg-left mt-4 \"\r\n      *ngIf=\"opportunity.stateCode == 1 && closeOpportunityBasedOnQuotations && showCloseOpportunityButton\">\r\n      <button class=\"btn-close\" *ngIf=\"canCloseOpportunity\" (click)=\"onOpportunityClose()\"\r\n        [disabled]=\"!canCloseOpportunity\">\r\n        <span class=\"ic-icon-status\"><img src=\"../../../assets/images/icons/ic-won.svg\" /></span>\r\n        <span class=\"button-label\">Close</span>\r\n      </button>\r\n    </div>\r\n\r\n\r\n    <div  class=\"col-12  opportunity-actions text-center text-lg-left mt-4 \"\r\n      *ngIf=\"opportunity.stateCode == 1 && !closeOpportunityBasedOnQuotations && showWonAmdLoseOpportunityButtons\">\r\n      <button class=\"btn-won\" (click)=\"changeOpportunityState('2')\">\r\n        <span class=\"ic-icon-status\"><img src=\"../../../assets/images/icons/ic-won.svg\" /></span>\r\n        <span class=\"button-label\">Won</span>\r\n      </button>\r\n      <button class=\"btn-lost\" (click)=\"changeOpportunityState('3')\">\r\n        <span class=\"ic-icon-status\"><img src=\"../../../assets/images/icons/ic-lost.svg\" /></span>\r\n        <span class=\"button-label\">Lost</span>\r\n      </button>\r\n    </div>\r\n\r\n    </div>\r\n\r\n    <div class=\"opportunity-footer row pt-4 pt-lg-0\">\r\n      <div class=\"col-4\">\r\n        <span class=\"edit-opportunity-action edit-link\" *ngIf=\"editVisibility() && showEditOpportunityButton\"\r\n          (click)=\"editOpportunity()\">Edit\r\n        </span>\r\n      </div>\r\n      <div class=\"col-8 text-right\">\r\n        <span class=\"opportunity-creation-date\">Created on:\r\n          {{opportunity.createdDate   | date: 'dd MMMM yyyy'}}</span>\r\n      </div>\r\n    </div>\r\n  </ng-container>\r\n</div>\r\n\r\n<div class=\"dataLoader\" *ngIf=\"!opportunitySet\">\r\n  Loading...\r\n</div>","import { Component, OnInit, OnChanges, Input, SimpleChanges, Output, EventEmitter } from '@angular/core';\r\nimport { OpportunitiesService } from '../../services/opportunities.service';\r\nimport { EventTypes } from '../../crm-constants';\r\nimport { FindExpression, EventPayload } from '@bsynchro/common';\r\n\r\n@Component({\r\n    // tslint:disable-next-line: component-selector\r\n    selector: 'app-opportunities-repeater',\r\n    templateUrl: './opportunities-repeater.component.html',\r\n    styleUrls: ['./opportunities-repeater.component.scss'],\r\n    providers: [OpportunitiesService]\r\n})\r\nexport class OpportunitiesRepeaterComponent implements OnInit, OnChanges {\r\n    @Input() contactId: string;\r\n    @Input() contact: any;\r\n    public activeIndex:number=0;\r\n\r\n    @Input() showAddOpportunityButton = true;\r\n    @Input() showEditOpportunityButton = true;\r\n    @Input() closeOpportunityBasedOnQuotations = true;\r\n    @Input() showCloseOpportunityButton = true;\r\n    @Input() showWonAmdLoseOpportunityButtons = false;\r\n\r\n    @Input() ownerIdQueryExpression: FindExpression;\r\n\r\n    @Input() isCarouselMode:boolean;\r\n\r\n    @Output() opportunityRepeaterEvents: EventEmitter<EventPayload> = new EventEmitter();\r\n\r\n    //#region  private fields\r\n    private _opportunities: Array<any>;\r\n    private _opportunitiesSet: boolean;\r\n    //#endregion\r\n\r\n    constructor(private _opportunityService: OpportunitiesService) {\r\n        this._opportunitiesSet = false;\r\n    }\r\n\r\n    //#region  hooks\r\n    ngOnInit() { }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (\r\n            (changes[\"contactId\"] && changes[\"contactId\"].currentValue) ||\r\n            (changes[\"ownerIdQueryExpression\"] && changes[\"ownerIdQueryExpression\"].currentValue)\r\n        ) {\r\n            this._opportunityService\r\n                .getOpportunitiesByContactId(this.contactId, this.ownerIdQueryExpression)\r\n                .subscribe((opportunities) => {\r\n                    this._opportunities = opportunities?opportunities:[];\r\n                    this._opportunitiesSet = true;\r\n                });\r\n        }\r\n    }\r\n\r\n    //#endregion\r\n\r\n    //#region  Actions\r\n    public addOpportunity(): void {\r\n        this.opportunityRepeaterEvents.emit(new EventPayload(EventTypes.AddOpportunity,this.contactId));\r\n    }\r\n\r\n    public onOpportunityEdited(event: EventPayload): void {\r\n        this.opportunityRepeaterEvents.emit(event);\r\n    }\r\n    //#endregion\r\n\r\n    //#region  properties\r\n    public get opportunities(): any {\r\n        return this._opportunities;\r\n    }\r\n\r\n    public get opportunitiesSet(): boolean {\r\n        return this._opportunitiesSet;\r\n    }\r\n\r\n\r\n    goToNextOpportunity() {\r\n        if (this.opportunities.length > 1) {\r\n            if (this.activeIndex != this.opportunities.length - 1)\r\n                this.activeIndex = this.activeIndex + 1;\r\n            else\r\n                this.activeIndex = 0;\r\n        }\r\n    }\r\n\r\n    goToPreviousOpportunity() {\r\n        if (this.opportunities.length > 1) {\r\n            if (this.activeIndex != 0)\r\n                this.activeIndex = this.activeIndex - 1;\r\n            else\r\n                this.activeIndex = this.opportunities.length - 1;\r\n        }\r\n    }\r\n\r\n    reloadOpportunities()\r\n    {\r\n        this._opportunitiesSet = false;\r\n        this._opportunityService\r\n                .getOpportunitiesByContactId(this.contactId, this.ownerIdQueryExpression)\r\n                .subscribe((opportunities) => {\r\n                    this._opportunities = opportunities?opportunities:[];\r\n                    this._opportunitiesSet = true;\r\n                });\r\n    }\r\n\r\n    //#endregion\r\n\r\n    //#region private\r\n\r\n    //#endregion\r\n}\r\n","<div class=\"opportunities-list\" *ngIf=\"opportunitiesSet\">\r\n  <div class=\"opportunities-repeater-header row align-items-center\">\r\n    <div class=\"col-12 d-flex justify justify-content-between\">\r\n      <span class=\"title\"> Opportunities <span *ngIf=\"isCarouselMode\">{{\"  (\"+(opportunities?opportunities.length:0)+\")\"}}</span></span>\r\n      <div>\r\n        <button *ngIf=\"isCarouselMode && opportunities\" pButton pRipple type=\"button\" (click)=\"goToPreviousOpportunity()\"\r\n          icon=\"pi pi-angle-left\" class=\"p-button-rounded mx-2\"></button>\r\n        <button *ngIf=\"isCarouselMode && opportunities\" pButton pRipple type=\"button\" (click)=\"goToNextOpportunity()\"\r\n          icon=\"pi pi-angle-right\" class=\"p-button-rounded mx-2\"></button>\r\n        <span class=\"add-opportunity-action edit-link add-cna-action text-right mx-2\"\r\n          *ngIf=\"!contact?.hidden && showAddOpportunityButton\" (click)=\"addOpportunity()\">+ Add Opportunity</span>\r\n      </div>\r\n    </div>\r\n  </div>\r\n\r\n  <div class=\"content\">\r\n\r\n    <p-tabView *ngIf=\"isCarouselMode\" [(activeIndex)]=\"activeIndex\">\r\n      <p-tabPanel *ngFor=\"let opportunity of opportunities\">\r\n      <div class=\"opportunity-item mb-2\">\r\n        <app-opportunity-summary [showEditOpportunityButton]=\"showEditOpportunityButton\"\r\n          [closeOpportunityBasedOnQuotations]=\"closeOpportunityBasedOnQuotations\"\r\n          [showCloseOpportunityButton]=\"showCloseOpportunityButton\" [showWonAmdLoseOpportunityButtons]=\"showWonAmdLoseOpportunityButtons\" [opportunity]=\"opportunity\"\r\n          (opportunitySummaryEvents)=\"onOpportunityEdited($event)\"></app-opportunity-summary>\r\n        </div>\r\n      </p-tabPanel>\r\n    </p-tabView>\r\n\r\n    <ng-container *ngIf=\"!isCarouselMode\">\r\n      <div *ngFor=\"let opportunity of opportunities\" class=\"opportunity-item mb-2\">\r\n        <app-opportunity-summary [showEditOpportunityButton]=\"showEditOpportunityButton\"\r\n          [closeOpportunityBasedOnQuotations]=\"closeOpportunityBasedOnQuotations\"\r\n          [showCloseOpportunityButton]=\"showCloseOpportunityButton\" [showWonAmdLoseOpportunityButtons]=\"showWonAmdLoseOpportunityButtons\" [opportunity]=\"opportunity\"\r\n          (opportunitySummaryEvents)=\"onOpportunityEdited($event)\"></app-opportunity-summary>\r\n      </div>\r\n    </ng-container>\r\n\r\n    <div *ngIf=\"!opportunities || opportunities.length==0\" class=\"no-records opportunity-item mb-2 d-flex\" style=\"justify-content:center;align-items:center \">\r\n      No Records to Display\r\n    </div>\r\n  </div>\r\n  <div class=\"load-more text-right\">\r\n    <span class=\"edit-link load-link\">Load More</span>\r\n  </div>\r\n\r\n\r\n</div>\r\n\r\n<div class=\"dataLoader\" *ngIf=\"!opportunitiesSet\">\r\n  Loading...\r\n</div>","import { HttpClient } from '@angular/common/http';\r\nimport { ActivatedRoute, Params } from '@angular/router';\r\nimport { ViewEncapsulation, OnInit, Component, EventEmitter, Output, ViewChild, Inject, Input } from '@angular/core';\r\nimport { ContactViewProperties, CRM_API_CONSTANTS, EventTypes } from '../../crm-constants';\r\nimport { CalendarComponent } from '../calendar/calendar.component';\r\nimport { Observable } from 'rxjs';\r\nimport { ApiService, FindExpression, EventPayload } from '@bsynchro/common';\r\nimport { Options } from '../../models/common/Options';\r\nimport { OpportunitiesRepeaterComponent } from '../opportunities-repeater/opportunities-repeater.component';\r\n\r\n@Component({\r\n    // tslint:disable-next-line: component-selector\r\n    selector: 'app-contact-view',\r\n    templateUrl: './contact-view.component.html',\r\n    styleUrls: ['./contact-view.component.scss'],\r\n    encapsulation: ViewEncapsulation.None\r\n})\r\nexport class ContactViewComponent implements OnInit {\r\n    //#region private fields\r\n    private _contactId: string;\r\n    //#endregion\r\n\r\n    //#region public fields\r\n    public activities: Array<any>;\r\n    public selectedDate: string;\r\n    public contact: any;\r\n    //#endregion\r\n    @Input() showEditContactButton = true;\r\n    @Input() options: Options;\r\n    @Input() showCnaSummary:boolean=true;\r\n\r\n    @Input() showAddCnaButton = true;\r\n    @Input() showEditCnaButton = true;\r\n    @Input() showPrintCnaButton = true;\r\n\r\n    @Input() showAddOpportunityButton = true;\r\n    @Input() showEditOpportunityButton = true;\r\n    @Input() closeOpportunityBasedOnQuotations = true;\r\n    @Input() showCloseOpportunityButton = true;\r\n    @Input() showWonAmdLoseOpportunityButtons = false;\r\n\r\n    @Input() showAddActivityAction = true;\r\n    @Input() showEditActivityAction = true;\r\n    @Input() showCompleteActivityAction = true;\r\n    @Input() showDismissActivityAction = true;\r\n\r\n    @Input() ownerIdQueryExpression: FindExpression;\r\n\r\n\r\n    @Input() isCarouselMode:boolean;\r\n\r\n    @Input() contactHiddenProperties:ContactViewProperties[] = [];\r\n\r\n    @Output() contactViewEvents: EventEmitter<EventPayload> = new EventEmitter();\r\n    @ViewChild('calendar', { static: false })\r\n    calendar: CalendarComponent;\r\n\r\n    @ViewChild('opportunityRepeater', { static: false })\r\n    opportunityRepeater: OpportunitiesRepeaterComponent;\r\n\r\n    constructor(\r\n        public httpClient: HttpClient,\r\n        private _activatedRoute: ActivatedRoute,\r\n        @Inject('environment') private _environment: any\r\n    ) {\r\n        this.contact = new Object();\r\n    }\r\n\r\n    //#region  hooks\r\n    public ngOnInit(): void {\r\n        this._activatedRoute.params.subscribe((params: Params) => {\r\n            const id = params[CRM_API_CONSTANTS.Route.Id];\r\n            if (id) {\r\n                this._contactId = id;\r\n                this.getContactById(id).subscribe((contact) => {\r\n                    this.contact = contact;\r\n                });\r\n            } else {\r\n                this.contactViewEvents.emit(new EventPayload(EventTypes.Contacts, true)); // exit\r\n            }\r\n        });\r\n    }\r\n    //#endregion\r\n\r\n    //#region properties\r\n    public get contactId(): string {\r\n        return this._contactId;\r\n    }\r\n\r\n    //#endregion\r\n\r\n    //#region Actions\r\n\r\n    public getContactById(contactId): Observable<any> {\r\n        return new Observable((observer) => {\r\n            const api = new ApiService(this.httpClient, this._environment.CRM);\r\n            api.get(CRM_API_CONSTANTS.Controller.Contact, contactId).subscribe((contact) => {\r\n                if ((contact as any).id) {\r\n                    observer.next(contact);\r\n                } else {\r\n                    observer.next(null);\r\n                }\r\n            });\r\n        });\r\n    }\r\n\r\n    public back(): void {\r\n        // this._router.navigate([CoreConstants.Route.Main, CoreConstants.Route.Contacts]);\r\n        this.contactViewEvents.emit(new EventPayload(EventTypes.Contacts, true));\r\n    }\r\n\r\n    public addActivity(): void {\r\n        // this._coreService.showRightSidebar([CoreConstants.Route.Activity, ActivityConstants.Route.ContactList, this._contactId]);\r\n        this.contactViewEvents.emit(new EventPayload(EventTypes.AddNewActivity, this._contactId));\r\n    }\r\n\r\n    public emitEvent(event: EventPayload) {\r\n        this.contactViewEvents.emit(event);\r\n    }\r\n\r\n    // public onCnaSummary(event: EventPayload) {\r\n    //   console.log('onCnaSummary', event);\r\n    //   this.contactViewEvents.emit(new EventPayload(event));\r\n    // }\r\n\r\n    // public onOpportunityRepeater(event: EventPayload) {\r\n    //   console.log('onOpportunityRepeater', event);\r\n    //   this.contactViewEvents.emit(new EventPayload(event));\r\n    // }\r\n    //#endregion\r\n\r\n    //#region  event calendar - list\r\n    public updateDayEvents(event: any): void {\r\n        this.activities = event;\r\n    }\r\n\r\n    public updateSelectedDate(event: any): void {\r\n        this.selectedDate = event;\r\n    }\r\n\r\n    public refetchEvents() {\r\n        this.calendar.refetchEvents();\r\n    }\r\n\r\n    public reloadOpportunities()\r\n    {\r\n        this.opportunityRepeater.reloadOpportunities();\r\n    }\r\n    //#endregion\r\n\r\n    //#endregion\r\n}\r\n","<div class=\"contact-view container-fluid\">\r\n  <div class=\"row\">\r\n    <div class=\"header col-12 px-0\">\r\n      <label class=\"back-to-contactList back\" (click)=\"back()\"> Back</label>\r\n    </div>\r\n  </div>\r\n\r\n  <div class=\"row\">\r\n    <div class=\"col-12 col-lg-8 contact-summary-section\">\r\n      <div class=\"container-fluid p-0\">\r\n        <div class=\"row\">\r\n          <div class=\"col-12 col-box py-0\">\r\n            <app-contact-summary [showEditContactButton]=\"showEditContactButton\"\r\n              (contactSummaryEvents)=\"emitEvent($event)\" [contactId]=\"contactId\"\r\n              [hiddenProperties]=\"contactHiddenProperties\"></app-contact-summary>\r\n          </div>\r\n          <div *ngIf=\"showCnaSummary\" class=\"col-12 col-lg-12 col-box mt-4 pl-0 pr-0 pr-lg-2  py-0\">\r\n            <app-contact-cna-summary [showAddCnaButton]=\"showAddCnaButton\" [showEditCnaButton]=\"showEditCnaButton\"\r\n              [showPrintCnaButton]=\"showPrintCnaButton\" (cnaSummaryEvents)=\"emitEvent($event)\" [contactId]=\"contactId\"\r\n              [contact]=\"contact\">\r\n            </app-contact-cna-summary>\r\n          </div>\r\n\r\n          <!--if CNA Not Shown show the opportunities in the same row of contact instead of under it-->\r\n          <div *ngIf=\"!showCnaSummary\" class=\"col-12 col-lg-12 contact-summary-section\">\r\n            <div class=\"container-fluid p-0\">\r\n              <div class=\"row\">\r\n                <div class=\"col-12 p-0\">\r\n                  <app-opportunities-repeater #opportunityRepeater [isCarouselMode]=\"isCarouselMode\"  [showAddOpportunityButton]=\"showAddOpportunityButton\"\r\n                    [showEditOpportunityButton]=\"showEditOpportunityButton\"\r\n                    [closeOpportunityBasedOnQuotations]=\"closeOpportunityBasedOnQuotations\"\r\n                    [showCloseOpportunityButton]=\"showCloseOpportunityButton\" [showWonAmdLoseOpportunityButtons]=\"showWonAmdLoseOpportunityButtons\" (opportunityRepeaterEvents)=\"emitEvent($event)\"\r\n                    [contactId]=\"contactId\" [contact]=\"contact\" [ownerIdQueryExpression]=\"ownerIdQueryExpression\">\r\n                  </app-opportunities-repeater>\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </div>\r\n\r\n        </div>\r\n      </div>\r\n\r\n\r\n\r\n    </div>\r\n\r\n    <div class=\"col-12 col-lg-4 px-0 pt-5 py-lg-0 pl-lg-5 pb-0 contact-activities \">\r\n      <!-- <div class=\"row text-right pb-3\">\r\n        <div *ngIf=\"!contact?.hidden && showAddActivityAction\" class=\"col-12\">\r\n          <span class=\"add-activity-action edit-link\" (click)=\"addActivity()\"> + Add Activity</span>\r\n        </div>\r\n      </div> -->\r\n      <app-calendar #calendar [options]=\"options\" [showLegend]=\"false\" (dayEvents)=\"updateDayEvents($event)\" [contactId]=\"contactId\"\r\n        (selectedDate)=\"updateSelectedDate($event)\">\r\n      </app-calendar>\r\n      <button *ngIf=\"showAddActivityAction\" class=\"btn add-activity\" type=\"button\">\r\n        <i aria-hidden=\"true\" class=\"fa fa-plus\" (click)=\"addActivity()\"></i>\r\n      </button>\r\n      <app-event-list [showEditActivityAction]=\"showEditActivityAction\"\r\n        [loggedInUserId]=\"options.loggedInUserId\"\r\n        [showCompleteActivityAction]=\"showCompleteActivityAction\"\r\n        [showDismissActivityAction]=\"showDismissActivityAction\" [rows]=\"activities\" [date]=\"selectedDate\"\r\n        [showHeader]=\"false\" scrollHeight=\"100px\" (eventListEvent)=\"emitEvent($event)\">\r\n      </app-event-list>\r\n    </div>\r\n  </div>\r\n\r\n  <!--if CNA Shown the opportunities will be under the cna-->\r\n  <div *ngIf=\"showCnaSummary\" class=\"row mt-4\">\r\n    <div class=\"col-12 col-lg-8 contact-summary-section\">\r\n      <div class=\"container-fluid p-0\">\r\n        <div class=\"row\">\r\n          <div class=\"col-12 p-0\">\r\n            <app-opportunities-repeater #opportunityRepeater [showAddOpportunityButton]=\"showAddOpportunityButton\"\r\n              [showEditOpportunityButton]=\"showEditOpportunityButton\"\r\n              [closeOpportunityBasedOnQuotations]=\"closeOpportunityBasedOnQuotations\"\r\n              [showCloseOpportunityButton]=\"showCloseOpportunityButton\" [showWonAmdLoseOpportunityButtons]=\"showWonAmdLoseOpportunityButtons\" (opportunityRepeaterEvents)=\"emitEvent($event)\"\r\n              [contactId]=\"contactId\" [contact]=\"contact\" [ownerIdQueryExpression]=\"ownerIdQueryExpression\">\r\n            </app-opportunities-repeater>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Utils } from '@bsynchro/common';\r\n\r\n@Injectable()\r\nexport class SharedStore {\r\n\r\n    private _data: { [key: string]: number };\r\n\r\n    constructor(public httpClient: HttpClient) {\r\n        this._data = {};\r\n    }\r\n\r\n    //#region Actions\r\n    public set(name: string, value: any): void {\r\n        if (!Utils.isNullOrUndefined(name) && !Utils.isNullOrUndefined(value)) {\r\n            this._data[name] = value;\r\n        }\r\n    }\r\n\r\n    public get(name: string): any {\r\n        let value = null;\r\n        if (!Utils.isNullOrUndefined(name)) {\r\n            value = Utils.isNullOrUndefined(this._data[name]) ? null : this._data[name];\r\n        }\r\n        return value;\r\n    }\r\n\r\n    public remove(name: string): void {\r\n        if (!Utils.isNullOrUndefined(name) && !Utils.isNullOrUndefined(this._data[name])) {\r\n            delete this._data[name];\r\n        }\r\n    }\r\n\r\n    public clear(): void {\r\n        this._data = {};\r\n    }\r\n    //#endregion\r\n}\r\n","import { Input, Output, OnInit, OnChanges, OnDestroy, EventEmitter, ViewEncapsulation, SimpleChanges, Component } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { UIConstants, SharedStoreConstants, EventTypes } from '../../crm-constants';\r\nimport { OpportunitiesService } from '../../services/opportunities.service';\r\nimport { QuotationsService } from '../../services/quotations.service';\r\nimport { SharedStore } from '../../services/sharedStore.service';\r\nimport { DialogService, EventPayload, Utils } from '@bsynchro/common';\r\n\r\n@Component({\r\n  selector: 'app-quote-view',\r\n  templateUrl: './quote-view.component.html',\r\n  styleUrls: ['./quote-view.component.scss'],\r\n  encapsulation: ViewEncapsulation.None\r\n})\r\nexport class QuoteViewComponent implements OnInit, OnChanges {\r\n\r\n\r\n  @Input() quoteId: string;\r\n  @Input('quote') quoteInput: any;\r\n  @Output() quoteViewEvents: EventEmitter<EventPayload> = new EventEmitter();\r\n  @Output() dataUpdated: EventEmitter<any> = new EventEmitter();\r\n\r\n  //#region  private fields\r\n  private _quote: any;\r\n  private _quoteSet: boolean;\r\n  private _opportunity: any;\r\n  //#endregion\r\n\r\n  constructor(private _quotesService: QuotationsService, private _dialogService: DialogService,\r\n    private _opportunityService: OpportunitiesService, private _sharedStore: SharedStore) {\r\n    this._quoteSet = false;\r\n  }\r\n\r\n  //#region  hooks\r\n  ngOnInit() {\r\n\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n\r\n    if (changes[\"quoteInput\"] && !Utils.isNullOrUndefined(changes[\"quoteInput\"].currentValue)) {\r\n      this._quote = this.quoteInput;\r\n      this._quoteSet = true;\r\n    }\r\n  }\r\n\r\n  //#endregion\r\n\r\n  //#region  Actions\r\n\r\n  public setQuoteAsLost(): void {\r\n    if (this.canCloseQuote) {\r\n      this.closeQuote(3);\r\n    } else {\r\n      console.error('Cannot alter a quote with status other than  Open.');\r\n    }\r\n  }\r\n\r\n  public setQuoteAsWon(): void {\r\n    if (this.canCloseQuote) {\r\n      this.closeQuote(2);\r\n    } else {\r\n      console.error('Cannot alter a quote with status other than  Open.');\r\n    }\r\n  }\r\n\r\n  public setQuoteAsSentToCustomer(): void {\r\n\r\n    if (!this._quote.willCall) {\r\n\r\n      this._quotesService.setQuoteAsSentToClient(this._quote.id)\r\n        .subscribe(done => {\r\n          this._quotesService.getQuoteById(this._quote.id)\r\n            .subscribe((quote) => {\r\n              this._quote = quote;\r\n            });\r\n\r\n        });\r\n    }\r\n\r\n    // Print..........\r\n  }\r\n\r\n  public editQuote(): void {\r\n    if (this.canEditQuote) {\r\n      this._sharedStore.set(SharedStoreConstants.IsSimulationEditMode, true);\r\n      this._sharedStore.set(SharedStoreConstants.QuoteId, this._quote.id);\r\n      this._sharedStore.set(SharedStoreConstants.OpportunityId, this._quote.opportunityId);\r\n      // this._router.navigate([CoreConstants.Route.Main, CoreConstants.Route.Simulation, SimulationConstants.Route.SimulationContactFrom, this._quote.contactId]);\r\n      this.quoteViewEvents.emit(new EventPayload(this._quote.contactId, EventTypes.EditQuote));\r\n    }\r\n  }\r\n\r\n  //#endregion\r\n\r\n  //#region  properties\r\n  public get quote(): any {\r\n    return this._quote;\r\n  }\r\n\r\n  public get quoteSet(): boolean {\r\n    return this._quoteSet;\r\n  }\r\n\r\n  public get canCloseQuote(): boolean {\r\n    return this._quote.statusCode === 1 && this._quote.willCall;\r\n  }\r\n\r\n  public get editVisibility(): boolean {\r\n    return this.quote.stateCode === 1;\r\n  }\r\n\r\n  public get canEditQuote(): boolean {\r\n    return this._quote.statusCode === 1;\r\n  }\r\n\r\n  public get currencyPipe() {\r\n    return UIConstants.CurrencyPipe;\r\n  }\r\n  //#endregion\r\n\r\n  //#region private\r\n  private closeQuote(quoteState: 2 | 3): void {\r\n    this.setOpportunity().subscribe(done => {\r\n      const message = 'Do you want to close the opportunity ' + this._opportunity.title;\r\n      const acceptLabel = 'Yes';\r\n      const rejectLabel = 'No';\r\n      this._dialogService.showConfirmationDialog(message, acceptLabel, rejectLabel)\r\n        .subscribe(response => {\r\n          const payload = {\r\n            quoteId: this._quote.id,\r\n            closeOpportunity: response\r\n          };\r\n          this._quotesService.closeQuote(payload, quoteState)\r\n            .subscribe(response => {\r\n              this.dataUpdated.emit();\r\n              this._quotesService.getQuoteById(this._quote.id)\r\n                .subscribe((quote) => {\r\n                  this._quote = quote;\r\n                });\r\n            });\r\n        });\r\n    });\r\n\r\n  }\r\n\r\n  private setOpportunity(): Observable<any> {\r\n    return new Observable<any>(observer => {\r\n      if (this._opportunity) {\r\n        observer.next(this._opportunity);\r\n      } else {\r\n        this._opportunityService.getOpportunityById(this._quote.opportunityId)\r\n          .subscribe(opportunity => {\r\n            this._opportunity = opportunity;\r\n            observer.next(this._opportunity);\r\n          });\r\n      }\r\n    });\r\n  }\r\n\r\n  //#endregion\r\n\r\n  logger() {\r\n    console.log(this._quote);\r\n  }\r\n}\r\n","<div class=\"quote-summary\" *ngIf=\"quoteSet\">\r\n        <div class=\"quote-info row align-items-center\">\r\n      \r\n          <div class=\"col-12 col-lg-12 quote-details\">\r\n            <div class=\"quote-actions\">\r\n              <button class=\"btn-success \" (click)=\"setQuoteAsWon()\" *ngIf=\"canEditQuote\" [disabled]=\"!canCloseQuote\"\r\n                [ngClass]=\"{'disabled':!canCloseQuote}\">\r\n                <span class=\"ic-icon-status\"><img src=\"../../../assets/images/icons/ic-won.svg\" /></span>\r\n                <span class=\"button-label\">Won</span>\r\n              </button>\r\n      \r\n              <button class=\"btn-danger \" (click)=\"setQuoteAsLost()\" *ngIf=\"canEditQuote\" [disabled]=\"!canCloseQuote\"\r\n                [ngClass]=\"{'disabled':!canCloseQuote}\">\r\n                <span class=\"ic-icon-status\"><img src=\"../../../assets/images/icons/ic-lost.svg\" /></span>\r\n                <span class=\"button-label\">Lost</span>\r\n              </button>\r\n      \r\n      \r\n              <button class=\"btn-print \" (click)=\"setQuoteAsSentToCustomer()\">\r\n                <span class=\"ic-icon-status\"><img src=\"../../../assets/images/icons/ic-won.svg\" /></span>\r\n                <span class=\"button-label\">Print For Customer</span>\r\n              </button>\r\n            </div>\r\n      \r\n            <div class=\"col-12 col-lg-12 quote-status\">\r\n              <span class=\"label\">Status: </span>\r\n              <span class=\"item-info\"> {{quote.statusCodeDisplay}}</span>\r\n            </div>\r\n      \r\n            <div *ngFor=\"let product of quote.products\" class=\"info product\">\r\n              <div>\r\n                <span class=\"label\"> {{product.title}}</span>\r\n              </div>\r\n              <div>\r\n                <span class=\"label\">Covered in Case of </span>\r\n                <span class=\"item-info\"> {{product.covers}}</span>\r\n              </div>\r\n              <div>\r\n                <span class=\"label\">Target:</span>\r\n                <span class=\"item-info\">\r\n                  {{product.target | currency:currencyPipe.CurrencyCode:currencyPipe.Display: currencyPipe.DigitsInfo}}\r\n                </span>\r\n              </div>\r\n              <div>\r\n                <span class=\"label\">Premium:</span>\r\n                <span class=\"item-info\">\r\n                  {{product.premium | currency:currencyPipe.CurrencyCode:currencyPipe.Display: currencyPipe.DigitsInfo}}\r\n                </span>\r\n              </div>\r\n            </div>\r\n          </div>\r\n      \r\n        </div>\r\n      \r\n        <div class=\"quote-footer row pt-4 pt-lg-0\">\r\n          <div class=\"col-4 edit-btn-div\">\r\n            <span [ngClass]=\"{'disabled':!canEditQuote}\" class=\"edit-quote-action edit-link\" (click)=\"editQuote()\">Edit\r\n            </span>\r\n          </div>\r\n          <div class=\"col-8 text-right\">\r\n            <div>\r\n              <span class=\"label\">First Annual Premium:</span>\r\n              <span class=\"item-info\">\r\n                {{quote.totalAmount | currency:currencyPipe.CurrencyCode:currencyPipe.Display: currencyPipe.DigitsInfo}}\r\n              </span>\r\n            </div>\r\n            <span class=\"quote-creation-date\">Created on:\r\n              {{quote.createdDate   | date: 'dd MMMM yyyy'}}</span>\r\n          </div>\r\n        </div>\r\n      \r\n      </div>\r\n      \r\n      <div class=\"dataLoader\" *ngIf=\"!quoteSet\">\r\n        Loading...\r\n      </div>\r\n      ","import {\r\n    SimpleChanges,\r\n    EventEmitter,\r\n    Input,\r\n    Output,\r\n    OnInit,\r\n    OnChanges,\r\n    ViewEncapsulation,\r\n    Component\r\n} from '@angular/core';\r\nimport { SharedStoreConstants, EventTypes } from '../../crm-constants';\r\nimport { SharedStore } from '../../services/sharedStore.service';\r\nimport { OpportunitiesService } from '../../services/opportunities.service';\r\nimport { QuotationsService } from '../../services/quotations.service';\r\nimport { EventPayload, Utils } from '@bsynchro/common';\r\n\r\n@Component({\r\n    selector: 'app-quote-repeater',\r\n    templateUrl: './quote-repeater.component.html',\r\n    styleUrls: ['./quote-repeater.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    providers: [QuotationsService, OpportunitiesService]\r\n})\r\nexport class QuoteRepeaterComponent implements OnInit, OnChanges {\r\n    @Input() opportunityId: string;\r\n    @Input() opportunity: any; // Object\r\n\r\n    @Output() dataUpdated: EventEmitter<any> = new EventEmitter<any>();\r\n    @Output() quoteRepeaterEvents: EventEmitter<EventPayload> = new EventEmitter();\r\n    //#region  private fields\r\n    private _quotations: Array<any>;\r\n    private _quotationsSet: boolean;\r\n    //#endregion\r\n\r\n    constructor(\r\n        private _quotesService: QuotationsService,\r\n        private _opportunityService: OpportunitiesService,\r\n        private _sharedStore: SharedStore\r\n    ) {\r\n        this._quotationsSet = false;\r\n    }\r\n\r\n    //#region  hooks\r\n    ngOnInit() { }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes[\"opportunity\"] && !Utils.isNullOrUndefined(changes[\"opportunity\"].currentValue)) {\r\n            this.getQuotes(this.opportunity.id);\r\n        }\r\n\r\n        if (changes[\"opportunityId\"] && !Utils.isNullOrUndefined(changes[\"opportunityId\"].currentValue)) {\r\n            this.getQuotes(this.opportunityId);\r\n            this._opportunityService.getOpportunityById(this.opportunityId).subscribe((opportunity) => {\r\n                this.opportunity = opportunity;\r\n            });\r\n        }\r\n    }\r\n\r\n    //#endregion\r\n\r\n    //#region  Actions\r\n    public addSimulation(): void {\r\n        this._sharedStore.set(SharedStoreConstants.IsSimulationEditMode, false);\r\n        this._sharedStore.set(SharedStoreConstants.OpportunityId, this.opportunity.id);\r\n        // this._router.navigate([CoreConstants.Route.Main, CoreConstants.Route.Simulation,\r\n        // SimulationConstants.Route.SimulationContactFrom, this.opportunity.contactId]);\r\n        this.quoteRepeaterEvents.emit(new EventPayload(this.opportunity.contactId, EventTypes.AddSimulation));\r\n    }\r\n\r\n    public refreshData(): void {\r\n        // to be called from parent component\r\n        this._quotesService.getQuotationsByOpportunityId(this.opportunity.id).subscribe((quotations) => {\r\n            this._quotations = quotations;\r\n            this._quotationsSet = true;\r\n        });\r\n    }\r\n    //#endregion\r\n\r\n    //#region  properties\r\n    public get quotations(): any {\r\n        return this._quotations;\r\n    }\r\n\r\n    public get quotationsSet(): boolean {\r\n        return this._quotationsSet;\r\n    }\r\n    public get canAddSimulation(): boolean {\r\n        return this.opportunity.stateCode === 1;\r\n    }\r\n    //#endregion\r\n\r\n    //#region private\r\n    private getQuotes(opportunityId): void {\r\n        this._quotesService.getQuotationsByOpportunityId(opportunityId).subscribe((quotations) => {\r\n            this._quotations = quotations;\r\n            this._quotationsSet = true;\r\n        });\r\n    }\r\n    //#endregion\r\n\r\n    //#region Events\r\n    public onQuoteDataUpdated($event): void {\r\n        this.dataUpdated.emit();\r\n    }\r\n    public onQuoteEdited(event: EventPayload): void {\r\n        this.quoteRepeaterEvents.emit(event);\r\n    }\r\n\r\n    //#endregion\r\n}\r\n","<div class=\"quotations-list pt-4\" *ngIf=\"quotationsSet\">\r\n  <div class=\"quotations-repeater-header row align-items-center\">\r\n    <span class=\"col-7 title\"> Quotations</span>\r\n    <span class=\"add-quote-action edit-link col-5 add-cna-action text-right\" *ngIf=\"canAddSimulation\"\r\n      (click)=\"addSimulation()\">+ Add Simulation</span>\r\n  </div>\r\n  <div *ngFor=\"let quote of quotations\" class=\"quote-item\">\r\n    <app-quote-view (quoteViewEvents)=\"onQuoteEdited($event)\" (dataUpdated)=\"onQuoteDataUpdated($event)\" [quote]=\"quote\"></app-quote-view>\r\n  </div>\r\n</div>\r\n\r\n<div class=\"dataLoader\" *ngIf=\"!quotationsSet\">\r\n  Loading...\r\n</div>","import { EventEmitter, OnInit, ViewEncapsulation, ViewChild, Output, Component, Inject, Input } from '@angular/core';\r\nimport { ActivatedRoute, Params } from '@angular/router';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { OpportunitiesService } from '../../services/opportunities.service';\r\nimport { OpportunitySummaryComponent } from '../opportunity-summary/opportunity-summary.component';\r\nimport { QuoteRepeaterComponent } from '../quote-repeater/quote-repeater.component';\r\nimport { OpportunityState, EventTypes, OpportunitiesConstants, CRM_API_CONSTANTS, ContactViewProperties } from '../../crm-constants';\r\nimport { CalendarComponent } from '../calendar/calendar.component';\r\nimport { Observable } from 'rxjs';\r\nimport { ApiService, EventPayload } from '@bsynchro/common';\r\nimport { Options } from '../../models/common/Options';\r\n\r\n@Component({\r\n    // tslint:disable-next-line: component-selector\r\n    selector: 'app-opportunity-view',\r\n    templateUrl: './opportunity-view.component.html',\r\n    styleUrls: ['./opportunity-view.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    providers: [OpportunitiesService]\r\n})\r\nexport class OpportunityViewComponent implements OnInit {\r\n    @ViewChild(OpportunitySummaryComponent, { static: false })\r\n    opportunitySummaryComponent: OpportunitySummaryComponent;\r\n    @ViewChild(QuoteRepeaterComponent, { static: false })\r\n    quoteRepeaterComponent: QuoteRepeaterComponent;\r\n    @ViewChild('calendar', { static: false })\r\n    calendar: CalendarComponent;\r\n\r\n    @Input() showEditOpportunityButton = true;\r\n    @Input() closeOpportunityBasedOnQuotations = true;\r\n    @Input() showCloseOpportunityButton = true;\r\n    @Input() showWonAmdLoseOpportunityButtons = false;\r\n    @Input() options: Options;\r\n\r\n    @Input() showAddActivityAction = true;\r\n    @Input() showEditActivityAction = true;\r\n    @Input() showCompleteActivityAction = true;\r\n    @Input() showDismissActivityAction = true;\r\n\r\n    @Input() showEditContactButton = false;\r\n\r\n    @Input() showViewQuotationLink = false;\r\n\r\n    @Input() contactHiddenProperties:ContactViewProperties[] = [];\r\n\r\n    @Output() opportunityViewEvents: EventEmitter<EventPayload> = new EventEmitter();\r\n    @Output() viewQuotations: EventEmitter<any> = new EventEmitter<any>();\r\n    @Output() opportunityLoadedSuccessfully: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n    //#region private fields\r\n    private _contactId: string;\r\n    private _opportunity: any;\r\n    private _opportunityId: string;\r\n    //#endregion\r\n\r\n    //#region public fields\r\n    public contact: any;\r\n    public activities: Array<any>;\r\n    public selectedDate: string;\r\n    //#endregion\r\n\r\n    constructor(\r\n        public httpClient: HttpClient,\r\n        private _activatedRoute: ActivatedRoute,\r\n        private _opportunityService: OpportunitiesService,\r\n        // tslint:disable-next-line: align\r\n        @Inject('environment') private _environment: any\r\n    ) { }\r\n\r\n    //#region  hooks\r\n    public ngOnInit(): void {\r\n        this._activatedRoute.params.subscribe((params: Params) => {\r\n            const id = params[OpportunitiesConstants.Route.Id];\r\n            if (id) {\r\n                this._opportunityId = id;\r\n                this._opportunityService.getOpportunityById(id).subscribe((opportunity) => {\r\n                    this._contactId = opportunity.contactId;\r\n                    this._opportunity = opportunity;\r\n                    this.getContactById(this._contactId).subscribe((contact) => {\r\n                        this.contact = contact;\r\n                        this.opportunityLoadedSuccessfully.emit(true);\r\n                    });\r\n\r\n                });\r\n            } else {\r\n                this.opportunityViewEvents.emit(new EventPayload(EventTypes.Opportunities, true)); // exit\r\n            }\r\n        });\r\n    }\r\n    //#endregion\r\n\r\n    //#region properties\r\n    public get contactId(): string {\r\n        return this._contactId;\r\n    }\r\n\r\n    public get opportunity(): any {\r\n        return this._opportunity;\r\n    }\r\n    public get opportunityId(): any {\r\n        return this._opportunityId;\r\n    }\r\n\r\n    //#endregion\r\n\r\n    //#region UI\r\n    public addActivityVisibility(): boolean {\r\n        return this._opportunity && this._opportunity.stateCode === OpportunityState.Open;\r\n    }\r\n    //#endregion\r\n\r\n    //#region Actions\r\n\r\n    public getContactById(contactId): Observable<any> {\r\n        return new Observable((observer) => {\r\n            const api = new ApiService(this.httpClient, this._environment.CRM);\r\n            api.get(CRM_API_CONSTANTS.Controller.Contact, contactId).subscribe((contact) => {\r\n                if ((contact as any).id) {\r\n                    observer.next(contact);\r\n                } else {\r\n                    observer.next(null);\r\n                }\r\n            });\r\n        });\r\n    }\r\n\r\n    public back(): void {\r\n        // this._router.navigate([CoreConstants.Route.Main, CoreConstants.Route.Opportunities]);\r\n        this.opportunityViewEvents.emit(new EventPayload(EventTypes.Opportunities, true));\r\n    }\r\n\r\n    public emiViewQuotationEvent(): void {\r\n        this.viewQuotations.emit(this._opportunityId);\r\n    }\r\n\r\n    public addActivity(): void {\r\n        // this._coreService.showRightSidebar([CoreConstants.Route.Activity, ActivityConstants.Route.OpportunityList, this._opportunity.id]);\r\n        this.opportunityViewEvents.emit(new EventPayload(EventTypes.OpportunityAddNewActivity,this._opportunity.id,));\r\n    }\r\n\r\n    public emitEvent(event: EventPayload) {\r\n        this.opportunityViewEvents.emit(event);\r\n    }\r\n    //#endregion\r\n\r\n    //#region  event calendar - list\r\n    public updateDayEvents(event: any): void {\r\n        this.activities = event;\r\n    }\r\n    public updateSelectedDate(event: any): void {\r\n        this.selectedDate = event;\r\n    }\r\n\r\n    public refetchEvents() {\r\n        this.calendar.refetchEvents();\r\n    }\r\n\r\n    //#endregion\r\n\r\n    //#region private\r\n\r\n    //#endregion\r\n\r\n    //#region Events\r\n    public onOpportunityDataUpdated(event): void {\r\n        this.quoteRepeaterComponent.refreshData();\r\n    }\r\n\r\n    public onQuotesDataUpdated($event): void {\r\n        this.opportunitySummaryComponent.refreshData();\r\n    }\r\n    //#endregion\r\n}\r\n","<div class=\"opportunity-view container-fluid\">\r\n  <div class=\"row\">\r\n    <div class=\"header col-12\">\r\n      <label class=\"back-to-opportunitiesList back\" (click)=\"back()\"> back</label>\r\n    </div>\r\n  </div>\r\n\r\n\r\n  <div class=\"row\">\r\n    <div class=\"col-12 col-lg-8 contact-summary-section  contact-cna-opportunities \">\r\n      <div class=\"container-fluid p-0\">\r\n        <div class=\"row\">\r\n          <div class=\"col-12 col-box  py-0\">\r\n            <app-contact-summary [contactId]=\"contactId\" [showEditContactButton]=\"showEditContactButton\" (contactSummaryEvents)=\"emitEvent($event)\"\r\n            [hiddenProperties]=\"contactHiddenProperties\">\r\n            </app-contact-summary>\r\n          </div>\r\n          <div class=\"col-12  col-box mt-4 pl-0 pr-0 pr-lg-2  py-0\">\r\n            <app-opportunity-summary (dataUpdated)=\"onOpportunityDataUpdated($event)\" [opportunity]=\"opportunity\"\r\n              [showEditOpportunityButton]=\"showEditOpportunityButton\"\r\n              [closeOpportunityBasedOnQuotations]=\"closeOpportunityBasedOnQuotations\"\r\n              [showCloseOpportunityButton]=\"showCloseOpportunityButton\" [showWonAmdLoseOpportunityButtons]=\"showWonAmdLoseOpportunityButtons\" (opportunitySummaryEvents)=\"emitEvent($event)\">\r\n            </app-opportunity-summary>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"col-12 col-lg-4 px-0 pt-5 py-lg-0 pl-lg-5 pb-0 contact-activities \">\r\n      <app-calendar #calendar [options]=\"options\" [showLegend]=\"false\" (dayEvents)=\"updateDayEvents($event)\" [opportunityId]=\"opportunityId\"\r\n        (selectedDate)=\"updateSelectedDate($event)\">\r\n      </app-calendar>\r\n      <button class=\"btn add-activity\" type=\"button\"\r\n        *ngIf=\"addActivityVisibility() && !contact?.hidden && showAddActivityAction\">\r\n        <i aria-hidden=\"true\" class=\"fa fa-plus\" (click)=\"addActivity()\"></i>\r\n      </button>\r\n      <app-event-list [loggedInUserId]=\"options.loggedInUserId\" [showEditActivityAction]=\"showEditActivityAction\"\r\n        [showCompleteActivityAction]=\"showCompleteActivityAction\"\r\n        [showDismissActivityAction]=\"showDismissActivityAction\" [rows]=\"activities\" [date]=\"selectedDate\"\r\n        [showHeader]=\"false\" scrollHeight=\"100px\" (eventListEvent)=\"emitEvent($event)\">\r\n      </app-event-list>\r\n      <!-- <app-quote-repeater (quoteRepeaterEvents)=\"emitEvent($event)\" (dataUpdated)=\"onQuotesDataUpdated($event)\" [opportunity]=\"opportunity\">\r\n    </app-quote-repeater> -->\r\n    </div>\r\n    <div class=\"header col-12\">\r\n      <label *ngIf=\"showViewQuotationLink\" class=\"back-to-opportunitiesList back\" (click)=\"emiViewQuotationEvent()\">\r\n        view quotations</label>\r\n    </div>\r\n    <!-- <div class=\"col-md-4 col-lg-3 contact-activities\"> -->\r\n    <!-- <div class=\"row text-right pb-3\" *ngIf=\"addActivityVisibility()\">\r\n      <div class=\"col-12\">\r\n        <span class=\"add-activity-action edit-link\" *ngIf=\"!contact?.hidden && showAddActivityAction\" (click)=\"addActivity()\"> + Add\r\n          Activity</span>\r\n      </div>\r\n    </div> \r\n\r\n   \r\n \r\n  </div> -->\r\n\r\n  </div>\r\n</div>\r\n","export class PrintoutModel {\r\n    public Title?: string;\r\n    public LanguageId?: number;\r\n    public Model?: any;\r\n    public BodyTemplateFileName?: string;\r\n    public HeaderTemplateFileName?: string;\r\n    public FooterTemplateFileName?: string;\r\n    public Options?: {[key:string]: string};\r\n}","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class CRMService {\r\n\r\n    constructor() { }\r\n\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { ActivityService } from './services/activity.service';\r\nimport { OpportunitiesService } from './services/opportunities.service';\r\nimport { ContactsService } from './services/contacts.service';\r\nimport { ActivityManagementService } from './services/activity-management.service';\r\nimport { ActivityComponent } from './components/activity/activity.component';\r\nimport { ActivityDetailComponent } from './components/activity-detail/activity-detail.component';\r\nimport { ActivityCompleteComponent } from './components/activity-complete/activity-complete.component';\r\nimport { ActivityOpportunityComponent } from './components/activity-opportunity/activity-opportunity.component';\r\nimport { ActivityPostponeComponent } from './components/activity-postpone/activity-postpone.component';\r\nimport { EventListComponent } from './components/event-list/event-list.component';\r\nimport { EventPlannerComponent } from './components/event-planner/event-planner.component';\r\nimport { CalendarComponent } from './components/calendar/calendar.component';\r\nimport { ContactViewComponent } from './components/contact-view/contact-view.component';\r\nimport { ContactSummaryComponent } from './components/contact-summary/contact-summary.component';\r\nimport { OpportunitySummaryComponent } from './components/opportunity-summary/opportunity-summary.component';\r\nimport { OpportunitiesRepeaterComponent } from './components/opportunities-repeater/opportunities-repeater.component';\r\nimport { ContactCnaSummaryComponent } from './components/contact-cna-summary/contact-cna-summary.component';\r\nimport { QuoteViewComponent } from './components/quote-view/quote-view.component';\r\nimport { QuoteRepeaterComponent } from './components/quote-repeater/quote-repeater.component';\r\nimport { OpportunityViewComponent } from './components/opportunity-view/opportunity-view.component';\r\nimport { VirtualScrollerModule } from 'primeng/virtualscroller';\r\nimport { FullCalendarModule } from '@fullcalendar/angular'; // must go before plugins\r\nimport dayGridPlugin from '@fullcalendar/daygrid'; // a plugin!\r\nimport interactionPlugin from '@fullcalendar/interaction'; // a plugin!\r\nimport { TabViewModule } from 'primeng/tabview';\r\nimport { SelectButtonModule } from 'primeng/selectbutton';\r\nimport { AutoCompleteModule } from 'primeng/autocomplete';\r\nimport { InputMaskModule } from 'primeng/inputmask';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { SpinnerModule } from 'primeng/spinner';\r\nimport { RadioButtonModule } from 'primeng/radiobutton';\r\nimport { CalendarModule } from 'primeng/calendar';\r\nimport { InputTextareaModule } from 'primeng/inputtextarea';\r\nimport { MenuModule } from 'primeng/menu';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { CRMService } from './services/crm.service';\r\nimport { SharedStore } from './services/sharedStore.service';\r\nimport { SalesManagerSelectionComponent } from './components/sales-manager-selection/sales-manager-selection.component';\r\nimport { ToggleButtonModule } from 'primeng/togglebutton';\r\nimport { DatalistModule, PhoneNumberModule, FormControlModule, TranslationModule, PipesModule } from '@bsynchro/common';\r\n\r\nFullCalendarModule.registerPlugins([ // register FullCalendar plugins\r\n    dayGridPlugin,\r\n    interactionPlugin\r\n]);\r\n\r\n@NgModule({\r\n    declarations: [\r\n        ActivityComponent,\r\n        ActivityDetailComponent,\r\n        ActivityCompleteComponent,\r\n        ActivityOpportunityComponent,\r\n        ActivityPostponeComponent,\r\n        EventListComponent,\r\n        EventPlannerComponent,\r\n        CalendarComponent,\r\n        ContactSummaryComponent,\r\n        ContactViewComponent,\r\n        OpportunitySummaryComponent,\r\n        OpportunitiesRepeaterComponent,\r\n        OpportunityViewComponent,\r\n        ContactCnaSummaryComponent,\r\n        QuoteViewComponent,\r\n        QuoteRepeaterComponent,\r\n        SalesManagerSelectionComponent\r\n    ],\r\n    imports: [\r\n        DatalistModule,\r\n        CommonModule,\r\n        TabViewModule,\r\n        SelectButtonModule,\r\n        AutoCompleteModule,\r\n        InputMaskModule,\r\n        DropdownModule,\r\n        InputTextareaModule,\r\n        RadioButtonModule,\r\n        SpinnerModule,\r\n        ReactiveFormsModule,\r\n        FormsModule,\r\n        CalendarModule,\r\n        VirtualScrollerModule,\r\n        FullCalendarModule,\r\n        MenuModule,\r\n        MultiSelectModule,\r\n        ToggleButtonModule,\r\n        PhoneNumberModule,\r\n        FormControlModule,\r\n        TranslationModule,\r\n        PipesModule\r\n    ],\r\n    providers: [\r\n        ContactsService,\r\n        OpportunitiesService,\r\n        ActivityService,\r\n        ActivityManagementService,\r\n        SharedStore,\r\n        CRMService\r\n    ],\r\n    exports: [\r\n        ActivityComponent,\r\n        ActivityDetailComponent,\r\n        ActivityCompleteComponent,\r\n        ActivityOpportunityComponent,\r\n        ActivityPostponeComponent,\r\n        EventListComponent,\r\n        EventPlannerComponent,\r\n        CalendarComponent,\r\n        ContactSummaryComponent,\r\n        ContactViewComponent,\r\n        OpportunitySummaryComponent,\r\n        OpportunitiesRepeaterComponent,\r\n        OpportunityViewComponent,\r\n        ContactCnaSummaryComponent,\r\n        QuoteViewComponent,\r\n        QuoteRepeaterComponent,\r\n        SalesManagerSelectionComponent\r\n    ]\r\n})\r\nexport class BSynchroCrmModule { }\r\n","/*\r\n * Public API Surface of bsynchro-crm\r\n */\r\n// components\r\nexport * from './lib/components/calendar/calendar.component';\r\nexport * from './lib/components/event-list/event-list.component';\r\nexport * from './lib/components/event-planner/event-planner.component';\r\nexport * from './lib/services/activity.service';\r\nexport * from './lib/components/activity/activity.component';\r\nexport * from './lib/components/activity-complete/activity-complete.component';\r\nexport * from './lib/components/activity-detail/activity-detail.component';\r\nexport * from './lib/components/activity-opportunity/activity-opportunity.component';\r\nexport * from './lib/components/activity-postpone/activity-postpone.component';\r\nexport * from './lib/components/calendar/calendar.component';\r\nexport * from './lib/components/event-list/event-list.component';\r\nexport * from './lib/components/event-planner/event-planner.component';\r\nexport * from './lib/components/contact-view/contact-view.component';\r\nexport * from './lib/components/contact-summary/contact-summary.component';\r\nexport * from './lib/components/opportunities-repeater/opportunities-repeater.component';\r\nexport * from './lib/components/opportunity-summary/opportunity-summary.component';\r\nexport * from './lib/components/contact-cna-summary/contact-cna-summary.component';\r\nexport * from './lib/components/quote-repeater/quote-repeater.component';\r\nexport * from './lib/components/quote-view/quote-view.component';\r\nexport * from './lib/components/opportunity-view/opportunity-view.component';\r\nexport * from './lib/components/sales-manager-selection/sales-manager-selection.component';\r\n\r\n// services\r\nexport * from './lib/services/contacts.service';\r\nexport * from './lib/services/opportunities.service';\r\nexport * from './lib/services/activity.service';\r\nexport * from './lib/services/activity-management.service';\r\nexport * from './lib/services/quotations.service';\r\nexport * from './lib/services/printout.service';\r\nexport * from './lib/services/sharedStore.service';\r\nexport * from './lib/services/blacklist.service';\r\n\r\n// constants\r\nexport * from './lib/crm-constants';\r\n\r\n// models\r\nexport * from './lib/models/calendar/CalendarOptions';\r\nexport * from './lib/models/events/ActivityListEvent';\r\nexport * from './lib/models/events/CalendarEvent';\r\nexport * from './lib/models/events/EventBase';\r\nexport * from './lib/models/printout/PrintoutModel';\r\nexport * from './lib/models/common/Options';\r\nexport * from './lib/models/sale-manager-selection/mode.enum';\r\nexport * from './lib/models/sale-manager-selection/salesManagerSelectionSettings';\r\n\r\n// module\r\nexport * from './lib/bsynchro-crm.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["moment","i1","i2.ActivityService","i3","i4","i5","i6","i7","i1.CalendarComponent","i2.EventListComponent","i2","i1.ContactsService","i2.OpportunitiesService","Subscription","i2.ActivityManagementService","i8","i4.ActivityManagementService","i5.BlacklistService","i7.SalesManagerSelectionComponent","i9","i10","i11","i12","i13","i15","i16","Observable","i3.QuotationsService","i3.ActivityService","i1.ActivityService","i2.ContactsService","i3.ActivityManagementService","i7.ActivityCompleteComponent","i8.ActivityDetailComponent","i9.ActivityOpportunityComponent","i10.ActivityPostponeComponent","i1.OpportunitiesService","i2.QuotationsService","i3.OpportunitySummaryComponent","i3.ContactSummaryComponent","i4.ContactCnaSummaryComponent","i5.OpportunitiesRepeaterComponent","i6.CalendarComponent","i7.EventListComponent","i1.QuotationsService","i3.OpportunitiesService","i4.SharedStore","i3.SharedStore","i4.QuoteViewComponent","i4.ContactSummaryComponent","i5.OpportunitySummaryComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAa,iBAAiB,CAAA;;AACnB,iBAAA,CAAA,MAAM,IAAG,EAAA,GAAA,MAAA;AAqDf,KAAA;AApD0B,IAAA,EAAA,CAAA,OAAO,GAAG,EAAG;AACb,IAAA,EAAA,CAAA,IAAI,GAAG,MAAO;AACd,IAAA,EAAA,CAAA,IAAI,GAAG,MAAO;AACd,IAAA,EAAA,CAAA,GAAG,GAAG,KAAM;AACZ,IAAA,EAAA,CAAA,MAAM,GAAG,QAAS;;AAGlB,IAAA,EAAA,CAAA,MAAM,GAAG,QAAS;;AAGlB,IAAA,EAAA,CAAA,iBAAiB,GAAG,mBAAoB;AACxC,IAAA,EAAA,CAAA,kBAAkB,GAAG,oBAAqB;;AAG1C,IAAA,EAAA,CAAA,eAAe,GAAG,SAAU;AAC5B,IAAA,EAAA,CAAA,gBAAgB,GAAG,UAAW;AAC9B,IAAA,EAAA,CAAA,eAAe,GAAG,iBAAkB;AACpC,IAAA,EAAA,CAAA,oBAAoB,GAAG,sBAAuB;AAC9C,IAAA,EAAA,CAAA,yBAAyB,GAAG,2BAA4B;;AAIxD,IAAA,EAAA,CAAA,kBAAkB,GAAG,oBAAqB;AAC1C,IAAA,EAAA,CAAA,qBAAqB,GAAG,uBAAwB;AAChD,IAAA,EAAA,CAAA,aAAa,GAAG,eAAgB;AAChC,IAAA,EAAA,CAAA,cAAc,GAAG,gBAAiB;AAClC,IAAA,EAAA,CAAA,iBAAiB,GAAG,mBAAoB;AACxC,IAAA,EAAA,CAAA,qBAAqB,GAAG,uBAAwB;AAChD,IAAA,EAAA,CAAA,gBAAgB,GAAG,kBAAmB;;AAGtC,IAAA,EAAA,CAAA,cAAc,GAAG,gBAAiB;AAClC,IAAA,EAAA,CAAA,yBAAyB,GAAG,SAAU;AACtC,IAAA,EAAA,CAAA,UAAU,GAAG,YAAa;AAC1B,IAAA,EAAA,CAAA,eAAe,GAAG,iBAAkB;;AAGpC,IAAA,EAAA,CAAA,gBAAgB,GAAG,kBAAmB;AACtC,IAAA,EAAA,CAAA,mBAAmB,GAAG,qBAAsB;;AAG5C,IAAA,EAAA,CAAA,2BAA2B,GAAG,6BAA8B;AAC5D,IAAA,EAAA,CAAA,QAAQ,GAAG,UAAW;AACtB,IAAA,EAAA,CAAA,SAAS,GAAG,WAAY;AACxB,IAAA,EAAA,CAAA,iBAAiB,GAAG,mBAAoB;;AAGxC,IAAA,EAAA,CAAA,gBAAgB,GAAG,kBAAmB;;AAGtC,IAAA,EAAA,CAAA,cAAc,GAAG,gBAAiB;AAE5D,IAAA,EAAA,CAAA,CAAA;AAEM,iBAAA,CAAA,UAAU,IAAG,EAAA,GAAA,MAAA;AASnB,KAAA;AAR0B,IAAA,EAAA,CAAA,OAAO,GAAG,SAAU;AACpB,IAAA,EAAA,CAAA,QAAQ,GAAG,UAAW;AACtB,IAAA,EAAA,CAAA,WAAW,GAAG,aAAc;AAC5B,IAAA,EAAA,CAAA,UAAU,GAAG,YAAa;AAC1B,IAAA,EAAA,CAAA,IAAI,GAAG,MAAO;AACd,IAAA,EAAA,CAAA,UAAU,GAAG,WAAY;AACzB,IAAA,EAAA,CAAA,QAAQ,GAAG,UAAW;AACtB,IAAA,EAAA,CAAA,GAAG,GAAG,aAAc;AAC9C,IAAA,EAAA,CAAA,CAAA;AAGM,iBAAA,CAAA,KAAK,IAAG,EAAA,GAAA,MAAA;AAUd,KAAA;AATwB,IAAA,EAAA,CAAA,OAAO,GAAG,SAAU;AACpB,IAAA,EAAA,CAAA,cAAc,GAAG,gBAAiB;AAClC,IAAA,EAAA,CAAA,YAAY,GAAG,cAAe;AAC9B,IAAA,EAAA,CAAA,aAAa,GAAG,eAAgB;AAChC,IAAA,EAAA,CAAA,SAAS,GAAG,WAAY;AACxB,IAAA,EAAA,CAAA,EAAE,GAAG,KAAM;AACX,IAAA,EAAA,CAAA,YAAY,GAAG,cAAe;AAC9B,IAAA,EAAA,CAAA,SAAS,GAAG,WAAY;AACxB,IAAA,EAAA,CAAA,OAAO,GAAG,SAAU;AAC5C,IAAA,EAAA,CAAA,CAAA;AAED;AACO,iBAAA,CAAA,KAAK,IAAG,EAAA,GAAA,MAAA;AAEd,KAAA;AADwB,IAAA,EAAA,CAAA,EAAE,GAAG,IAAK;AAClC,IAAA,EAAA,CAAA,CAAA;AAEM,iBAAA,CAAA,QAAQ,IAAG,EAAA,GAAA,MAAA;AAUjB,KAAA;AATwB,IAAA,EAAA,CAAA,KAAK,GAAG,GAAI;AACZ,IAAA,EAAA,CAAA,EAAE,GAAG,IAAK;AACV,IAAA,EAAA,CAAA,EAAE,GAAG,GAAI;AACT,IAAA,EAAA,CAAA,GAAG,GAAG,IAAK;AACX,IAAA,EAAA,CAAA,EAAE,GAAG,GAAI;AACT,IAAA,EAAA,CAAA,GAAG,GAAG,IAAK;AACX,IAAA,EAAA,CAAA,QAAQ,GAAG,UAAW;AACtB,IAAA,EAAA,CAAA,UAAU,GAAG,YAAa;AAElD,IAAA,EAAA,CAAA,CAAA;AAML;MACa,sBAAsB,CAAA;;AAExB,sBAAA,CAAA,KAAK,IAAG,EAAA,GAAA,MAAA;AAMd,KAAA;AAL0B,IAAA,EAAA,CAAA,WAAW,GAAG,aAAc;AAC5B,IAAA,EAAA,CAAA,EAAE,GAAG,IAAK;AACV,IAAA,EAAA,CAAA,eAAe,GAAG,iBAAkB;AACpC,IAAA,EAAA,CAAA,SAAS,GAAG,WAAY;AACxB,IAAA,EAAA,CAAA,kBAAkB,GAAG,oBAAqB;AACpE,IAAA,EAAA,CAAA,CAAA;MAGQ,qBAAqB,CAAA;;AACH,qBAAW,CAAA,WAAA,GAAG,aAAa,CAAC;AAC5B,qBAAa,CAAA,aAAA,GAAG,eAAe,CAAC;AAChC,qBAAO,CAAA,OAAA,GAAG,SAAS,CAAC;AACpB,qBAAQ,CAAA,QAAA,GAAG,UAAU,CAAC;IAKzC,iBAIX;AAJD,CAAA,UAAY,gBAAgB,EAAA;AACxB,IAAA,gBAAA,CAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR,IAAA,gBAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAO,CAAA;AACP,IAAA,gBAAA,CAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACZ,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,GAI3B,EAAA,CAAA,CAAA,CAAA;AACD;AAGA;MACa,iBAAiB,CAAA;;AACZ,iBAAA,CAAA,aAAa,GAAG;AAC1B,IAAA,GAAG,EAAE;AACD,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,KAAK,EAAE,eAAe;AACzB,KAAA;AACD,IAAA,GAAG,EAAE;AACD,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,KAAK,EAAE,gBAAgB;AAC1B,KAAA;AACD,IAAA,GAAG,EAAE;AACD,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,KAAK,EAAE,kBAAkB;AAC5B,KAAA;AACD,IAAA,GAAG,EAAE;AACD,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,KAAK,EAAE,eAAe;AACzB,KAAA;AACD,IAAA,GAAG,EAAE;AACD,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,KAAK,EAAE,MAAM;AAChB,KAAA;CACJ,CAAA;AAEa,iBAAA,CAAA,iBAAiB,GAAG;AAC9B,IAAA,IAAI,EAAE,GAAG;AACT,IAAA,KAAK,EAAE,GAAG;AACV,IAAA,OAAO,EAAE,GAAG;AACZ,IAAA,IAAI,EAAE,GAAG;AACT,IAAA,IAAI,EAAE,GAAG;CACZ,CAAA;AAEa,iBAAA,CAAA,UAAU,IAAG,EAAA,GAAA,MAAA;AAE1B,KAAA;AAD0B,IAAA,EAAA,CAAA,eAAe,GAAG,SAAU;AACtD,IAAA,EAAA,CAAA,CAAA;AAEa,iBAAA,CAAA,KAAK,IAAG,EAAA,GAAA,MAAA;AAQrB,KAAA;AAP0B,IAAA,EAAA,CAAA,UAAU,GAAG,YAAa;AAC1B,IAAA,EAAA,CAAA,SAAS,GAAG,WAAY;AACxB,IAAA,EAAA,CAAA,aAAa,GAAG,eAAgB;AAChC,IAAA,EAAA,CAAA,QAAQ,GAAG,UAAW;AACtB,IAAA,EAAA,CAAA,gBAAgB,GAAG,UAAW;AAC9B,IAAA,EAAA,CAAA,WAAW,GAAG,SAAU;AACxB,IAAA,EAAA,CAAA,eAAe,GAAG,aAAc;AAC1D,IAAA,EAAA,CAAA,CAAA;AAEa,iBAAA,CAAA,IAAI,IAAG,EAAA,GAAA,MAAA;AAKpB,KAAA;AAJ0B,IAAA,EAAA,CAAA,eAAe,GAAG,iBAAkB;AACpC,IAAA,EAAA,CAAA,SAAS,GAAG,WAAY;AACxB,IAAA,EAAA,CAAA,WAAW,GAAG,aAAc;AAC5B,IAAA,EAAA,CAAA,kBAAkB,GAAG,oBAAqB;AACpE,IAAA,EAAA,CAAA,CAAA;AAGa,iBAAA,CAAA,aAAa,IAAG,EAAA,GAAA,MAAA;AAK7B,KAAA;AAJ0B,IAAA,EAAA,CAAA,mBAAmB,GAAG,CAAE;AACxB,IAAA,EAAA,CAAA,eAAe,GAAG,CAAE;AACpB,IAAA,EAAA,CAAA,kCAAkC,GAAG,CAAE;AACvC,IAAA,EAAA,CAAA,+BAA+B,GAAG,CAAE;AAC9D,IAAA,EAAA,CAAA,CAAA;IAKO,cAIX;AAJD,CAAA,UAAY,aAAa,EAAA;AACrB,IAAA,aAAA,CAAA,aAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAO,CAAA;AACP,IAAA,aAAA,CAAA,aAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa,CAAA;AACb,IAAA,aAAA,CAAA,aAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa,CAAA;AACjB,CAAC,EAJW,aAAa,KAAb,aAAa,GAIxB,EAAA,CAAA,CAAA,CAAA;IAEW,aAGX;AAHD,CAAA,UAAY,YAAY,EAAA;AACpB,IAAA,YAAA,CAAA,YAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,IAAA,YAAA,CAAA,YAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACR,CAAC,EAHW,YAAY,KAAZ,YAAY,GAGvB,EAAA,CAAA,CAAA,CAAA;AACD;AAGA;MACa,kBAAkB,CAAA;;AAE3B;AAEc,kBAAkB,CAAA,kBAAA,GAAG,CAAC,UAAU,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;AAEpE,kBAAA,CAAA,QAAQ,GAAG;AACrB,IAAA;AACI,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,KAAK,EAAE,SAAS;AACnB,KAAA;AACD,IAAA;AACI,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,KAAK,EAAE,cAAc;AACxB,KAAA;AACD,IAAA;AACI,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,KAAK,EAAE,OAAO;AACjB,KAAA;AACD,IAAA;AACI,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,KAAK,EAAE,UAAU;AACpB,KAAA;AACD,IAAA;AACI,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,KAAK,EAAE,UAAU;AACpB,KAAA;AACD,IAAA;AACI,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,KAAK,EAAE,SAAS;AACnB,KAAA;AACD,IAAA;AACI,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,KAAK,EAAE,SAAS;AACnB,KAAA;CACJ,CAAC;AAEY,kBAAA,CAAA,aAAa,GAAG;AAC1B,IAAA;AACI,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,KAAK,EAAE,QAAQ;AAClB,KAAA;AACD,IAAA;AACI,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,KAAK,EAAE,SAAS;AACnB,KAAA;AACD,IAAA;AACI,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,KAAK,EAAE,UAAU;AACpB,KAAA;AACD,IAAA;AACI,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,KAAK,EAAE,WAAW;AACrB,KAAA;AACD,IAAA;AACI,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,KAAK,EAAE,WAAW;AACrB,KAAA;AACD,IAAA;AACI,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,KAAK,EAAE,SAAS;AACnB,KAAA;CACJ,CAAC;AAEY,kBAAA,CAAA,aAAa,GAAG;AAC1B,IAAA;AACI,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,KAAK,EAAE,MAAM;AAChB,KAAA;AACD,IAAA;AACI,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,KAAK,EAAE,UAAU;AACpB,KAAA;AACD,IAAA;AACI,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,KAAK,EAAE,UAAU;AACpB,KAAA;CACJ,CAAC;AAEY,kBAAA,CAAA,YAAY,GAAG;AACzB,IAAA;AACI,QAAA,IAAI,EAAE,GAAG;AACT,QAAA,IAAI,EAAE,MAAM;AACf,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,GAAG;AACT,QAAA,IAAI,EAAE,OAAO;AAChB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,GAAG;AACT,QAAA,IAAI,EAAE,QAAQ;AACjB,KAAA;CACJ,CAAC;AAEK,kBAAA,CAAA,YAAY,IAAG,EAAA,GAAA,MAAA;AAerB,KAAA;AAd0B,IAAA,EAAA,CAAA,YAAY,GAAG,cAAe;AAC9B,IAAA,EAAA,CAAA,eAAe,GAAG,iBAAkB;AACpC,IAAA,EAAA,CAAA,WAAW,GAAG,aAAc;AAC5B,IAAA,EAAA,CAAA,gBAAgB,GAAG,kBAAmB;AACtC,IAAA,EAAA,CAAA,iBAAiB,GAAG,mBAAoB;AACxC,IAAA,EAAA,CAAA,gBAAgB,GAAG,kBAAmB;AACtC,IAAA,EAAA,CAAA,sBAAsB,GAAG,wBAAyB;AAClD,IAAA,EAAA,CAAA,sBAAsB,GAAG,wBAAyB;AAClD,IAAA,EAAA,CAAA,UAAU,GAAG,YAAa;AAE1B,IAAA,EAAA,CAAA,MAAM,GAAG,QAAS;AAClB,IAAA,EAAA,CAAA,QAAQ,GAAG,UAAW;AACtB,IAAA,EAAA,CAAA,SAAS,GAAG,UAAW;AACvB,IAAA,EAAA,CAAA,cAAc,GAAG,gBAAiB;AAC5D,IAAA,EAAA,CAAA,CAAA;MAIQ,UAAU,CAAA;;AACE,UAAoB,CAAA,oBAAA,GAAG,sBAAsB,CAAC;AAC9C,UAA6B,CAAA,6BAAA,GAAG,+BAA+B,CAAC;AAChE,UAAsB,CAAA,sBAAA,GAAG,wBAAwB,CAAC;AAClD,UAAgB,CAAA,gBAAA,GAAG,QAAQ,CAAC;AAC5B,UAAQ,CAAA,QAAA,GAAG,UAAU,CAAC;AACtB,UAAQ,CAAA,QAAA,GAAG,UAAU,CAAC;AACtB,UAAO,CAAA,OAAA,GAAG,SAAS,CAAC;AACpB,UAAc,CAAA,cAAA,GAAG,gBAAgB,CAAC;AAClC,UAAoB,CAAA,oBAAA,GAAG,sBAAsB,CAAC;AAC9C,UAAsB,CAAA,sBAAA,GAAG,wBAAwB,CAAC;AAClD,UAAsB,CAAA,sBAAA,GAAG,wBAAwB,CAAC;AAClD,UAAQ,CAAA,QAAA,GAAG,UAAU,CAAC;AACtB,UAAW,CAAA,WAAA,GAAG,aAAa,CAAC;AAC5B,UAAa,CAAA,aAAA,GAAG,eAAe,CAAC;AAChC,UAAc,CAAA,cAAA,GAAG,gBAAgB,CAAC;AAClC,UAAe,CAAA,eAAA,GAAG,iBAAiB,CAAC;AACpC,UAAgB,CAAA,gBAAA,GAAG,kBAAkB,CAAC;AACtC,UAAmB,CAAA,mBAAA,GAAG,qBAAqB,CAAC;AAC5C,UAAyB,CAAA,yBAAA,GAAG,2BAA2B,CAAC;AACxD,UAAM,CAAA,MAAA,GAAG,QAAQ,CAAC;AAClB,UAAO,CAAA,OAAA,GAAG,SAAS,CAAC;AACpB,UAAS,CAAA,SAAA,GAAG,WAAW,CAAC;AACxB,UAAa,CAAA,aAAA,GAAG,eAAe,CAAC;MAI5C,WAAW,CAAA;;AACf,WAAA,CAAA,YAAY,IAAG,EAAA,GAAA,MAAA;AAErB,KAAA;AADwB,IAAA,EAAA,CAAA,QAAQ,GAAG,yBAA0B;AAC7D,IAAA,EAAA,CAAA,CAAA;AAEM,WAAA,CAAA,YAAY,IAAG,EAAA,GAAA,MAAA;AAIrB,KAAA;AAHwB,IAAA,EAAA,CAAA,YAAY,GAAG,KAAM;IACrB,EAAO,CAAA,OAAA,GAAG,QAAS;;IACnB,EAAU,CAAA,UAAA,GAAG,KAAM;;AAC3C,IAAA,EAAA,CAAA,CAAA;AAEM,WAAA,CAAA,kBAAkB,IAAG,EAAA,GAAA,MAAA;AAI3B,KAAA;AAHwB,IAAA,EAAA,CAAA,aAAa,GAAG,8EAA+E;AAC/F,IAAA,EAAA,CAAA,iBAAiB,GAAG,YAAa;AAC1C,IAAA,EAAA,CAAA,iBAAiB,GAAG,mBAAoB;AACvD,IAAA,EAAA,CAAA,CAAA;MAGU,oBAAoB,CAAA;;AAEtB,oBAAA,CAAA,UAAU,IAAG,EAAA,GAAA,MAAA;AASnB,KAAA;AAP0B,IAAA,EAAA,CAAA,iBAAiB,GAAG,mBAAoB;AACxC,IAAA,EAAA,CAAA,kBAAkB,GAAG,oBAAqB;AAC1C,IAAA,EAAA,CAAA,yBAAyB,GAAG,2BAA4B;AACxD,IAAA,EAAA,CAAA,kBAAkB,GAAG,oBAAqB;AAC1C,IAAA,EAAA,CAAA,oBAAoB,GAAG,sBAAuB;AAC9C,IAAA,EAAA,CAAA,iBAAiB,GAAG,mBAAoB;AACxC,IAAA,EAAA,CAAA,eAAe,GAAG,iBAAkB;AAC9D,IAAA,EAAA,CAAA,CAAA;AAEM,oBAAA,CAAA,KAAK,IAAG,EAAA,GAAA,MAAA;AAGd,KAAA;AAF0B,IAAA,EAAA,CAAA,cAAc,GAAG,cAAe;AAChC,IAAA,EAAA,CAAA,OAAO,GAAG,MAAO;AAC3C,IAAA,EAAA,CAAA,CAAA;AAEM,oBAAA,CAAA,SAAS,IAAG,EAAA,GAAA,MAAA;AAIlB,KAAA;AAH0B,IAAA,EAAA,CAAA,WAAW,GAAG,aAAc;AAC5B,IAAA,EAAA,CAAA,OAAO,GAAG,SAAU;AACpB,IAAA,EAAA,CAAA,cAAc,GAAG,gBAAiB;AAC5D,IAAA,EAAA,CAAA,CAAA;AAEsB,oBAAQ,CAAA,QAAA,GAAG,MAAM,CAAC;AAElC,oBAAA,CAAA,QAAQ,IAAG,EAAA,GAAA,MAAA;AAIjB,KAAA;AAH0B,IAAA,EAAA,CAAA,uBAAuB,GAAG,8BAA+B;AACzD,IAAA,EAAA,CAAA,aAAa,GAAG,qBAAsB;AACtC,IAAA,EAAA,CAAA,WAAW,GAAG,GAAI;AAC5C,IAAA,EAAA,CAAA,CAAA;MAGQ,oBAAoB,CAAA;;AAEN,oBAAoB,CAAA,oBAAA,GAAG,sBAAsB,CAAC;AAC9C,oBAAa,CAAA,aAAA,GAAG,eAAe,CAAC;AAChC,oBAAe,CAAA,eAAA,GAAG,iBAAiB,CAAC;AACpC,oBAAiB,CAAA,iBAAA,GAAG,mBAAmB,CAAC;AACxC,oBAA0B,CAAA,0BAAA,GAAG,4BAA4B,CAAC;AAC1D,oBAAO,CAAA,OAAA,GAAG,SAAS,CAAC;AACpB,oBAAS,CAAA,SAAA,GAAG,WAAW,CAAC;AACxB,oBAAY,CAAA,YAAA,GAAG,cAAc,CAAC;AAC9B,oBAAgB,CAAA,gBAAA,GAAG,kBAAkB,CAAC;AACtC,oBAAmB,CAAA,mBAAA,GAAG,qBAAqB,CAAC;AAGvE;;MChaa,eAAe,CAAA;IAExB,WAAmB,CAAA,UAAsB,EAAiC,YAAiB,EAAA;QAAxE,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QAAiC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAK;KAAK;;AAGzF,IAAA,eAAe,CAAC,UAAkB,EAAA;AACrC,QAAA,OAAO,IAAI,UAAU,CAAU,CAAC,QAAQ,KAAI;AACxC,YAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACnE,GAAG;iBACE,GAAG,CACA,iBAAiB,CAAC,UAAU,CAAC,QAAQ,EACrC,iBAAiB,CAAC,MAAM,CAAC,eAAe,EACxC,EAAE,EACF,EAAE,EAAE,EAAE,UAAU,EAAE,CACrB;AACA,iBAAA,SAAS,CAAC,CAAC,QAAa,KAAI;gBACzB,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACvC,oBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,iBAAA;AAAM,qBAAA;oBACH,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACzB,oBAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,iBAAA;AACL,aAAC,CAAC,CAAC;AACX,SAAC,CAAC,CAAC;KACN;;;IAKO,eAAe,CACnB,QAAgB,EAChB,MAAc,EACd,SAAiB,EACjB,aAAqB,EACrB,uBAAA,GAAkC,KAAK,EAAA;AAEvC,QAAA,OAAO,IAAI,UAAU,CAAa,CAAC,QAAQ,KAAI;AAC3C,YAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChC,YAAA,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;YAE5B,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;AAC5B,gBAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBACnE,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAErC,gBAAA,EAAE,CAAC,6BAA6B,CAC5B,IAAI,KAAK,CACL,IAAI,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,cAAc,EAAE,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,EAC/E,IAAI,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,cAAc,EAAE,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,CAChF,CACJ,CAAC;AAEF,gBAAA,IAAG,uBAAuB,EAC1B;oBACI,EAAE,CAAC,aAAa,CAAC,IAAI,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,EAAC,SAAS,CAAC,EAAE,EAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;AACjH,iBAAA;;AAID,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;AAC1D,oBAAA,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;AACzD,iBAAA;AAED,gBAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE;AACrC,oBAAA,EAAE,CAAC,6BAA6B,CAC5B,CAAC,IAAI,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC;AACrF,qBAAA,CAAC,CAAC;AACN,iBAAA;AAED,gBAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE;AACzC,oBAAA,EAAE,CAAC,6BAA6B,CAC5B,CAAC,IAAI,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,aAAa,EAAE,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC;AACzF,qBAAA,CACJ,CAAC;AACL,iBAAA;gBAED,GAAG;AACE,qBAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,QAAQ,EAAE,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;AAChF,qBAAA,SAAS,CAAC,CAAC,UAAe,KAAI;AAC3B,oBAAA,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACnC,iBAAC,CAAC,CAAC;AACV,aAAA;AAAM,iBAAA;AACH,gBAAA,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACrB,aAAA;AACL,SAAC,CAAC,CAAC;KACN;IAEM,wBAAwB,CAAC,QAAgB,EAAE,MAAc,EAAE,SAAiB,EAAC,0BAAkC,KAAK,EAAA;AACvH,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAC,uBAAuB,CAAC,CAAC;KAC1F;IAEM,4BAA4B,CAC/B,QAAgB,EAChB,MAAc,EACd,aAAqB,EACrB,0BAAkC,KAAK,EAAA;AAEvC,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAC,uBAAuB,CAAC,CAAC;KAC9F;AAEM,IAAA,aAAa,CAAC,QAAgB,EAAE,MAAc,EAAC,0BAAkC,KAAK,EAAA;AACzF,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAC,uBAAuB,CAAC,CAAC;KACrF;IAEM,yBAAyB,CAAC,OAAO,EAAC,IAAI,EAAA;AAEzC,QAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACnE,OAAO,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,QAAQ,EAAE,iBAAiB,CAAC,MAAM,CAAC,yBAAyB,EAAE,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,CAAC;KACzI;;;IAIO,qBAAqB,CAAC,IAAY,EAAE,SAAiB,EAAE,aAAqB,EAAC,0BAAkC,KAAK,EAAA;AACxH,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,QAAA,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,aAAa,EAAC,uBAAuB,CAAC,CAAC;KACjH;AAEM,IAAA,8BAA8B,CAAC,QAAgB,EAAE,SAAiB,EAAC,0BAAkC,KAAK,EAAA;AAC7G,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAC,uBAAuB,CAAC,CAAC;KACxF;AAEM,IAAA,kCAAkC,CAAC,QAAgB,EAAE,aAAqB,EAAC,0BAAkC,KAAK,EAAA;AACrH,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAC,uBAAuB,CAAC,CAAC;KAC5F;AAEM,IAAA,mBAAmB,CAAC,QAAgB,EAAC,uBAAA,GAAkC,KAAK,EAAA;AAC/E,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAC,uBAAuB,CAAC,CAAC;KACnF;;;AAKM,IAAA,eAAe,CAAC,UAAkB,EAAA;AACrC,QAAA,OAAO,IAAI,UAAU,CAAM,CAAC,QAAQ,KAAI;AACpC,YAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE;AACtC,gBAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACnE,gBAAA,MAAM,EAAE,GAAG,IAAI,YAAY,EAAE,CAAC;AAC9B,gBAAA,EAAE,CAAC,aAAa,CAAC,IAAI,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;gBAC9F,GAAG;AACE,qBAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,QAAQ,EAAE,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;AAChF,qBAAA,SAAS,CAAC,CAAC,UAAe,KAAI;AAC3B,oBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AAClE,wBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,qBAAA;AAAM,yBAAA;wBACH,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,qBAAA;AACL,iBAAC,CAAC,CAAC;AACV,aAAA;AAAM,iBAAA;AACH,gBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,aAAA;AACL,SAAC,CAAC,CAAC;KACN;;AAxJQ,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,4CAE2B,aAAa,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;iHAFvD,eAAe,EAAA,CAAA,CAAA;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;0BAGqC,MAAM;2BAAC,aAAa,CAAA;;;MCRvD,gBAAgB,CAAA;AAUzB,IAAA,WAAA,CAAmB,IAAuB,EAAA;QACtC,IAAI,CAAC,MAAM,GAAG;YACV,IAAI,EAAE,mBAAmB,CAAC,IAAI;YAC9B,MAAM,EAAE,mBAAmB,CAAC,KAAK;YACjC,KAAK,EAAE,mBAAmB,CAAC,IAAI;SAClC,CAAC;QACF,IAAI,CAAC,WAAW,GAAG;AACf,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,IAAI,EAAE,SAAS;SAClB,CAAC;AACF,QAAA,IAAI,CAAC,qBAAqB,GAAG,GAAG,CAAC;AACjC,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,uBAAuB,EAAE,CAAC;AAC7D,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC;AACzC,QAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;KAC1C;AACJ,CAAA;MAEY,YAAY,CAAA;AAIxB,CAAA;IAEW,oBAOX;AAPD,CAAA,UAAY,mBAAmB,EAAA;AAC3B,IAAA,mBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,mBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,mBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,mBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,mBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;IACrB,mBAAe,CAAA,OAAA,CAAA,GAAA,OAAA,CAAA;AACnB,CAAC,EAPW,mBAAmB,KAAnB,mBAAmB,GAO9B,EAAA,CAAA,CAAA,CAAA;MAEY,kBAAkB,CAAA;AAc9B,CAAA;MAEY,uBAAuB,CAAA;AAQhC,IAAA,WAAA,CAAmB,IAA8B,EAAA;AAC7C,QAAA,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;AACxB,QAAA,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;AAC9B,QAAA,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;AAC/B,QAAA,IAAI,CAAC,QAAQ,GAAG,sBAAsB,CAAC;AACvC,QAAA,IAAI,CAAC,QAAQ,GAAG,uBAAuB,CAAC;KAC3C;AAGJ,CAAA;IAEW,YAGX;AAHD,CAAA,UAAY,WAAW,EAAA;AACnB,IAAA,WAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,WAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AAC3B,CAAC,EAHW,WAAW,KAAX,WAAW,GAGtB,EAAA,CAAA,CAAA;;MClFY,SAAS,CAAA;AAGlB,IAAA,WAAA,CAAY,IAAgB,EAAA;AACxB,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC7B;AACJ;;ACJK,MAAO,aAAc,SAAQ,SAAS,CAAA;AAsBxC,IAAA,WAAA,CAAY,IAAoB,EAAA;QAC5B,KAAK,CAAC,IAAI,CAAC,CAAC;AACZ,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC7B;AACJ;;ACAD,MAAMA,QAAM,GAAI,OAAe,CAAC,OAAO,CAAC;MAQ3B,iBAAiB,CAAA;;AAyB1B,IAAA,WAAA,CAAoB,gBAAiC,EAAU,gBAAiC,EAAU,iBAAqC,EAAA;QAA3H,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAiB;QAAU,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAiB;QAAU,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAoB;QAxBtI,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;;;AAepB,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAC1C,IAAe,CAAA,eAAA,GAAoB,EAAE,CAAC;QACtC,IAAe,CAAA,eAAA,GAAG,CAAC,iBAAiB,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;QA8IhE,IAAW,CAAA,WAAA,GAAG,CAAC,SAAS,EAAE,eAAe,EAAE,eAAe,KAAU;AACvE,YAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,CACxD,CAAC,UAAU,KAAI;AACX,gBAAA,MAAM,iBAAiB,GAAG,OAAO,CAC7B,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,UAAU,QAAQ,EAAA;AAClD,oBAAA,OAAOA,QAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;iBACzD,CAAC,CACL,CAAC;gBACF,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,gBAAA,iBAAiB,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;oBACnC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC;AACzD,iBAAC,CAAC,CAAC;gBACH,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;AACvD,gBAAA,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;AACxC,aAAC,EACD,CAAC,KAAK,KAAI;gBACN,eAAe,CAAC,KAAK,CAAC,CAAC;AAC3B,aAAC,CACJ,CAAC;AACN,SAAC,CAAC;AAzJE,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,YAAY,EAAO,CAAC;AACzC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAO,CAAC;AAC5C,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;AAVD,IAAA,IAAW,gBAAgB,GAAA;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;IAUD,QAAQ,GAAA;QACJ,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC;QACpD,IAAI,CAAC,eAAe,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAClE,IAAI,CAAC,eAAe,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;AAClE,QAAA,IAAI,CAAC,eAAe,CAAC,WAAW,GAAG;AAC/B,YAAA,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI;AAC5C,YAAA,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,KAAK;AAC9C,YAAA,GAAG,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG;AAC1C,YAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,OAAO;AAClD,YAAA,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI;AAC5C,YAAA,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM;AAChD,YAAA,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM;AAChD,YAAA,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM;AAChD,YAAA,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,YAAY;AAC5D,YAAA,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI;AAC5C,YAAA,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,QAAQ;AACpD,YAAA,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,cAAc;AAChE,YAAA,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,UAAU;AAC3D,SAAA;YACG,IAAI,CAAC,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC;AACzE,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,CAAC,aAAa,KAAK,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QACpF,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;AAC/C,QAAA,IAAI,CAAC,eAAe,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9C,IAAI,CAAC,eAAe,CAAC,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,CAAC;QAC1F,IAAI,CAAC,eAAe,CAAC,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC;AACzF,QAAA,IAAI,CAAC,eAAe,CAAC,WAAW,GAAG,cAAc,CAAC;AAClD,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,MAAM,CAAC;QACrC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,IAAI,IAAI;AACrE,cAAE,IAAI,CAAC,gBAAgB,CAAC,eAAe;AACvC,cAAE,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC;QAC5C,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,KAAK,KACnF,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;KAC7B;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,EAAE;YACvE,IAAI,CAAC,gBAAgB,CAAC,8BAA8B,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAC1E,IAAI,CAAC,aAAa,EAAE,CAAC;AACxB,SAAA;KACJ;IAED,eAAe,GAAA;QACX,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;KACpD;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,CAAC;KAC9C;;AAGO,IAAA,SAAS,CAAC,SAAqB,EAAA;AACnC,QAAA,MAAM,MAAM,GAAyB,SAAS,CAAC,GAAG,CAAC,UAAU,QAAQ,EAAA;YACjE,OAAO,IAAI,aAAa,CAAC;gBACrB,EAAE,EAAE,QAAQ,CAAC,EAAE;gBACf,KAAK,EAAE,QAAQ,CAAC,cAAc;AAC9B,gBAAA,UAAU,EAAE,CAAC,YAAY,EAAE,iBAAiB,CAAC,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC;AAC3F,gBAAA,OAAO,EAAE,KAAK;gBACd,eAAe,EAAE,iBAAiB,CAAC,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,KAAK;AACjF,gBAAA,WAAW,EAAE,aAAa;gBAC1B,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;AAC9C,aAAA,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,MAAM,CAAC;KACjB;IAEO,iBAAiB,CAAC,KAAW,EAAE,GAAS,EAAA;AAC5C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC/B,QAAA,MAAM,SAAS,GAAGA,QAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC5D,QAAA,IAAI,SAAS,EAAE;AACX,YAAA,MAAM,QAAQ,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;AAC7D,YAAA,QAAQ,CAAC,OAAO,GAAGA,QAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAC5D,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC9B,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3B,SAAA;KACJ;IAEO,aAAa,CAAC,IAAY,EAAE,EAAU,EAAA;QAC1C,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,OAAO,IAAI,CAAC,gBAAgB,CAAC,4BAA4B,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,aAAa,EAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAChI,SAAA;QACD,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,OAAO,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,SAAS,EAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;AACxH,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,EAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;KAC7F;AAEO,IAAA,mBAAmB,CAAC,IAAY,EAAA;QACpC,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,kCAAkC,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAClI,SAAA;QAED,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,8BAA8B,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAC1H,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,IAAI,EAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;KAC/F;IAEO,aAAa,GAAA;AACC,QAAA,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC;YACvD,kBAAkB,CAAC,YAAY,CAAC,YAAY;AAC/C,SAAA,CAAE,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AACvB,YAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrB,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AACzE,gBAAA,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACrC,aAAA;AACL,SAAC,CAAC,CAAC;KACN;;;AAIM,IAAA,gBAAgB,CAAC,QAAQ,EAAA;QAC5B,OAAO,iBAAiB,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;KAC/D;AAEM,IAAA,gBAAgB,CAAC,YAAY,EAAA;AAChC,QAAA,OAAO,EAAE,KAAK,EAAE,iBAAiB,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC;KACzE;AAEM,IAAA,WAAW,CAAC,aAAa,EAAA;QAC5B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,KAAI;YACrE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC9C,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACpC,SAAC,CAAC,CAAC;KACN;IAuBM,aAAa,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;AAC9B,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;AAClC,SAAA;KACJ;;+GAzLQ,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAHf,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAAA,CAAC,eAAe,CAAC,8JCjChC,izBAoBM,EAAA,MAAA,EAAA,CAAA,ovsCAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,WAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4FDgBO,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,aAGb,CAAC,eAAe,CAAC,EACb,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,izBAAA,EAAA,MAAA,EAAA,CAAA,ovsCAAA,CAAA,EAAA,CAAA;kKAG5B,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACI,SAAS,EAAA,CAAA;sBAAlB,MAAM;gBACG,YAAY,EAAA,CAAA;sBAArB,MAAM;gBAEP,iBAAiB,EAAA,CAAA;sBADhB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;AEzCtC,MAAO,iBAAkB,SAAQ,SAAS,CAAA;AAa5C,IAAA,WAAA,CAAY,IAAwB,EAAA;QAChC,KAAK,CAAC,IAAI,CAAC,CAAC;AACZ,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC7B;AACJ;;MCOY,kBAAkB,CAAA;;IA6D3B,WAAmB,CAAA,UAAsB,EAC7B,gBAAiC,EACjC,mBAAuC,EACvC,gBAAiC,EACjC,GAAqB,EAAA;QAJd,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QAC7B,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAiB;QACjC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAoB;QACvC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAiB;QACjC,IAAG,CAAA,GAAA,GAAH,GAAG,CAAkB;QA9DxB,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;QAKlB,IAA0B,CAAA,0BAAA,GAAG,IAAI,CAAC;QAClC,IAAsB,CAAA,sBAAA,GAAG,IAAI,CAAC;QAC9B,IAAyB,CAAA,yBAAA,GAAG,IAAI,CAAC;QACjC,IAAc,CAAA,cAAA,GAAU,IAAI,CAAC;AAE5B,QAAA,IAAA,CAAA,cAAc,GAAsB,IAAI,YAAY,EAAE,CAAC;QAEjE,IAAuB,CAAA,uBAAA,GAAS,IAAI,CAAC;AAI7B,QAAA,IAAA,CAAA,cAAc,GAAkB;YACpC,kBAAkB,CAAC,YAAY,CAAC,YAAY;SAC/C,CAAC;;;AA+KM,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,KAAI;AAC1B,YAAA,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACrC,gBAAA,OAAO,CAAC,CAAC;AACZ,aAAA;AACD,YAAA,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;gBACrC,OAAO,CAAC,CAAC,CAAC;AACb,aAAA;AACD,YAAA,OAAO,CAAC,CAAC;AACb,SAAC,CAAC;AA1IE,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,EAAO,CAAC;QAChC,IAAI,CAAC,kBAAkB,GAAG;AACtB,YAAA;AACI,gBAAA,KAAK,EAAE,UAAU;AACjB,gBAAA,KAAK,EAAE,UAAU;AACjB,gBAAA,OAAO,EAAE,CAAC,KAAK,KAAI;AACf,oBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;iBACxB;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,KAAK,EAAE,eAAe;AACtB,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,OAAO,EAAE,CAAC,KAAK,KAAI;AACf,oBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;iBACxB;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,OAAO,EAAE,CAAC,KAAK,KAAI;AACf,oBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;iBACvB;AACJ,aAAA;SACJ,CAAC;AACF,QAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,YAAY,EAAE,CAAC;KACzD;;;;IA/DD,IAAW,QAAQ,CAAC,KAAiB,EAAA;AACjC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KAC1B;;;AAID,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;;;AAID,IAAA,YAAY,CAAC,gBAAwB,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI;AAAE,YAAA,OAAO,EAAE,CAAC;QACjE,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC,IAAI,CAAC;KAC7E;AAED,IAAA,4BAA4B,CAAC,gBAAwB,EAAA;AACjD,QAAA,OAAO,wBAAwB,GAAY,iBAAiB,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,MAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;KAC3H;;IA4CD,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,SAAS,CAClF,CAAC,GAAQ,KAAI;YACT,IAAI,CAAC,aAAa,EAAE,CAAC;AACzB,SAAC,CACJ,CAAA;KACJ;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,EAAE;YAC3E,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;;AAGnC,gBAAA,IAAI,CAAC,uBAAuB,GAAC,KAAK,CAAC;AACnC,gBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AACzB,gBAAA,IAAI,CAAC,uBAAuB,GAAC,IAAI,CAAC;AACrC,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;AACvB,aAAA;AACJ,SAAA;QAED,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE;YAC9F,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC5B,SAAA;KACJ;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE,CAAC;KAClD;;;AAKD,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;;;AAKM,IAAA,QAAQ,CAAC,KAAK,EAAA;AACjB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;;KAE1E;AAEM,IAAA,QAAQ,CAAC,KAAK,EAAA;AACjB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;;KAE1E;AAEM,IAAA,OAAO,CAAC,KAAwB,EAAA;AACnC,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AACrE,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;;AAE1E,SAAC,CAAC,CAAC;KACN;;;IAIO,aAAa,GAAA;AAChB,QAAA,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAqB,CAAC,SAAS,CACvF,CAAC,QAAQ,KAAI;YACT,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AAC7E,SAAC,CACJ,CAAC;KACL;;;AAGO,IAAA,SAAS,CAAC,UAAsB,EAAA;AACpC,QAAA,MAAM,MAAM,GAA6B,UAAU,CAAC,GAAG,CAAC,UAAU,QAAQ,EAAA;AACtE,YAAA,IAAI,KAAK,GACL,QAAQ,CAAC,mBAAmB;gBAC5B,iBAAiB,CAAC,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,MAAM;gBACjE,QAAQ,CAAC,cAAc,CAAC;YAC5B,IAAI,QAAQ,CAAC,kBAAkB,EAAE;AAC7B,gBAAA,KAAK,IAAI,aAAa,GAAG,QAAQ,CAAC,kBAAkB,CAAC;AACxD,aAAA;YACD,OAAO,IAAI,iBAAiB,CAAC;gBACzB,EAAE,EAAE,QAAQ,CAAC,EAAE;gBACf,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;gBAC3C,KAAK;AACL,gBAAA,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;gBACvC,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;gBAC3C,WAAW,EAAE,QAAQ,CAAC,cAAc;gBACpC,kBAAkB,EAAC,QAAQ,CAAC,kBAAkB;gBAC9C,OAAO,EAAC,QAAQ,CAAC,OAAO;gBACxB,OAAO,EAAC,QAAQ,CAAC,OAAO;gBACxB,YAAY,EAAC,QAAQ,CAAC,YAAY;gBAClC,gBAAgB,EAAC,QAAQ,CAAC,gBAAgB;AAC7C,aAAA,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,MAAM,CAAC;KACjB;;;AAeO,IAAA,MAAM,CAAC,SAAiB,EAAA;AAC5B,QAAA,QAAQ,SAAS;AACb,YAAA,KAAK,CAAC;AACF,gBAAA,OAAO,QAAQ,CAAC;AACpB,YAAA,KAAK,CAAC;AACF,gBAAA,OAAO,QAAQ,CAAC;AACpB,YAAA,KAAK,CAAC;AACF,gBAAA,OAAO,SAAS,CAAC;AACrB,YAAA,KAAK,CAAC;AACF,gBAAA,OAAO,WAAW,CAAC;AACvB,YAAA,KAAK,CAAC;AACF,gBAAA,OAAO,UAAU,CAAC;AACtB,YAAA,KAAK,CAAC;AACF,gBAAA,OAAO,QAAQ,CAAC;AACpB,YAAA,KAAK,CAAC;AACF,gBAAA,OAAO,UAAU,CAAC;AACtB,YAAA;AACI,gBAAA,OAAO,KAAK,CAAC;AACpB,SAAA;KACJ;AAEO,IAAA,QAAQ,CAAC,WAAmB,EAAA;AAChC,QAAA,QAAQ,WAAW;AACf,YAAA,KAAK,CAAC;AACF,gBAAA,OAAO,SAAS,CAAC;AACrB,YAAA,KAAK,CAAC;AACF,gBAAA,OAAO,UAAU,CAAC;AACtB,YAAA,KAAK,CAAC;AACF,gBAAA,OAAO,OAAO,CAAC;AACnB,YAAA,KAAK,CAAC;AACF,gBAAA,OAAO,OAAO,CAAC;AACnB,YAAA,KAAK,CAAC;AACF,gBAAA,OAAO,KAAK,CAAC;AACjB,YAAA,KAAK,CAAC;AACF,gBAAA,OAAO,MAAM,CAAC;AAClB,YAAA,KAAK,CAAC;AACF,gBAAA,OAAO,MAAM,CAAC;AAClB,YAAA,KAAK,CAAC;AACF,gBAAA,OAAO,QAAQ,CAAC;AACpB,YAAA,KAAK,CAAC;AACF,gBAAA,OAAO,WAAW,CAAC;AACvB,YAAA,KAAK,CAAC;AACF,gBAAA,OAAO,SAAS,CAAC;AACrB,YAAA,KAAK,EAAE;AACH,gBAAA,OAAO,UAAU,CAAC;AACtB,YAAA,KAAK,EAAE;AACH,gBAAA,OAAO,UAAU,CAAC;AACtB,YAAA;AACI,gBAAA,OAAO,KAAK,CAAC;AACpB,SAAA;KACJ;;;IAIM,iBAAiB,GAAA;QACpB,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACrC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,YAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;YACzB,MAAM,WAAW,GACb,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE;AACjC,gBAAA,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC,QAAQ,EAAE;gBACnC,IAAI,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;AAE9C,YAAA,IAAI,CAAC,UAAU,GAAG,WAAW,GAAG,IAAI,GAAG,KAAK,CAAC;AAE7C,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC5J,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACjF,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;YAC1J,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACnG,QAAQ,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,QAAQ,EAAE;AACnD,gBAAA,KAAK,MAAM;oBACP,OAAO,KAAK,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC;AACjD,gBAAA,KAAK,OAAO;AACR,oBAAA,OAAO,KAAK,GAAG,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC;AAC/C,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,EAAE,CAAC;KACb;IAEM,iBAAiB,GAAA;QACpB,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACrC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAC1J,YAAA,OAAO,SAAS,CAAC;AACpB,SAAA;AACD,QAAA,OAAO,EAAE,CAAC;KACb;AAEM,IAAA,gBAAgB,CAAC,YAAY,EAAA;QAChC,OAAO,iBAAiB,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC;KAC9D;AAEM,IAAA,gBAAgB,CAAC,YAAY,EAAA;AAChC,QAAA,OAAO,EAAE,KAAK,EAAE,iBAAiB,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC;KACzE;IAEM,SAAS,GAAA;AACZ,QAAA,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;KACxC;IAEM,OAAO,GAAA;KAEb;;AAKM,IAAA,gBAAgB,CAAC,IAAS,EAAA;QAC7B,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE;AACrE,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE,SAAS;AACpB,SAAA,CAAC,CAAC;KACN;AAED,IAAA,eAAe,CAAC,KAAK,EAAA;QAEjB,OAAO,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,IAAE,KAAK,CAAC,OAAO,CAAC,CAAA;KAC9F;AAGD,IAAA,sBAAsB,CAAC,KAAS,EAAA;QAE5B,IAAI,eAAe,GAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACvD,IAAI,sBAAsB,GAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC;QAElI,IAAI,KAAK,GAAS,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,sBAAsB,EACtF;YACG,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,gBAAgB,CAAC;AACtD,YAAA,QAAQ,EAAE,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AACnH,YAAA,aAAa,EAAE,KAAK,GAAC,eAAe,GAAC,MAAM;AAAC,SAAA,CAC9C,CAAC;AAEF,QAAA,IAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,EACjG;YACG,KAAK,GAAC,KAAK,GAAC,GAAG,GAAC,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,GAAC,GAAG,GAAC,KAAK,GAAC,sBAAsB,GAAC,MAAM,CAAC;AAC7H,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KACjB;AAEO,IAAA,UAAU,CAAC,MAAc,EAAA;AAC7B,QAAA,IAAI,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE;AACjC,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;AAED,QAAA,OAAO,MAAM;AACR,aAAA,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;AACtB,aAAA,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;AACrB,aAAA,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;AACrB,aAAA,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;AACvB,aAAA,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KAChC;;gHAtWQ,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAHhB,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,CAAA,aAAA,EAAA,MAAA,CAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,SAAA,EAAA,CAAC,eAAe,CAAC,+CCvBhC,muIAyEA,EAAA,MAAA,EAAA,CAAA,ywhBAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,cAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,cAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,WAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,MAAA,EAAAD,EAAA,CAAA,QAAA,EAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4FD/Ca,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,aAGf,CAAC,eAAe,CAAC,EACb,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,muIAAA,EAAA,MAAA,EAAA,CAAA,ywhBAAA,CAAA,EAAA,CAAA;2NAG5B,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACS,IAAI,EAAA,CAAA;sBAAlB,KAAK;uBAAC,MAAM,CAAA;gBACJ,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACgB,IAAI,EAAA,CAAA;sBAAzB,KAAK;uBAAC,aAAa,CAAA;gBAEX,0BAA0B,EAAA,CAAA;sBAAlC,KAAK;gBACG,sBAAsB,EAAA,CAAA;sBAA9B,KAAK;gBACG,yBAAyB,EAAA,CAAA;sBAAjC,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBAEI,cAAc,EAAA,CAAA;sBAAvB,MAAM;;;ME1BE,OAAO,CAAA;AAApB,IAAA,WAAA,GAAA;QAKI,IAAqB,CAAA,qBAAA,GAAG,IAAI,CAAC;QAC7B,IAA0B,CAAA,0BAAA,GAAG,IAAI,CAAC;QAClC,IAAsB,CAAA,sBAAA,GAAG,IAAI,CAAC;QAC9B,IAAyB,CAAA,yBAAA,GAAG,IAAI,CAAC;QACjC,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;QACrB,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC;QACxB,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC;QACtB,IAAkB,CAAA,kBAAA,GAAG,IAAI,CAAC;QAC1B,IAAuB,CAAA,uBAAA,GAAG,YAAY,CAAC;QACvC,IAAkB,CAAA,kBAAA,GAAG,UAAU,CAAC;QAChC,IAAuB,CAAA,uBAAA,GAAW,KAAK,CAAC;QACxC,IAAa,CAAA,aAAA,GAAU,IAAI,CAAC;QAC5B,IAAc,CAAA,cAAA,GAAU,IAAI,CAAC;QAC7B,IAAqB,CAAA,qBAAA,GAAW,KAAK,CAAC;QACtC,IAAiC,CAAA,iCAAA,GAAW,IAAI,CAAC;KACpD;AAAA;;MCrBY,qBAAqB,CAAA;;AAa9B,IAAA,WAAA,GAAA;AAZU,QAAA,IAAA,CAAA,iBAAiB,GAAsB,IAAI,YAAY,EAAE,CAAC;QAK3D,IAAmB,CAAA,mBAAA,GAAY,KAAK,CAAC;QAQ1C,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;KAChC;AAED,IAAA,QAAQ,MAAM;AAEd,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;AACvB,SAAA;KACJ;;AAEM,IAAA,eAAe,CAAC,KAAU,EAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;KACrB;AAEM,IAAA,kBAAkB,CAAC,KAAU,EAAA;AAChC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;KAC7B;IAEM,cAAc,GAAA;AACjB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;KAClF;AAEM,IAAA,cAAc,CAAC,KAAmB,EAAA;AACrC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACtC;IAEM,aAAa,GAAA;AAChB,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;KACjC;;mHA3CQ,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,qTCZlC,klDAkCA,EAAA,MAAA,EAAA,CAAA,geAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAE,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,WAAA,EAAA,eAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,4BAAA,EAAA,wBAAA,EAAA,2BAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAN,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDtBa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;+BAEI,mBAAmB,EAAA,QAAA,EAAA,klDAAA,EAAA,MAAA,EAAA,CAAA,geAAA,CAAA,EAAA,CAAA;0EAKnB,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;gBAEP,QAAQ,EAAA,CAAA;sBADP,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBAG/B,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;;;MEVG,eAAe,CAAA;AAC1B,IAAA,WAAA,CAAmB,UAAsB,EAAiC,YAAiB,EACjF,gBAAiC,EAAA;QADxB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QAAiC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAK;QACjF,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAiB;KAAK;;AAGzC,IAAA,cAAc,CAAC,SAAiB,EAAA;AACrC,QAAA,OAAO,IAAI,UAAU,CACnB,QAAQ,IAAG;AACT,YAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACnE,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC;iBACrD,SAAS,CAAC,OAAO,IAAG;gBACnB,IAAK,OAAe,CAAC,EAAE,EAAE;AACvB,oBAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxB,iBAAA;AAAM,qBAAA;AACL,oBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB,iBAAA;AACH,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,WAAW,CAAC,EAAgB,EAAA;AACjC,QAAA,OAAO,IAAI,UAAU,CAAM,QAAQ,IAAG;AACpC,YAAA,IAAI,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACjE,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CACjF,CAAC,SAAS,CAAC,CAAC,QAAa,KAAI;AAE5B,gBAAA,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1B,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyDM,IAAA,UAAU,CAAC,OAAY,EAAA;AAC5B,QAAA,OAAO,IAAI,UAAU,CAAM,QAAQ,IAAG;;;AAGpC,YAAA,IAAI,OAAO,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAClC,YAAA,IAAI,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACjE,YAAA,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC;AACtF,iBAAA,SAAS,CAAC,CAAC,QAAa,KAAI;AAC3B,gBAAA,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;AAChD,gBAAA,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1B,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACJ;IAGM,sBAAsB,CAAC,cAAc,EAAC,0BAAoC,EAAA;AAE/E,QAAA,OAAO,IAAI,UAAU,CAAM,QAAQ,IAAG;AACpC,YAAA,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,CAAC;iBACnC,SAAS,CAAC,OAAO,IAAG;gBACnB,OAAO,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;gBACnD,OAAO,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;gBACjD,OAAO,CAAC,qBAAqB,CAAC,GAAG,cAAc,CAAC,qBAAqB,CAAC,CAAC;gBAEvE,IAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;oBACxD,OAAO,CAAC,eAAe,CAAC,GAAG,cAAc,CAAC,eAAe,CAAC,CAAC;AAE3D,gBAAA,IAAG,0BAA0B,IAAI,0BAA0B,CAAC,MAAM,GAAG,CAAC,EACtE;oBACE,IAAG,CAAC,OAAO,CAAC,kBAAkB;AAC5B,wBAAA,OAAO,CAAC,kBAAkB,GAAG,EAAE,CAAA;oBAEjC,0BAA0B,CAAC,OAAO,CAAC,QAAQ,IACzC,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CACnF,CAAC;AAEH,iBAAA;AAED,gBAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;qBACxB,SAAS,CAAC,QAAQ,IAAG;AACpB,oBAAA,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1B,iBAAC,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACJ;AAEM,IAAA,aAAa,CAAC,OAAY,EAAA;AAE/B,QAAA,OAAO,IAAI,UAAU,CAAM,QAAQ,IAAG;AAGpC,YAAA,IAAI,OAAO,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAClC,YAAA,IAAI,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACjE,YAAA,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC;AACrF,iBAAA,SAAS,CAAC,CAAC,QAAa,KAAI;AAC3B,gBAAA,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,QAAQ,CAAC,CAAC;AACnD,gBAAA,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1B,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACJ;;;AAIM,IAAA,oBAAoB,CAAC,OAAmB,EAAA;AAC7C,QAAA,OAAO,IAAI,UAAU,CAAU,QAAQ,IAAG;AACxC,YAAA,IAAI,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACjE,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,QAAa,KAAI;gBACjH,IAAI,KAAK,CAAC,iBAAiB,CAAE,QAAuB,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;AACrG,oBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB,iBAAA;AAAM,qBAAA;AACL,oBAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtB,iBAAA;AACH,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;;;AAOM,IAAA,cAAc,CAAC,OAAY,EAAA;QAChC,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;KACvI;;AA1KU,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,4CACyB,aAAa,EAAA,EAAA,EAAA,KAAA,EAAAO,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;iHADrD,eAAe,EAAA,CAAA,CAAA;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;0BAEmC,MAAM;2BAAC,aAAa,CAAA;;;MCDrD,oBAAoB,CAAA;AAC7B,IAAA,WAAA,CACW,UAAsB,EACrB,gBAAiC,EACV,YAAiB,EAAA;QAFzC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACrB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAiB;QACV,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAK;KAC/C;AACE,IAAA,gBAAgB,CAAC,YAA0B,EAAA;AAC9C,QAAA,OAAO,IAAI,UAAU,CAAM,CAAC,QAAQ,KAAI;AACpC,YAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACnE,GAAG;AACE,iBAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,WAAW,EAAE,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;AAC7F,iBAAA,SAAS,CAAC,CAAC,MAAW,KAAI;gBACvB,IAAI,CAAC,MAAM,EAAE;AACT,oBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,iBAAA;AAAM,qBAAA,IAAI,MAAM,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,EAAE;AAC3C,oBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,iBAAA;AAAM,qBAAA;AACH,oBAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9B,iBAAA;AACL,aAAC,CAAC,CAAC;AACX,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,kBAAkB,CAAC,EAAE,EAAA;AACxB,QAAA,IAAI,EAAE,EAAE;AACJ,YAAA,MAAM,EAAE,GAAG,IAAI,YAAY,EAAE,CAAC;AAC9B,YAAA,EAAE,CAAC,aAAa,CAAC,IAAI,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;AACtF,YAAA,OAAO,IAAI,UAAU,CAAM,CAAC,QAAQ,KAAI;gBACpC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;oBAC7C,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,iBAAC,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,IAAI,UAAU,CAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE,SAAA;KACJ;IAEM,2BAA2B,CAC9B,SAAiB,EACjB,sBAAsC,EAAA;AAEtC,QAAA,MAAM,EAAE,GAAG,IAAI,YAAY,EAAE,CAAC;AAC9B,QAAA,EAAE,CAAC,aAAa,CAAC,IAAI,cAAc,CAAC,WAAW,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;AAC9E,QAAA,EAAE,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;AACzC,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;KACpC;IAEM,+BAA+B,CAClC,SAAiB,EACjB,kBAAkC,EAAA;AAElC,QAAA,MAAM,EAAE,GAAG,IAAI,YAAY,EAAE,CAAC;AAC9B,QAAA,EAAE,CAAC,aAAa,CAAC,IAAI,cAAc,CAAC,WAAW,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;AAC9E,QAAA,EAAE,CAAC,aAAa,CAAC,IAAI,cAAc,CAAC,WAAW,EAAE,SAAS,CAAC,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1F,QAAA,EAAE,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;AACrC,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;KACpC;AAEM,IAAA,cAAc,CAAC,WAAW,EAAA;AAC7B,QAAA,OAAO,IAAI,UAAU,CAAM,CAAC,QAAQ,KAAI;AACpC,YAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACnE,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC;YACvD,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC;AAChE,YAAA,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;YACxC,GAAG;AACE,iBAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,WAAW,EAAE,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC;AACzF,iBAAA,SAAS,CAAC,CAAC,QAAa,KAAI;gBACzB,IAAI,CAAC,QAAQ,EAAE;AACX,oBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,iBAAA;AACD,gBAAA,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC5B,aAAC,CAAC,CAAC;AACX,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,gBAAgB,CAAC,aAAqB,EAAA;AACzC,QAAA,OAAO,IAAI,UAAU,CAAU,CAAC,QAAQ,KAAI;AACxC,YAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACnE,YAAA,MAAM,MAAM,GAAG;AACX,gBAAA,EAAE,EAAE,aAAa;aACpB,CAAC;YACF,GAAG;AACE,iBAAA,GAAG,CAAC,iBAAiB,CAAC,UAAU,CAAC,WAAW,EAAE,iBAAiB,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE,EAAE,MAAM,CAAC;AACpG,iBAAA,SAAS,CAAC,CAAC,QAAQ,KAAI;AACpB,gBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,aAAC,CAAC,CAAC;AACX,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,mBAAmB,CAAC,0BAAsD,EAAA;AAC7E,QAAA,OAAO,IAAI,UAAU,CAAU,CAAC,QAAQ,KAAI;;AAExC,YAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACnE,GAAG;AACE,iBAAA,GAAG,CAAC,iBAAiB,CAAC,UAAU,CAAC,WAAW,EAAE,iBAAiB,CAAC,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;AACvH,iBAAA,SAAS,CAAC,CAAC,QAAa,KAAI;gBACzB,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACvC,oBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,iBAAA;AAAM,qBAAA;AACH,oBAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,iBAAA;AACL,aAAC,CAAC,CAAC;AACX,SAAC,CAAC,CAAC;KACN;;AAvGQ,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,2EAIjB,aAAa,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;sHAJhB,oBAAoB,EAAA,CAAA,CAAA;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;;0BAKF,MAAM;2BAAC,aAAa,CAAA;;;MCFhB,yBAAyB,CAAA;AAClC,IAAA,WAAA,CACmC,YAAiB,EACxC,gBAAiC,EACjC,mBAAyC,EAC1C,UAAsB,EAAA;QAHE,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAK;QACxC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAiB;QACjC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAsB;QAC1C,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;KAC5B;;AAGE,IAAA,WAAW,CAAC,eAAoB,EAAA;AACnC,QAAA,OAAO,IAAI,UAAU,CAAU,CAAC,QAAQ,KAAI;AACxC,YAAA,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;AAC5C,YAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACnE,GAAG;AACE,iBAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,QAAQ,EAAE,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC;AACtF,iBAAA,SAAS,CAAC,CAAC,QAAa,KAAI;AACzB,gBAAA,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC5B,aAAC,CAAC,CAAC;AACX,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,gBAAgB,CAAC,uBAA4B,EAAA;AAChD,QAAA,OAAO,IAAI,UAAU,CAAU,CAAC,QAAQ,KAAI;AACxC,YAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACnE,GAAG;AACE,iBAAA,IAAI,CACD,iBAAiB,CAAC,UAAU,CAAC,QAAQ,EACrC,iBAAiB,CAAC,MAAM,CAAC,gBAAgB,EACzC,uBAAuB,CAC1B;AACA,iBAAA,SAAS,CAAC,CAAC,QAAa,KAAI;gBACzB,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACvC,oBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,iBAAA;AAAM,qBAAA;oBACH,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAC1B,oBAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,iBAAA;AACL,aAAC,CAAC,CAAC;AACX,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,gBAAgB,CAAC,uBAA4B,EAAA;AAChD,QAAA,OAAO,IAAI,UAAU,CAAU,CAAC,QAAQ,KAAI;AACxC,YAAA,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC;AACpD,YAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACnE,GAAG;AACE,iBAAA,GAAG,CAAC,iBAAiB,CAAC,UAAU,CAAC,QAAQ,EAAE,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC;AACrF,iBAAA,SAAS,CAAC,CAAC,QAAa,KAAI;gBACzB,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACvC,oBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,iBAAA;AAAM,qBAAA;oBACH,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAC3B,oBAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,iBAAA;AACL,aAAC,CAAC,CAAC;AACX,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,iBAAiB,CAAC,kBAAuB,EAAA;AAC5C,QAAA,OAAO,IAAI,UAAU,CAAU,CAAC,QAAQ,KAAI;;AAExC,YAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACnE,GAAG;AACE,iBAAA,GAAG,CAAC,iBAAiB,CAAC,UAAU,CAAC,WAAW,EAAE,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,kBAAkB,CAAC;AACnG,iBAAA,SAAS,CAAC,CAAC,QAAa,KAAI;gBACzB,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACvC,oBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,iBAAA;AAAM,qBAAA;AACH,oBAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,iBAAA;AACL,aAAC,CAAC,CAAC;AACX,SAAC,CAAC,CAAC;KACN;AAGM,IAAA,mBAAmB,CAAC,0BAAsD,EAAA;AAC7E,QAAA,OAAO,IAAI,UAAU,CAAU,CAAC,QAAQ,KAAI;;AAExC,YAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACnE,GAAG;AACE,iBAAA,GAAG,CAAC,iBAAiB,CAAC,UAAU,CAAC,WAAW,EAAE,iBAAiB,CAAC,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;AACvH,iBAAA,SAAS,CAAC,CAAC,QAAa,KAAI;gBACzB,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACvC,oBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,iBAAA;AAAM,qBAAA;AACH,oBAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,iBAAA;AACL,aAAC,CAAC,CAAC;AACX,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,cAAc,CAAC,SAAS,EAAA;AAC3B,QAAA,OAAO,IAAI,UAAU,CAAM,CAAC,QAAQ,KAAI;AACpC,YAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;AAClE,gBAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3B,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,kBAAkB,CAAC,aAAqB,EAAA;AAC3C,QAAA,OAAO,IAAI,UAAU,CAAM,CAAC,QAAQ,KAAI;AACpC,YAAA,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,KAAI;AACjF,gBAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACN;IAEM,+BAA+B,CAAC,SAAiB,EAAE,kBAAkC,EAAA;AACxF,QAAA,OAAO,IAAI,UAAU,CAAM,CAAC,QAAQ,KAAI;AACpC,YAAA,IAAI,CAAC,mBAAmB;AACnB,iBAAA,+BAA+B,CAAC,SAAS,EAAE,kBAAkB,CAAC;AAC9D,iBAAA,SAAS,CAAC,CAAC,aAAa,KAAI;AACzB,gBAAA,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACjC,aAAC,CAAC,CAAC;AACX,SAAC,CAAC,CAAC;KACN;;AAnHQ,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,kBAEtB,aAAa,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAT,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2HAFhB,yBAAyB,EAAA,CAAA,CAAA;4FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,UAAU;;0BAGF,MAAM;2BAAC,aAAa,CAAA;;;MCEhB,yBAAyB,CAAA;;AAmElC,IAAA,WAAA,CACY,GAAgB,EAChB,0BAAqD,EACrD,iBAAqC,EACrC,gBAAiC,EAAA;QAHjC,IAAG,CAAA,GAAA,GAAH,GAAG,CAAa;QAChB,IAA0B,CAAA,0BAAA,GAA1B,0BAA0B,CAA2B;QACrD,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAoB;QACrC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAiB;;;AAzDtC,QAAA,IAAA,CAAA,mBAAmB,GAAS,IAAI,IAAI,EAAE,CAAC;;AA4GtC,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,IAAiB,KAA+B;AACpE,YAAA,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AAClG,gBAAA,OAAO,EAAE,WAAW,EAAE,6BAA6B,EAAE,CAAC;AACzD,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;AAChB,SAAC,CAAC;AAEM,QAAA,IAAA,CAAA,8BAA8B,GAAG,CAAC,WAAW,KAAI;AACrD,YAAA,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,iCAAiC,EAAE;gBAC3E,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;AAC1D,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;AAChB,SAAC,CAAC;AA7DE,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;AACrC,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,YAAY,EAAO,CAAC;AAC/C,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,YAAY,EAAO,CAAC;AACpD,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,YAAY,EAAO,CAAC;AACnD,QAAA,IAAI,CAAC,2BAA2B,GAAG,IAAIU,cAAY,EAAE,CAAC;KACzD;AA/DD,IAAA,IAAW,OAAO,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;KAC7C;AAED,IAAA,IAAW,eAAe,GAAA;QACtB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAC9B,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;KACxC;AAED,IAAA,IAAW,gBAAgB,GAAA;QACvB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAC9B,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC;KAC3C;AAED,IAAA,IAAW,mBAAmB,GAAA;QAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAC9B,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC;KAC5C;AAED,IAAA,IAAW,uBAAuB,GAAA;QAC9B,OAAO,IAAI,CAAC,wBAAwB,CAAC;KACxC;AAED,IAAA,IAAW,iCAAiC,GAAA;QACxC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAC7B,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,iBAAiB,CAAC,iBAAiB,CAAC,OAAO,CAAC;KACxF;AAED,IAAA,IAAW,kBAAkB,GAAA;AACzB,QAAA,OAAO,0BAA0B,CAAC;KACrC;AAED,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAED,IAAA,IAAW,gBAAgB,GAAA;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;IAED,IAAW,YAAY,CAAC,KAAU,EAAA;AAC9B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC9B;IAeD,QAAQ,GAAA;QACJ,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE,CAAC;AAC/C,QAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,SAAS,CAChF,CAAC,KAAK,KAAI;YACN,IAAI,CAAC,YAAY,EAAE,CAAC;AACxB,SAAC,CACJ,CAAA;KACJ;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,EAAE;YACnF,IAAI,CAAC,8BAA8B,EAAE,CAAC;AACtC,YAAA,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC;gBACrC,YAAY,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;AACvD,aAAA,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,0BAA0B,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;AAC1F,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvC,aAAC,CAAC,CAAC;YAEH,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AAC/C,gBAAA,IAAI,CAAC,0BAA0B;AAC1B,qBAAA,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC/C,qBAAA,SAAS,CAAC,CAAC,WAAW,KAAI;AACvB,oBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAE3C,oBAAA,IAAI,CAAC,0BAA0B;AAC1B,yBAAA,+BAA+B,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;AACzF,yBAAA,SAAS,CAAC,CAAC,aAAa,KAAI;AACzB,wBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAClD,qBAAC,CAAC,CAAC;AACX,iBAAC,CAAC,CAAC;AACV,aAAA;AACJ,SAAA;KACJ;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE,CAAC;KAClD;;;IAmBO,8BAA8B,GAAA;QAClC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE;YAC7C,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3C,gBAAA,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC9D,qBAAqB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;gBACjE,WAAW,EAAE,CAAC,EAAE,CAAC;gBACjB,QAAQ,EAAE,CAAC,EAAE,CAAC;AACjB,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;;;AAIM,IAAA,cAAc,CAAC,SAAoB,EAAE,WAAmB,EAAE,QAAiB,EAAA;QAC9E,OAAO,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;KACjE;AAEM,IAAA,aAAa,CAAC,SAAoB,EAAE,WAAmB,EAAE,QAAgB,EAAA;QAC5E,OAAO,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;KAChE;IAEO,YAAY,GAAA;AACE,QAAA,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC;YACvD,kBAAkB,CAAC,YAAY,CAAC,YAAY;AAC/C,SAAA,CAAE,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AACvB,YAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrB,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AACzE,gBAAA,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACpC,aAAA;AACL,SAAC,CAAC,CAAA;KACL;;uHAxKQ,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAZ,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAa,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,mRCdtC,+hJAsFM,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,eAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,aAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,WAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,KAAA,EAAA,WAAA,EAAA,MAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,WAAA,EAAAQ,EAAA,CAAA,aAAA,EAAA,EAAA,CAAA,CAAA;4FDxEO,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;+BACI,uBAAuB,EAAA,QAAA,EAAA,+hJAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;wMAKxB,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACI,eAAe,EAAA,CAAA;sBAAxB,MAAM;gBACG,oBAAoB,EAAA,CAAA;sBAA7B,MAAM;gBACG,mBAAmB,EAAA,CAAA;sBAA5B,MAAM;;;MEhBE,gBAAgB,CAAA;AAG3B,IAAA,WAAA,GAAA,GAAgB;AAGhB,IAAA,2BAA2B,CAAC,YAAqB,EAAA;AAE/C,QAAA,IAAG,YAAY,EACf;AACE,YAAA,IAAI,CAAC,wBAAwB,GAAG,YAAY,CAAA;AAC7C,SAAA;AAED,aAAA;AACE,YAAA,IAAI,CAAC,wBAAwB,GAAG,EAAE,CAAC;AACpC,SAAA;KACF;AAED,IAAA,wBAAwB,CAAC,WAAkB,EAAA;AAEzC,QAAA,IAAG,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,WAAW;AAC/C,YAAA,OAAO,KAAK,CAAC;QAEf,OAAO,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;KAC5D;;8GAxBU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAhB,gBAAgB,EAAA,CAAA,CAAA;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;;;MCAE,6BAA6B,CAAA;AAMtC;;AAEG;IACH,WAAY,CAAA,IAAU,EAAE,UAAkB,EAAE,WAAoB,KAAK,EAAE,QAAgB,OAAO,EAAA;AAC1F,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC5B;AACJ;;ICjBW,KAIX;AAJD,CAAA,UAAY,IAAI,EAAA;AACZ,IAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa,CAAA;AACb,IAAA,IAAA,CAAA,IAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAgB,CAAA;AAEpB,CAAC,EAJW,IAAI,KAAJ,IAAI,GAIf,EAAA,CAAA,CAAA;;MCwBY,8BAA8B,CAAA;AASvC,IAAA,WAAA,CAAoB,gBAAiC,EAAA;QAAjC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAiB;AAN3C,QAAA,IAAA,CAAA,YAAY,GAAsB,IAAI,YAAY,EAAO,CAAC;AAI5D,QAAA,IAAA,CAAA,QAAQ,GAAQ,CAAC,CAAM,KAAI,GAAI,CAAC;AAGpC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,6BAA6B,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,8BAA8B,GAAG,IAAI,SAAS,CAAC;AAChD,YAAA,YAAY,EAAE,IAAI,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;AACtC,SAAA,CAAC,CAAC;KACN;AAED,IAAA,IAAW,mBAAmB,GAAA;QAC1B,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;AAED,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAED,IAAW,KAAK,CAAC,CAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KACpB;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC;KAChD;AACD,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC;KACnD;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,8BAA8B,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AACpE,YAAA,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC;AACxC,SAAC,CAAC,CAAC;KACN;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;;AAE9B,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACrC,QAAA,IAAI,QAAQ,EAAE;AACV,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC;AACzC,SAAA;KACJ;AAED,IAAA,UAAU,CAAC,GAAQ,EAAA;AACf,QAAA,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3F,QAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;KACrB;AAED,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,iBAAiB,CAAC,EAAO,EAAA,GAAW;AAEpC,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACjC,QAAA,UAAU,GAAG,IAAI,CAAC,8BAA8B,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,8BAA8B,CAAC,MAAM,EAAE,CAAC;KAC7G;;IAGO,eAAe,GAAA;QACnB,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,IAAgB,KAAI;AAC/D,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACvC,YAAA,IAAI,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE;gBAC/B,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC;gBAC9D,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;oBACvC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;AAC9E,iBAAC,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;AACvC,aAAA;AACD,YAAA,IAAI,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE;gBAClC,MAAM,wBAAwB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC/F,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;oBAC3D,OAAO;wBACH,KAAK,EAAE,CAAC,CAAC,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU;AACpD,wBAAA,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;qBAC9C,CAAC;AACN,iBAAC,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC3B,oBAAA,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU;oBACrD,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;AAClB,wBAAA,OAAO,CAAC,CAAC;AACb,qBAAC,CAAC;AACL,iBAAA,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC3B,oBAAA,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU;oBACvC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AACpG,iBAAA,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;AACpC,gBAAA,IAAI,CAAC,8BAA8B,CAAC,UAAU,CAAC;AAC3C,oBAAA,YAAY,EAAE;wBACV,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AAC7F,qBAAA;AACJ,iBAAA,CAAC,CAAC;gBACH,IAAI,CAAC,QAAQ,CAAC;oBACV,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AAC7F,iBAAA,CAAC,CAAC;AACN,aAAA;;AAEL,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,WAAW,CAAC,KAAK,EAAA;AACpB,QAAA,MAAM,KAAK,GAAe,KAAK,CAAC,KAAK,CAAC;AACtC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACjC;AAED,IAAA,IAAW,QAAQ,GAAA;AACf,QAAA,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;KACrE;;4HAxHQ,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAd,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,8BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,EAR5B,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAAA;AACP,QAAA;AACI,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,WAAW,EAAE,UAAU,CAAC,MAAM,8BAA8B,CAAC;AAC7D,YAAA,KAAK,EAAE,IAAI;AACd,SAAA;AACJ,KAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1BL,qzCAwBO,EAAA,MAAA,EAAA,CAAA,qPAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,aAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4FDIM,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAb1C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,EAGxB,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAC1B,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,oCAAoC,CAAC;AAC7D,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACJ,qBAAA,EAAA,QAAA,EAAA,qzCAAA,EAAA,MAAA,EAAA,CAAA,qPAAA,CAAA,EAAA,CAAA;sGAGQ,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEI,YAAY,EAAA,CAAA;sBAArB,MAAM;;;MEIE,uBAAuB,CAAA;;AAsJhC,IAAA,WAAA,CACY,GAAgB,EAChB,EAAoB,EACpB,UAAsB,EACtB,gBAAiC,EACjC,gBAAiC,EACjC,0BAAqD,EACrD,iBAAqC,EACrC,iBAAkC,EACX,YAAiB,EAChB,aAAkB,EAAA;QAT1C,IAAG,CAAA,GAAA,GAAH,GAAG,CAAa;QAChB,IAAE,CAAA,EAAA,GAAF,EAAE,CAAkB;QACpB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAiB;QACjC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAiB;QACjC,IAA0B,CAAA,0BAAA,GAA1B,0BAA0B,CAA2B;QACrD,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAoB;QACrC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAiB;QACX,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAK;QAChB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAK;QA1J7C,IAAqB,CAAA,qBAAA,GAAS,IAAI,CAAC;QACnC,IAAgB,CAAA,gBAAA,GAAY,KAAK,CAAC;QAClC,IAAoB,CAAA,oBAAA,GAAY,KAAK,CAAC;;;AAIrC,QAAA,IAAA,CAAA,kBAAkB,GAA0B,IAAI,YAAY,EAAE,CAAC;QAUlE,IAAuB,CAAA,uBAAA,GAAW,KAAK,CAAC;QACxC,IAAiC,CAAA,iCAAA,GAAW,KAAK,CAAC;AACjD,QAAA,IAAA,CAAA,aAAa,GAAkB;YACnC,kBAAkB,CAAC,YAAY,CAAC,eAAe;YAC/C,kBAAkB,CAAC,YAAY,CAAC,YAAY;YAC5C,kBAAkB,CAAC,YAAY,CAAC,WAAW;SAC9C,CAAC;AAGM,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,KAAK,EAAoB,CAAC;QAerD,IAAW,CAAA,WAAA,GAAG,gCAAgC,CAAC;;AAoM9C,QAAA,IAAA,CAAA,8BAA8B,GAAG,CAAC,WAAW,KAAI;YACrD,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE;AAC7C,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AACD,YAAA,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,+BAA+B,EAAE;gBACzE,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;AAC1D,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;AAChB,SAAC,CAAC;AAEM,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,IAAiB,KAA+B;AACtE,YAAA,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;AAClG,gBAAA,OAAO,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;AAC3D,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;AAChB,SAAC,CAAC;AAuCM,QAAA,IAAA,CAAA,uBAAuB,GAAG,CAAC,CAAc,KAA6B;AAC1E,YAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;gBAC1E,OAAO,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1D,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;AAChB,SAAC,CAAC;AAIM,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,CAAc,KAAI;;;;YAKxC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE;gBACzD,IAAI,CAAC,YAAY,EAAE,CAAC;AACvB,aAAA;AACL,SAAC,CAAC;AACM,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,CAAc,KAAI;YAC1C,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE;gBAEzD,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE;AACnI,oBAAA,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC;wBACrC,WAAW,EAAC,IAAI,CAAC,oBAAoB,GAAG,GAAG,GAAG,IAAI;AAClD,wBAAA,gBAAgB,EAAE,EAAE;AACpB,wBAAA,eAAe,EAAE,EAAE;AACnB,wBAAA,WAAW,EAAE,EAAE;AACf,wBAAA,kBAAkB,EAAE,IAAI;AACxB,wBAAA,WAAW,EAAE,IAAI;AACpB,qBAAA,CAAC,CAAC;;AAEH,oBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC,iBAAA;AAED,gBAAA,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC;AAC1C,aAAA;AAEL,SAAC,CAAA;AA3KG,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,KAAK,EAAO,CAAC;AACxC,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,KAAK,EAAO,CAAC;AACxC,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,KAAK,EAAO,CAAC;AAC7C,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,KAAK,EAAO,CAAC;AACjD,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,0BAA0B,GAAG,KAAK,CAAC;AACxC,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;AACrC,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,KAAK,EAAO,CAAC;AAC5C,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,YAAY,EAAO,CAAC;AAC/C,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,YAAY,EAAO,CAAC;AACpD,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,YAAY,EAAO,CAAC;QACnD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;AAC1C,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;KACnC;;;AA9HD,IAAA,IAAW,cAAc,GAAA;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED,IAAA,IAAW,cAAc,GAAA;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED,IAAA,IAAW,kBAAkB,GAAA;QACzB,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACnC;AAED,IAAA,IAAW,mBAAmB,GAAA;QAC1B,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;AAED,IAAA,IAAW,uBAAuB,GAAA;QAC9B,OAAO,IAAI,CAAC,wBAAwB,CAAC;KACxC;;;AAID,IAAA,IAAW,+BAA+B,GAAA;AACtC,QAAA,OAAO,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,kBAAkB,CAAC;KACpE;AAED,IAAA,IAAW,cAAc,GAAA;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;;AAGD,IAAA,IAAW,yBAAyB,GAAA;QAChC,OAAO,IAAI,CAAC,0BAA0B,CAAC;KAC1C;AAED,IAAA,IAAW,iBAAiB,GAAA;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AAED,IAAA,IAAW,cAAc,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC;KACjD;AAED,IAAA,IAAW,OAAO,GAAA;AACd,QAAA,IAAG,IAAI,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC,EACjH;AACI,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;;QAGD,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;AAC7C,SAAA;;AAGD,QAAA,IAAI,CAAC,IAAI,CAAC,+BAA+B,EAAE;YACvC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,OAAO,EAAE,CAAC;AACvE,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,MAAM,EAAE,CAAC;AACtE,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;KAC7C;AAED,IAAA,IAAW,mBAAmB,GAAA;QAC1B,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC;KAC9F;;;AAID,IAAA,IAAW,uBAAuB,GAAA;QAC9B,OAAO,IAAI,CAAC,wBAAwB,CAAC;KACxC;AAED,IAAA,IAAW,kBAAkB,GAAA;QACzB,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACnC;AAED,IAAA,IAAW,kBAAkB,GAAA;AACzB,QAAA,OAAO,0BAA0B,CAAC;KACrC;AAED,IAAA,IAAW,gBAAgB,GAAA;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;AAED,IAAA,IAAW,sBAAsB,GAAA;;;;;QAM7B,OAAO,IAAI,CAAC,oBAAoB;AACtB,eAAA,IAAI,CAAC,uBAAuB;AAC5B,eAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,aAAa,CAAC;eAC/C,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK,IAAI,GAAG,CAAA;KACzE;IAgCD,QAAQ,GAAA;QACJ,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,KAAK,KAClF,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;KAC7B;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,EAAE;YAC3F,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAE3B,YAAA,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;AACpH,iBAAA,SAAS,CAAC,CAAC,CAAC,KAAI;gBACjB,IAAG,IAAI,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,CAAC,CAAC,EACrD;AACI,oBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,iBAAA;AACL,aAAC,CAAC,CAAC;AACF,SAAA;;AAGD,QAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC5D,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,EAAE;AAC7F,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC;AACjD,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,YAAY,CAAC,EAAE;AACzG,YAAA,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC;gBACrC,WAAW,EAAE,IAAI,CAAC,mBAAmB;AACxC,aAAA,CAAC,CAAC;AACN,SAAA;;;;;;;;;KASJ;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,CAAC;KAC9C;;AAED,IAAA,IAAW,wBAAwB,GAAA;QAC/B,OAAO,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KACxD;AAED,IAAA,IAAW,4BAA4B,GAAA;QACnC,OAAO,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;KAC5D;AAED,IAAA,IAAW,kBAAkB,GAAA;QACzB,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACnC;IAED,IAAW,kBAAkB,CAAC,KAAK,EAAA;AAC/B,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;KACpC;AAoBM,IAAA,iCAAiC,CAAC,KAAK,EAAA;AAC1C,QAAA,IAAI,CAAC,8BAA8B,GAAG,KAAK,CAAC;KAC/C;IAEM,yBAAyB,GAAA;QAC5B,IACI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,8BAA8B,CAAC;AAC7D,YAAA,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,CAAC,kBAAkB,EAChE;YACE,MAAM,gBAAgB,GAAG,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzE,OAAO,gBAAgB,KAAK,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;AACnD,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,mBAAmB,GAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;AAC9B,YAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1F,YAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzF,YAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AACxF,YAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAChE,SAAA;AACI,aAAA;AACD,YAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,gBAAgB,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7F,YAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,gBAAgB,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC5F,YAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AACrF,YAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClE,YAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACpE,SAAA;QAED,CAAC,kBAAkB,EAAC,iBAAiB,EAAC,aAAa,CAAC,CAAC,OAAO,CACxD,CAAC,IAAG;YACA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,sBAAsB,EAAE,CAAC;AACjE,SAAC,CACJ,CAAC;KACT;AAyCG,IAAA,0BAA0B,CAAC,OAAO,EAAA;AAE9B,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;QACxB,IAAI,UAAU,IAAU,OAAO,EAAE,SAAS,IAAE,CAAC,CAAC,CAAC;AAE3C,QAAA;YACI,aAAa;YACb,kBAAkB;YAClB,iBAAiB;YACjB,aAAa;AAEhB,SAAA,CAAC,OAAO,CACL,GAAG,IAAG;AACF,YAAA,IAAG,UAAU;gBACb,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;;gBAEjD,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AACpD,SAAC,CACJ,CAAC;KACT;;;IAKO,mBAAmB,GAAA;QACvB,QAAQ,IAAI,CAAC,YAAY;YACrB,KAAK,YAAY,CAAC,OAAO;gBACrB,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE;oBAC7C,IAAI,CAAC,6BAA6B,EAAE,CAAC;AACxC,iBAAA;gBACD,MAAM;YACV,KAAK,YAAY,CAAC,IAAI;AAClB,gBAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,IAAI,EAAE,CAAC;gBACxC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE;oBAC7C,IAAI,CAAC,0BAA0B,EAAE,CAAC;AACrC,iBAAA;gBACD,MAAM;AACb,SAAA;KACJ;IAEO,0BAA0B,GAAA;QAC9B,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3C,YAAA,cAAc,EAAE;gBACZ,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;;gBAE1F,EAAE;AACL,aAAA;YACD,gBAAgB,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC/C,OAAO,EAAE,CAAC,IAAI,CAAC;AACf,YAAA,WAAW,EAAC,CAAC,IAAI,CAAC,oBAAoB,GAAG,GAAG,GAAC,IAAI,CAAC;YAClD,gBAAgB,EAAE,CAAC,EAAE,CAAC;YACtB,eAAe,EAAE,CAAC,EAAE,CAAC;YACrB,WAAW,EAAC,CAAC,EAAE,CAAC;YAChB,kBAAkB,EAAE,CAAC,IAAI,CAAC;YAC1B,WAAW,EAAE,CAAC,IAAI,CAAC;YACnB,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC/C,YAAA,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAClE,WAAW,EAAE,CAAC,EAAE,CAAC;YACjB,aAAa,EAAE,CAAC,KAAK,CAAC;AACzB,SAAA,CAAC,CAAC;;;;KAIN;IAEO,6BAA6B,GAAA;QACjC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3C,YAAA,cAAc,EAAE;gBACZ,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC1F,gBAAA,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC;AAC7C,aAAA;YACD,gBAAgB,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC/C,YAAA,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC;AACtC,YAAA,WAAW,EAAE,CAAC,IAAI,CAAC,oBAAoB,GAAG,GAAG,GAAG,IAAI,CAAC;YACrD,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC7C,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC5C,WAAW,EAAC,CAAC,EAAE,CAAC;AAChB,YAAA,kBAAkB,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;YAC/E,WAAW,EAAE,CAAC,IAAI,CAAC;YACnB,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;YAC/C,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC7C,qBAAqB,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YACpE,WAAW,EAAE,CAAC,EAAE,CAAC;YACjB,QAAQ,EAAE,CAAC,EAAE,CAAC;YACd,aAAa,EAAE,CAAC,KAAK,CAAC;AACzB,SAAA,CAAC,CAAC;KACN;IAEO,aAAa,GAAA;AACjB,QAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,oBAAoB;cAClD,IAAI,CAAC,aAAa;cAClB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,kBAAkB,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AAEzF,QAAA,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,sBAAsB,CAAqB,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;YACzG,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AACxE,YAAA,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC,IAAI,CACtC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAE,kBAAkB,CAAC,YAAY,CAAC,YAAY,CAAC,CACrH,CAAC;AACF,YAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,IAAI,CACjC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,YAAY,CAAC,eAAe,CAAC,CACvH,CAAC;YAEF,IAAI,IAAI,CAAC,oBAAoB,EAAE;gBAC3B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,6BAA6B,CAC1E,SAAS,EACT,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,YAAY,CAAC,WAAW,CAAC,CACvF,CAAA;AACJ,aAAA;AAED,YAAA,IACI,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,IAAI;AACtC,gBAAA,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,EACpE;gBACE,IAAI,CAAC,wBAAwB,GAAG,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACrE,gBAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AACnE,aAAA;AACL,SAAC,CAAC,CAAC;KACN;;;AAIM,IAAA,gBAAgB,CAAC,YAAY,EAAA;AAChC,QAAA,IAAI,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;AAC5B,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;QACD,OAAO,iBAAiB,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC;KAC9D;AAEM,IAAA,gBAAgB,CAAC,YAAY,EAAA;AAChC,QAAA,OAAO,EAAE,KAAK,EAAE,iBAAiB,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC;KACzE;;;AAIM,IAAA,MAAM,CAAC,KAAK,EAAA;QACf,MAAM,KAAK,GAAI,KAAK,CAAC,KAAgB,CAAC,IAAI,EAAE,CAAC;AAC7C,QAAA,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;AAExC,QAAA,IAAI,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;QAC1C,cAAc,CAAC,4BAA4B,CACvC;YACI,IAAI,cAAc,CAAC,WAAW,EAAE,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC;YAC1D,IAAI,cAAc,CAAC,UAAU,EAAE,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC;YACzD,IAAI,cAAc,CAAC,eAAe,EAAE,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC;AACjE,SAAA,CACJ,CAAC;AACF,QAAA,YAAY,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;AAC3C,QAAA,YAAY,CAAC,aAAa,CAAC,IAAI,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACjF,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;AAC7B,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,EAAE;AAC1E,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC;AAC3E,gBAAA,MAAM,eAAe,GAAG,IAAI,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxF,gBAAA,YAAY,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;AAC5C,gBAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;AACpC,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/C,YAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;AACpC,SAAA;KACJ;AAEO,IAAA,aAAa,CAAC,YAAY,EAAA;AAC9B,QAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACnE,GAAG;AACE,aAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;AACzF,aAAA,SAAS,CAAC,CAAC,QAAa,KAAI;AACzB,YAAA,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC;AACzC,SAAC,CAAC,CAAC;KACV;AAEO,IAAA,6BAA6B,CAAC,OAAY,EAAA;AAC9C,QAAA,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AAC3B,YAAA,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC;AACrC,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,WAAW,EAAC,OAAO,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,WAAW,GAAG,IAAI;gBACtF,gBAAgB,EAAE,OAAO,CAAC,SAAS;gBACnC,eAAe,EAAE,OAAO,CAAC,QAAQ;AACjC,gBAAA,kBAAkB,EAAE,OAAO,CAAC,mBAAmB,CAAC,MAAM;gBACtD,WAAW,EAAC,OAAO,CAAC,aAAa;AACpC,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC9B,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC;AACrC,gBAAA,OAAO,EAAE,IAAI;gBACb,WAAW,EAAC,IAAI,CAAC,oBAAoB,GAAG,GAAG,GAAG,IAAI;AAClD,gBAAA,gBAAgB,EAAE,EAAE;AACpB,gBAAA,eAAe,EAAE,EAAE;AACnB,gBAAA,kBAAkB,EAAE,IAAI;AACxB,gBAAA,WAAW,EAAC,EAAE;AACjB,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;AACzC,SAAA;KACJ;;;AAIM,IAAA,eAAe,CAAC,OAAO,EAAA;AAC1B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,0BAA0B;aAC1B,+BAA+B,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;AAC5E,aAAA,SAAS,CAAC,CAAC,QAAQ,KAAI;AACpB,YAAA,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC;AACpC,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7C,SAAC,CAAC,CAAC;KACV;IAEO,YAAY,GAAA;AAChB,QAAA,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC;AACrC,YAAA,OAAO,EAAE,IAAI;;;;;AAKhB,SAAA,CAAC,CAAC;KACN;AAEM,IAAA,cAAc,CAAC,KAAK,EAAA;AACvB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE,CAAC;KAClD;AAEM,IAAA,oBAAoB,CAAC,KAAK,EAAA;QAC7B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KAC9C;AAEM,IAAA,oBAAoB,CAAC,KAAK,EAAA;AAC7B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC;AACpF,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,iBAAiB,CAAC,iBAAiB,CAAC,OAAO,CAAC;QAC1F,IAAG,IAAI,CAAC,iBAAiB,EACzB;AACI,YAAA,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAA;YAC1F,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,sBAAsB,EAAE,CAAC;YAC/E,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,eAAe,EAAE,CAAC;YACxE,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,cAAc,EAAE,CAAC;AACvE,YAAA,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACzE,SAAA;AAED,aAAA;AACI,YAAA,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAA;YAC7F,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,sBAAsB,EAAE,CAAC;AAC/E,YAAA,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxE,SAAA;KACJ;AAEM,IAAA,sBAAsB,CAAC,IAAI,EAAA;AAC9B,QAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;AACrC,QAAA,IAAI,CAAC,iCAAiC,GAAG,KAAK,CAAC;QAC/C,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,OAAO;AACV,SAAA;AACD,QAAA,IAAI,CAAC,0BAA0B,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;KACvF;;;AAIM,IAAA,cAAc,CAAC,SAAoB,EAAE,WAAmB,EAAE,QAAiB,EAAA;QAC9E,OAAO,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;KACjE;AAEM,IAAA,aAAa,CAAC,SAAoB,EAAE,WAAmB,EAAE,QAAgB,EAAA;QAC5E,OAAO,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;KAChE;;;AAIM,IAAA,sBAAsB,CAAC,IAAY,EAAA;AACtC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;AAC5D,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;AACxD,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;AACvD,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;;qHAtmBQ,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAS,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,EAAA,EAAA,KAAA,EA+JpB,aAAa,EAAA,EAAA,EAAA,KAAA,EACb,cAAc,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAhKjB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,4rBCnCpC,s2jBAqUc,EAAA,MAAA,EAAA,CAAA,wLAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,8BAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,YAAA,EAAA,YAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,QAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,eAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,aAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,WAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,KAAA,EAAA,WAAA,EAAA,MAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAArB,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAqB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAtB,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAuB,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAvB,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,WAAA,EAAAwB,EAAA,CAAA,aAAA,EAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4FDlSD,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;+BACI,qBAAqB,EAAA,aAAA,EAGhB,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,s2jBAAA,EAAA,MAAA,EAAA,CAAA,wLAAA,CAAA,EAAA,CAAA;;0BAiKhC,MAAM;2BAAC,aAAa,CAAA;;0BACpB,MAAM;2BAAC,cAAc,CAAA;4CA/JjB,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,qBAAqB,EAAA,CAAA;sBAA7B,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,oBAAoB,EAAA,CAAA;sBAA5B,KAAK;gBAII,kBAAkB,EAAA,CAAA;sBAA3B,MAAM;gBACG,eAAe,EAAA,CAAA;sBAAxB,MAAM;gBACG,oBAAoB,EAAA,CAAA;sBAA7B,MAAM;gBACG,mBAAmB,EAAA,CAAA;sBAA5B,MAAM;gBAGP,2BAA2B,EAAA,CAAA;sBAD1B,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,sBAAsB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;ME7C3C,iBAAiB,CAAA;IAK1B,WAAmB,CAAA,UAAsB,EAAiC,YAAiB,EAAA;QAAxE,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QAAiC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAK;AACvF,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;KAChE;;AAIM,IAAA,4BAA4B,CAAC,aAAqB,EAAA;AACrD,QAAA,OAAO,IAAIC,YAAU,CAAM,QAAQ,IAAG;AAClC,YAAA,IAAI,aAAa,EAAE;AAEf,gBAAA,MAAM,EAAE,GAAG,IAAI,YAAY,EAAE,CAAC;;gBAE9B,EAAE,CAAC,aAAa,CAAC,IAAI,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,aAAa,EAAE,iBAAiB,CAAC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;AAE7H,gBAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;qBACtF,SAAS,CAAC,UAAU,IAAG;AACpB,oBAAA,QAAQ,CAAC,IAAI,CAAE,UAAkB,CAAC,IAAI,CAAC,CAAC;AAC5C,iBAAC,CAAC,CAAC;AACV,aAAA;AAAM,iBAAA;AACH,gBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,aAAA;AACL,SAAC,CAAC,CAAC;KACN;IAEM,UAAU,CAAC,OAAY,EAAE,UAAiB,EAAA;AAC7C,QAAA,OAAO,IAAIA,YAAU,CAAM,QAAQ,IAAG;YAClC,IAAI,OAAO,IAAI,UAAU,EAAE;gBACvB,MAAM,UAAU,GAAG,CAAC,UAAU,KAAK,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC;AAC/G,gBAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC;qBACtE,SAAS,CAAC,QAAQ,IAAG;AAClB,oBAAA,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC5B,iBAAC,CAAC,CAAC;AACV,aAAA;AAAM,iBAAA;AACH,gBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,YAAY,CAAC,OAAe,EAAA;AAC/B,QAAA,OAAO,IAAIA,YAAU,CAAM,QAAQ,IAAG;AAClC,YAAA,IAAI,OAAO,EAAE;AACT,gBAAA,MAAM,EAAE,GAAG,IAAI,YAAY,EAAE,CAAC;gBAC9B,EAAE,CAAC,aAAa,CAAC,IAAI,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAAE,iBAAiB,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAE5G,gBAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;qBACtF,SAAS,CAAC,UAAU,IAAG;AACpB,oBAAA,IAAK,UAAkB,CAAC,YAAY,GAAG,CAAC,EAAE;wBACtC,QAAQ,CAAC,IAAI,CAAE,UAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,qBAAA;AAAM,yBAAA;AACH,wBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,qBAAA;AACL,iBAAC,CAAC,CAAC;AACV,aAAA;AAAM,iBAAA;AACH,gBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,sBAAsB,CAAC,OAAe,EAAA;AACzC,QAAA,OAAO,IAAIA,YAAU,CAAM,QAAQ,IAAG;AAClC,YAAA,IAAI,OAAO,EAAE;AACT,gBAAA,MAAM,MAAM,GAAG;AACX,oBAAA,EAAE,EAAE,OAAO;iBACd,CAAC;gBACF,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,UAAU,CAAC,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,iBAAiB,EAAE,IAAI,EAAE,MAAM,CAAC;qBAC1G,SAAS,CAAC,IAAI,IAAG;AACd,oBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,iBAAC,CAAC,CAAC;AACV,aAAA;AAAM,iBAAA;AACH,gBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,wBAAwB,CAAC,aAAqB,EAAA;AACjD,QAAA,OAAO,IAAIA,YAAU,CAAU,QAAQ,IAAG;YACtC,IAAI,CAAC,4BAA4B,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,UAAU,IAAG;gBACpE,IAAI,mBAAmB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/E,gBAAA,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACvC,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACN;;AAtFQ,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,4CAKyB,aAAa,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHALvD,iBAAiB,EAAA,CAAA,CAAA;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;;0BAMqC,MAAM;2BAAC,aAAa,CAAA;;;MCEvD,4BAA4B,CAAA;;AAoErC,IAAA,WAAA,CACY,GAAgB,EAChB,gBAAiC,EACjC,kBAAqC,EACrC,iBAAqC,EAAA;QAHrC,IAAG,CAAA,GAAA,GAAH,GAAG,CAAa;QAChB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAiB;QACjC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAmB;QACrC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAoB;QAtExC,IAAiC,CAAA,iCAAA,GAAY,IAAI,CAAC;AAUnD,QAAA,IAAA,CAAA,cAAc,GAAkB;YACpC,kBAAkB,CAAC,YAAY,CAAC,sBAAsB;YACtD,kBAAkB,CAAC,YAAY,CAAC,gBAAgB;YAChD,kBAAkB,CAAC,YAAY,CAAC,iBAAiB;YACjD,kBAAkB,CAAC,YAAY,CAAC,sBAAsB;SACzD,CAAC;AAyDE,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;AACrC,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,4BAA4B,EAAE,CAAC;KACvC;;;;AA1DD,IAAA,IAAW,OAAO,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;KAC7C;;;;AAMD,IAAA,IAAW,iBAAiB,GAAA;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AAED,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAED,IAAA,IAAW,kBAAkB,GAAA;QACzB,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACnC;AAED,IAAA,IAAW,wBAAwB,GAAA;QAC/B,OAAO,IAAI,CAAC,yBAAyB,CAAC;KACzC;AAED,IAAA,IAAW,uBAAuB,GAAA;QAC9B,OAAO,IAAI,CAAC,wBAAwB,CAAC;KACxC;AAED,IAAA,IAAW,kBAAkB,GAAA;AACzB,QAAA,OAAO,0BAA0B,CAAC;KACrC;AAED,IAAA,IAAW,mBAAmB,GAAA;QAC1B,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;AAED,IAAA,IAAW,mBAAmB,GAAA;AAE1B,QAAA,OAAO,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,KAAK,IAAI,CAAC,CAAA;KAC1G;IAqBD,QAAQ,GAAA;QACJ,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,KAAK,KACnF,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;KAC5B;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,YAAY,CAAC,EAAE;AACzG,YAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAC1D,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;AAChE,SAAA;KACJ;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,CAAC;AAC3C,QAAA,IAAI,CAAC,qCAAqC,CAAC,WAAW,EAAE,CAAC;KAC5D;;IAGO,yBAAyB,GAAA;QAC7B,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;;YAE3C,gBAAgB,EAAE,CAAC,KAAK,CAAC;YACzB,gBAAgB,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpD,UAAU,EAAE,CAAC,IAAI,CAAC;YAClB,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC7C,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACzC,4BAA4B,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC3D,8BAA8B,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC7D,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC7C,WAAW,EAAE,CAAC,IAAI,CAAC;AACtB,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,IAAG;AAE7E,YAAA,IAAG,KAAK,IAAI,gBAAgB,CAAC,IAAI,EACjC;AACI,gBAAA,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACtF,aAAA;AAED,iBAAA;AACI,gBAAA,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACzF,aAAA;AACD,YAAA,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACjG,SAAC,CACJ,CAAC;KACL;IAEO,YAAY,GAAA;AACE,QAAA,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAE,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;YACpG,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AACzE,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,iBAAiB,CAC9C,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC,CAC9I,CAAC;AACF,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,iBAAiB,CACxC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,IAAG,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAE,kBAAkB,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CACxI,CAAC;AAEF,YAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,iBAAiB,CAC7C,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,IAAG,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAE,kBAAkB,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC,CAC9I,CAAC;;AAEN,SAAC,CAAC,CAAC;KACN;IAED,4BAA4B,GAAA;QACxB,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;AAC1F,QAAA,IAAI,CAAC,qCAAqC,GAAG,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,IAAI,CAAC,yBAAyB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;KAC/I;;;AAIO,IAAA,0BAA0B,CAAC,WAAgB,EAAA;AAC/C,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC;AACzC,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC;;AAErC,gBAAA,gBAAgB,EAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE;gBACjD,UAAU,EAAC,WAAW,CAAC,UAAU;gBACjC,cAAc,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE;gBACpI,UAAU,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;gBACxH,4BAA4B,EAAE,WAAW,CAAC,4BAA4B;AACtE,gBAAA,8BAA8B,EAAE;AAC5B,oBAAA,IAAI,EAAE,WAAW,CAAC,8BAA8B,CAAC,QAAQ,EAAE;oBAC3D,IAAI,EAAE,WAAW,CAAC,iCAAiC;AACtD,iBAAA;gBACD,cAAc,EAAE,WAAW,CAAC,cAAc;gBAC1C,WAAW,EAAE,WAAW,CAAC,WAAW;AACvC,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;AAEO,IAAA,0BAA0B,CAAC,aAAa,EAAA;QAC5C,IAAG,IAAI,CAAC,iCAAiC,EACzC;AACI,YAAA,IAAI,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,mBAAmB,KAAI;AAC9F,gBAAA,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;AACpD,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;;;AAIM,IAAA,cAAc,CAAC,SAAoB,EAAE,WAAmB,EAAE,QAAiB,EAAA;QAC9E,OAAO,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;KACjE;AAEM,IAAA,aAAa,CAAC,SAAoB,EAAE,WAAmB,EAAE,QAAgB,EAAA;QAC5E,OAAO,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;KAChE;;0HA9LQ,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAzB,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAS,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAiB,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAjB,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,EAF1B,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,iCAAA,EAAA,mCAAA,EAAA,EAAA,SAAA,EAAA,CAAC,iBAAiB,CAAC,+CCZlC,8tOAoJM,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,KAAA,EAAA,WAAA,EAAA,MAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,8FAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,WAAA,EAAAkB,EAAA,CAAA,aAAA,EAAA,EAAA,CAAA,CAAA;4FDtIO,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;+BACI,0BAA0B,EAAA,SAAA,EAGzB,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAAA,8tOAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;gMAGrB,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBACG,iCAAiC,EAAA,CAAA;sBAAzC,KAAK;;;MECG,yBAAyB,CAAA;;IAgElC,WACY,CAAA,GAAgB,EAChB,eAA+B,EAC/B,gBAAiC,EACjC,0BAAqD,EACrD,iBAAqC,EACrC,gBAAiC,EAAA;QALjC,IAAG,CAAA,GAAA,GAAH,GAAG,CAAa;QAChB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAgB;QAC/B,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAiB;QACjC,IAA0B,CAAA,0BAAA,GAA1B,0BAA0B,CAA2B;QACrD,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAoB;QACrC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAiB;AArEnC,QAAA,IAAA,CAAA,sBAAsB,GAAsB,IAAI,YAAY,EAAE,CAAC;AAC/D,QAAA,IAAA,CAAA,WAAW,GAAsB,IAAI,YAAY,EAAE,CAAC;;;AASvD,QAAA,IAAA,CAAA,qBAAqB,GAAS,IAAI,IAAI,EAAE,CAAC;;AAuFxC,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,IAAiB,KAA+B;AACtE,YAAA,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;AAClG,gBAAA,OAAO,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;AAC3D,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;AAChB,SAAC,CAAC;AA/BE,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;AACrC,QAAA,IAAI,CAAC,2BAA2B,GAAG,IAAIN,cAAY,EAAE,CAAC;QACtD,IAAI,CAAC,8BAA8B,EAAE,CAAC;KACzC;AA9DD,IAAA,IAAW,OAAO,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;KAC7C;AAED,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAED,IAAA,IAAW,eAAe,GAAA;QACtB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AAC/B,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;KACzC;AAED,IAAA,IAAW,gBAAgB,GAAA;QACvB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AAC/B,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC;KAC5C;AAED,IAAA,IAAW,mBAAmB,GAAA;QAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AAC/B,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC;KAC7C;AAED,IAAA,IAAW,uBAAuB,GAAA;QAC9B,OAAO,IAAI,CAAC,wBAAwB,CAAC;KACxC;AAED,IAAA,IAAW,kBAAkB,GAAA;AACzB,QAAA,OAAO,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC;KAC5C;AAED,IAAA,IAAW,gBAAgB,GAAA;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;AAGD,IAAA,IAAW,oBAAoB,GAAA;QAC3B,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;KACnD;IAED,IAAW,YAAY,CAAC,KAAK,EAAA;AACzB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC9B;IAgBD,QAAQ,GAAA;QACJ,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAc,KAAI;YACrD,MAAM,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAC9D,YAAA,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AACrE,gBAAA,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AAC5B,oBAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,oBAAA,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxD,iBAAA;AACL,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE,CAAC;AAC/C,QAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;YAC9F,IAAI,CAAC,aAAa,EAAE,CAAC;AACzB,SAAC,CAAC,CAAA;KACL;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE,CAAC;KAClD;;;IAYO,8BAA8B,GAAA;QAClC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3C,YAAA,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAClE,WAAW,EAAE,CAAC,EAAE,CAAC;AACpB,SAAA,CAAC,CAAC;KACN;;;IAIO,aAAa,GAAA;AACC,QAAA,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC;YACvD,kBAAkB,CAAC,YAAY,CAAC,YAAY;AAC/C,SAAA,CAAE,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AACvB,YAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrB,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AACzE,gBAAA,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACpC,aAAA;AACL,SAAC,CAAC,CAAA;KACL;IAEO,0BAA0B,GAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,wBAAwB,EAAE,gBAAgB,CAAC,CAAC;AACvG,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,wBAAwB,EAAE,aAAa,CAAC,CAAC;QACjG,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAEO,oBAAoB,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACf,YAAA,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AACtD,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;AAC1D,YAAA,IAAI,CAAC,0BAA0B,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AACrF,gBAAA,IAAI,QAAQ,EAAE;AACV,oBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;AACjF,iBAAA;AAAM,qBAAA;AACH,oBAAA,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AACtD,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;AAEO,IAAA,+BAA+B,CAAC,QAAa,EAAA;AACjD,QAAA,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC;AACrC,YAAA,cAAc,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;YACjD,WAAW,EAAE,QAAQ,CAAC,WAAW;AACpC,SAAA,CAAC,CAAC;QAEH,IAAG,IAAI,CAAC,oBAAoB;YACxB,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC;KACvE;;;IAIM,gBAAgB,GAAA;QACnB,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC/B;IAEM,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC,CAAC;KACpF;IAED,oBAAoB,GAAA;QAEhB,OAAO,IAAI,CAAC,wBAAwB;AACzB,eAAA,IAAI,CAAC,SAAS;;iBAEd,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE;AACxH,uBAAA,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;KACrG;;;AAIM,IAAA,cAAc,CAAC,SAAoB,EAAE,WAAmB,EAAE,QAAiB,EAAA;QAC9E,OAAO,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;KACjE;AAEM,IAAA,aAAa,CAAC,SAAoB,EAAE,WAAmB,EAAE,QAAgB,EAAA;QAC5E,OAAO,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;KAChE;;uHAzLQ,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAZ,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAS,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAkB,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAZ,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAAX,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2GAAzB,yBAAyB,EAAA,QAAA,EAAA,uBAAA,EAAA,OAAA,EAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAJvB,EAAE,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbjB,05HA2EM,EAAA,MAAA,EAAA,CAAA,0moBAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,eAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,aAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,WAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAkB,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,WAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4FD1DO,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAEtB,SAAA,EAAA,EAAE,EAEE,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,05HAAA,EAAA,MAAA,EAAA,CAAA,0moBAAA,CAAA,EAAA,CAAA;kQAG3B,sBAAsB,EAAA,CAAA;sBAA/B,MAAM;gBACG,WAAW,EAAA,CAAA;sBAApB,MAAM;;;MEYE,iBAAiB,CAAA;;IA2M1B,WACY,CAAA,gBAAiC,EACjC,gBAAiC,EACjC,0BAAqD,EACrD,eAA+B,EAC/B,gBAAiC,EACjC,iBAAqC,EAAA;QALrC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAiB;QACjC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAiB;QACjC,IAA0B,CAAA,0BAAA,GAA1B,0BAA0B,CAA2B;QACrD,IAAe,CAAA,eAAA,GAAf,eAAe,CAAgB;QAC/B,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAiB;QACjC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAoB;QAvMxC,IAAqB,CAAA,qBAAA,GAAS,IAAI,CAAC;AACnB,QAAA,IAAA,CAAA,aAAa,GAA+B,IAAI,YAAY,EAAE,CAAC;QAUhF,IAAmB,CAAA,mBAAA,GAAG,IAAI,CAAC;;QAI5B,IAAuB,CAAA,uBAAA,GAAW,KAAK,CAAC;QACxC,IAAiC,CAAA,iCAAA,GAAW,KAAK,CAAC;;;AAiClD,QAAA,IAAA,CAAA,KAAK,GAAW,iBAAiB,CAAC,aAAa,CAAC,mBAAmB,CAAC;AAwJvE,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;AAClC,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;AACjC,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;KAC1B;;AA9LD,IAAA,IAAY,yBAAyB,GAAA;QACjC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE;AAC1C,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,uBAAuB,CAAC;KAC7D;AAED,IAAA,IAAY,sBAAsB,GAAA;QAC9B,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;AACvC,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,CAAC;KAC1D;AAED,IAAA,IAAY,qBAAqB,GAAA;QAC7B,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;AACtC,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC;KACzD;AAED,IAAA,IAAY,0BAA0B,GAAA;QAClC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE;AAC3C,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,uBAAuB,CAAC;KAC9D;AAMD,IAAA,IAAW,oBAAoB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,iCAAiC,IAAI,IAAI,CAAC,oBAAoB,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;KACxM;AAED,IAAA,IAAW,eAAe,GAAA;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAED,IAAA,IAAW,oBAAoB,GAAA;QAC3B,OAAO,IAAI,CAAC,qBAAqB,CAAC;KACrC;AAED,IAAA,IAAW,mBAAmB,GAAA;QAC1B,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;AACD,IAAA,IAAW,qBAAqB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,gBAAgB,CAAC;KAClE;;AAGD,IAAA,IAAW,gBAAgB,GAAA;;;QAGvB,IAAG,IAAI,CAAC,oBAAoB,EAC5B;AACI,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;QAED,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC3B,OAAO,IAAI,CAAC,KAAK,IAAI,iBAAiB,CAAC,aAAa,CAAC,+BAA+B,CAAC;AACxF,SAAA;AAAM,aAAA;YACH,OAAO,IAAI,CAAC,KAAK,IAAI,iBAAiB,CAAC,aAAa,CAAC,kCAAkC,CAAC;AAC3F,SAAA;KACJ;;AAGD,IAAA,IAAW,gBAAgB,GAAA;;;QAGvB,IAAG,IAAI,CAAC,oBAAoB,EAC5B;AACI,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QAED,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC3B,OAAO,IAAI,CAAC,KAAK,IAAI,iBAAiB,CAAC,aAAa,CAAC,+BAA+B,CAAC;AACxF,SAAA;AAAM,aAAA;YACH,OAAO,IAAI,CAAC,KAAK,IAAI,iBAAiB,CAAC,aAAa,CAAC,kCAAkC,CAAC;AAC3F,SAAA;KACJ;AACD,IAAA,IAAW,gBAAgB,GAAA;QACvB,OAAO,IAAI,CAAC,KAAK,IAAI,iBAAiB,CAAC,aAAa,CAAC,mBAAmB,CAAC;KAC5E;AACD,IAAA,IAAW,gBAAgB,GAAA;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;;;;AAKD,IAAA,IAAW,gBAAgB,GAAA;QACvB,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAC7C;AAED,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,YAAY,CAAC,IAAI,CAAC;KAC5B;AAED,IAAA,IAAW,eAAe,GAAA;QACtB,OAAO,YAAY,CAAC,OAAO,CAAC;KAC/B;;;AAID,IAAA,IAAW,0BAA0B,GAAA;QACjC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE;AAC1C,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;KAC7C;AAED,IAAA,IAAW,yBAAyB,GAAA;QAChC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE;AAC1C,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,yBAAyB,CAAC;KAC/D;;;AAID,IAAA,IAAW,cAAc,GAAA;QACrB,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;AACvC,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC;KACjD;AAED,IAAA,IAAW,uBAAuB,GAAA;QAC9B,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;AACvC,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;KAC1C;;;AAID,IAAA,IAAY,iCAAiC,GAAA;QACzC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;AACpC,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,gBAAgB,IAAI,iBAAiB,CAAC,iBAAiB,CAAC,OAAO,CAAC;KAC/F;AAED,IAAA,IAAW,2BAA2B,GAAA;QAClC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE;AAC3C,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC;KAC9C;AAED,IAAA,IAAW,cAAc,GAAA;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED,IAAA,IAAW,gBAAgB,GAAA;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;AAED,IAAA,IAAW,oBAAoB,GAAA;QAC3B,OAAO,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;KAC/D;;;AAID,IAAA,IAAW,sBAAsB,GAAA;QAC7B,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;AACtC,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;KACzC;IAqBD,QAAQ,GAAA;QACJ,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAc,KAAI;AACrD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxD,MAAM,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAC9D,YAAA,QAAQ,IAAI;AACR,gBAAA,KAAK,iBAAiB,CAAC,IAAI,CAAC,kBAAkB;AAC1C,oBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;oBAC9B,MAAM;AACV,gBAAA,KAAK,iBAAiB,CAAC,IAAI,CAAC,SAAS;AACjC,oBAAA,IAAI,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC;oBAC9C,MAAM;AACV,gBAAA,KAAK,iBAAiB,CAAC,IAAI,CAAC,WAAW;AACnC,oBAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;oBACtE,MAAM;AAEV,gBAAA,KAAK,iBAAiB,CAAC,IAAI,CAAC,eAAe;AACvC,oBAAA,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;oBAC9E,MAAM;AACb,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,EAAE;AACvE,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;AAC7B,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC/B,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAChC,aAAA;AACJ,SAAA;KACJ;;AAEO,IAAA,4BAA4B,CAAC,UAAkB,EAAA;AACnD,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACjC,OAAO;AACV,SAAA;;AAED,QAAA,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AACrE,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBACzB,OAAO;AACV,aAAA;AACD,YAAA,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;AACpC,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,qBAAqB,CAAC,SAAiB,EAAA;AAC3C,QAAA,IAAI,CAAC,0BAA0B,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;AAC5E,YAAA,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;YAChC,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;YACxD,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,CAAC;AAC/D,YAAA,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,GAAG,KAAK,CAAC;AACtD,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;AACjC,YAAA,IAAI,CAAC,0BAA0B;iBAC1B,+BAA+B,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;AAC5E,iBAAA,SAAS,CAAC,CAAC,aAAa,KAAI;AACzB,gBAAA,IAAI,CAAC,qBAAqB,GAAG,aAAa,CAAC;AAC/C,aAAC,CAAC,CAAC;AACX,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,yBAAyB,CAAC,aAAqB,EAAA;AACnD,QAAA,IAAI,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,KAAI;AACxF,YAAA,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC;YACxC,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC;YAC5D,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,CAAC;AAC/D,YAAA,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,GAAG,KAAK,CAAC;AACtD,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;AACjC,YAAA,IAAI,CAAC,0BAA0B,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;AACxF,gBAAA,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;gBAChC,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;AAC5D,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,0BAA0B;iBAC1B,+BAA+B,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;AACvF,iBAAA,SAAS,CAAC,CAAC,aAAa,KAAI;AACzB,gBAAA,IAAI,CAAC,qBAAqB,GAAG,aAAa,CAAC;AAC/C,aAAC,CAAC,CAAC;AACX,SAAC,CAAC,CAAC;KACN;;;AAIM,IAAA,kBAAkB,CAAC,KAAU,EAAA;AAChC,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;KACjC;AAEM,IAAA,uBAAuB,CAAC,KAAU,EAAA;AACrC,QAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;KACtC;AAEM,IAAA,sBAAsB,CAAC,KAAU,EAAA;AACpC,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;KACrC;;;AAIO,IAAA,4BAA4B,CAAC,UAAkB,EAAA;QACnD,MAAM,OAAO,GAAG,EAAE,CAAC;AACnB,QAAA,OAAO,CAAC,kBAAkB,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,0BAA0B,EAAE,cAAc,CAAC,CAAC;QACrG,IAAI,IAAI,CAAC,iCAAiC,EAAE;AACxC,YAAA,OAAO,CAAC,uBAAuB,CAAC,GAAG,KAAK,CAAC,eAAe,CACpD,IAAI,CAAC,0BAA0B,EAC/B,uBAAuB,CAC1B,CAAC;AACL,SAAA;AACD,QAAA,OAAO,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,0BAA0B,EAAE,aAAa,CAAC,CAAC;AAC/F,QAAA,OAAO,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,0BAA0B,EAAE,UAAU,CAAC,CAAC;AACzF,QAAA,OAAO,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC;AACnC,QAAA,OAAO,OAAO,CAAC;KAClB;AAEO,IAAA,UAAU,CAAC,QAAQ,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,eAAe,EAAE;AAClD,YAAA,IAAI,QAAQ,CAAC,cAAc,IAAI,SAAS,EAAE;gBACtC,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACxC,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;AACpC,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC;KAC3C;AACO,IAAA,0BAA0B,CAAC,iBAA4B,EAAE,OAAY,EAAE,UAAoB,EAAA;QAC/F,MAAM,OAAO,GAAG,EAAE,CAAC;AAEnB,QAAA,MAAM,QAAQ,GAAG,iBAAiB,CAAC,WAAW,EAAE,CAAC;AACjD,QAAA,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC;AAClC,QAAA,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC7C,OAAO,CAAC,kBAAkB,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAC7D,OAAO,CAAC,qBAAqB,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAChE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;AACrC,QAAA,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;QAC/C,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC;QACxD,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC;;QAGnE,IAAI,QAAQ,CAAC,WAAW,EAAE;YACtB,OAAO,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;YACnD,OAAO,CAAC,gBAAgB,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;AACtD,YAAA,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACrE,SAAA;QAED,IAAI,QAAQ,CAAC,WAAW,EAAE;YACtB,OAAO,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACnD,OAAO,CAAC,oBAAoB,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC;AAC9D,SAAA;;AAED,QAAA,OAAO,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC;AACxC,QAAA,OAAO,CAAC,gBAAgB,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC;AACpD,QAAA,OAAO,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC;AAC9C,QAAA,OAAO,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC;AAElD,QAAA,IAAI,UAAU,EAAE;AACZ,YAAA,OAAO,CAAC,uBAAuB,CAAC,GAAG,QAAQ,CAAC,qBAAqB,CAAC;AACrE,SAAA;AAED,QAAA,OAAO,OAAO,CAAC;KAClB;IAEO,uBAAuB,GAAA;QAC3B,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,MAAM,iBAAiB,GAAG,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC;;AAE1D,QAAA,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC;AAC9D,QAAA,iBAAiB,CAAC,8BAA8B,CAAC,GAAG,QAAQ,CAAC,4BAA4B,CAAC;AAC1F,QAAA,iBAAiB,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC;QAExD,IAAI,QAAQ,CAAC,cAAc,EAAE;YACzB,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC;YACnE,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC;AACzE,SAAA;QAED,IAAI,QAAQ,CAAC,UAAU,EAAE;YACrB,iBAAiB,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;YAC3D,iBAAiB,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;AACjE,SAAA;QAED,IAAI,QAAQ,CAAC,8BAA8B,EAAE;YACzC,iBAAiB,CAAC,gCAAgC,CAAC,GAAG,QAAQ,CAAC,8BAA8B,CAAC,IAAI,CAAC;YACnG,iBAAiB,CAAC,mCAAmC,CAAC,GAAG,QAAQ,CAAC,8BAA8B,CAAC,IAAI,CAAC;AACzG,SAAA;AACD,QAAA,OAAO,CAAC,QAAQ,CAAC,GAAG,iBAAiB,CAAC;AACtC,QAAA,OAAO,CAAC,kBAAkB,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC;AACxD,QAAA,OAAO,OAAO,CAAC;KAClB;;;IAIM,gCAAgC,GAAA;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE;AAClC,YAAA,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AACpD,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;IACO,4BAA4B,GAAA;QAChC,IAAI,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;AAC3D,YAAA,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAChD,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;IACO,6BAA6B,GAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;AAC/B,YAAA,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AACjD,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;IAEO,iCAAiC,GAAA;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE;AACnC,YAAA,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;AACrD,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,4BAA4B,GAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,gCAAgC,EAAE,EAAE;AAC1C,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;QACD,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE;AAC/D,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE;AACtC,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;IAEO,wBAAwB,GAAA;QAC5B,IAAI,OAAO,GAAG,IAAI,CAAC;AAEnB,QAAA,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE;AACnC,YAAA,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACrD,OAAO,GAAG,KAAK,CAAC;AACnB,SAAA;QAED,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE;YACpE,OAAO,GAAG,KAAK,CAAC;AACnB,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE;YAC7F,OAAO,GAAG,KAAK,CAAC;AACnB,SAAA;AAED,QAAA,OAAO,OAAO,CAAC;KAClB;IAEO,oBAAoB,GAAA;AACxB,QAAA,OAAO,IAAI,UAAU,CAAM,CAAC,QAAQ,KAAI;AACpC,YAAA,IAAI,IAAI,CAAC,4BAA4B,EAAE,EAAE;gBACrC,IAAI,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,CAAC;gBAC7D,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;AACpC,oBAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;wBAC1D,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACvC,4BAAA,MAAM,cAAc,GAAG;gCACnB,UAAU,EAAE,QAAQ,CAAC,EAAE;gCACvB,gBAAgB,EAAE,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,KAAK;6BAC/E,CAAC;AAEF,4BAAA,IAAI,CAAC,0BAA0B,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AACpF,gCAAA,IAAI,QAAQ,EAAE;oCACV,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AACjD,wCAAA,IAAI,QAAQ,EAAE;AACV,4CAAA,IACI,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC;AAC1C,gDAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAClC;AACE,gDAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAC1D,gDAAA,IAAI,CAAC,0BAA0B;qDAC1B,iBAAiB,CAAC,kBAAkB,CAAC;AACrC,qDAAA,SAAS,CAAC,CAAC,QAAQ,KAAI;AACpB,oDAAA,IAAI,QAAQ,EAAE;AACV,wDAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,qDAAA;AAAM,yDAAA;AACH,wDAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,qDAAA;AACL,iDAAC,CAAC,CAAC;AACV,6CAAA;AAAM,iDAAA;AACH,gDAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,6CAAA;AACJ,yCAAA;AAAM,6CAAA;AACH,4CAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,yCAAA;AACL,qCAAC,CAAC,CAAC;AACN,iCAAA;AAAM,qCAAA;oCACH,KAAK,CAAC,2BAA2B,CAAC,CAAC;AACnC,oCAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,iCAAA;AACL,6BAAC,CAAC,CAAC;AACN,yBAAA;AAAM,6BAAA;AACH,4BAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,yBAAA;AACL,qBAAC,CAAC,CAAC;AACP,iBAAC,CAAC,CAAC;AACN,aAAA;AAAM,iBAAA;AACH,gBAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,kBAAkB,CAAC,OAAY,EAAE,UAAA,GAAsB,KAAK,EAAA;AAChE,QAAA,OAAO,IAAI,UAAU,CAAM,CAAC,QAAQ,KAAI;AACpC,YAAA,IAAI,CAAC,IAAI,CAAC,gCAAgC,EAAE,EAAE;AAC1C,gBAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,aAAA;AAAM,iBAAA;AACH,gBAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,0BAA0B,CAC1D,IAAI,CAAC,yBAAyB,EAC9B,OAAO,EACP,UAAU,CACb,CAAC;AACF,gBAAA,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;oBACvF,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACvC,wBAAA,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3B,qBAAA;AAAM,yBAAA;AACH,wBAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,qBAAA;AACL,iBAAC,CAAC,CAAC;AACN,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAEQ,IAAA,eAAe,CAAC,OAAO,EAAA;QAC5B,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AACnB,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;AAC/B,YAAA,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AACjD,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;AACpB,SAAA;AAED,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,0BAA0B,CACvD,IAAI,CAAC,sBAAsB,EAC3B,OAAO,EACP,KAAK,CACR,CAAC;AAEF,QAAA,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC;QACrF,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAEhD,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;QAG1F,MAAM,aAAa,GAAG,gBAAgB;cAChC,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,IAAI,CAC9E,GAAG,CAAC,SAAS,IAAG;gBACZ,IAAI,CAAC,SAAS,EAAE;AACZ,oBAAA,IAAI,CAAC,kBAAkB,CAAC,iCAAiC,GAAG,IAAI,CAAC;;AAEjE,oBAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;AACvD,iBAAA;AACD,gBAAA,OAAO,IAAI,CAAC;AAChB,aAAC,CAAC,CACL;AACD,cAAE,EAAE,CAAC,IAAI,CAAC,CAAC;;;;AAKf,QAAA,OAAO,aAAa,CAAC,IAAI,CACrB,SAAS,CAAC,MACN,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,YAAY,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,IAAI,CACpE,GAAG,CAAC,UAAU,IAAG;AACb,YAAA,IAAI,UAAU,EAAE,MAAM,GAAG,CAAC,EAAE;AACxB,gBAAA,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,GAAG,IAAI,CAAC;;AAEvD,gBAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;AACpD,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;AAChB,SAAC,CAAC,CACL,CACJ,EACD,SAAS,CAAC,MACN,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,IAAI,CACjE,GAAG,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CACzD,CACJ,EACD,UAAU,CAAC,GAAG,IAAG;AACb,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;SACpB,CAAC,CACL,CAAC;KACL;IAEO,0BAA0B,GAAA;AAC9B,QAAA,OAAO,IAAI,UAAU,CAAM,CAAC,QAAQ,KAAI;AACpC,YAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE,EAAE;gBACjC,MAAM,uBAAuB,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACpF,gBAAA,IAAI,CAAC,0BAA0B,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AAC7F,oBAAA,IAAI,QAAQ,EAAE;AACV,wBAAA,IAAG,CAAC,IAAI,CAAC,oBAAoB,EAC7B;AACI,4BAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AAC/D,gCAAA,IAAI,QAAQ,EAAE;oCACV,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE;AAC/D,wCAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAC1D,wCAAA,IAAI,CAAC,0BAA0B;6CAC1B,iBAAiB,CAAC,kBAAkB,CAAC;AACrC,6CAAA,SAAS,CAAC,CAAC,QAAQ,KAAI;4CACpB,IAAI,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC;4CACjF,IAAI,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC;;AAErE,4CAAA,IAAG,QAAQ,EACX;gDACI,IAAG,CAAC,IAAI,CAAC,OAAO,CAAC,iCAAiC,IAAI,gBAAgB,IAAI,GAAG,EAC7E;AACI,oDAAA,IAAI,0BAA0B,GAA+B;AACzD,wDAAA,aAAa,EAAG,kBAAkB,CAAC,MAAM,CAAC,EAAE;wDAC5C,gBAAgB,EAAG,CAAC,gBAAgB;AACpC,wDAAA,UAAU,EAAC,UAAU;qDACxB,CAAC;AACF,oDAAA,IAAI,CAAC,0BAA0B,CAAC,mBAAmB,CAAC,0BAA0B,CAAC,CAAC,SAAS,CACrF,CAAC,QAAQ,KAAI;AACT,wDAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,qDAAC,CACJ,CAAC;AACL,iDAAA;AAED,qDAAA;AACI,oDAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,iDAAA;AAEJ,6CAAA;AAED,iDAAA;AACI,gDAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,6CAAA;AACL,yCAAC,CAAC,CAAC;AACV,qCAAA;AAAM,yCAAA;AACH,wCAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,qCAAA;AACJ,iCAAA;AAAM,qCAAA;AACH,oCAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,iCAAA;AACL,6BAAC,CAAC,CAAC;AACN,yBAAA;AAED,6BAAA;AACI,4BAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,yBAAA;AACJ,qBAAA;AAAM,yBAAA;AACH,wBAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,qBAAA;AACL,iBAAC,CAAC,CAAC;AACN,aAAA;AAAM,iBAAA;AACH,gBAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,aAAA;AACL,SAAC,CAAC,CAAC;KACN;;;IAIM,WAAW,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,gCAAgC,EAAE,EAAE;AAEzC,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;AAE7F,YAAA,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC;YACxF,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YACnD,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAEhD,YAAA,IAAG,gBAAgB,EACnB;gBACI,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAC,SAAS,CAAC,CAAC,SAAS,CACxG,SAAS,IAAG;oBACR,IAAG,CAAC,SAAS,EACb;AACI,wBAAA,IAAI,CAAC,qBAAqB,CAAC,iCAAiC,GAAG,IAAI,CAAC;wBACpE,OAAO;AACV,qBAAA;AAED,oBAAA,IAAI,CAAC,oCAAoC,CAAC,YAAY,EAAC,UAAU,CAAC,CAAC;AACvE,iBAAC,CACZ,CAAC;AACL,aAAA;AAED,iBAAA;AACI,gBAAA,IAAI,CAAC,oCAAoC,CAAC,YAAY,EAAC,UAAU,CAAC,CAAC;AACtE,aAAA;AACJ,SAAA;KACJ;IAEM,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC;KAChF;;IAGM,iBAAiB,GAAA;;QAEpB,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,0BAA0B,EAAE,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AACrD,gBAAA,IAAI,QAAQ,EAAE;AACV,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAC,CAAC;AAC7F,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;AACI,aAAA;YACD,IAAI,CAAC,oBAAoB,EAAE,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AAC/C,gBAAA,IAAI,QAAQ,EAAE;AACV,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC,CAAC;AACtF,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;IAEM,UAAU,GAAA;QAEb,IAAI,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,CAAC;QAEzD,IAAI,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACnD,QAAA,IAAI,SAAS,GAAG,YAAY,GAAG,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;AAC9D,QAAA,IAAI,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;AACvC,QAAA,IAAI,OAAO,GAAG;AACV,YAAA,EAAE,EAAE,SAAS;YACb,OAAO,EAAE,SAAS,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,CAAC,OAAO;AAC9F,YAAA,YAAY,EAAE,SAAS,CAAC,gBAAgB,CAAC;kBACnC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ;kBACvC,WAAW,CAAC,YAAY;AAC9B,YAAA,QAAQ,EAAE,CAAC,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,WAAW,IAAI,GAAG,GAAG,SAAS,CAAC,kBAAkB,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC,iBAAiB,CAAC,GAAE,SAAS,CAAC,aAAa,CAAC;AAC/J,YAAA,SAAS,EAAE,SAAS,CAAC,kBAAkB,CAAC;AACxC,YAAA,QAAQ,EAAE,SAAS,CAAC,iBAAiB,CAAC;AACtC,YAAA,WAAW,EAAE,SAAS,CAAC,aAAa,CAAC;YACrC,mBAAmB,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,oBAAoB,CAAC,EAAE;SACnE,CAAC;QAEF,IAAG,SAAS,CAAC,WAAW,EACxB;YACI,OAAO,CAAC,oBAAoB,CAAC,GAAG,EAAC,WAAW,EAAC,SAAS,CAAC,WAAW,EAAC,CAAA;AACtE,SAAA;AAED,QAAA,OAAO,OAAO,CAAC;KACtB;IAEO,UAAU,GAAA;AACd,QAAA,OAAO,IAAI,UAAU,CAAM,CAAC,QAAQ,KAAI;YACpC,IAAI,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,CAAC;YAE7D,IAAI,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACnD,YAAA,IAAI,SAAS,GAAG,YAAY,GAAG,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;AAC9D,YAAA,IAAI,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;AACvC,YAAA,IAAI,OAAO,GAAG;AACV,gBAAA,EAAE,EAAE,SAAS;gBACb,OAAO,EAAE,SAAS,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,CAAC,OAAO;AAC9F,gBAAA,YAAY,EAAE,SAAS,CAAC,gBAAgB,CAAC;sBACnC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ;sBACvC,WAAW,CAAC,YAAY;AAC9B,gBAAA,QAAQ,EAAE,CAAC,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,WAAW,IAAI,GAAG,GAAG,SAAS,CAAC,kBAAkB,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC,iBAAiB,CAAC,GAAE,SAAS,CAAC,aAAa,CAAC;AAC/J,gBAAA,SAAS,EAAE,SAAS,CAAC,kBAAkB,CAAC;AACxC,gBAAA,QAAQ,EAAE,SAAS,CAAC,iBAAiB,CAAC;AACtC,gBAAA,WAAW,EAAE,SAAS,CAAC,aAAa,CAAC;gBACrC,mBAAmB,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,oBAAoB,CAAC,EAAE;aACnE,CAAC;YAEF,IAAG,SAAS,CAAC,WAAW,EACxB;gBACI,OAAO,CAAC,oBAAoB,CAAC,GAAG,EAAC,WAAW,EAAC,SAAS,CAAC,WAAW,EAAC,CAAA;AACtE,aAAA;AAED,YAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;;;;;;;;;AAS3E,gBAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AAC7D,oBAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACnE,wBAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,wBAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACpC,qBAAC,CAAC,CAAC;AACP,iBAAC,CAAC,CAAC;AACN,aAAA;AAAM,iBAAA;;;;;;;;;;AAUH,gBAAA,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,OAAO,EAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC,WAAW,GAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AAC9K,oBAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACjC,oBAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3B,iBAAC,CAAC,CAAC;AACN,aAAA;AACL,SAAC,CAAC,CAAC;KACN;IAEO,oCAAoC,CAAC,YAAmB,EAAC,UAAiB,EAAA;QAE9E,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,YAAY,EAAC,UAAU,EAAC,IAAI,CAAC;aAChE,SAAS,CAAC,kBAAkB,IAAG;AAEhB,YAAA,IAAG,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EACtD;AACI,gBAAA,IAAI,CAAC,qBAAqB,CAAC,uBAAuB,GAAG,IAAI,CAAC;AAC7D,aAAA;AAED,iBAAA;gBACI,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC5B,aAAA;AACL,SAAC,CACA,CAAC;KACjB;IAEO,iBAAiB,GAAA;QAErB,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;YAEhC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AACpD,gBAAA,IAAI,QAAQ,EAAE;AACV,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC,CAAC;AACpF,iBAAA;AACL,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACV;AAEO,IAAA,aAAa,CAAC,IAAU,EAAA;AAC5B,QAAA,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AACnC,QAAA,UAAU,CAAC,UAAU,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;AAC3B,QAAA,OAAO,UAAU,CAAC,WAAW,EAAE,CAAC;KACnC;AAEO,IAAA,YAAY,CAAC,IAAU,EAAA;AAC3B,QAAA,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAChC,QAAA,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACnD,QAAA,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC;KAChC;;;IAIM,MAAM,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;;YAGlB,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvB,gBAAA,IAAI,IAAI,CAAC,iCAAiC,EAAE,EAAE;AAC1C,oBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;wBACjC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AAC/B,qBAAA;AAAM,yBAAA;wBACH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AAC/B,qBAAA;AACJ,iBAAA;AACJ,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,IAAI,CAAC,gCAAgC,EAAE,EAAE;oBACzC,IAAI,mBAAmB,GAAG,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,CAAC;oBACvE,IAAI,CAAC,YAAY,GAAG;AAChB,wBAAA,cAAc,EAAE,mBAAmB,CAAC,gBAAgB,CAAC;AACrD,wBAAA,gBAAgB,EAAE,mBAAmB,CAAC,kBAAkB,CAAC;AACzD,wBAAA,eAAe,EAAE,mBAAmB,CAAC,iBAAiB,CAAC;AACvD,wBAAA,kBAAkB,EAAE,mBAAmB,CAAC,oBAAoB,CAAC;qBAChE,CAAC;oBAEF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AAC/B,iBAAA;AACJ,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE;;gBAEjB,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC3B,oBAAA,IAAI,IAAI,CAAC,4BAA4B,EAAE,EAAE;wBACrC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AAC/B,qBAAA;AACJ,iBAAA;AAAM,qBAAA;AACH,oBAAA,IAAI,IAAI,CAAC,6BAA6B,EAAE,EAAE;wBACtC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AAC/B,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;IAEM,MAAM,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;YACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AAC/B,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,iBAAiB,CAAC,aAAa,CAAC,mBAAmB,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACxG,SAAA;KACJ;;;AAIM,IAAA,mBAAmB,CAAC,KAAK,EAAA;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,sBAAsB,CAAC,CAAC,CAAC;KACvF;AAEM,IAAA,iBAAiB,CAAC,KAAK,EAAA;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC;KACrF;;+GAp5BQ,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAS,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAA3B,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,6oBC/B9B,+lHA8EA,EAAA,MAAA,EAAA,CAAA,4yYAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA0B,yBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,sBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,mCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,OAAA,EAAA,CAAA,wBAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAd,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,WAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4FD/Ca,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;+BACI,cAAc,EAAA,aAAA,EAGT,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,+lHAAA,EAAA,MAAA,EAAA,CAAA,4yYAAA,CAAA,EAAA,CAAA;iQAIrC,qBAAqB,EAAA,CAAA;sBADpB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,uBAAuB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBAGrD,kBAAkB,EAAA,CAAA;sBADjB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,oBAAoB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBAGlD,iBAAiB,EAAA,CAAA;sBADhB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,mBAAmB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBAGjD,sBAAsB,EAAA,CAAA;sBADrB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,wBAAwB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBAE7C,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,qBAAqB,EAAA,CAAA;sBAA7B,KAAK;gBACmB,aAAa,EAAA,CAAA;sBAArC,MAAM;uBAAC,eAAe,CAAA;;;MEpBd,uBAAuB,CAAA;;AAmDhC,IAAA,WAAA,CAAoB,gBAAiC,EAAiC,YAAiB,EAAQ,gBAAmC,EAAA;QAA9H,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAiB;QAAiC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAK;QAAQ,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAmB;QAjD3I,IAA8B,CAAA,8BAAA,GAAG,qBAAqB,CAAC;AAEpD,QAAA,IAAA,CAAA,oBAAoB,GAA+B,IAAI,YAAY,EAAE,CAAC;QAEvE,IAAqB,CAAA,qBAAA,GAAG,IAAI,CAAC;QAC7B,IAAgB,CAAA,gBAAA,GAA4B,EAAE,CAAC;QAC/C,IAAiB,CAAA,iBAAA,GAAW,KAAK,CAAC;QAGpC,IAAW,CAAA,WAAA,GAAU,EAAE,CAAC;AAyC3B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC5B;;;AAjCD,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;AAED,IAAA,IAAW,cAAc,GAAA;QAErB,IAAG,IAAI,CAAC,OAAO,EACf;YACI,IAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAClD;AACI,gBAAA,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,GAAC,GAAG;AAC1B,qBAAC,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,CAAC;AAC5D,sBAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AAElC,aAAA;;AAGD,iBAAA;AACI,gBAAA,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;AACrC,aAAA;AAEJ,SAAA;AAED,QAAA,OAAO,EAAE,CAAC;KACb;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;;AAQD,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,EAAE;AACrF,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACvC,SAAA;AACD,QAAA,IAAG,OAAO,CAAC,kBAAkB,CAAC,EAC9B;AACI,YAAA,IAAI,CAAC,iBAAiB;gBACV,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,aAAa,CAAC;uBACjE,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,OAAO,CAAC;uBAC9D,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AAClF,SAAA;KACJ;AAED,IAAA,QAAQ,MAAM;;;AAKN,IAAA,cAAc,CAAC,SAAS,EAAA;AAC5B,QAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;AAClE,YAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AACxB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC;AAC3C,SAAC,CAAC,CAAC;KACN;;;IAKM,WAAW,GAAA;AACd,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,WAAW,EAAC,SAAS,CAAC,CAAC,CAAC;KACtF;AAEM,IAAA,UAAU,CAAC,IAAY,EAAA;AAC1B,QAAA,IAAI,IAAI,EAAE;YACN,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/B,MAAM,OAAO,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;AAE/C,YAAA,OAAO,OAAO,CAAC;AAClB,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;KACJ;AAEM,IAAA,qBAAqB,CAAC,WAAmB,EAAA;QAC5C,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,IAAI,WAAW,KAAK,sBAAsB,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE;YAC7E,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;AAC/E,SAAA;aAAM,IAAI,WAAW,KAAK,mBAAmB,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;YAC9E,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;AAC5E,SAAA;AACD,QAAA,OAAO,OAAO,CAAC;KAClB;AACM,IAAA,qBAAqB,CAAC,WAAmB,EAAA;QAC5C,IAAI,cAAc,GAAG,EAAE,CAAC;QACxB,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,IAAI,WAAW,KAAK,sBAAsB,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE;YAC7E,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;AAC/E,SAAA;aAAM,IAAI,WAAW,KAAK,mBAAmB,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;YAC9E,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;AAC5E,SAAA;QACD,IAAI,OAAO,IAAI,IAAI,EAAE;AACjB,YAAA,OAAO,cAAc,CAAC;AACzB,SAAA;QACD,IAAI,OAAO,CAAC,WAAW,EAAE;AACrB,YAAA,cAAc,IAAI,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;AACvD,SAAA;QACD,IAAI,OAAO,CAAC,cAAc,EAAE;AACxB,YAAA,cAAc,IAAI,OAAO,CAAC,cAAc,GAAG,GAAG,CAAC;AAClD,SAAA;QACD,IAAI,OAAO,CAAC,sBAAsB,EAAE;AAChC,YAAA,cAAc,IAAI,OAAO,CAAC,sBAAsB,GAAG,aAAa,CAAC;AACpE,SAAA;QACD,IAAI,OAAO,CAAC,aAAa,EAAE;AACvB,YAAA,cAAc,IAAI,OAAO,CAAC,aAAa,GAAG,GAAG,CAAC;AACjD,SAAA;QACD,IAAI,OAAO,CAAC,WAAW,EAAE;AACrB,YAAA,cAAc,IAAI,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC;AAC/C,SAAA;QACD,IAAI,OAAO,CAAC,QAAQ,EAAE;AAClB,YAAA,cAAc,IAAI,OAAO,CAAC,QAAQ,GAAG,YAAY,CAAC;AACrD,SAAA;QACD,IAAI,OAAO,CAAC,KAAK,EAAE;AACf,YAAA,cAAc,IAAI,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC;AACjD,SAAA;QACD,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACpD,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACrD,QAAA,OAAO,cAAc,CAAC;KACzB;AAED,IAAA,uBAAuB,CAAC,IAAW,EAAA;QAE/B,IAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;AAC3F,YAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;;QAG3E,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,GAAC,SAAS,CAAC,CAAC;KACvC;;AA5JQ,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,8CAmD+B,cAAc,EAAA,EAAA,EAAA,KAAA,EAAAb,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAnDpE,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAFrB,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,SAAA,EAAA,CAAC,eAAe,CAAC,+CCpBhC,iuSAoLgB,EAAA,MAAA,EAAA,CAAA,+mXAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAP,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,MAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4FD9JH,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,iBAGhB,iBAAiB,CAAC,IAAI,EAC1B,SAAA,EAAA,CAAC,eAAe,CAAC,EAAA,QAAA,EAAA,iuSAAA,EAAA,MAAA,EAAA,CAAA,+mXAAA,CAAA,EAAA,CAAA;;0BAqD4B,MAAM;2BAAC,cAAc,CAAA;6EA/CnE,oBAAoB,EAAA,CAAA;sBAA7B,MAAM;gBACE,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,qBAAqB,EAAA,CAAA;sBAA7B,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;;;MErBG,eAAe,CAAA;IAGxB,WAAoB,CAAA,WAAuB,EAAiC,YAAiB,EAAA;QAAzE,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;QAAiC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAK;AACzF,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;KACvE;;AAGM,IAAA,QAAQ,CAAC,OAAsB,EAAA;AAClC,QAAA,OAAO,IAAI,UAAU,CAAU,CAAC,QAAQ,KAAI;AACxC,YAAA,IAAI,CAAC,IAAI;iBACJ,IAAI,CACD,iBAAiB,CAAC,UAAU,CAAC,QAAQ,EACrC,iBAAiB,CAAC,MAAM,CAAC,gBAAgB,EACzC,OAAO,EACP,EAAE,EACF,EAAE,YAAY,EAAE,MAAM,EAAE,CAC3B;AACA,iBAAA,SAAS,CAAC,CAAC,QAAqB,KAAI;AACjC,gBAAA,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AAChC,gBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,aAAC,CAAC,CAAC;AACX,SAAC,CAAC,CAAC;KACN;;AAvBQ,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,4CAG6B,aAAa,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;iHAHzD,eAAe,EAAA,CAAA,CAAA;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;0BAIuC,MAAM;2BAAC,aAAa,CAAA;;;ACGtE,MAAM,MAAM,GAAG,OAAO,CAAC;MAcV,0BAA0B,CAAA;;AAYnC,IAAA,WAAA,CACY,WAAuB,EACvB,gBAAiC,EACjC,gBAAiC;;IAEV,YAAiB,EAAA;QAJxC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;QACvB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAiB;QACjC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAiB;QAEV,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAK;AAhB1C,QAAA,IAAA,CAAA,gBAAgB,GAA+B,IAAI,YAAY,EAAE,CAAC;QAGnE,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC;QACxB,IAAiB,CAAA,iBAAA,GAAG,IAAI,CAAC;QACzB,IAAkB,CAAA,kBAAA,GAAG,IAAI,CAAC;AAa/B,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACxB;;AAGD,IAAA,QAAQ,MAAM;AAEd,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,EAAE;AACrF,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AAC1C,gBAAA,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AAChB,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACxB,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;;;AAKD,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,WAAW,CAAC,YAAY,CAAC;KACnC;;;IAIM,OAAO,GAAA;AACV,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;KACvF;IAEM,MAAM,GAAA;AACT,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;KACnF;IAEM,QAAQ,GAAA;AACX,QAAA,MAAM,eAAe,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;AAC5D,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACzF,MAAM,KAAK,GAAG,UAAU,GAAG,eAAe,GAAG,GAAG,GAAG,SAAS,CAAC;AAC7D,QAAA,MAAM,OAAO,GAAkB;AAC3B,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,KAAK,EAAE;gBACH,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,GAAG,EAAE,IAAI,CAAC,IAAI;AACd,gBAAA,QAAQ,EAAE,oBAAoB,CAAC,QAAQ,CAAC,WAAW;AACnD,gBAAA,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ;AACjD,aAAA;AACD,YAAA,oBAAoB,EAAE,oBAAoB,CAAC,QAAQ,CAAC,uBAAuB;SAC9E,CAAC;AACF,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAO,GAAC,CAAC,CAAC;KACxE;;;AAID,IAAA,IAAW,GAAG,GAAA;QACV,OAAO,IAAI,CAAC,IAAI,CAAC;KACpB;AAED,IAAA,IAAW,MAAM,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACzD;;;AAIO,IAAA,MAAM,CAAC,SAAiB,EAAA;AAC5B,QAAA,OAAO,IAAI,UAAU,CAAM,CAAC,QAAQ,KAAI;AACpC,YAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACpE,YAAA,MAAM,MAAM,GAAG;AACX,gBAAA,EAAE,EAAE,SAAS;aAChB,CAAC;YAEF,GAAG;AACE,iBAAA,GAAG,CAAC,iBAAiB,CAAC,UAAU,CAAC,GAAG,EAAE,iBAAiB,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC;AACtF,iBAAA,SAAS,CAAC,CAAC,GAAG,KAAI;AACf,gBAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvB,aAAC,CAAC,CAAC;AACX,SAAC,CAAC,CAAC;KACN;;AA7FQ,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,uGAiBvB,aAAa,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAjBhB,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,qRAFxB,CAAC,eAAe,EAAE,eAAe,CAAC,+CC3BjD,qhFAiEA,EAAA,MAAA,EAAA,CAAA,8lCAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,UAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4FDpCa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAPtC,SAAS;+BACI,yBAAyB,EAAA,aAAA,EAGpB,iBAAiB,CAAC,IAAI,aAC1B,CAAC,eAAe,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,qhFAAA,EAAA,MAAA,EAAA,CAAA,8lCAAA,CAAA,EAAA,CAAA;;0BAmBxC,MAAM;2BAAC,aAAa,CAAA;4CAhBf,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;gBACE,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;;;MEbG,2BAA2B,CAAA;;AAkBpC,IAAA,WAAA,CAAoB,mBAAyC,EAAU,kBAAqC,EAAS,iBAAoC,EAAA;QAArI,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAsB;QAAU,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAmB;QAAS,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QAdhJ,IAAyB,CAAA,yBAAA,GAAG,IAAI,CAAC;QACjC,IAA0B,CAAA,0BAAA,GAAG,IAAI,CAAC;QAClC,IAAgC,CAAA,gCAAA,GAAG,KAAK,CAAC;QACzC,IAAiC,CAAA,iCAAA,GAAY,IAAI,CAAC;AAEjD,QAAA,IAAA,CAAA,WAAW,GAAsB,IAAI,YAAY,EAAE,CAAC;AACpD,QAAA,IAAA,CAAA,wBAAwB,GAA+B,IAAI,YAAY,EAAE,CAAC;QAK5E,IAAoB,CAAA,oBAAA,GAAY,KAAK,CAAC;AAI1C,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;KACrC;;AAGD,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,WAAW,CAAC,YAAY,CAAC;KACnC;IAEM,cAAc,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,KAAK,gBAAgB,CAAC,IAAI,CAAC;KAC/D;;;AAID,IAAA,QAAQ,MAAM;AAEd,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,YAAY,CAAC,EAAE;AACnG,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC1C,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAG,IAAI,CAAC,0BAA0B;gBAC9B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AACvD,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,EAAE;YAC7F,IAAI,CAAC,WAAW,EAAE,CAAC;AACtB,SAAA;KACJ;;;IAKM,eAAe,GAAA;AAClB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;;AAEzE,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,YAAY,CAAE,UAAU,CAAC,eAAe,EAAC,EAAE,CAAC,CAAC,CAAC;KACxF;IAEM,kBAAkB,GAAA;QACrB,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC3B,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7B,YAAA,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AACnF,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AACxB,gBAAA,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,KAAI;AACxF,oBAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AAChC,oBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC5B,oBAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;AAClC,oBAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAC9B,IAAI,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,UAAU,CAAC,gBAAgB,CAAC,CACtE,CAAC;AACN,iBAAC,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACjC,YAAA,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;AACjD,SAAA;KACJ;AAEM,IAAA,sBAAsB,CAAC,gBAAuB,EAAA;QAEjD,IAAG,CAAC,IAAI,CAAC,iCAAiC,IAAI,gBAAgB,IAAI,GAAG,EACrE;AACI,YAAA,IAAI,+BAA+B,GAAG;AAClC,gBAAA,aAAa,EAAG,IAAI,CAAC,YAAY,CAAC,EAAE;gBACpC,gBAAgB,EAAG,CAAC,gBAAgB;aACvC,CAAC;AAEF,YAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAC9B,IAAI,YAAY,CAAC,UAAU,CAAC,mBAAmB,EAAC,+BAA+B,CAAC,CACnF,CAAC;AACL,SAAA;KAEJ;IAED,aAAa,GAAA;QAET,IAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;AACzD,YAAA,OAAO,IAAI,GAAC,IAAI,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAC,GAAG,CAAC;AAE/F,QAAA,OAAO,EAAE,CAAC;KACb;IAEM,WAAW,GAAA;;AAEd,QAAA,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,KAAI;AACvF,YAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AAChC,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAG,IAAI,CAAC,0BAA0B;AAC9B,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACrD,SAAC,CAAC,CAAC;KACN;;;AAID,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAED,IAAA,IAAW,cAAc,GAAA;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED,IAAA,IAAW,mBAAmB,GAAA;QAC1B,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;;;AAIO,IAAA,oBAAoB,CAAC,aAAa,EAAA;AACtC,QAAA,IAAI,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,mBAAmB,KAAI;AAC9F,YAAA,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;AACpD,SAAC,CAAC,CAAC;KACN;;yHApIQ,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAiC,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,ofAFzB,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,+CCpBxD,6nHAiFM,EAAA,MAAA,EAAA,CAAA,+yDAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,UAAA,EAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4FD3DO,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAPvC,SAAS;+BACI,yBAAyB,EAAA,aAAA,EAGpB,iBAAiB,CAAC,IAAI,aAC1B,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,EAAA,QAAA,EAAA,6nHAAA,EAAA,MAAA,EAAA,CAAA,+yDAAA,CAAA,EAAA,CAAA;sKAG3C,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAEgB,gBAAgB,EAAA,CAAA;sBAArC,KAAK;uBAAC,aAAa,CAAA;gBACX,yBAAyB,EAAA,CAAA;sBAAjC,KAAK;gBACG,0BAA0B,EAAA,CAAA;sBAAlC,KAAK;gBACG,gCAAgC,EAAA,CAAA;sBAAxC,KAAK;gBACG,iCAAiC,EAAA,CAAA;sBAAzC,KAAK;gBAEI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACG,wBAAwB,EAAA,CAAA;sBAAjC,MAAM;;;MEpBE,8BAA8B,CAAA;;AAsBvC,IAAA,WAAA,CAAoB,mBAAyC,EAAA;QAAzC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAsB;QAnBtD,IAAW,CAAA,WAAA,GAAQ,CAAC,CAAC;QAEnB,IAAwB,CAAA,wBAAA,GAAG,IAAI,CAAC;QAChC,IAAyB,CAAA,yBAAA,GAAG,IAAI,CAAC;QACjC,IAAiC,CAAA,iCAAA,GAAG,IAAI,CAAC;QACzC,IAA0B,CAAA,0BAAA,GAAG,IAAI,CAAC;QAClC,IAAgC,CAAA,gCAAA,GAAG,KAAK,CAAC;AAMxC,QAAA,IAAA,CAAA,yBAAyB,GAA+B,IAAI,YAAY,EAAE,CAAC;AAQjF,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;KAClC;;AAGD,IAAA,QAAQ,MAAM;AAEd,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IACI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,YAAY;AAC1D,aAAC,OAAO,CAAC,wBAAwB,CAAC,IAAI,OAAO,CAAC,wBAAwB,CAAC,CAAC,YAAY,CAAC,EACvF;AACE,YAAA,IAAI,CAAC,mBAAmB;iBACnB,2BAA2B,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,sBAAsB,CAAC;AACxE,iBAAA,SAAS,CAAC,CAAC,aAAa,KAAI;AACzB,gBAAA,IAAI,CAAC,cAAc,GAAG,aAAa,GAAC,aAAa,GAAC,EAAE,CAAC;AACrD,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAClC,aAAC,CAAC,CAAC;AACV,SAAA;KACJ;;;IAKM,cAAc,GAAA;AACjB,QAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,cAAc,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;KACnG;AAEM,IAAA,mBAAmB,CAAC,KAAmB,EAAA;AAC1C,QAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9C;;;AAID,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;AAED,IAAA,IAAW,gBAAgB,GAAA;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;IAGD,mBAAmB,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/B,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;gBACjD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;;AAExC,gBAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AAC5B,SAAA;KACJ;IAED,uBAAuB,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,YAAA,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC;gBACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;;gBAExC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;AACxD,SAAA;KACJ;IAED,mBAAmB,GAAA;AAEf,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AAC/B,QAAA,IAAI,CAAC,mBAAmB;aACf,2BAA2B,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,sBAAsB,CAAC;AACxE,aAAA,SAAS,CAAC,CAAC,aAAa,KAAI;AACzB,YAAA,IAAI,CAAC,cAAc,GAAG,aAAa,GAAC,aAAa,GAAC,EAAE,CAAC;AACrD,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAClC,SAAC,CAAC,CAAC;KACd;;4HA5FQ,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,8BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,EAF5B,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,iCAAA,EAAA,mCAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,gCAAA,EAAA,kCAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,EAAA,SAAA,EAAA,CAAC,oBAAoB,CAAC,+CCVrC,yzFAkDM,EAAA,MAAA,EAAA,CAAA,oXAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA1B,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA4B,2BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,aAAA,EAAA,2BAAA,EAAA,4BAAA,EAAA,kCAAA,EAAA,mCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAjC,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDtCO,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAP1C,SAAS;+BAEI,4BAA4B,EAAA,SAAA,EAG3B,CAAC,oBAAoB,CAAC,EAAA,QAAA,EAAA,yzFAAA,EAAA,MAAA,EAAA,CAAA,oXAAA,CAAA,EAAA,CAAA;wGAGxB,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAGG,wBAAwB,EAAA,CAAA;sBAAhC,KAAK;gBACG,yBAAyB,EAAA,CAAA;sBAAjC,KAAK;gBACG,iCAAiC,EAAA,CAAA;sBAAzC,KAAK;gBACG,0BAA0B,EAAA,CAAA;sBAAlC,KAAK;gBACG,gCAAgC,EAAA,CAAA;sBAAxC,KAAK;gBAEG,sBAAsB,EAAA,CAAA;sBAA9B,KAAK;gBAEG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBAEI,yBAAyB,EAAA,CAAA;sBAAlC,MAAM;;;MEVE,oBAAoB,CAAA;AA2C7B,IAAA,WAAA,CACW,UAAsB,EACrB,eAA+B,EACR,YAAiB,EAAA;QAFzC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACrB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAgB;QACR,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAK;;QApC3C,IAAqB,CAAA,qBAAA,GAAG,IAAI,CAAC;QAE7B,IAAc,CAAA,cAAA,GAAS,IAAI,CAAC;QAE5B,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC;QACxB,IAAiB,CAAA,iBAAA,GAAG,IAAI,CAAC;QACzB,IAAkB,CAAA,kBAAA,GAAG,IAAI,CAAC;QAE1B,IAAwB,CAAA,wBAAA,GAAG,IAAI,CAAC;QAChC,IAAyB,CAAA,yBAAA,GAAG,IAAI,CAAC;QACjC,IAAiC,CAAA,iCAAA,GAAG,IAAI,CAAC;QACzC,IAA0B,CAAA,0BAAA,GAAG,IAAI,CAAC;QAClC,IAAgC,CAAA,gCAAA,GAAG,KAAK,CAAC;QAEzC,IAAqB,CAAA,qBAAA,GAAG,IAAI,CAAC;QAC7B,IAAsB,CAAA,sBAAA,GAAG,IAAI,CAAC;QAC9B,IAA0B,CAAA,0BAAA,GAAG,IAAI,CAAC;QAClC,IAAyB,CAAA,yBAAA,GAAG,IAAI,CAAC;QAOjC,IAAuB,CAAA,uBAAA,GAA2B,EAAE,CAAC;AAEpD,QAAA,IAAA,CAAA,iBAAiB,GAA+B,IAAI,YAAY,EAAE,CAAC;AAYzE,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,EAAE,CAAC;KAC/B;;IAGM,QAAQ,GAAA;QACX,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAc,KAAI;YACrD,MAAM,EAAE,GAAG,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC9C,YAAA,IAAI,EAAE,EAAE;AACJ,gBAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;gBACrB,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;AAC1C,oBAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC3B,iBAAC,CAAC,CAAC;AACN,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;AAC5E,aAAA;AACL,SAAC,CAAC,CAAC;KACN;;;AAID,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;;;AAMM,IAAA,cAAc,CAAC,SAAS,EAAA;AAC3B,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,QAAQ,KAAI;AAC/B,YAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACnE,YAAA,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;gBAC3E,IAAK,OAAe,CAAC,EAAE,EAAE;AACrB,oBAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1B,iBAAA;AAAM,qBAAA;AACH,oBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,iBAAA;AACL,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACN;IAEM,IAAI,GAAA;;AAEP,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;KAC5E;IAEM,WAAW,GAAA;;AAEd,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;KAC7F;AAEM,IAAA,SAAS,CAAC,KAAmB,EAAA;AAChC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACtC;;;;;;;;;;;AAcM,IAAA,eAAe,CAAC,KAAU,EAAA;AAC7B,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KAC3B;AAEM,IAAA,kBAAkB,CAAC,KAAU,EAAA;AAChC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;KAC7B;IAEM,aAAa,GAAA;AAChB,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;KACjC;IAEM,mBAAmB,GAAA;AAEtB,QAAA,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,CAAC;KAClD;;AAlIQ,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,4EA8CjB,aAAa,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA9ChB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,4rCCjBjC,0mJAqFA,EAAA,MAAA,EAAA,CAAA,ghEAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAkC,uBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,8BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,SAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,mCAAA,EAAA,4BAAA,EAAA,kCAAA,EAAA,wBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,WAAA,EAAA,eAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,4BAAA,EAAA,wBAAA,EAAA,2BAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA5B,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4FDpEa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;+BAEI,kBAAkB,EAAA,aAAA,EAGb,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,0mJAAA,EAAA,MAAA,EAAA,CAAA,ghEAAA,CAAA,EAAA,CAAA;;0BAgDhC,MAAM;2BAAC,aAAa,CAAA;4CApChB,qBAAqB,EAAA,CAAA;sBAA7B,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBAEG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBAEG,wBAAwB,EAAA,CAAA;sBAAhC,KAAK;gBACG,yBAAyB,EAAA,CAAA;sBAAjC,KAAK;gBACG,iCAAiC,EAAA,CAAA;sBAAzC,KAAK;gBACG,0BAA0B,EAAA,CAAA;sBAAlC,KAAK;gBACG,gCAAgC,EAAA,CAAA;sBAAxC,KAAK;gBAEG,qBAAqB,EAAA,CAAA;sBAA7B,KAAK;gBACG,sBAAsB,EAAA,CAAA;sBAA9B,KAAK;gBACG,0BAA0B,EAAA,CAAA;sBAAlC,KAAK;gBACG,yBAAyB,EAAA,CAAA;sBAAjC,KAAK;gBAEG,sBAAsB,EAAA,CAAA;sBAA9B,KAAK;gBAGG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBAEG,uBAAuB,EAAA,CAAA;sBAA/B,KAAK;gBAEI,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;gBAEP,QAAQ,EAAA,CAAA;sBADP,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBAIxC,mBAAmB,EAAA,CAAA;sBADlB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,qBAAqB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;MEpD1C,WAAW,CAAA;AAIpB,IAAA,WAAA,CAAmB,UAAsB,EAAA;QAAtB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AACrC,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;KACnB;;IAGM,GAAG,CAAC,IAAY,EAAE,KAAU,EAAA;AAC/B,QAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;AACnE,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AAC5B,SAAA;KACJ;AAEM,IAAA,GAAG,CAAC,IAAY,EAAA;QACnB,IAAI,KAAK,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;YAChC,KAAK,GAAG,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC/E,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;AAEM,IAAA,MAAM,CAAC,IAAY,EAAA;QACtB,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;AAC9E,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC3B,SAAA;KACJ;IAEM,KAAK,GAAA;AACR,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;KACnB;;yGA/BQ,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;6GAAX,WAAW,EAAA,CAAA,CAAA;4FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;;;MCWE,kBAAkB,CAAA;;AAc7B,IAAA,WAAA,CAAoB,cAAiC,EAAU,cAA6B,EAClF,mBAAyC,EAAU,YAAyB,EAAA;QADlE,IAAc,CAAA,cAAA,GAAd,cAAc,CAAmB;QAAU,IAAc,CAAA,cAAA,GAAd,cAAc,CAAe;QAClF,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAsB;QAAU,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAa;AAV5E,QAAA,IAAA,CAAA,eAAe,GAA+B,IAAI,YAAY,EAAE,CAAC;AACjE,QAAA,IAAA,CAAA,WAAW,GAAsB,IAAI,YAAY,EAAE,CAAC;AAU5D,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;;IAGD,QAAQ,GAAA;KAEP;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAEhC,QAAA,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,EAAE;AACzF,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;AAC9B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACvB,SAAA;KACF;;;IAMM,cAAc,GAAA;QACnB,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACpB,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;AACrE,SAAA;KACF;IAEM,aAAa,GAAA;QAClB,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACpB,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;AACrE,SAAA;KACF;IAEM,wBAAwB,GAAA;AAE7B,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;YAEzB,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;iBACvD,SAAS,CAAC,IAAI,IAAG;gBAChB,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;AAC7C,qBAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,oBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB,iBAAC,CAAC,CAAC;AAEP,aAAC,CAAC,CAAC;AACN,SAAA;;KAGF;IAEM,SAAS,GAAA;QACd,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oBAAoB,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;AACvE,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACpE,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oBAAoB,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;;AAErF,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1F,SAAA;KACF;;;AAKD,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;AAED,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AAED,IAAA,IAAW,aAAa,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;KAC7D;AAED,IAAA,IAAW,cAAc,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,CAAC;KACnC;AAED,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,CAAC,CAAC;KACrC;AAED,IAAA,IAAW,YAAY,GAAA;QACrB,OAAO,WAAW,CAAC,YAAY,CAAC;KACjC;;;AAIO,IAAA,UAAU,CAAC,UAAiB,EAAA;QAClC,IAAI,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,IAAI,IAAG;YACrC,MAAM,OAAO,GAAG,uCAAuC,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAClF,MAAM,WAAW,GAAG,KAAK,CAAC;YAC1B,MAAM,WAAW,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC;iBAC1E,SAAS,CAAC,QAAQ,IAAG;AACpB,gBAAA,MAAM,OAAO,GAAG;AACd,oBAAA,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;AACvB,oBAAA,gBAAgB,EAAE,QAAQ;iBAC3B,CAAC;gBACF,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC;qBAChD,SAAS,CAAC,QAAQ,IAAG;AACpB,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;oBACxB,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;AAC7C,yBAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,wBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB,qBAAC,CAAC,CAAC;AACP,iBAAC,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KAEJ;IAEO,cAAc,GAAA;AACpB,QAAA,OAAO,IAAI,UAAU,CAAM,QAAQ,IAAG;YACpC,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,gBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAClC,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;qBACnE,SAAS,CAAC,WAAW,IAAG;AACvB,oBAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AAChC,oBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACnC,iBAAC,CAAC,CAAC;AACN,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;;IAID,MAAM,GAAA;AACJ,QAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC1B;;gHAtJU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA6B,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAlC,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAmC,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,6NCf/B,khHA4EM,EAAA,MAAA,EAAA,CAAA,yiEAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAzC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,UAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4FD7DO,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;+BACE,gBAAgB,EAAA,aAAA,EAGX,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,khHAAA,EAAA,MAAA,EAAA,CAAA,yiEAAA,CAAA,EAAA,CAAA;wLAK5B,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACU,UAAU,EAAA,CAAA;sBAAzB,KAAK;uBAAC,OAAO,CAAA;gBACJ,eAAe,EAAA,CAAA;sBAAxB,MAAM;gBACG,WAAW,EAAA,CAAA;sBAApB,MAAM;;;MEEI,sBAAsB,CAAA;;AAW/B,IAAA,WAAA,CACY,cAAiC,EACjC,mBAAyC,EACzC,YAAyB,EAAA;QAFzB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAmB;QACjC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAsB;QACzC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAa;AAV3B,QAAA,IAAA,CAAA,WAAW,GAAsB,IAAI,YAAY,EAAO,CAAC;AACzD,QAAA,IAAA,CAAA,mBAAmB,GAA+B,IAAI,YAAY,EAAE,CAAC;AAW3E,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;KAC/B;;AAGD,IAAA,QAAQ,MAAM;AAEd,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,EAAE;YACzF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AACvC,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,EAAE;AAC7F,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,KAAI;AACtF,gBAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AACnC,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;;;IAKM,aAAa,GAAA;QAChB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oBAAoB,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oBAAoB,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;;;AAG/E,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;KACzG;IAEM,WAAW,GAAA;;AAEd,QAAA,IAAI,CAAC,cAAc,CAAC,4BAA4B,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,KAAI;AAC3F,YAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AAC9B,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC/B,SAAC,CAAC,CAAC;KACN;;;AAID,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAED,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;AACD,IAAA,IAAW,gBAAgB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,KAAK,CAAC,CAAC;KAC3C;;;AAIO,IAAA,SAAS,CAAC,aAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,cAAc,CAAC,4BAA4B,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,KAAI;AACrF,YAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AAC9B,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC/B,SAAC,CAAC,CAAC;KACN;;;AAIM,IAAA,kBAAkB,CAAC,MAAM,EAAA;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KAC3B;AACM,IAAA,aAAa,CAAC,KAAmB,EAAA;AACpC,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACxC;;oHAnFQ,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAuC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAhC,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAmC,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,0MAFpB,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,+CCrBxD,mrBAaM,EAAA,MAAA,EAAA,CAAA,kTAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA3C,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4FDUO,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;+BACI,oBAAoB,EAAA,aAAA,EAGf,iBAAiB,CAAC,IAAI,aAC1B,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,EAAA,QAAA,EAAA,mrBAAA,EAAA,MAAA,EAAA,CAAA,kTAAA,CAAA,EAAA,CAAA;4JAG3C,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAEI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACG,mBAAmB,EAAA,CAAA;sBAA5B,MAAM;;;MERE,wBAAwB,CAAA;;AAwCjC,IAAA,WAAA,CACW,UAAsB,EACrB,eAA+B,EAC/B,mBAAyC;;IAElB,YAAiB,EAAA;QAJzC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACrB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAgB;QAC/B,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAsB;QAElB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAK;QArC3C,IAAyB,CAAA,yBAAA,GAAG,IAAI,CAAC;QACjC,IAAiC,CAAA,iCAAA,GAAG,IAAI,CAAC;QACzC,IAA0B,CAAA,0BAAA,GAAG,IAAI,CAAC;QAClC,IAAgC,CAAA,gCAAA,GAAG,KAAK,CAAC;QAGzC,IAAqB,CAAA,qBAAA,GAAG,IAAI,CAAC;QAC7B,IAAsB,CAAA,sBAAA,GAAG,IAAI,CAAC;QAC9B,IAA0B,CAAA,0BAAA,GAAG,IAAI,CAAC;QAClC,IAAyB,CAAA,yBAAA,GAAG,IAAI,CAAC;QAEjC,IAAqB,CAAA,qBAAA,GAAG,KAAK,CAAC;QAE9B,IAAqB,CAAA,qBAAA,GAAG,KAAK,CAAC;QAE9B,IAAuB,CAAA,uBAAA,GAA2B,EAAE,CAAC;AAEpD,QAAA,IAAA,CAAA,qBAAqB,GAA+B,IAAI,YAAY,EAAE,CAAC;AACvE,QAAA,IAAA,CAAA,cAAc,GAAsB,IAAI,YAAY,EAAO,CAAC;AAC5D,QAAA,IAAA,CAAA,6BAA6B,GAA0B,IAAI,YAAY,EAAW,CAAC;KAmBxF;;IAGE,QAAQ,GAAA;QACX,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAc,KAAI;YACrD,MAAM,EAAE,GAAG,MAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACnD,YAAA,IAAI,EAAE,EAAE;AACJ,gBAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,gBAAA,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,KAAI;AACtE,oBAAA,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC;AACxC,oBAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AAChC,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;AACvD,wBAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,wBAAA,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClD,qBAAC,CAAC,CAAC;AAEP,iBAAC,CAAC,CAAC;AACN,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;AACrF,aAAA;AACL,SAAC,CAAC,CAAC;KACN;;;AAID,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AACD,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;;;IAKM,qBAAqB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,KAAK,gBAAgB,CAAC,IAAI,CAAC;KACrF;;;AAKM,IAAA,cAAc,CAAC,SAAS,EAAA;AAC3B,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,QAAQ,KAAI;AAC/B,YAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACnE,YAAA,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;gBAC3E,IAAK,OAAe,CAAC,EAAE,EAAE;AACrB,oBAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1B,iBAAA;AAAM,qBAAA;AACH,oBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,iBAAA;AACL,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACN;IAEM,IAAI,GAAA;;AAEP,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;KACrF;IAEM,qBAAqB,GAAA;QACxB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KACjD;IAEM,WAAW,GAAA;;AAEd,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,yBAAyB,EAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAE,CAAC,CAAC;KACjH;AAEM,IAAA,SAAS,CAAC,KAAmB,EAAA;AAChC,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1C;;;AAIM,IAAA,eAAe,CAAC,KAAU,EAAA;AAC7B,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KAC3B;AACM,IAAA,kBAAkB,CAAC,KAAU,EAAA;AAChC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;KAC7B;IAEM,aAAa,GAAA;AAChB,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;KACjC;;;;;AASM,IAAA,wBAAwB,CAAC,KAAK,EAAA;AACjC,QAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;KAC7C;AAEM,IAAA,mBAAmB,CAAC,MAAM,EAAA;AAC7B,QAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE,CAAC;KAClD;;AArJQ,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,6GA6CrB,aAAa,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;0GA7ChB,wBAAwB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,iCAAA,EAAA,mCAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,gCAAA,EAAA,kCAAA,EAAA,OAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,6BAAA,EAAA,+BAAA,EAAA,EAAA,SAAA,EAFtB,CAAC,oBAAoB,CAAC,uFAGtB,2BAA2B,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAE3B,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvBrC,wuGA8DA,EAAA,MAAA,EAAA,CAAA,8fAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA4C,uBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,aAAA,EAAA,2BAAA,EAAA,4BAAA,EAAA,kCAAA,EAAA,mCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAR,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,WAAA,EAAA,eAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,4BAAA,EAAA,wBAAA,EAAA,2BAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA5B,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4FD1Ca,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,SAAS;AAEI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,iBAGjB,iBAAiB,CAAC,IAAI,EAC1B,SAAA,EAAA,CAAC,oBAAoB,CAAC,EAAA,QAAA,EAAA,wuGAAA,EAAA,MAAA,EAAA,CAAA,8fAAA,CAAA,EAAA,CAAA;;0BA+C5B,MAAM;2BAAC,aAAa,CAAA;4CA3CzB,2BAA2B,EAAA,CAAA;sBAD1B,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,2BAA2B,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBAGzD,sBAAsB,EAAA,CAAA;sBADrB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,sBAAsB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBAGpD,QAAQ,EAAA,CAAA;sBADP,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBAG/B,yBAAyB,EAAA,CAAA;sBAAjC,KAAK;gBACG,iCAAiC,EAAA,CAAA;sBAAzC,KAAK;gBACG,0BAA0B,EAAA,CAAA;sBAAlC,KAAK;gBACG,gCAAgC,EAAA,CAAA;sBAAxC,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEG,qBAAqB,EAAA,CAAA;sBAA7B,KAAK;gBACG,sBAAsB,EAAA,CAAA;sBAA9B,KAAK;gBACG,0BAA0B,EAAA,CAAA;sBAAlC,KAAK;gBACG,yBAAyB,EAAA,CAAA;sBAAjC,KAAK;gBAEG,qBAAqB,EAAA,CAAA;sBAA7B,KAAK;gBAEG,qBAAqB,EAAA,CAAA;sBAA7B,KAAK;gBAEG,uBAAuB,EAAA,CAAA;sBAA/B,KAAK;gBAEI,qBAAqB,EAAA,CAAA;sBAA9B,MAAM;gBACG,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBACG,6BAA6B,EAAA,CAAA;sBAAtC,MAAM;;;ME/CE,aAAa,CAAA;AAQzB;;MCLY,UAAU,CAAA;AAEnB,IAAA,WAAA,GAAA,GAAiB;;wGAFR,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4GAAV,UAAU,EAAA,CAAA,CAAA;4FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,UAAU;;;AC0CX,kBAAkB,CAAC,eAAe,CAAC;IAC/B,aAAa;IACb,iBAAiB;AACpB,CAAA,CAAC,CAAC;MA0EU,iBAAiB,CAAA;;+GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAtEtB,iBAAiB;QACjB,uBAAuB;QACvB,yBAAyB;QACzB,4BAA4B;QAC5B,yBAAyB;QACzB,kBAAkB;QAClB,qBAAqB;QACrB,iBAAiB;QACjB,uBAAuB;QACvB,oBAAoB;QACpB,2BAA2B;QAC3B,8BAA8B;QAC9B,wBAAwB;QACxB,0BAA0B;QAC1B,kBAAkB;QAClB,sBAAsB;AACtB,QAAA,8BAA8B,aAG9B,cAAc;QACd,YAAY;QACZ,aAAa;QACb,kBAAkB;QAClB,kBAAkB;QAClB,eAAe;QACf,cAAc;QACd,mBAAmB;QACnB,iBAAiB;QACjB,aAAa;QACb,mBAAmB;QACnB,WAAW;QACX,cAAc;QACd,qBAAqB;QACrB,kBAAkB;QAClB,UAAU;QACV,iBAAiB;QACjB,kBAAkB;QAClB,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;AACjB,QAAA,WAAW,aAWX,iBAAiB;QACjB,uBAAuB;QACvB,yBAAyB;QACzB,4BAA4B;QAC5B,yBAAyB;QACzB,kBAAkB;QAClB,qBAAqB;QACrB,iBAAiB;QACjB,uBAAuB;QACvB,oBAAoB;QACpB,2BAA2B;QAC3B,8BAA8B;QAC9B,wBAAwB;QACxB,0BAA0B;QAC1B,kBAAkB;QAClB,sBAAsB;QACtB,8BAA8B,CAAA,EAAA,CAAA,CAAA;AAGzB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EA5Bf,SAAA,EAAA;QACP,eAAe;QACf,oBAAoB;QACpB,eAAe;QACf,yBAAyB;QACzB,WAAW;QACX,UAAU;KACb,EA/BQ,OAAA,EAAA,CAAA;YACL,cAAc;YACd,YAAY;YACZ,aAAa;YACb,kBAAkB;YAClB,kBAAkB;YAClB,eAAe;YACf,cAAc;YACd,mBAAmB;YACnB,iBAAiB;YACjB,aAAa;YACb,mBAAmB;YACnB,WAAW;YACX,cAAc;YACd,qBAAqB;YACrB,kBAAkB;YAClB,UAAU;YACV,iBAAiB;YACjB,kBAAkB;YAClB,iBAAiB;YACjB,iBAAiB;YACjB,iBAAiB;YACjB,WAAW;AACd,SAAA,CAAA,EAAA,CAAA,CAAA;4FA6BQ,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAxE7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV,iBAAiB;wBACjB,uBAAuB;wBACvB,yBAAyB;wBACzB,4BAA4B;wBAC5B,yBAAyB;wBACzB,kBAAkB;wBAClB,qBAAqB;wBACrB,iBAAiB;wBACjB,uBAAuB;wBACvB,oBAAoB;wBACpB,2BAA2B;wBAC3B,8BAA8B;wBAC9B,wBAAwB;wBACxB,0BAA0B;wBAC1B,kBAAkB;wBAClB,sBAAsB;wBACtB,8BAA8B;AACjC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,cAAc;wBACd,YAAY;wBACZ,aAAa;wBACb,kBAAkB;wBAClB,kBAAkB;wBAClB,eAAe;wBACf,cAAc;wBACd,mBAAmB;wBACnB,iBAAiB;wBACjB,aAAa;wBACb,mBAAmB;wBACnB,WAAW;wBACX,cAAc;wBACd,qBAAqB;wBACrB,kBAAkB;wBAClB,UAAU;wBACV,iBAAiB;wBACjB,kBAAkB;wBAClB,iBAAiB;wBACjB,iBAAiB;wBACjB,iBAAiB;wBACjB,WAAW;AACd,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACP,eAAe;wBACf,oBAAoB;wBACpB,eAAe;wBACf,yBAAyB;wBACzB,WAAW;wBACX,UAAU;AACb,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,iBAAiB;wBACjB,uBAAuB;wBACvB,yBAAyB;wBACzB,4BAA4B;wBAC5B,yBAAyB;wBACzB,kBAAkB;wBAClB,qBAAqB;wBACrB,iBAAiB;wBACjB,uBAAuB;wBACvB,oBAAoB;wBACpB,2BAA2B;wBAC3B,8BAA8B;wBAC9B,wBAAwB;wBACxB,0BAA0B;wBAC1B,kBAAkB;wBAClB,sBAAsB;wBACtB,8BAA8B;AACjC,qBAAA;AACJ,iBAAA,CAAA;;;ACxHD;;AAEG;;ACFH;;AAEG;;;;"}