{"version":3,"sources":["node_modules/@vendasta/email-builder/fesm2020/vendasta-email-builder.mjs","libs/email-ui/email-builder/src/components/dynamic-component-selector/dynamic-component-selector.service.ts","libs/email-ui/email-builder/src/components/dynamic-component-selector/dynamic-component-dialog/dynamic-component-dialog.component.ts","libs/email-ui/email-builder/src/components/dynamic-component-selector/dynamic-component-dialog/dynamic-component-dialog.component.html","libs/core/src/lib/auth.interceptor.ts","libs/core/src/lib/core.module.ts","libs/email-ui/email-builder/src/components/rich-text-editor/rich-text-editor.component.ts","libs/email-ui/email-builder/src/components/rich-text-editor/rich-text-editor.component.html","libs/email-ui/email-builder/src/components/dynamic-component-selector/dynamic-component-selector.component.ts","libs/email-ui/email-builder/src/components/dynamic-component-selector/dynamic-component-selector.component.html","libs/email-ui/email-builder/src/components/dynamic-component-selector/dynamic-component-selector.module.ts","libs/email-ui/email-builder/src/shared.ts","libs/email-ui/email-builder/src/blocks/rich-text-block/after-block-drag.service.ts","libs/email-ui/email-builder/src/services/email-preview-refresh.service.ts","libs/email-ui/email-builder/src/types/contentblocks.ts","libs/email-ui/email-builder/src/blocks/button-block/button-block.component.ts","libs/email-ui/email-builder/src/blocks/button-block/button-block.component.html","libs/email-ui/email-builder/src/blocks/contact-card/contact-card.component.ts","libs/email-ui/email-builder/src/blocks/contact-card/contact-card.component.html","libs/email-ui/email-builder/src/directives/hold-shift-to-change-number-field-by-ten.directive.ts","libs/email-ui/email-builder/src/blocks/divider-block/divider-block.component.ts","libs/email-ui/email-builder/src/blocks/divider-block/divider-block.component.html","libs/email-ui/email-builder/src/blocks/heading-block/heading-block.component.ts","libs/email-ui/email-builder/src/blocks/heading-block/heading-block.component.html","libs/email-ui/email-builder/src/blocks/html-block/html-block.component.ts","libs/email-ui/email-builder/src/blocks/html-block/html-block.component.html","libs/content-generation/src/lib/assets/i18n/en_devel.json","libs/content-generation/src/lib/assets/i18n/content-generation-i18n.module.ts","node_modules/@vendasta/social-posts/fesm2020/vendasta-social-posts.mjs","libs/content-generation/src/lib/image-generation/image-generation.service.ts","libs/content-generation/src/lib/image-generation/image-generation-dialog/image-generation-dialog.component.ts","libs/content-generation/src/lib/image-generation/image-generation-dialog/image-generation-dialog.component.html","libs/email-ui/email-builder/src/services/image-upload.service.ts","libs/email-ui/email-builder/src/blocks/image-and-text-block/image-and-text-block.component.ts","libs/email-ui/email-builder/src/blocks/image-and-text-block/image-and-text-block.component.html","libs/email-ui/email-builder/src/blocks/image-block/image-block.component.ts","libs/email-ui/email-builder/src/blocks/image-block/image-block.component.html","libs/email-ui/email-builder/src/blocks/review-request-links-block/review-request-links-block.component.ts","libs/email-ui/email-builder/src/blocks/review-request-links-block/review-request-links-block.component.html","libs/email-ui/email-builder/src/components/suggest-content-dialog/suggest-content-dialog.component.ts","libs/email-ui/email-builder/src/components/suggest-content-dialog/suggest-content-dialog.component.html","libs/email-ui/email-builder/src/blocks/rich-text-block/rich-text-block.component.ts","libs/email-ui/email-builder/src/blocks/rich-text-block/rich-text-block.component.html","libs/email-ui/email-builder/src/blocks/simple-table-block/simple-table-block.component.ts","libs/email-ui/email-builder/src/blocks/simple-table-block/simple-table-block.component.html","libs/email-ui/email-builder/src/blocks/spacer-block/spacer-block.component.ts","libs/email-ui/email-builder/src/blocks/spacer-block/spacer-block.component.html","libs/email-ui/email-builder/src/services/feature-flag.service.ts","libs/email-ui/email-builder/src/components/email-block-padding/email-block-padding.component.ts","libs/email-ui/email-builder/src/components/email-block-padding/email-block-padding.component.html","libs/email-ui/email-builder/src/components/email-blocks-list/email-blocks-list.component.ts","libs/email-ui/email-builder/src/components/email-blocks-list/email-blocks-list.component.html","libs/email-ui/email-builder/src/components/unsaved-changes-dialog/unsaved-changes-dialog.component.ts","libs/email-ui/email-builder/src/components/unsaved-changes-dialog/unsaved-changes-dialog.component.html","libs/email-ui/email-builder/src/services/has-unsaved-changes.guard.ts","libs/email-ui/email-builder/src/services/preview-rendering.service.ts","libs/email-ui/email-builder/src/components/email-advanced-settings/empty-settings.ts","libs/email-ui/email-builder/src/components/email-advanced-settings/email-advanced-settings.component.ts","libs/email-ui/email-builder/src/components/email-advanced-settings/email-advanced-settings.component.html","libs/email-ui/email-builder/src/inbox-preview.ts","libs/galaxy/resize/src/resize/resize.component.ts","libs/galaxy/resize/src/resize/resize.component.html","libs/email-ui/email-editor-preview/src/email-editor-preview.component.ts","libs/email-ui/email-editor-preview/src/email-editor-preview.component.html","libs/email-ui/email-builder/src/email-builder.component.ts","libs/email-ui/email-builder/src/email-builder.component.html","libs/galaxy/resize/src/resize.module.ts","libs/email-ui/email-editor-preview/src/email-editor-preview.module.ts","libs/email-ui/email-builder/src/email-builder.module.ts"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { Injectable } from '@angular/core';\nimport * as i1 from '@angular/common/http';\nimport { HttpHeaders } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar OwnerType = /*#__PURE__*/function (OwnerType) {\n OwnerType[OwnerType[\"OWNER_TYPE_INVALID\"] = 0] = \"OWNER_TYPE_INVALID\";\n OwnerType[OwnerType[\"OWNER_TYPE_PARTNER\"] = 1] = \"OWNER_TYPE_PARTNER\";\n OwnerType[OwnerType[\"OWNER_TYPE_ACCOUNT_GROUP\"] = 2] = \"OWNER_TYPE_ACCOUNT_GROUP\";\n OwnerType[OwnerType[\"OWNER_TYPE_SYSTEM\"] = 3] = \"OWNER_TYPE_SYSTEM\";\n return OwnerType;\n}(OwnerType || {});\n// *********************************\n\nfunction enumStringToValue$1(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Access {\n static fromProto(proto) {\n let m = new Access();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scope !== 'undefined') {\n toReturn['scope'] = this.scope;\n }\n if (typeof this.public !== 'undefined') {\n toReturn['public'] = this.public;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CreateEmailBuilderTemplateRequest {\n static fromProto(proto) {\n let m = new CreateEmailBuilderTemplateRequest();\n m = Object.assign(m, proto);\n if (proto.ownerType) {\n m.ownerType = enumStringToValue(OwnerType, proto.ownerType);\n }\n if (proto.parent) {\n m.parent = TemplateReference.fromProto(proto.parent);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.ownerType !== 'undefined') {\n toReturn['ownerType'] = this.ownerType;\n }\n if (typeof this.ownerId !== 'undefined') {\n toReturn['ownerId'] = this.ownerId;\n }\n if (typeof this.appNamespace !== 'undefined') {\n toReturn['appNamespace'] = this.appNamespace;\n }\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n if (typeof this.templateDisplayName !== 'undefined') {\n toReturn['templateDisplayName'] = this.templateDisplayName;\n }\n if (typeof this.templateJson !== 'undefined') {\n toReturn['templateJson'] = this.templateJson;\n }\n if (typeof this.templateHtml !== 'undefined') {\n toReturn['templateHtml'] = this.templateHtml;\n }\n if (typeof this.templateSubject !== 'undefined') {\n toReturn['templateSubject'] = this.templateSubject;\n }\n if (typeof this.parent !== 'undefined' && this.parent !== null) {\n toReturn['parent'] = 'toApiJson' in this.parent ? this.parent.toApiJson() : this.parent;\n }\n return toReturn;\n }\n}\nclass DeleteEmailBuilderTemplateRequest {\n static fromProto(proto) {\n let m = new DeleteEmailBuilderTemplateRequest();\n m = Object.assign(m, proto);\n if (proto.ownerType) {\n m.ownerType = enumStringToValue(OwnerType, proto.ownerType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.ownerType !== 'undefined') {\n toReturn['ownerType'] = this.ownerType;\n }\n if (typeof this.ownerId !== 'undefined') {\n toReturn['ownerId'] = this.ownerId;\n }\n if (typeof this.appNamespace !== 'undefined') {\n toReturn['appNamespace'] = this.appNamespace;\n }\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n return toReturn;\n }\n}\nclass EmailBuilderTemplate {\n static fromProto(proto) {\n let m = new EmailBuilderTemplate();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n if (typeof this.templateDisplayName !== 'undefined') {\n toReturn['templateDisplayName'] = this.templateDisplayName;\n }\n if (typeof this.templateJson !== 'undefined') {\n toReturn['templateJson'] = this.templateJson;\n }\n if (typeof this.previewUrl !== 'undefined') {\n toReturn['previewUrl'] = this.previewUrl;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.templateHtml !== 'undefined') {\n toReturn['templateHtml'] = this.templateHtml;\n }\n if (typeof this.templateSubject !== 'undefined') {\n toReturn['templateSubject'] = this.templateSubject;\n }\n return toReturn;\n }\n}\nclass GetEmailBuilderTemplateRequest {\n static fromProto(proto) {\n let m = new GetEmailBuilderTemplateRequest();\n m = Object.assign(m, proto);\n if (proto.ownerType) {\n m.ownerType = enumStringToValue(OwnerType, proto.ownerType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.ownerType !== 'undefined') {\n toReturn['ownerType'] = this.ownerType;\n }\n if (typeof this.ownerId !== 'undefined') {\n toReturn['ownerId'] = this.ownerId;\n }\n if (typeof this.appNamespace !== 'undefined') {\n toReturn['appNamespace'] = this.appNamespace;\n }\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n return toReturn;\n }\n}\nclass GetEmailBuilderTemplateResponse {\n static fromProto(proto) {\n let m = new GetEmailBuilderTemplateResponse();\n m = Object.assign(m, proto);\n if (proto.template) {\n m.template = EmailBuilderTemplate.fromProto(proto.template);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.template !== 'undefined' && this.template !== null) {\n toReturn['template'] = 'toApiJson' in this.template ? this.template.toApiJson() : this.template;\n }\n return toReturn;\n }\n}\nclass GetEmailBuilderTemplatesRequest {\n static fromProto(proto) {\n let m = new GetEmailBuilderTemplatesRequest();\n m = Object.assign(m, proto);\n if (proto.ownerType) {\n m.ownerType = enumStringToValue(OwnerType, proto.ownerType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.ownerType !== 'undefined') {\n toReturn['ownerType'] = this.ownerType;\n }\n if (typeof this.ownerId !== 'undefined') {\n toReturn['ownerId'] = this.ownerId;\n }\n if (typeof this.appNamespace !== 'undefined') {\n toReturn['appNamespace'] = this.appNamespace;\n }\n if (typeof this.templateIds !== 'undefined') {\n toReturn['templateIds'] = this.templateIds;\n }\n return toReturn;\n }\n}\nclass GetEmailBuilderTemplatesResponse {\n static fromProto(proto) {\n let m = new GetEmailBuilderTemplatesResponse();\n m = Object.assign(m, proto);\n if (proto.templates) {\n m.templates = proto.templates.map(EmailBuilderTemplate.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.templates !== 'undefined' && this.templates !== null) {\n toReturn['templates'] = 'toApiJson' in this.templates ? this.templates.toApiJson() : this.templates;\n }\n return toReturn;\n }\n}\nclass ListEmailBuilderTemplatesRequest {\n static fromProto(proto) {\n let m = new ListEmailBuilderTemplatesRequest();\n m = Object.assign(m, proto);\n if (proto.ownerType) {\n m.ownerType = enumStringToValue(OwnerType, proto.ownerType);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.ownerType !== 'undefined') {\n toReturn['ownerType'] = this.ownerType;\n }\n if (typeof this.ownerId !== 'undefined') {\n toReturn['ownerId'] = this.ownerId;\n }\n if (typeof this.appNamespace !== 'undefined') {\n toReturn['appNamespace'] = this.appNamespace;\n }\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListEmailBuilderTemplatesResponse {\n static fromProto(proto) {\n let m = new ListEmailBuilderTemplatesResponse();\n m = Object.assign(m, proto);\n if (proto.templates) {\n m.templates = proto.templates.map(EmailBuilderTemplate.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.templates !== 'undefined' && this.templates !== null) {\n toReturn['templates'] = 'toApiJson' in this.templates ? this.templates.toApiJson() : this.templates;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass PagedRequestOptions {\n static fromProto(proto) {\n let m = new PagedRequestOptions();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n return toReturn;\n }\n}\nclass PagedResponseMetadata {\n static fromProto(proto) {\n let m = new PagedResponseMetadata();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.nextCursor !== 'undefined') {\n toReturn['nextCursor'] = this.nextCursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n return toReturn;\n }\n}\nclass SearchEmailBuilderTemplatesRequest {\n static fromProto(proto) {\n let m = new SearchEmailBuilderTemplatesRequest();\n m = Object.assign(m, proto);\n if (proto.ownerType) {\n m.ownerType = enumStringToValue(OwnerType, proto.ownerType);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.ownerType !== 'undefined') {\n toReturn['ownerType'] = this.ownerType;\n }\n if (typeof this.ownerId !== 'undefined') {\n toReturn['ownerId'] = this.ownerId;\n }\n if (typeof this.appNamespace !== 'undefined') {\n toReturn['appNamespace'] = this.appNamespace;\n }\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass SearchEmailBuilderTemplatesResponse {\n static fromProto(proto) {\n let m = new SearchEmailBuilderTemplatesResponse();\n m = Object.assign(m, proto);\n if (proto.templates) {\n m.templates = proto.templates.map(EmailBuilderTemplate.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n if (proto.hits) {\n m.hits = parseInt(proto.hits, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.templates !== 'undefined' && this.templates !== null) {\n toReturn['templates'] = 'toApiJson' in this.templates ? this.templates.toApiJson() : this.templates;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n if (typeof this.hits !== 'undefined') {\n toReturn['hits'] = this.hits;\n }\n return toReturn;\n }\n}\nclass SuggestContentRequest {\n static fromProto(proto) {\n let m = new SuggestContentRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.prompt !== 'undefined') {\n toReturn['prompt'] = this.prompt;\n }\n return toReturn;\n }\n}\nclass SuggestContentResponse {\n static fromProto(proto) {\n let m = new SuggestContentResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.message !== 'undefined') {\n toReturn['message'] = this.message;\n }\n return toReturn;\n }\n}\nclass TemplateReference {\n static fromProto(proto) {\n let m = new TemplateReference();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.appNamespace !== 'undefined') {\n toReturn['appNamespace'] = this.appNamespace;\n }\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n return toReturn;\n }\n}\nclass UpdateEmailBuilderTemplateRequest {\n static fromProto(proto) {\n let m = new UpdateEmailBuilderTemplateRequest();\n m = Object.assign(m, proto);\n if (proto.ownerType) {\n m.ownerType = enumStringToValue(OwnerType, proto.ownerType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.ownerType !== 'undefined') {\n toReturn['ownerType'] = this.ownerType;\n }\n if (typeof this.ownerId !== 'undefined') {\n toReturn['ownerId'] = this.ownerId;\n }\n if (typeof this.appNamespace !== 'undefined') {\n toReturn['appNamespace'] = this.appNamespace;\n }\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n if (typeof this.templateDisplayName !== 'undefined') {\n toReturn['templateDisplayName'] = this.templateDisplayName;\n }\n if (typeof this.templateJson !== 'undefined') {\n toReturn['templateJson'] = this.templateJson;\n }\n if (typeof this.templateHtml !== 'undefined') {\n toReturn['templateHtml'] = this.templateHtml;\n }\n if (typeof this.templateSubject !== 'undefined') {\n toReturn['templateSubject'] = this.templateSubject;\n }\n return toReturn;\n }\n}\n\n// *********************************\n\nconst environment = (window ? window['environment'] : 'prod') ?? 'prod';\nconst hostMap = {\n 'local': 'email-builder-api.vendasta-local.com',\n 'test': '',\n 'demo': 'email-builder-demo.apigateway.co',\n 'prod': 'email-builder-prod.apigateway.co',\n 'production': 'email-builder-prod.apigateway.co'\n};\nlet HostService = /*#__PURE__*/(() => {\n class HostService {\n get host() {\n return hostMap[environment.toLowerCase()];\n }\n get hostWithScheme() {\n return 'https://' + this.host;\n }\n }\n HostService.ɵfac = function HostService_Factory(t) {\n return new (t || HostService)();\n };\n HostService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HostService,\n factory: HostService.ɵfac,\n providedIn: 'root'\n });\n return HostService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet ContentGenerationApiService = /*#__PURE__*/(() => {\n class ContentGenerationApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n suggestContent(r) {\n const request = r.toApiJson ? r : new SuggestContentRequest(r);\n return this.http.post(this._host + \"/emailbuilder.v1.ContentGeneration/SuggestContent\", request.toApiJson(), this.apiOptions()).pipe(map(resp => SuggestContentResponse.fromProto(resp)));\n }\n }\n ContentGenerationApiService.ɵfac = function ContentGenerationApiService_Factory(t) {\n return new (t || ContentGenerationApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n ContentGenerationApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ContentGenerationApiService,\n factory: ContentGenerationApiService.ɵfac,\n providedIn: 'root'\n });\n return ContentGenerationApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet TemplatesApiService = /*#__PURE__*/(() => {\n class TemplatesApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n createEmailBuilderTemplate(r) {\n const request = r.toApiJson ? r : new CreateEmailBuilderTemplateRequest(r);\n return this.http.post(this._host + \"/emailbuilder.v1.Templates/CreateEmailBuilderTemplate\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n updateEmailBuilderTemplate(r) {\n const request = r.toApiJson ? r : new UpdateEmailBuilderTemplateRequest(r);\n return this.http.post(this._host + \"/emailbuilder.v1.Templates/UpdateEmailBuilderTemplate\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getEmailBuilderTemplate(r) {\n const request = r.toApiJson ? r : new GetEmailBuilderTemplateRequest(r);\n return this.http.post(this._host + \"/emailbuilder.v1.Templates/GetEmailBuilderTemplate\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetEmailBuilderTemplateResponse.fromProto(resp)));\n }\n getEmailBuilderTemplates(r) {\n const request = r.toApiJson ? r : new GetEmailBuilderTemplatesRequest(r);\n return this.http.post(this._host + \"/emailbuilder.v1.Templates/GetEmailBuilderTemplates\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetEmailBuilderTemplatesResponse.fromProto(resp)));\n }\n listEmailBuilderTemplates(r) {\n const request = r.toApiJson ? r : new ListEmailBuilderTemplatesRequest(r);\n return this.http.post(this._host + \"/emailbuilder.v1.Templates/ListEmailBuilderTemplates\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListEmailBuilderTemplatesResponse.fromProto(resp)));\n }\n deleteEmailBuilderTemplate(r) {\n const request = r.toApiJson ? r : new DeleteEmailBuilderTemplateRequest(r);\n return this.http.post(this._host + \"/emailbuilder.v1.Templates/DeleteEmailBuilderTemplate\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n searchEmailBuilderTemplates(r) {\n const request = r.toApiJson ? r : new SearchEmailBuilderTemplatesRequest(r);\n return this.http.post(this._host + \"/emailbuilder.v1.Templates/SearchEmailBuilderTemplates\", request.toApiJson(), this.apiOptions()).pipe(map(resp => SearchEmailBuilderTemplatesResponse.fromProto(resp)));\n }\n }\n TemplatesApiService.ɵfac = function TemplatesApiService_Factory(t) {\n return new (t || TemplatesApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n TemplatesApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: TemplatesApiService,\n factory: TemplatesApiService.ɵfac,\n providedIn: 'root'\n });\n return TemplatesApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n\nvar AppNamespace = /*#__PURE__*/function (AppNamespace) {\n AppNamespace[\"DEV_SANDBOX\"] = \"developer_sandbox\";\n AppNamespace[\"CAMPAIGNS\"] = \"campaigns\";\n AppNamespace[\"AUTOMATIONS\"] = \"automations\";\n AppNamespace[\"EMAIL_LIBRARY\"] = \"email_library\";\n AppNamespace[\"REPUTATION_REVIEW_REQUEST\"] = \"reputation_management/review_request\";\n return AppNamespace;\n}(AppNamespace || {});\nlet TemplatesService = /*#__PURE__*/(() => {\n class TemplatesService {\n constructor(api) {\n this.api = api;\n }\n createNewTemplate(ownerType, ownerId, appNamespace, templateId, templateDisplayName, templateJSON, templateHTML, templateSubject, parent) {\n const req = new CreateEmailBuilderTemplateRequest({\n ownerType: ownerType,\n ownerId: ownerId,\n appNamespace: appNamespace,\n templateId: templateId,\n templateDisplayName: templateDisplayName,\n templateJson: templateJSON,\n templateHtml: templateHTML,\n templateSubject: templateSubject,\n parent: parent\n });\n return this.api.createEmailBuilderTemplate(req).pipe(map(() => null));\n }\n updateExistingTemplate(ownerType, ownerId, appNamespace, templateId, templateDisplayName, templateJSON, templateHTML, templateSubject) {\n const req = new UpdateEmailBuilderTemplateRequest({\n ownerType: ownerType,\n ownerId: ownerId,\n appNamespace: appNamespace,\n templateId: templateId,\n templateDisplayName: templateDisplayName,\n templateJson: templateJSON,\n templateHtml: templateHTML,\n templateSubject: templateSubject\n });\n return this.api.updateEmailBuilderTemplate(req).pipe(map(() => null));\n }\n getTemplate(ownerType, ownerId, appNamespace, templateId) {\n const req = new GetEmailBuilderTemplateRequest({\n ownerType: ownerType,\n ownerId: ownerId,\n appNamespace: appNamespace,\n templateId: templateId\n });\n return this.api.getEmailBuilderTemplate(req).pipe(map(resp => resp.template));\n }\n getTemplates(ownerType, ownerId, appNamespace, templateIds) {\n const req = new GetEmailBuilderTemplatesRequest({\n ownerType: ownerType,\n ownerId: ownerId,\n appNamespace: appNamespace,\n templateIds: templateIds\n });\n return this.api.getEmailBuilderTemplates(req).pipe(map(resp => resp.templates));\n }\n getTemplateHTML(ownerType, ownerId, appNamespace, templateId) {\n const req = new GetEmailBuilderTemplateRequest({\n ownerType: ownerType,\n ownerId: ownerId,\n appNamespace: appNamespace,\n templateId: templateId\n });\n return this.api.getEmailBuilderTemplate(req).pipe(map(resp => resp?.template?.templateHtml));\n }\n listTemplates(ownerType, ownerId, appNamespace, searchTerm, cursor, pageSize) {\n const req = new ListEmailBuilderTemplatesRequest({\n ownerType: ownerType,\n ownerId: ownerId,\n appNamespace: appNamespace,\n searchTerm: searchTerm,\n pagingOptions: {\n cursor: cursor,\n pageSize: pageSize\n }\n });\n return this.api.listEmailBuilderTemplates(req).pipe(map(v => {\n v.templates = v.templates || [];\n return v;\n }));\n }\n searchTemplates(ownerType, ownerId, appNamespace, searchTerm, pageSize, cursor) {\n const req = new SearchEmailBuilderTemplatesRequest({\n ownerType: ownerType,\n ownerId: ownerId,\n appNamespace: appNamespace,\n searchTerm: searchTerm,\n pagingOptions: new PagedRequestOptions({\n cursor: cursor,\n pageSize: pageSize\n })\n });\n return this.api.searchEmailBuilderTemplates(req).pipe(map(v => {\n v.templates = v.templates || [];\n return v;\n }));\n }\n deleteTemplate(ownerType, ownerId, appNamespace, templateId) {\n const req = new DeleteEmailBuilderTemplateRequest({\n ownerType: ownerType,\n ownerId: ownerId,\n appNamespace: appNamespace,\n templateId: templateId\n });\n return this.api.deleteEmailBuilderTemplate(req);\n }\n }\n TemplatesService.ɵfac = function TemplatesService_Factory(t) {\n return new (t || TemplatesService)(i0.ɵɵinject(TemplatesApiService));\n };\n TemplatesService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: TemplatesService,\n factory: TemplatesService.ɵfac,\n providedIn: 'root'\n });\n return TemplatesService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet ContentGenerationService = /*#__PURE__*/(() => {\n class ContentGenerationService {\n constructor(api) {\n this.api = api;\n }\n suggestContent(prompt) {\n const req = new SuggestContentRequest({\n prompt: prompt\n });\n return this.api.suggestContent(req).pipe(map(resp => resp.message));\n }\n }\n ContentGenerationService.ɵfac = function ContentGenerationService_Factory(t) {\n return new (t || ContentGenerationService)(i0.ɵɵinject(ContentGenerationApiService));\n };\n ContentGenerationService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ContentGenerationService,\n factory: ContentGenerationService.ɵfac,\n providedIn: 'root'\n });\n return ContentGenerationService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Access, AppNamespace, ContentGenerationService, CreateEmailBuilderTemplateRequest, DeleteEmailBuilderTemplateRequest, EmailBuilderTemplate, GetEmailBuilderTemplateRequest, GetEmailBuilderTemplateResponse, GetEmailBuilderTemplatesRequest, GetEmailBuilderTemplatesResponse, ListEmailBuilderTemplatesRequest, ListEmailBuilderTemplatesResponse, OwnerType, PagedRequestOptions, PagedResponseMetadata, SearchEmailBuilderTemplatesRequest, SearchEmailBuilderTemplatesResponse, SuggestContentRequest, SuggestContentResponse, TemplateReference, TemplatesService, UpdateEmailBuilderTemplateRequest };\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { ActivatableApp } from '@vendasta/marketplace-packages';\nimport {\n ListSubstitutionParametersRequestFiltersInterface,\n SubstitutionParameter,\n TemplatesService,\n} from '@vendasta/templates';\nimport { Observable } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\nimport {\n AppListingServiceInterface,\n EMAIL_BUILDER_APP_LISTING_SERVICE_TOKEN,\n} from '../../services/app-listing-service.interface';\n\nexport interface Option {\n title: string;\n value: string;\n}\n\nexport interface VariableMenuItemOptions {\n requiredParams: string[];\n nestedDynamicSelector: boolean;\n}\n\nexport interface VariableMenuItem {\n textKey: string;\n replacementTags: string[];\n template?: string;\n subItems?: SubstitutionParameter[];\n options?: VariableMenuItemOptions;\n}\n\n@Injectable()\nexport class DynamicComponentSelectorService {\n private parentVariableCategories: VariableMenuItem[] = [];\n constructor(\n private readonly templatesService: TemplatesService,\n @Inject(EMAIL_BUILDER_APP_LISTING_SERVICE_TOKEN) @Optional() private appListingService: AppListingServiceInterface,\n ) {}\n\n public hasComponentsToDisplay(): boolean {\n return this.parentVariableCategories.length > 0;\n }\n\n public getVariables(filters: ListSubstitutionParametersRequestFiltersInterface): Observable {\n return this.templatesService\n .listSubstitutionParameters(filters)\n .pipe(map((params) => this.filterSubstitutionParameters(params)));\n }\n\n private filterSubstitutionParameters(params: SubstitutionParameter[]): VariableMenuItem[] {\n return this.parentVariableCategories.map((v) => ({\n textKey: v.textKey,\n replacementTags: v.replacementTags,\n options: v.options,\n subItems: params\n .filter((p) => v.replacementTags.some((t) => t === p.replacementTag))\n .sort(function (a, b): number {\n return v.replacementTags.indexOf(a.replacementTag) - v.replacementTags.indexOf(b.replacementTag);\n }),\n }));\n }\n\n public getProductSubstitutionVariables(): Observable {\n return this.appListingService.listAllActivatableApps().pipe(take(1));\n }\n\n public overrideParentVariableCategories(variableCategories: VariableMenuItem[]): VariableMenuItem[] {\n return (this.parentVariableCategories = variableCategories);\n }\n}\n","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\nimport { Option, VariableMenuItem, DynamicComponentSelectorService } from '../dynamic-component-selector.service';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { map, shareReplay, switchMap } from 'rxjs/operators';\nimport { SubstitutionParameter } from '@vendasta/templates';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'email-dynamic-component-dialog',\n templateUrl: './dynamic-component-dialog.component.html',\n styleUrls: ['./dynamic-component-dialog.component.scss'],\n})\nexport class DynamicComponentDialogComponent implements OnInit {\n @Output() formResult: EventEmitter = new EventEmitter();\n readonly allowedEntryApps = ['RM', 'SM'];\n\n variables$: Observable = this.dynamicComponentSelectorService\n .getVariables({ includeHtml: true })\n .pipe(\n map((vars) => {\n return vars.filter((v) => {\n return (v?.options?.requiredParams || []).reduce((prev, curr, i, arr) => {\n return prev && !!this[arr[i]];\n }, true);\n });\n }),\n shareReplay(1),\n );\n\n chosenCategory: VariableMenuItem = null;\n chosenParam: SubstitutionParameter = null;\n chosenParamDetails: string = null;\n chosenDynamicParam$$ = new ReplaySubject(1);\n chosenDynamicParam$: Observable;\n\n constructor(\n private readonly dynamicComponentSelectorService: DynamicComponentSelectorService,\n public dialogRef: MatDialogRef,\n ) {}\n\n ngOnInit(): void {\n this.chosenDynamicParam$ = this.chosenDynamicParam$$.asObservable().pipe(\n switchMap((chosenDynamicParam) => {\n if (\n chosenDynamicParam === 'productName' ||\n chosenDynamicParam === 'productPreviewUrl' ||\n chosenDynamicParam === 'productUrl'\n ) {\n return this.dynamicComponentSelectorService.getProductSubstitutionVariables().pipe(\n map((apps) => {\n if (chosenDynamicParam === 'productUrl') {\n apps = apps.filter((a) => this.allowedEntryApps.includes(a.appId));\n }\n return apps.map((app) => {\n return {\n title: app.name,\n value: app.appId,\n };\n });\n }),\n );\n }\n }),\n );\n }\n\n handleCategoryChange(): void {\n this.chosenParam = null;\n this.chosenParamDetails = null;\n }\n\n handleParamChange(): void {\n this.chosenParamDetails = null;\n if (\n this.chosenParam.replacementTag === 'productName' ||\n this.chosenParam.replacementTag === 'productPreviewUrl' ||\n this.chosenParam.replacementTag === 'productUrl'\n ) {\n this.chosenDynamicParam$$.next(this.chosenParam.replacementTag);\n }\n }\n\n add(): void {\n let replacementTag = this.chosenParam.replacementTag;\n if (this.chosenParamDetails) {\n replacementTag = `${replacementTag}['${this.chosenParamDetails}']`;\n }\n this.dialogRef.close('{{ ' + replacementTag + ' }}');\n }\n\n close(): void {\n this.dialogRef.close(null);\n }\n}\n","\n

{{ 'EMAIL_BUILDER.DYNAMIC_COMPONENT_DIALOG.ADD_HEADING' | translate }}

\n \n \n \n {{ 'EMAIL_BUILDER.DYNAMIC_COMPONENT_DIALOG.CATEGORY' | translate }}\n \n \n {{ mainItem.textKey | translate }}\n \n \n \n \n \n \n \n \n {{ chosenCategory.textKey | translate }}\n \n \n \n {{ subParam.displayName | translate }}\n \n \n \n \n \n \n \n \n \n \n {{ chosenParam.displayName | translate }}\n \n \n \n {{ v.title | translate }}\n \n \n \n \n \n \n
\n
\n
\n \n
\n\n
\n \n \n {{ 'EMAIL_BUILDER.DYNAMIC_COMPONENT_DIALOG.ADD_BUTTON' | translate }}\n \n
\n
\n\n\n \n \n {{ 'EMAIL_BUILDER.DYNAMIC_COMPONENT_DIALOG.NO_OPTIONS' | translate }}\n \n \n\n","import { Injectable, Injector } from '@angular/core';\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { switchMap, first } from 'rxjs/operators';\nimport { SessionService } from './session.service';\n\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor {\n constructor(private inj: Injector) {}\n\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\n if (!req.withCredentials) {\n return next.handle(req);\n }\n const auth = this.inj.get(SessionService); // Work around for cyclic dependency with app config service\n return auth.getSessionId().pipe(\n first(),\n switchMap((sessionId) => {\n if (sessionId) {\n return next.handle(req.clone({ headers: req.headers.set('Authorization', `Bearer ${sessionId}`) }));\n }\n return next.handle(req);\n }),\n );\n }\n}\n","import { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { AuthInterceptor } from './auth.interceptor';\n\n@NgModule({\n imports: [],\n providers: [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: AuthInterceptor,\n multi: true,\n },\n ],\n})\nexport class CoreModule {}\n","import 'tinymce/icons/default';\nimport 'tinymce/themes/silver';\n\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { UntypedFormControl, ValidationErrors } from '@angular/forms';\nimport { Validator } from '@vendasta/shared';\nimport { Subscription } from 'rxjs';\n\ndeclare let tinymce: any;\n\n// If we want to turn this into a proper input\n// https://blog.angular-university.io/angular-custom-form-controls/\n\nconst tinyMCEHyperlinkTextColour = '#057EC1';\n\n@Component({\n selector: 'email-rich-text-editor',\n templateUrl: './rich-text-editor.component.html',\n styleUrls: ['./rich-text-editor.component.scss'],\n})\nexport class RichTextEditorComponent implements AfterViewInit, OnDestroy {\n @HostBinding('class') class = 'email-rich-text-editor';\n\n @ViewChild('richEditorDiv') richEditorDiv: ElementRef;\n\n @Input() disabled: boolean;\n @Input() menubar: any = false;\n @Input() menu: any = false;\n @Input() toolbar: string[] = [\n 'bold italic link unlink | alignleft aligncenter alignright | bullist numlist | code removeformat',\n ];\n @Input() plugins = 'lists link code image';\n @Input() width: number;\n @Input() height: string | number = '100%';\n // This is for uploading images\n @Input() showUploadTab = false;\n @Input() invalidElements: string;\n\n @Input() set value(value: string) {\n this._value = value;\n }\n @Output() valueChange: EventEmitter = new EventEmitter();\n @Output() statusChange: EventEmitter = new EventEmitter();\n\n _value: string;\n editorIsReady = false;\n\n private editor: any;\n private subscriptions: Subscription[] = [];\n\n ngAfterViewInit(): void {\n this.subscriptions.push(\n this.valueChange.subscribe((value) => {\n if (value !== '') {\n const isValid = Validator.containsValidDynamicContent({ value: value } as UntypedFormControl);\n this.statusChange.emit(isValid);\n }\n }),\n );\n // using setTimeout as a hack to make sure everything is\n // ready before loading\n window.setTimeout(() => {\n this.setupEditor();\n }, 0);\n }\n\n ngOnDestroy(): void {\n tinymce.remove(this.editor);\n this.subscriptions.forEach((subscription) => {\n subscription.unsubscribe();\n });\n }\n\n onEditorChange(): void {\n if (!this.editor) {\n return;\n }\n const newContent = this.editor.getContent();\n if (newContent === this._value) {\n return;\n } else {\n this.valueChange.emit(newContent);\n this._value = newContent;\n }\n }\n\n public reloadEditor(): void {\n console.log('reloadEditor');\n tinymce.remove(this.editor);\n window.setTimeout(() => {\n this.setupEditor();\n }, 0);\n }\n\n insertAtCursor(text: string): void {\n this.editor.insertContent(text);\n }\n\n focus(): void {\n this.richEditorDiv.nativeElement.focus();\n }\n\n setupEditor(): void {\n tinymce.baseURL = 'https://storage.googleapis.com/developers-vendasta-client/assets';\n tinymce.init({\n browser_spellcheck: true,\n content_style: `a {color: ${tinyMCEHyperlinkTextColour}`,\n target: this.richEditorDiv.nativeElement,\n // selector: '#' + this.elementId,\n readonly: this.disabled,\n width: this.width,\n height: this.height,\n menubar: this.menubar,\n menu: this.menu,\n toolbar: this.toolbar,\n plugins: this.plugins,\n convert_urls: false,\n allow_conditional_comments: true,\n valid_children: '+body[style]',\n invalid_elements: this.invalidElements || null,\n branding: false,\n setup: (editor) => {\n this.editor = editor;\n editor.on('init', () => {\n this.editor.setContent(this._value);\n });\n // prevents this.editor from being undefined on events\n const updateHandler = () => {\n this.onEditorChange();\n };\n editor.on('keyup', updateHandler);\n editor.on('change', updateHandler);\n editor.on('NodeChange', updateHandler);\n },\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n images_upload_handler: function (blobInfo: any, success: any, failure: any): void {\n //\n },\n images_upload_url: this.showUploadTab ? 'any-non-empty-value' : '',\n init_instance_callback: () => {\n this.editorIsReady = true;\n },\n });\n }\n}\n","\n\n\n
\n \n
\n
\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { take } from 'rxjs/operators';\nimport { DynamicComponentDialogComponent } from './dynamic-component-dialog/dynamic-component-dialog.component';\nimport { RichTextEditorComponent } from '../rich-text-editor/rich-text-editor.component';\nimport { DynamicComponentSelectorService } from './dynamic-component-selector.service';\n\n@Component({\n selector: 'email-dynamic-component-selector',\n templateUrl: 'dynamic-component-selector.component.html',\n styleUrls: ['dynamic-component-selector.component.scss'],\n})\nexport class DynamicComponentSelectorComponent {\n @Input() marketId: string;\n @Input() target: HTMLInputElement;\n @Input() model: string;\n @Input() richTextEditorRef?: RichTextEditorComponent;\n\n @Output() modelChange: EventEmitter = new EventEmitter();\n\n public variablesReady = this.variableService.hasComponentsToDisplay();\n\n constructor(private dialog: MatDialog, private variableService: DynamicComponentSelectorService) {}\n\n openDialog(): void {\n const dialogRef = this.dialog.open(DynamicComponentDialogComponent, {\n width: '450px',\n height: '450px',\n });\n dialogRef\n .afterClosed()\n .pipe(take(1))\n .subscribe((res: string | null) => {\n if (res) {\n this.selectVariable(res);\n }\n });\n }\n\n selectVariable(replacementTag: string): void {\n if (this.richTextEditorRef) {\n this.richTextEditorRef.insertAtCursor(replacementTag);\n window.setTimeout(() => {\n this.richTextEditorRef.focus();\n }, 0);\n } else {\n const startPos = this.target.selectionStart;\n const endPos = this.target.selectionEnd ?? startPos;\n\n const contentBefore = this.target.value.substr(0, startPos);\n const contentAfter = this.target.value.substr(endPos, this.target.value.length);\n\n const newValue = contentBefore + replacementTag + contentAfter;\n this.target.value = newValue;\n this.target.selectionStart = startPos;\n\n this.modelChange.emit(newValue);\n\n // Using setTimeout fix bug where input does not focus\n window.setTimeout(() => {\n this.target.focus();\n this.target.setSelectionRange(startPos, replacementTag.length + startPos);\n }, 0);\n }\n }\n}\n","\n data_object\n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatListModule } from '@angular/material/list';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { GalaxyEmptyStateModule } from '@vendasta/galaxy/empty-state';\nimport { GalaxyWrapModule } from '@vendasta/galaxy/galaxy-wrap';\nimport { GalaxyTooltipModule } from '@vendasta/galaxy/tooltip';\n\nimport { DynamicComponentDialogComponent } from './dynamic-component-dialog/dynamic-component-dialog.component';\nimport { DynamicComponentSelectorComponent } from './dynamic-component-selector.component';\n\nimport {\n DynamicComponentSelectorService,\n VariableMenuItemOptions,\n VariableMenuItem,\n Option,\n} from './dynamic-component-selector.service';\nexport { DynamicComponentSelectorService, VariableMenuItemOptions, VariableMenuItem, Option };\n\nimport { EmailUII18nModule } from '../../../../src/lib/i18n/email-ui-i18n.module';\n\n@NgModule({\n providers: [DynamicComponentSelectorService],\n declarations: [DynamicComponentSelectorComponent, DynamicComponentDialogComponent],\n imports: [\n CommonModule,\n GalaxyTooltipModule,\n GalaxyWrapModule,\n MatFormFieldModule,\n MatButtonModule,\n MatDialogModule,\n MatInputModule,\n MatListModule,\n MatIconModule,\n MatTooltipModule,\n MatCardModule,\n MatOptionModule,\n TranslateModule,\n MatSelectModule,\n GalaxyEmptyStateModule,\n EmailUII18nModule,\n ],\n exports: [DynamicComponentSelectorComponent],\n})\nexport class DynamicComponentSelectorModule {}\n","// Other drag and drop libraries:\n// https://github.com/valor-software/ng2-dragula\n// https://kutlugsahin.github.io/ngx-smooth-dnd/\n// https://angular-dnd-survey-creator.netlify.com/editor\n// https://github.com/angular/components/issues/14273\n\n// A more complex method to deep clone an object\n// https://stackoverflow.com/questions/28150967/typescript-cloning-object/28152032#28152032\nimport { inject, InjectionToken } from '@angular/core';\nimport { AccountGroup } from '@galaxy/account-group';\nimport { Sender, SenderType } from '@vendasta/email';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/**\n * A quick and dirty way to deep copy an object.\\\n * *Warning*: This will convert date types into strings\n * @param input - the object to duplicate.\n */\nexport function jsonCopy(input: object): object {\n return JSON.parse(JSON.stringify(input));\n}\n\nexport const SENDER_INJECTION_TOKEN: InjectionToken> = new InjectionToken(\n 'com.vendasta.email_builder.sender',\n);\n\nexport function buildSenderData(): Observable {\n const partnerID$ = inject('PARTNER_ID' as any, { optional: true }) as Observable;\n const accountGroup$ = inject('com.vendasta.bcc.account_group' as any, {\n optional: true,\n }) as Observable;\n const accountGroupID$ = inject('ACCOUNT_GROUP_ID' as any, { optional: true }) as Observable;\n\n if (accountGroup$) {\n return accountGroup$.pipe(\n map((agid) => {\n const sender = { type: SenderType.SENDER_TYPE_BUSINESS, id: agid.accountGroupId } as Sender;\n return sender;\n }),\n );\n } else if (accountGroupID$) {\n return accountGroupID$.pipe(\n map((agid) => {\n const sender = { type: SenderType.SENDER_TYPE_BUSINESS, id: agid } as Sender;\n return sender;\n }),\n );\n } else if (partnerID$) {\n return partnerID$.pipe(\n map((pid) => {\n const sender = { type: SenderType.SENDER_TYPE_PARTNER, id: pid } as Sender;\n return sender;\n }),\n );\n }\n\n throw new Error('Expected one of partner ID or account group');\n}\n","import { EventEmitter, Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'any',\n})\nexport class AfterBlockDragService {\n dragHappenedEmitter$: EventEmitter = new EventEmitter();\n\n dragHappened(): void {\n this.dragHappenedEmitter$.emit();\n }\n}\n","import { EventEmitter, Injectable, OnDestroy } from '@angular/core';\nimport { asyncScheduler, Subscription } from 'rxjs';\nimport { throttleTime, delay } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'any',\n})\nexport class EmailPreviewRefreshService implements OnDestroy {\n /** Emits on all events received from .refresh() */\n unthrottledRefreshEmitter$: EventEmitter = new EventEmitter();\n\n /** Emits AFTER throttling for 800ms */\n public refreshEmitter$: EventEmitter = new EventEmitter();\n\n /** Emits BEFORE throttling for 800ms */\n public refreshStartedEmitter$: EventEmitter = new EventEmitter();\n\n private subscriptions: Subscription[] = [];\n\n constructor() {\n // Default refreshEmitter\n this.subscriptions.push(\n this.unthrottledRefreshEmitter$\n .pipe(throttleTime(800, asyncScheduler, { trailing: true }), delay(50))\n .subscribe(() => {\n this.refreshEmitter$.emit();\n }),\n );\n\n // refreshStartedEmitter\n this.subscriptions.push(\n this.unthrottledRefreshEmitter$.pipe(throttleTime(800, asyncScheduler, { leading: true })).subscribe(() => {\n this.refreshStartedEmitter$.emit();\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n\n refresh(): void {\n this.unthrottledRefreshEmitter$.emit();\n }\n}\n","import { ImageBlock } from '../blocks/image-block/image-block.component';\nimport { RichTextBlock } from '../blocks/rich-text-block/rich-text-block.component';\nimport { HeadingBlock } from '../blocks/heading-block/heading-block.component';\nimport { ButtonBlock } from '../blocks/button-block/button-block.component';\nimport { DividerBlock } from '../blocks/divider-block/divider-block.component';\nimport { SpacerBlock } from '../blocks/spacer-block/spacer-block.component';\nimport { HtmlBlock } from '../blocks/html-block/html-block.component';\nimport { ContactCard } from '../blocks/contact-card/contact-card.component';\nimport { SimpleTableBlock } from '../blocks/simple-table-block/simple-table-block.component';\nimport { ImageAndTextBlock } from '../blocks/image-and-text-block/image-and-text-block.component';\nimport { ReviewRequestLinksBlock } from '../blocks/review-request-links-block/review-request-links-block.component';\n\nimport { EmailSetup } from '../components/email-advanced-settings/email-advanced-settings.component';\n\nexport type blockType =\n | 'image'\n | 'rich_text'\n | 'heading'\n | 'button'\n | 'contact_card'\n | 'image_and_text'\n | 'simple_table'\n | 'divider'\n | 'spacer'\n | 'html'\n | 'add_new_block'\n | 'suggest_content'\n | OptionalBlockTypeID.REVIEW_REQUEST_LINKS;\n\nexport type contentBlockInterfaces =\n | ImageBlock\n | RichTextBlock\n | HeadingBlock\n | ButtonBlock\n | ImageAndTextBlock\n | SimpleTableBlock\n | ContactCard\n | DividerBlock\n | SpacerBlock\n | HtmlBlock\n | ReviewRequestLinksBlock;\n\nexport interface EmailContentData {\n id?: string;\n name?: string;\n subjectLine?: string;\n previewText?: string;\n author?: string;\n lastModified?: string;\n emailSetup: EmailSetup;\n emailContentBlocks: ContentListItem[];\n basicSetupValid?: boolean;\n}\n\nexport interface ContentListItem {\n type: blockType;\n renderType?: blockType;\n content?: contentBlockInterfaces;\n showPadding?: boolean;\n padding?: {\n top?: number;\n bottom?: number;\n };\n collapsed?: boolean;\n valid?: boolean;\n}\n\nexport const blankContentListItem: ContentListItem = {\n type: null,\n renderType: null,\n showPadding: false,\n padding: {\n top: null,\n bottom: null,\n },\n collapsed: false,\n};\n\nexport interface BlockNamesAndIconsType {\n id: string;\n renderType?: string;\n name: string;\n icon: string;\n dividerAfter?: boolean;\n}\nexport const defaultBlockChoices: BlockNamesAndIconsType[] = [\n {\n id: 'image',\n name: 'Image',\n icon: 'image',\n },\n {\n id: 'heading',\n name: 'Heading',\n icon: 'text_fields',\n },\n {\n id: 'rich_text',\n name: 'Rich Text',\n icon: 'subject',\n },\n {\n id: 'suggest_content',\n name: 'Generate Content',\n icon: 'galaxy-ai-icon',\n },\n {\n id: 'button',\n name: 'Button',\n icon: 'crop_7_5',\n dividerAfter: true,\n },\n {\n id: 'image_and_text',\n name: 'Image and Text',\n icon: 'vertical_split',\n },\n {\n id: 'contact_card',\n name: 'Contact Card',\n icon: 'recent_actors',\n },\n {\n id: 'simple_table',\n name: 'Simple Table',\n icon: 'border_all',\n dividerAfter: true,\n },\n {\n id: 'divider',\n name: 'Divider',\n icon: 'remove',\n },\n {\n id: 'spacer',\n name: 'Spacer',\n icon: 'space_bar',\n dividerAfter: true,\n },\n {\n id: 'html',\n name: 'Raw Html',\n icon: 'code',\n dividerAfter: true,\n },\n];\n\nexport enum OptionalBlockTypeID {\n REVIEW_REQUEST_LINKS = 'review_request_links',\n}\n\nexport const optionalBlockTypesMap: Map = new Map<\n OptionalBlockTypeID,\n BlockNamesAndIconsType\n>([\n [\n OptionalBlockTypeID.REVIEW_REQUEST_LINKS,\n {\n id: OptionalBlockTypeID.REVIEW_REQUEST_LINKS,\n renderType: 'html',\n name: 'Review Request Links',\n icon: 'rate_review',\n },\n ],\n]);\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { EmailPreviewRefreshService } from '../../services/email-preview-refresh.service';\nimport { Validator } from '@vendasta/shared';\n\n// Interface\nexport interface ButtonBlock {\n buttonText: string;\n buttonStyle: 'solid' | 'outline';\n link: string;\n buttonColor: string;\n showBackupLink: boolean;\n}\n\n// Default blank value\nexport const blankButtonBlock: ButtonBlock = {\n buttonText: null,\n buttonStyle: 'solid',\n link: null,\n buttonColor: '#47b75d',\n showBackupLink: false,\n};\n\n@Component({\n selector: 'email-button-block',\n templateUrl: './button-block.component.html',\n styleUrls: ['./button-block.component.scss'],\n})\nexport class ButtonBlockComponent implements AfterViewInit, OnDestroy {\n @HostBinding('class') class = 'email-button-block';\n @Input() content: ButtonBlock;\n @Output() isBlockValid = new EventEmitter();\n @ViewChild('blockInputs') blockInputs: NgForm;\n\n public urlMailtoOrDynamicContentRegex = Validator.URL_MAILTO_OR_DYNAMIC_CONTENT_REGEX;\n public hexColorRegex = Validator.HEX_COLOR_REGEX;\n\n private readonly subscriptions: Subscription[] = [];\n\n constructor(private emailPreview: EmailPreviewRefreshService) {}\n\n ngAfterViewInit(): void {\n this.subscriptions.push(\n this.blockInputs.statusChanges.subscribe((status) => {\n this.isBlockValid.emit(status === 'VALID');\n }),\n );\n\n this.subscriptions.push(\n this.blockInputs.valueChanges.subscribe(() => {\n this.emailPreview.refresh();\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n}\n","
\n \n {{ 'EMAIL_BUILDER.BUTTON_BLOCK.TEXT' | translate }}\n \n \n \n {{ 'EMAIL_BUILDER.VALIDATION_ERRORS.DYNAMIC_CONTENT' | translate }}\n \n \n\n \n {{ 'EMAIL_BUILDER.BUTTON_BLOCK.STYLE' | translate }}\n \n Solid\n Outline\n \n \n\n \n {{ 'EMAIL_BUILDER.BUTTON_BLOCK.COLOR' | translate }}\n \n \n \n {{ 'EMAIL_BUILDER.VALIDATION_ERRORS.COLOR' | translate }}\n \n \n\n \n {{ 'EMAIL_BUILDER.BUTTON_BLOCK.LINK' | translate }}\n \n\n \n\n \n {{ 'EMAIL_BUILDER.VALIDATION_ERRORS.LINK' | translate }}\n \n \n
\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { FileInfo, FileUploadError, FileUploadStatus } from '@vendasta/galaxy/uploader';\n\nimport { EmailPreviewRefreshService } from '../../services/email-preview-refresh.service';\n\n// Interface\nexport interface ContactCard {\n contactPhoto: string;\n size: 'small' | 'medium' | 'large';\n contactName: string;\n jobTitle: string;\n additionalInfo: string[];\n}\n\n// Default blank value\nexport const blankContactCardBlock: ContactCard = {\n contactPhoto: null,\n size: 'large',\n contactName: null,\n jobTitle: null,\n additionalInfo: [''],\n};\n\n@Component({\n selector: 'email-contact-card',\n templateUrl: './contact-card.component.html',\n styleUrls: ['./contact-card.component.scss'],\n})\nexport class ContactCardComponent implements AfterViewInit, OnDestroy {\n @HostBinding('class') class = 'email-contact-card-block';\n @Input() content: ContactCard;\n @ViewChild('blockInputs') blockInputs: NgForm;\n\n @Output() isBlockValid = new EventEmitter();\n\n FileUploadStatus = FileUploadStatus;\n private readonly subscriptions: Subscription[] = [];\n\n constructor(private emailPreview: EmailPreviewRefreshService, private readonly alerts: SnackbarService) {}\n\n ngAfterViewInit(): void {\n this.subscriptions.push(\n this.blockInputs.form.valueChanges.subscribe(() => {\n this.emailPreview.refresh();\n }),\n this.blockInputs.statusChanges.subscribe((status) => {\n this.isBlockValid.emit(status === 'VALID');\n }),\n );\n }\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n fixFieldLosingFocusWhenTyping(index: any, item: any): any {\n // https://stackoverflow.com/a/60945501/7338673\n return index;\n }\n\n clearImage(): void {\n this.content.contactPhoto = null;\n this.emailPreview.refresh();\n }\n\n setImage(file: FileInfo): void {\n this.content.contactPhoto = file.url;\n this.emailPreview.refresh();\n }\n\n alertFileErrored($event: FileUploadError): void {\n console.error('Image upload failed', $event);\n this.alerts.openErrorSnack('IMAGE_UPLOAD_FAILURE');\n }\n\n addAdditionalItem(): void {\n this.content.additionalInfo.push('');\n }\n removeAdditionalItem(index: number): void {\n this.content.additionalInfo.splice(index, 1);\n }\n}\n","
\n \n \n {{ 'EMAIL_BUILDER.CONTACT_CARD.IMAGE' | translate }}\n
\n
\n \n
\n
\n
\n \n {{ 'EMAIL_BUILDER.CONTACT_CARD.IMAGE_SIZE.SIZE' | translate }}\n \n \n \n View\n \n \n
\n
\n
\n
\n
\n\n \n \n {{ 'EMAIL_BUILDER.CONTACT_CARD.IMAGE' | translate }}\n \n \n \n\n \n {{ 'EMAIL_BUILDER.CONTACT_CARD.NAME' | translate }}\n \n \n \n {{ 'EMAIL_BUILDER.VALIDATION_ERRORS.DYNAMIC_CONTENT' | translate }}\n \n \n\n \n {{ 'EMAIL_BUILDER.CONTACT_CARD.JOB' | translate }}\n \n \n \n {{ 'EMAIL_BUILDER.VALIDATION_ERRORS.DYNAMIC_CONTENT' | translate }}\n \n \n\n \n {{ 'EMAIL_BUILDER.CONTACT_CARD.ADDITIONAL_INFO' | translate }}\n\n \n
\n
\n \n\n \n
\n\n \n close\n \n
\n
\n \n {{ 'EMAIL_BUILDER.VALIDATION_ERRORS.DYNAMIC_CONTENT' | translate }}\n \n
\n
\n \n
\n
\n","import { Directive, ElementRef, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[emailHoldShiftToChangeNumberFieldByTen]',\n})\nexport class HoldShiftToChangeNumberFieldByTenDirective {\n shiftKey = false;\n\n @HostListener('keydown', ['$event']) onShiftDown(event: KeyboardEvent): void {\n if (event.key === 'Shift') {\n this.shiftKey = true;\n this.checkShift();\n }\n }\n @HostListener('keyup', ['$event']) onShiftUp(event: KeyboardEvent): void {\n if (event.key === 'Shift') {\n this.shiftKey = false;\n this.checkShift();\n }\n }\n\n constructor(private el: ElementRef) {}\n\n checkShift(): void {\n if (this.shiftKey) {\n this.el.nativeElement.step = 10;\n } else {\n this.el.nativeElement.step = 1;\n }\n }\n}\n\n// in the future, we could do something like this to add 10\n// instead of incrimenting by 10\n// https://www.bennadel.com/blog/3695-creating-an-incrementing-input-directive-inspired-by-chrome-dev-tools-in-angular-9-0-0-next-5.htm\n","import { AfterViewInit, Component, HostBinding, Input, OnDestroy, ViewChild } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { EmailPreviewRefreshService } from '../../services/email-preview-refresh.service';\n\n// Interface\nexport interface DividerBlock {\n dividerColor?: string;\n dividerHeight?: number;\n}\n\n// Default blank value\nexport const blankDividerBlock: DividerBlock = {\n dividerColor: null,\n dividerHeight: null,\n};\n\n@Component({\n selector: 'email-divider-block',\n templateUrl: './divider-block.component.html',\n styleUrls: ['./divider-block.component.scss'],\n})\nexport class DividerBlockComponent implements AfterViewInit, OnDestroy {\n @HostBinding('class') class = 'email-divider-block';\n @Input() content: DividerBlock;\n @ViewChild('blockInputs') blockInputs: NgForm;\n\n private readonly subscriptions: Subscription[] = [];\n\n constructor(private emailPreview: EmailPreviewRefreshService) {}\n\n ngAfterViewInit(): void {\n this.subscriptions.push(\n this.blockInputs.form.valueChanges.subscribe(() => {\n this.emailPreview.refresh();\n }),\n );\n }\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n}\n","
\n \n {{ 'EMAIL_BUILDER.DIVIDER_BLOCK.HEIGHT' | translate }}\n \n \n\n \n {{ 'EMAIL_BUILDER.DIVIDER_BLOCK.COLOR' | translate }}\n {{ 'EMAIL_BUILDER.DIVIDER_BLOCK.COLOR_HINT' | translate }}\n \n \n \n
\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { EmailPreviewRefreshService } from '../../services/email-preview-refresh.service';\n\n// Interface\nexport interface HeadingBlock {\n title?: string;\n subtitle?: string;\n textAlign?: 'left' | 'center' | 'right' | undefined;\n}\n\n// Default blank value\nexport const blankHeadingBlock: HeadingBlock = {\n title: null,\n subtitle: null,\n textAlign: 'left',\n};\n\n@Component({\n selector: 'email-heading-block',\n templateUrl: './heading-block.component.html',\n styleUrls: ['./heading-block.component.scss'],\n})\nexport class HeadingBlockComponent implements AfterViewInit, OnDestroy {\n @HostBinding('class') class = 'email-heading-block';\n @Input() content: HeadingBlock;\n @ViewChild('blockInputs') blockInputs: NgForm;\n @Output() isBlockValid = new EventEmitter();\n\n private readonly subscriptions: Subscription[] = [];\n\n constructor(private emailPreview: EmailPreviewRefreshService) {}\n\n ngAfterViewInit(): void {\n this.subscriptions.push(\n this.blockInputs.form.valueChanges.subscribe(() => {\n this.emailPreview.refresh();\n }),\n this.blockInputs.statusChanges.subscribe((status) => {\n this.isBlockValid.emit(status === 'VALID');\n }),\n );\n }\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n}\n","
\n \n {{ 'EMAIL_BUILDER.HEADING_BLOCK.TITLE' | translate }}\n \n \n \n {{ 'EMAIL_BUILDER.VALIDATION_ERRORS.DYNAMIC_CONTENT' | translate }}\n \n \n\n \n {{ 'EMAIL_BUILDER.HEADING_BLOCK.SUBTITLE' | translate }}\n \n \n \n {{ 'EMAIL_BUILDER.VALIDATION_ERRORS.DYNAMIC_CONTENT' | translate }}\n \n \n\n \n {{ 'EMAIL_BUILDER.HEADING_BLOCK.TEXT_ALIGN' | translate }}\n \n \n format_align_left\n \n \n format_align_center\n \n \n format_align_right\n \n \n \n
\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { EmailPreviewRefreshService } from '../../services/email-preview-refresh.service';\n\n// Interface\nexport interface HtmlBlock {\n rawHtml: string;\n}\n\n// Default blank value\nexport const blankHtmlBlock: HtmlBlock = {\n rawHtml: `
\n\n
`,\n};\n\n@Component({\n selector: 'email-html-block',\n templateUrl: './html-block.component.html',\n styleUrls: ['./html-block.component.scss'],\n})\nexport class HtmlBlockComponent implements AfterViewInit, OnDestroy {\n @HostBinding('class') class = 'email-html-block';\n @Input() content: HtmlBlock;\n @ViewChild('blockInputs') blockInputs: NgForm;\n @Output() isBlockValid = new EventEmitter();\n\n private readonly subscriptions: Subscription[] = [];\n\n constructor(private emailPreview: EmailPreviewRefreshService) {}\n\n ngAfterViewInit(): void {\n this.subscriptions.push(\n this.blockInputs.form.valueChanges.subscribe(() => {\n this.emailPreview.refresh();\n }),\n this.blockInputs.statusChanges.subscribe((status) => {\n this.isBlockValid.emit(status === 'VALID');\n }),\n );\n }\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n}\n","
\n \n {{ 'EMAIL_BUILDER.HTML_BLOCK.RAW' | translate }}\n \n \n \n {{ 'EMAIL_BUILDER.VALIDATION_ERRORS.DYNAMIC_CONTENT' | translate }}\n \n
\n","{\n \"IMAGE_GENERATION\": {\n \"TITLE\": \"Generate Image\",\n \"ERROR_MESSAGE\": \"An error has occurred. Please try again.\",\n \"INSTRUCTIONS\": \"Enter a prompt to generate an image for your email\"\n },\n \"EMAIL_BUILDER\": {\n \"PROMPT_PLACEHOLDER\": \"Think about the objects, colors, and settings you want in your image and describe them in as much detail as possible. For example, \\\"a bright yellow sunflower in a field of green grass\\\" or \\\"a car with glasses on a sofa in Takishi Murakami style.\\\"\",\n \"GENERATE_CONTENT\": \"Generate image\",\n \"CANCEL\": \"Cancel\",\n \"USE_IMAGE\": \"Use image\"\n }\n}\n","import { NgModule } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport En from './en_devel.json';\n\n@NgModule({\n imports: [\n TranslateModule,\n LexiconModule.forChild({\n componentName: 'common/content-generation',\n baseTranslation: En,\n }),\n ],\n})\nexport class ContentGenerationI18nModule {}\n","import * as i0 from '@angular/core';\nimport { Injectable } from '@angular/core';\nimport { of } from 'rxjs';\nimport * as i1 from '@angular/common/http';\nimport { HttpHeaders } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nfunction enumStringToValue$d(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass FieldMask {\n static fromProto(proto) {\n let m = new FieldMask();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.paths !== 'undefined') {\n toReturn['paths'] = this.paths;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$c(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Hashtag {\n static fromProto(proto) {\n let m = new Hashtag();\n m = Object.assign(m, proto);\n if (proto.usedCount) {\n m.usedCount = parseInt(proto.usedCount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.keyword !== 'undefined') {\n toReturn['keyword'] = this.keyword;\n }\n if (typeof this.usedCount !== 'undefined') {\n toReturn['usedCount'] = this.usedCount;\n }\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n return toReturn;\n }\n}\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar CallToActionCallToActionType = /*#__PURE__*/function (CallToActionCallToActionType) {\n CallToActionCallToActionType[CallToActionCallToActionType[\"LEARN_MORE\"] = 0] = \"LEARN_MORE\";\n CallToActionCallToActionType[CallToActionCallToActionType[\"BOOK\"] = 1] = \"BOOK\";\n CallToActionCallToActionType[CallToActionCallToActionType[\"ORDER\"] = 2] = \"ORDER\";\n CallToActionCallToActionType[CallToActionCallToActionType[\"SHOP\"] = 3] = \"SHOP\";\n CallToActionCallToActionType[CallToActionCallToActionType[\"SIGN_UP\"] = 4] = \"SIGN_UP\";\n CallToActionCallToActionType[CallToActionCallToActionType[\"GET_OFFER\"] = 5] = \"GET_OFFER\";\n CallToActionCallToActionType[CallToActionCallToActionType[\"CALL\"] = 6] = \"CALL\";\n return CallToActionCallToActionType;\n}(CallToActionCallToActionType || {});\nvar SocialPostDeletionStatus = /*#__PURE__*/function (SocialPostDeletionStatus) {\n SocialPostDeletionStatus[SocialPostDeletionStatus[\"NONE\"] = 0] = \"NONE\";\n SocialPostDeletionStatus[SocialPostDeletionStatus[\"FAILED\"] = 1] = \"FAILED\";\n SocialPostDeletionStatus[SocialPostDeletionStatus[\"IN_PROGRESS\"] = 2] = \"IN_PROGRESS\";\n return SocialPostDeletionStatus;\n}(SocialPostDeletionStatus || {});\nvar MessageLength = /*#__PURE__*/function (MessageLength) {\n MessageLength[MessageLength[\"SHORT_FORM\"] = 0] = \"SHORT_FORM\";\n MessageLength[MessageLength[\"LONG_FORM\"] = 1] = \"LONG_FORM\";\n return MessageLength;\n}(MessageLength || {});\nvar PostType = /*#__PURE__*/function (PostType) {\n PostType[PostType[\"POST_TYPE_INVALID\"] = 0] = \"POST_TYPE_INVALID\";\n PostType[PostType[\"POST_TYPE_IMAGE\"] = 1] = \"POST_TYPE_IMAGE\";\n PostType[PostType[\"POST_TYPE_VIDEO\"] = 2] = \"POST_TYPE_VIDEO\";\n PostType[PostType[\"POST_TYPE_GIF\"] = 3] = \"POST_TYPE_GIF\";\n PostType[PostType[\"POST_TYPE_REEL\"] = 4] = \"POST_TYPE_REEL\";\n PostType[PostType[\"POST_TYPE_CAROUSEL\"] = 5] = \"POST_TYPE_CAROUSEL\";\n PostType[PostType[\"POST_TYPE_STORIES\"] = 6] = \"POST_TYPE_STORIES\";\n PostType[PostType[\"POST_TYPE_TEXT\"] = 7] = \"POST_TYPE_TEXT\";\n return PostType;\n}(PostType || {});\nvar PostingStatus = /*#__PURE__*/function (PostingStatus) {\n PostingStatus[PostingStatus[\"POSTING_IN_PROGRESS\"] = 0] = \"POSTING_IN_PROGRESS\";\n PostingStatus[PostingStatus[\"POSTING_FAILED\"] = 1] = \"POSTING_FAILED\";\n PostingStatus[PostingStatus[\"POSTING_COMPLETED\"] = 2] = \"POSTING_COMPLETED\";\n return PostingStatus;\n}(PostingStatus || {});\nvar YoutubeCustomizationPrivacyStatus = /*#__PURE__*/function (YoutubeCustomizationPrivacyStatus) {\n YoutubeCustomizationPrivacyStatus[YoutubeCustomizationPrivacyStatus[\"YOUTUBE_PRIVACY_STATUS_INVALID\"] = 0] = \"YOUTUBE_PRIVACY_STATUS_INVALID\";\n YoutubeCustomizationPrivacyStatus[YoutubeCustomizationPrivacyStatus[\"YOUTUBE_PRIVACY_STATUS_PUBLIC\"] = 1] = \"YOUTUBE_PRIVACY_STATUS_PUBLIC\";\n YoutubeCustomizationPrivacyStatus[YoutubeCustomizationPrivacyStatus[\"YOUTUBE_PRIVACY_STATUS_PRIVATE\"] = 2] = \"YOUTUBE_PRIVACY_STATUS_PRIVATE\";\n YoutubeCustomizationPrivacyStatus[YoutubeCustomizationPrivacyStatus[\"YOUTUBE_PRIVACY_STATUS_UNLISTED\"] = 3] = \"YOUTUBE_PRIVACY_STATUS_UNLISTED\";\n return YoutubeCustomizationPrivacyStatus;\n}(YoutubeCustomizationPrivacyStatus || {});\nvar SocialPostService = /*#__PURE__*/function (SocialPostService) {\n SocialPostService[SocialPostService[\"TWITTER\"] = 0] = \"TWITTER\";\n SocialPostService[SocialPostService[\"FACEBOOK\"] = 1] = \"FACEBOOK\";\n SocialPostService[SocialPostService[\"LINKED_IN\"] = 2] = \"LINKED_IN\";\n SocialPostService[SocialPostService[\"GOOGLE_PLUS\"] = 3] = \"GOOGLE_PLUS\";\n SocialPostService[SocialPostService[\"GOOGLE_MY_BUSINESS\"] = 4] = \"GOOGLE_MY_BUSINESS\";\n SocialPostService[SocialPostService[\"UNKNOWN\"] = 5] = \"UNKNOWN\";\n SocialPostService[SocialPostService[\"INSTAGRAM\"] = 6] = \"INSTAGRAM\";\n SocialPostService[SocialPostService[\"CURATED_CONTENT\"] = 7] = \"CURATED_CONTENT\";\n SocialPostService[SocialPostService[\"YOUTUBE\"] = 8] = \"YOUTUBE\";\n SocialPostService[SocialPostService[\"TIKTOK\"] = 9] = \"TIKTOK\";\n return SocialPostService;\n}(SocialPostService || {});\nvar TemplateType = /*#__PURE__*/function (TemplateType) {\n TemplateType[TemplateType[\"TEMPLATE_UNSET\"] = 0] = \"TEMPLATE_UNSET\";\n TemplateType[TemplateType[\"TEMPLATE_CUSTOM\"] = 1] = \"TEMPLATE_CUSTOM\";\n TemplateType[TemplateType[\"TEMPLATE_SOCIAL_POST\"] = 2] = \"TEMPLATE_SOCIAL_POST\";\n return TemplateType;\n}(TemplateType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar RemoveReason = /*#__PURE__*/function (RemoveReason) {\n RemoveReason[RemoveReason[\"REMOVE_REASON_EDIT\"] = 0] = \"REMOVE_REASON_EDIT\";\n RemoveReason[RemoveReason[\"REMOVE_REASON_DELETE\"] = 1] = \"REMOVE_REASON_DELETE\";\n return RemoveReason;\n}(RemoveReason || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar PostStatusV2 = /*#__PURE__*/function (PostStatusV2) {\n PostStatusV2[PostStatusV2[\"POST_STATUS_INVALID\"] = 0] = \"POST_STATUS_INVALID\";\n PostStatusV2[PostStatusV2[\"POST_STATUS_SUCCESS\"] = 1] = \"POST_STATUS_SUCCESS\";\n PostStatusV2[PostStatusV2[\"POST_STATUS_ERROR\"] = 2] = \"POST_STATUS_ERROR\";\n return PostStatusV2;\n}(PostStatusV2 || {});\nvar PostTypeV2 = /*#__PURE__*/function (PostTypeV2) {\n PostTypeV2[PostTypeV2[\"POST_TYPE_INVALID\"] = 0] = \"POST_TYPE_INVALID\";\n PostTypeV2[PostTypeV2[\"POST_TYPE_IMAGE\"] = 1] = \"POST_TYPE_IMAGE\";\n PostTypeV2[PostTypeV2[\"POST_TYPE_VIDEO\"] = 2] = \"POST_TYPE_VIDEO\";\n PostTypeV2[PostTypeV2[\"POST_TYPE_GIF\"] = 3] = \"POST_TYPE_GIF\";\n PostTypeV2[PostTypeV2[\"POST_TYPE_MULTI_MEDIA\"] = 4] = \"POST_TYPE_MULTI_MEDIA\";\n PostTypeV2[PostTypeV2[\"POST_TYPE_TEXT\"] = 5] = \"POST_TYPE_TEXT\";\n PostTypeV2[PostTypeV2[\"POST_TYPE_STORIES\"] = 6] = \"POST_TYPE_STORIES\";\n return PostTypeV2;\n}(PostTypeV2 || {});\nvar YoutubeCustomizationV2PrivacyStatusV2 = /*#__PURE__*/function (YoutubeCustomizationV2PrivacyStatusV2) {\n YoutubeCustomizationV2PrivacyStatusV2[YoutubeCustomizationV2PrivacyStatusV2[\"YOUTUBE_PRIVACY_STATUS_INVALID\"] = 0] = \"YOUTUBE_PRIVACY_STATUS_INVALID\";\n YoutubeCustomizationV2PrivacyStatusV2[YoutubeCustomizationV2PrivacyStatusV2[\"YOUTUBE_PRIVACY_STATUS_PUBLIC\"] = 1] = \"YOUTUBE_PRIVACY_STATUS_PUBLIC\";\n YoutubeCustomizationV2PrivacyStatusV2[YoutubeCustomizationV2PrivacyStatusV2[\"YOUTUBE_PRIVACY_STATUS_PRIVATE\"] = 2] = \"YOUTUBE_PRIVACY_STATUS_PRIVATE\";\n YoutubeCustomizationV2PrivacyStatusV2[YoutubeCustomizationV2PrivacyStatusV2[\"YOUTUBE_PRIVACY_STATUS_UNLISTED\"] = 3] = \"YOUTUBE_PRIVACY_STATUS_UNLISTED\";\n return YoutubeCustomizationV2PrivacyStatusV2;\n}(YoutubeCustomizationV2PrivacyStatusV2 || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar MediaType = /*#__PURE__*/function (MediaType) {\n MediaType[MediaType[\"MEDIA_TYPE_INVALID\"] = 0] = \"MEDIA_TYPE_INVALID\";\n MediaType[MediaType[\"MEDIA_TYPE_IMAGE\"] = 1] = \"MEDIA_TYPE_IMAGE\";\n MediaType[MediaType[\"MEDIA_TYPE_VIDEO\"] = 2] = \"MEDIA_TYPE_VIDEO\";\n MediaType[MediaType[\"MEDIA_TYPE_GIF\"] = 3] = \"MEDIA_TYPE_GIF\";\n MediaType[MediaType[\"MEDIA_TYPE_CAROUSEL\"] = 4] = \"MEDIA_TYPE_CAROUSEL\";\n return MediaType;\n}(MediaType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar ActionType = /*#__PURE__*/function (ActionType) {\n ActionType[ActionType[\"RESPOND\"] = 0] = \"RESPOND\";\n ActionType[ActionType[\"CHANGE_TONE\"] = 1] = \"CHANGE_TONE\";\n return ActionType;\n}(ActionType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums Index.\n// *********************************\n\nfunction enumStringToValue$b(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CallToAction {\n static fromProto(proto) {\n let m = new CallToAction();\n m = Object.assign(m, proto);\n if (proto.actionType) {\n m.actionType = enumStringToValue$b(CallToActionCallToActionType, proto.actionType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n if (typeof this.actionType !== 'undefined') {\n toReturn['actionType'] = this.actionType;\n }\n return toReturn;\n }\n}\nclass Error {\n static fromProto(proto) {\n let m = new Error();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.reason !== 'undefined') {\n toReturn['reason'] = this.reason;\n }\n if (typeof this.category !== 'undefined') {\n toReturn['category'] = this.category;\n }\n return toReturn;\n }\n}\nclass Event {\n static fromProto(proto) {\n let m = new Event();\n m = Object.assign(m, proto);\n if (proto.startDatetime) {\n m.startDatetime = new Date(proto.startDatetime);\n }\n if (proto.endDatetime) {\n m.endDatetime = new Date(proto.endDatetime);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.title !== 'undefined') {\n toReturn['title'] = this.title;\n }\n if (typeof this.startDatetime !== 'undefined' && this.startDatetime !== null) {\n toReturn['startDatetime'] = 'toApiJson' in this.startDatetime ? this.startDatetime.toApiJson() : this.startDatetime;\n }\n if (typeof this.endDatetime !== 'undefined' && this.endDatetime !== null) {\n toReturn['endDatetime'] = 'toApiJson' in this.endDatetime ? this.endDatetime.toApiJson() : this.endDatetime;\n }\n return toReturn;\n }\n}\nclass MediaEntry {\n static fromProto(proto) {\n let m = new MediaEntry();\n m = Object.assign(m, proto);\n if (proto.metaData) {\n m.metaData = proto.metaData.map(MetaData.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.mediaEntryId !== 'undefined') {\n toReturn['mediaEntryId'] = this.mediaEntryId;\n }\n if (typeof this.mediaUrl !== 'undefined') {\n toReturn['mediaUrl'] = this.mediaUrl;\n }\n if (typeof this.mediaType !== 'undefined') {\n toReturn['mediaType'] = this.mediaType;\n }\n if (typeof this.containerId !== 'undefined') {\n toReturn['containerId'] = this.containerId;\n }\n if (typeof this.metaData !== 'undefined' && this.metaData !== null) {\n toReturn['metaData'] = 'toApiJson' in this.metaData ? this.metaData.toApiJson() : this.metaData;\n }\n return toReturn;\n }\n}\nclass MetaData {\n static fromProto(proto) {\n let m = new MetaData();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.propertyName !== 'undefined') {\n toReturn['propertyName'] = this.propertyName;\n }\n if (typeof this.propertyValue !== 'undefined') {\n toReturn['propertyValue'] = this.propertyValue;\n }\n return toReturn;\n }\n}\nclass PostTemplate {\n static fromProto(proto) {\n let m = new PostTemplate();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.postDateTime) {\n m.postDateTime = new Date(proto.postDateTime);\n }\n if (proto.mediaEntries) {\n m.mediaEntries = proto.mediaEntries.map(MediaEntry.fromProto);\n }\n if (proto.metaData) {\n m.metaData = proto.metaData.map(MetaData.fromProto);\n }\n if (proto.postType) {\n m.postType = enumStringToValue$b(PostType, proto.postType);\n }\n if (proto.youtubeCustomization) {\n m.youtubeCustomization = YoutubeCustomization.fromProto(proto.youtubeCustomization);\n }\n if (proto.tiktokCustomization) {\n m.tiktokCustomization = TikTokCustomization.fromProto(proto.tiktokCustomization);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n if (typeof this.title !== 'undefined') {\n toReturn['title'] = this.title;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.postText !== 'undefined') {\n toReturn['postText'] = this.postText;\n }\n if (typeof this.postDateTime !== 'undefined' && this.postDateTime !== null) {\n toReturn['postDateTime'] = 'toApiJson' in this.postDateTime ? this.postDateTime.toApiJson() : this.postDateTime;\n }\n if (typeof this.gmbPostCustomization !== 'undefined') {\n toReturn['gmbPostCustomization'] = this.gmbPostCustomization;\n }\n if (typeof this.imageUrl !== 'undefined') {\n toReturn['imageUrl'] = this.imageUrl;\n }\n if (typeof this.imagePath !== 'undefined') {\n toReturn['imagePath'] = this.imagePath;\n }\n if (typeof this.imageSize !== 'undefined') {\n toReturn['imageSize'] = this.imageSize;\n }\n if (typeof this.previews !== 'undefined') {\n toReturn['previews'] = this.previews;\n }\n if (typeof this.options !== 'undefined') {\n toReturn['options'] = this.options;\n }\n if (typeof this.videoUrl !== 'undefined') {\n toReturn['videoUrl'] = this.videoUrl;\n }\n if (typeof this.mediaEntries !== 'undefined' && this.mediaEntries !== null) {\n toReturn['mediaEntries'] = 'toApiJson' in this.mediaEntries ? this.mediaEntries.toApiJson() : this.mediaEntries;\n }\n if (typeof this.metaData !== 'undefined' && this.metaData !== null) {\n toReturn['metaData'] = 'toApiJson' in this.metaData ? this.metaData.toApiJson() : this.metaData;\n }\n if (typeof this.postType !== 'undefined') {\n toReturn['postType'] = this.postType;\n }\n if (typeof this.youtubeCustomization !== 'undefined' && this.youtubeCustomization !== null) {\n toReturn['youtubeCustomization'] = 'toApiJson' in this.youtubeCustomization ? this.youtubeCustomization.toApiJson() : this.youtubeCustomization;\n }\n if (typeof this.tiktokCustomization !== 'undefined' && this.tiktokCustomization !== null) {\n toReturn['tiktokCustomization'] = 'toApiJson' in this.tiktokCustomization ? this.tiktokCustomization.toApiJson() : this.tiktokCustomization;\n }\n return toReturn;\n }\n}\nclass SSIDPostType {\n static fromProto(proto) {\n let m = new SSIDPostType();\n m = Object.assign(m, proto);\n if (proto.postType) {\n m.postType = enumStringToValue$b(PostType, proto.postType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.socialServiceId !== 'undefined') {\n toReturn['socialServiceId'] = this.socialServiceId;\n }\n if (typeof this.postType !== 'undefined') {\n toReturn['postType'] = this.postType;\n }\n return toReturn;\n }\n}\nclass SchedulePostStatus {\n static fromProto(proto) {\n let m = new SchedulePostStatus();\n m = Object.assign(m, proto);\n if (proto.error) {\n m.error = Error.fromProto(proto.error);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.socialPostId !== 'undefined') {\n toReturn['socialPostId'] = this.socialPostId;\n }\n if (typeof this.socialServiceId !== 'undefined') {\n toReturn['socialServiceId'] = this.socialServiceId;\n }\n if (typeof this.socialServiceLabel !== 'undefined') {\n toReturn['socialServiceLabel'] = this.socialServiceLabel;\n }\n if (typeof this.error !== 'undefined' && this.error !== null) {\n toReturn['error'] = 'toApiJson' in this.error ? this.error.toApiJson() : this.error;\n }\n return toReturn;\n }\n}\nclass SocialPost {\n static fromProto(proto) {\n let m = new SocialPost();\n m = Object.assign(m, proto);\n if (proto.posted) {\n m.posted = new Date(proto.posted);\n }\n if (proto.deletionStatus) {\n m.deletionStatus = enumStringToValue$b(SocialPostDeletionStatus, proto.deletionStatus);\n }\n if (proto.service) {\n m.service = enumStringToValue$b(SocialPostService, proto.service);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.scheduled) {\n m.scheduled = new Date(proto.scheduled);\n }\n if (proto.status) {\n m.status = enumStringToValue$b(PostingStatus, proto.status);\n }\n if (proto.event) {\n m.event = Event.fromProto(proto.event);\n }\n if (proto.callToAction) {\n m.callToAction = CallToAction.fromProto(proto.callToAction);\n }\n if (proto.error) {\n m.error = Error.fromProto(proto.error);\n }\n if (proto.postType) {\n m.postType = enumStringToValue$b(PostType, proto.postType);\n }\n if (proto.mediaEntries) {\n m.mediaEntries = proto.mediaEntries.map(MediaEntry.fromProto);\n }\n if (proto.metaData) {\n m.metaData = proto.metaData.map(MetaData.fromProto);\n }\n if (proto.youtubeCustomization) {\n m.youtubeCustomization = YoutubeCustomization.fromProto(proto.youtubeCustomization);\n }\n if (proto.tiktokCustomization) {\n m.tiktokCustomization = TikTokCustomization.fromProto(proto.tiktokCustomization);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.socialPostId !== 'undefined') {\n toReturn['socialPostId'] = this.socialPostId;\n }\n if (typeof this.postText !== 'undefined') {\n toReturn['postText'] = this.postText;\n }\n if (typeof this.posted !== 'undefined' && this.posted !== null) {\n toReturn['posted'] = 'toApiJson' in this.posted ? this.posted.toApiJson() : this.posted;\n }\n if (typeof this.isError !== 'undefined') {\n toReturn['isError'] = this.isError;\n }\n if (typeof this.deletionStatus !== 'undefined') {\n toReturn['deletionStatus'] = this.deletionStatus;\n }\n if (typeof this.service !== 'undefined') {\n toReturn['service'] = this.service;\n }\n if (typeof this.permalink !== 'undefined') {\n toReturn['permalink'] = this.permalink;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.profileUrl !== 'undefined') {\n toReturn['profileUrl'] = this.profileUrl;\n }\n if (typeof this.profileImageUrl !== 'undefined') {\n toReturn['profileImageUrl'] = this.profileImageUrl;\n }\n if (typeof this.scheduled !== 'undefined' && this.scheduled !== null) {\n toReturn['scheduled'] = 'toApiJson' in this.scheduled ? this.scheduled.toApiJson() : this.scheduled;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.imageUrl !== 'undefined') {\n toReturn['imageUrl'] = this.imageUrl;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.username !== 'undefined') {\n toReturn['username'] = this.username;\n }\n if (typeof this.parentId !== 'undefined') {\n toReturn['parentId'] = this.parentId;\n }\n if (typeof this.socialServiceId !== 'undefined') {\n toReturn['socialServiceId'] = this.socialServiceId;\n }\n if (typeof this.event !== 'undefined' && this.event !== null) {\n toReturn['event'] = 'toApiJson' in this.event ? this.event.toApiJson() : this.event;\n }\n if (typeof this.callToAction !== 'undefined' && this.callToAction !== null) {\n toReturn['callToAction'] = 'toApiJson' in this.callToAction ? this.callToAction.toApiJson() : this.callToAction;\n }\n if (typeof this.videoUrl !== 'undefined') {\n toReturn['videoUrl'] = this.videoUrl;\n }\n if (typeof this.error !== 'undefined' && this.error !== null) {\n toReturn['error'] = 'toApiJson' in this.error ? this.error.toApiJson() : this.error;\n }\n if (typeof this.imageUrls !== 'undefined') {\n toReturn['imageUrls'] = this.imageUrls;\n }\n if (typeof this.linkPreviewImageUrl !== 'undefined') {\n toReturn['linkPreviewImageUrl'] = this.linkPreviewImageUrl;\n }\n if (typeof this.brandId !== 'undefined') {\n toReturn['brandId'] = this.brandId;\n }\n if (typeof this.multilocationPostId !== 'undefined') {\n toReturn['multilocationPostId'] = this.multilocationPostId;\n }\n if (typeof this.postType !== 'undefined') {\n toReturn['postType'] = this.postType;\n }\n if (typeof this.mediaEntries !== 'undefined' && this.mediaEntries !== null) {\n toReturn['mediaEntries'] = 'toApiJson' in this.mediaEntries ? this.mediaEntries.toApiJson() : this.mediaEntries;\n }\n if (typeof this.metaData !== 'undefined' && this.metaData !== null) {\n toReturn['metaData'] = 'toApiJson' in this.metaData ? this.metaData.toApiJson() : this.metaData;\n }\n if (typeof this.title !== 'undefined') {\n toReturn['title'] = this.title;\n }\n if (typeof this.youtubeCustomization !== 'undefined' && this.youtubeCustomization !== null) {\n toReturn['youtubeCustomization'] = 'toApiJson' in this.youtubeCustomization ? this.youtubeCustomization.toApiJson() : this.youtubeCustomization;\n }\n if (typeof this.tiktokCustomization !== 'undefined' && this.tiktokCustomization !== null) {\n toReturn['tiktokCustomization'] = 'toApiJson' in this.tiktokCustomization ? this.tiktokCustomization.toApiJson() : this.tiktokCustomization;\n }\n return toReturn;\n }\n}\nclass SocialPostData {\n static fromProto(proto) {\n let m = new SocialPostData();\n m = Object.assign(m, proto);\n if (proto.scheduleFor) {\n m.scheduleFor = new Date(proto.scheduleFor);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.postText !== 'undefined') {\n toReturn['postText'] = this.postText;\n }\n if (typeof this.imageUrl !== 'undefined') {\n toReturn['imageUrl'] = this.imageUrl;\n }\n if (typeof this.scheduleFor !== 'undefined' && this.scheduleFor !== null) {\n toReturn['scheduleFor'] = 'toApiJson' in this.scheduleFor ? this.scheduleFor.toApiJson() : this.scheduleFor;\n }\n return toReturn;\n }\n}\nclass TikTokCustomization {\n static fromProto(proto) {\n let m = new TikTokCustomization();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.allowComment !== 'undefined') {\n toReturn['allowComment'] = this.allowComment;\n }\n if (typeof this.allowDuet !== 'undefined') {\n toReturn['allowDuet'] = this.allowDuet;\n }\n if (typeof this.allowStitch !== 'undefined') {\n toReturn['allowStitch'] = this.allowStitch;\n }\n return toReturn;\n }\n}\nclass YoutubeCustomization {\n static fromProto(proto) {\n let m = new YoutubeCustomization();\n m = Object.assign(m, proto);\n if (proto.privacyStatus) {\n m.privacyStatus = enumStringToValue$b(YoutubeCustomizationPrivacyStatus, proto.privacyStatus);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.title !== 'undefined') {\n toReturn['title'] = this.title;\n }\n if (typeof this.privacyStatus !== 'undefined') {\n toReturn['privacyStatus'] = this.privacyStatus;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$a(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Location {\n static fromProto(proto) {\n let m = new Location();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.socialServiceIds !== 'undefined') {\n toReturn['socialServiceIds'] = this.socialServiceIds;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n return toReturn;\n }\n}\nclass MultilocationPost {\n static fromProto(proto) {\n let m = new MultilocationPost();\n m = Object.assign(m, proto);\n if (proto.originalScheduledDate) {\n m.originalScheduledDate = new Date(proto.originalScheduledDate);\n }\n if (proto.originalLocations) {\n m.originalLocations = proto.originalLocations.map(Location.fromProto);\n }\n if (proto.editedLocations) {\n m.editedLocations = proto.editedLocations.map(Location.fromProto);\n }\n if (proto.deletedLocations) {\n m.deletedLocations = proto.deletedLocations.map(Location.fromProto);\n }\n if (proto.mediaEntries) {\n m.mediaEntries = proto.mediaEntries.map(MediaEntry.fromProto);\n }\n if (proto.metaData) {\n m.metaData = proto.metaData.map(MetaData.fromProto);\n }\n if (proto.customization) {\n m.customization = PostCustomization.fromProto(proto.customization);\n }\n if (proto.postTypes) {\n m.postTypes = proto.postTypes.map(SSIDPostType.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.brandId !== 'undefined') {\n toReturn['brandId'] = this.brandId;\n }\n if (typeof this.multilocationId !== 'undefined') {\n toReturn['multilocationId'] = this.multilocationId;\n }\n if (typeof this.originalText !== 'undefined') {\n toReturn['originalText'] = this.originalText;\n }\n if (typeof this.originalScheduledDate !== 'undefined' && this.originalScheduledDate !== null) {\n toReturn['originalScheduledDate'] = 'toApiJson' in this.originalScheduledDate ? this.originalScheduledDate.toApiJson() : this.originalScheduledDate;\n }\n if (typeof this.originalMedia !== 'undefined') {\n toReturn['originalMedia'] = this.originalMedia;\n }\n if (typeof this.originalLocations !== 'undefined' && this.originalLocations !== null) {\n toReturn['originalLocations'] = 'toApiJson' in this.originalLocations ? this.originalLocations.toApiJson() : this.originalLocations;\n }\n if (typeof this.editedLocations !== 'undefined' && this.editedLocations !== null) {\n toReturn['editedLocations'] = 'toApiJson' in this.editedLocations ? this.editedLocations.toApiJson() : this.editedLocations;\n }\n if (typeof this.deletedLocations !== 'undefined' && this.deletedLocations !== null) {\n toReturn['deletedLocations'] = 'toApiJson' in this.deletedLocations ? this.deletedLocations.toApiJson() : this.deletedLocations;\n }\n if (typeof this.originalGifs !== 'undefined') {\n toReturn['originalGifs'] = this.originalGifs;\n }\n if (typeof this.originalVideos !== 'undefined') {\n toReturn['originalVideos'] = this.originalVideos;\n }\n if (typeof this.mediaEntries !== 'undefined' && this.mediaEntries !== null) {\n toReturn['mediaEntries'] = 'toApiJson' in this.mediaEntries ? this.mediaEntries.toApiJson() : this.mediaEntries;\n }\n if (typeof this.metaData !== 'undefined' && this.metaData !== null) {\n toReturn['metaData'] = 'toApiJson' in this.metaData ? this.metaData.toApiJson() : this.metaData;\n }\n if (typeof this.tags !== 'undefined') {\n toReturn['tags'] = this.tags;\n }\n if (typeof this.customization !== 'undefined' && this.customization !== null) {\n toReturn['customization'] = 'toApiJson' in this.customization ? this.customization.toApiJson() : this.customization;\n }\n if (typeof this.linkShortCode !== 'undefined') {\n toReturn['linkShortCode'] = this.linkShortCode;\n }\n if (typeof this.postTypes !== 'undefined' && this.postTypes !== null) {\n toReturn['postTypes'] = 'toApiJson' in this.postTypes ? this.postTypes.toApiJson() : this.postTypes;\n }\n return toReturn;\n }\n}\nclass MultilocationPostError {\n static fromProto(proto) {\n let m = new MultilocationPostError();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.socialServiceId !== 'undefined') {\n toReturn['socialServiceId'] = this.socialServiceId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.errorReason !== 'undefined') {\n toReturn['errorReason'] = this.errorReason;\n }\n return toReturn;\n }\n}\nclass PostAction {\n static fromProto(proto) {\n let m = new PostAction();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.linkUrl !== 'undefined') {\n toReturn['linkUrl'] = this.linkUrl;\n }\n return toReturn;\n }\n}\nclass PostCustomization {\n static fromProto(proto) {\n let m = new PostCustomization();\n m = Object.assign(m, proto);\n if (proto.event) {\n m.event = PostEvent.fromProto(proto.event);\n }\n if (proto.action) {\n m.action = PostAction.fromProto(proto.action);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.event !== 'undefined' && this.event !== null) {\n toReturn['event'] = 'toApiJson' in this.event ? this.event.toApiJson() : this.event;\n }\n if (typeof this.action !== 'undefined' && this.action !== null) {\n toReturn['action'] = 'toApiJson' in this.action ? this.action.toApiJson() : this.action;\n }\n return toReturn;\n }\n}\nclass PostEvent {\n static fromProto(proto) {\n let m = new PostEvent();\n m = Object.assign(m, proto);\n if (proto.start) {\n m.start = new Date(proto.start);\n }\n if (proto.end) {\n m.end = new Date(proto.end);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.title !== 'undefined') {\n toReturn['title'] = this.title;\n }\n if (typeof this.start !== 'undefined' && this.start !== null) {\n toReturn['start'] = 'toApiJson' in this.start ? this.start.toApiJson() : this.start;\n }\n if (typeof this.end !== 'undefined' && this.end !== null) {\n toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$9(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass PixabayImage {\n static fromProto(proto) {\n let m = new PixabayImage();\n m = Object.assign(m, proto);\n if (proto.id) {\n m.id = parseInt(proto.id, 10);\n }\n if (proto.previewWidth) {\n m.previewWidth = parseInt(proto.previewWidth, 10);\n }\n if (proto.previewHeight) {\n m.previewHeight = parseInt(proto.previewHeight, 10);\n }\n if (proto.webformatWidth) {\n m.webformatWidth = parseInt(proto.webformatWidth, 10);\n }\n if (proto.webformatHeight) {\n m.webformatHeight = parseInt(proto.webformatHeight, 10);\n }\n if (proto.imageWidth) {\n m.imageWidth = parseInt(proto.imageWidth, 10);\n }\n if (proto.imageHeight) {\n m.imageHeight = parseInt(proto.imageHeight, 10);\n }\n if (proto.imageSize) {\n m.imageSize = parseInt(proto.imageSize, 10);\n }\n if (proto.views) {\n m.views = parseInt(proto.views, 10);\n }\n if (proto.downloads) {\n m.downloads = parseInt(proto.downloads, 10);\n }\n if (proto.favorites) {\n m.favorites = parseInt(proto.favorites, 10);\n }\n if (proto.likes) {\n m.likes = parseInt(proto.likes, 10);\n }\n if (proto.comments) {\n m.comments = parseInt(proto.comments, 10);\n }\n if (proto.userId) {\n m.userId = parseInt(proto.userId, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.pageUrl !== 'undefined') {\n toReturn['pageUrl'] = this.pageUrl;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.tags !== 'undefined') {\n toReturn['tags'] = this.tags;\n }\n if (typeof this.previewUrl !== 'undefined') {\n toReturn['previewUrl'] = this.previewUrl;\n }\n if (typeof this.previewWidth !== 'undefined') {\n toReturn['previewWidth'] = this.previewWidth;\n }\n if (typeof this.previewHeight !== 'undefined') {\n toReturn['previewHeight'] = this.previewHeight;\n }\n if (typeof this.webformatUrl !== 'undefined') {\n toReturn['webformatUrl'] = this.webformatUrl;\n }\n if (typeof this.webformatWidth !== 'undefined') {\n toReturn['webformatWidth'] = this.webformatWidth;\n }\n if (typeof this.webformatHeight !== 'undefined') {\n toReturn['webformatHeight'] = this.webformatHeight;\n }\n if (typeof this.largeImageUrl !== 'undefined') {\n toReturn['largeImageUrl'] = this.largeImageUrl;\n }\n if (typeof this.fullHdUrl !== 'undefined') {\n toReturn['fullHdUrl'] = this.fullHdUrl;\n }\n if (typeof this.imageUrl !== 'undefined') {\n toReturn['imageUrl'] = this.imageUrl;\n }\n if (typeof this.imageWidth !== 'undefined') {\n toReturn['imageWidth'] = this.imageWidth;\n }\n if (typeof this.imageHeight !== 'undefined') {\n toReturn['imageHeight'] = this.imageHeight;\n }\n if (typeof this.imageSize !== 'undefined') {\n toReturn['imageSize'] = this.imageSize;\n }\n if (typeof this.views !== 'undefined') {\n toReturn['views'] = this.views;\n }\n if (typeof this.downloads !== 'undefined') {\n toReturn['downloads'] = this.downloads;\n }\n if (typeof this.favorites !== 'undefined') {\n toReturn['favorites'] = this.favorites;\n }\n if (typeof this.likes !== 'undefined') {\n toReturn['likes'] = this.likes;\n }\n if (typeof this.comments !== 'undefined') {\n toReturn['comments'] = this.comments;\n }\n if (typeof this.userId !== 'undefined') {\n toReturn['userId'] = this.userId;\n }\n if (typeof this.user !== 'undefined') {\n toReturn['user'] = this.user;\n }\n if (typeof this.userImageUrl !== 'undefined') {\n toReturn['userImageUrl'] = this.userImageUrl;\n }\n if (typeof this.storageUrl !== 'undefined') {\n toReturn['storageUrl'] = this.storageUrl;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$8(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass FacebookPostStats {\n static fromProto(proto) {\n let m = new FacebookPostStats();\n m = Object.assign(m, proto);\n if (proto.commentCount) {\n m.commentCount = parseInt(proto.commentCount, 10);\n }\n if (proto.shareCount) {\n m.shareCount = parseInt(proto.shareCount, 10);\n }\n if (proto.likeCount) {\n m.likeCount = parseInt(proto.likeCount, 10);\n }\n if (proto.reactions) {\n m.reactions = parseInt(proto.reactions, 10);\n }\n if (proto.peopleReached) {\n m.peopleReached = parseInt(proto.peopleReached, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.commentCount !== 'undefined') {\n toReturn['commentCount'] = this.commentCount;\n }\n if (typeof this.shareCount !== 'undefined') {\n toReturn['shareCount'] = this.shareCount;\n }\n if (typeof this.likeCount !== 'undefined') {\n toReturn['likeCount'] = this.likeCount;\n }\n if (typeof this.hasLike !== 'undefined') {\n toReturn['hasLike'] = this.hasLike;\n }\n if (typeof this.canLike !== 'undefined') {\n toReturn['canLike'] = this.canLike;\n }\n if (typeof this.reactions !== 'undefined') {\n toReturn['reactions'] = this.reactions;\n }\n if (typeof this.peopleReached !== 'undefined') {\n toReturn['peopleReached'] = this.peopleReached;\n }\n return toReturn;\n }\n}\nclass SocialPostStats {\n static fromProto(proto) {\n let m = new SocialPostStats();\n m = Object.assign(m, proto);\n if (proto.facebookPostStats) {\n m.facebookPostStats = FacebookPostStats.fromProto(proto.facebookPostStats);\n }\n if (proto.twitterPostStats) {\n m.twitterPostStats = TwitterPostStats.fromProto(proto.twitterPostStats);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.internalPostId !== 'undefined') {\n toReturn['internalPostId'] = this.internalPostId;\n }\n if (typeof this.facebookPostStats !== 'undefined' && this.facebookPostStats !== null) {\n toReturn['facebookPostStats'] = 'toApiJson' in this.facebookPostStats ? this.facebookPostStats.toApiJson() : this.facebookPostStats;\n }\n if (typeof this.twitterPostStats !== 'undefined' && this.twitterPostStats !== null) {\n toReturn['twitterPostStats'] = 'toApiJson' in this.twitterPostStats ? this.twitterPostStats.toApiJson() : this.twitterPostStats;\n }\n return toReturn;\n }\n}\nclass TwitterPostStats {\n static fromProto(proto) {\n let m = new TwitterPostStats();\n m = Object.assign(m, proto);\n if (proto.favourites) {\n m.favourites = parseInt(proto.favourites, 10);\n }\n if (proto.retweets) {\n m.retweets = parseInt(proto.retweets, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.favourites !== 'undefined') {\n toReturn['favourites'] = this.favourites;\n }\n if (typeof this.hasFavourited !== 'undefined') {\n toReturn['hasFavourited'] = this.hasFavourited;\n }\n if (typeof this.retweets !== 'undefined') {\n toReturn['retweets'] = this.retweets;\n }\n if (typeof this.hasRetweeted !== 'undefined') {\n toReturn['hasRetweeted'] = this.hasRetweeted;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$7(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass TenorGifMediaMapEntry {\n static fromProto(proto) {\n let m = new TenorGifMediaMapEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = TenorMediaObject.fromProto(proto.value);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined' && this.value !== null) {\n toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;\n }\n return toReturn;\n }\n}\nclass TenorGif {\n static fromProto(proto) {\n let m = new TenorGif();\n m = Object.assign(m, proto);\n if (proto.mediaMap) {\n m.mediaMap = Object.keys(proto.mediaMap).reduce((obj, k) => {\n obj[k] = TenorMediaObject.fromProto(proto.mediaMap[k]);\n return obj;\n }, {});\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.mediaMap !== 'undefined' && this.mediaMap !== null) {\n toReturn['mediaMap'] = 'toApiJson' in this.mediaMap ? this.mediaMap.toApiJson() : this.mediaMap;\n }\n if (typeof this.tags !== 'undefined') {\n toReturn['tags'] = this.tags;\n }\n if (typeof this.hasAudio !== 'undefined') {\n toReturn['hasAudio'] = this.hasAudio;\n }\n if (typeof this.title !== 'undefined') {\n toReturn['title'] = this.title;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.created !== 'undefined') {\n toReturn['created'] = this.created;\n }\n return toReturn;\n }\n}\nclass TenorMediaObject {\n static fromProto(proto) {\n let m = new TenorMediaObject();\n m = Object.assign(m, proto);\n if (proto.dimensions) {\n m.dimensions = proto.dimensions.map(i => parseInt(i, 10));\n }\n if (proto.size) {\n m.size = parseInt(proto.size, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.preview !== 'undefined') {\n toReturn['preview'] = this.preview;\n }\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n if (typeof this.dimensions !== 'undefined') {\n toReturn['dimensions'] = this.dimensions;\n }\n if (typeof this.size !== 'undefined') {\n toReturn['size'] = this.size;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$6(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CreateMultilocationPostRequest {\n static fromProto(proto) {\n let m = new CreateMultilocationPostRequest();\n m = Object.assign(m, proto);\n if (proto.scheduledDate) {\n m.scheduledDate = new Date(proto.scheduledDate);\n }\n if (proto.locations) {\n m.locations = proto.locations.map(Location.fromProto);\n }\n if (proto.mediaEntries) {\n m.mediaEntries = proto.mediaEntries.map(MediaEntry.fromProto);\n }\n if (proto.metaData) {\n m.metaData = proto.metaData.map(MetaData.fromProto);\n }\n if (proto.customization) {\n m.customization = PostCustomization.fromProto(proto.customization);\n }\n if (proto.postTypes) {\n m.postTypes = proto.postTypes.map(SSIDPostType.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.brandId !== 'undefined') {\n toReturn['brandId'] = this.brandId;\n }\n if (typeof this.text !== 'undefined') {\n toReturn['text'] = this.text;\n }\n if (typeof this.media !== 'undefined') {\n toReturn['media'] = this.media;\n }\n if (typeof this.scheduledDate !== 'undefined' && this.scheduledDate !== null) {\n toReturn['scheduledDate'] = 'toApiJson' in this.scheduledDate ? this.scheduledDate.toApiJson() : this.scheduledDate;\n }\n if (typeof this.locations !== 'undefined' && this.locations !== null) {\n toReturn['locations'] = 'toApiJson' in this.locations ? this.locations.toApiJson() : this.locations;\n }\n if (typeof this.gifs !== 'undefined') {\n toReturn['gifs'] = this.gifs;\n }\n if (typeof this.videos !== 'undefined') {\n toReturn['videos'] = this.videos;\n }\n if (typeof this.mediaEntries !== 'undefined' && this.mediaEntries !== null) {\n toReturn['mediaEntries'] = 'toApiJson' in this.mediaEntries ? this.mediaEntries.toApiJson() : this.mediaEntries;\n }\n if (typeof this.metaData !== 'undefined' && this.metaData !== null) {\n toReturn['metaData'] = 'toApiJson' in this.metaData ? this.metaData.toApiJson() : this.metaData;\n }\n if (typeof this.tags !== 'undefined') {\n toReturn['tags'] = this.tags;\n }\n if (typeof this.customization !== 'undefined' && this.customization !== null) {\n toReturn['customization'] = 'toApiJson' in this.customization ? this.customization.toApiJson() : this.customization;\n }\n if (typeof this.linkShortCode !== 'undefined') {\n toReturn['linkShortCode'] = this.linkShortCode;\n }\n if (typeof this.postTypes !== 'undefined' && this.postTypes !== null) {\n toReturn['postTypes'] = 'toApiJson' in this.postTypes ? this.postTypes.toApiJson() : this.postTypes;\n }\n return toReturn;\n }\n}\nclass CreateMultilocationPostResponse {\n static fromProto(proto) {\n let m = new CreateMultilocationPostResponse();\n m = Object.assign(m, proto);\n if (proto.post) {\n m.post = MultilocationPost.fromProto(proto.post);\n }\n if (proto.errors) {\n m.errors = proto.errors.map(MultilocationPostError.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.post !== 'undefined' && this.post !== null) {\n toReturn['post'] = 'toApiJson' in this.post ? this.post.toApiJson() : this.post;\n }\n if (typeof this.errors !== 'undefined' && this.errors !== null) {\n toReturn['errors'] = 'toApiJson' in this.errors ? this.errors.toApiJson() : this.errors;\n }\n return toReturn;\n }\n}\nclass CreatePostTemplateRequest {\n static fromProto(proto) {\n let m = new CreatePostTemplateRequest();\n m = Object.assign(m, proto);\n if (proto.postDateTime) {\n m.postDateTime = new Date(proto.postDateTime);\n }\n if (proto.mediaEntries) {\n m.mediaEntries = proto.mediaEntries.map(MediaEntry.fromProto);\n }\n if (proto.metaData) {\n m.metaData = proto.metaData.map(MetaData.fromProto);\n }\n if (proto.postType) {\n m.postType = enumStringToValue$6(PostType, proto.postType);\n }\n if (proto.youtubeCustomization) {\n m.youtubeCustomization = YoutubeCustomization.fromProto(proto.youtubeCustomization);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.title !== 'undefined') {\n toReturn['title'] = this.title;\n }\n if (typeof this.postText !== 'undefined') {\n toReturn['postText'] = this.postText;\n }\n if (typeof this.postDateTime !== 'undefined' && this.postDateTime !== null) {\n toReturn['postDateTime'] = 'toApiJson' in this.postDateTime ? this.postDateTime.toApiJson() : this.postDateTime;\n }\n if (typeof this.gmbPostCustomization !== 'undefined') {\n toReturn['gmbPostCustomization'] = this.gmbPostCustomization;\n }\n if (typeof this.imageUrl !== 'undefined') {\n toReturn['imageUrl'] = this.imageUrl;\n }\n if (typeof this.imagePath !== 'undefined') {\n toReturn['imagePath'] = this.imagePath;\n }\n if (typeof this.imageSize !== 'undefined') {\n toReturn['imageSize'] = this.imageSize;\n }\n if (typeof this.previews !== 'undefined') {\n toReturn['previews'] = this.previews;\n }\n if (typeof this.options !== 'undefined') {\n toReturn['options'] = this.options;\n }\n if (typeof this.videoUrl !== 'undefined') {\n toReturn['videoUrl'] = this.videoUrl;\n }\n if (typeof this.mediaEntries !== 'undefined' && this.mediaEntries !== null) {\n toReturn['mediaEntries'] = 'toApiJson' in this.mediaEntries ? this.mediaEntries.toApiJson() : this.mediaEntries;\n }\n if (typeof this.metaData !== 'undefined' && this.metaData !== null) {\n toReturn['metaData'] = 'toApiJson' in this.metaData ? this.metaData.toApiJson() : this.metaData;\n }\n if (typeof this.postType !== 'undefined') {\n toReturn['postType'] = this.postType;\n }\n if (typeof this.youtubeCustomization !== 'undefined' && this.youtubeCustomization !== null) {\n toReturn['youtubeCustomization'] = 'toApiJson' in this.youtubeCustomization ? this.youtubeCustomization.toApiJson() : this.youtubeCustomization;\n }\n return toReturn;\n }\n}\nclass CreatePostTemplateResponse {\n static fromProto(proto) {\n let m = new CreatePostTemplateResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n return toReturn;\n }\n}\nclass DateRangeFilter {\n static fromProto(proto) {\n let m = new DateRangeFilter();\n m = Object.assign(m, proto);\n if (proto.beginRange) {\n m.beginRange = new Date(proto.beginRange);\n }\n if (proto.endRange) {\n m.endRange = new Date(proto.endRange);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.beginRange !== 'undefined' && this.beginRange !== null) {\n toReturn['beginRange'] = 'toApiJson' in this.beginRange ? this.beginRange.toApiJson() : this.beginRange;\n }\n if (typeof this.endRange !== 'undefined' && this.endRange !== null) {\n toReturn['endRange'] = 'toApiJson' in this.endRange ? this.endRange.toApiJson() : this.endRange;\n }\n return toReturn;\n }\n}\nclass DeleteHashtagsRequest {\n static fromProto(proto) {\n let m = new DeleteHashtagsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.keyword !== 'undefined') {\n toReturn['keyword'] = this.keyword;\n }\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n return toReturn;\n }\n}\nclass DeleteMultilocationPostRequest {\n static fromProto(proto) {\n let m = new DeleteMultilocationPostRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.brandId !== 'undefined') {\n toReturn['brandId'] = this.brandId;\n }\n if (typeof this.multilocationId !== 'undefined') {\n toReturn['multilocationId'] = this.multilocationId;\n }\n return toReturn;\n }\n}\nclass DeletePostTemplateRequest {\n static fromProto(proto) {\n let m = new DeletePostTemplateRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n return toReturn;\n }\n}\nclass DeleteSocialPostRequest {\n static fromProto(proto) {\n let m = new DeleteSocialPostRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.socialPostId !== 'undefined') {\n toReturn['socialPostId'] = this.socialPostId;\n }\n return toReturn;\n }\n}\nclass EditMultilocationPostRequest {\n static fromProto(proto) {\n let m = new EditMultilocationPostRequest();\n m = Object.assign(m, proto);\n if (proto.scheduledDate) {\n m.scheduledDate = new Date(proto.scheduledDate);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n if (proto.locations) {\n m.locations = proto.locations.map(Location.fromProto);\n }\n if (proto.mediaEntries) {\n m.mediaEntries = proto.mediaEntries.map(MediaEntry.fromProto);\n }\n if (proto.metaData) {\n m.metaData = proto.metaData.map(MetaData.fromProto);\n }\n if (proto.customization) {\n m.customization = PostCustomization.fromProto(proto.customization);\n }\n if (proto.postTypes) {\n m.postTypes = proto.postTypes.map(SSIDPostType.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.brandId !== 'undefined') {\n toReturn['brandId'] = this.brandId;\n }\n if (typeof this.multilocationId !== 'undefined') {\n toReturn['multilocationId'] = this.multilocationId;\n }\n if (typeof this.text !== 'undefined') {\n toReturn['text'] = this.text;\n }\n if (typeof this.media !== 'undefined') {\n toReturn['media'] = this.media;\n }\n if (typeof this.scheduledDate !== 'undefined' && this.scheduledDate !== null) {\n toReturn['scheduledDate'] = 'toApiJson' in this.scheduledDate ? this.scheduledDate.toApiJson() : this.scheduledDate;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n if (typeof this.gifs !== 'undefined') {\n toReturn['gifs'] = this.gifs;\n }\n if (typeof this.videos !== 'undefined') {\n toReturn['videos'] = this.videos;\n }\n if (typeof this.locations !== 'undefined' && this.locations !== null) {\n toReturn['locations'] = 'toApiJson' in this.locations ? this.locations.toApiJson() : this.locations;\n }\n if (typeof this.mediaEntries !== 'undefined' && this.mediaEntries !== null) {\n toReturn['mediaEntries'] = 'toApiJson' in this.mediaEntries ? this.mediaEntries.toApiJson() : this.mediaEntries;\n }\n if (typeof this.metaData !== 'undefined' && this.metaData !== null) {\n toReturn['metaData'] = 'toApiJson' in this.metaData ? this.metaData.toApiJson() : this.metaData;\n }\n if (typeof this.tags !== 'undefined') {\n toReturn['tags'] = this.tags;\n }\n if (typeof this.customization !== 'undefined' && this.customization !== null) {\n toReturn['customization'] = 'toApiJson' in this.customization ? this.customization.toApiJson() : this.customization;\n }\n if (typeof this.linkShortCode !== 'undefined') {\n toReturn['linkShortCode'] = this.linkShortCode;\n }\n if (typeof this.postTypes !== 'undefined' && this.postTypes !== null) {\n toReturn['postTypes'] = 'toApiJson' in this.postTypes ? this.postTypes.toApiJson() : this.postTypes;\n }\n return toReturn;\n }\n}\nclass EditMultilocationPostResponse {\n static fromProto(proto) {\n let m = new EditMultilocationPostResponse();\n m = Object.assign(m, proto);\n if (proto.post) {\n m.post = MultilocationPost.fromProto(proto.post);\n }\n if (proto.errors) {\n m.errors = proto.errors.map(MultilocationPostError.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.post !== 'undefined' && this.post !== null) {\n toReturn['post'] = 'toApiJson' in this.post ? this.post.toApiJson() : this.post;\n }\n if (typeof this.errors !== 'undefined' && this.errors !== null) {\n toReturn['errors'] = 'toApiJson' in this.errors ? this.errors.toApiJson() : this.errors;\n }\n return toReturn;\n }\n}\nclass PartnerListScheduledSocialPostsRequestFilters {\n static fromProto(proto) {\n let m = new PartnerListScheduledSocialPostsRequestFilters();\n m = Object.assign(m, proto);\n if (proto.dateRange) {\n m.dateRange = DateRangeFilter.fromProto(proto.dateRange);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.dateRange !== 'undefined' && this.dateRange !== null) {\n toReturn['dateRange'] = 'toApiJson' in this.dateRange ? this.dateRange.toApiJson() : this.dateRange;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n return toReturn;\n }\n}\nclass GenerateCSVForPerformanceStatsRequest {\n static fromProto(proto) {\n let m = new GenerateCSVForPerformanceStatsRequest();\n m = Object.assign(m, proto);\n if (proto.postData) {\n m.postData = proto.postData.map(PostData.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.postData !== 'undefined' && this.postData !== null) {\n toReturn['postData'] = 'toApiJson' in this.postData ? this.postData.toApiJson() : this.postData;\n }\n if (typeof this.includeHeaders !== 'undefined') {\n toReturn['includeHeaders'] = this.includeHeaders;\n }\n return toReturn;\n }\n}\nclass GenerateCSVForPerformanceStatsResponse {\n static fromProto(proto) {\n let m = new GenerateCSVForPerformanceStatsResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.generatedId !== 'undefined') {\n toReturn['generatedId'] = this.generatedId;\n }\n return toReturn;\n }\n}\nclass GetGeneratedCSVForPerformanceStatsRequest {\n static fromProto(proto) {\n let m = new GetGeneratedCSVForPerformanceStatsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.generatedId !== 'undefined') {\n toReturn['generatedId'] = this.generatedId;\n }\n return toReturn;\n }\n}\nclass GetGeneratedCSVForPerformanceStatsResponse {\n static fromProto(proto) {\n let m = new GetGeneratedCSVForPerformanceStatsResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n return toReturn;\n }\n}\nclass GetMultiSocialPostStatsRequest {\n static fromProto(proto) {\n let m = new GetMultiSocialPostStatsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.internalPostIds !== 'undefined') {\n toReturn['internalPostIds'] = this.internalPostIds;\n }\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n return toReturn;\n }\n}\nclass GetMultiSocialPostStatsResponse {\n static fromProto(proto) {\n let m = new GetMultiSocialPostStatsResponse();\n m = Object.assign(m, proto);\n if (proto.socialPostStats) {\n m.socialPostStats = proto.socialPostStats.map(SocialPostStats.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.socialPostStats !== 'undefined' && this.socialPostStats !== null) {\n toReturn['socialPostStats'] = 'toApiJson' in this.socialPostStats ? this.socialPostStats.toApiJson() : this.socialPostStats;\n }\n return toReturn;\n }\n}\nclass GetMultiSocialPostsRequest {\n static fromProto(proto) {\n let m = new GetMultiSocialPostsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.internalPostIds !== 'undefined') {\n toReturn['internalPostIds'] = this.internalPostIds;\n }\n return toReturn;\n }\n}\nclass GetMultiSocialPostsResponse {\n static fromProto(proto) {\n let m = new GetMultiSocialPostsResponse();\n m = Object.assign(m, proto);\n if (proto.socialPosts) {\n m.socialPosts = proto.socialPosts.map(SocialPost.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.socialPosts !== 'undefined' && this.socialPosts !== null) {\n toReturn['socialPosts'] = 'toApiJson' in this.socialPosts ? this.socialPosts.toApiJson() : this.socialPosts;\n }\n return toReturn;\n }\n}\nclass GetMultilocationPostRequest {\n static fromProto(proto) {\n let m = new GetMultilocationPostRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.brandId !== 'undefined') {\n toReturn['brandId'] = this.brandId;\n }\n if (typeof this.multilocationId !== 'undefined') {\n toReturn['multilocationId'] = this.multilocationId;\n }\n return toReturn;\n }\n}\nclass GetMultilocationPostResponse {\n static fromProto(proto) {\n let m = new GetMultilocationPostResponse();\n m = Object.assign(m, proto);\n if (proto.multilocationPost) {\n m.multilocationPost = MultilocationPost.fromProto(proto.multilocationPost);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.multilocationPost !== 'undefined' && this.multilocationPost !== null) {\n toReturn['multilocationPost'] = 'toApiJson' in this.multilocationPost ? this.multilocationPost.toApiJson() : this.multilocationPost;\n }\n return toReturn;\n }\n}\nclass GetPostTemplateRequest {\n static fromProto(proto) {\n let m = new GetPostTemplateRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n return toReturn;\n }\n}\nclass GetPostTemplateResponse {\n static fromProto(proto) {\n let m = new GetPostTemplateResponse();\n m = Object.assign(m, proto);\n if (proto.postTemplate) {\n m.postTemplate = PostTemplate.fromProto(proto.postTemplate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.postTemplate !== 'undefined' && this.postTemplate !== null) {\n toReturn['postTemplate'] = 'toApiJson' in this.postTemplate ? this.postTemplate.toApiJson() : this.postTemplate;\n }\n return toReturn;\n }\n}\nclass GetScheduledPostCountRequest {\n static fromProto(proto) {\n let m = new GetScheduledPostCountRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.socialServiceIds !== 'undefined') {\n toReturn['socialServiceIds'] = this.socialServiceIds;\n }\n return toReturn;\n }\n}\nclass GetScheduledPostCountResponse {\n static fromProto(proto) {\n let m = new GetScheduledPostCountResponse();\n m = Object.assign(m, proto);\n if (proto.count) {\n m.count = parseInt(proto.count, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.count !== 'undefined') {\n toReturn['count'] = this.count;\n }\n return toReturn;\n }\n}\nclass GetTenorAnonymousIdRequest {\n static fromProto(proto) {\n let m = new GetTenorAnonymousIdRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nclass GetTenorAnonymousIdResponse {\n static fromProto(proto) {\n let m = new GetTenorAnonymousIdResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.anonymousId !== 'undefined') {\n toReturn['anonymousId'] = this.anonymousId;\n }\n return toReturn;\n }\n}\nclass ListMultilocationPostsForBrandRequest {\n static fromProto(proto) {\n let m = new ListMultilocationPostsForBrandRequest();\n m = Object.assign(m, proto);\n if (proto.startDate) {\n m.startDate = new Date(proto.startDate);\n }\n if (proto.endDate) {\n m.endDate = new Date(proto.endDate);\n }\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.brandId !== 'undefined') {\n toReturn['brandId'] = this.brandId;\n }\n if (typeof this.startDate !== 'undefined' && this.startDate !== null) {\n toReturn['startDate'] = 'toApiJson' in this.startDate ? this.startDate.toApiJson() : this.startDate;\n }\n if (typeof this.endDate !== 'undefined' && this.endDate !== null) {\n toReturn['endDate'] = 'toApiJson' in this.endDate ? this.endDate.toApiJson() : this.endDate;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n return toReturn;\n }\n}\nclass ListMultilocationPostsForBrandResponse {\n static fromProto(proto) {\n let m = new ListMultilocationPostsForBrandResponse();\n m = Object.assign(m, proto);\n if (proto.multilocationPosts) {\n m.multilocationPosts = proto.multilocationPosts.map(MultilocationPost.fromProto);\n }\n if (proto.failedSocialPosts) {\n m.failedSocialPosts = proto.failedSocialPosts.map(SocialPost.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.multilocationPosts !== 'undefined' && this.multilocationPosts !== null) {\n toReturn['multilocationPosts'] = 'toApiJson' in this.multilocationPosts ? this.multilocationPosts.toApiJson() : this.multilocationPosts;\n }\n if (typeof this.nextCursor !== 'undefined') {\n toReturn['nextCursor'] = this.nextCursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n if (typeof this.failedSocialPosts !== 'undefined' && this.failedSocialPosts !== null) {\n toReturn['failedSocialPosts'] = 'toApiJson' in this.failedSocialPosts ? this.failedSocialPosts.toApiJson() : this.failedSocialPosts;\n }\n return toReturn;\n }\n}\nclass ListPixabayImagesRequest {\n static fromProto(proto) {\n let m = new ListPixabayImagesRequest();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.query !== 'undefined') {\n toReturn['query'] = this.query;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n if (typeof this.includeLocalUrl !== 'undefined') {\n toReturn['includeLocalUrl'] = this.includeLocalUrl;\n }\n if (typeof this.agid !== 'undefined') {\n toReturn['agid'] = this.agid;\n }\n return toReturn;\n }\n}\nclass ListPixabayImagesResponse {\n static fromProto(proto) {\n let m = new ListPixabayImagesResponse();\n m = Object.assign(m, proto);\n if (proto.total) {\n m.total = parseInt(proto.total, 10);\n }\n if (proto.totalHits) {\n m.totalHits = parseInt(proto.totalHits, 10);\n }\n if (proto.hits) {\n m.hits = proto.hits.map(PixabayImage.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.total !== 'undefined') {\n toReturn['total'] = this.total;\n }\n if (typeof this.totalHits !== 'undefined') {\n toReturn['totalHits'] = this.totalHits;\n }\n if (typeof this.hits !== 'undefined' && this.hits !== null) {\n toReturn['hits'] = 'toApiJson' in this.hits ? this.hits.toApiJson() : this.hits;\n }\n return toReturn;\n }\n}\nclass ListPostTemplatesRequest {\n static fromProto(proto) {\n let m = new ListPostTemplatesRequest();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n return toReturn;\n }\n}\nclass ListPostTemplatesResponse {\n static fromProto(proto) {\n let m = new ListPostTemplatesResponse();\n m = Object.assign(m, proto);\n if (proto.postTemplate) {\n m.postTemplate = proto.postTemplate.map(PostTemplate.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.postTemplate !== 'undefined' && this.postTemplate !== null) {\n toReturn['postTemplate'] = 'toApiJson' in this.postTemplate ? this.postTemplate.toApiJson() : this.postTemplate;\n }\n if (typeof this.nextCursor !== 'undefined') {\n toReturn['nextCursor'] = this.nextCursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n return toReturn;\n }\n}\nclass ListSocialPostsRequest {\n static fromProto(proto) {\n let m = new ListSocialPostsRequest();\n m = Object.assign(m, proto);\n if (proto.start) {\n m.start = new Date(proto.start);\n }\n if (proto.end) {\n m.end = new Date(proto.end);\n }\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.start !== 'undefined' && this.start !== null) {\n toReturn['start'] = 'toApiJson' in this.start ? this.start.toApiJson() : this.start;\n }\n if (typeof this.end !== 'undefined' && this.end !== null) {\n toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;\n }\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.socialServiceIds !== 'undefined') {\n toReturn['socialServiceIds'] = this.socialServiceIds;\n }\n if (typeof this.tags !== 'undefined') {\n toReturn['tags'] = this.tags;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n return toReturn;\n }\n}\nclass ListSocialPostsResponse {\n static fromProto(proto) {\n let m = new ListSocialPostsResponse();\n m = Object.assign(m, proto);\n if (proto.socialPosts) {\n m.socialPosts = proto.socialPosts.map(SocialPost.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.socialPosts !== 'undefined' && this.socialPosts !== null) {\n toReturn['socialPosts'] = 'toApiJson' in this.socialPosts ? this.socialPosts.toApiJson() : this.socialPosts;\n }\n if (typeof this.nextCursor !== 'undefined') {\n toReturn['nextCursor'] = this.nextCursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n return toReturn;\n }\n}\nclass ListTenorGifsRequest {\n static fromProto(proto) {\n let m = new ListTenorGifsRequest();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.query !== 'undefined') {\n toReturn['query'] = this.query;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n if (typeof this.locale !== 'undefined') {\n toReturn['locale'] = this.locale;\n }\n if (typeof this.anonymousId !== 'undefined') {\n toReturn['anonymousId'] = this.anonymousId;\n }\n if (typeof this.mediaFilter !== 'undefined') {\n toReturn['mediaFilter'] = this.mediaFilter;\n }\n if (typeof this.aspectRatioRange !== 'undefined') {\n toReturn['aspectRatioRange'] = this.aspectRatioRange;\n }\n if (typeof this.contentFilter !== 'undefined') {\n toReturn['contentFilter'] = this.contentFilter;\n }\n return toReturn;\n }\n}\nclass ListTenorGifsResponse {\n static fromProto(proto) {\n let m = new ListTenorGifsResponse();\n m = Object.assign(m, proto);\n if (proto.results) {\n m.results = proto.results.map(TenorGif.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.next !== 'undefined') {\n toReturn['next'] = this.next;\n }\n if (typeof this.results !== 'undefined' && this.results !== null) {\n toReturn['results'] = 'toApiJson' in this.results ? this.results.toApiJson() : this.results;\n }\n return toReturn;\n }\n}\nclass PartnerListScheduledPostsResponse {\n static fromProto(proto) {\n let m = new PartnerListScheduledPostsResponse();\n m = Object.assign(m, proto);\n if (proto.socialPosts) {\n m.socialPosts = proto.socialPosts.map(SocialPost.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.socialPosts !== 'undefined' && this.socialPosts !== null) {\n toReturn['socialPosts'] = 'toApiJson' in this.socialPosts ? this.socialPosts.toApiJson() : this.socialPosts;\n }\n if (typeof this.nextCursor !== 'undefined') {\n toReturn['nextCursor'] = this.nextCursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n return toReturn;\n }\n}\nclass PartnerListScheduledSocialPostsRequest {\n static fromProto(proto) {\n let m = new PartnerListScheduledSocialPostsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = PartnerListScheduledSocialPostsRequestFilters.fromProto(proto.filters);\n }\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n return toReturn;\n }\n}\nclass PostData {\n static fromProto(proto) {\n let m = new PostData();\n m = Object.assign(m, proto);\n if (proto.reach) {\n m.reach = parseInt(proto.reach, 10);\n }\n if (proto.views) {\n m.views = parseInt(proto.views, 10);\n }\n if (proto.clicks) {\n m.clicks = parseInt(proto.clicks, 10);\n }\n if (proto.comments) {\n m.comments = parseInt(proto.comments, 10);\n }\n if (proto.shares) {\n m.shares = parseInt(proto.shares, 10);\n }\n if (proto.reactions) {\n m.reactions = parseInt(proto.reactions, 10);\n }\n if (proto.saves) {\n m.saves = parseInt(proto.saves, 10);\n }\n if (proto.likes) {\n m.likes = parseInt(proto.likes, 10);\n }\n if (proto.videoViews) {\n m.videoViews = parseInt(proto.videoViews, 10);\n }\n if (proto.retweets) {\n m.retweets = parseInt(proto.retweets, 10);\n }\n if (proto.favourites) {\n m.favourites = parseInt(proto.favourites, 10);\n }\n if (proto.impressions) {\n m.impressions = parseInt(proto.impressions, 10);\n }\n if (proto.commentsCount) {\n m.commentsCount = parseInt(proto.commentsCount, 10);\n }\n if (proto.likeCount) {\n m.likeCount = parseInt(proto.likeCount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.postId !== 'undefined') {\n toReturn['postId'] = this.postId;\n }\n if (typeof this.reach !== 'undefined') {\n toReturn['reach'] = this.reach;\n }\n if (typeof this.engagement !== 'undefined') {\n toReturn['engagement'] = this.engagement;\n }\n if (typeof this.views !== 'undefined') {\n toReturn['views'] = this.views;\n }\n if (typeof this.clicks !== 'undefined') {\n toReturn['clicks'] = this.clicks;\n }\n if (typeof this.comments !== 'undefined') {\n toReturn['comments'] = this.comments;\n }\n if (typeof this.shares !== 'undefined') {\n toReturn['shares'] = this.shares;\n }\n if (typeof this.reactions !== 'undefined') {\n toReturn['reactions'] = this.reactions;\n }\n if (typeof this.saves !== 'undefined') {\n toReturn['saves'] = this.saves;\n }\n if (typeof this.likes !== 'undefined') {\n toReturn['likes'] = this.likes;\n }\n if (typeof this.videoViews !== 'undefined') {\n toReturn['videoViews'] = this.videoViews;\n }\n if (typeof this.retweets !== 'undefined') {\n toReturn['retweets'] = this.retweets;\n }\n if (typeof this.favourites !== 'undefined') {\n toReturn['favourites'] = this.favourites;\n }\n if (typeof this.impressions !== 'undefined') {\n toReturn['impressions'] = this.impressions;\n }\n if (typeof this.commentsCount !== 'undefined') {\n toReturn['commentsCount'] = this.commentsCount;\n }\n if (typeof this.likeCount !== 'undefined') {\n toReturn['likeCount'] = this.likeCount;\n }\n return toReturn;\n }\n}\nclass RemoveFromMultilocationPostRequest {\n static fromProto(proto) {\n let m = new RemoveFromMultilocationPostRequest();\n m = Object.assign(m, proto);\n if (proto.reason) {\n m.reason = enumStringToValue$6(RemoveReason, proto.reason);\n }\n if (proto.locations) {\n m.locations = proto.locations.map(Location.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.reason !== 'undefined') {\n toReturn['reason'] = this.reason;\n }\n if (typeof this.brandId !== 'undefined') {\n toReturn['brandId'] = this.brandId;\n }\n if (typeof this.multilocationId !== 'undefined') {\n toReturn['multilocationId'] = this.multilocationId;\n }\n if (typeof this.locations !== 'undefined' && this.locations !== null) {\n toReturn['locations'] = 'toApiJson' in this.locations ? this.locations.toApiJson() : this.locations;\n }\n return toReturn;\n }\n}\nclass ReplaceHashtagsRequest {\n static fromProto(proto) {\n let m = new ReplaceHashtagsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.keyword !== 'undefined') {\n toReturn['keyword'] = this.keyword;\n }\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n return toReturn;\n }\n}\nclass SchedulePostRequest {\n static fromProto(proto) {\n let m = new SchedulePostRequest();\n m = Object.assign(m, proto);\n if (proto.socialPost) {\n m.socialPost = SocialPostData.fromProto(proto.socialPost);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.socialPost !== 'undefined' && this.socialPost !== null) {\n toReturn['socialPost'] = 'toApiJson' in this.socialPost ? this.socialPost.toApiJson() : this.socialPost;\n }\n if (typeof this.socialServiceIds !== 'undefined') {\n toReturn['socialServiceIds'] = this.socialServiceIds;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n return toReturn;\n }\n}\nclass SchedulePostResponse {\n static fromProto(proto) {\n let m = new SchedulePostResponse();\n m = Object.assign(m, proto);\n if (proto.statuses) {\n m.statuses = proto.statuses.map(SchedulePostStatus.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.statuses !== 'undefined' && this.statuses !== null) {\n toReturn['statuses'] = 'toApiJson' in this.statuses ? this.statuses.toApiJson() : this.statuses;\n }\n return toReturn;\n }\n}\nclass ScheduleToAllPagesRequest {\n static fromProto(proto) {\n let m = new ScheduleToAllPagesRequest();\n m = Object.assign(m, proto);\n if (proto.socialPost) {\n m.socialPost = SocialPostData.fromProto(proto.socialPost);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.socialPost !== 'undefined' && this.socialPost !== null) {\n toReturn['socialPost'] = 'toApiJson' in this.socialPost ? this.socialPost.toApiJson() : this.socialPost;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n return toReturn;\n }\n}\nclass ScheduleToAllPagesResponse {\n static fromProto(proto) {\n let m = new ScheduleToAllPagesResponse();\n m = Object.assign(m, proto);\n if (proto.statuses) {\n m.statuses = proto.statuses.map(SchedulePostStatus.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.statuses !== 'undefined' && this.statuses !== null) {\n toReturn['statuses'] = 'toApiJson' in this.statuses ? this.statuses.toApiJson() : this.statuses;\n }\n return toReturn;\n }\n}\nclass SearchHashtagRequest {\n static fromProto(proto) {\n let m = new SearchHashtagRequest();\n m = Object.assign(m, proto);\n if (proto.limit) {\n m.limit = parseInt(proto.limit, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n if (typeof this.limit !== 'undefined') {\n toReturn['limit'] = this.limit;\n }\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n return toReturn;\n }\n}\nclass SearchHashtagResponse {\n static fromProto(proto) {\n let m = new SearchHashtagResponse();\n m = Object.assign(m, proto);\n if (proto.hashtags) {\n m.hashtags = proto.hashtags.map(Hashtag.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.hashtags !== 'undefined' && this.hashtags !== null) {\n toReturn['hashtags'] = 'toApiJson' in this.hashtags ? this.hashtags.toApiJson() : this.hashtags;\n }\n return toReturn;\n }\n}\nclass SuggestMessageRequest {\n static fromProto(proto) {\n let m = new SuggestMessageRequest();\n m = Object.assign(m, proto);\n if (proto.length) {\n m.length = enumStringToValue$6(MessageLength, proto.length);\n }\n if (proto.type) {\n m.type = enumStringToValue$6(TemplateType, proto.type);\n }\n if (proto.metadata) {\n m.metadata = proto.metadata.map(MetaData.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.prompt !== 'undefined') {\n toReturn['prompt'] = this.prompt;\n }\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.length !== 'undefined') {\n toReturn['length'] = this.length;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.metadata !== 'undefined' && this.metadata !== null) {\n toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;\n }\n return toReturn;\n }\n}\nclass SuggestMessageResponse {\n static fromProto(proto) {\n let m = new SuggestMessageResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.message !== 'undefined') {\n toReturn['message'] = this.message;\n }\n return toReturn;\n }\n}\nclass UpdatePostTemplateRequest {\n static fromProto(proto) {\n let m = new UpdatePostTemplateRequest();\n m = Object.assign(m, proto);\n if (proto.postDateTime) {\n m.postDateTime = new Date(proto.postDateTime);\n }\n if (proto.mediaEntries) {\n m.mediaEntries = proto.mediaEntries.map(MediaEntry.fromProto);\n }\n if (proto.metaData) {\n m.metaData = proto.metaData.map(MetaData.fromProto);\n }\n if (proto.postType) {\n m.postType = enumStringToValue$6(PostType, proto.postType);\n }\n if (proto.youtubeCustomization) {\n m.youtubeCustomization = YoutubeCustomization.fromProto(proto.youtubeCustomization);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n if (typeof this.title !== 'undefined') {\n toReturn['title'] = this.title;\n }\n if (typeof this.postText !== 'undefined') {\n toReturn['postText'] = this.postText;\n }\n if (typeof this.postDateTime !== 'undefined' && this.postDateTime !== null) {\n toReturn['postDateTime'] = 'toApiJson' in this.postDateTime ? this.postDateTime.toApiJson() : this.postDateTime;\n }\n if (typeof this.gmbPostCustomization !== 'undefined') {\n toReturn['gmbPostCustomization'] = this.gmbPostCustomization;\n }\n if (typeof this.imageUrl !== 'undefined') {\n toReturn['imageUrl'] = this.imageUrl;\n }\n if (typeof this.imagePath !== 'undefined') {\n toReturn['imagePath'] = this.imagePath;\n }\n if (typeof this.imageSize !== 'undefined') {\n toReturn['imageSize'] = this.imageSize;\n }\n if (typeof this.previews !== 'undefined') {\n toReturn['previews'] = this.previews;\n }\n if (typeof this.options !== 'undefined') {\n toReturn['options'] = this.options;\n }\n if (typeof this.videoUrl !== 'undefined') {\n toReturn['videoUrl'] = this.videoUrl;\n }\n if (typeof this.mediaEntries !== 'undefined' && this.mediaEntries !== null) {\n toReturn['mediaEntries'] = 'toApiJson' in this.mediaEntries ? this.mediaEntries.toApiJson() : this.mediaEntries;\n }\n if (typeof this.metaData !== 'undefined' && this.metaData !== null) {\n toReturn['metaData'] = 'toApiJson' in this.metaData ? this.metaData.toApiJson() : this.metaData;\n }\n if (typeof this.postType !== 'undefined') {\n toReturn['postType'] = this.postType;\n }\n if (typeof this.youtubeCustomization !== 'undefined' && this.youtubeCustomization !== null) {\n toReturn['youtubeCustomization'] = 'toApiJson' in this.youtubeCustomization ? this.youtubeCustomization.toApiJson() : this.youtubeCustomization;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$5(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Access {\n static fromProto(proto) {\n let m = new Access();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scope !== 'undefined') {\n toReturn['scope'] = this.scope;\n }\n if (typeof this.public !== 'undefined') {\n toReturn['public'] = this.public;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$4(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass LinkV2 {\n static fromProto(proto) {\n let m = new LinkV2();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.picture !== 'undefined') {\n toReturn['picture'] = this.picture;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.title !== 'undefined') {\n toReturn['title'] = this.title;\n }\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n if (typeof this.shortcode !== 'undefined') {\n toReturn['shortcode'] = this.shortcode;\n }\n return toReturn;\n }\n}\nclass MetadataV2 {\n static fromProto(proto) {\n let m = new MetadataV2();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n return toReturn;\n }\n}\nclass PostActionV2 {\n static fromProto(proto) {\n let m = new PostActionV2();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.linkUrl !== 'undefined') {\n toReturn['linkUrl'] = this.linkUrl;\n }\n return toReturn;\n }\n}\nclass PostContentV2 {\n static fromProto(proto) {\n let m = new PostContentV2();\n m = Object.assign(m, proto);\n if (proto.medias) {\n m.medias = proto.medias.map(PostMediaV2.fromProto);\n }\n if (proto.links) {\n m.links = proto.links.map(LinkV2.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.postText !== 'undefined') {\n toReturn['postText'] = this.postText;\n }\n if (typeof this.medias !== 'undefined' && this.medias !== null) {\n toReturn['medias'] = 'toApiJson' in this.medias ? this.medias.toApiJson() : this.medias;\n }\n if (typeof this.links !== 'undefined' && this.links !== null) {\n toReturn['links'] = 'toApiJson' in this.links ? this.links.toApiJson() : this.links;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.title !== 'undefined') {\n toReturn['title'] = this.title;\n }\n return toReturn;\n }\n}\nclass PostCustomizationV2 {\n static fromProto(proto) {\n let m = new PostCustomizationV2();\n m = Object.assign(m, proto);\n if (proto.event) {\n m.event = PostEventV2.fromProto(proto.event);\n }\n if (proto.action) {\n m.action = PostActionV2.fromProto(proto.action);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.event !== 'undefined' && this.event !== null) {\n toReturn['event'] = 'toApiJson' in this.event ? this.event.toApiJson() : this.event;\n }\n if (typeof this.action !== 'undefined' && this.action !== null) {\n toReturn['action'] = 'toApiJson' in this.action ? this.action.toApiJson() : this.action;\n }\n return toReturn;\n }\n}\nclass PostEventV2 {\n static fromProto(proto) {\n let m = new PostEventV2();\n m = Object.assign(m, proto);\n if (proto.start) {\n m.start = new Date(proto.start);\n }\n if (proto.end) {\n m.end = new Date(proto.end);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.title !== 'undefined') {\n toReturn['title'] = this.title;\n }\n if (typeof this.start !== 'undefined' && this.start !== null) {\n toReturn['start'] = 'toApiJson' in this.start ? this.start.toApiJson() : this.start;\n }\n if (typeof this.end !== 'undefined' && this.end !== null) {\n toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;\n }\n return toReturn;\n }\n}\nclass PostMediaV2 {\n static fromProto(proto) {\n let m = new PostMediaV2();\n m = Object.assign(m, proto);\n if (proto.metadata) {\n m.metadata = proto.metadata.map(MetadataV2.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.mediaId !== 'undefined') {\n toReturn['mediaId'] = this.mediaId;\n }\n if (typeof this.mediaUrl !== 'undefined') {\n toReturn['mediaUrl'] = this.mediaUrl;\n }\n if (typeof this.mediaType !== 'undefined') {\n toReturn['mediaType'] = this.mediaType;\n }\n if (typeof this.containerId !== 'undefined') {\n toReturn['containerId'] = this.containerId;\n }\n if (typeof this.metadata !== 'undefined' && this.metadata !== null) {\n toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;\n }\n return toReturn;\n }\n}\nclass SocialPostV2 {\n static fromProto(proto) {\n let m = new SocialPostV2();\n m = Object.assign(m, proto);\n if (proto.postContent) {\n m.postContent = PostContentV2.fromProto(proto.postContent);\n }\n if (proto.scheduled) {\n m.scheduled = new Date(proto.scheduled);\n }\n if (proto.customization) {\n m.customization = PostCustomizationV2.fromProto(proto.customization);\n }\n if (proto.postType) {\n m.postType = enumStringToValue$4(PostTypeV2, proto.postType);\n }\n if (proto.metadata) {\n m.metadata = proto.metadata.map(MetadataV2.fromProto);\n }\n if (proto.youtubeCustomization) {\n m.youtubeCustomization = YoutubeCustomizationV2.fromProto(proto.youtubeCustomization);\n }\n if (proto.tiktokCustomization) {\n m.tiktokCustomization = TikTokCustomizationV2.fromProto(proto.tiktokCustomization);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.socialServiceId !== 'undefined') {\n toReturn['socialServiceId'] = this.socialServiceId;\n }\n if (typeof this.postContent !== 'undefined' && this.postContent !== null) {\n toReturn['postContent'] = 'toApiJson' in this.postContent ? this.postContent.toApiJson() : this.postContent;\n }\n if (typeof this.scheduled !== 'undefined' && this.scheduled !== null) {\n toReturn['scheduled'] = 'toApiJson' in this.scheduled ? this.scheduled.toApiJson() : this.scheduled;\n }\n if (typeof this.customization !== 'undefined' && this.customization !== null) {\n toReturn['customization'] = 'toApiJson' in this.customization ? this.customization.toApiJson() : this.customization;\n }\n if (typeof this.postType !== 'undefined') {\n toReturn['postType'] = this.postType;\n }\n if (typeof this.internalPostId !== 'undefined') {\n toReturn['internalPostId'] = this.internalPostId;\n }\n if (typeof this.metadata !== 'undefined' && this.metadata !== null) {\n toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.brandId !== 'undefined') {\n toReturn['brandId'] = this.brandId;\n }\n if (typeof this.multilocationPostId !== 'undefined') {\n toReturn['multilocationPostId'] = this.multilocationPostId;\n }\n if (typeof this.youtubeCustomization !== 'undefined' && this.youtubeCustomization !== null) {\n toReturn['youtubeCustomization'] = 'toApiJson' in this.youtubeCustomization ? this.youtubeCustomization.toApiJson() : this.youtubeCustomization;\n }\n if (typeof this.userId !== 'undefined') {\n toReturn['userId'] = this.userId;\n }\n if (typeof this.shareId !== 'undefined') {\n toReturn['shareId'] = this.shareId;\n }\n if (typeof this.tiktokCustomization !== 'undefined' && this.tiktokCustomization !== null) {\n toReturn['tiktokCustomization'] = 'toApiJson' in this.tiktokCustomization ? this.tiktokCustomization.toApiJson() : this.tiktokCustomization;\n }\n return toReturn;\n }\n}\nclass TikTokCustomizationV2 {\n static fromProto(proto) {\n let m = new TikTokCustomizationV2();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.allowComment !== 'undefined') {\n toReturn['allowComment'] = this.allowComment;\n }\n if (typeof this.allowDuet !== 'undefined') {\n toReturn['allowDuet'] = this.allowDuet;\n }\n if (typeof this.allowStitch !== 'undefined') {\n toReturn['allowStitch'] = this.allowStitch;\n }\n return toReturn;\n }\n}\nclass YoutubeCustomizationV2 {\n static fromProto(proto) {\n let m = new YoutubeCustomizationV2();\n m = Object.assign(m, proto);\n if (proto.privacyStatus) {\n m.privacyStatus = enumStringToValue$4(YoutubeCustomizationV2PrivacyStatusV2, proto.privacyStatus);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.privacyStatus !== 'undefined') {\n toReturn['privacyStatus'] = this.privacyStatus;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$3(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Media {\n static fromProto(proto) {\n let m = new Media();\n m = Object.assign(m, proto);\n if (proto.mediaType) {\n m.mediaType = enumStringToValue$3(MediaType, proto.mediaType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n if (typeof this.mediaType !== 'undefined') {\n toReturn['mediaType'] = this.mediaType;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$2(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Ancestry {\n static fromProto(proto) {\n let m = new Ancestry();\n m = Object.assign(m, proto);\n if (proto.type) {\n m.type = SubAncestry.fromProto(proto.type);\n }\n if (proto.category) {\n m.category = SubAncestry.fromProto(proto.category);\n }\n if (proto.subcategory) {\n m.subcategory = SubAncestry.fromProto(proto.subcategory);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.type !== 'undefined' && this.type !== null) {\n toReturn['type'] = 'toApiJson' in this.type ? this.type.toApiJson() : this.type;\n }\n if (typeof this.category !== 'undefined' && this.category !== null) {\n toReturn['category'] = 'toApiJson' in this.category ? this.category.toApiJson() : this.category;\n }\n if (typeof this.subcategory !== 'undefined' && this.subcategory !== null) {\n toReturn['subcategory'] = 'toApiJson' in this.subcategory ? this.subcategory.toApiJson() : this.subcategory;\n }\n return toReturn;\n }\n}\nclass Collection {\n static fromProto(proto) {\n let m = new Collection();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.title !== 'undefined') {\n toReturn['title'] = this.title;\n }\n if (typeof this.publishedAt !== 'undefined') {\n toReturn['publishedAt'] = this.publishedAt;\n }\n if (typeof this.lastCollectedAt !== 'undefined') {\n toReturn['lastCollectedAt'] = this.lastCollectedAt;\n }\n if (typeof this.updatedAt !== 'undefined') {\n toReturn['updatedAt'] = this.updatedAt;\n }\n if (typeof this.coverPhoto !== 'undefined') {\n toReturn['coverPhoto'] = this.coverPhoto;\n }\n if (typeof this.user !== 'undefined') {\n toReturn['user'] = this.user;\n }\n return toReturn;\n }\n}\nclass Image {\n static fromProto(proto) {\n let m = new Image();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.small !== 'undefined') {\n toReturn['small'] = this.small;\n }\n if (typeof this.medium !== 'undefined') {\n toReturn['medium'] = this.medium;\n }\n if (typeof this.large !== 'undefined') {\n toReturn['large'] = this.large;\n }\n return toReturn;\n }\n}\nclass Links {\n static fromProto(proto) {\n let m = new Links();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.self !== 'undefined') {\n toReturn['self'] = this.self;\n }\n if (typeof this.html !== 'undefined') {\n toReturn['html'] = this.html;\n }\n if (typeof this.download !== 'undefined') {\n toReturn['download'] = this.download;\n }\n if (typeof this.downloadLocation !== 'undefined') {\n toReturn['downloadLocation'] = this.downloadLocation;\n }\n return toReturn;\n }\n}\nclass Photo {\n static fromProto(proto) {\n let m = new Photo();\n m = Object.assign(m, proto);\n if (proto.width) {\n m.width = parseInt(proto.width, 10);\n }\n if (proto.height) {\n m.height = parseInt(proto.height, 10);\n }\n if (proto.urls) {\n m.urls = Urls.fromProto(proto.urls);\n }\n if (proto.links) {\n m.links = Links.fromProto(proto.links);\n }\n if (proto.likes) {\n m.likes = parseInt(proto.likes, 10);\n }\n if (proto.currentUserCollections) {\n m.currentUserCollections = proto.currentUserCollections.map(Collection.fromProto);\n }\n if (proto.user) {\n m.user = User.fromProto(proto.user);\n }\n if (proto.tags) {\n m.tags = proto.tags.map(Tags.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.slug !== 'undefined') {\n toReturn['slug'] = this.slug;\n }\n if (typeof this.createdAt !== 'undefined') {\n toReturn['createdAt'] = this.createdAt;\n }\n if (typeof this.updatedAt !== 'undefined') {\n toReturn['updatedAt'] = this.updatedAt;\n }\n if (typeof this.promotedAt !== 'undefined') {\n toReturn['promotedAt'] = this.promotedAt;\n }\n if (typeof this.width !== 'undefined') {\n toReturn['width'] = this.width;\n }\n if (typeof this.height !== 'undefined') {\n toReturn['height'] = this.height;\n }\n if (typeof this.color !== 'undefined') {\n toReturn['color'] = this.color;\n }\n if (typeof this.blurHash !== 'undefined') {\n toReturn['blurHash'] = this.blurHash;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.altDescription !== 'undefined') {\n toReturn['altDescription'] = this.altDescription;\n }\n if (typeof this.breadcrumbs !== 'undefined') {\n toReturn['breadcrumbs'] = this.breadcrumbs;\n }\n if (typeof this.urls !== 'undefined' && this.urls !== null) {\n toReturn['urls'] = 'toApiJson' in this.urls ? this.urls.toApiJson() : this.urls;\n }\n if (typeof this.links !== 'undefined' && this.links !== null) {\n toReturn['links'] = 'toApiJson' in this.links ? this.links.toApiJson() : this.links;\n }\n if (typeof this.likes !== 'undefined') {\n toReturn['likes'] = this.likes;\n }\n if (typeof this.likedByUser !== 'undefined') {\n toReturn['likedByUser'] = this.likedByUser;\n }\n if (typeof this.currentUserCollections !== 'undefined' && this.currentUserCollections !== null) {\n toReturn['currentUserCollections'] = 'toApiJson' in this.currentUserCollections ? this.currentUserCollections.toApiJson() : this.currentUserCollections;\n }\n if (typeof this.sponsorship !== 'undefined') {\n toReturn['sponsorship'] = this.sponsorship;\n }\n if (typeof this.user !== 'undefined' && this.user !== null) {\n toReturn['user'] = 'toApiJson' in this.user ? this.user.toApiJson() : this.user;\n }\n if (typeof this.tags !== 'undefined' && this.tags !== null) {\n toReturn['tags'] = 'toApiJson' in this.tags ? this.tags.toApiJson() : this.tags;\n }\n if (typeof this.storageUrl !== 'undefined') {\n toReturn['storageUrl'] = this.storageUrl;\n }\n return toReturn;\n }\n}\nclass Social {\n static fromProto(proto) {\n let m = new Social();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.instagramUsername !== 'undefined') {\n toReturn['instagramUsername'] = this.instagramUsername;\n }\n if (typeof this.portfolioUrl !== 'undefined') {\n toReturn['portfolioUrl'] = this.portfolioUrl;\n }\n if (typeof this.twitterUsername !== 'undefined') {\n toReturn['twitterUsername'] = this.twitterUsername;\n }\n if (typeof this.paypalEmail !== 'undefined') {\n toReturn['paypalEmail'] = this.paypalEmail;\n }\n return toReturn;\n }\n}\nclass Source {\n static fromProto(proto) {\n let m = new Source();\n m = Object.assign(m, proto);\n if (proto.ancestry) {\n m.ancestry = Ancestry.fromProto(proto.ancestry);\n }\n if (proto.coverPhoto) {\n m.coverPhoto = Photo.fromProto(proto.coverPhoto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.ancestry !== 'undefined' && this.ancestry !== null) {\n toReturn['ancestry'] = 'toApiJson' in this.ancestry ? this.ancestry.toApiJson() : this.ancestry;\n }\n if (typeof this.title !== 'undefined') {\n toReturn['title'] = this.title;\n }\n if (typeof this.subtitle !== 'undefined') {\n toReturn['subtitle'] = this.subtitle;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.metaTitle !== 'undefined') {\n toReturn['metaTitle'] = this.metaTitle;\n }\n if (typeof this.metaDescription !== 'undefined') {\n toReturn['metaDescription'] = this.metaDescription;\n }\n if (typeof this.coverPhoto !== 'undefined' && this.coverPhoto !== null) {\n toReturn['coverPhoto'] = 'toApiJson' in this.coverPhoto ? this.coverPhoto.toApiJson() : this.coverPhoto;\n }\n return toReturn;\n }\n}\nclass SubAncestry {\n static fromProto(proto) {\n let m = new SubAncestry();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.slug !== 'undefined') {\n toReturn['slug'] = this.slug;\n }\n if (typeof this.prettySlug !== 'undefined') {\n toReturn['prettySlug'] = this.prettySlug;\n }\n return toReturn;\n }\n}\nclass Tags {\n static fromProto(proto) {\n let m = new Tags();\n m = Object.assign(m, proto);\n if (proto.source) {\n m.source = Source.fromProto(proto.source);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.title !== 'undefined') {\n toReturn['title'] = this.title;\n }\n if (typeof this.source !== 'undefined' && this.source !== null) {\n toReturn['source'] = 'toApiJson' in this.source ? this.source.toApiJson() : this.source;\n }\n return toReturn;\n }\n}\nclass Urls {\n static fromProto(proto) {\n let m = new Urls();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.raw !== 'undefined') {\n toReturn['raw'] = this.raw;\n }\n if (typeof this.full !== 'undefined') {\n toReturn['full'] = this.full;\n }\n if (typeof this.regular !== 'undefined') {\n toReturn['regular'] = this.regular;\n }\n if (typeof this.small !== 'undefined') {\n toReturn['small'] = this.small;\n }\n if (typeof this.thumb !== 'undefined') {\n toReturn['thumb'] = this.thumb;\n }\n if (typeof this.smallS3 !== 'undefined') {\n toReturn['smallS3'] = this.smallS3;\n }\n return toReturn;\n }\n}\nclass User {\n static fromProto(proto) {\n let m = new User();\n m = Object.assign(m, proto);\n if (proto.links) {\n m.links = UserLink.fromProto(proto.links);\n }\n if (proto.profileImage) {\n m.profileImage = Image.fromProto(proto.profileImage);\n }\n if (proto.totalCollections) {\n m.totalCollections = parseInt(proto.totalCollections, 10);\n }\n if (proto.totalLikes) {\n m.totalLikes = parseInt(proto.totalLikes, 10);\n }\n if (proto.totalPhotos) {\n m.totalPhotos = parseInt(proto.totalPhotos, 10);\n }\n if (proto.totalPromotedPhotos) {\n m.totalPromotedPhotos = parseInt(proto.totalPromotedPhotos, 10);\n }\n if (proto.social) {\n m.social = Social.fromProto(proto.social);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.updatedAt !== 'undefined') {\n toReturn['updatedAt'] = this.updatedAt;\n }\n if (typeof this.username !== 'undefined') {\n toReturn['username'] = this.username;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.firstName !== 'undefined') {\n toReturn['firstName'] = this.firstName;\n }\n if (typeof this.lastName !== 'undefined') {\n toReturn['lastName'] = this.lastName;\n }\n if (typeof this.twitterUsername !== 'undefined') {\n toReturn['twitterUsername'] = this.twitterUsername;\n }\n if (typeof this.portfolioUrl !== 'undefined') {\n toReturn['portfolioUrl'] = this.portfolioUrl;\n }\n if (typeof this.bio !== 'undefined') {\n toReturn['bio'] = this.bio;\n }\n if (typeof this.location !== 'undefined') {\n toReturn['location'] = this.location;\n }\n if (typeof this.links !== 'undefined' && this.links !== null) {\n toReturn['links'] = 'toApiJson' in this.links ? this.links.toApiJson() : this.links;\n }\n if (typeof this.profileImage !== 'undefined' && this.profileImage !== null) {\n toReturn['profileImage'] = 'toApiJson' in this.profileImage ? this.profileImage.toApiJson() : this.profileImage;\n }\n if (typeof this.instagramUsername !== 'undefined') {\n toReturn['instagramUsername'] = this.instagramUsername;\n }\n if (typeof this.totalCollections !== 'undefined') {\n toReturn['totalCollections'] = this.totalCollections;\n }\n if (typeof this.totalLikes !== 'undefined') {\n toReturn['totalLikes'] = this.totalLikes;\n }\n if (typeof this.totalPhotos !== 'undefined') {\n toReturn['totalPhotos'] = this.totalPhotos;\n }\n if (typeof this.totalPromotedPhotos !== 'undefined') {\n toReturn['totalPromotedPhotos'] = this.totalPromotedPhotos;\n }\n if (typeof this.acceptedTos !== 'undefined') {\n toReturn['acceptedTos'] = this.acceptedTos;\n }\n if (typeof this.forHire !== 'undefined') {\n toReturn['forHire'] = this.forHire;\n }\n if (typeof this.social !== 'undefined' && this.social !== null) {\n toReturn['social'] = 'toApiJson' in this.social ? this.social.toApiJson() : this.social;\n }\n return toReturn;\n }\n}\nclass UserLink {\n static fromProto(proto) {\n let m = new UserLink();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.self !== 'undefined') {\n toReturn['self'] = this.self;\n }\n if (typeof this.html !== 'undefined') {\n toReturn['html'] = this.html;\n }\n if (typeof this.photos !== 'undefined') {\n toReturn['photos'] = this.photos;\n }\n if (typeof this.likes !== 'undefined') {\n toReturn['likes'] = this.likes;\n }\n if (typeof this.portfolio !== 'undefined') {\n toReturn['portfolio'] = this.portfolio;\n }\n if (typeof this.following !== 'undefined') {\n toReturn['following'] = this.following;\n }\n if (typeof this.followers !== 'undefined') {\n toReturn['followers'] = this.followers;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$1(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AiInstructions {\n static fromProto(proto) {\n let m = new AiInstructions();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.commonAiInstructions !== 'undefined') {\n toReturn['commonAiInstructions'] = this.commonAiInstructions;\n }\n return toReturn;\n }\n}\nclass CreateCommonAiInstructionsRequest {\n static fromProto(proto) {\n let m = new CreateCommonAiInstructionsRequest();\n m = Object.assign(m, proto);\n if (proto.aiInstructions) {\n m.aiInstructions = AiInstructions.fromProto(proto.aiInstructions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.aiInstructions !== 'undefined' && this.aiInstructions !== null) {\n toReturn['aiInstructions'] = 'toApiJson' in this.aiInstructions ? this.aiInstructions.toApiJson() : this.aiInstructions;\n }\n return toReturn;\n }\n}\nclass CreateCommonAiInstructionsResponse {\n static fromProto(proto) {\n let m = new CreateCommonAiInstructionsResponse();\n m = Object.assign(m, proto);\n if (proto.aiInstructions) {\n m.aiInstructions = AiInstructions.fromProto(proto.aiInstructions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.aiInstructions !== 'undefined' && this.aiInstructions !== null) {\n toReturn['aiInstructions'] = 'toApiJson' in this.aiInstructions ? this.aiInstructions.toApiJson() : this.aiInstructions;\n }\n return toReturn;\n }\n}\nclass CreateImageRequest {\n static fromProto(proto) {\n let m = new CreateImageRequest();\n m = Object.assign(m, proto);\n if (proto.metadata) {\n m.metadata = proto.metadata.map(MetadataV2.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.prompt !== 'undefined') {\n toReturn['prompt'] = this.prompt;\n }\n if (typeof this.imageAmount !== 'undefined') {\n toReturn['imageAmount'] = this.imageAmount;\n }\n if (typeof this.size !== 'undefined') {\n toReturn['size'] = this.size;\n }\n if (typeof this.responseFormat !== 'undefined') {\n toReturn['responseFormat'] = this.responseFormat;\n }\n if (typeof this.metadata !== 'undefined' && this.metadata !== null) {\n toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;\n }\n if (typeof this.model !== 'undefined') {\n toReturn['model'] = this.model;\n }\n if (typeof this.style !== 'undefined') {\n toReturn['style'] = this.style;\n }\n if (typeof this.quality !== 'undefined') {\n toReturn['quality'] = this.quality;\n }\n return toReturn;\n }\n}\nclass CreateImageResponse {\n static fromProto(proto) {\n let m = new CreateImageResponse();\n m = Object.assign(m, proto);\n if (proto.createdId) {\n m.createdId = parseInt(proto.createdId, 10);\n }\n if (proto.generatedImages) {\n m.generatedImages = proto.generatedImages.map(ImageCreated.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.createdId !== 'undefined') {\n toReturn['createdId'] = this.createdId;\n }\n if (typeof this.generatedImages !== 'undefined' && this.generatedImages !== null) {\n toReturn['generatedImages'] = 'toApiJson' in this.generatedImages ? this.generatedImages.toApiJson() : this.generatedImages;\n }\n return toReturn;\n }\n}\nclass DeletePostRequest {\n static fromProto(proto) {\n let m = new DeletePostRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accessToken !== 'undefined') {\n toReturn['accessToken'] = this.accessToken;\n }\n if (typeof this.postId !== 'undefined') {\n toReturn['postId'] = this.postId;\n }\n return toReturn;\n }\n}\nclass GeneratePostsRequest {\n static fromProto(proto) {\n let m = new GeneratePostsRequest();\n m = Object.assign(m, proto);\n if (proto.numberOfPosts) {\n m.numberOfPosts = parseInt(proto.numberOfPosts, 10);\n }\n if (proto.postLength) {\n m.postLength = parseInt(proto.postLength, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.numberOfPosts !== 'undefined') {\n toReturn['numberOfPosts'] = this.numberOfPosts;\n }\n if (typeof this.topic !== 'undefined') {\n toReturn['topic'] = this.topic;\n }\n if (typeof this.commonInstructions !== 'undefined') {\n toReturn['commonInstructions'] = this.commonInstructions;\n }\n if (typeof this.tone !== 'undefined') {\n toReturn['tone'] = this.tone;\n }\n if (typeof this.postLength !== 'undefined') {\n toReturn['postLength'] = this.postLength;\n }\n return toReturn;\n }\n}\nclass GeneratePostsResponse {\n static fromProto(proto) {\n let m = new GeneratePostsResponse();\n m = Object.assign(m, proto);\n if (proto.posts) {\n m.posts = proto.posts.map(GeneratePostsResponsePost.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.posts !== 'undefined' && this.posts !== null) {\n toReturn['posts'] = 'toApiJson' in this.posts ? this.posts.toApiJson() : this.posts;\n }\n if (typeof this.keyword !== 'undefined') {\n toReturn['keyword'] = this.keyword;\n }\n return toReturn;\n }\n}\nclass GetCommonAiInstructionsRequest {\n static fromProto(proto) {\n let m = new GetCommonAiInstructionsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n return toReturn;\n }\n}\nclass GetCommonAiInstructionsResponse {\n static fromProto(proto) {\n let m = new GetCommonAiInstructionsResponse();\n m = Object.assign(m, proto);\n if (proto.aiInstructions) {\n m.aiInstructions = AiInstructions.fromProto(proto.aiInstructions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.aiInstructions !== 'undefined' && this.aiInstructions !== null) {\n toReturn['aiInstructions'] = 'toApiJson' in this.aiInstructions ? this.aiInstructions.toApiJson() : this.aiInstructions;\n }\n return toReturn;\n }\n}\nclass ImageBlob {\n static fromProto(proto) {\n let m = new ImageBlob();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.blob !== 'undefined') {\n toReturn['blob'] = this.blob;\n }\n return toReturn;\n }\n}\nclass ImageCreated {\n static fromProto(proto) {\n let m = new ImageCreated();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n if (typeof this.b64Json !== 'undefined') {\n toReturn['b64Json'] = this.b64Json;\n }\n if (typeof this.revisedPrompt !== 'undefined') {\n toReturn['revisedPrompt'] = this.revisedPrompt;\n }\n return toReturn;\n }\n}\nclass ImageUrl {\n static fromProto(proto) {\n let m = new ImageUrl();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n return toReturn;\n }\n}\nclass ListUnsplashImagesRequest {\n static fromProto(proto) {\n let m = new ListUnsplashImagesRequest();\n m = Object.assign(m, proto);\n if (proto.page) {\n m.page = parseInt(proto.page, 10);\n }\n if (proto.perPage) {\n m.perPage = parseInt(proto.perPage, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.query !== 'undefined') {\n toReturn['query'] = this.query;\n }\n if (typeof this.page !== 'undefined') {\n toReturn['page'] = this.page;\n }\n if (typeof this.perPage !== 'undefined') {\n toReturn['perPage'] = this.perPage;\n }\n if (typeof this.orderBy !== 'undefined') {\n toReturn['orderBy'] = this.orderBy;\n }\n if (typeof this.collection !== 'undefined') {\n toReturn['collection'] = this.collection;\n }\n if (typeof this.contentFilter !== 'undefined') {\n toReturn['contentFilter'] = this.contentFilter;\n }\n if (typeof this.color !== 'undefined') {\n toReturn['color'] = this.color;\n }\n if (typeof this.orientation !== 'undefined') {\n toReturn['orientation'] = this.orientation;\n }\n if (typeof this.random !== 'undefined') {\n toReturn['random'] = this.random;\n }\n if (typeof this.includeLocalUrl !== 'undefined') {\n toReturn['includeLocalUrl'] = this.includeLocalUrl;\n }\n return toReturn;\n }\n}\nclass ListUnsplashImagesResponse {\n static fromProto(proto) {\n let m = new ListUnsplashImagesResponse();\n m = Object.assign(m, proto);\n if (proto.total) {\n m.total = parseInt(proto.total, 10);\n }\n if (proto.totalPages) {\n m.totalPages = parseInt(proto.totalPages, 10);\n }\n if (proto.results) {\n m.results = proto.results.map(Photo.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.total !== 'undefined') {\n toReturn['total'] = this.total;\n }\n if (typeof this.totalPages !== 'undefined') {\n toReturn['totalPages'] = this.totalPages;\n }\n if (typeof this.results !== 'undefined' && this.results !== null) {\n toReturn['results'] = 'toApiJson' in this.results ? this.results.toApiJson() : this.results;\n }\n return toReturn;\n }\n}\nclass MediaUploadRequest {\n static fromProto(proto) {\n let m = new MediaUploadRequest();\n m = Object.assign(m, proto);\n if (proto.medias) {\n m.medias = proto.medias.map(Media.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accessToken !== 'undefined') {\n toReturn['accessToken'] = this.accessToken;\n }\n if (typeof this.owner !== 'undefined') {\n toReturn['owner'] = this.owner;\n }\n if (typeof this.medias !== 'undefined' && this.medias !== null) {\n toReturn['medias'] = 'toApiJson' in this.medias ? this.medias.toApiJson() : this.medias;\n }\n return toReturn;\n }\n}\nclass MediaUploadResponse {\n static fromProto(proto) {\n let m = new MediaUploadResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.uploadUrns !== 'undefined') {\n toReturn['uploadUrns'] = this.uploadUrns;\n }\n return toReturn;\n }\n}\nclass GeneratePostsResponsePost {\n static fromProto(proto) {\n let m = new GeneratePostsResponsePost();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.text !== 'undefined') {\n toReturn['text'] = this.text;\n }\n return toReturn;\n }\n}\nclass RepostSocialPostRequest {\n static fromProto(proto) {\n let m = new RepostSocialPostRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.socialPostId !== 'undefined') {\n toReturn['socialPostId'] = this.socialPostId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n return toReturn;\n }\n}\nclass SocialPostOutput {\n static fromProto(proto) {\n let m = new SocialPostOutput();\n m = Object.assign(m, proto);\n if (proto.socialPost) {\n m.socialPost = SocialPostV2.fromProto(proto.socialPost);\n }\n if (proto.metadata) {\n m.metadata = proto.metadata.map(MetadataV2.fromProto);\n }\n if (proto.status) {\n m.status = enumStringToValue$1(PostStatusV2, proto.status);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.internalPostId !== 'undefined') {\n toReturn['internalPostId'] = this.internalPostId;\n }\n if (typeof this.socialPost !== 'undefined' && this.socialPost !== null) {\n toReturn['socialPost'] = 'toApiJson' in this.socialPost ? this.socialPost.toApiJson() : this.socialPost;\n }\n if (typeof this.metadata !== 'undefined' && this.metadata !== null) {\n toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.statusMessage !== 'undefined') {\n toReturn['statusMessage'] = this.statusMessage;\n }\n return toReturn;\n }\n}\nclass SocialPostRequest {\n static fromProto(proto) {\n let m = new SocialPostRequest();\n m = Object.assign(m, proto);\n if (proto.socialPosts) {\n m.socialPosts = proto.socialPosts.map(SocialPostV2.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.socialPosts !== 'undefined' && this.socialPosts !== null) {\n toReturn['socialPosts'] = 'toApiJson' in this.socialPosts ? this.socialPosts.toApiJson() : this.socialPosts;\n }\n return toReturn;\n }\n}\nclass SocialPostResponse {\n static fromProto(proto) {\n let m = new SocialPostResponse();\n m = Object.assign(m, proto);\n if (proto.socialPosts) {\n m.socialPosts = proto.socialPosts.map(SocialPostOutput.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.socialPosts !== 'undefined' && this.socialPosts !== null) {\n toReturn['socialPosts'] = 'toApiJson' in this.socialPosts ? this.socialPosts.toApiJson() : this.socialPosts;\n }\n return toReturn;\n }\n}\nclass UpdateCommonAiInstructionsRequest {\n static fromProto(proto) {\n let m = new UpdateCommonAiInstructionsRequest();\n m = Object.assign(m, proto);\n if (proto.aiInstructions) {\n m.aiInstructions = AiInstructions.fromProto(proto.aiInstructions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.aiInstructions !== 'undefined' && this.aiInstructions !== null) {\n toReturn['aiInstructions'] = 'toApiJson' in this.aiInstructions ? this.aiInstructions.toApiJson() : this.aiInstructions;\n }\n return toReturn;\n }\n}\nclass UpdateCommonAiInstructionsResponse {\n static fromProto(proto) {\n let m = new UpdateCommonAiInstructionsResponse();\n m = Object.assign(m, proto);\n if (proto.aiInstructions) {\n m.aiInstructions = AiInstructions.fromProto(proto.aiInstructions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.aiInstructions !== 'undefined' && this.aiInstructions !== null) {\n toReturn['aiInstructions'] = 'toApiJson' in this.aiInstructions ? this.aiInstructions.toApiJson() : this.aiInstructions;\n }\n return toReturn;\n }\n}\nclass UpdateSocialPostRequest {\n static fromProto(proto) {\n let m = new UpdateSocialPostRequest();\n m = Object.assign(m, proto);\n if (proto.socialPost) {\n m.socialPost = SocialPostV2.fromProto(proto.socialPost);\n }\n if (proto.metadata) {\n m.metadata = proto.metadata.map(MetadataV2.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.socialPost !== 'undefined' && this.socialPost !== null) {\n toReturn['socialPost'] = 'toApiJson' in this.socialPost ? this.socialPost.toApiJson() : this.socialPost;\n }\n if (typeof this.isError !== 'undefined') {\n toReturn['isError'] = this.isError;\n }\n if (typeof this.errors !== 'undefined') {\n toReturn['errors'] = this.errors;\n }\n if (typeof this.errorCategory !== 'undefined') {\n toReturn['errorCategory'] = this.errorCategory;\n }\n if (typeof this.postId !== 'undefined') {\n toReturn['postId'] = this.postId;\n }\n if (typeof this.metadata !== 'undefined' && this.metadata !== null) {\n toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;\n }\n if (typeof this.permalink !== 'undefined') {\n toReturn['permalink'] = this.permalink;\n }\n return toReturn;\n }\n}\nclass UpdateSocialPostResponse {\n static fromProto(proto) {\n let m = new UpdateSocialPostResponse();\n m = Object.assign(m, proto);\n if (proto.socialPost) {\n m.socialPost = SocialPostV2.fromProto(proto.socialPost);\n }\n if (proto.metadata) {\n m.metadata = proto.metadata.map(MetadataV2.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.socialPost !== 'undefined' && this.socialPost !== null) {\n toReturn['socialPost'] = 'toApiJson' in this.socialPost ? this.socialPost.toApiJson() : this.socialPost;\n }\n if (typeof this.isError !== 'undefined') {\n toReturn['isError'] = this.isError;\n }\n if (typeof this.errors !== 'undefined') {\n toReturn['errors'] = this.errors;\n }\n if (typeof this.errorCategory !== 'undefined') {\n toReturn['errorCategory'] = this.errorCategory;\n }\n if (typeof this.postId !== 'undefined') {\n toReturn['postId'] = this.postId;\n }\n if (typeof this.metadata !== 'undefined' && this.metadata !== null) {\n toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;\n }\n return toReturn;\n }\n}\nclass UploadToStorageRequest {\n static fromProto(proto) {\n let m = new UploadToStorageRequest();\n m = Object.assign(m, proto);\n if (proto.mediaType) {\n m.mediaType = enumStringToValue$1(MediaType, proto.mediaType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n if (typeof this.mediaType !== 'undefined') {\n toReturn['mediaType'] = this.mediaType;\n }\n if (typeof this.agid !== 'undefined') {\n toReturn['agid'] = this.agid;\n }\n return toReturn;\n }\n}\nclass UploadToStorageResponse {\n static fromProto(proto) {\n let m = new UploadToStorageResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Action {\n static fromProto(proto) {\n let m = new Action();\n m = Object.assign(m, proto);\n if (proto.actionType) {\n m.actionType = enumStringToValue(ActionType, proto.actionType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.actionType !== 'undefined') {\n toReturn['actionType'] = this.actionType;\n }\n if (typeof this.actionPayload !== 'undefined') {\n toReturn['actionPayload'] = this.actionPayload;\n }\n return toReturn;\n }\n}\nclass EndChatRequest {\n static fromProto(proto) {\n let m = new EndChatRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.threadId !== 'undefined') {\n toReturn['threadId'] = this.threadId;\n }\n return toReturn;\n }\n}\nclass SendMessageRequest {\n static fromProto(proto) {\n let m = new SendMessageRequest();\n m = Object.assign(m, proto);\n if (proto.actions) {\n m.actions = proto.actions.map(Action.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.messageContent !== 'undefined') {\n toReturn['messageContent'] = this.messageContent;\n }\n if (typeof this.threadId !== 'undefined') {\n toReturn['threadId'] = this.threadId;\n }\n if (typeof this.actions !== 'undefined' && this.actions !== null) {\n toReturn['actions'] = 'toApiJson' in this.actions ? this.actions.toApiJson() : this.actions;\n }\n return toReturn;\n }\n}\nclass SendMessageResponse {\n static fromProto(proto) {\n let m = new SendMessageResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.messageResponse !== 'undefined') {\n toReturn['messageResponse'] = this.messageResponse;\n }\n if (typeof this.threadId !== 'undefined') {\n toReturn['threadId'] = this.threadId;\n }\n return toReturn;\n }\n}\nclass StartChatRequest {\n static fromProto(proto) {\n let m = new StartChatRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nclass StartChatResponse {\n static fromProto(proto) {\n let m = new StartChatResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.assistantId !== 'undefined') {\n toReturn['assistantId'] = this.assistantId;\n }\n if (typeof this.threadId !== 'undefined') {\n toReturn['threadId'] = this.threadId;\n }\n return toReturn;\n }\n}\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects Index.\n// *********************************\n\nconst environment = (window ? window['environment'] : 'prod') ?? 'prod';\nconst hostMap = {\n 'local': 'social-post.vendasta-local.com',\n 'test': '',\n 'demo': 'social-posts-demo.apigateway.co',\n 'prod': 'social-posts-prod.apigateway.co',\n 'production': 'social-posts-prod.apigateway.co'\n};\nlet HostService = /*#__PURE__*/(() => {\n class HostService {\n get host() {\n return hostMap[environment.toLowerCase()];\n }\n get hostWithScheme() {\n return 'https://' + this.host;\n }\n }\n HostService.ɵfac = function HostService_Factory(t) {\n return new (t || HostService)();\n };\n HostService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HostService,\n factory: HostService.ɵfac,\n providedIn: 'root'\n });\n return HostService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet SocialPostsApiService = /*#__PURE__*/(() => {\n class SocialPostsApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n list(r) {\n const request = r.toApiJson ? r : new ListSocialPostsRequest(r);\n return this.http.post(this._host + \"/socialposts.v1.SocialPosts/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListSocialPostsResponse.fromProto(resp)));\n }\n deleteSocialPost(r) {\n const request = r.toApiJson ? r : new DeleteSocialPostRequest(r);\n return this.http.post(this._host + \"/socialposts.v1.SocialPosts/DeleteSocialPost\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n scheduleToAllPages(r) {\n const request = r.toApiJson ? r : new ScheduleToAllPagesRequest(r);\n return this.http.post(this._host + \"/socialposts.v1.SocialPosts/ScheduleToAllPages\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ScheduleToAllPagesResponse.fromProto(resp)));\n }\n schedule(r) {\n const request = r.toApiJson ? r : new SchedulePostRequest(r);\n return this.http.post(this._host + \"/socialposts.v1.SocialPosts/Schedule\", request.toApiJson(), this.apiOptions()).pipe(map(resp => SchedulePostResponse.fromProto(resp)));\n }\n getMultiSocialPosts(r) {\n const request = r.toApiJson ? r : new GetMultiSocialPostsRequest(r);\n return this.http.post(this._host + \"/socialposts.v1.SocialPosts/GetMultiSocialPosts\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiSocialPostsResponse.fromProto(resp)));\n }\n getMultiSocialPostStats(r) {\n const request = r.toApiJson ? r : new GetMultiSocialPostStatsRequest(r);\n return this.http.post(this._host + \"/socialposts.v1.SocialPosts/GetMultiSocialPostStats\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiSocialPostStatsResponse.fromProto(resp)));\n }\n getScheduledPostCount(r) {\n const request = r.toApiJson ? r : new GetScheduledPostCountRequest(r);\n return this.http.post(this._host + \"/socialposts.v1.SocialPosts/GetScheduledPostCount\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetScheduledPostCountResponse.fromProto(resp)));\n }\n suggestMessage(r) {\n const request = r.toApiJson ? r : new SuggestMessageRequest(r);\n return this.http.post(this._host + \"/socialposts.v1.SocialPosts/SuggestMessage\", request.toApiJson(), this.apiOptions()).pipe(map(resp => SuggestMessageResponse.fromProto(resp)));\n }\n }\n SocialPostsApiService.ɵfac = function SocialPostsApiService_Factory(t) {\n return new (t || SocialPostsApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n SocialPostsApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SocialPostsApiService,\n factory: SocialPostsApiService.ɵfac,\n providedIn: 'root'\n });\n return SocialPostsApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet SocialPostsService = /*#__PURE__*/(() => {\n class SocialPostsService {\n constructor(socialPostsApiService) {\n this.socialPostsApiService = socialPostsApiService;\n }\n list(start, end, socialServiceIds, businessId, partnerId, cursor, tags, pageSize) {\n const req = new ListSocialPostsRequest({\n start: start,\n end: end,\n businessId: businessId,\n partnerId: partnerId,\n cursor: cursor,\n socialServiceIds: socialServiceIds,\n tags: tags,\n pageSize: pageSize\n });\n return this.socialPostsApiService.list(req);\n }\n getMultiSocialPosts(businessId, internalPostIds) {\n if (!internalPostIds || internalPostIds.length === 0) {\n const res = new GetMultiSocialPostsResponse();\n return of(res);\n }\n const req = new GetMultiSocialPostsRequest({\n businessId: businessId,\n internalPostIds: internalPostIds\n });\n return this.socialPostsApiService.getMultiSocialPosts(req);\n }\n getScheduledPostCount(partnerId, businessId, socialServiceIds) {\n const req = new GetScheduledPostCountRequest({\n partnerId: partnerId,\n businessId: businessId,\n socialServiceIds: socialServiceIds\n });\n return this.socialPostsApiService.getScheduledPostCount(req);\n }\n suggestMessage(businessId, prompt, postLength, templateType, metadata) {\n const req = new SuggestMessageRequest({\n businessId: businessId,\n prompt: prompt,\n length: postLength,\n type: templateType,\n metadata: metadata\n });\n return this.socialPostsApiService.suggestMessage(req);\n }\n }\n SocialPostsService.ɵfac = function SocialPostsService_Factory(t) {\n return new (t || SocialPostsService)(i0.ɵɵinject(SocialPostsApiService));\n };\n SocialPostsService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SocialPostsService,\n factory: SocialPostsService.ɵfac,\n providedIn: 'root'\n });\n return SocialPostsService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet PostTemplatesApiService = /*#__PURE__*/(() => {\n class PostTemplatesApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n updatePostTemplate(r) {\n const request = r.toApiJson ? r : new UpdatePostTemplateRequest(r);\n return this.http.post(this._host + \"/socialposts.v1.PostTemplates/UpdatePostTemplate\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n createPostTemplate(r) {\n const request = r.toApiJson ? r : new CreatePostTemplateRequest(r);\n return this.http.post(this._host + \"/socialposts.v1.PostTemplates/CreatePostTemplate\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreatePostTemplateResponse.fromProto(resp)));\n }\n getPostTemplate(r) {\n const request = r.toApiJson ? r : new GetPostTemplateRequest(r);\n return this.http.post(this._host + \"/socialposts.v1.PostTemplates/GetPostTemplate\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetPostTemplateResponse.fromProto(resp)));\n }\n listPostTemplates(r) {\n const request = r.toApiJson ? r : new ListPostTemplatesRequest(r);\n return this.http.post(this._host + \"/socialposts.v1.PostTemplates/ListPostTemplates\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListPostTemplatesResponse.fromProto(resp)));\n }\n deletePostTemplate(r) {\n const request = r.toApiJson ? r : new DeletePostTemplateRequest(r);\n return this.http.post(this._host + \"/socialposts.v1.PostTemplates/DeletePostTemplate\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n PostTemplatesApiService.ɵfac = function PostTemplatesApiService_Factory(t) {\n return new (t || PostTemplatesApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n PostTemplatesApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: PostTemplatesApiService,\n factory: PostTemplatesApiService.ɵfac,\n providedIn: 'root'\n });\n return PostTemplatesApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet ChatBotApiService = /*#__PURE__*/(() => {\n class ChatBotApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n startChat(r) {\n const request = r.toApiJson ? r : new StartChatRequest(r);\n return this.http.post(this._host + \"/socialposts.v2.ChatBot/StartChat\", request.toApiJson(), this.apiOptions()).pipe(map(resp => StartChatResponse.fromProto(resp)));\n }\n sendMessage(r) {\n const request = r.toApiJson ? r : new SendMessageRequest(r);\n return this.http.post(this._host + \"/socialposts.v2.ChatBot/SendMessage\", request.toApiJson(), this.apiOptions()).pipe(map(resp => SendMessageResponse.fromProto(resp)));\n }\n endChat(r) {\n const request = r.toApiJson ? r : new EndChatRequest(r);\n return this.http.post(this._host + \"/socialposts.v2.ChatBot/EndChat\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n ChatBotApiService.ɵfac = function ChatBotApiService_Factory(t) {\n return new (t || ChatBotApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n ChatBotApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ChatBotApiService,\n factory: ChatBotApiService.ɵfac,\n providedIn: 'root'\n });\n return ChatBotApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet CommonAiInstructionsApiService = /*#__PURE__*/(() => {\n class CommonAiInstructionsApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n createCommonAiInstructions(r) {\n const request = r.toApiJson ? r : new CreateCommonAiInstructionsRequest(r);\n return this.http.post(this._host + \"/socialposts.v2.CommonAiInstructions/CreateCommonAiInstructions\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateCommonAiInstructionsResponse.fromProto(resp)));\n }\n updateCommonAiInstructions(r) {\n const request = r.toApiJson ? r : new UpdateCommonAiInstructionsRequest(r);\n return this.http.post(this._host + \"/socialposts.v2.CommonAiInstructions/UpdateCommonAiInstructions\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdateCommonAiInstructionsResponse.fromProto(resp)));\n }\n getCommonAiInstructions(r) {\n const request = r.toApiJson ? r : new GetCommonAiInstructionsRequest(r);\n return this.http.post(this._host + \"/socialposts.v2.CommonAiInstructions/GetCommonAiInstructions\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetCommonAiInstructionsResponse.fromProto(resp)));\n }\n }\n CommonAiInstructionsApiService.ɵfac = function CommonAiInstructionsApiService_Factory(t) {\n return new (t || CommonAiInstructionsApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n CommonAiInstructionsApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: CommonAiInstructionsApiService,\n factory: CommonAiInstructionsApiService.ɵfac,\n providedIn: 'root'\n });\n return CommonAiInstructionsApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet ContentGenerationApiService = /*#__PURE__*/(() => {\n class ContentGenerationApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n generatePosts(r) {\n const request = r.toApiJson ? r : new GeneratePostsRequest(r);\n return this.http.post(this._host + \"/socialposts.v2.ContentGeneration/GeneratePosts\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GeneratePostsResponse.fromProto(resp)));\n }\n }\n ContentGenerationApiService.ɵfac = function ContentGenerationApiService_Factory(t) {\n return new (t || ContentGenerationApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n ContentGenerationApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ContentGenerationApiService,\n factory: ContentGenerationApiService.ɵfac,\n providedIn: 'root'\n });\n return ContentGenerationApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet HashTagsApiService = /*#__PURE__*/(() => {\n class HashTagsApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n replaceHashtags(r) {\n const request = r.toApiJson ? r : new ReplaceHashtagsRequest(r);\n return this.http.post(this._host + \"/socialposts.v1.HashTags/ReplaceHashtags\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n deleteHashtags(r) {\n const request = r.toApiJson ? r : new DeleteHashtagsRequest(r);\n return this.http.post(this._host + \"/socialposts.v1.HashTags/DeleteHashtags\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n searchHashtag(r) {\n const request = r.toApiJson ? r : new SearchHashtagRequest(r);\n return this.http.post(this._host + \"/socialposts.v1.HashTags/SearchHashtag\", request.toApiJson(), this.apiOptions()).pipe(map(resp => SearchHashtagResponse.fromProto(resp)));\n }\n }\n HashTagsApiService.ɵfac = function HashTagsApiService_Factory(t) {\n return new (t || HashTagsApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n HashTagsApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HashTagsApiService,\n factory: HashTagsApiService.ɵfac,\n providedIn: 'root'\n });\n return HashTagsApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet LinkedinApiService = /*#__PURE__*/(() => {\n class LinkedinApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n deletePost(r) {\n const request = r.toApiJson ? r : new DeletePostRequest(r);\n return this.http.post(this._host + \"/socialposts.v2.Linkedin/DeletePost\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n uploadMedia(r) {\n const request = r.toApiJson ? r : new MediaUploadRequest(r);\n return this.http.post(this._host + \"/socialposts.v2.Linkedin/UploadMedia\", request.toApiJson(), this.apiOptions()).pipe(map(resp => MediaUploadResponse.fromProto(resp)));\n }\n }\n LinkedinApiService.ɵfac = function LinkedinApiService_Factory(t) {\n return new (t || LinkedinApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n LinkedinApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: LinkedinApiService,\n factory: LinkedinApiService.ɵfac,\n providedIn: 'root'\n });\n return LinkedinApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet MultilocationPostApiService = /*#__PURE__*/(() => {\n class MultilocationPostApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n createMultilocationPost(r) {\n const request = r.toApiJson ? r : new CreateMultilocationPostRequest(r);\n return this.http.post(this._host + \"/socialposts.v1.MultilocationPostService/CreateMultilocationPost\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateMultilocationPostResponse.fromProto(resp)));\n }\n editMultilocationPost(r) {\n const request = r.toApiJson ? r : new EditMultilocationPostRequest(r);\n return this.http.post(this._host + \"/socialposts.v1.MultilocationPostService/EditMultilocationPost\", request.toApiJson(), this.apiOptions()).pipe(map(resp => EditMultilocationPostResponse.fromProto(resp)));\n }\n removeFromMultilocationPost(r) {\n const request = r.toApiJson ? r : new RemoveFromMultilocationPostRequest(r);\n return this.http.post(this._host + \"/socialposts.v1.MultilocationPostService/RemoveFromMultilocationPost\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listMultilocationPostsForBrand(r) {\n const request = r.toApiJson ? r : new ListMultilocationPostsForBrandRequest(r);\n return this.http.post(this._host + \"/socialposts.v1.MultilocationPostService/ListMultilocationPostsForBrand\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListMultilocationPostsForBrandResponse.fromProto(resp)));\n }\n deleteMultilocationPost(r) {\n const request = r.toApiJson ? r : new DeleteMultilocationPostRequest(r);\n return this.http.post(this._host + \"/socialposts.v1.MultilocationPostService/DeleteMultilocationPost\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getMultilocationPost(r) {\n const request = r.toApiJson ? r : new GetMultilocationPostRequest(r);\n return this.http.post(this._host + \"/socialposts.v1.MultilocationPostService/GetMultilocationPost\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultilocationPostResponse.fromProto(resp)));\n }\n }\n MultilocationPostApiService.ɵfac = function MultilocationPostApiService_Factory(t) {\n return new (t || MultilocationPostApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n MultilocationPostApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MultilocationPostApiService,\n factory: MultilocationPostApiService.ɵfac,\n providedIn: 'root'\n });\n return MultilocationPostApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet PartnerSocialPostsApiService = /*#__PURE__*/(() => {\n class PartnerSocialPostsApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n listScheduled(r) {\n const request = r.toApiJson ? r : new PartnerListScheduledSocialPostsRequest(r);\n return this.http.post(this._host + \"/socialposts.v1.PartnerSocialPosts/ListScheduled\", request.toApiJson(), this.apiOptions()).pipe(map(resp => PartnerListScheduledPostsResponse.fromProto(resp)));\n }\n listScheduledByCreated(r) {\n const request = r.toApiJson ? r : new PartnerListScheduledSocialPostsRequest(r);\n return this.http.post(this._host + \"/socialposts.v1.PartnerSocialPosts/ListScheduledByCreated\", request.toApiJson(), this.apiOptions()).pipe(map(resp => PartnerListScheduledPostsResponse.fromProto(resp)));\n }\n }\n PartnerSocialPostsApiService.ɵfac = function PartnerSocialPostsApiService_Factory(t) {\n return new (t || PartnerSocialPostsApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n PartnerSocialPostsApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: PartnerSocialPostsApiService,\n factory: PartnerSocialPostsApiService.ɵfac,\n providedIn: 'root'\n });\n return PartnerSocialPostsApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet PixabayImagesApiService = /*#__PURE__*/(() => {\n class PixabayImagesApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n listPixabayImages(r) {\n const request = r.toApiJson ? r : new ListPixabayImagesRequest(r);\n return this.http.post(this._host + \"/socialposts.v1.PixabayImages/ListPixabayImages\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListPixabayImagesResponse.fromProto(resp)));\n }\n }\n PixabayImagesApiService.ɵfac = function PixabayImagesApiService_Factory(t) {\n return new (t || PixabayImagesApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n PixabayImagesApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: PixabayImagesApiService,\n factory: PixabayImagesApiService.ɵfac,\n providedIn: 'root'\n });\n return PixabayImagesApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet PostPerformanceApiService = /*#__PURE__*/(() => {\n class PostPerformanceApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n generateCsvForPerformanceStats(r) {\n const request = r.toApiJson ? r : new GenerateCSVForPerformanceStatsRequest(r);\n return this.http.post(this._host + \"/socialposts.v1.PostPerformance/GenerateCSVForPerformanceStats\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GenerateCSVForPerformanceStatsResponse.fromProto(resp)));\n }\n getGeneratedCsvForPerformanceStats(r) {\n const request = r.toApiJson ? r : new GetGeneratedCSVForPerformanceStatsRequest(r);\n return this.http.post(this._host + \"/socialposts.v1.PostPerformance/GetGeneratedCSVForPerformanceStats\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetGeneratedCSVForPerformanceStatsResponse.fromProto(resp)));\n }\n }\n PostPerformanceApiService.ɵfac = function PostPerformanceApiService_Factory(t) {\n return new (t || PostPerformanceApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n PostPerformanceApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: PostPerformanceApiService,\n factory: PostPerformanceApiService.ɵfac,\n providedIn: 'root'\n });\n return PostPerformanceApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet SocialPostsV2ApiService = /*#__PURE__*/(() => {\n class SocialPostsV2ApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n scheduleSocialPosts(r) {\n const request = r.toApiJson ? r : new SocialPostRequest(r);\n return this.http.post(this._host + \"/socialposts.v2.SocialPostsV2/ScheduleSocialPosts\", request.toApiJson(), this.apiOptions()).pipe(map(resp => SocialPostResponse.fromProto(resp)));\n }\n updateSocialPosts(r) {\n const request = r.toApiJson ? r : new UpdateSocialPostRequest(r);\n return this.http.post(this._host + \"/socialposts.v2.SocialPostsV2/UpdateSocialPosts\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdateSocialPostResponse.fromProto(resp)));\n }\n createImages(r) {\n const request = r.toApiJson ? r : new CreateImageRequest(r);\n return this.http.post(this._host + \"/socialposts.v2.SocialPostsV2/CreateImages\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateImageResponse.fromProto(resp)));\n }\n getImageByUrl(r) {\n const request = r.toApiJson ? r : new ImageUrl(r);\n return this.http.post(this._host + \"/socialposts.v2.SocialPostsV2/GetImageByUrl\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ImageBlob.fromProto(resp)));\n }\n generateVariations(r) {\n const request = r.toApiJson ? r : new ImageUrl(r);\n return this.http.post(this._host + \"/socialposts.v2.SocialPostsV2/GenerateVariations\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateImageResponse.fromProto(resp)));\n }\n repostSocialPost(r) {\n const request = r.toApiJson ? r : new RepostSocialPostRequest(r);\n return this.http.post(this._host + \"/socialposts.v2.SocialPostsV2/RepostSocialPost\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n SocialPostsV2ApiService.ɵfac = function SocialPostsV2ApiService_Factory(t) {\n return new (t || SocialPostsV2ApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n SocialPostsV2ApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SocialPostsV2ApiService,\n factory: SocialPostsV2ApiService.ɵfac,\n providedIn: 'root'\n });\n return SocialPostsV2ApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet TenorGifsApiService = /*#__PURE__*/(() => {\n class TenorGifsApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n getTenorAnonymousId(r) {\n const request = r.toApiJson ? r : new GetTenorAnonymousIdRequest(r);\n return this.http.post(this._host + \"/socialposts.v1.TenorGifs/GetTenorAnonymousId\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetTenorAnonymousIdResponse.fromProto(resp)));\n }\n listTenorGifs(r) {\n const request = r.toApiJson ? r : new ListTenorGifsRequest(r);\n return this.http.post(this._host + \"/socialposts.v1.TenorGifs/ListTenorGifs\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListTenorGifsResponse.fromProto(resp)));\n }\n }\n TenorGifsApiService.ɵfac = function TenorGifsApiService_Factory(t) {\n return new (t || TenorGifsApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n TenorGifsApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: TenorGifsApiService,\n factory: TenorGifsApiService.ɵfac,\n providedIn: 'root'\n });\n return TenorGifsApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet UnsplashApiService = /*#__PURE__*/(() => {\n class UnsplashApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n listUnsplashImages(r) {\n const request = r.toApiJson ? r : new ListUnsplashImagesRequest(r);\n return this.http.post(this._host + \"/socialposts.v2.Unsplash/ListUnsplashImages\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListUnsplashImagesResponse.fromProto(resp)));\n }\n uploadToStorage(r) {\n const request = r.toApiJson ? r : new UploadToStorageRequest(r);\n return this.http.post(this._host + \"/socialposts.v2.Unsplash/UploadToStorage\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UploadToStorageResponse.fromProto(resp)));\n }\n }\n UnsplashApiService.ɵfac = function UnsplashApiService_Factory(t) {\n return new (t || UnsplashApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n UnsplashApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: UnsplashApiService,\n factory: UnsplashApiService.ɵfac,\n providedIn: 'root'\n });\n return UnsplashApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Index.\n// *********************************\nlet PostTemplatesService = /*#__PURE__*/(() => {\n class PostTemplatesService {\n constructor(socialPostsApiService) {\n this.socialPostsApiService = socialPostsApiService;\n }\n updatePostTemplate(accountGroupId, templateId, title, postText, postDateTime, gmbPostCustomization, imageUrl, imagePath, imageSize, previews, options, videoUrl, postType, mediaEntries, metadata, youtubeCustomization) {\n const req = new UpdatePostTemplateRequest({\n accountGroupId: accountGroupId,\n templateId: templateId,\n title: title,\n postText: postText,\n postDateTime: postDateTime,\n gmbPostCustomization: gmbPostCustomization,\n imageUrl: imageUrl,\n imagePath: imagePath,\n imageSize: imageSize,\n previews: previews,\n options: options,\n videoUrl: videoUrl,\n postType: postType || PostType.POST_TYPE_INVALID,\n mediaEntries: mediaEntries,\n metaData: metadata,\n youtubeCustomization: youtubeCustomization\n });\n return this.socialPostsApiService.updatePostTemplate(req);\n }\n createPostTemplate(accountGroupId, title, postText, postDateTime, gmbPostCustomization, imageUrl, imagePath, imageSize, previews, options, videoUrl, postType, mediaEntries, metadata, youtubeCustomization) {\n const req = new CreatePostTemplateRequest({\n accountGroupId: accountGroupId,\n title: title,\n postText: postText,\n postDateTime: postDateTime,\n gmbPostCustomization: gmbPostCustomization,\n imageUrl: imageUrl,\n imagePath: imagePath,\n imageSize: imageSize,\n previews: previews,\n options: options,\n videoUrl: videoUrl,\n postType: postType || PostType.POST_TYPE_INVALID,\n mediaEntries: mediaEntries,\n metaData: metadata,\n youtubeCustomization: youtubeCustomization\n });\n return this.socialPostsApiService.createPostTemplate(req);\n }\n getPostTemplate(accountGroupId, templateId) {\n const req = new GetPostTemplateRequest({\n accountGroupId: accountGroupId,\n templateId: templateId\n });\n return this.socialPostsApiService.getPostTemplate(req);\n }\n listPostTemplates(accountGroupId, cursor, pageSize) {\n const req = new ListPostTemplatesRequest({\n accountGroupId: accountGroupId,\n cursor: cursor,\n pageSize: pageSize\n });\n return this.socialPostsApiService.listPostTemplates(req);\n }\n deletePostTemplate(accountGroupId, templateId) {\n const req = new DeletePostTemplateRequest({\n accountGroupId: accountGroupId,\n templateId: templateId\n });\n return this.socialPostsApiService.deletePostTemplate(req);\n }\n }\n PostTemplatesService.ɵfac = function PostTemplatesService_Factory(t) {\n return new (t || PostTemplatesService)(i0.ɵɵinject(PostTemplatesApiService));\n };\n PostTemplatesService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: PostTemplatesService,\n factory: PostTemplatesService.ɵfac,\n providedIn: 'root'\n });\n return PostTemplatesService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MultilocationPostsService = /*#__PURE__*/(() => {\n class MultilocationPostsService {\n constructor(multilocationApiService) {\n this.multilocationApiService = multilocationApiService;\n }\n createMultilocationPost(brandId, text, media, gifs, videos, scheduledDate, locations, mediaEntries, postCustomization, linkShortCode, metadata, postTypes) {\n const req = new CreateMultilocationPostRequest({\n brandId: brandId,\n text: text,\n media: media,\n gifs: gifs,\n videos: videos,\n scheduledDate: scheduledDate,\n locations: locations,\n mediaEntries: mediaEntries,\n metaData: metadata,\n customization: postCustomization,\n linkShortCode: linkShortCode,\n postTypes: postTypes\n });\n return this.multilocationApiService.createMultilocationPost(req);\n }\n editMultilocationPost(brandId, multilocationId, text, media, gifs, videos, scheduledDate, locations, fieldMask, mediaEntries, postCustomization, linkShortCode, metadata, postTypes) {\n const req = new EditMultilocationPostRequest({\n brandId: brandId,\n multilocationId: multilocationId,\n text: text,\n media: media,\n gifs: gifs,\n videos: videos,\n scheduledDate: scheduledDate,\n locations: locations,\n fieldMask: fieldMask,\n mediaEntries: mediaEntries,\n customization: postCustomization,\n linkShortCode: linkShortCode,\n metaData: metadata,\n postTypes: postTypes\n });\n return this.multilocationApiService.editMultilocationPost(req);\n }\n removeFromMultilocationPost(reason, brandId, multilocationId, locations) {\n const req = new RemoveFromMultilocationPostRequest({\n reason: reason,\n brandId: brandId,\n multilocationId: multilocationId,\n locations: locations\n });\n return this.multilocationApiService.removeFromMultilocationPost(req);\n }\n listMultilocationPostsForBrand(brandId, startDate, endDate, cursor, pageSize) {\n const req = new ListMultilocationPostsForBrandRequest({\n brandId: brandId,\n startDate: startDate,\n endDate: endDate,\n cursor: cursor,\n pageSize: pageSize\n });\n return this.multilocationApiService.listMultilocationPostsForBrand(req);\n }\n deleteMultilocationPost(brandId, multilocationId) {\n const req = new DeleteMultilocationPostRequest({\n brandId: brandId,\n multilocationId: multilocationId\n });\n return this.multilocationApiService.deleteMultilocationPost(req);\n }\n getMultilocationPost(brandId, multilocationId) {\n const req = new GetMultilocationPostRequest({\n brandId: brandId,\n multilocationId: multilocationId\n });\n return this.multilocationApiService.getMultilocationPost(req);\n }\n }\n MultilocationPostsService.ɵfac = function MultilocationPostsService_Factory(t) {\n return new (t || MultilocationPostsService)(i0.ɵɵinject(MultilocationPostApiService));\n };\n MultilocationPostsService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MultilocationPostsService,\n factory: MultilocationPostsService.ɵfac,\n providedIn: 'root'\n });\n return MultilocationPostsService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet TenorGifsService = /*#__PURE__*/(() => {\n class TenorGifsService {\n constructor(tenorGifsApiService) {\n this.tenorGifsApiService = tenorGifsApiService;\n }\n listTenorGifs(query, cursor, pageSize, locale, anonymousId, mediaFilter, aspectRatioRange, contentFilter) {\n const request = new ListTenorGifsRequest({\n query: query,\n cursor: cursor,\n pageSize: pageSize,\n locale: locale,\n anonymousId: anonymousId,\n mediaFilter: mediaFilter,\n aspectRatioRange: aspectRatioRange,\n contentFilter: contentFilter\n });\n return this.tenorGifsApiService.listTenorGifs(request);\n }\n getAnonymousId() {\n const request = new GetTenorAnonymousIdRequest({});\n return this.tenorGifsApiService.getTenorAnonymousId(request);\n }\n }\n TenorGifsService.ɵfac = function TenorGifsService_Factory(t) {\n return new (t || TenorGifsService)(i0.ɵɵinject(TenorGifsApiService));\n };\n TenorGifsService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: TenorGifsService,\n factory: TenorGifsService.ɵfac,\n providedIn: 'root'\n });\n return TenorGifsService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet PixabayImageService = /*#__PURE__*/(() => {\n class PixabayImageService {\n constructor(pixabayApiService) {\n this.pixabayApiService = pixabayApiService;\n }\n listPixabayImages(query, cursor = \"1\", pageSize = 12, includeLocalUrl = false, agid = \"ABC\") {\n const request = new ListPixabayImagesRequest({\n query: query,\n cursor: cursor,\n pageSize: pageSize,\n includeLocalUrl,\n agid\n });\n return this.pixabayApiService.listPixabayImages(request);\n }\n }\n PixabayImageService.ɵfac = function PixabayImageService_Factory(t) {\n return new (t || PixabayImageService)(i0.ɵɵinject(PixabayImagesApiService));\n };\n PixabayImageService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: PixabayImageService,\n factory: PixabayImageService.ɵfac,\n providedIn: 'root'\n });\n return PixabayImageService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet HashTagsService = /*#__PURE__*/(() => {\n class HashTagsService {\n constructor(hashTagsApiService) {\n this.hashTagsApiService = hashTagsApiService;\n }\n replaceHashtags(keyword, businessId, partnerId) {\n const request = new ReplaceHashtagsRequest({\n keyword: keyword,\n businessId: businessId,\n partnerId: partnerId\n });\n return this.hashTagsApiService.replaceHashtags(request);\n }\n deleteHashtags(keyword, businessId, partnerId) {\n const request = new DeleteHashtagsRequest({\n keyword: keyword,\n businessId: businessId,\n partnerId: partnerId\n });\n return this.hashTagsApiService.deleteHashtags(request);\n }\n searchHashtag(searchTerm, businessId, limit, partnerId) {\n const request = new SearchHashtagRequest({\n searchTerm: searchTerm,\n businessId: businessId,\n limit: limit,\n partnerId: partnerId\n });\n return this.hashTagsApiService.searchHashtag(request);\n }\n }\n HashTagsService.ɵfac = function HashTagsService_Factory(t) {\n return new (t || HashTagsService)(i0.ɵɵinject(HashTagsApiService));\n };\n HashTagsService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HashTagsService,\n factory: HashTagsService.ɵfac,\n providedIn: 'root'\n });\n return HashTagsService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet PostPerformanceService = /*#__PURE__*/(() => {\n class PostPerformanceService {\n constructor(postPerformanceApiService) {\n this.postPerformanceApiService = postPerformanceApiService;\n }\n generateCSV(businessId, postData, includeHeaders) {\n const request = new GenerateCSVForPerformanceStatsRequest({\n businessId: businessId,\n postData: postData,\n includeHeaders: includeHeaders\n });\n return this.postPerformanceApiService.generateCsvForPerformanceStats(request).pipe(map(res => res.generatedId));\n }\n }\n PostPerformanceService.ɵfac = function PostPerformanceService_Factory(t) {\n return new (t || PostPerformanceService)(i0.ɵɵinject(PostPerformanceApiService));\n };\n PostPerformanceService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: PostPerformanceService,\n factory: PostPerformanceService.ɵfac,\n providedIn: 'root'\n });\n return PostPerformanceService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet AiInstructionService = /*#__PURE__*/(() => {\n class AiInstructionService {\n constructor(instructionsService) {\n this.instructionsService = instructionsService;\n }\n getAiInstructions(businessId, partnerId) {\n const request = new GetCommonAiInstructionsRequest({\n businessId: businessId,\n partnerId: partnerId\n });\n return this.instructionsService.getCommonAiInstructions(request);\n }\n createAiInstructions(businessId, partnerId, instructions) {\n const aiInstructions = new AiInstructions({\n commonAiInstructions: instructions\n });\n const request = new CreateCommonAiInstructionsRequest({\n businessId: businessId,\n partnerId: partnerId,\n aiInstructions: aiInstructions\n });\n return this.instructionsService.createCommonAiInstructions(request);\n }\n updateAiInstructions(businessId, partnerId, instructions) {\n const aiInstructions = new AiInstructions({\n commonAiInstructions: instructions\n });\n const request = new UpdateCommonAiInstructionsRequest({\n businessId: businessId,\n partnerId: partnerId,\n aiInstructions: aiInstructions\n });\n return this.instructionsService.updateCommonAiInstructions(request);\n }\n }\n AiInstructionService.ɵfac = function AiInstructionService_Factory(t) {\n return new (t || AiInstructionService)(i0.ɵɵinject(CommonAiInstructionsApiService));\n };\n AiInstructionService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: AiInstructionService,\n factory: AiInstructionService.ɵfac,\n providedIn: 'root'\n });\n return AiInstructionService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet ContentGenerationService = /*#__PURE__*/(() => {\n class ContentGenerationService {\n constructor(contentGenerationApiService) {\n this.contentGenerationApiService = contentGenerationApiService;\n }\n generatePosts(r) {\n return this.contentGenerationApiService.generatePosts(r);\n }\n }\n ContentGenerationService.ɵfac = function ContentGenerationService_Factory(t) {\n return new (t || ContentGenerationService)(i0.ɵɵinject(ContentGenerationApiService));\n };\n ContentGenerationService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ContentGenerationService,\n factory: ContentGenerationService.ɵfac,\n providedIn: 'root'\n });\n return ContentGenerationService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet SocialPostsV2Service = /*#__PURE__*/(() => {\n class SocialPostsV2Service {\n constructor(socialpostV2ApiService) {\n this.socialpostV2ApiService = socialpostV2ApiService;\n }\n scheduleSocialPostV2(socialPost) {\n return this.socialpostV2ApiService.scheduleSocialPosts(socialPost);\n }\n createImage(image) {\n return this.socialpostV2ApiService.createImages(image);\n }\n getImageByUrl(url) {\n const urlRequest = new ImageUrl({\n url: url\n });\n return this.socialpostV2ApiService.getImageByUrl(urlRequest);\n }\n generateVariations(url) {\n const urlRequest = new ImageUrl({\n url: url\n });\n return this.socialpostV2ApiService.generateVariations(urlRequest);\n }\n repostSocialPost(socialPostId, businessId) {\n const repostRequest = new RepostSocialPostRequest({\n socialPostId: socialPostId,\n accountGroupId: businessId\n });\n return this.socialpostV2ApiService.repostSocialPost(repostRequest);\n }\n }\n SocialPostsV2Service.ɵfac = function SocialPostsV2Service_Factory(t) {\n return new (t || SocialPostsV2Service)(i0.ɵɵinject(SocialPostsV2ApiService));\n };\n SocialPostsV2Service.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SocialPostsV2Service,\n factory: SocialPostsV2Service.ɵfac,\n providedIn: 'root'\n });\n return SocialPostsV2Service;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet UnsplashImageService = /*#__PURE__*/(() => {\n class UnsplashImageService {\n constructor(unsplashApiService) {\n this.unsplashApiService = unsplashApiService;\n }\n listUnsplashImages(query, page = 1, perPage = 20, orderBy = \"relevent\", orientation = \"squarish\", includeLocalUrl = false) {\n const request = new ListUnsplashImagesRequest({\n query: query,\n page: page,\n perPage: perPage,\n orderBy: orderBy,\n orientation: orientation,\n includeLocalUrl: includeLocalUrl\n });\n return this.unsplashApiService.listUnsplashImages(request);\n }\n uploadToStorage(url, agid) {\n const request = new UploadToStorageRequest({\n url: url,\n agid: agid\n });\n return this.unsplashApiService.uploadToStorage(request);\n }\n }\n UnsplashImageService.ɵfac = function UnsplashImageService_Factory(t) {\n return new (t || UnsplashImageService)(i0.ɵɵinject(UnsplashApiService));\n };\n UnsplashImageService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: UnsplashImageService,\n factory: UnsplashImageService.ɵfac,\n providedIn: 'root'\n });\n return UnsplashImageService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet ChatBotService = /*#__PURE__*/(() => {\n class ChatBotService {\n constructor(chatBotApiService) {\n this.chatBotApiService = chatBotApiService;\n }\n startChat() {\n return this.chatBotApiService.startChat({});\n }\n sendMessage(messageContent, threadId, actions) {\n const messageRequest = new SendMessageRequest({\n messageContent,\n threadId,\n actions\n });\n return this.chatBotApiService.sendMessage(messageRequest);\n }\n endChat(threadId) {\n const endChatRequest = new SendMessageRequest({\n threadId\n });\n return this.chatBotApiService.endChat(endChatRequest);\n }\n }\n ChatBotService.ɵfac = function ChatBotService_Factory(t) {\n return new (t || ChatBotService)(i0.ɵɵinject(ChatBotApiService));\n };\n ChatBotService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ChatBotService,\n factory: ChatBotService.ɵfac,\n providedIn: 'root'\n });\n return ChatBotService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Access, Action, ActionType, AiInstructionService, AiInstructions, Ancestry, CallToAction, CallToActionCallToActionType, ChatBotService, Collection, ContentGenerationService, CreateCommonAiInstructionsRequest, CreateCommonAiInstructionsResponse, CreateImageRequest, CreateImageResponse, CreateMultilocationPostRequest, CreateMultilocationPostResponse, CreatePostTemplateRequest, CreatePostTemplateResponse, DateRangeFilter, DeleteHashtagsRequest, DeleteMultilocationPostRequest, DeletePostRequest, DeletePostTemplateRequest, DeleteSocialPostRequest, EditMultilocationPostRequest, EditMultilocationPostResponse, EndChatRequest, Error, Event, FacebookPostStats, FieldMask, GenerateCSVForPerformanceStatsRequest, GenerateCSVForPerformanceStatsResponse, GeneratePostsRequest, GeneratePostsResponse, GeneratePostsResponsePost, GetCommonAiInstructionsRequest, GetCommonAiInstructionsResponse, GetGeneratedCSVForPerformanceStatsRequest, GetGeneratedCSVForPerformanceStatsResponse, GetMultiSocialPostStatsRequest, GetMultiSocialPostStatsResponse, GetMultiSocialPostsRequest, GetMultiSocialPostsResponse, GetMultilocationPostRequest, GetMultilocationPostResponse, GetPostTemplateRequest, GetPostTemplateResponse, GetScheduledPostCountRequest, GetScheduledPostCountResponse, GetTenorAnonymousIdRequest, GetTenorAnonymousIdResponse, HashTagsService, Hashtag, Image, ImageBlob, ImageCreated, ImageUrl, LinkV2, Links, ListMultilocationPostsForBrandRequest, ListMultilocationPostsForBrandResponse, ListPixabayImagesRequest, ListPixabayImagesResponse, ListPostTemplatesRequest, ListPostTemplatesResponse, ListSocialPostsRequest, ListSocialPostsResponse, ListTenorGifsRequest, ListTenorGifsResponse, ListUnsplashImagesRequest, ListUnsplashImagesResponse, Location, Media, MediaEntry, MediaType, MediaUploadRequest, MediaUploadResponse, MessageLength, MetaData, MetadataV2, MultilocationPost, MultilocationPostApiService, MultilocationPostError, MultilocationPostsService, PartnerListScheduledPostsResponse, PartnerListScheduledSocialPostsRequest, PartnerListScheduledSocialPostsRequestFilters, Photo, PixabayImage, PixabayImageService, PostAction, PostActionV2, PostContentV2, PostCustomization, PostCustomizationV2, PostData, PostEvent, PostEventV2, PostMediaV2, PostPerformanceApiService, PostPerformanceService, PostStatusV2, PostTemplate, PostTemplatesService, PostType, PostTypeV2, PostingStatus, RemoveFromMultilocationPostRequest, RemoveReason, ReplaceHashtagsRequest, RepostSocialPostRequest, SSIDPostType, SchedulePostRequest, SchedulePostResponse, SchedulePostStatus, ScheduleToAllPagesRequest, ScheduleToAllPagesResponse, SearchHashtagRequest, SearchHashtagResponse, SendMessageRequest, SendMessageResponse, Social, SocialPost, SocialPostData, SocialPostDeletionStatus, SocialPostOutput, SocialPostRequest, SocialPostResponse, SocialPostService, SocialPostStats, SocialPostV2, SocialPostsService, SocialPostsV2Service, Source, StartChatRequest, StartChatResponse, SubAncestry, SuggestMessageRequest, SuggestMessageResponse, Tags, TemplateType, TenorGif, TenorGifMediaMapEntry, TenorGifsService, TenorMediaObject, TikTokCustomization, TikTokCustomizationV2, TwitterPostStats, UnsplashImageService, UpdateCommonAiInstructionsRequest, UpdateCommonAiInstructionsResponse, UpdatePostTemplateRequest, UpdateSocialPostRequest, UpdateSocialPostResponse, UploadToStorageRequest, UploadToStorageResponse, Urls, User, UserLink, YoutubeCustomization, YoutubeCustomizationPrivacyStatus, YoutubeCustomizationV2, YoutubeCustomizationV2PrivacyStatusV2 };\n","import { Inject, Injectable } from '@angular/core';\nimport { CreateImageRequestInterface, CreateImageResponse, SocialPostsV2Service } from '@vendasta/social-posts';\nimport { from, map, Observable, switchMap } from 'rxjs';\n\n@Injectable()\nexport class ImageGenerationService {\n constructor(\n @Inject(SocialPostsV2Service)\n private readonly imageCreationService: SocialPostsV2Service,\n ) {}\n\n createSuggestedImages(\n prompt: string,\n size?: string,\n imageAmount?: number,\n businessId?: string,\n ): Observable {\n //Dalle 3 request return only one image and it's needed to set imageAmount to 1\n const imageRequest: CreateImageRequestInterface = {\n prompt: prompt,\n size: size,\n imageAmount: imageAmount,\n businessId: businessId || '',\n model: 'dall-e-3',\n };\n return this.imageCreationService.createImage(imageRequest);\n }\n\n getImageAsFile(url: string): Observable {\n let fileName = '';\n return this.imageCreationService.getImageByUrl(url).pipe(\n map((resp) => {\n fileName = `${resp.blob.slice(0, 30)}.png`;\n return `data:image/png;base64,${resp.blob}`;\n }),\n switchMap((file64) => {\n return this.toBlob(file64);\n }),\n map((blobResponse) => {\n const d = new Date();\n return new File([blobResponse], fileName, { type: blobResponse.type, lastModified: d.valueOf() });\n }),\n );\n }\n\n toBlob(file: string): Observable {\n return from(fetch(file).then((res) => res.blob()));\n }\n\n suggestImagesWithUrls(\n prompt: string,\n size?: string,\n imageAmount?: number,\n businessId?: string,\n ): Observable {\n return this.createSuggestedImages(prompt, size, imageAmount, businessId).pipe(\n map((resp) => {\n return resp.generatedImages.map((imgs) => {\n return imgs.url;\n });\n }),\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, ViewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyButtonLoadingIndicatorModule } from '@vendasta/galaxy/button-loading-indicator';\nimport { GalaxyEmptyStateModule } from '@vendasta/galaxy/empty-state';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { ProductAnalyticsService } from '@vendasta/product-analytics';\nimport { AsyncUiModule, VaBadgeModule, VaStencilsModule } from '@vendasta/uikit';\nimport { BehaviorSubject, Observable, catchError, filter, map, scan, share, take, tap } from 'rxjs';\nimport { ContentGenerationI18nModule } from '../../assets/i18n/content-generation-i18n.module';\nimport { ImageGenerationService } from '../image-generation.service';\n\n@Component({\n standalone: true,\n providers: [ImageGenerationService],\n imports: [\n CommonModule,\n MatCardModule,\n MatIconModule,\n MatListModule,\n MatDividerModule,\n MatButtonModule,\n MatTooltipModule,\n MatMenuModule,\n VaStencilsModule,\n GalaxyEmptyStateModule,\n TranslateModule,\n AsyncUiModule,\n VaBadgeModule,\n MatDialogModule,\n FormsModule,\n GalaxyFormFieldModule,\n GalaxyButtonLoadingIndicatorModule,\n MatInputModule,\n ContentGenerationI18nModule,\n MatRadioModule,\n ],\n templateUrl: './image-generation-dialog.component.html',\n styleUrls: ['./image-generation-dialog.component.scss'],\n})\nexport class ImageGenerationDialogComponent {\n private loadingImages$$: BehaviorSubject = new BehaviorSubject(false);\n private loadingSelectedImage$$: BehaviorSubject = new BehaviorSubject(false);\n loadingImages$: Observable = this.loadingImages$$.asObservable();\n loadingSelectedImage$: Observable = this.loadingSelectedImage$$.asObservable();\n private generatedImage$$: BehaviorSubject = new BehaviorSubject('');\n generatedImages$ = this.generatedImage$$.asObservable().pipe(\n share(),\n filter((a) => !!a),\n scan((acc, curr) => [...acc, curr], [] as string[]),\n map((arr) => arr.slice(-3)),\n );\n promptText = '';\n\n selectedImage = '';\n selectedIndex = -1;\n\n @ViewChild('promptInput', { read: MatInputModule, static: true }) promptInput: MatInputModule | undefined;\n\n constructor(\n public dialogRef: MatDialogRef,\n private posthogService: ProductAnalyticsService,\n private snackbarService: SnackbarService,\n private readonly imageGenerationService: ImageGenerationService,\n ) {}\n\n suggestImages(prompt: string): void {\n this.posthogService.trackEvent('user-clicked-suggest-image', 'suggest-image', 'click', 0, {\n prompt: prompt,\n });\n this.loadingImages$$.next(true);\n\n this.imageGenerationService\n .suggestImagesWithUrls(prompt, '1024x1024', 1)\n .pipe(\n map((results) => results[0]),\n catchError((err) => {\n this.snackbarService.openErrorSnack('IMAGE_GENERATION.ERROR_MESSAGE');\n this.loadingImages$$.next(false);\n throw err;\n }),\n tap(() => this.loadingImages$$.next(false)),\n )\n .subscribe((img) => this.generatedImage$$.next(img));\n }\n\n selectImage(img: string, index: number): void {\n this.selectedIndex = index;\n this.selectedImage = img;\n }\n\n addPhoto(): void {\n if (this.loadingImages$$.getValue()) {\n return;\n }\n this.suggestImages(this.promptText);\n }\n\n useSelectedImage(img: string): void {\n this.loadingSelectedImage$$.next(true);\n this.posthogService.trackEvent('user-used-suggested-image', 'suggest-image', 'click', 0, {\n prompt: prompt,\n });\n const selectedFile = this.imageGenerationService.getImageAsFile(img);\n selectedFile\n .pipe(\n take(1),\n map((img) => {\n this.dialogRef.close(img);\n this.loadingSelectedImage$$.next(false);\n }),\n )\n .subscribe();\n }\n closeDialog(): void {\n this.dialogRef.close();\n }\n}\n","

\n {{ 'IMAGE_GENERATION.TITLE' | translate }}\n

\n\n \n \n {{ 'IMAGE_GENERATION.INSTRUCTIONS' | translate }}\n \n \n \n
\n \n \n {{ 'EMAIL_BUILDER.GENERATE_CONTENT' | translate }}\n \n \n
\n
\n \n \n \n \n
\n
\n\n \n \n \n {{ 'EMAIL_BUILDER.USE_IMAGE' | translate }}\n \n \n\n","import {\n FileInfo,\n GalaxyBaseUploaderServiceInterface,\n GalaxyImageUploaderService,\n UploadResponse,\n} from '@vendasta/galaxy/uploader';\nimport { Inject, Injectable, InjectionToken, Optional } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Environment, EnvironmentService } from '@galaxy/core';\nimport { map, switchMap, take } from 'rxjs/operators';\nimport { ImageGenerationDialogComponent } from '@galaxy/content-generation';\nimport { v4 as uuidv4 } from 'uuid';\nimport { MatDialog } from '@angular/material/dialog';\nimport { SENDER_INJECTION_TOKEN } from '../shared';\nimport { Sender } from '@vendasta/email';\n\nexport const EMAILBUILDER_UPLOADER_SERVICE_TOKEN = new InjectionToken(\n '[EmailBuilderUploaderService]: token for emailbuilder uploader',\n);\n\n@Injectable()\nexport class ImageUploadService extends GalaxyImageUploaderService {\n constructor(\n http: HttpClient,\n private readonly env: EnvironmentService,\n @Optional() @Inject(SENDER_INJECTION_TOKEN) private readonly sender$: Observable,\n @Optional() @Inject(EMAILBUILDER_UPLOADER_SERVICE_TOKEN) private readonly uploaderService: ImageUploadService,\n private dialog: MatDialog,\n ) {\n super(http);\n if (!uploaderService && !sender$) {\n throw new Error(\n 'Invalid dependencies. Either SENDER_INJECTION_TOKEN or EMAILBUILDER_UPLOADER_SERVICE_TOKEN must be provided',\n );\n }\n }\n\n buildRequest(fileInfo: FileInfo): Observable {\n if (this.uploaderService) {\n return this.uploaderService.buildRequest(fileInfo);\n }\n this.uploadUrl = 'https://email-demo.apigateway.co/content/image/upload';\n if (this.env.getEnvironment() === Environment.PROD) {\n this.uploadUrl = 'https://email-prod.apigateway.co/content/image/upload';\n }\n return this.sender$.pipe(\n map((sender: Sender) => new HttpParams().set('senderType', sender.type).set('senderId', sender.id)),\n switchMap((params) => super.buildRequest(fileInfo, params)),\n take(1),\n );\n }\n\n async generateAndUploadImages(): Promise> {\n const dialogRef = this.dialog.open(ImageGenerationDialogComponent, {\n width: '830px',\n height: 'auto',\n });\n\n return await dialogRef\n .afterClosed()\n .toPromise()\n .then((file) => {\n if (file) {\n const imageToUpload = {\n context: { uuid: uuidv4() },\n name: file.name,\n file: file,\n } as FileInfo;\n\n return this.buildRequest(imageToUpload).pipe(map((resp) => resp.data.url));\n }\n });\n }\n}\n","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport {\n AfterViewInit,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { Subscription, map, take } from 'rxjs';\n\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { FileInfo, FileUploadError, FileUploadStatus } from '@vendasta/galaxy/uploader';\n\nimport { Validator } from '@vendasta/shared';\nimport { EmailPreviewRefreshService } from '../../services/email-preview-refresh.service';\nimport { ImageUploadService } from '../../services/image-upload.service';\nimport { jsonCopy } from '../../shared';\n\n// Interface\nexport interface ImageAndTextBlock {\n layout?: 'largeHorizontal' | 'mediumHorizontal' | 'smallHorizontal' | 'LargeVertical';\n paddingBetween?: number;\n items?: ImageAndTextItem[];\n}\n\nexport interface ImageAndTextItem {\n imageUrl?: string;\n heading?: string;\n subheading?: string;\n body?: string;\n linkUrl?: string;\n linkText?: string;\n collapsed?: boolean;\n}\n\n// Default blank value\nexport const blankImageAndTextBlock: ImageAndTextBlock = {\n layout: 'LargeVertical',\n paddingBetween: null,\n items: [\n {\n imageUrl: null,\n heading: null,\n subheading: null,\n body: null,\n linkUrl: null,\n linkText: null,\n collapsed: false,\n },\n ],\n};\n\nexport const blankImageAndTextItem: ImageAndTextItem = {\n imageUrl: null,\n heading: null,\n subheading: null,\n body: null,\n linkUrl: null,\n linkText: null,\n collapsed: false,\n};\n\n@Component({\n selector: 'email-image-and-text-block',\n templateUrl: './image-and-text-block.component.html',\n styleUrls: ['./image-and-text-block.component.scss'],\n})\nexport class ImageAndTextBlockComponent implements AfterViewInit, OnDestroy {\n @HostBinding('class') class = 'email-html-block';\n @Input() content: ImageAndTextBlock;\n @Output() isBlockValid = new EventEmitter();\n @ViewChild('blockInputs') blockInputs: NgForm;\n\n public urlMailtoOrDynamicContentRegex = Validator.URL_MAILTO_OR_DYNAMIC_CONTENT_REGEX;\n\n FileUploadStatus = FileUploadStatus;\n private readonly subscriptions: Subscription[] = [];\n\n constructor(\n private emailPreview: EmailPreviewRefreshService,\n private readonly alerts: SnackbarService,\n private imageUploadService: ImageUploadService,\n ) {}\n\n ngAfterViewInit(): void {\n this.subscriptions.push(\n this.blockInputs.statusChanges.subscribe((status) => {\n this.isBlockValid.emit(status === 'VALID');\n }),\n );\n this.subscriptions.push(\n this.blockInputs.valueChanges.subscribe(() => {\n this.emailPreview.refresh();\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n fixFieldLosingFocusWhenTyping(index: any, item: any): any {\n // https://stackoverflow.com/a/60945501/7338673\n return index;\n }\n\n drop(event: CdkDragDrop): void {\n moveItemInArray(this.content.items, event.previousIndex, event.currentIndex);\n this.emailPreview.refresh();\n }\n\n addItem(): void {\n this.content.items.push(jsonCopy(blankImageAndTextItem));\n this.emailPreview.refresh();\n }\n\n removeItem(index: number): void {\n this.content.items.splice(index, 1);\n this.emailPreview.refresh();\n }\n\n addNewAbove(index: number): void {\n if (index > -1) {\n this.content.items.splice(index, 0, jsonCopy(blankImageAndTextItem));\n } else {\n this.content.items.push(jsonCopy(blankImageAndTextItem));\n }\n this.emailPreview.refresh();\n }\n\n duplicateItem(index: number): void {\n if (index > -1) {\n this.content.items.splice(index, 0, jsonCopy(this.content.items[index]));\n }\n this.emailPreview.refresh();\n }\n\n moveBlock(index, delta): void {\n const newIndex = index + delta;\n\n //Already at the top or bottom.\n if (newIndex < 0 || newIndex === this.content.items.length) return;\n\n moveItemInArray(this.content.items, index, newIndex);\n this.emailPreview.refresh();\n }\n\n moveBlockToTop(index): void {\n moveItemInArray(this.content.items, index, 0);\n this.emailPreview.refresh();\n }\n\n moveBlockToBottom(index): void {\n moveItemInArray(this.content.items, index, this.content.items.length);\n this.emailPreview.refresh();\n }\n\n setImage(file: FileInfo, arrayId: number): void {\n this.content.items[arrayId].imageUrl = file.url;\n this.emailPreview.refresh();\n }\n\n clearImage(arrayId: number): void {\n this.content.items[arrayId].imageUrl = null;\n this.emailPreview.refresh();\n }\n\n alertFileErrored($event: FileUploadError): void {\n console.error('Image upload failed', $event);\n this.alerts.openErrorSnack('IMAGE_UPLOAD_FAILURE');\n }\n\n async openSuggestImageDialog(arrayId: number): Promise {\n await this.imageUploadService.generateAndUploadImages().then((selectedImage) => {\n if (selectedImage) {\n selectedImage\n .pipe(\n take(1),\n map((img) => {\n this.content.items[arrayId].imageUrl = img;\n this.emailPreview.refresh();\n }),\n )\n .subscribe();\n }\n });\n }\n}\n","
\n \n {{ 'EMAIL_BUILDER.IMAGE_AND_TEXT_BLOCK.LAYOUT.TEXT' | translate }}\n \n \n\n
\n \n
\n {{ 'EMAIL_BUILDER.IMAGE_AND_TEXT_BLOCK.ADD_NEW_BUTTON_1' | translate }}\n {{ content.layout === 'LargeVertical' ? 'column' : 'row' }}\n {{ 'EMAIL_BUILDER.IMAGE_AND_TEXT_BLOCK.ADD_NEW_BUTTON_2' | translate }}\n
\n arrow_downward\n
\n
\n
\n\n \n \n \n \n\n \n\n \n \n \n\n \n \n \n\n \n\n \n\n \n \n\n \n \n\n \n\n \n\n \n \n\n
\n \n drag_indicator\n
\n \n
\n {{ item.heading }}\n {{ item.subheading }}\n {{ item.body }}\n \n
\n\n \n \n \n \n unfold_less\n \n \n \n \n unfold_more\n \n \n \n\n \n \n clear\n \n
\n\n
\n\n \n
\n \n \n {{ 'EMAIL_BUILDER.IMAGE_AND_TEXT_BLOCK.IMAGE' | translate }}\n
\n
\n
\n \n View\n \n \n
\n
\n
\n
\n\n \n \n {{ 'EMAIL_BUILDER.IMAGE_AND_TEXT_BLOCK.IMAGE' | translate }}\n
\n \n \n \n \n
\n
\n
\n\n \n {{ 'EMAIL_BUILDER.IMAGE_AND_TEXT_BLOCK.HEADING' | translate }}\n \n \n {{ 'EMAIL_BUILDER.VALIDATION_ERRORS.DYNAMIC_CONTENT' | translate }}\n \n \n\n \n {{ 'EMAIL_BUILDER.IMAGE_AND_TEXT_BLOCK.SUBHEADING' | translate }}\n \n \n {{ 'EMAIL_BUILDER.VALIDATION_ERRORS.DYNAMIC_CONTENT' | translate }}\n \n \n\n \n {{ 'EMAIL_BUILDER.IMAGE_AND_TEXT_BLOCK.BODY_TEXT' | translate }}\n \n \n {{ 'EMAIL_BUILDER.VALIDATION_ERRORS.DYNAMIC_CONTENT' | translate }}\n \n \n\n \n {{ 'EMAIL_BUILDER.IMAGE_AND_TEXT_BLOCK.LINK' | translate }}\n \n \n {{ 'EMAIL_BUILDER.VALIDATION_ERRORS.LINK' | translate }}\n \n \n\n \n \n {{ 'EMAIL_BUILDER.IMAGE_AND_TEXT_BLOCK.LINK_TEXT' | translate }}\n \n \n {{ 'EMAIL_BUILDER.VALIDATION_ERRORS.DYNAMIC_CONTENT' | translate }}\n \n \n \n
\n
\n \n \n
\n \n\n
\n \n
\n
\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { Subscription, map, take } from 'rxjs';\n\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { FileInfo, FileUploadError, FileUploadStatus } from '@vendasta/galaxy/uploader';\n\nimport { Validator } from '@vendasta/shared';\nimport { EmailPreviewRefreshService } from '../../services/email-preview-refresh.service';\nimport { ImageUploadService } from '../../services/image-upload.service';\n\n// Interface\nexport interface ImageBlock {\n url?: string;\n altText?: string;\n imageStyle: 'fullWidth' | 'center' | 'left' | 'right';\n maxWidth?: number;\n link?: string;\n}\n\n// Default blank value\nexport const blankImageBlock: ImageBlock = {\n url: null,\n altText: null,\n imageStyle: 'fullWidth',\n maxWidth: null,\n link: null,\n};\n\n@Component({\n selector: 'email-image-block',\n templateUrl: './image-block.component.html',\n styleUrls: ['./image-block.component.scss'],\n})\nexport class ImageBlockComponent implements AfterViewInit, OnDestroy {\n @HostBinding('class') class = 'email-image-block';\n @Input() content: ImageBlock;\n @Output() isBlockValid = new EventEmitter();\n\n public urlMailtoOrDynamicContentRegex = Validator.URL_MAILTO_OR_DYNAMIC_CONTENT_REGEX;\n\n @ViewChild('blockInputs') blockInputs: NgForm;\n\n FileUploadStatus = FileUploadStatus;\n private readonly subscriptions: Subscription[] = [];\n\n constructor(\n public emailPreview: EmailPreviewRefreshService,\n private readonly alerts: SnackbarService,\n private imageUploadService: ImageUploadService,\n ) {}\n\n ngAfterViewInit(): void {\n this.subscriptions.push(\n this.blockInputs.statusChanges.subscribe((status) => {\n this.isBlockValid.emit(status === 'VALID');\n }),\n );\n this.subscriptions.push(\n this.blockInputs.valueChanges.subscribe(() => {\n this.emailPreview.refresh();\n }),\n );\n }\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n\n clearImage(): void {\n this.content.url = null;\n this.emailPreview.refresh();\n }\n\n setImage(file: FileInfo): void {\n this.content.url = file.url;\n this.emailPreview.refresh();\n }\n\n alertFileErrored($event: FileUploadError): void {\n console.error('Image upload failed', $event);\n this.alerts.openErrorSnack('IMAGE_UPLOAD_FAILURE');\n }\n\n async openSuggestImageDialog(): Promise {\n await this.imageUploadService.generateAndUploadImages().then((selectedImage) => {\n if (selectedImage) {\n selectedImage\n .pipe(\n take(1),\n map((img) => {\n this.content.url = img;\n this.emailPreview.refresh();\n }),\n )\n .subscribe();\n }\n });\n }\n}\n","
\n \n {{ 'EMAIL_BUILDER.IMAGE_BLOCK.IMAGE' | translate }}\n \n
\n
\n \n
\n
\n \n \n {{ 'EMAIL_BUILDER.IMAGE_BLOCK.VIEW' | translate }}\n \n \n \n
\n
\n
\n
\n\n \n
\n {{ 'EMAIL_BUILDER.IMAGE_BLOCK.IMAGE' | translate }}\n \n \n \n
\n \n \n \n
\n\n
\n \n {{ 'EMAIL_BUILDER.IMAGE_BLOCK.IMAGE_STYLE.TEXT' | translate }}\n \n \n\n \n \n {{ 'EMAIL_BUILDER.IMAGE_BLOCK.WIDTH' | translate }}\n \n \n \n
\n\n \n {{ 'EMAIL_BUILDER.IMAGE_BLOCK.LINK' | translate }}\n \n \n \n {{ 'EMAIL_BUILDER.VALIDATION_ERRORS.LINK' | translate }}\n \n \n
\n","import { AfterViewInit, Component, HostBinding, Input, OnDestroy, ViewChild } from '@angular/core';\nimport { FormsModule, NgForm } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { Subscription } from 'rxjs';\n\nimport { EmailPreviewRefreshService } from '../../services/email-preview-refresh.service';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { CommonModule } from '@angular/common';\n\ninterface ReviewSource {\n name: string;\n sourceId: string;\n}\n\nconst SuggestedReviewSources: Map = new Map([\n [\n 'google',\n {\n name: 'EMAIL_BUILDER.REVIEW_REQUEST_LINKS_BLOCK.SOURCES.GOOGLE',\n sourceId: '10010',\n },\n ],\n [\n 'facebook',\n {\n name: 'EMAIL_BUILDER.REVIEW_REQUEST_LINKS_BLOCK.SOURCES.FACEBOOK',\n sourceId: '10050',\n },\n ],\n]);\n\n// Interface\nexport interface ReviewRequestLinksBlock {\n sources: string[];\n rawHtml: string;\n}\n\nconst defaultSources = [SuggestedReviewSources.get('google').sourceId, SuggestedReviewSources.get('facebook').sourceId];\n\n// Default blank value\nexport const blankReviewRequestLinksBlock: ReviewRequestLinksBlock = {\n sources: defaultSources,\n rawHtml: getRawHtml(defaultSources),\n};\n\nfunction getRawHtml(sources: string[]): string {\n const htmlContent = sources\n .map(\n (source) =>\n `{% if reviewRequestCTA['` +\n source +\n `'] %}
{{ reviewRequestCTA['` +\n source +\n `'] }}
{% endif %}`,\n )\n .join();\n return `
\n ${htmlContent}\n
`;\n}\n\n@Component({\n selector: 'email-review-request-links-block',\n templateUrl: './review-request-links-block.component.html',\n styleUrls: ['./review-request-links-block.component.scss'],\n standalone: true,\n imports: [MatCheckboxModule, TranslateModule, GalaxyFormFieldModule, FormsModule, CommonModule],\n})\nexport class ReviewRequestLinksBlockComponent implements AfterViewInit, OnDestroy {\n @HostBinding('class') class = 'email-review-request-links-block';\n @Input() content: ReviewRequestLinksBlock;\n @ViewChild('blockInputs') blockInputs: NgForm;\n\n reviewSources: ReviewSource[] = [...SuggestedReviewSources.values()];\n\n private readonly subscriptions: Subscription[] = [];\n\n constructor(private emailPreview: EmailPreviewRefreshService) {}\n\n ngAfterViewInit(): void {\n this.subscriptions.push(\n this.blockInputs.form.valueChanges.subscribe(() => {\n this.emailPreview.refresh();\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n\n isSourceSelected(sourceId: string): boolean {\n return !!this.content.sources.find((x) => x === sourceId);\n }\n\n valueChange(sourceId: string, $event): void {\n if ($event.checked) {\n this.content.sources.push(sourceId);\n } else {\n this.content.sources = this.content.sources.filter((x) => x !== sourceId);\n }\n this.content.rawHtml = getRawHtml(this.content.sources);\n this.emailPreview.refresh();\n }\n}\n","
\n \n \n \n {{ source.name | translate }}\n \n \n \n
\n","import { Component, Inject, InjectionToken, OnDestroy, Optional, ViewChild } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { MatInputModule } from '@angular/material/input';\nimport { ContentGenerationService } from '@vendasta/email-builder';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { ProductAnalyticsService } from '@vendasta/product-analytics';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nexport interface PromptBuilder {\n build(s: string): string;\n}\n\nexport const PROMPT_BUILDER_INJECTION_TOKEN = new InjectionToken(\n 'com.vendasta.email_builder.suggest_content.prompt',\n);\n\nexport class DefaultPromptBuilder implements PromptBuilder {\n build(prompt: string): string {\n return `Write a paragraph for an email based on the following prompt. Prompt: ${prompt}`;\n }\n}\n\n@Component({\n selector: 'email-suggest-content-dialog',\n templateUrl: './suggest-content-dialog.component.html',\n styleUrls: ['./suggest-content-dialog.component.scss'],\n})\nexport class SuggestContentComponent implements OnDestroy {\n private loading$$: BehaviorSubject = new BehaviorSubject(false);\n loading$: Observable = this.loading$$.asObservable();\n\n promptText = '';\n contentText = '';\n subscriptions = [];\n\n @ViewChild('contentInput', { read: MatInputModule, static: true }) contentInput: MatInputModule;\n @ViewChild('promptInput', { read: MatInputModule, static: true }) promptInput: MatInputModule;\n\n constructor(\n @Inject(ContentGenerationService) private readonly contentGenerationService: ContentGenerationService,\n public dialogRef: MatDialogRef,\n private posthogService: ProductAnalyticsService,\n @Inject(PROMPT_BUILDER_INJECTION_TOKEN) @Optional() private readonly promptBuilder: PromptBuilder,\n private readonly snackbarService: SnackbarService,\n ) {}\n\n suggestMessage(prompt: string): void {\n this.posthogService.trackEvent('user-clicked-suggest-message', 'suggest-content', 'click', null, {\n prompt: prompt,\n });\n const promptBuilder = this.promptBuilder || new DefaultPromptBuilder();\n const promptTemplate = promptBuilder.build(prompt);\n this.loading$$.next(true);\n this.subscriptions.push(\n this.contentGenerationService.suggestContent(promptTemplate).subscribe({\n next: (suggestedContent) => {\n this.loading$$.next(false);\n this.contentText = suggestedContent;\n },\n error: () => {\n this.loading$$.next(false);\n this.snackbarService.openErrorSnack('EMAIL_BUILDER.CONTENT_SUGGESTION.ERROR_MESSAGE');\n },\n }),\n );\n }\n\n useSuggestedMessage(content: string): void {\n this.posthogService.trackEvent('user-used-suggested-message', 'suggest-content', 'click', null, {\n suggestedContent: content,\n });\n this.dialogRef.close(this.formatContent(content));\n }\n\n formatContent(content: string): string {\n return content.replace(/\\r\\n|\\r|\\n/g, '
');\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n\n closeDialog(): void {\n this.dialogRef.close(null);\n }\n}\n","

\n {{ 'EMAIL_BUILDER.CONTENT_SUGGESTION.PROMPT' | translate }}\n

\n\n \n \n {{ 'EMAIL_BUILDER.CONTENT_SUGGESTION.INSTRUCTIONS' | translate }}\n \n \n \n
\n \n \n {{ 'EMAIL_BUILDER.CONTENT_SUGGESTION.GENERATE_CONTENT' | translate }}\n \n \n
\n \n \n {{ 'EMAIL_BUILDER.CONTENT_SUGGESTION.GENERATED_CONTENT' | translate }}\n \n \n \n
\n\n \n \n {{ 'EMAIL_BUILDER.CONTENT_SUGGESTION.USE_CONTENT' | translate }}\n \n\n","import {\n Component,\n EventEmitter,\n HostBinding,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport { GalaxyAiIconService } from '@vendasta/galaxy/ai-icon';\nimport { ProductAnalyticsService } from '@vendasta/product-analytics';\nimport { Observable, Subscription, firstValueFrom } from 'rxjs';\nimport { RichTextEditorComponent } from '../../components/rich-text-editor/rich-text-editor.component';\nimport { SuggestContentComponent } from '../../components/suggest-content-dialog/suggest-content-dialog.component';\nimport { EmailPreviewRefreshService } from '../../services/email-preview-refresh.service';\nimport { AfterBlockDragService } from './after-block-drag.service';\n\n// Interface\nexport interface RichTextBlock {\n rawHtml?: string;\n}\n\n// Default blank value\nexport const blankRichTextBlock: RichTextBlock = {\n rawHtml: '', // can't use null or the editor breaks\n};\n\n@Component({\n selector: 'email-rich-text-block',\n templateUrl: './rich-text-block.component.html',\n styleUrls: ['./rich-text-block.component.scss'],\n})\nexport class RichTextBlockComponent implements OnInit, OnDestroy {\n @HostBinding('class') class = 'email-rich-text-block';\n @ViewChild('richTextEditor') richTextEditor: RichTextEditorComponent;\n\n @Input() content: RichTextBlock;\n @Input() contentGenerationEnabled: boolean;\n\n @Output() isBlockValid = new EventEmitter();\n\n isValid$: Observable = this.isBlockValid.asObservable();\n\n _rawHTML: string;\n\n private readonly subscriptions: Subscription[] = [];\n\n constructor(\n private emailPreview: EmailPreviewRefreshService,\n private afterBlockDrag: AfterBlockDragService,\n private zone: NgZone,\n private dialog: MatDialog,\n private posthogService: ProductAnalyticsService,\n private _: GalaxyAiIconService,\n private viewContainerRef: ViewContainerRef,\n ) {}\n\n ngOnInit(): void {\n this._rawHTML = this.content.rawHtml;\n\n // Update rich text editor after drag happens\n // otherwise content disappears\n this.subscriptions.push(\n this.afterBlockDrag.dragHappenedEmitter$.subscribe(() => {\n this.whileDragging();\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n\n updateText(): void {\n this.zone.run(() => this.emailPreview.refresh());\n }\n\n updateStatus(event: ValidationErrors | null): void {\n this.isBlockValid.emit(!event);\n }\n\n public whileDragging(): void {\n this.richTextEditor?.reloadEditor();\n }\n\n async openSuggestAIContentDialog(): Promise {\n this.posthogService.trackEvent('user-clicked-rich-text-generate-content', 'suggest-content', 'click', null);\n const dialogRef = this.dialog.open(SuggestContentComponent, {\n viewContainerRef: this.viewContainerRef,\n width: '600px',\n height: 'auto',\n });\n const content = await firstValueFrom(dialogRef.afterClosed());\n if (content) {\n this.richTextEditor.insertAtCursor(content);\n }\n }\n}\n","
\n
\n
\n {{ 'EMAIL_BUILDER.RICH_TEXT_BLOCK.RICH_TEXT' | translate }}\n
\n
\n \n \n \n \n
\n
\n\n \n\n \n {{ 'EMAIL_BUILDER.VALIDATION_ERRORS.DYNAMIC_CONTENT' | translate }}\n \n\n","import {\n Component,\n HostBinding,\n Input,\n AfterViewInit,\n ViewChild,\n OnDestroy,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { EmailPreviewRefreshService } from '../../services/email-preview-refresh.service';\n\n// Interface\nexport interface SimpleTableBlock {\n tableData: SimpleTableRow[];\n}\n\nexport interface SimpleTableRow {\n label?: string;\n value?: string;\n}\n\n// Default blank value\nexport const blankSimpleTableBlock: SimpleTableBlock = {\n tableData: [{ label: '', value: '' }],\n};\n\n@Component({\n selector: 'email-simple-table-block',\n templateUrl: './simple-table-block.component.html',\n styleUrls: ['./simple-table-block.component.scss'],\n})\nexport class SimpleTableBlockComponent implements AfterViewInit, OnDestroy {\n @HostBinding('class') class = 'email-simple-table-block';\n @Input() content: SimpleTableBlock;\n @ViewChild('blockInputs') blockInputs: NgForm;\n\n @Output() isBlockValid = new EventEmitter();\n\n private readonly subscriptions: Subscription[] = [];\n\n constructor(private emailPreview: EmailPreviewRefreshService) {}\n\n ngAfterViewInit(): void {\n this.subscriptions.push(\n this.blockInputs.form.valueChanges.subscribe(() => {\n this.emailPreview.refresh();\n }),\n this.blockInputs.statusChanges.subscribe((status) => {\n this.isBlockValid.emit(status === 'VALID');\n }),\n );\n }\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n fixFieldLosingFocusWhenTyping(index: any, item: any): any {\n // https://stackoverflow.com/a/60945501/7338673\n return index;\n }\n\n addRow(): void {\n this.content.tableData.push({ label: '', value: '' });\n }\n removeRow(index: number): void {\n this.content.tableData.splice(index, 1);\n if (this.content.tableData.length === 0) {\n this.addRow();\n }\n }\n}\n","
\n \n {{ 'EMAIL_BUILDER.SIMPLE_TABLE_BLOCK.TABLE_CONTENT' | translate }}\n\n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n\n \n close\n \n
\n \n {{ 'EMAIL_BUILDER.VALIDATION_ERRORS.DYNAMIC_CONTENT' | translate }}\n \n
\n
\n
\n\n\n","import { AfterViewInit, Component, HostBinding, Input, OnDestroy, ViewChild } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { EmailPreviewRefreshService } from '../../services/email-preview-refresh.service';\n\n// Interface\nexport interface SpacerBlock {\n spacerHeight?: number;\n}\n\n// Default blank value\nexport const blankSpacerBlock: SpacerBlock = {\n spacerHeight: null,\n};\n\n@Component({\n selector: 'email-spacer-block',\n templateUrl: './spacer-block.component.html',\n styleUrls: ['./spacer-block.component.scss'],\n})\nexport class SpacerBlockComponent implements AfterViewInit, OnDestroy {\n @HostBinding('class') class = 'email-spacer-block';\n @Input() content: SpacerBlock;\n @ViewChild('blockInputs') blockInputs: NgForm;\n\n private readonly subscriptions: Subscription[] = [];\n\n constructor(private emailPreview: EmailPreviewRefreshService) {}\n\n ngAfterViewInit(): void {\n this.subscriptions.push(\n this.blockInputs.form.valueChanges.subscribe(() => {\n this.emailPreview.refresh();\n }),\n );\n }\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n}\n","
\n \n {{ 'EMAIL_BUILDER.SPACER_BLOCK.HEIGHT' | translate }}\n \n \n
\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { FeatureFlagService } from '@galaxy/partner';\nimport { map, shareReplay, switchMap } from 'rxjs/operators';\nimport { SENDER_INJECTION_TOKEN } from '../shared';\nimport { Sender, SenderType } from '@vendasta/email';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FeatureFlagEnabledService {\n constructor(\n @Inject(SENDER_INJECTION_TOKEN) @Optional() private readonly sender$: Observable,\n private readonly featureFlagService: FeatureFlagService,\n ) {}\n\n public isEnabled(featureFlagIds: string): Observable {\n let flagEnabled$ = of(false);\n if (this.sender$) {\n flagEnabled$ = this.sender$.pipe(\n switchMap((sender) => {\n if (sender.type === SenderType.SENDER_TYPE_PARTNER) {\n return this.featureFlagService.batchGetStatus(sender.id, '', [featureFlagIds]);\n }\n return of({});\n }),\n map((featureFlagStatus) => featureFlagStatus[featureFlagIds]),\n shareReplay(1),\n );\n }\n return flagEnabled$;\n }\n}\n","import { AfterViewInit, Component, HostBinding, Input, ViewChild } from '@angular/core';\nimport { NgForm } from '@angular/forms';\n\nimport { EmailPreviewRefreshService } from '../../services/email-preview-refresh.service';\n\n// Interface\nexport interface BlockPadding {\n top?: number;\n bottom?: number;\n}\n\n@Component({\n selector: 'email-block-padding',\n templateUrl: './email-block-padding.component.html',\n styleUrls: ['./email-block-padding.component.scss'],\n})\nexport class EmailBlockPaddingComponent implements AfterViewInit {\n @HostBinding('class') class = 'email-block-padding';\n @Input() padding: BlockPadding;\n @ViewChild('paddingForm') paddingForm: NgForm;\n\n constructor(private emailPreview: EmailPreviewRefreshService) {}\n\n ngAfterViewInit(): void {\n this.paddingForm.form.valueChanges.subscribe(() => {\n this.emailPreview.refresh();\n });\n }\n}\n","
\n
\n \n {{ 'EMAIL_BUILDER.BLOCK_PADDING.TOP_PADDING' | translate }}\n \n \n \n {{ 'EMAIL_BUILDER.BLOCK_PADDING.BOTTOM_PADDING' | translate }}\n \n \n
\n
\n","// Angular Imports\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport {\n Component,\n HostBinding,\n Inject,\n InjectionToken,\n Input,\n OnInit,\n Optional,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { AfterBlockDragService } from '../../blocks/rich-text-block/after-block-drag.service';\nimport { EmailPreviewRefreshService } from '../../services/email-preview-refresh.service';\n\nimport {\n blankContentListItem,\n blockType,\n ContentListItem,\n defaultBlockChoices,\n OptionalBlockTypeID,\n optionalBlockTypesMap,\n} from '../../types/contentblocks';\n\nimport { UntypedFormControl } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport { GalaxyAiIconService } from '@vendasta/galaxy/ai-icon';\nimport { ActivatableApp } from '@vendasta/marketplace-packages';\nimport { ProductAnalyticsService } from '@vendasta/product-analytics';\nimport { firstValueFrom, Observable, of } from 'rxjs';\nimport { map, startWith, switchMap, take } from 'rxjs/operators';\nimport { blankButtonBlock, ButtonBlock } from '../../blocks/button-block/button-block.component';\nimport { blankContactCardBlock } from '../../blocks/contact-card/contact-card.component';\nimport { blankDividerBlock } from '../../blocks/divider-block/divider-block.component';\nimport { blankHeadingBlock } from '../../blocks/heading-block/heading-block.component';\nimport { blankHtmlBlock } from '../../blocks/html-block/html-block.component';\nimport { blankImageAndTextBlock } from '../../blocks/image-and-text-block/image-and-text-block.component';\nimport { blankImageBlock, ImageBlock } from '../../blocks/image-block/image-block.component';\nimport { blankReviewRequestLinksBlock } from '../../blocks/review-request-links-block/review-request-links-block.component';\nimport { blankRichTextBlock, RichTextBlock } from '../../blocks/rich-text-block/rich-text-block.component';\nimport { blankSimpleTableBlock } from '../../blocks/simple-table-block/simple-table-block.component';\nimport { blankSpacerBlock } from '../../blocks/spacer-block/spacer-block.component';\nimport {\n AppListingServiceInterface,\n EMAIL_BUILDER_APP_LISTING_SERVICE_TOKEN,\n} from '../../services/app-listing-service.interface';\nimport { FeatureFlagEnabledService } from '../../services/feature-flag.service';\nimport { ImageUploadService } from '../../services/image-upload.service';\nimport { jsonCopy } from '../../shared';\nimport { SuggestContentComponent } from '../suggest-content-dialog/suggest-content-dialog.component';\n\nexport const EMAIL_BUILDER_ENABLED_RECIPES = new InjectionToken(\n 'string[]: list of recipe IDs to enable within the builder',\n);\n\ninterface RecipeListItem {\n id: string;\n source?: string;\n name: string;\n block: ContentListItem;\n contentPlaceholder?: string;\n}\n\nconst productButtonRecipe: RecipeListItem = {\n id: 'product-button',\n source: 'Marketplace',\n name: 'Product page button',\n block: {\n type: 'button',\n content: {\n buttonText: `{{ productName['PRODID'] }}`,\n link: `{{ productPreviewUrl['PRODID'] }}`,\n buttonStyle: 'solid',\n buttonColor: '#47b75d',\n showBackupLink: false,\n },\n },\n contentPlaceholder: 'PRODID',\n};\n\nconst meetingSchedulerButtonRecipe: RecipeListItem = {\n id: 'meeting-scheduler-button',\n source: 'Meeting Scheduler',\n name: 'Book a meeting button',\n block: {\n type: 'button',\n content: {\n buttonText: `Book a meeting`,\n link: `{{ meetingSchedulerUrl }}`,\n buttonStyle: 'solid',\n buttonColor: '#47b75d',\n showBackupLink: false,\n },\n },\n};\n\nconst suggestTextContentRecipe: RecipeListItem = {\n id: 'suggest-text-content',\n name: 'Text',\n block: {\n type: 'rich_text',\n content: {},\n },\n};\n\nconst suggestImageContentRecipe: RecipeListItem = {\n id: 'suggest-image-content',\n name: 'Image',\n block: {\n type: 'image',\n content: {},\n },\n};\n\nconst buttonRecipes: RecipeListItem[] = [productButtonRecipe, meetingSchedulerButtonRecipe];\n\n@Component({\n selector: 'email-blocks-list',\n templateUrl: './email-blocks-list.component.html',\n styleUrls: ['./email-blocks-list.component.scss'],\n providers: [\n {\n provide: 'CONTENT_GENERATION_ENABLED',\n useFactory: (flagEnabledService: FeatureFlagEnabledService) =>\n flagEnabledService.isEnabled('email_builder_content_generation'),\n deps: [FeatureFlagEnabledService],\n },\n ],\n})\nexport class EmailBlocksListComponent implements OnInit {\n @HostBinding('class') class = 'email-blocks-list';\n @Input() blocks: Array;\n\n @Input() set optionalBlockTypes(value: Array) {\n const optionalBlockNamesAndIcons = (value || []).map((c) => optionalBlockTypesMap.get(c)).filter((c) => !!c);\n this.blockNamesAndIcons = this.blockNamesAndIcons.concat(optionalBlockNamesAndIcons);\n }\n\n @ViewChild('productList', { static: true }) productList: TemplateRef;\n\n public productButtonRecipe = productButtonRecipe;\n public buttonRecipes: RecipeListItem[] = [];\n public suggestContentRecipes: RecipeListItem[] = [suggestTextContentRecipe, suggestImageContentRecipe];\n\n public products$: Observable;\n\n blockNamesAndIcons = defaultBlockChoices;\n OptionalBlockTypeID = OptionalBlockTypeID;\n\n productSearchControl = new UntypedFormControl();\n filteredProductList$: Observable;\n\n constructor(\n private emailPreview: EmailPreviewRefreshService,\n private afterBlockDrag: AfterBlockDragService,\n public dialog: MatDialog,\n @Inject(EMAIL_BUILDER_ENABLED_RECIPES) @Optional() public enabledRecipes: string[],\n @Inject(EMAIL_BUILDER_APP_LISTING_SERVICE_TOKEN) @Optional() private appListingService: AppListingServiceInterface,\n private posthogService: ProductAnalyticsService,\n private _: GalaxyAiIconService,\n private viewContainerRef: ViewContainerRef,\n private imageUploadService: ImageUploadService,\n @Inject('CONTENT_GENERATION_ENABLED') @Optional() public contentGenerationEnabled$: Observable,\n ) {}\n\n ngOnInit(): void {\n //TODO: Once recipes are stored in the backend, this mechanism will be replaced with a GetMulti\n if (this.enabledRecipes) {\n this.enabledRecipes.forEach((recipeID) =>\n this.buttonRecipes.push(buttonRecipes.find((value) => value.id === recipeID)),\n );\n }\n if (this.appListingService) {\n this.products$ = this.appListingService.listAllActivatableApps();\n } else {\n this.products$ = of([]);\n this.buttonRecipes = this.buttonRecipes.filter((r) => r.name !== 'Product button');\n }\n this.filteredProductList$ = this.productSearchControl.valueChanges.pipe(\n startWith(''),\n switchMap((value: string) => (value !== '' ? this._filter(value) : this.products$)),\n );\n }\n\n handleBlockValidityEvent(event: boolean, index: number): void {\n this.blocks[index].valid = event;\n }\n\n draggingEvents(): void {\n // This is used to update the rich text editor after drag happens\n // otherwise content disappears inside the tinyMce editor\n window.setTimeout(() => {\n this.afterBlockDrag.dragHappened();\n }, 0);\n }\n\n checkName(input: string, listOfNames = this.blockNamesAndIcons): Observable {\n const found = listOfNames.find((item) => item.id === input);\n return of(found.name);\n }\n\n refreshPreview(): void {\n this.emailPreview.refresh();\n }\n\n toggleAllBlocks(collapsed: boolean, event): void {\n if (event.altKey) {\n this.blocks.forEach((block) => {\n block.collapsed = collapsed;\n });\n }\n }\n\n dropBlock(event: CdkDragDrop): void {\n moveItemInArray(this.blocks, event.previousIndex, event.currentIndex);\n this.draggingEvents();\n this.emailPreview.refresh();\n }\n\n moveBlock(index, delta, inputArray = this.blocks): void {\n const newIndex = index + delta;\n\n //Already at the top or bottom.\n if (newIndex < 0 || newIndex === inputArray.length) return;\n\n moveItemInArray(this.blocks, index, newIndex);\n this.draggingEvents();\n this.emailPreview.refresh();\n }\n\n moveBlockToTop(index, inputArray = this.blocks): void {\n moveItemInArray(inputArray, index, 0);\n this.draggingEvents();\n this.emailPreview.refresh();\n }\n\n moveBlockToBottom(index, inputArray = this.blocks): void {\n moveItemInArray(this.blocks, index, inputArray.length);\n this.draggingEvents();\n this.emailPreview.refresh();\n }\n\n deleteBlock(index: number, inputArray = this.blocks): void {\n if (index > -1) {\n inputArray.splice(index, 1);\n }\n this.emailPreview.refresh();\n }\n\n duplicateBlock(index: number, inputArray = this.blocks): void {\n if (index > -1) {\n const blockToDuplicate = jsonCopy(inputArray[index]) as ContentListItem;\n inputArray.splice(index, 0, blockToDuplicate);\n }\n this.emailPreview.refresh();\n }\n\n async addNewBlock(\n newBlockType: blockType,\n renderType?: blockType,\n index?: number,\n inputArray = this.blocks,\n ): Promise {\n const newBlockObject = jsonCopy(blankContentListItem) as ContentListItem;\n\n // give the newly created object a \"type\" set to the current block type\n newBlockObject.type = newBlockType;\n newBlockObject.renderType = renderType;\n\n // adds it's blank state content\n switch (newBlockType) {\n case 'image': {\n newBlockObject.content = jsonCopy(blankImageBlock);\n break;\n }\n case 'rich_text': {\n newBlockObject.content = jsonCopy(blankRichTextBlock);\n break;\n }\n case 'heading': {\n newBlockObject.content = jsonCopy(blankHeadingBlock);\n break;\n }\n case 'button': {\n newBlockObject.content = jsonCopy(blankButtonBlock);\n break;\n }\n case 'image_and_text': {\n newBlockObject.content = jsonCopy(blankImageAndTextBlock);\n break;\n }\n case 'simple_table': {\n newBlockObject.content = jsonCopy(blankSimpleTableBlock);\n break;\n }\n case 'contact_card': {\n newBlockObject.content = jsonCopy(blankContactCardBlock);\n break;\n }\n case 'divider': {\n newBlockObject.content = jsonCopy(blankDividerBlock);\n break;\n }\n case 'spacer': {\n newBlockObject.content = jsonCopy(blankSpacerBlock);\n break;\n }\n case 'html': {\n newBlockObject.content = jsonCopy(blankHtmlBlock);\n break;\n }\n case 'suggest_content': {\n await this.openSuggestContentDialog();\n break;\n }\n case OptionalBlockTypeID.REVIEW_REQUEST_LINKS: {\n newBlockObject.content = jsonCopy(blankReviewRequestLinksBlock);\n break;\n }\n default: {\n console.error('No new block type with name ' + newBlockType);\n return;\n }\n }\n\n if (newBlockObject.type !== 'suggest_content') {\n if (index > -1) {\n inputArray.splice(index, 0, newBlockObject);\n } else {\n inputArray.push(newBlockObject);\n }\n }\n\n this.emailPreview.refresh();\n }\n\n addRecipe(recipe: RecipeListItem, contentToReplacePlaceholder = '', index?: number): void {\n const newBlockObject = jsonCopy(blankContentListItem) as ContentListItem;\n const newContent = jsonCopy(recipe.block.content);\n\n // give the newly created object a \"type\" set to the current block type\n newBlockObject.type = recipe.block.type;\n newBlockObject.renderType = recipe.block.renderType;\n\n newBlockObject.content = newContent;\n\n if (recipe.block.type == 'button') {\n if (contentToReplacePlaceholder !== '' && recipe.contentPlaceholder) {\n const content = newContent as ButtonBlock;\n content.buttonText = content.buttonText.replace(recipe.contentPlaceholder, contentToReplacePlaceholder);\n content.link = content.link.replace(recipe.contentPlaceholder, contentToReplacePlaceholder);\n newBlockObject.content = content;\n }\n } else if (recipe.block.type == 'image') {\n if (contentToReplacePlaceholder !== '') {\n const content = newContent as ImageBlock;\n content.url = contentToReplacePlaceholder;\n content.imageStyle = 'fullWidth';\n newBlockObject.content = content;\n }\n } else if (recipe.block.type == 'rich_text') {\n if (contentToReplacePlaceholder !== '') {\n const content = newContent as RichTextBlock;\n content.rawHtml = contentToReplacePlaceholder;\n newBlockObject.content = content;\n }\n }\n\n if (index > -1) {\n this.blocks.splice(index, 0, newBlockObject);\n } else {\n this.blocks.push(newBlockObject);\n }\n\n this.emailPreview.refresh();\n }\n\n openProductDialog(data: { index: number }): void {\n this.dialog.open(this.productList, { width: '350px', data: data });\n }\n\n async openSuggestContentDialog(): Promise {\n this.posthogService.trackEvent('user-clicked-suggest-content-block', 'suggest-content', 'click', null);\n const dialogRef = this.dialog.open(SuggestContentComponent, {\n viewContainerRef: this.viewContainerRef,\n width: '600px',\n height: 'auto',\n });\n const text = await firstValueFrom(dialogRef.afterClosed());\n if (text) {\n this.addRecipe(suggestTextContentRecipe, text);\n }\n }\n\n async openSuggestImageDialog(): Promise {\n await this.imageUploadService.generateAndUploadImages().then((selectedImage) => {\n if (selectedImage) {\n selectedImage\n .pipe(\n take(1),\n map((img) => {\n this.addRecipe(suggestImageContentRecipe, img);\n }),\n )\n .subscribe();\n }\n });\n }\n\n private _filter(searchValue: string): Observable {\n if (!searchValue) {\n return this.products$;\n }\n\n const filterValue = searchValue.toLowerCase();\n return this.products$.pipe(\n take(1),\n map((products) => products.filter((option) => option.name.toLowerCase().includes(filterValue))),\n );\n }\n}\n","
\n \n
\n

{{ 'EMAIL_BUILDER.BLOCKS_LIST.HEADER' | translate }}

\n

\n {{ 'EMAIL_BUILDER.BLOCKS_LIST.ADD_NEW_BLOCK_HEADER' | translate }}\n

\n
\n
\n\n \n
\n
\n \n
\n \n arrow_upward\n \n \n arrow_downward\n \n\n
\n {{ checkName(block.type) | async }}\n \n (collapsed)\n \n
\n\n error\n\n \n \n \n \n unfold_less\n \n \n \n \n unfold_more\n \n \n \n\n \n more_horiz\n \n
\n\n \n \n drag_indicator\n\n
\n {{ checkName(block.type) | async }}\n \n (collapsed)\n \n
\n\n error\n\n \n \n \n \n unfold_less\n \n \n \n \n unfold_more\n \n \n \n\n \n
\n\n \n
\n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n \n\n \n \n \n \n {{ 'EMAIL_BUILDER.BLOCKS_LIST.PADDING' | translate }}\n\n \n \n \n {{ block.padding.top }}px {{ 'EMAIL_BUILDER.BLOCKS_LIST.TOP' | translate }}\n\n \n \n , \n \n \n\n \n \n {{ block.padding.bottom }}px {{ 'EMAIL_BUILDER.BLOCKS_LIST.BOTTOM' | translate }}\n \n\n \n \n \n \n , \n \n {{ block.content.paddingBetween }}px {{ 'EMAIL_BUILDER.BLOCKS_LIST.BETWEEN' | translate }}\n \n \n \n\n \n\n \n \n \n {{ 'EMAIL_BUILDER.BLOCKS_LIST.SPACE_BETWEEN_ITEMS' | translate }}\n \n \n \n \n \n
\n \n
\n \n\n \n \n \n\n \n\n \n\n \n \n \n\n \n \n \n\n \n\n \n\n \n \n\n \n \n\n \n\n \n\n \n \n \n\n
\n \n\n \n \n \n \n
\n\n
\n\n\n\n\n \n \n \n
\n \n 0\">\n \n \n
\n
\n\n \n \n \n
\n
\n
\n\n\n \n \n \n \n \n \n \n \n \n \n\n\n\n \n \n \n \n \n\n \n \n \n \n \n\n\n\n

Select product for button

\n \n \n \n \n \n \n {{ product.name }}\n \n \n \n \n \n
\n","import { Component } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\n\nexport interface Result {\n navigateAwayAndDiscard?: boolean;\n}\n\n@Component({\n selector: 'email-unsaved-changes-dialog',\n templateUrl: './unsaved-changes-dialog.component.html',\n styleUrls: ['./unsaved-changes-dialog.component.scss'],\n standalone: true,\n imports: [CommonModule, TranslateModule, MatDialogModule, MatButtonModule],\n})\nexport class UnsavedChangesDialogComponent {\n constructor(private readonly ref: MatDialogRef) {}\n\n close(result: Result = {}): void {\n this.ref.close(result);\n }\n}\n","

Unsaved changes

\n\n
\n {{ 'UNSAVED_CHANGES_CONFIRM' | translate }}\n
\n\n
\n \n \n
\n","import { EventEmitter, Injectable, OnDestroy } from '@angular/core';\n\nimport { TranslateService } from '@ngx-translate/core';\nimport { UnsavedChangesDialogComponent } from '../components/unsaved-changes-dialog/unsaved-changes-dialog.component';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class HasUnsavedChangesGuard implements OnDestroy {\n public canNavigateAway = true;\n attemptedNavWhileUnsaved$: EventEmitter = new EventEmitter();\n\n constructor(\n private readonly translateService: TranslateService, //\n private readonly dialog: MatDialog,\n ) {\n window.addEventListener('beforeunload', (event) => {\n if (this.canNavigateAway === false) {\n event.returnValue = this.translateService.instant('UNSAVED_CHANGES_CONFIRM');\n }\n });\n }\n\n canDeactivate(): boolean {\n if (this.canNavigateAway === false) {\n this.attemptedNavWhileUnsaved$.emit();\n }\n return this.canNavigateAway;\n }\n\n ngOnDestroy(): void {\n window.removeEventListener('beforeunload', (event) => {\n if (!this.canNavigateAway) {\n event.returnValue = this.translateService.instant('UNSAVED_CHANGES_CONFIRM');\n }\n });\n }\n\n markAsUnsaved(): void {\n this.canNavigateAway = false;\n }\n\n markAsSaved(): void {\n this.canNavigateAway = true;\n }\n\n showUnsavedChangesDialog(): MatDialogRef {\n return this.dialog.open(UnsavedChangesDialogComponent);\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Environment, EnvironmentService } from '@galaxy/core';\nimport { TemplateType, TemplatesService } from '@vendasta/templates';\nimport { Observable, of } from 'rxjs';\nimport { EmailContentData } from '../types/contentblocks';\n\nconst TEMPLATE_RENDERING_SERVER_DEMO = 'https://email-builder-template-renderer-demo.apigateway.co/renderer/v1';\nconst TEMPLATE_RENDERING_SERVER_PROD = 'https://email-builder-template-renderer-prod.apigateway.co/renderer/v1';\n\n// For local template rendering work:\n// const TEMPLATE_RENDERING_SERVER_DEMO = 'https://localhost/';\n// const TEMPLATE_RENDERING_SERVER_PROD = 'https://localhost/';\n\nexport interface EmailPreviewBusinessDetails {\n accountGroupId: string;\n name: string;\n hasSnapshot: boolean;\n hasSalesperson: boolean;\n}\n\nexport interface EmailPreviewHydrationData {\n partnerID: string;\n marketID: string;\n locale?: string;\n business: EmailPreviewBusinessDetails;\n userID: string;\n contactID?: string;\n disablePreviewHydration?: boolean; // Controls whether the preview has its logo replaced _before_ rendering\n useFakeData?: boolean;\n}\n\n@Injectable({\n providedIn: 'any',\n})\nexport class PreviewRenderingService {\n private previewHydrationParams: EmailPreviewHydrationData;\n private readonly templateRenderingServiceURL;\n private locale: string = undefined;\n\n constructor(\n private readonly httpClient: HttpClient,\n private readonly templates: TemplatesService,\n private readonly envService: EnvironmentService,\n ) {\n this.templateRenderingServiceURL =\n envService.getEnvironment() === Environment.PROD\n ? TEMPLATE_RENDERING_SERVER_PROD\n : TEMPLATE_RENDERING_SERVER_DEMO;\n }\n\n setPreviewHydrationParams(params: EmailPreviewHydrationData): void {\n this.previewHydrationParams = params;\n }\n\n setLocale(locale: string): void {\n this.locale = locale;\n }\n\n renderContentHTML(emailContent: EmailContentData): Observable {\n const headers = new HttpHeaders({\n 'Secret-Key': 'b0725e29-58ef-468f-976a-96efb3b1a494',\n Accept: 'text/html',\n });\n\n return this.httpClient.post(this.templateRenderingServiceURL, emailContent, {\n headers,\n responseType: 'text',\n });\n }\n\n hydrateEmailContent(emailContent: EmailContentData, contentWithTags: string): Observable {\n const p = this.previewHydrationParams || { disablePreviewHydration: true };\n if (p.disablePreviewHydration) {\n return this.replaceDefaultLogoParam(contentWithTags);\n }\n return this.hydrateTemplate(emailContent, contentWithTags);\n }\n\n hydrateTemplate(content: EmailContentData, templateHtml: string): Observable {\n const parameters = {\n account_group_id: this.previewHydrationParams?.business?.accountGroupId,\n market_id: this.previewHydrationParams?.marketID,\n partner_id: this.previewHydrationParams?.partnerID,\n user_id: this.previewHydrationParams?.userID,\n contact_id: this.previewHydrationParams?.contactID,\n };\n return this.templates.render(\n templateHtml,\n parameters,\n TemplateType.TEMPLATE_TYPE_DJANGO,\n {\n accountGroupId: 'account_group_id',\n partnerId: 'partner_id',\n marketId: 'market_id',\n userId: 'user_id',\n contactId: 'contact_id',\n },\n this.locale || undefined,\n undefined,\n undefined,\n this.previewHydrationParams?.useFakeData ?? true,\n );\n }\n\n hydrateSubject(content: EmailContentData, templateSubject: string): Observable {\n const parameters = {\n account_group_id: this.previewHydrationParams?.business?.accountGroupId,\n market_id: this.previewHydrationParams?.marketID,\n partner_id: this.previewHydrationParams?.partnerID,\n user_id: this.previewHydrationParams?.userID,\n contact_id: this.previewHydrationParams?.contactID,\n };\n return this.templates.render(\n templateSubject,\n parameters,\n TemplateType.TEMPLATE_TYPE_GOLANG_TEXT,\n {\n accountGroupId: 'account_group_id',\n partnerId: 'partner_id',\n marketId: 'market_id',\n userId: 'user_id',\n contactId: 'contact_id',\n },\n this.locale || undefined,\n undefined,\n undefined,\n this.previewHydrationParams?.useFakeData ?? true,\n );\n }\n\n replaceDefaultLogoParam(content: string): Observable {\n return of(content.replace('{{ partnerLogo }}', 'https://via.placeholder.com/220x72?text=%20'));\n }\n}\n","import { TopLogo, Colors } from './email-advanced-settings.component';\n\nexport const emptyTopLogo: TopLogo = {\n showLogo: null,\n customImageUrl: null,\n width: null,\n align: null,\n topPadding: null,\n bottomPadding: null,\n collapsed: null,\n link: null,\n defaultSourceUrl: null,\n};\n\nexport const emptyColors: Colors = {\n textColor: '#5f6368',\n titleColor: '#22292f',\n subtitleColor: '#999999',\n linkColor: '#057EC1',\n footerTextColor: '#858585',\n textBackground: '#FFFFFF',\n pageBackground: '#EEEEEE',\n collapsed: true,\n};\n","import { AfterViewInit, Component, HostBinding, Input, OnDestroy, ViewChild, OnInit } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { FileInfo, FileUploadStatus } from '@vendasta/galaxy/uploader';\n\nimport { EmailPreviewRefreshService } from '../../services/email-preview-refresh.service';\nimport { emptyColors } from './empty-settings';\nimport { Validator } from '@vendasta/shared';\n\nexport const ALL_ADVANCED_SECTIONS_ENABLED: AdvancedSections = {\n pageSetup: true,\n topLogo: true,\n footer: true,\n colors: true,\n};\n\nexport interface EmailSetup {\n googleAnalytics?: unknown; // we have removed googleAnalytics from the email builder. This is here to prevent errors\n pageSetup?: PageSetup;\n topLogo?: TopLogo;\n footer?: Footer;\n colors?: Colors;\n isValid?: boolean;\n}\n\nexport interface AdvancedSections {\n pageSetup?: boolean;\n topLogo?: boolean;\n footer?: boolean;\n colors?: boolean;\n}\n\nexport interface PageSetup {\n outerWidth?: number;\n innerWidth?: number;\n innerHorizontalPadding?: number;\n topPadding?: number;\n bottomContentPadding?: number;\n collapsed?: boolean;\n}\n\nexport interface TopLogo {\n showLogo?: 'show' | 'hide' | 'custom';\n customImageUrl?: string;\n width?: number;\n align?: 'center' | 'left' | 'right';\n topPadding?: number;\n bottomPadding?: number;\n collapsed?: boolean;\n link?: string;\n isValid?: boolean;\n defaultSourceUrl?: string;\n}\n\nexport interface Footer {\n disclaimer?: string;\n text?: string; // This text will override the default partner contact and unsubscribe footer content\n showContactInfo?: 'hide' | 'show';\n showUnsubscribeLinks?: 'hide' | 'show';\n collapsed?: boolean;\n}\n\nexport interface Colors {\n textColor?: string;\n titleColor?: string;\n subtitleColor?: string;\n linkColor?: string;\n footerTextColor?: string;\n textBackground?: string;\n pageBackground?: string;\n collapsed?: boolean;\n isValid?: boolean;\n}\n\n/**\n * A small function to add missing keys with default values to an object.\n * If the target object might not have the initial key, that can be checked an added using the `targetKey` input\n * @param target - The object you want to check and add keys to.\n * @param template - used as a base to add missing keys and their default value to the target object.\n * @param targetKey - Optional. If the target object might not have the initial key, that can be checked an added using the `targetKey` input\n *\n * @example\n * // Check object this.emailSetup.colors to make sure colors has all keys\n * addMissingKeysToObject(this.emailSetup.colors, emptyColors)\n * @example\n * // Check if object this.emailSetup has colors key/object, then make sure colors object has all keys\n * addMissingKeysToObject(this.emailSetup, emptyColors, 'colors')\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function addMissingKeysToObject(target: Object, template: Object, targetKey?: string): void {\n // Check to see if parent key exists, if not, add it and update target to point to it.\n if (targetKey) {\n target = target[targetKey] ? target[targetKey] : (target[targetKey] = {});\n }\n\n // Add any missing keys to the target with default values from the template\n const keys = Object.keys(template);\n keys.forEach((key) => {\n if (target[key] === undefined) {\n target[key] = template[key];\n }\n });\n}\n\n@Component({\n selector: 'email-advanced-settings',\n templateUrl: './email-advanced-settings.component.html',\n styleUrls: ['./email-advanced-settings.component.scss'],\n})\nexport class EmailAdvancedSettingsComponent implements AfterViewInit, OnInit, OnDestroy {\n @HostBinding('class') class = 'email-advanced-settings';\n\n @Input() emailSetup: EmailSetup;\n @Input() sectionsEnabled: AdvancedSections;\n\n @ViewChild('sizingAndSpacingForm') sizingAndSpacingForm: NgForm;\n @ViewChild('topLogoForm') topLogoForm: NgForm;\n @ViewChild('footerForm') footerForm: NgForm;\n @ViewChild('colorForm') colorForm: NgForm;\n\n public urlMailtoOrDynamicContentRegex = Validator.URL_MAILTO_OR_DYNAMIC_CONTENT_REGEX;\n public colorRegex = Validator.HEX_COLOR_REGEX;\n\n FileUploadStatus = FileUploadStatus;\n\n private readonly subs: Subscription[] = [];\n\n constructor(public emailPreview: EmailPreviewRefreshService) {}\n\n ngOnInit(): void {\n // Add colors section and default values if they don't exist\n addMissingKeysToObject(this.emailSetup, emptyColors, 'colors');\n }\n\n ngAfterViewInit(): void {\n this.setupPreviewRefresh();\n this.setupFormValidation();\n }\n\n setupFormValidation(): void {\n this.subs.push(\n this.topLogoForm?.statusChanges.subscribe((topLogoValid) => {\n this.emailSetup.topLogo.isValid = topLogoValid === 'VALID';\n }),\n );\n this.subs.push(\n this.colorForm?.statusChanges.subscribe((colorsValid) => {\n this.emailSetup.colors.isValid = colorsValid === 'VALID';\n }),\n );\n }\n\n setupPreviewRefresh(): void {\n this.subs.push(\n this.sizingAndSpacingForm?.form?.valueChanges?.subscribe(() => {\n this.emailPreview.refresh();\n }),\n this.topLogoForm?.valueChanges?.subscribe(() => {\n this.emailPreview.refresh();\n }),\n this.footerForm?.form?.valueChanges?.subscribe(() => {\n this.emailPreview.refresh();\n }),\n this.colorForm?.valueChanges?.subscribe(() => {\n this.emailPreview.refresh();\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subs.forEach((s) => s?.unsubscribe());\n }\n\n setContentImage(file: FileInfo): void {\n this.emailSetup.topLogo.customImageUrl = file.url;\n this.emailPreview.refresh();\n }\n}\n","\n \n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.COLORS.COLORS' | translate }}\n error\n \n
\n
\n
\n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.COLORS.TEXT' | translate }}\n \n \n \n {{ 'EMAIL_BUILDER.VALIDATION_ERRORS.COLOR' | translate }}\n \n \n\n \n\n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.COLORS.TITLE' | translate }}\n \n \n \n {{ 'EMAIL_BUILDER.VALIDATION_ERRORS.COLOR' | translate }}\n \n \n\n \n\n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.COLORS.SUBTITLE' | translate }}\n \n \n \n {{ 'EMAIL_BUILDER.VALIDATION_ERRORS.COLOR' | translate }}\n \n \n\n \n\n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.COLORS.LINKS' | translate }}\n \n \n \n {{ 'EMAIL_BUILDER.VALIDATION_ERRORS.COLOR' | translate }}\n \n \n\n \n\n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.COLORS.FOOTER_TEXT' | translate }}\n \n \n \n {{ 'EMAIL_BUILDER.VALIDATION_ERRORS.COLOR' | translate }}\n \n \n\n \n\n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.COLORS.CONTENT_BACKGROUND' | translate }}\n \n \n \n {{ 'EMAIL_BUILDER.VALIDATION_ERRORS.COLOR' | translate }}\n \n \n\n \n\n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.COLORS.PAGE_BACKGROUND' | translate }}\n \n \n \n {{ 'EMAIL_BUILDER.VALIDATION_ERRORS.COLOR' | translate }}\n \n \n
\n
\n
\n
\n
\n\n\n \n \n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.SIZING_AND_SPACING.SIZING_SPACING' | translate }}\n \n \n
\n
\n \n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.SIZING_AND_SPACING.TOP_PADDING.TEXT' | translate }}\n \n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.SIZING_AND_SPACING.TOP_PADDING.DEFAULT' | translate }}\n \n \n \n
\n \n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.SIZING_AND_SPACING.OUTER_WIDTH.TEXT' | translate }}\n \n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.SIZING_AND_SPACING.OUTER_WIDTH.DEFAULT' | translate }}\n \n \n \n \n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.SIZING_AND_SPACING.INNER_WIDTH.TEXT' | translate }}\n \n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.SIZING_AND_SPACING.INNER_WIDTH.DEFAULT' | translate }}\n \n \n \n
\n\n
\n \n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.SIZING_AND_SPACING.INNER_HORIZONTAL_PADDING.TEXT' | translate }}\n \n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.SIZING_AND_SPACING.INNER_HORIZONTAL_PADDING.DEFAULT' | translate }}\n \n \n \n\n \n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.SIZING_AND_SPACING.BOTTOM_CONTENT_PADDING.TEXT' | translate }}\n \n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.SIZING_AND_SPACING.BOTTOM_CONTENT_PADDING.DEFAULT' | translate }}\n \n \n \n
\n
\n
\n
\n
\n\n\n \n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.TOP_LOGO.TEXT' | translate }}\n error\n \n
\n
\n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.TOP_LOGO.TEXT' | translate }}\n \n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.TOP_LOGO.DEFAULT' | translate }}\n \n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.TOP_LOGO.CUSTOM' | translate }}\n \n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.TOP_LOGO.HIDE' | translate }}\n \n \n \n\n \n \n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.TOP_LOGO.CUSTOM_LOGO' | translate }}\n\n
\n
\n \n
\n
\n \n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.TOP_LOGO.VIEW' | translate }}\n \n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.TOP_LOGO.CLEAR' | translate }}\n \n \n
\n
\n
\n
\n\n \n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.TOP_LOGO.CUSTOM_LOGO' | translate }}\n \n \n \n
\n \n
\n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.TOP_LOGO.LOGO_WIDTH.TEXT' | translate }}\n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.TOP_LOGO.LOGO_WIDTH.DEFAULT' | translate }}\n \n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.TOP_LOGO.LOGO_ALIGNMENT.TEXT' | translate }}\n \n \n
\n\n
\n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.TOP_LOGO.TOP_PADDING.TEXT' | translate }}\n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.TOP_LOGO.TOP_PADDING.DEFAULT' | translate }}\n \n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.TOP_LOGO.BOTTOM_PADDING.TEXT' | translate }}\n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.TOP_LOGO.BOTTOM_PADDING.DEFAULT' | translate }}\n \n
\n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.TOP_LOGO.LINK' | translate }}\n \n \n {{ 'EMAIL_BUILDER.VALIDATION_ERRORS.LINK' | translate }}\n \n \n
\n
\n
\n
\n
\n\n\n \n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.FOOTER.TEXT' | translate }}\n \n
\n
\n \n {{ 'EMAIL_BUILDER.ADVANCED_SETTINGS.FOOTER.DISCLAIMER' | translate }}\n \n \n
\n
\n
\n
\n","export const inboxPreviewHtml = `\n\n
\n \n
▢ ☆
\n
{{ username }}
\n
{{ subjectLine }}
\n
{{ previewText }}
\n
`;\n","import {\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n inject,\n} from '@angular/core';\nimport { GalaxyResizeAppearance, GalaxyResizeDirection } from './interface';\n\n// If/when we want to add touchevent support for mobile,\n// we can use code from angular-split\n// https://github.com/angular-split/angular-split/blob/main/projects/angular-split/src/lib/component/split.component.ts\n\n@Component({\n selector: 'glxy-resize',\n templateUrl: './resize.component.html',\n styleUrls: ['./resize.component.scss'],\n})\nexport class ResizeComponent implements OnInit, OnDestroy {\n @HostBinding('class.glxy-resize') public true = 1;\n\n @Input() set width(width: number | string) {\n this.widthProperty = this.handleWidthInput(width);\n }\n @Input() set minWidth(width: number | string) {\n this.minWidthProperty = this.handleWidthInput(width);\n }\n @Input() set maxWidth(width: number | string) {\n this.maxWidthProperty = this.handleWidthInput(width);\n }\n @Input() appearance: GalaxyResizeAppearance = 'standard';\n @Input() direction: GalaxyResizeDirection = 'right';\n @Input() overflow: 'scroll' | 'hidden' | 'auto' | 'visible' = 'auto';\n\n @Output() dragStarted = new EventEmitter();\n\n @Output() dragStopped = new EventEmitter();\n\n @HostBinding('class.is-dragging') isDragging = false;\n @HostBinding('style.width') widthProperty?: string;\n @HostBinding('style.min-width') minWidthProperty?: string;\n @HostBinding('style.max-width') maxWidthProperty?: string;\n @HostBinding('style.overflow') overflowProperty?: string;\n\n // Apperance Host Bindings\n @HostBinding('class.glxy-resize-appearance-large')\n get isLargeAppearance(): boolean {\n return this.appearance === 'large';\n }\n @HostBinding('class.glxy-resize-appearance-standard')\n get isStandardAppearance(): boolean {\n return this.appearance === 'standard';\n }\n @HostBinding('class.glxy-resize-appearance-simple')\n get isSimpleAppearance(): boolean {\n return this.appearance === 'simple';\n }\n\n // Direction Host Bindings\n @HostBinding('class.glxy-resize-direction-left')\n get isDirectionLeft(): boolean {\n return this.direction === 'left';\n }\n @HostBinding('class.glxy-resize-direction-right')\n get isDirectionRight(): boolean {\n return this.direction === 'right';\n }\n\n private initialParentOffsetWidth = 0;\n private initialclientX = 0;\n private canResizeWidth = false;\n\n private el = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n ngOnInit(): void {\n this.renderer.listen('document', 'mouseup', this.dragStop.bind(this));\n }\n\n ngOnDestroy(): void {\n this.renderer.destroy();\n }\n\n dragStart(event: MouseEvent): void {\n event.preventDefault();\n this.initialParentOffsetWidth = this.el.nativeElement.offsetWidth;\n this.initialclientX = event.clientX;\n this.canResizeWidth = true;\n this.isDragging = true;\n this.dragStarted.emit();\n document.querySelector('body')?.classList.add('has-element-dragging');\n }\n\n dragStop(): void {\n if (this.isDragging) {\n this.canResizeWidth = false;\n this.isDragging = false;\n this.dragStopped.emit();\n document.querySelector('body')?.classList.remove('has-element-dragging');\n }\n }\n\n @HostListener('window:mousemove', ['$event']) resize(event: MouseEvent): void {\n if (this.canResizeWidth) {\n event.preventDefault();\n const moveDiff = event.clientX - this.initialclientX;\n let finalWidth: number;\n\n if (this.direction === 'right') {\n finalWidth = this.initialParentOffsetWidth + moveDiff;\n } else {\n finalWidth = this.initialParentOffsetWidth - moveDiff;\n }\n\n this.width = finalWidth;\n }\n }\n\n private handleWidthInput(width: string | number): string {\n if (typeof width === 'number') {\n return `${width}px`;\n }\n return width;\n }\n}\n","
\n \n
\n\n
\n
\n \n \n \n \n \n
\n
\n","import { Component, HostBinding, Input, ViewChild, AfterViewInit, ElementRef, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { NAV_OPEN_CLOSE_ANIMATION_DURATION } from '@vendasta/galaxy/nav/src/nav.component';\n\ntype PreviewSize = 'desktop' | 'tablet' | 'mobile';\n\n@Component({\n selector: 'email-editor-preview',\n templateUrl: './email-editor-preview.component.html',\n styleUrls: ['./email-editor-preview.component.scss'],\n})\nexport class EmailEditorPreviewComponent implements AfterViewInit, OnDestroy {\n @HostBinding('class') class = 'email-editor-preview';\n\n @Input() loadingIndicator = false;\n @Input() previewIsMobile = false;\n\n @Input()\n public set html(renderedTemplate: string) {\n this._html = renderedTemplate;\n this.updateIFramePreview(this._html);\n }\n\n @ViewChild('iframePreview', { static: true }) iframePreview: ElementRef;\n\n element = this.elementRef.nativeElement;\n emailPreviewWidth: string;\n subscriptions: Subscription[] = [];\n _html: string;\n\n showDesktopButton = true;\n showDevicePreviewSizeButtons = true;\n resizeObserver: ResizeObserver;\n\n previewSizeSelected: PreviewSize = 'desktop';\n\n constructor(private elementRef: ElementRef) {\n if (window.ResizeObserver) {\n this.resizeObserver = new ResizeObserver((entries) => {\n const entry = Array.isArray(entries) ? entries[0] : entries;\n const componentWidth = entry.contentRect.width;\n\n const previousShowDesktopButton = this.showDesktopButton;\n this.showDesktopButton = componentWidth > 600;\n\n if (!this.showDesktopButton && previousShowDesktopButton && this.previewSizeSelected === 'desktop') {\n this.previewSizeClicked('tablet');\n }\n this.showDevicePreviewSizeButtons = componentWidth > 320;\n });\n }\n }\n\n ngAfterViewInit(): void {\n window.setTimeout(() => this.resizeObserver.observe(this.element), NAV_OPEN_CLOSE_ANIMATION_DURATION);\n // hacky, but nativeElement.contentDocument will be missing sometimes without this.\n window.setTimeout(() => this.updateIFramePreview(this._html), 0);\n }\n\n ngOnDestroy(): void {\n this.resizeObserver.disconnect();\n }\n\n previewSizeClicked(value: PreviewSize): void {\n switch (value) {\n case 'desktop':\n this.emailPreviewWidth = '100%';\n this.previewSizeSelected = 'desktop';\n break;\n case 'tablet':\n this.emailPreviewWidth = '600px';\n this.previewSizeSelected = 'tablet';\n break;\n case 'mobile':\n this.emailPreviewWidth = '320px';\n this.previewSizeSelected = 'mobile';\n break;\n default:\n this.emailPreviewWidth = '';\n break;\n }\n }\n\n setIframeHeightOnMobile(): void {\n if (this.previewIsMobile) {\n const iframeBody = this.iframePreview.nativeElement.contentWindow.document.body;\n if (iframeBody) {\n this.iframePreview.nativeElement.style.height = iframeBody.offsetHeight + 40 + 'px';\n }\n }\n }\n\n updateIFramePreview(renderedTemplate: string): void {\n // We have to be careful here as the iframe\n // and contents may not be available\n if (this.previewIsMobile || !renderedTemplate || !this.iframePreview) {\n return;\n }\n const contentWindow = this.iframePreview.nativeElement.contentWindow;\n if (!contentWindow) {\n return;\n }\n\n const contentDocument = this.iframePreview.nativeElement.contentDocument;\n if (!contentDocument) {\n return;\n }\n\n const scrollX = contentWindow.window?.scrollX;\n const scrollY = contentWindow.window?.scrollY;\n\n contentDocument.open();\n contentDocument.write(renderedTemplate);\n contentDocument.close();\n // firefox does not preserve the scroll, so we have\n // to set it manually\n this.iframePreview.nativeElement.contentWindow.scrollTo(scrollX, scrollY);\n }\n}\n","\n\n
\n \n
\n \n
\n
\n\n \n \n \n \n computer\n {{ 'EMAIL_EDITOR_PREVIEW.DESKTOP' | translate }}\n \n \n \n tablet_mac\n {{ 'EMAIL_EDITOR_PREVIEW.TABLET' | translate }}\n \n \n phone_iphone\n {{ 'EMAIL_EDITOR_PREVIEW.MOBILE' | translate }}\n \n \n \n
\n
\n\n\n\n\n
\n \n \n
\n \n
\n
\n
\n
\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { GalaxyNavControlService } from '@vendasta/galaxy/nav';\nimport { GALAXY_UPLOADER_SERVICE_TOKEN } from '@vendasta/galaxy/uploader';\nimport { combineLatest, identity, Subject, Subscription, throwError } from 'rxjs';\nimport { catchError, debounceTime, filter, map, mergeMap, share, skip, take, tap } from 'rxjs/operators';\nimport { DynamicComponentSelectorService, VariableMenuItem } from './components/dynamic-component-selector';\nimport {\n AdvancedSections,\n ALL_ADVANCED_SECTIONS_ENABLED,\n} from './components/email-advanced-settings/email-advanced-settings.component';\nimport { inboxPreviewHtml } from './inbox-preview';\nimport { EmailPreviewRefreshService } from './services/email-preview-refresh.service';\nimport { HasUnsavedChangesGuard } from './services/has-unsaved-changes.guard';\nimport { ImageUploadService } from './services/image-upload.service';\nimport { EmailPreviewHydrationData, PreviewRenderingService } from './services/preview-rendering.service';\nimport { EmailContentData, OptionalBlockTypeID } from './types/contentblocks';\n\nexport const MOBILE_MAX_WIDTH = 900;\n\n@Component({\n selector: 'email-builder',\n templateUrl: './email-builder.component.html',\n styleUrls: ['./email-builder.component.scss'],\n providers: [{ provide: GALAXY_UPLOADER_SERVICE_TOKEN, useExisting: ImageUploadService }],\n})\nexport class EmailBuilderComponent implements OnDestroy, OnInit, OnChanges, AfterViewInit {\n @HostBinding('class') class = 'email-builder';\n @HostBinding('class.email-builder-is-mobile') emailBuilderIsMobile = false;\n\n /** The email builder is considered mobile at this viewport width and below **/\n @Input() mobileMaxWidth = MOBILE_MAX_WIDTH;\n\n @Input() emailContent: EmailContentData;\n\n @Input() advancedSections: AdvancedSections = ALL_ADVANCED_SECTIONS_ENABLED;\n\n @Input() optionalBlockTypes: Array;\n\n @Input() set previewHydrationParams(params: EmailPreviewHydrationData) {\n if (params !== null) {\n this.previewRenderingService.setPreviewHydrationParams(params);\n this.renderPreviewAndTemplate();\n }\n }\n\n @Input() readonly locale: string = undefined;\n\n @Input() readonly placeholderLogoUrl: string = 'https://via.placeholder.com/220x72?text=%20';\n\n @Input() dynamicComponents: VariableMenuItem[] = [];\n\n @Input() previewUserName = 'Jane MacAvery';\n\n private readonly failedRenders$$ = new Subject();\n\n @Output() emailContentChanged = new EventEmitter();\n @Output() emailRenderUpdated = new EventEmitter();\n @Output() htmlRendering = new EventEmitter(false);\n @Output() emailRenderFailed = new EventEmitter();\n\n @ViewChild('emailSetupForm') emailSetupForm: NgForm;\n\n private readonly breakpointObserver = inject(BreakpointObserver);\n private readonly translateService = inject(TranslateService);\n private readonly dynamicComponentSelectorService = inject(DynamicComponentSelectorService);\n private emailPreview = inject(EmailPreviewRefreshService);\n private unsavedGuard = inject(HasUnsavedChangesGuard);\n private sideNavControl = inject(GalaxyNavControlService);\n private changeDetectorRef = inject(ChangeDetectorRef);\n private previewRenderingService = inject(PreviewRenderingService);\n\n public renderedTemplate: string;\n loadingIndicator = false;\n stagedChanges = false;\n inboxPreviewHtmlToInject = inboxPreviewHtml;\n\n private subscriptions: Subscription[] = [];\n\n ngOnInit(): void {\n if (this.dynamicComponents?.length > 0) {\n this.dynamicComponentSelectorService.overrideParentVariableCategories(this.dynamicComponents);\n }\n\n // This is a temporary fix to remove google analytics from the email content\n // because we have removed google analytics from the email template renderer\n if (this.emailContent?.emailSetup?.googleAnalytics) {\n delete this.emailContent?.emailSetup?.googleAnalytics;\n }\n\n this.sideNavControl.closeForThisPage();\n\n // Track if the viewport is desktop or mobile\n this.subscriptions.push(\n this.breakpointObserver.observe('(max-width: ' + this.mobileMaxWidth + 'px)').subscribe((resp) => {\n this.emailBuilderIsMobile = resp.matches;\n }),\n );\n this.subscriptions.push(\n this.failedRenders$$.pipe(debounceTime(3000), filter(identity)).subscribe(() => {\n this.emailRenderFailed.emit();\n }),\n );\n\n // Reload the email preview\n this.subscriptions.push(\n this.emailPreview.refreshEmitter$\n // skip the first event, as that is the form initializing\n .pipe(skip(2))\n .subscribe(() => {\n this.emailHasBeenModified();\n }),\n );\n\n // Listen for form field updates and throttle them, so they\n this.subscriptions.push(\n this.emailPreview.refreshStartedEmitter$.pipe(skip(1)).subscribe(() => {\n this.loadingIndicator = true;\n this.stagedChanges = true;\n }),\n );\n\n // Listen for attempts to navigate away\n this.subscriptions.push(\n this.unsavedGuard.attemptedNavWhileUnsaved$.subscribe(() => {\n this.confirmLeavingWithUnsavedChanges();\n }),\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes?.locale) {\n this.previewRenderingService.setLocale(changes.locale.currentValue);\n }\n }\n\n ngAfterViewInit(): void {\n this.subscriptions.push(\n this.emailSetupForm.statusChanges.subscribe((status) => {\n this.emailContent.basicSetupValid = status === 'VALID';\n }),\n );\n this.emailSetupForm.valueChanges.subscribe(() => {\n this.emailPreview.refresh();\n });\n this.renderPreviewAndTemplate();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n\n renderPreviewAndTemplate(): void {\n const customizedInboxPreview = this.inboxPreviewHtmlToInject\n .replace('{{ username }}', this.previewUserName ?? '')\n .replace('{{ subjectLine }}', this.emailContent.subjectLine ?? '')\n .replace('{{ previewText }}', this.emailContent.previewText ?? '');\n this.stagedChanges = false;\n const preparedEmailContentData = JSON.parse(JSON.stringify(this.emailContent));\n const contentWithTags$ = this.previewRenderingService.renderContentHTML(preparedEmailContentData).pipe(\n catchError((err) => {\n console.error('Error loading content:', err);\n return throwError(err);\n }),\n share(),\n );\n\n const hydratedContent$ = contentWithTags$.pipe(\n mergeMap((contentWithTags) =>\n this.previewRenderingService.hydrateEmailContent(preparedEmailContentData, contentWithTags).pipe(\n tap(() => this.failedRenders$$.next(false)),\n catchError((err) => {\n console.error('Error loading hydrated content:', err);\n this.failedRenders$$.next(true);\n return throwError(err);\n }),\n ),\n ),\n );\n\n const hydratedOrFallback$ = combineLatest([\n hydratedContent$,\n contentWithTags$.pipe(\n catchError(() => contentWithTags$.pipe(map((v) => v.replace('{{ partnerLogo }}', this.placeholderLogoUrl)))),\n ),\n ]);\n this.subscriptions.push(\n hydratedOrFallback$.pipe(take(1)).subscribe(([value, rawHTML]) => {\n this.renderedTemplate = value.replace(/(]*>)/, '$1' + customizedInboxPreview);\n this.emailRenderUpdated.emit(rawHTML);\n this.htmlRendering.emit(false);\n if (!this.stagedChanges) {\n this.loadingIndicator = false;\n }\n this.changeDetectorRef.detectChanges();\n }),\n );\n }\n\n saveEmail(): void {\n this.unsavedGuard.markAsSaved();\n }\n\n emailHasBeenModified(): void {\n this.htmlRendering.emit(true);\n this.emailContentChanged.emit(this.emailContent);\n this.renderPreviewAndTemplate();\n this.unsavedGuard.markAsUnsaved();\n }\n\n confirmLeavingWithUnsavedChanges(): void {\n if (window.confirm(this.translateService.instant('UNSAVED_CHANGES_CONFIRM'))) {\n this.unsavedGuard.markAsSaved();\n }\n }\n}\n","\n \n\n \n \n
\n \n \n \n \n\n \n \n
\n \n \n \n
\n
\n
\n
\n\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n
\n\n\n \n\n\n\n\n\n\n\n\n
\n
\n \n {{ 'EMAIL_BUILDER.SUBJECT_CONTROLS_TAB.TEMPLATE_NAME' | translate }}\n \n \n
\n\n \n\n
\n \n {{ 'EMAIL_BUILDER.SUBJECT_CONTROLS_TAB.SUBJECT_LINE' | translate }}\n \n \n \n {{ 'EMAIL_BUILDER.VALIDATION_ERRORS.DYNAMIC_CONTENT' | translate }}\n \n \n\n \n {{ 'EMAIL_BUILDER.SUBJECT_CONTROLS_TAB.INBOX_PREVIEW' | translate }}\n {{ 'EMAIL_BUILDER.SUBJECT_CONTROLS_TAB.INBOX_PREVIEW_HINT' | translate }}\n \n \n \n {{ 'EMAIL_BUILDER.VALIDATION_ERRORS.DYNAMIC_CONTENT' | translate }}\n \n \n
\n \n
\n\n\n\n \n\n\n\n\n \n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ResizeComponent } from './resize/resize.component';\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\n\n@NgModule({\n declarations: [ResizeComponent],\n imports: [CommonModule, CdkScrollableModule],\n exports: [ResizeComponent],\n})\nexport class GalaxyResizeModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { GalaxyButtonGroupModule } from '@vendasta/galaxy/button-group';\nimport { GalaxyPipesModule } from '@vendasta/galaxy/pipes';\n\nimport { EmailEditorPreviewComponent } from './email-editor-preview.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { EmailUII18nModule } from '../../src/lib/i18n/email-ui-i18n.module';\n\nexport { EmailEditorPreviewComponent };\n\nexport const MODULE_IMPORTS = [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n GalaxyButtonGroupModule,\n GalaxyPipesModule,\n GalaxyLoadingSpinnerModule,\n TranslateModule,\n EmailUII18nModule,\n];\n\nexport const MODULE_DECLARATIONS = [EmailEditorPreviewComponent];\n\n@NgModule({\n declarations: MODULE_DECLARATIONS,\n imports: MODULE_IMPORTS,\n exports: [EmailEditorPreviewComponent],\n})\nexport class EmailEditorPreviewModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\nimport { TranslateModule } from '@ngx-translate/core';\nimport { LexiconModule } from '@galaxy/lexicon';\n\nimport { CoreModule } from '@galaxy/core';\n\nimport { GalaxyResizeModule } from '@vendasta/galaxy/resize';\nimport { GalaxyButtonGroupModule } from '@vendasta/galaxy/button-group';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { GalaxyUploaderModule } from '@vendasta/galaxy/uploader';\nimport { GalaxySnackbarModule } from '@vendasta/galaxy/snackbar-service';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\n\nimport { ImageBlockComponent } from './blocks/image-block/image-block.component';\nimport { HeadingBlockComponent } from './blocks/heading-block/heading-block.component';\nimport { RichTextBlockComponent } from './blocks/rich-text-block/rich-text-block.component';\nimport { ButtonBlockComponent } from './blocks/button-block/button-block.component';\nimport { HtmlBlockComponent } from './blocks/html-block/html-block.component';\nimport { ContactCardComponent } from './blocks/contact-card/contact-card.component';\nimport { DividerBlockComponent } from './blocks/divider-block/divider-block.component';\nimport { SpacerBlockComponent } from './blocks/spacer-block/spacer-block.component';\nimport { SimpleTableBlockComponent } from './blocks/simple-table-block/simple-table-block.component';\nimport { ImageAndTextBlockComponent } from './blocks/image-and-text-block/image-and-text-block.component';\nimport { ReviewRequestLinksBlockComponent } from './blocks/review-request-links-block/review-request-links-block.component';\n\nimport { EmailBlocksListComponent } from './components/email-blocks-list/email-blocks-list.component';\nimport { EmailBlockPaddingComponent } from './components/email-block-padding/email-block-padding.component';\nimport { RichTextEditorComponent } from './components/rich-text-editor/rich-text-editor.component';\nimport {\n EmailAdvancedSettingsComponent,\n EmailSetup,\n} from './components/email-advanced-settings/email-advanced-settings.component';\nimport { UnsavedChangesDialogComponent } from './components/unsaved-changes-dialog/unsaved-changes-dialog.component';\n\nimport { HoldShiftToChangeNumberFieldByTenDirective } from './directives/hold-shift-to-change-number-field-by-ten.directive';\n\nimport { EmailBuilderComponent } from './email-builder.component';\nimport { OptionalBlockTypeID, EmailContentData } from './types/contentblocks';\nimport { EmailEditorPreviewModule } from '../../email-editor-preview';\nimport { DynamicComponentSelectorModule } from './components/dynamic-component-selector';\nimport { EmailUII18nModule } from '../../src/lib/i18n/email-ui-i18n.module';\n\nimport { HasUnsavedChangesGuard } from './services/has-unsaved-changes.guard';\nimport { EmailPreviewHydrationData, PreviewRenderingService } from './services/preview-rendering.service';\nimport { EMAILBUILDER_UPLOADER_SERVICE_TOKEN, ImageUploadService } from './services/image-upload.service';\nimport {\n AppListingServiceInterface,\n EMAIL_BUILDER_APP_LISTING_SERVICE_TOKEN,\n} from './services/app-listing-service.interface';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { EMAIL_BUILDER_ENABLED_RECIPES } from './components/email-blocks-list/email-blocks-list.component';\nimport { SuggestContentComponent } from './components/suggest-content-dialog/suggest-content-dialog.component';\nimport { ContentGenerationService } from '@vendasta/email-builder';\nimport { GalaxyButtonLoadingIndicatorModule } from '@vendasta/galaxy/button-loading-indicator';\nimport { GalaxyTooltipModule } from '@vendasta/galaxy/tooltip';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\nimport { ImageGenerationDialogComponent } from '@galaxy/content-generation';\nimport { FeatureFlagEnabledService } from './services/feature-flag.service';\nimport { ContainsValidDynamicContentDirective } from '@vendasta/shared';\n\nexport { AppListingServiceInterface, EMAIL_BUILDER_APP_LISTING_SERVICE_TOKEN };\nexport { EMAIL_BUILDER_ENABLED_RECIPES };\n\nexport { EmailBuilderComponent };\nexport { HasUnsavedChangesGuard };\nexport { PreviewRenderingService };\n\nexport { EmailSetup };\n\nexport {\n AdvancedSections,\n ALL_ADVANCED_SECTIONS_ENABLED,\n} from './components/email-advanced-settings/email-advanced-settings.component';\n\nexport { EmailContentData, EmailPreviewHydrationData, OptionalBlockTypeID, EMAILBUILDER_UPLOADER_SERVICE_TOKEN };\n\nconst MODULE_IMPORTS = [\n HttpClientModule,\n CommonModule,\n MatIconModule,\n MatCheckboxModule,\n MatButtonModule,\n MatButtonToggleModule,\n GalaxyTooltipModule,\n MatExpansionModule,\n MatMenuModule,\n MatDividerModule,\n MatTooltipModule,\n MatTabsModule,\n FormsModule,\n DragDropModule,\n CdkScrollableModule,\n GalaxyResizeModule,\n GalaxyButtonGroupModule,\n GalaxyFormFieldModule,\n GalaxyUploaderModule,\n GalaxySnackbarModule,\n GalaxyLoadingSpinnerModule,\n GalaxyButtonLoadingIndicatorModule,\n MatInputModule,\n MatProgressSpinnerModule,\n MatDialogModule,\n MatSelectModule,\n MatAutocompleteModule,\n ReactiveFormsModule,\n TranslateModule,\n EmailEditorPreviewModule,\n EmailUII18nModule,\n LexiconModule.forChild(),\n DynamicComponentSelectorModule,\n UnsavedChangesDialogComponent,\n CoreModule,\n GalaxySnackbarModule,\n ImageGenerationDialogComponent,\n];\n\n@NgModule({\n declarations: [\n EmailBuilderComponent,\n EmailAdvancedSettingsComponent,\n EmailBlocksListComponent,\n EmailBlockPaddingComponent,\n ImageBlockComponent,\n HeadingBlockComponent,\n RichTextBlockComponent,\n ButtonBlockComponent,\n DividerBlockComponent,\n SpacerBlockComponent,\n HtmlBlockComponent,\n HoldShiftToChangeNumberFieldByTenDirective,\n RichTextEditorComponent,\n ContactCardComponent,\n SimpleTableBlockComponent,\n ImageAndTextBlockComponent,\n SuggestContentComponent,\n ContainsValidDynamicContentDirective,\n ],\n imports: [...MODULE_IMPORTS, ReviewRequestLinksBlockComponent, GalaxyBadgeModule],\n exports: [EmailBuilderComponent],\n providers: [\n ContentGenerationService,\n PreviewRenderingService,\n HasUnsavedChangesGuard,\n ImageUploadService,\n FeatureFlagEnabledService,\n ],\n})\nexport class EmailBuilderModule {}\n"],"mappings":"uxGAYA,IAAIA,GAAyB,SAAUA,EAAW,CAChD,OAAAA,EAAUA,EAAU,mBAAwB,CAAC,EAAI,qBACjDA,EAAUA,EAAU,mBAAwB,CAAC,EAAI,qBACjDA,EAAUA,EAAU,yBAA8B,CAAC,EAAI,2BACvDA,EAAUA,EAAU,kBAAuB,CAAC,EAAI,oBACzCA,CACT,EAAEA,IAAa,CAAC,CAAC,EAgCjB,SAASC,GAAkBC,EAASC,EAAO,CACzC,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CACA,IAAMC,GAAN,MAAMC,CAAkC,CACtC,OAAO,UAAUC,EAAO,CACtB,IAAIC,EAAI,IAAIF,EACZ,OAAAE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYN,GAAkBO,GAAWF,EAAM,SAAS,GAExDA,EAAM,SACRC,EAAE,OAASE,GAAkB,UAAUH,EAAM,MAAM,GAE9CC,CACT,CACA,YAAYG,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,oBAAwB,MACtCA,EAAS,oBAAyB,KAAK,qBAErC,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE5EA,CACT,CACF,EACMC,GAAN,MAAMC,CAAkC,CACtC,OAAO,UAAUP,EAAO,CACtB,IAAIC,EAAI,IAAIM,EACZ,OAAAN,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYN,GAAkBO,GAAWF,EAAM,SAAS,GAErDC,CACT,CACA,YAAYG,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACMG,GAAN,MAAMC,CAAqB,CACzB,OAAO,UAAUT,EAAO,CACtB,IAAIC,EAAI,IAAIQ,EACZ,OAAAR,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAE7BC,CACT,CACA,YAAYG,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,oBAAwB,MACtCA,EAAS,oBAAyB,KAAK,qBAErC,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAE9BA,CACT,CACF,EACMK,GAAN,MAAMC,CAA+B,CACnC,OAAO,UAAUX,EAAO,CACtB,IAAIC,EAAI,IAAIU,EACZ,OAAAV,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYN,GAAkBO,GAAWF,EAAM,SAAS,GAErDC,CACT,CACA,YAAYG,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACMO,GAAN,MAAMC,CAAgC,CACpC,OAAO,UAAUb,EAAO,CACtB,IAAIC,EAAI,IAAIY,EACZ,OAAAZ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWO,GAAqB,UAAUR,EAAM,QAAQ,GAErDC,CACT,CACA,YAAYG,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACMS,GAAN,MAAMC,CAAgC,CACpC,OAAO,UAAUf,EAAO,CACtB,IAAIC,EAAI,IAAIc,EACZ,OAAAd,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYN,GAAkBO,GAAWF,EAAM,SAAS,GAErDC,CACT,CACA,YAAYG,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EACMW,GAAN,MAAMC,CAAiC,CACrC,OAAO,UAAUjB,EAAO,CACtB,IAAIC,EAAI,IAAIgB,EACZ,OAAAhB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAIQ,GAAqB,SAAS,GAE3DP,CACT,CACA,YAAYG,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMa,GAAN,MAAMC,CAAiC,CACrC,OAAO,UAAUnB,EAAO,CACtB,IAAIC,EAAI,IAAIkB,EACZ,OAAAlB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYN,GAAkBO,GAAWF,EAAM,SAAS,GAExDA,EAAM,gBACRC,EAAE,cAAgBmB,GAAoB,UAAUpB,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYG,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACMgB,GAAN,MAAMC,CAAkC,CACtC,OAAO,UAAUtB,EAAO,CACtB,IAAIC,EAAI,IAAIqB,EACZ,OAAArB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAIQ,GAAqB,SAAS,GAE9DR,EAAM,iBACRC,EAAE,eAAiBsB,GAAsB,UAAUvB,EAAM,cAAc,GAElEC,CACT,CACA,YAAYG,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACMe,GAAN,MAAMI,CAAoB,CACxB,OAAO,UAAUxB,EAAO,CACtB,IAAIC,EAAI,IAAIuB,EACZ,OAAAvB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEnCC,CACT,CACA,YAAYG,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMkB,GAAN,MAAME,CAAsB,CAC1B,OAAO,UAAUzB,EAAO,CACtB,IAAIC,EAAI,IAAIwB,EACZ,OAAAxB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYG,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMqB,GAAN,MAAMC,CAAmC,CACvC,OAAO,UAAU3B,EAAO,CACtB,IAAIC,EAAI,IAAI0B,EACZ,OAAA1B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYN,GAAkBO,GAAWF,EAAM,SAAS,GAExDA,EAAM,gBACRC,EAAE,cAAgBmB,GAAoB,UAAUpB,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYG,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACMuB,GAAN,MAAMC,CAAoC,CACxC,OAAO,UAAU7B,EAAO,CACtB,IAAIC,EAAI,IAAI4B,EACZ,OAAA5B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAIQ,GAAqB,SAAS,GAE9DR,EAAM,iBACRC,EAAE,eAAiBsB,GAAsB,UAAUvB,EAAM,cAAc,GAErEA,EAAM,OACRC,EAAE,KAAO,SAASD,EAAM,KAAM,EAAE,GAE3BC,CACT,CACA,YAAYG,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEvG,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEnBA,CACT,CACF,EACMyB,GAAN,MAAMC,CAAsB,CAC1B,OAAO,UAAU/B,EAAO,CACtB,IAAIC,EAAI,IAAI8B,EACZ,OAAA9B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYG,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACM2B,GAAN,MAAMC,CAAuB,CAC3B,OAAO,UAAUjC,EAAO,CACtB,IAAIC,EAAI,IAAIgC,EACZ,OAAAhC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYG,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMF,GAAN,MAAM+B,CAAkB,CACtB,OAAO,UAAUlC,EAAO,CACtB,IAAIC,EAAI,IAAIiC,EACZ,OAAAjC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYG,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACM8B,GAAN,MAAMC,CAAkC,CACtC,OAAO,UAAUpC,EAAO,CACtB,IAAIC,EAAI,IAAImC,EACZ,OAAAnC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYN,GAAkBO,GAAWF,EAAM,SAAS,GAErDC,CACT,CACA,YAAYG,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,oBAAwB,MACtCA,EAAS,oBAAyB,KAAK,qBAErC,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAE9BA,CACT,CACF,EAIMgC,IAAe,OAAS,OAAO,YAAiB,SAAW,OAC3DC,GAAU,CACd,MAAS,uCACT,KAAQ,GACR,KAAQ,mCACR,KAAQ,mCACR,WAAc,kCAChB,EACIC,IAA4B,IAAM,CACpC,MAAMA,CAAY,CAChB,IAAI,MAAO,CACT,OAAOD,GAAQD,GAAY,YAAY,CAAC,CAC1C,CACA,IAAI,gBAAiB,CACnB,MAAO,WAAa,KAAK,IAC3B,CACF,CACA,OAAAE,EAAY,UAAO,SAA6BC,EAAG,CACjD,OAAO,IAAKA,GAAKD,EACnB,EACAA,EAAY,WAA0BE,EAAmB,CACvD,MAAOF,EACP,QAASA,EAAY,UACrB,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAMCG,IAA4C,IAAM,CACpD,MAAMA,CAA4B,CAChC,YAAYC,EAAMC,EAAa,CAC7B,KAAK,KAAOD,EACZ,KAAK,YAAcC,EACnB,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,eAAeC,EAAG,CAChB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIhB,GAAsBgB,CAAC,EAC7D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,oDAAqDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQjB,GAAuB,UAAUiB,CAAI,CAAC,CAAC,CAC1L,CACF,CACA,OAAAP,EAA4B,UAAO,SAA6CF,EAAG,CACjF,OAAO,IAAKA,GAAKE,GAAgCQ,EAAYC,EAAU,EAAMD,EAASX,EAAW,CAAC,CACpG,EACAG,EAA4B,WAA0BD,EAAmB,CACvE,MAAOC,EACP,QAASA,EAA4B,UACrC,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAMCU,IAAoC,IAAM,CAC5C,MAAMA,CAAoB,CACxB,YAAYT,EAAMC,EAAa,CAC7B,KAAK,KAAOD,EACZ,KAAK,YAAcC,EACnB,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,2BAA2BC,EAAG,CAC5B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIhD,GAAkCgD,CAAC,EACzE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,wDAAyDC,EAAQ,UAAU,EAAGM,GAAAC,GAAA,GAC5G,KAAK,WAAW,GAD4F,CAE/G,QAAS,UACX,EAAC,CACH,CACA,2BAA2BR,EAAG,CAC5B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIX,GAAkCW,CAAC,EACzE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,wDAAyDC,EAAQ,UAAU,EAAGM,GAAAC,GAAA,GAC5G,KAAK,WAAW,GAD4F,CAE/G,QAAS,UACX,EAAC,CACH,CACA,wBAAwBR,EAAG,CACzB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIpC,GAA+BoC,CAAC,EACtE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,qDAAsDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQrC,GAAgC,UAAUqC,CAAI,CAAC,CAAC,CACpM,CACA,yBAAyBH,EAAG,CAC1B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIhC,GAAgCgC,CAAC,EACvE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,sDAAuDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQjC,GAAiC,UAAUiC,CAAI,CAAC,CAAC,CACtM,CACA,0BAA0BH,EAAG,CAC3B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI5B,GAAiC4B,CAAC,EACxE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,uDAAwDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ5B,GAAkC,UAAU4B,CAAI,CAAC,CAAC,CACxM,CACA,2BAA2BH,EAAG,CAC5B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIxC,GAAkCwC,CAAC,EACzE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,wDAAyDC,EAAQ,UAAU,EAAGM,GAAAC,GAAA,GAC5G,KAAK,WAAW,GAD4F,CAE/G,QAAS,UACX,EAAC,CACH,CACA,4BAA4BR,EAAG,CAC7B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIpB,GAAmCoB,CAAC,EAC1E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,yDAA0DC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQrB,GAAoC,UAAUqB,CAAI,CAAC,CAAC,CAC5M,CACF,CACA,OAAAG,EAAoB,UAAO,SAAqCZ,EAAG,CACjE,OAAO,IAAKA,GAAKY,GAAwBF,EAAYC,EAAU,EAAMD,EAASX,EAAW,CAAC,CAC5F,EACAa,EAAoB,WAA0BX,EAAmB,CAC/D,MAAOW,EACP,QAASA,EAAoB,UAC7B,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAOCG,GAA4B,SAAUA,EAAc,CACtD,OAAAA,EAAa,YAAiB,oBAC9BA,EAAa,UAAe,YAC5BA,EAAa,YAAiB,cAC9BA,EAAa,cAAmB,gBAChCA,EAAa,0BAA+B,uCACrCA,CACT,EAAEA,IAAgB,CAAC,CAAC,EAChBC,IAAiC,IAAM,CACzC,MAAMA,CAAiB,CACrB,YAAYC,EAAK,CACf,KAAK,IAAMA,CACb,CACA,kBAAkBC,EAAWC,EAASC,EAAcC,EAAYC,EAAqBC,EAAcC,EAAcC,EAAiBC,EAAQ,CACxI,IAAMC,GAAM,IAAIrE,GAAkC,CAChD,UAAW4D,EACX,QAASC,EACT,aAAcC,EACd,WAAYC,EACZ,oBAAqBC,EACrB,aAAcC,EACd,aAAcC,EACd,gBAAiBC,EACjB,OAAQC,CACV,CAAC,EACD,OAAO,KAAK,IAAI,2BAA2BC,EAAG,EAAE,KAAKnB,EAAI,IAAM,IAAI,CAAC,CACtE,CACA,uBAAuBU,EAAWC,EAASC,EAAcC,EAAYC,EAAqBC,EAAcC,EAAcC,EAAiB,CACrI,IAAME,EAAM,IAAIhC,GAAkC,CAChD,UAAWuB,EACX,QAASC,EACT,aAAcC,EACd,WAAYC,EACZ,oBAAqBC,EACrB,aAAcC,EACd,aAAcC,EACd,gBAAiBC,CACnB,CAAC,EACD,OAAO,KAAK,IAAI,2BAA2BE,CAAG,EAAE,KAAKnB,EAAI,IAAM,IAAI,CAAC,CACtE,CACA,YAAYU,EAAWC,EAASC,EAAcC,EAAY,CACxD,IAAMM,EAAM,IAAIzD,GAA+B,CAC7C,UAAWgD,EACX,QAASC,EACT,aAAcC,EACd,WAAYC,CACd,CAAC,EACD,OAAO,KAAK,IAAI,wBAAwBM,CAAG,EAAE,KAAKnB,EAAIC,GAAQA,EAAK,QAAQ,CAAC,CAC9E,CACA,aAAaS,EAAWC,EAASC,EAAcQ,EAAa,CAC1D,IAAMD,EAAM,IAAIrD,GAAgC,CAC9C,UAAW4C,EACX,QAASC,EACT,aAAcC,EACd,YAAaQ,CACf,CAAC,EACD,OAAO,KAAK,IAAI,yBAAyBD,CAAG,EAAE,KAAKnB,EAAIC,GAAQA,EAAK,SAAS,CAAC,CAChF,CACA,gBAAgBS,EAAWC,EAASC,EAAcC,EAAY,CAC5D,IAAMM,EAAM,IAAIzD,GAA+B,CAC7C,UAAWgD,EACX,QAASC,EACT,aAAcC,EACd,WAAYC,CACd,CAAC,EACD,OAAO,KAAK,IAAI,wBAAwBM,CAAG,EAAE,KAAKnB,EAAIC,GAAQA,GAAM,UAAU,YAAY,CAAC,CAC7F,CACA,cAAcS,EAAWC,EAASC,EAAcS,EAAYC,EAAQC,EAAU,CAC5E,IAAMJ,EAAM,IAAIjD,GAAiC,CAC/C,UAAWwC,EACX,QAASC,EACT,aAAcC,EACd,WAAYS,EACZ,cAAe,CACb,OAAQC,EACR,SAAUC,CACZ,CACF,CAAC,EACD,OAAO,KAAK,IAAI,0BAA0BJ,CAAG,EAAE,KAAKnB,EAAIwB,IACtDA,EAAE,UAAYA,EAAE,WAAa,CAAC,EACvBA,EACR,CAAC,CACJ,CACA,gBAAgBd,EAAWC,EAASC,EAAcS,EAAYE,EAAUD,EAAQ,CAC9E,IAAMH,EAAM,IAAIzC,GAAmC,CACjD,UAAWgC,EACX,QAASC,EACT,aAAcC,EACd,WAAYS,EACZ,cAAe,IAAIjD,GAAoB,CACrC,OAAQkD,EACR,SAAUC,CACZ,CAAC,CACH,CAAC,EACD,OAAO,KAAK,IAAI,4BAA4BJ,CAAG,EAAE,KAAKnB,EAAIwB,IACxDA,EAAE,UAAYA,EAAE,WAAa,CAAC,EACvBA,EACR,CAAC,CACJ,CACA,eAAed,EAAWC,EAASC,EAAcC,EAAY,CAC3D,IAAMM,EAAM,IAAI7D,GAAkC,CAChD,UAAWoD,EACX,QAASC,EACT,aAAcC,EACd,WAAYC,CACd,CAAC,EACD,OAAO,KAAK,IAAI,2BAA2BM,CAAG,CAChD,CACF,CACA,OAAAX,EAAiB,UAAO,SAAkChB,EAAG,CAC3D,OAAO,IAAKA,GAAKgB,GAAqBN,EAASE,EAAmB,CAAC,CACrE,EACAI,EAAiB,WAA0Bf,EAAmB,CAC5D,MAAOe,EACP,QAASA,EAAiB,UAC1B,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAICiB,IAAyC,IAAM,CACjD,MAAMA,CAAyB,CAC7B,YAAYhB,EAAK,CACf,KAAK,IAAMA,CACb,CACA,eAAeiB,EAAQ,CACrB,IAAMP,EAAM,IAAIrC,GAAsB,CACpC,OAAQ4C,CACV,CAAC,EACD,OAAO,KAAK,IAAI,eAAeP,CAAG,EAAE,KAAKnB,EAAIC,GAAQA,EAAK,OAAO,CAAC,CACpE,CACF,CACA,OAAAwB,EAAyB,UAAO,SAA0CjC,EAAG,CAC3E,OAAO,IAAKA,GAAKiC,GAA6BvB,EAASR,EAA2B,CAAC,CACrF,EACA+B,EAAyB,WAA0BhC,EAAmB,CACpE,MAAOgC,EACP,QAASA,EAAyB,UAClC,WAAY,MACd,CAAC,EACMA,CACT,GAAG,ECx0BH,IAAaE,IAA+B,IAAA,CAAtC,IAAOA,EAAP,MAAOA,CAA+B,CAE1CC,YACmBC,EACoDC,EAA6C,CADjG,KAAAD,iBAAAA,EACoD,KAAAC,kBAAAA,EAH/D,KAAAC,yBAA+C,CAAA,CAIpD,CAEIC,wBAAsB,CAC3B,OAAO,KAAKD,yBAAyBE,OAAS,CAChD,CAEOC,aAAaC,EAA0D,CAC5E,OAAO,KAAKN,iBACTO,2BAA2BD,CAAO,EAClCE,KAAKC,EAAKC,GAAW,KAAKC,6BAA6BD,CAAM,CAAC,CAAC,CACpE,CAEQC,6BAA6BD,EAA+B,CAClE,OAAO,KAAKR,yBAAyBO,IAAKG,IAAO,CAC/CC,QAASD,EAAEC,QACXC,gBAAiBF,EAAEE,gBACnBC,QAASH,EAAEG,QACXC,SAAUN,EACPO,OAAQC,GAAMN,EAAEE,gBAAgBK,KAAMC,GAAMA,IAAMF,EAAEG,cAAc,CAAC,EACnEC,KAAK,SAAUC,EAAGC,EAAC,CAClB,OAAOZ,EAAEE,gBAAgBW,QAAQF,EAAEF,cAAc,EAAIT,EAAEE,gBAAgBW,QAAQD,EAAEH,cAAc,CACjG,CAAC,GACH,CACJ,CAEOK,iCAA+B,CACpC,OAAO,KAAKzB,kBAAkB0B,uBAAsB,EAAGnB,KAAKoB,GAAK,CAAC,CAAC,CACrE,CAEOC,iCAAiCC,EAAsC,CAC5E,OAAQ,KAAK5B,yBAA2B4B,CAC1C,yCApCWhC,GAA+BiC,EAAAC,EAAA,EAAAD,EAIhCE,GAAuC,CAAA,CAAA,CAAA,wBAJtCnC,EAA+BoC,QAA/BpC,EAA+BqC,SAAA,CAAA,EAAtC,IAAOrC,EAAPsC,SAAOtC,CAA+B,GAAA,4BE1BlCuC,EAAA,EAAA,aAAA,EAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,0BAF+CC,EAAA,QAAAC,CAAA,EAC7CC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAAH,EAAAI,OAAA,EAAA,GAAA,6BAYAR,EAAA,EAAA,aAAA,EAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,0BAF6DC,EAAA,QAAAM,CAAA,EAC3DJ,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAAE,EAAAC,WAAA,EAAA,GAAA,sCARVC,EAAA,CAAA,EACEX,EAAA,EAAA,gBAAA,EAAgB,EAAA,gBAAA,EACE,EAAA,WAAA,EAEZC,EAAA,CAAA,mBACFC,EAAA,EACAF,EAAA,EAAA,aAAA,CAAA,EAAqBY,EAAA,cAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,CAAA,EAAAC,OAAAC,EAAAH,EAAAI,YAAAP,CAAA,IAAAG,EAAAI,YAAAP,GAAAQ,EAAAR,CAAA,CAAA,CAAA,EAAwBS,EAAA,kBAAA,UAAA,CAAAR,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,CAAA,EAAA,OAAAI,EAAmBL,EAAAO,kBAAA,CAAmB,CAAA,CAAA,EACjFC,EAAA,EAAAC,GAAA,EAAA,EAAA,aAAA,CAAA,EAGFvB,EAAA,EAAa,EACE,yBAPbG,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAAS,EAAAU,eAAAlB,OAAA,EAAA,GAAA,EAEmBH,EAAA,CAAA,EAAAsB,EAAA,QAAAX,EAAAI,WAAA,EACcf,EAAA,EAAAF,EAAA,UAAAa,EAAAU,eAAAE,QAAA,6BAiB/B5B,EAAA,EAAA,aAAA,EAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,0BAF4CC,EAAA,QAAA0B,EAAAC,KAAA,EAC1CzB,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAAsB,EAAAE,KAAA,EAAA,GAAA,sCARVpB,EAAA,CAAA,EACEX,EAAA,EAAA,gBAAA,EAAgB,EAAA,gBAAA,EACE,EAAA,WAAA,EAEZC,EAAA,CAAA,mBACFC,EAAA,EACAF,EAAA,EAAA,aAAA,EAAA,EAAqBY,EAAA,cAAA,SAAAC,EAAA,CAAAC,EAAAkB,CAAA,EAAA,IAAAhB,EAAAC,EAAA,CAAA,EAAAC,OAAAC,EAAAH,EAAAiB,mBAAApB,CAAA,IAAAG,EAAAiB,mBAAApB,GAAAQ,EAAAR,CAAA,CAAA,CAAA,EACnBW,EAAA,EAAAU,GAAA,EAAA,EAAA,aAAA,CAAA,EAGFhC,EAAA,EAAa,EACE,kCAPbG,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAAS,EAAAI,YAAAV,WAAA,EAAA,GAAA,EAEmBL,EAAA,CAAA,EAAAsB,EAAA,QAAAX,EAAAiB,kBAAA,EACO5B,EAAA,EAAAF,EAAA,UAAAgC,CAAA,yBAQhCC,EAAA,EAAA,MAAA,EAAA,4BAlBJzB,EAAA,CAAA,EAGEa,EAAA,EAAAa,GAAA,EAAA,EAAA,eAAA,CAAA,eAcAb,EAAA,EAAAc,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,8BAdelC,EAAA,EAAAF,EAAA,OAAAI,EAAA,EAAA,EAAAS,EAAAwB,mBAAA,CAAA,EAAkC,WAAAC,CAAA,sCA5BrD9B,EAAA,CAAA,EACEX,EAAA,EAAA,gBAAA,EAAgB,EAAA,gBAAA,EACE,EAAA,WAAA,EACHC,EAAA,CAAA,mBAAmEC,EAAA,EAC9EF,EAAA,EAAA,aAAA,CAAA,EAAqBY,EAAA,cAAA,SAAAC,EAAA,CAAAC,EAAA4B,CAAA,EAAA,IAAA1B,EAAAC,EAAA,EAAAC,OAAAC,EAAAH,EAAAU,eAAAb,CAAA,IAAAG,EAAAU,eAAAb,GAAAQ,EAAAR,CAAA,CAAA,CAAA,EAA2BS,EAAA,kBAAA,UAAA,CAAAR,EAAA4B,CAAA,EAAA,IAAA1B,EAAAC,EAAA,EAAA,OAAAI,EAAmBL,EAAA2B,qBAAA,CAAsB,CAAA,CAAA,EACvFnB,EAAA,EAAAoB,GAAA,EAAA,EAAA,aAAA,CAAA,EAGF1C,EAAA,EAAa,EACE,EAEnBsB,EAAA,EAAAqB,GAAA,EAAA,EAAA,eAAA,EAAA,EAA8C,EAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,iCAR/BzC,EAAA,CAAA,EAAA0C,EAAAxC,EAAA,EAAA,EAAA,iDAAA,CAAA,EACUF,EAAA,CAAA,EAAAsB,EAAA,QAAAX,EAAAU,cAAA,EACcrB,EAAA,EAAAF,EAAA,UAAA6C,CAAA,EAMxB3C,EAAA,EAAAF,EAAA,OAAAa,EAAAU,iBAAA,IAAA,EAeZrB,EAAA,EAAAF,EAAA,OAAAa,EAAAU,iBAAA,MAAAV,EAAAI,cAAA,OAAAJ,EAAAU,gBAAA,MAAAV,EAAAU,eAAAuB,SAAA,KAAA,KAAAjC,EAAAU,eAAAuB,QAAAC,sBAAA,0BAyCLlD,EAAA,EAAA,mBAAA,EAAA,EAA+B,EAAA,wBAAA,EAE3BC,EAAA,CAAA,mBACFC,EAAA,EAAyB,SADvBG,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,mDAAA,EAAA,GAAA,GD3DN,IAAa4C,IAA+B,IAAA,CAAtC,IAAOA,EAAP,MAAOA,CAA+B,CAuB1CC,YACmBC,EACVC,EAAuE,CAD7D,KAAAD,gCAAAA,EACV,KAAAC,UAAAA,EAxBC,KAAAC,WAA0C,IAAIC,EAC/C,KAAAC,iBAAmB,CAAC,KAAM,IAAI,EAEvC,KAAAC,WAA6C,KAAKL,gCAC/CM,aAAa,CAAEC,YAAa,EAAI,CAAE,EAClCC,KACCC,EAAKC,GACIA,EAAKC,OAAQC,IACVA,GAAGhB,SAASiB,gBAAkB,CAAA,GAAIC,OAAO,CAACC,EAAMC,EAAMC,EAAGC,IACxDH,GAAQ,CAAC,CAAC,KAAKG,EAAID,CAAC,CAAC,EAC3B,EAAI,CACR,CACF,EACDE,GAAY,CAAC,CAAC,EAGlB,KAAA9C,eAAmC,KACnC,KAAAN,YAAqC,KACrC,KAAAa,mBAA6B,KAC7B,KAAAwC,qBAAuB,IAAIC,GAAsB,CAAC,CAM/C,CAEHC,UAAQ,CACN,KAAKnC,oBAAsB,KAAKiC,qBAAqBG,aAAY,EAAGf,KAClEgB,GAAWC,GAAsB,CAC/B,GACEA,IAAuB,eACvBA,IAAuB,qBACvBA,IAAuB,aAEvB,OAAO,KAAKzB,gCAAgC0B,gCAA+B,EAAGlB,KAC5EC,EAAKkB,IACCF,IAAuB,eACzBE,EAAOA,EAAKhB,OAAQiB,GAAM,KAAKxB,iBAAiByB,SAASD,EAAEE,KAAK,CAAC,GAE5DH,EAAKlB,IAAKsB,IACR,CACLrD,MAAOqD,EAAIC,KACXvD,MAAOsD,EAAID,OAEd,EACF,CAAC,CAGR,CAAC,CAAC,CAEN,CAEAxC,sBAAoB,CAClB,KAAKvB,YAAc,KACnB,KAAKa,mBAAqB,IAC5B,CAEAV,mBAAiB,CACf,KAAKU,mBAAqB,MAExB,KAAKb,YAAYkE,iBAAmB,eACpC,KAAKlE,YAAYkE,iBAAmB,qBACpC,KAAKlE,YAAYkE,iBAAmB,eAEpC,KAAKb,qBAAqBc,KAAK,KAAKnE,YAAYkE,cAAc,CAElE,CAEAE,KAAG,CACD,IAAIF,EAAiB,KAAKlE,YAAYkE,eAClC,KAAKrD,qBACPqD,EAAiB,GAAGA,CAAc,KAAK,KAAKrD,kBAAkB,MAEhE,KAAKqB,UAAUmC,MAAM,MAAQH,EAAiB,KAAK,CACrD,CAEAG,OAAK,CACH,KAAKnC,UAAUmC,MAAM,IAAI,CAC3B,yCAhFWtC,GAA+BuC,EAAAC,EAAA,EAAAD,EAAAE,EAAA,CAAA,CAAA,sBAA/BzC,EAA+B0C,UAAA,CAAA,CAAA,gCAAA,CAAA,EAAAC,QAAA,CAAAvC,WAAA,YAAA,EAAAwC,MAAA,GAAAhC,KAAA,GAAAiC,OAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,GAAA,QAAA,UAAA,EAAA,QAAA,UAAA,EAAA,CAAA,WAAA,GAAA,EAAA,cAAA,kBAAA,OAAA,EAAA,CAAA,EAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,GAAA,EAAA,cAAA,OAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,OAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAA,GAAAD,EAAA,EAAA,WCZ5ClG,EAAA,EAAA,qBAAA,CAAA,EAAsC,EAAA,KAAA,CAAA,EACfC,EAAA,CAAA,mBAAsEC,EAAA,EAC3FsB,EAAA,EAAA4E,GAAA,GAAA,EAAA,eAAA,CAAA,eA+CFlG,EAAA,EACAF,EAAA,EAAA,qBAAA,CAAA,EAAoC,EAAA,KAAA,EAC7B,EAAA,SAAA,CAAA,EACwBsB,EAAA,QAAA,UAAA,CAAAJ,OAAAJ,EAAAuF,CAAA,EAAAhF,EAAS8E,EAAAV,MAAA,CAAO,CAAA,CAAA,EACzCxF,EAAA,CAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,SAAA,CAAA,EAGEsB,EAAA,QAAA,UAAA,CAAAJ,OAAAJ,EAAAuF,CAAA,EAAAhF,EAAS8E,EAAAX,IAAA,CAAK,CAAA,CAAA,EAKdvF,EAAA,EAAA,oBACFC,EAAA,EAAS,EACL,EAGRsB,EAAA,GAAA8E,GAAA,EAAA,EAAA,cAAA,KAAA,EAAA/D,EAAA,sBAnEuBlC,EAAA,CAAA,EAAA0C,EAAAxC,EAAA,EAAA,EAAA,oDAAA,CAAA,EACNF,EAAA,CAAA,EAAAF,EAAA,OAAAI,EAAA,EAAA,EAAA4F,EAAAzC,UAAA,CAAA,EAAyB,WAAA6C,CAAA,EAmDpClG,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,sDAAA,EAAA,GAAA,EAMAF,EAAA,CAAA,EAAAF,EAAA,WAAAgG,EAAA/E,cAAA,OAAA+E,EAAAzE,gBAAA,MAAAyE,EAAAzE,eAAAuB,SAAA,KAAA,KAAAkD,EAAAzE,eAAAuB,QAAAC,yBAAA,IAAAiD,EAAAlE,qBAAA,IAAA,EAIA5B,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,mDAAA,EAAA,GAAA;gIDnDA,IAAO4C,EAAPqD,SAAOrD,CAA+B,GAAA,EEL5C,IAAasD,IAAe,IAAA,CAAtB,IAAOA,EAAP,MAAOA,CAAe,CAC1BC,YAAoBC,EAAa,CAAb,KAAAA,IAAAA,CAAgB,CAEpCC,UAAUC,EAA2BC,EAAiB,CACpD,OAAKD,EAAIE,gBAGI,KAAKJ,IAAIK,IAAIC,EAAc,EAC5BC,aAAY,EAAGC,KACzBC,GAAK,EACLC,GAAWC,GACLA,EACKR,EAAKS,OAAOV,EAAIW,MAAM,CAAEC,QAASZ,EAAIY,QAAQC,IAAI,gBAAiB,UAAUJ,CAAS,EAAE,CAAC,CAAE,CAAC,EAE7FR,EAAKS,OAAOV,CAAG,CACvB,CAAC,EAVKC,EAAKS,OAAOV,CAAG,CAY1B,yCAjBWJ,GAAekB,EAAAC,EAAA,CAAA,CAAA,wBAAfnB,EAAeoB,QAAfpB,EAAeqB,SAAA,CAAA,EAAtB,IAAOrB,EAAPsB,SAAOtB,CAAe,GAAA,ECO5B,IAAauB,IAAU,IAAA,CAAjB,IAAOA,EAAP,MAAOA,CAAU,yCAAVA,EAAU,uBAAVA,CAAU,CAAA,4BARV,CACT,CACEC,QAASC,GACTC,SAAUC,GACVC,MAAO,GACR,CACF,CAAA,EAEG,IAAOL,EAAPM,SAAON,CAAU,GAAA,kDEZvBO,EAAA,CAAA,EACEC,EAAA,EAAA,MAAA,CAAA,EACEC,EAAA,EAAA,cAAA,CAAA,EACFC,EAAA,ODkBF,IAAMC,GAA6B,UAOtBC,IAAuB,IAAA,CAA9B,IAAOA,EAAP,MAAOA,CAAuB,CALpCC,aAAA,CAMwB,KAAAC,MAAQ,yBAKrB,KAAAC,QAAe,GACf,KAAAC,KAAY,GACZ,KAAAC,QAAoB,CAC3B,kGAAkG,EAE3F,KAAAC,QAAU,wBAEV,KAAAC,OAA0B,OAE1B,KAAAC,cAAgB,GAMf,KAAAC,YAAoC,IAAIC,EACxC,KAAAC,aAAsD,IAAID,EAGpE,KAAAE,cAAgB,GAGR,KAAAC,cAAgC,CAAA,EAVxC,IAAaC,MAAMA,EAAa,CAC9B,KAAKC,OAASD,CAChB,CAUAE,iBAAe,CACb,KAAKH,cAAcI,KACjB,KAAKR,YAAYS,UAAWJ,GAAS,CACnC,GAAIA,IAAU,GAAI,CAChB,IAAMK,EAAUC,GAAUC,4BAA4B,CAAEP,MAAOA,CAAK,CAAwB,EAC5F,KAAKH,aAAaW,KAAKH,CAAO,CAChC,CACF,CAAC,CAAC,EAIJI,OAAOC,WAAW,IAAK,CACrB,KAAKC,YAAW,CAClB,EAAG,CAAC,CACN,CAEAC,aAAW,CACTC,QAAQC,OAAO,KAAKC,MAAM,EAC1B,KAAKhB,cAAciB,QAASC,GAAgB,CAC1CA,EAAaC,YAAW,CAC1B,CAAC,CACH,CAEAC,gBAAc,CACZ,GAAI,CAAC,KAAKJ,OACR,OAEF,IAAMK,EAAa,KAAKL,OAAOM,WAAU,EACrCD,IAAe,KAAKnB,SAGtB,KAAKN,YAAYa,KAAKY,CAAU,EAChC,KAAKnB,OAASmB,EAElB,CAEOE,cAAY,CACjBC,QAAQC,IAAI,cAAc,EAC1BX,QAAQC,OAAO,KAAKC,MAAM,EAC1BN,OAAOC,WAAW,IAAK,CACrB,KAAKC,YAAW,CAClB,EAAG,CAAC,CACN,CAEAc,eAAeC,EAAY,CACzB,KAAKX,OAAOY,cAAcD,CAAI,CAChC,CAEAE,OAAK,CACH,KAAKC,cAAcC,cAAcF,MAAK,CACxC,CAEAjB,aAAW,CACTE,QAAQkB,QAAU,mEAClBlB,QAAQmB,KAAK,CACXC,mBAAoB,GACpBC,cAAe,aAAajD,EAA0B,GACtDkD,OAAQ,KAAKN,cAAcC,cAE3BM,SAAU,KAAKC,SACfC,MAAO,KAAKA,MACZ7C,OAAQ,KAAKA,OACbJ,QAAS,KAAKA,QACdC,KAAM,KAAKA,KACXC,QAAS,KAAKA,QACdC,QAAS,KAAKA,QACd+C,aAAc,GACdC,2BAA4B,GAC5BC,eAAgB,eAChBC,iBAAkB,KAAKC,iBAAmB,KAC1CC,SAAU,GACVC,MAAQ9B,GAAU,CAChB,KAAKA,OAASA,EACdA,EAAO+B,GAAG,OAAQ,IAAK,CACrB,KAAK/B,OAAOgC,WAAW,KAAK9C,MAAM,CACpC,CAAC,EAED,IAAM+C,EAAgBA,IAAK,CACzB,KAAK7B,eAAc,CACrB,EACAJ,EAAO+B,GAAG,QAASE,CAAa,EAChCjC,EAAO+B,GAAG,SAAUE,CAAa,EACjCjC,EAAO+B,GAAG,aAAcE,CAAa,CACvC,EAEAC,sBAAuB,SAAUC,EAAeC,EAAcC,EAAY,CACxE,EAEFC,kBAAmB,KAAK3D,cAAgB,sBAAwB,GAChE4D,uBAAwBA,IAAK,CAC3B,KAAKxD,cAAgB,EACvB,EACD,CACH,yCA3HWZ,EAAuB,sBAAvBA,EAAuBqE,UAAA,CAAA,CAAA,wBAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,uGAAvBE,EAAAD,EAAAtE,KAAA,oaC9BbL,EAAA,EAAA,WAAA,EAAA,CAAA,EAEA6E,EAAA,EAAAC,GAAA,EAAA,EAAA,eAAA,CAAA,SAAeC,EAAA,CAAA,EAAAC,EAAA,OAAA,CAAAL,EAAA5D,aAAA;wHD4BT,IAAOZ,EAAP8E,SAAO9E,CAAuB,GAAA,qCG9BpC+E,EAAA,EAAA,WAAA,CAAA,mBAIEC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAG,WAAA,CAAY,CAAA,CAAA,EAGrBC,EAAA,EAAA;CAAA,EACFC,EAAA,OAHEC,EAAA,cAAAC,EAAA,EAAA,EAAA,iEAAA,CAAA,EDOF,IAAaC,IAAiC,IAAA,CAAxC,IAAOA,EAAP,MAAOA,CAAiC,CAU5CC,YAAoBC,EAA2BC,EAAgD,CAA3E,KAAAD,OAAAA,EAA2B,KAAAC,gBAAAA,EAJrC,KAAAC,YAAoC,IAAIC,EAE3C,KAAAC,eAAiB,KAAKH,gBAAgBI,uBAAsB,CAE+B,CAElGZ,YAAU,CACU,KAAKO,OAAOM,KAAKC,GAAiC,CAClEC,MAAO,QACPC,OAAQ,QACT,EAEEC,YAAW,EACXC,KAAKC,GAAK,CAAC,CAAC,EACZC,UAAWC,GAAsB,CAC5BA,GACF,KAAKC,eAAeD,CAAG,CAE3B,CAAC,CACL,CAEAC,eAAeC,EAAsB,CACnC,GAAI,KAAKC,kBACP,KAAKA,kBAAkBC,eAAeF,CAAc,EACpDG,OAAOC,WAAW,IAAK,CACrB,KAAKH,kBAAkBI,MAAK,CAC9B,EAAG,CAAC,MACC,CACL,IAAMC,EAAW,KAAKC,OAAOC,eACvBC,EAAS,KAAKF,OAAOG,cAAgBJ,EAErCK,EAAgB,KAAKJ,OAAOK,MAAMC,OAAO,EAAGP,CAAQ,EACpDQ,EAAe,KAAKP,OAAOK,MAAMC,OAAOJ,EAAQ,KAAKF,OAAOK,MAAMG,MAAM,EAExEC,EAAWL,EAAgBX,EAAiBc,EAClD,KAAKP,OAAOK,MAAQI,EACpB,KAAKT,OAAOC,eAAiBF,EAE7B,KAAKpB,YAAY+B,KAAKD,CAAQ,EAG9Bb,OAAOC,WAAW,IAAK,CACrB,KAAKG,OAAOF,MAAK,EACjB,KAAKE,OAAOW,kBAAkBZ,EAAUN,EAAee,OAAST,CAAQ,CAC1E,EAAG,CAAC,CACN,CACF,yCApDWxB,GAAiCqC,EAAAC,EAAA,EAAAD,EAAAE,EAAA,CAAA,CAAA,sBAAjCvC,EAAiCwC,UAAA,CAAA,CAAA,kCAAA,CAAA,EAAAC,OAAA,CAAAC,SAAA,WAAAjB,OAAA,SAAAkB,MAAA,QAAAxB,kBAAA,mBAAA,EAAAyB,QAAA,CAAAxC,YAAA,aAAA,EAAAyC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,QAAA,uBAAA,aAAA,kBAAA,EAAA,cAAA,QAAA,EAAA,MAAA,EAAA,CAAA,aAAA,kBAAA,EAAA,uBAAA,EAAA,QAAA,aAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GCZ9CE,EAAA,EAAAC,GAAA,EAAA,EAAA,WAAA,CAAA,OACGtD,EAAA,OAAAoD,EAAA5C,cAAA;kIDWG,IAAON,EAAPqD,SAAOrD,CAAiC,GAAA,EE4C9C,IAAasD,IAA8B,IAAA,CAArC,IAAOA,EAAP,MAAOA,CAA8B,yCAA9BA,EAA8B,uBAA9BA,CAA8B,CAAA,4BAtB9B,CAACC,EAA+B,EAACC,QAAA,CAG1CC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,EAAiB,CAAA,CAAA,EAIf,IAAOlB,EAAPmB,SAAOnB,CAA8B,GAAA,ECrCrC,SAAUoB,GAASC,EAAa,CACpC,OAAOC,KAAKC,MAAMD,KAAKE,UAAUH,CAAK,CAAC,CACzC,CAEO,IAAMI,GAA6D,IAAIC,GAC5E,mCAAmC,EAG/B,SAAUC,IAAe,CAC7B,IAAMC,EAAaC,GAAO,aAAqB,CAAEC,SAAU,EAAI,CAAE,EAC3DC,EAAgBF,GAAO,iCAAyC,CACpEC,SAAU,GACX,EACKE,EAAkBH,GAAO,mBAA2B,CAAEC,SAAU,EAAI,CAAE,EAE5E,GAAIC,EACF,OAAOA,EAAcE,KACnBC,EAAKC,IACY,CAAEC,KAAMC,GAAWC,qBAAsBC,GAAIJ,EAAKK,cAAc,EAEhF,CAAC,EAEC,GAAIR,EACT,OAAOA,EAAgBC,KACrBC,EAAKC,IACY,CAAEC,KAAMC,GAAWC,qBAAsBC,GAAIJ,CAAI,EAEjE,CAAC,EAEC,GAAIP,EACT,OAAOA,EAAWK,KAChBC,EAAKO,IACY,CAAEL,KAAMC,GAAWK,oBAAqBH,GAAIE,CAAG,EAE/D,CAAC,EAIN,MAAM,IAAIE,MAAM,6CAA6C,CAC/D,CCrDA,IAAaC,IAAqB,IAAA,CAA5B,IAAOA,EAAP,MAAOA,CAAqB,CAHlCC,aAAA,CAIE,KAAAC,qBAA2C,IAAIC,EAE/CC,cAAY,CACV,KAAKF,qBAAqBG,KAAI,CAChC,yCALWL,EAAqB,wBAArBA,EAAqBM,QAArBN,EAAqBO,UAAAC,WAFpB,KAAK,CAAA,EAEb,IAAOR,EAAPS,SAAOT,CAAqB,GAAA,ECElC,IAAaU,GAA0B,IAAA,CAAjC,IAAOA,EAAP,MAAOA,CAA0B,CAYrCC,aAAA,CAVA,KAAAC,2BAAiD,IAAIC,EAG9C,KAAAC,gBAAsC,IAAID,EAG1C,KAAAE,uBAA6C,IAAIF,EAEhD,KAAAG,cAAgC,CAAA,EAItC,KAAKA,cAAcC,KACjB,KAAKL,2BACFM,KAAKC,GAAa,IAAKC,GAAgB,CAAEC,SAAU,EAAI,CAAE,EAAGC,GAAM,EAAE,CAAC,EACrEC,UAAU,IAAK,CACd,KAAKT,gBAAgBU,KAAI,CAC3B,CAAC,CAAC,EAIN,KAAKR,cAAcC,KACjB,KAAKL,2BAA2BM,KAAKC,GAAa,IAAKC,GAAgB,CAAEK,QAAS,EAAI,CAAE,CAAC,EAAEF,UAAU,IAAK,CACxG,KAAKR,uBAAuBS,KAAI,CAClC,CAAC,CAAC,CAEN,CAEAE,aAAW,CACT,KAAKV,cAAcW,QAASC,GAAQA,EAAIC,YAAW,CAAE,CACvD,CAEAC,SAAO,CACL,KAAKlB,2BAA2BY,KAAI,CACtC,yCApCWd,EAA0B,wBAA1BA,EAA0BqB,QAA1BrB,EAA0BsB,UAAAC,WAFzB,KAAK,CAAA,EAEb,IAAOvB,EAAPwB,SAAOxB,CAA0B,GAAA,EC4DhC,IAAMyB,GAAwC,CACnDC,KAAM,KACNC,WAAY,KACZC,YAAa,GACbC,QAAS,CACPC,IAAK,KACLC,OAAQ,MAEVC,UAAW,IAUAC,GAAgD,CAC3D,CACEC,GAAI,QACJC,KAAM,QACNC,KAAM,SAER,CACEF,GAAI,UACJC,KAAM,UACNC,KAAM,eAER,CACEF,GAAI,YACJC,KAAM,YACNC,KAAM,WAER,CACEF,GAAI,kBACJC,KAAM,mBACNC,KAAM,kBAER,CACEF,GAAI,SACJC,KAAM,SACNC,KAAM,WACNC,aAAc,IAEhB,CACEH,GAAI,iBACJC,KAAM,iBACNC,KAAM,kBAER,CACEF,GAAI,eACJC,KAAM,eACNC,KAAM,iBAER,CACEF,GAAI,eACJC,KAAM,eACNC,KAAM,aACNC,aAAc,IAEhB,CACEH,GAAI,UACJC,KAAM,UACNC,KAAM,UAER,CACEF,GAAI,SACJC,KAAM,SACNC,KAAM,YACNC,aAAc,IAEhB,CACEH,GAAI,OACJC,KAAM,WACNC,KAAM,OACNC,aAAc,GACf,EAGSC,GAAZ,SAAYA,EAAmB,CAC7BA,OAAAA,EAAA,qBAAA,uBADUA,CAEZ,EAFYA,IAAmB,CAAA,CAAA,EAIlBC,GAA0E,IAAIC,IAGzF,CACA,CACEF,GAAoBG,qBACpB,CACEP,GAAII,GAAoBG,qBACxBd,WAAY,OACZQ,KAAM,uBACNC,KAAM,cACP,CACF,CACF,gDElJGM,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,iDAAA,EAAA,GAAA,0BAuBFL,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,uCAAA,EAAA,GAAA,0BAwBFL,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,sCAAA,EAAA,GAAA,GD1CC,IAAMC,GAAgC,CAC3CC,WAAY,KACZC,YAAa,QACbC,KAAM,KACNC,YAAa,UACbC,eAAgB,IAQLC,IAAoB,IAAA,CAA3B,IAAOA,EAAP,MAAOA,CAAoB,CAW/BC,YAAoBC,EAAwC,CAAxC,KAAAA,aAAAA,EAVE,KAAAC,MAAQ,qBAEpB,KAAAC,aAAe,IAAIC,EAGtB,KAAAC,+BAAiCC,GAAUC,oCAC3C,KAAAC,cAAgBF,GAAUG,gBAEhB,KAAAC,cAAgC,CAAA,CAEc,CAE/DC,iBAAe,CACb,KAAKD,cAAcE,KACjB,KAAKC,YAAYC,cAAcC,UAAWC,GAAU,CAClD,KAAKb,aAAac,KAAKD,IAAW,OAAO,CAC3C,CAAC,CAAC,EAGJ,KAAKN,cAAcE,KACjB,KAAKC,YAAYK,aAAaH,UAAU,IAAK,CAC3C,KAAKd,aAAakB,QAAO,CAC3B,CAAC,CAAC,CAEN,CAEAC,aAAW,CACT,KAAKV,cAAcW,QAASC,GAAQA,EAAIC,YAAW,CAAE,CACvD,yCA7BWxB,GAAoByB,EAAAC,CAAA,CAAA,CAAA,sBAApB1B,EAAoB2B,UAAA,CAAA,CAAA,oBAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,qGAApBE,EAAAD,EAAA3B,KAAA,o2BCvCbf,EAAA,EAAA,OAAA,KAAA,CAAA,EAA4B,EAAA,iBAAA,EACT,EAAA,YAAA,EACHC,EAAA,CAAA,mBAAmDC,EAAA,EAC/DF,EAAA,EAAA,QAAA,EAAA,CAAA,mBAKE4C,EAAA,gBAAA,SAAAC,EAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAAP,EAAAQ,QAAA3C,WAAAsC,CAAA,IAAAH,EAAAQ,QAAA3C,WAAAsC,GAAAM,EAAAN,CAAA,CAAA,CAAA,EALF3C,EAAA,EAUAF,EAAA,GAAA,mCAAA,CAAA,EAGE4C,EAAA,cAAA,SAAAC,EAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAAP,EAAAQ,QAAA3C,WAAAsC,CAAA,IAAAH,EAAAQ,QAAA3C,WAAAsC,GAAAM,EAAAN,CAAA,CAAA,CAAA,EACD3C,EAAA,EACDkD,EAAA,GAAAC,GAAA,EAAA,EAAA,aAAA,CAAA,EAGFnD,EAAA,EAEAF,EAAA,GAAA,iBAAA,EAAiB,GAAA,YAAA,EACHC,EAAA,EAAA,oBAAoDC,EAAA,EAChEF,EAAA,GAAA,0BAAA,CAAA,EAAyB4C,EAAA,gBAAA,SAAAC,EAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAAP,EAAAQ,QAAA1C,YAAAqC,CAAA,IAAAH,EAAAQ,QAAA1C,YAAAqC,GAAAM,EAAAN,CAAA,CAAA,CAAA,EACvB7C,EAAA,GAAA,oBAAA,CAAA,EAAiCC,EAAA,GAAA,OAAA,EAAKC,EAAA,EACtCF,EAAA,GAAA,oBAAA,CAAA,EAAmCC,EAAA,GAAA,SAAA,EAAOC,EAAA,EAAoB,EACtC,EAG5BF,EAAA,GAAA,iBAAA,EAAiB,GAAA,YAAA,EACHC,EAAA,EAAA,oBAAoDC,EAAA,EAChEF,EAAA,GAAA,QAAA,EAAA,EAA6B4C,EAAA,gBAAA,SAAAC,EAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAAP,EAAAQ,QAAAxC,YAAAmC,CAAA,IAAAH,EAAAQ,QAAAxC,YAAAmC,GAAAM,EAAAN,CAAA,CAAA,CAAA,EAA7B3C,EAAA,EACAF,EAAA,GAAA,QAAA,GAAA,CAAA,EAGE4C,EAAA,gBAAA,SAAAC,EAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAAP,EAAAQ,QAAAxC,YAAAmC,CAAA,IAAAH,EAAAQ,QAAAxC,YAAAmC,GAAAM,EAAAN,CAAA,CAAA,CAAA,EAHF3C,EAAA,EAQAkD,EAAA,GAAAE,GAAA,EAAA,EAAA,aAAA,CAAA,EAGFpD,EAAA,EAEAF,EAAA,GAAA,iBAAA,EAAiB,GAAA,YAAA,EACHC,EAAA,EAAA,oBAAmDC,EAAA,EAC/DF,EAAA,GAAA,QAAA,GAAA,CAAA,EAOE4C,EAAA,gBAAA,SAAAC,EAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAAP,EAAAQ,QAAAzC,KAAAoC,CAAA,IAAAH,EAAAQ,QAAAzC,KAAAoC,GAAAM,EAAAN,CAAA,CAAA,CAAA,EAPF3C,EAAA,EAYAF,EAAA,GAAA,mCAAA,CAAA,EAGE4C,EAAA,cAAA,SAAAC,EAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAAP,EAAAQ,QAAAzC,KAAAoC,CAAA,IAAAH,EAAAQ,QAAAzC,KAAAoC,GAAAM,EAAAN,CAAA,CAAA,CAAA,EACD3C,EAAA,EAEDkD,EAAA,GAAAG,GAAA,EAAA,EAAA,aAAA,CAAA,EAGFrD,EAAA,EAAkB,oDApEJC,EAAA,CAAA,EAAAqD,EAAAnD,EAAA,EAAA,GAAA,iCAAA,CAAA,EAOVF,EAAA,CAAA,EAAAsD,EAAA,cAAApD,EAAA,EAAA,GAAA,sBAAA,CAAA,EADAqD,EAAA,UAAAhB,EAAAQ,QAAA3C,UAAA,EAOAJ,EAAA,CAAA,EAAAwD,EAAA,SAAAC,CAAA,EACAF,EAAA,QAAAhB,EAAAQ,QAAA3C,UAAA,EAEWJ,EAAA,EAAAwD,EAAA,OAAAE,EAAAC,SAAA,yBAAA,GAAAD,EAAAE,OAAA,EAMD5D,EAAA,CAAA,EAAAqD,EAAAnD,EAAA,GAAA,GAAA,kCAAA,CAAA,EACaF,EAAA,CAAA,EAAAuD,EAAA,UAAAhB,EAAAQ,QAAA1C,WAAA,EAObL,EAAA,CAAA,EAAAqD,EAAAnD,EAAA,GAAA,GAAA,kCAAA,CAAA,EACiBF,EAAA,CAAA,EAAAuD,EAAA,UAAAhB,EAAAQ,QAAAxC,WAAA,EAI3BP,EAAA,EAAAuD,EAAA,UAAAhB,EAAAQ,QAAAxC,WAAA,EAEAiD,EAAA,UAAAjB,EAAArB,aAAA,EAGWlB,EAAA,CAAA,EAAAwD,EAAA,OAAAK,EAAAF,SAAA,SAAA,GAAAE,EAAAD,OAAA,EAMD5D,EAAA,CAAA,EAAAqD,EAAAnD,EAAA,GAAA,GAAA,iCAAA,CAAA,EAOVF,EAAA,CAAA,EAAAwD,EAAA,UAAAjB,EAAAxB,8BAAA,EACAwC,EAAA,UAAAhB,EAAAQ,QAAAzC,IAAA,EAOAN,EAAA,CAAA,EAAAwD,EAAA,SAAAM,CAAA,EACAP,EAAA,QAAAhB,EAAAQ,QAAAzC,IAAA,EAGWN,EAAA,EAAAwD,EAAA,OAAAO,EAAAJ,SAAA,SAAA,GAAAI,EAAAH,OAAA;oHD5BX,IAAOnD,EAAPuD,SAAOvD,CAAoB,GAAA,4DGtC/BwD,EAAA,CAAA,EACEC,EAAA,EAAA,iBAAA,EAAiB,EAAA,YAAA,EACHC,EAAA,CAAA,mBAAoDC,EAAA,EAChEF,EAAA,EAAA,MAAA,EAAA,EAA6B,EAAA,MAAA,EAAA,EACoB,EAAA,yBAAA,EAAA,EAK3CG,EAAA,SAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAAUF,EAAAG,WAAA,CAAY,CAAA,CAAA,EACvBP,EAAA,EAAyB,EAE5BF,EAAA,EAAA,MAAA,EAAA,EAAyC,EAAA,MAAA,EAAA,EACH,GAAA,kBAAA,EAAA,EAC6B,GAAA,YAAA,EACjDC,EAAA,EAAA,oBAA8DC,EAAA,EAC1EF,EAAA,GAAA,SAAA,EAAA,EAAiBU,EAAA,gBAAA,SAAAC,EAAA,CAAAP,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAAK,OAAAC,EAAAP,EAAAQ,QAAAC,KAAAJ,CAAA,IAAAL,EAAAQ,QAAAC,KAAAJ,GAAAH,EAAAG,CAAA,CAAA,CAAA,EACfX,EAAA,GAAA,SAAA,EAAA,EAAsBC,EAAA,EAAA,oBAA+DC,EAAA,EACrFF,EAAA,GAAA,SAAA,EAAA,EAAuBC,EAAA,EAAA,oBAAgEC,EAAA,EACvFF,EAAA,GAAA,SAAA,EAAA,EAAsBC,EAAA,EAAA,oBAA+DC,EAAA,EAAS,EACvF,EAEXF,EAAA,GAAA,mBAAA,EAAmB,GAAA,IAAA,EAAA,EACkEC,EAAA,GAAA,MAAA,EAAIC,EAAA,EACvFF,EAAA,GAAA,SAAA,EAAA,EAA2BG,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAG,WAAA,CAAY,CAAA,CAAA,EAC9CR,EAAA,EAAA,oBACFC,EAAA,EAAS,EACS,EAChB,EACF,EACF,wBA5BMc,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,GAAA,kCAAA,CAAA,EAINF,EAAA,CAAA,EAAAG,EAAA,MAAAb,EAAAQ,QAAAM,YAAA,EAA4B,mBAAA,EAAA,EACH,SAAAd,EAAAe,iBAAAC,MAAA,EAORN,EAAA,CAAA,EAAAG,EAAA,YAAA,EAAA,EAAmB,gBAAA,OAAA,EACtBH,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,GAAA,4CAAA,CAAA,EACKF,EAAA,CAAA,EAAAO,EAAA,UAAAjB,EAAAQ,QAAAC,IAAA,EACOC,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,GAAA,6CAAA,CAAA,EACCF,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,GAAA,8CAAA,CAAA,EACDF,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,GAAA,6CAAA,CAAA,EAIFF,EAAA,CAAA,EAAAG,EAAA,OAAAb,EAAAQ,QAAAM,aAAAI,EAAA,EAEpBR,EAAA,CAAA,EAAAS,EAAA,IAAAP,EAAA,GAAA,GAAA,wCAAA,EAAA,GAAA,sCAUZlB,EAAA,EAAA,iBAAA,EAAiB,EAAA,YAAA,EACHC,EAAA,CAAA,mBAAoDC,EAAA,EAChEF,EAAA,EAAA,sBAAA,GAAA,CAAA,mBAKEG,EAAA,eAAA,SAAAQ,EAAA,CAAAP,EAAAsB,CAAA,EAAA,IAAApB,EAAAC,EAAA,EAAA,OAAAC,EAAgBF,EAAAqB,SAAAhB,CAAA,CAAgB,CAAA,CAAA,EAAC,oBAAA,SAAAA,EAAA,CAAAP,EAAAsB,CAAA,EAAA,IAAApB,EAAAC,EAAA,EAAA,OAAAC,EACZF,EAAAsB,iBAAAjB,CAAA,CAAwB,CAAA,CAAA,EAC9CT,EAAA,EAAsB,QARXc,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,kCAAA,CAAA,EAGVF,EAAA,CAAA,EAAAG,EAAA,aAAA,EAAA,EAAmB,WAAA,CAAA,EACL,WAAAD,EAAA,EAAA,EAAA,oBAAA,CAAA,0BAyBlBlB,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEc,EAAA,EAAAS,EAAA,IAAAP,EAAA,EAAA,EAAA,iDAAA,EAAA,GAAA,0BAqBFlB,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEc,EAAA,EAAAS,EAAA,IAAAP,EAAA,EAAA,EAAA,iDAAA,EAAA,GAAA,0BAsCAlB,EAAA,EAAA,KAAA,EAAoG,EAAA,YAAA,EAEhGC,EAAA,CAAA,mBACFC,EAAA,EAAa,SADXc,EAAA,CAAA,EAAAS,EAAA,IAAAP,EAAA,EAAA,EAAA,iDAAA,EAAA,GAAA,sCAjCNnB,EAAA,CAAA,EACEC,EAAA,EAAA,MAAA,EAAA,EAA6B,EAAA,MAAA,EAAA,EACA,EAAA,QAAA,GAAA,CAAA,mBAOvBU,EAAA,gBAAA,SAAAC,EAAA,CAAA,IAAAkB,EAAAzB,EAAA0B,CAAA,EAAAC,MAAAzB,EAAAC,EAAA,EAAAK,OAAAC,EAAAP,EAAAQ,QAAAkB,eAAAH,CAAA,EAAAlB,CAAA,IAAAL,EAAAQ,QAAAkB,eAAAH,CAAA,EAAAlB,GAAAH,EAAAG,CAAA,CAAA,CAAA,EANFT,EAAA,EAYAF,EAAA,EAAA,mCAAA,CAAA,EAGEU,EAAA,cAAA,SAAAC,EAAA,CAAA,IAAAkB,EAAAzB,EAAA0B,CAAA,EAAAC,MAAAzB,EAAAC,EAAA,EAAAK,OAAAC,EAAAP,EAAAQ,QAAAkB,eAAAH,CAAA,EAAAlB,CAAA,IAAAL,EAAAQ,QAAAkB,eAAAH,CAAA,EAAAlB,GAAAH,EAAAG,CAAA,CAAA,CAAA,EACDT,EAAA,EAAmC,EAGtCF,EAAA,EAAA,SAAA,EAAA,mBAGEG,EAAA,QAAA,UAAA,CAAA,IAAA0B,EAAAzB,EAAA0B,CAAA,EAAAC,MAAAzB,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAA2B,qBAAAJ,CAAA,CAAuB,CAAA,CAAA,EAGhC7B,EAAA,GAAA,UAAA,EAAUC,EAAA,GAAA,OAAA,EAAKC,EAAA,EAAW,EACnB,EAEXgC,EAAA,GAAAC,GAAA,EAAA,EAAA,MAAA,CAAA,gDArBMnB,EAAA,CAAA,EAAAoB,EAAA,cAAAlB,EAAA,EAAA,EAAA,sBAAA,CAAA,EAEAmB,GAAA,OAAA,mBAAAR,EAAA,EAAA,EAHAN,EAAA,UAAAjB,EAAAQ,QAAAkB,eAAAH,CAAA,CAAA,EAQAb,EAAA,CAAA,EAAAG,EAAA,SAAAmB,CAAA,EACAf,EAAA,QAAAjB,EAAAQ,QAAAkB,eAAAH,CAAA,CAAA,EAQFb,EAAA,EAAAG,EAAA,aAAAD,EAAA,EAAA,GAAA,uCAAA,CAAA,EAKEF,EAAA,CAAA,EAAAG,EAAA,OAAAoB,EAAAC,SAAA,yBAAA,GAAAD,EAAAE,OAAA,GDnGL,IAAMC,GAAqC,CAChDtB,aAAc,KACdL,KAAM,QACN4B,YAAa,KACbC,SAAU,KACVZ,eAAgB,CAAC,EAAE,GAQRa,IAAoB,IAAA,CAA3B,IAAOA,EAAP,MAAOA,CAAoB,CAU/BC,YAAoBC,EAA2DC,EAAuB,CAAlF,KAAAD,aAAAA,EAA2D,KAAAC,OAAAA,EATzD,KAAAC,MAAQ,2BAIpB,KAAAC,aAAe,IAAIC,EAE7B,KAAA9B,iBAAmBA,GACF,KAAA+B,cAAgC,CAAA,CAEwD,CAEzGC,iBAAe,CACb,KAAKD,cAAcE,KACjB,KAAKC,YAAYC,KAAKC,aAAaC,UAAU,IAAK,CAChD,KAAKX,aAAaY,QAAO,CAC3B,CAAC,EACD,KAAKJ,YAAYK,cAAcF,UAAWG,GAAU,CAClD,KAAKX,aAAaY,KAAKD,IAAW,OAAO,CAC3C,CAAC,CAAC,CAEN,CACAE,aAAW,CACT,KAAKX,cAAcY,QAASC,GAAQA,EAAIC,YAAW,CAAE,CACvD,CAGAC,8BAA8BpC,EAAYqC,EAAS,CAEjD,OAAOrC,CACT,CAEAtB,YAAU,CACR,KAAKK,QAAQM,aAAe,KAC5B,KAAK2B,aAAaY,QAAO,CAC3B,CAEAhC,SAAS0C,EAAc,CACrB,KAAKvD,QAAQM,aAAeiD,EAAKC,IACjC,KAAKvB,aAAaY,QAAO,CAC3B,CAEA/B,iBAAiBjB,EAAuB,CACtC4D,QAAQC,MAAM,sBAAuB7D,CAAM,EAC3C,KAAKqC,OAAOyB,eAAe,sBAAsB,CACnD,CAEAC,mBAAiB,CACf,KAAK5D,QAAQkB,eAAesB,KAAK,EAAE,CACrC,CACArB,qBAAqBF,EAAa,CAChC,KAAKjB,QAAQkB,eAAe2C,OAAO5C,EAAO,CAAC,CAC7C,yCApDWc,GAAoB+B,EAAAC,CAAA,EAAAD,EAAAE,EAAA,CAAA,CAAA,sBAApBjC,EAAoBkC,UAAA,CAAA,CAAA,oBAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,qGAApBE,EAAAD,EAAAjC,KAAA,ohDCzCbjD,EAAA,EAAA,OAAA,KAAA,CAAA,EACEkC,EAAA,EAAAkD,GAAA,GAAA,GAAA,eAAA,CAAA,EAAyD,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,EAgDzDtF,EAAA,EAAA,iBAAA,EAAiB,EAAA,YAAA,EACHC,EAAA,CAAA,mBAAmDC,EAAA,EAC/DF,EAAA,EAAA,QAAA,EAAA,CAAA,oBAKEU,EAAA,gBAAA,SAAAC,EAAA,CAAAC,OAAAR,EAAAmF,CAAA,EAAA1E,EAAAqE,EAAApE,QAAA6B,YAAAhC,CAAA,IAAAuE,EAAApE,QAAA6B,YAAAhC,GAAAH,EAAAG,CAAA,CAAA,CAAA,EALFT,EAAA,EAUAF,EAAA,GAAA,mCAAA,CAAA,EAGEU,EAAA,cAAA,SAAAC,EAAA,CAAAC,OAAAR,EAAAmF,CAAA,EAAA1E,EAAAqE,EAAApE,QAAA6B,YAAAhC,CAAA,IAAAuE,EAAApE,QAAA6B,YAAAhC,GAAAH,EAAAG,CAAA,CAAA,CAAA,EACDT,EAAA,EACDgC,EAAA,GAAAsD,GAAA,EAAA,EAAA,aAAA,CAAA,EAGFtF,EAAA,EAEAF,EAAA,GAAA,iBAAA,EAAiB,GAAA,YAAA,EACHC,EAAA,EAAA,oBAAkDC,EAAA,EAC9DF,EAAA,GAAA,QAAA,GAAA,CAAA,oBAKEU,EAAA,gBAAA,SAAAC,EAAA,CAAAC,OAAAR,EAAAmF,CAAA,EAAA1E,EAAAqE,EAAApE,QAAA8B,SAAAjC,CAAA,IAAAuE,EAAApE,QAAA8B,SAAAjC,GAAAH,EAAAG,CAAA,CAAA,CAAA,EALFT,EAAA,EAUAF,EAAA,GAAA,mCAAA,CAAA,EAGEU,EAAA,cAAA,SAAAC,EAAA,CAAAC,OAAAR,EAAAmF,CAAA,EAAA1E,EAAAqE,EAAApE,QAAA8B,SAAAjC,CAAA,IAAAuE,EAAApE,QAAA8B,SAAAjC,GAAAH,EAAAG,CAAA,CAAA,CAAA,EACDT,EAAA,EACDgC,EAAA,GAAAuD,GAAA,EAAA,EAAA,aAAA,CAAA,EAGFvF,EAAA,EAEAF,EAAA,GAAA,iBAAA,EAAiB,GAAA,YAAA,EACHC,EAAA,EAAA,oBAA8DC,EAAA,EAE1EgC,EAAA,GAAAwD,GAAA,GAAA,GAAA,eAAA,EAAA,EAqCA1F,EAAA,GAAA,SAAA,EAAA,EAA8DG,EAAA,QAAA,UAAA,CAAAS,OAAAR,EAAAmF,CAAA,EAAA/E,EAAS0E,EAAAR,kBAAA,CAAmB,CAAA,CAAA,EACxFzE,EAAA,EAAA,oBACFC,EAAA,EAAS,EACO,qDAvIHc,EAAA,CAAA,EAAAG,EAAA,OAAA+D,EAAApE,QAAAM,YAAA,EAA4B,WAAAuE,CAAA,EAiD7B3E,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,GAAA,iCAAA,CAAA,EAOVF,EAAA,CAAA,EAAAoB,EAAA,cAAAlB,EAAA,GAAA,GAAA,sBAAA,CAAA,EADAK,EAAA,UAAA2D,EAAApE,QAAA6B,WAAA,EAOA3B,EAAA,CAAA,EAAAG,EAAA,SAAAyE,CAAA,EACArE,EAAA,QAAA2D,EAAApE,QAAA6B,WAAA,EAEW3B,EAAA,EAAAG,EAAA,OAAA0E,EAAArD,SAAA,yBAAA,GAAAqD,EAAApD,OAAA,EAMDzB,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,GAAA,gCAAA,CAAA,EAOVF,EAAA,CAAA,EAAAoB,EAAA,cAAAlB,EAAA,GAAA,GAAA,sBAAA,CAAA,EADAK,EAAA,UAAA2D,EAAApE,QAAA8B,QAAA,EAOA5B,EAAA,CAAA,EAAAG,EAAA,SAAA2E,CAAA,EACAvE,EAAA,QAAA2D,EAAApE,QAAA8B,QAAA,EAEW5B,EAAA,EAAAG,EAAA,OAAA4E,EAAAvD,SAAA,yBAAA,GAAAuD,EAAAtD,OAAA,EAMDzB,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,GAAA,4CAAA,CAAA,EAEmBF,EAAA,CAAA,EAAAG,EAAA,UAAA+D,EAAApE,QAAAkB,cAAA,EAA2B,eAAAkD,EAAAf,6BAAA,EAsCxDnD,EAAA,CAAA,EAAAS,EAAA,IAAAP,EAAA,GAAA,GAAA,oCAAA,EAAA,GAAA;oHD7FA,IAAO2B,EAAPmD,SAAOnD,CAAoB,GAAA,EEpCjC,IAAaoD,IAA0C,IAAA,CAAjD,IAAOA,EAAP,MAAOA,CAA0C,CAGhBC,YAAYC,EAAoB,CAC/DA,EAAMC,MAAQ,UAChB,KAAKC,SAAW,GAChB,KAAKC,WAAU,EAEnB,CACmCC,UAAUJ,EAAoB,CAC3DA,EAAMC,MAAQ,UAChB,KAAKC,SAAW,GAChB,KAAKC,WAAU,EAEnB,CAEAE,YAAoBC,EAAc,CAAd,KAAAA,GAAAA,EAfpB,KAAAJ,SAAW,EAe0B,CAErCC,YAAU,CACJ,KAAKD,SACP,KAAKI,GAAGC,cAAcC,KAAO,GAE7B,KAAKF,GAAGC,cAAcC,KAAO,CAEjC,yCAxBWV,GAA0CW,EAAAC,EAAA,CAAA,CAAA,uBAA1CZ,EAA0Ca,UAAA,CAAA,CAAA,GAAA,yCAAA,EAAA,CAAA,EAAAC,aAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GAA1CE,EAAA,UAAA,SAAAC,EAAA,CAAA,OAAAF,EAAAf,YAAAiB,CAAA,CAAmB,CAAA,EAAuB,QAAA,SAAAA,EAAA,CAAA,OAA1CF,EAAAV,UAAAY,CAAA,CAAiB,CAAA,KAAxB,IAAOlB,EAAPmB,SAAOnB,CAA0C,GAAA,yBCQ1CoB,GAAkC,CAC7CC,aAAc,KACdC,cAAe,MAQJC,IAAqB,IAAA,CAA5B,IAAOA,EAAP,MAAOA,CAAqB,CAOhCC,YAAoBC,EAAwC,CAAxC,KAAAA,aAAAA,EANE,KAAAC,MAAQ,sBAIb,KAAAC,cAAgC,CAAA,CAEc,CAE/DC,iBAAe,CACb,KAAKD,cAAcE,KACjB,KAAKC,YAAYC,KAAKC,aAAaC,UAAU,IAAK,CAChD,KAAKR,aAAaS,QAAO,CAC3B,CAAC,CAAC,CAEN,CACAC,aAAW,CACT,KAAKR,cAAcS,QAASC,GAAQA,EAAIC,YAAW,CAAE,CACvD,yCAlBWf,GAAqBgB,EAAAC,CAAA,CAAA,CAAA,sBAArBjB,EAAqBkB,UAAA,CAAA,CAAA,qBAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,qGAArBE,EAAAD,EAAAlB,KAAA,0fCvBboB,EAAA,EAAA,OAAA,KAAA,CAAA,EAA4B,EAAA,kBAAA,CAAA,EACO,EAAA,YAAA,EACnBC,EAAA,CAAA,mBAAsDC,EAAA,EAClEF,EAAA,EAAA,QAAA,CAAA,mBAOEG,EAAA,gBAAA,SAAAC,EAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAAV,EAAAW,QAAAjC,cAAA4B,CAAA,IAAAN,EAAAW,QAAAjC,cAAA4B,GAAAM,EAAAN,CAAA,CAAA,CAAA,EAPFF,EAAA,EASE,EAGJF,EAAA,EAAA,iBAAA,EAAiB,EAAA,YAAA,EACHC,EAAA,EAAA,oBAAqDC,EAAA,EACjEF,EAAA,GAAA,WAAA,EAAWC,EAAA,EAAA,oBAA0DC,EAAA,EACrEF,EAAA,GAAA,QAAA,CAAA,EAAkDG,EAAA,gBAAA,SAAAC,EAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAAV,EAAAW,QAAAlC,aAAA6B,CAAA,IAAAN,EAAAW,QAAAlC,aAAA6B,GAAAM,EAAAN,CAAA,CAAA,CAAA,EAAlDF,EAAA,EACAF,EAAA,GAAA,QAAA,CAAA,oBAKEG,EAAA,gBAAA,SAAAC,EAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAAV,EAAAW,QAAAlC,aAAA6B,CAAA,IAAAN,EAAAW,QAAAlC,aAAA6B,GAAAM,EAAAN,CAAA,CAAA,CAAA,EALFF,EAAA,EAME,EACc,QAxBJS,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,oCAAA,CAAA,EAOVF,EAAA,CAAA,EAAAG,EAAA,cAAAD,EAAA,EAAA,GAAA,iDAAA,CAAA,EACAE,EAAA,UAAAjB,EAAAW,QAAAjC,aAAA,EAMUmC,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,GAAA,mCAAA,CAAA,EACDF,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,GAAA,wCAAA,CAAA,EACuCF,EAAA,CAAA,EAAAI,EAAA,UAAAjB,EAAAW,QAAAlC,YAAA,EAIhDoC,EAAA,EAAAG,EAAA,cAAAD,EAAA,GAAA,GAAA,sBAAA,CAAA,EAEAE,EAAA,UAAAjB,EAAAW,QAAAlC,YAAA;qHDDA,IAAOE,EAAPuC,SAAOvC,CAAqB,GAAA,gDGF9BwC,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,iDAAA,EAAA,GAAA,0BAwBFL,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,iDAAA,EAAA,GAAA,GDxBC,IAAMC,GAAkC,CAC7CC,MAAO,KACPC,SAAU,KACVC,UAAW,QAQAC,IAAqB,IAAA,CAA5B,IAAOA,EAAP,MAAOA,CAAqB,CAQhCC,YAAoBC,EAAwC,CAAxC,KAAAA,aAAAA,EAPE,KAAAC,MAAQ,sBAGpB,KAAAC,aAAe,IAAIC,EAEZ,KAAAC,cAAgC,CAAA,CAEc,CAE/DC,iBAAe,CACb,KAAKD,cAAcE,KACjB,KAAKC,YAAYC,KAAKC,aAAaC,UAAU,IAAK,CAChD,KAAKV,aAAaW,QAAO,CAC3B,CAAC,EACD,KAAKJ,YAAYK,cAAcF,UAAWG,GAAU,CAClD,KAAKX,aAAaY,KAAKD,IAAW,OAAO,CAC3C,CAAC,CAAC,CAEN,CACAE,aAAW,CACT,KAAKX,cAAcY,QAASC,GAAQA,EAAIC,YAAW,CAAE,CACvD,yCAtBWpB,GAAqBqB,EAAAC,CAAA,CAAA,CAAA,sBAArBtB,EAAqBuB,UAAA,CAAA,CAAA,qBAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,qGAArBE,EAAAD,EAAAvB,KAAA,s4BClCbb,EAAA,EAAA,OAAA,KAAA,CAAA,EAA4B,EAAA,iBAAA,EACT,EAAA,YAAA,EACHC,EAAA,CAAA,mBAAqDC,EAAA,EACjEF,EAAA,EAAA,WAAA,EAAA,CAAA,mBAOEsC,EAAA,gBAAA,SAAAC,EAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAAP,EAAAQ,QAAArC,MAAAgC,CAAA,IAAAH,EAAAQ,QAAArC,MAAAgC,GAAAM,EAAAN,CAAA,CAAA,CAAA,EAKDrC,EAAA,EACDF,EAAA,GAAA,mCAAA,CAAA,EAGEsC,EAAA,cAAA,SAAAC,EAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAAP,EAAAQ,QAAArC,MAAAgC,CAAA,IAAAH,EAAAQ,QAAArC,MAAAgC,GAAAM,EAAAN,CAAA,CAAA,CAAA,EACDrC,EAAA,EACD4C,EAAA,GAAAC,GAAA,EAAA,EAAA,aAAA,CAAA,EAGF7C,EAAA,EAEAF,EAAA,GAAA,iBAAA,EAAiB,GAAA,YAAA,EACHC,EAAA,EAAA,oBAAwDC,EAAA,EACpEF,EAAA,GAAA,WAAA,EAAA,CAAA,oBAIEsC,EAAA,gBAAA,SAAAC,EAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAAP,EAAAQ,QAAApC,SAAA+B,CAAA,IAAAH,EAAAQ,QAAApC,SAAA+B,GAAAM,EAAAN,CAAA,CAAA,CAAA,EAQDrC,EAAA,EACDF,EAAA,GAAA,mCAAA,CAAA,EAGEsC,EAAA,cAAA,SAAAC,EAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAAP,EAAAQ,QAAApC,SAAA+B,CAAA,IAAAH,EAAAQ,QAAApC,SAAA+B,GAAAM,EAAAN,CAAA,CAAA,CAAA,EACDrC,EAAA,EACD4C,EAAA,GAAAE,GAAA,EAAA,EAAA,aAAA,CAAA,EAGF9C,EAAA,EAEAF,EAAA,GAAA,iBAAA,EAAiB,GAAA,YAAA,EACHC,EAAA,EAAA,oBAA0DC,EAAA,EACtEF,EAAA,GAAA,0BAAA,CAAA,EAGEsC,EAAA,gBAAA,SAAAC,EAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAAP,EAAAQ,QAAAnC,UAAA8B,CAAA,IAAAH,EAAAQ,QAAAnC,UAAA8B,GAAAM,EAAAN,CAAA,CAAA,CAAA,EAGAvC,EAAA,GAAA,oBAAA,CAAA,EAAgC,GAAA,WAAA,CAAA,EACNC,EAAA,GAAA,mBAAA,EAAiBC,EAAA,EAAW,EAEtDF,EAAA,GAAA,oBAAA,EAAA,EAAkC,GAAA,WAAA,CAAA,EACRC,EAAA,GAAA,qBAAA,EAAmBC,EAAA,EAAW,EAExDF,EAAA,GAAA,oBAAA,EAAA,EAAiC,GAAA,WAAA,CAAA,EACPC,EAAA,GAAA,oBAAA,EAAkBC,EAAA,EAAW,EACnC,EACI,EACV,4CAnEJC,EAAA,CAAA,EAAA8C,EAAA5C,EAAA,EAAA,GAAA,mCAAA,CAAA,EASVF,EAAA,CAAA,EAAA+C,EAAA,cAAA7C,EAAA,EAAA,GAAA,sBAAA,CAAA,EADA8C,EAAA,UAAAf,EAAAQ,QAAArC,KAAA,EAQAJ,EAAA,CAAA,EAAAiD,EAAA,SAAAC,CAAA,EACAF,EAAA,QAAAf,EAAAQ,QAAArC,KAAA,EAEWJ,EAAA,EAAAiD,EAAA,OAAAE,EAAAC,SAAA,yBAAA,GAAAD,EAAAE,OAAA,EAMDrD,EAAA,CAAA,EAAA8C,EAAA5C,EAAA,GAAA,GAAA,sCAAA,CAAA,EASVF,EAAA,CAAA,EAAA+C,EAAA,cAAA7C,EAAA,GAAA,GAAA,sBAAA,CAAA,EAJA8C,EAAA,UAAAf,EAAAQ,QAAApC,QAAA,EAWAL,EAAA,CAAA,EAAAiD,EAAA,SAAAK,CAAA,EACAN,EAAA,QAAAf,EAAAQ,QAAApC,QAAA,EAEWL,EAAA,EAAAiD,EAAA,OAAAM,EAAAH,SAAA,yBAAA,GAAAG,EAAAF,OAAA,EAMDrD,EAAA,CAAA,EAAA8C,EAAA5C,EAAA,GAAA,GAAA,wCAAA,CAAA,EAIVF,EAAA,CAAA,EAAAgD,EAAA,UAAAf,EAAAQ,QAAAnC,SAAA;qHDtBA,IAAOC,EAAPiD,SAAOjD,CAAqB,GAAA,gDGpBhCkD,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,iDAAA,EAAA,GAAA,GDMG,IAAMC,GAA4B,CACvCC,QAAS;;SAUEC,IAAkB,IAAA,CAAzB,IAAOA,EAAP,MAAOA,CAAkB,CAQ7BC,YAAoBC,EAAwC,CAAxC,KAAAA,aAAAA,EAPE,KAAAC,MAAQ,mBAGpB,KAAAC,aAAe,IAAIC,EAEZ,KAAAC,cAAgC,CAAA,CAEc,CAE/DC,iBAAe,CACb,KAAKD,cAAcE,KACjB,KAAKC,YAAYC,KAAKC,aAAaC,UAAU,IAAK,CAChD,KAAKV,aAAaW,QAAO,CAC3B,CAAC,EACD,KAAKJ,YAAYK,cAAcF,UAAWG,GAAU,CAClD,KAAKX,aAAaY,KAAKD,IAAW,OAAO,CAC3C,CAAC,CAAC,CAEN,CACAE,aAAW,CACT,KAAKX,cAAcY,QAASC,GAAQA,EAAIC,YAAW,CAAE,CACvD,yCAtBWpB,GAAkBqB,EAAAC,CAAA,CAAA,CAAA,sBAAlBtB,EAAkBuB,UAAA,CAAA,CAAA,kBAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,qGAAlBE,EAAAD,EAAAvB,KAAA,kXChCbX,EAAA,EAAA,OAAA,KAAA,CAAA,EAA4B,EAAA,iBAAA,EACT,EAAA,YAAA,EACHC,EAAA,CAAA,mBAAgDC,EAAA,EAC5DF,EAAA,EAAA,WAAA,EAAA,CAAA,EAMEoC,EAAA,gBAAA,SAAAC,EAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAAP,EAAAQ,QAAAnC,QAAA8B,CAAA,IAAAH,EAAAQ,QAAAnC,QAAA8B,GAAAM,EAAAN,CAAA,CAAA,CAAA,EAGDnC,EAAA,EAAW,EAEd0C,EAAA,EAAAC,GAAA,EAAA,EAAA,aAAA,CAAA,EAGF3C,EAAA,qBAfgBC,EAAA,CAAA,EAAA2C,EAAAzC,EAAA,EAAA,EAAA,8BAAA,CAAA,EAOVF,EAAA,CAAA,EAAA4C,EAAA,UAAAb,EAAAQ,QAAAnC,OAAA,EAKSJ,EAAA,CAAA,EAAA6C,EAAA,OAAAC,EAAAC,SAAA,yBAAA,GAAAD,EAAAE,OAAA;kHDkBT,IAAO3C,EAAP4C,SAAO5C,CAAkB,GAAA,EEhC/B,IAAA6C,GAAA,CACE,iBAAoB,CAClB,MAAS,iBACT,cAAiB,2CACjB,aAAgB,oDAClB,EACA,cAAiB,CACf,mBAAsB,wPACtB,iBAAoB,iBACpB,OAAU,SACV,UAAa,WACf,CACF,ECEA,IAAaC,IAA2B,IAAA,CAAlC,IAAOA,EAAP,MAAOA,CAA2B,yCAA3BA,EAA2B,uBAA3BA,CAA2B,CAAA,2BAPpCC,GACAC,GAAcC,SAAS,CACrBC,cAAe,4BACfC,gBAAiBC,GAClB,CAAC,CAAA,CAAA,EAGA,IAAON,EAAPO,SAAOP,CAA2B,GAAA,ECgJxC,IAAIQ,GAA4B,SAAUA,EAAc,CACtD,OAAAA,EAAaA,EAAa,oBAAyB,CAAC,EAAI,sBACxDA,EAAaA,EAAa,oBAAyB,CAAC,EAAI,sBACxDA,EAAaA,EAAa,kBAAuB,CAAC,EAAI,oBAC/CA,CACT,EAAEA,IAAgB,CAAC,CAAC,EAChBC,GAA0B,SAAUA,EAAY,CAClD,OAAAA,EAAWA,EAAW,kBAAuB,CAAC,EAAI,oBAClDA,EAAWA,EAAW,gBAAqB,CAAC,EAAI,kBAChDA,EAAWA,EAAW,gBAAqB,CAAC,EAAI,kBAChDA,EAAWA,EAAW,cAAmB,CAAC,EAAI,gBAC9CA,EAAWA,EAAW,sBAA2B,CAAC,EAAI,wBACtDA,EAAWA,EAAW,eAAoB,CAAC,EAAI,iBAC/CA,EAAWA,EAAW,kBAAuB,CAAC,EAAI,oBAC3CA,CACT,EAAEA,IAAc,CAAC,CAAC,EACdC,GAAqD,SAAUA,EAAuC,CACxG,OAAAA,EAAsCA,EAAsC,+BAAoC,CAAC,EAAI,iCACrHA,EAAsCA,EAAsC,8BAAmC,CAAC,EAAI,gCACpHA,EAAsCA,EAAsC,+BAAoC,CAAC,EAAI,iCACrHA,EAAsCA,EAAsC,gCAAqC,CAAC,EAAI,kCAC/GA,CACT,EAAEA,IAAyC,CAAC,CAAC,EAo2F7C,SAASC,GAAoBC,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CACA,IAAMC,GAAN,MAAMC,CAAO,CACX,OAAO,UAAUC,EAAO,CACtB,IAAIC,EAAI,IAAIF,EACZ,OAAAE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMC,GAAN,MAAMC,CAAW,CACf,OAAO,UAAUL,EAAO,CACtB,IAAIC,EAAI,IAAII,EACZ,OAAAJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EACMG,GAAN,MAAMC,CAAa,CACjB,OAAO,UAAUP,EAAO,CACtB,IAAIC,EAAI,IAAIM,EACZ,OAAAN,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMK,GAAN,MAAMC,CAAc,CAClB,OAAO,UAAUT,EAAO,CACtB,IAAIC,EAAI,IAAIQ,EACZ,OAAAR,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAASD,EAAM,OAAO,IAAIU,GAAY,SAAS,GAE/CV,EAAM,QACRC,EAAE,MAAQD,EAAM,MAAM,IAAIF,GAAO,SAAS,GAErCG,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAE5E,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EACMQ,GAAN,MAAMC,CAAoB,CACxB,OAAO,UAAUZ,EAAO,CACtB,IAAIC,EAAI,IAAIW,EACZ,OAAAX,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQY,GAAY,UAAUb,EAAM,KAAK,GAEzCA,EAAM,SACRC,EAAE,OAASK,GAAa,UAAUN,EAAM,MAAM,GAEzCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAE5E,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE5EA,CACT,CACF,EACMU,GAAN,MAAMC,CAAY,CAChB,OAAO,UAAUd,EAAO,CACtB,IAAIC,EAAI,IAAIa,EACZ,OAAAb,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQ,IAAI,KAAKD,EAAM,KAAK,GAE5BA,EAAM,MACRC,EAAE,IAAM,IAAI,KAAKD,EAAM,GAAG,GAErBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAE5E,OAAO,KAAK,IAAQ,KAAe,KAAK,MAAQ,OAClDA,EAAS,IAAS,cAAe,KAAK,IAAM,KAAK,IAAI,UAAU,EAAI,KAAK,KAEnEA,CACT,CACF,EACMO,GAAN,MAAMK,CAAY,CAChB,OAAO,UAAUf,EAAO,CACtB,IAAIC,EAAI,IAAIc,EACZ,OAAAd,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAII,GAAW,SAAS,GAE/CH,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACMa,GAAN,MAAMC,CAAa,CACjB,OAAO,UAAUjB,EAAO,CACtB,IAAIC,EAAI,IAAIgB,EACZ,OAAAhB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAcO,GAAc,UAAUR,EAAM,WAAW,GAEvDA,EAAM,YACRC,EAAE,UAAY,IAAI,KAAKD,EAAM,SAAS,GAEpCA,EAAM,gBACRC,EAAE,cAAgBU,GAAoB,UAAUX,EAAM,aAAa,GAEjEA,EAAM,WACRC,EAAE,SAAWN,GAAoBuB,GAAYlB,EAAM,QAAQ,GAEzDA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAII,GAAW,SAAS,GAElDJ,EAAM,uBACRC,EAAE,qBAAuBkB,GAAuB,UAAUnB,EAAM,oBAAoB,GAElFA,EAAM,sBACRC,EAAE,oBAAsBmB,GAAsB,UAAUpB,EAAM,mBAAmB,GAE5EC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE9F,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,oBAAwB,MACtCA,EAAS,oBAAyB,KAAK,qBAErC,OAAO,KAAK,qBAAyB,KAAe,KAAK,uBAAyB,OACpFA,EAAS,qBAA0B,cAAe,KAAK,qBAAuB,KAAK,qBAAqB,UAAU,EAAI,KAAK,sBAEzH,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,oBAAwB,KAAe,KAAK,sBAAwB,OAClFA,EAAS,oBAAyB,cAAe,KAAK,oBAAsB,KAAK,oBAAoB,UAAU,EAAI,KAAK,qBAEnHA,CACT,CACF,EACMiB,GAAN,MAAMC,CAAsB,CAC1B,OAAO,UAAUrB,EAAO,CACtB,IAAIC,EAAI,IAAIoB,EACZ,OAAApB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EACMgB,GAAN,MAAMG,CAAuB,CAC3B,OAAO,UAAUtB,EAAO,CACtB,IAAIC,EAAI,IAAIqB,EACZ,OAAArB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgBN,GAAoB4B,GAAuCvB,EAAM,aAAa,GAE3FC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE5BA,CACT,CACF,EAujBA,SAASqB,GAAoBC,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAyEA,IAAMC,GAAN,MAAMC,CAAmB,CACvB,OAAO,UAAUC,EAAO,CACtB,IAAIC,EAAI,IAAIF,EACZ,OAAAE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAIE,GAAW,SAAS,GAE/CD,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMC,GAAN,MAAMC,CAAoB,CACxB,OAAO,UAAUN,EAAO,CACtB,IAAIC,EAAI,IAAIK,EACZ,OAAAL,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY,SAASD,EAAM,UAAW,EAAE,GAExCA,EAAM,kBACRC,EAAE,gBAAkBD,EAAM,gBAAgB,IAAIO,GAAa,SAAS,GAE/DN,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,gBAAoB,KAAe,KAAK,kBAAoB,OAC1EA,EAAS,gBAAqB,cAAe,KAAK,gBAAkB,KAAK,gBAAgB,UAAU,EAAI,KAAK,iBAEvGA,CACT,CACF,EAsIA,IAAMI,GAAN,MAAMC,CAAU,CACd,OAAO,UAAUC,EAAO,CACtB,IAAIC,EAAI,IAAIF,EACZ,OAAAE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEnBA,CACT,CACF,EACMC,GAAN,MAAMC,CAAa,CACjB,OAAO,UAAUL,EAAO,CACtB,IAAIC,EAAI,IAAII,EACZ,OAAAJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE5BA,CACT,CACF,EACMG,GAAN,MAAMC,CAAS,CACb,OAAO,UAAUP,EAAO,CACtB,IAAIC,EAAI,IAAIM,EACZ,OAAAN,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAElBA,CACT,CACF,EA8JA,IAAMK,GAAN,MAAMC,CAAwB,CAC5B,OAAO,UAAUC,EAAO,CACtB,IAAIC,EAAI,IAAIF,EACZ,OAAAE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACMC,GAAN,MAAMC,CAAiB,CACrB,OAAO,UAAUL,EAAO,CACtB,IAAIC,EAAI,IAAII,EACZ,OAAAJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,aACRC,EAAE,WAAaK,GAAa,UAAUN,EAAM,UAAU,GAEpDA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAIO,GAAW,SAAS,GAElDP,EAAM,SACRC,EAAE,OAASO,GAAoBC,GAAcT,EAAM,MAAM,GAEpDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAE3F,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE5BA,CACT,CACF,EACMO,GAAN,MAAMC,CAAkB,CACtB,OAAO,UAAUX,EAAO,CACtB,IAAIC,EAAI,IAAIU,EACZ,OAAAV,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAcD,EAAM,YAAY,IAAIM,GAAa,SAAS,GAEvDL,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACMS,GAAN,MAAMC,CAAmB,CACvB,OAAO,UAAUb,EAAO,CACtB,IAAIC,EAAI,IAAIY,EACZ,OAAAZ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAcD,EAAM,YAAY,IAAII,GAAiB,SAAS,GAE3DH,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EAqDA,IAAMW,GAAN,MAAMC,CAAwB,CAC5B,OAAO,UAAUC,EAAO,CACtB,IAAIC,EAAI,IAAIF,EACZ,OAAAE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,aACRC,EAAE,WAAaC,GAAa,UAAUF,EAAM,UAAU,GAEpDA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAIG,GAAW,SAAS,GAE/CF,CACT,CACA,YAAYG,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAE3F,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMC,GAAN,MAAMC,CAAyB,CAC7B,OAAO,UAAUP,EAAO,CACtB,IAAIC,EAAI,IAAIM,EACZ,OAAAN,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,aACRC,EAAE,WAAaC,GAAa,UAAUF,EAAM,UAAU,GAEpDA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAIG,GAAW,SAAS,GAE/CF,CACT,CACA,YAAYG,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAE3F,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EA0MA,IAAMG,IAAe,OAAS,OAAO,YAAiB,SAAW,OAC3DC,GAAU,CACd,MAAS,iCACT,KAAQ,GACR,KAAQ,kCACR,KAAQ,kCACR,WAAc,iCAChB,EACIC,IAA4B,IAAM,CACpC,MAAMA,CAAY,CAChB,IAAI,MAAO,CACT,OAAOD,GAAQD,GAAY,YAAY,CAAC,CAC1C,CACA,IAAI,gBAAiB,CACnB,MAAO,WAAa,KAAK,IAC3B,CACF,CACA,OAAAE,EAAY,UAAO,SAA6BC,EAAG,CACjD,OAAO,IAAKA,GAAKD,EACnB,EACAA,EAAY,WAA0BE,EAAmB,CACvD,MAAOF,EACP,QAASA,EAAY,UACrB,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EA+nBH,IAAIG,IAAwC,IAAM,CAChD,MAAMA,CAAwB,CAC5B,YAAYC,EAAMC,EAAa,CAC7B,KAAK,KAAOD,EACZ,KAAK,YAAcC,EACnB,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,oBAAoBC,EAAG,CACrB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIE,GAAkBF,CAAC,EACzD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,oDAAqDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKE,EAAIC,GAAQC,GAAmB,UAAUD,CAAI,CAAC,CAAC,CACtL,CACA,kBAAkBJ,EAAG,CACnB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIM,GAAwBN,CAAC,EAC/D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kDAAmDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKE,EAAIC,GAAQG,GAAyB,UAAUH,CAAI,CAAC,CAAC,CAC1L,CACA,aAAaJ,EAAG,CACd,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIQ,GAAmBR,CAAC,EAC1D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,6CAA8CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKE,EAAIC,GAAQK,GAAoB,UAAUL,CAAI,CAAC,CAAC,CAChL,CACA,cAAcJ,EAAG,CACf,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIU,GAASV,CAAC,EAChD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,8CAA+CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKE,EAAIC,GAAQO,GAAU,UAAUP,CAAI,CAAC,CAAC,CACvK,CACA,mBAAmBJ,EAAG,CACpB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIU,GAASV,CAAC,EAChD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mDAAoDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKE,EAAIC,GAAQK,GAAoB,UAAUL,CAAI,CAAC,CAAC,CACtL,CACA,iBAAiBJ,EAAG,CAClB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIY,GAAwBZ,CAAC,EAC/D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,iDAAkDC,EAAQ,UAAU,EAAGY,GAAAC,GAAA,GACrG,KAAK,WAAW,GADqF,CAExG,QAAS,UACX,EAAC,CACH,CACF,CACA,OAAAlB,EAAwB,UAAO,SAAyCmB,EAAG,CACzE,OAAO,IAAKA,GAAKnB,GAA4BoB,EAAYC,EAAU,EAAMD,EAASE,EAAW,CAAC,CAChG,EACAtB,EAAwB,WAA0BuB,EAAmB,CACnE,MAAOvB,EACP,QAASA,EAAwB,UACjC,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EA2dH,IAAIwB,IAAqC,IAAM,CAC7C,MAAMA,CAAqB,CACzB,YAAYC,EAAwB,CAClC,KAAK,uBAAyBA,CAChC,CACA,qBAAqBC,EAAY,CAC/B,OAAO,KAAK,uBAAuB,oBAAoBA,CAAU,CACnE,CACA,YAAYC,EAAO,CACjB,OAAO,KAAK,uBAAuB,aAAaA,CAAK,CACvD,CACA,cAAcC,EAAK,CACjB,IAAMC,EAAa,IAAIC,GAAS,CAC9B,IAAKF,CACP,CAAC,EACD,OAAO,KAAK,uBAAuB,cAAcC,CAAU,CAC7D,CACA,mBAAmBD,EAAK,CACtB,IAAMC,EAAa,IAAIC,GAAS,CAC9B,IAAKF,CACP,CAAC,EACD,OAAO,KAAK,uBAAuB,mBAAmBC,CAAU,CAClE,CACA,iBAAiBE,EAAcC,EAAY,CACzC,IAAMC,EAAgB,IAAIC,GAAwB,CAChD,aAAcH,EACd,eAAgBC,CAClB,CAAC,EACD,OAAO,KAAK,uBAAuB,iBAAiBC,CAAa,CACnE,CACF,CACA,OAAAT,EAAqB,UAAO,SAAsCW,EAAG,CACnE,OAAO,IAAKA,GAAKX,GAAyBY,EAASC,EAAuB,CAAC,CAC7E,EACAb,EAAqB,WAA0Bc,EAAmB,CAChE,MAAOd,EACP,QAASA,EAAqB,UAC9B,WAAY,MACd,CAAC,EACMA,CACT,GAAG,ECxjMH,IAAae,IAAsB,IAAA,CAA7B,IAAOA,EAAP,MAAOA,CAAsB,CACjCC,YAEmBC,EAA0C,CAA1C,KAAAA,qBAAAA,CAChB,CAEHC,sBACEC,EACAC,EACAC,EACAC,EAAmB,CAGnB,IAAMC,EAA4C,CAChDJ,OAAQA,EACRC,KAAMA,EACNC,YAAaA,EACbC,WAAYA,GAAc,GAC1BE,MAAO,YAET,OAAO,KAAKP,qBAAqBQ,YAAYF,CAAY,CAC3D,CAEAG,eAAeC,EAAW,CACxB,IAAIC,EAAW,GACf,OAAO,KAAKX,qBAAqBY,cAAcF,CAAG,EAAEG,KAClDC,EAAKC,IACHJ,EAAW,GAAGI,EAAKC,KAAKC,MAAM,EAAG,EAAE,CAAC,OAC7B,yBAAyBF,EAAKC,IAAI,GAC1C,EACDE,GAAWC,GACF,KAAKC,OAAOD,CAAM,CAC1B,EACDL,EAAKO,GAAgB,CACnB,IAAMC,EAAI,IAAIC,KACd,OAAO,IAAIC,KAAK,CAACH,CAAY,EAAGV,EAAU,CAAEc,KAAMJ,EAAaI,KAAMC,aAAcJ,EAAEK,QAAO,CAAE,CAAE,CAClG,CAAC,CAAC,CAEN,CAEAP,OAAOQ,EAAY,CACjB,OAAOC,GAAKC,MAAMF,CAAI,EAAEG,KAAMC,GAAQA,EAAIhB,KAAI,CAAE,CAAC,CACnD,CAEAiB,sBACE/B,EACAC,EACAC,EACAC,EAAmB,CAEnB,OAAO,KAAKJ,sBAAsBC,EAAQC,EAAMC,EAAaC,CAAU,EAAEQ,KACvEC,EAAKC,GACIA,EAAKmB,gBAAgBpB,IAAKqB,GACxBA,EAAKzB,GACb,CACF,CAAC,CAEN,yCAzDWZ,GAAsBsC,EAEvBC,EAAoB,CAAA,CAAA,wBAFnBvC,EAAsBwC,QAAtBxC,EAAsByC,SAAA,CAAA,EAA7B,IAAOzC,EAAP0C,SAAO1C,CAAsB,GAAA,6EE0B3B2C,EAAA,EAAA,WAAA,EAAA,EAA4DC,EAAA,EAAA,cAAA,EAAYC,EAAA,0BACxEF,EAAA,EAAA,WAAA,EAAA,EAA8DC,EAAA,EAAA,QAAA,EAAMC,EAAA,sCAHxEC,EAAA,CAAA,EACEH,EAAA,EAAA,SAAA,EAAA,EAA8BI,EAAA,QAAA,UAAA,CAAA,IAAAC,EAAAC,EAAAC,CAAA,EAAAC,EAAAH,EAAAI,UAAAC,EAAAL,EAAAM,MAAAC,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAG,YAAAP,EAAAE,CAAA,CAAmB,CAAA,CAAA,EACxDM,EAAA,EAAAC,GAAA,EAAA,EAAA,WAAA,EAAA,EAA4D,EAAAC,GAAA,EAAA,EAAA,WAAA,EAAA,EAE5DC,EAAA,EAAA,MAAA,EAAA,EACFjB,EAAA,gDAJ4DkB,EAAA,EAAAC,EAAA,UAAAC,GAAA,EAAAC,GAAAX,EAAAY,gBAAAd,CAAA,CAAA,EAC/CU,EAAA,EAAAC,EAAA,OAAAT,EAAAY,gBAAAd,CAAA,EACAU,EAAA,EAAAC,EAAA,OAAAT,EAAAY,gBAAAd,CAAA,EACNU,EAAA,EAAAK,EAAA,MAAAjB,EAAAkB,EAAA,sCAGT1B,EAAA,EAAA,SAAA,EAAA,EAA+CI,EAAA,QAAA,UAAA,CAAAE,EAAAqB,CAAA,EAAA,IAAAf,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAgB,SAAA,CAAU,CAAA,CAAA,EAChE5B,EAAA,EAAA,gCAAA,CAAA,eACEA,EAAA,EAAA,UAAA,EAAUC,EAAA,EAAA,KAAA,EAAGC,EAAA,EAAW,EACM,oBAFDkB,EAAA,EAAAC,EAAA,YAAAQ,EAAA,EAAA,EAAAjB,EAAAkB,cAAA,CAAA,GDerC,IAAaC,IAA8B,IAAA,CAArC,IAAOA,EAAP,MAAOA,CAA8B,CAmBzCC,YACSC,EACCC,EACAC,EACSC,EAA8C,CAHxD,KAAAH,UAAAA,EACC,KAAAC,eAAAA,EACA,KAAAC,gBAAAA,EACS,KAAAC,uBAAAA,EAtBX,KAAAC,gBAA4C,IAAIC,GAAyB,EAAK,EAC9E,KAAAC,uBAAmD,IAAID,GAAyB,EAAK,EAC7F,KAAAR,eAAsC,KAAKO,gBAAgBG,aAAY,EACvE,KAAAC,sBAA6C,KAAKF,uBAAuBC,aAAY,EAC7E,KAAAE,iBAA4C,IAAIJ,GAAwB,EAAE,EAClF,KAAAK,iBAAmB,KAAKD,iBAAiBF,aAAY,EAAGI,KACtDC,GAAK,EACLC,GAAQC,GAAM,CAAC,CAACA,CAAC,EACjBC,GAAK,CAACC,EAAKC,IAAS,CAAC,GAAGD,EAAKC,CAAI,EAAG,CAAA,CAAc,EAClDC,EAAKC,GAAQA,EAAIC,MAAM,EAAE,CAAC,CAAC,EAE7B,KAAAC,WAAa,GAEb,KAAAC,cAAgB,GAChB,KAAA/B,cAAgB,EASb,CAEHgC,cAAcC,EAAc,CAC1B,KAAKvB,eAAewB,WAAW,6BAA8B,gBAAiB,QAAS,EAAG,CACxFD,OAAQA,EACT,EACD,KAAKpB,gBAAgBsB,KAAK,EAAI,EAE9B,KAAKvB,uBACFwB,sBAAsBH,EAAQ,YAAa,CAAC,EAC5Cb,KACCO,EAAKU,GAAYA,EAAQ,CAAC,CAAC,EAC3BC,GAAYC,GAAO,CACjB,WAAK5B,gBAAgB6B,eAAe,gCAAgC,EACpE,KAAK3B,gBAAgBsB,KAAK,EAAK,EACzBI,CACR,CAAC,EACDE,GAAI,IAAM,KAAK5B,gBAAgBsB,KAAK,EAAK,CAAC,CAAC,EAE5CO,UAAWC,GAAQ,KAAKzB,iBAAiBiB,KAAKQ,CAAG,CAAC,CACvD,CAEApD,YAAYoD,EAAaxD,EAAa,CACpC,KAAKa,cAAgBb,EACrB,KAAK4C,cAAgBY,CACvB,CAEAvC,UAAQ,CACF,KAAKS,gBAAgB+B,SAAQ,GAGjC,KAAKZ,cAAc,KAAKF,UAAU,CACpC,CAEAe,iBAAiBF,EAAW,CAC1B,KAAK5B,uBAAuBoB,KAAK,EAAI,EACrC,KAAKzB,eAAewB,WAAW,4BAA6B,gBAAiB,QAAS,EAAG,CACvFD,OACD,EACoB,KAAKrB,uBAAuBkC,eAAeH,CAAG,EAEhEvB,KACC2B,GAAK,CAAC,EACNpB,EAAKgB,GAAO,CACV,KAAKlC,UAAUuC,MAAML,CAAG,EACxB,KAAK5B,uBAAuBoB,KAAK,EAAK,CACxC,CAAC,CAAC,EAEHO,UAAS,CACd,CACAO,aAAW,CACT,KAAKxC,UAAUuC,MAAK,CACtB,yCA5EWzC,GAA8B2C,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,CAAA,CAAA,sBAA9B/C,EAA8BgD,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,UAiBPE,EAAc,4EA3CrC,CAACL,EAAsB,CAAC,EAAAM,EAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,cAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,WAAA,GAAA,YAAA,MAAA,EAAA,gBAAA,cAAA,SAAA,EAAA,CAAA,EAAA,iCAAA,EAAA,CAAA,kBAAA,GAAA,QAAA,UAAA,EAAA,QAAA,UAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,QAAA,SAAA,EAAA,CAAA,QAAA,iCAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,GAAA,QAAA,SAAA,cAAA,8BAAA,EAAA,QAAA,UAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,QAAA,SAAA,EAAA,CAAA,QAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,GAAA,EAAA,KAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,gBAAA,mBAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAP,EAAAC,EAAA,CAAA,GAAAD,EAAA,EAAA,WC1BrCjF,EAAA,EAAA,KAAA,CAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,EACAF,EAAA,EAAA,oBAAA,EAAoB,EAAA,iBAAA,EACD,EAAA,YAAA,EAEbC,EAAA,CAAA,mBACFC,EAAA,EACAF,EAAA,EAAA,WAAA,EAAA,CAAA,oBAIEyF,EAAA,gBAAA,SAAAC,EAAA,CAAAC,OAAArF,EAAAsF,CAAA,EAAAC,EAAAX,EAAA5B,WAAAoC,CAAA,IAAAR,EAAA5B,WAAAoC,GAAA5E,EAAA4E,CAAA,CAAA,CAAA,EAEDxF,EAAA,EAAW,EAEdF,EAAA,GAAA,MAAA,CAAA,EAA6C,GAAA,SAAA,CAAA,gBAIzCI,EAAA,QAAA,UAAA,CAAAuF,OAAArF,EAAAsF,CAAA,EAAA9E,EAASoE,EAAA1B,cAAA0B,EAAA5B,UAAA,CAAyB,CAAA,CAAA,EAGlCtD,EAAA,GAAA,gCAAA,CAAA,gBACEC,EAAA,EAAA,oBACFC,EAAA,EAAgC,EACzB,EAEXF,EAAA,GAAA,MAAA,CAAA,EACEgB,EAAA,GAAA8E,GAAA,EAAA,EAAA,eAAA,CAAA,gBAOA9E,EAAA,GAAA+E,GAAA,EAAA,EAAA,SAAA,CAAA,gBAKF7F,EAAA,EAAM,EAERF,EAAA,GAAA,qBAAA,CAAA,EAAgD,GAAA,SAAA,EAAA,EACnBI,EAAA,QAAA,UAAA,CAAAuF,OAAArF,EAAAsF,CAAA,EAAA9E,EAASoE,EAAAT,YAAA,CAAa,CAAA,CAAA,EAC/CxE,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,SAAA,EAAA,gBAIEI,EAAA,QAAA,UAAA,CAAAuF,OAAArF,EAAAsF,CAAA,EAAA9E,EAASoE,EAAAb,iBAAAa,EAAA3B,aAAA,CAA+B,CAAA,CAAA,EAGxCvD,EAAA,GAAA,gCAAA,CAAA,gBACEC,EAAA,EAAA,oBACFC,EAAA,EAAgC,EACzB,gBAxDTkB,EAAA,EAAA4E,EAAA,IAAAnE,EAAA,EAAA,GAAA,wBAAA,EAAA;CAAA,EAKIT,EAAA,CAAA,EAAA4E,EAAA,IAAAnE,EAAA,EAAA,GAAA,+BAAA,EAAA,GAAA,EAKAT,EAAA,CAAA,EAAAK,EAAA,cAAAI,EAAA,GAAA,GAAA,kCAAA,CAAA,EACAoE,EAAA,UAAAf,EAAA5B,UAAA,EASAlC,EAAA,CAAA,EAAAC,EAAA,WAAAQ,EAAA,GAAA,GAAAqD,EAAApD,cAAA,GAAA,CAAAoD,EAAA5B,UAAA,EAE+BlC,EAAA,CAAA,EAAAC,EAAA,YAAAQ,EAAA,GAAA,GAAAqD,EAAApD,cAAA,CAAA,EAC7BV,EAAA,CAAA,EAAA4E,EAAA,IAAAnE,EAAA,GAAA,GAAA,gCAAA,EAAA,GAAA,EAK0BT,EAAA,CAAA,EAAAC,EAAA,UAAAQ,EAAA,GAAA,GAAAqD,EAAAvC,gBAAA,CAAA,EAOuCvB,EAAA,CAAA,EAAAC,EAAA,SAAA6E,EAAArE,EAAA,GAAA,GAAAqD,EAAAvC,gBAAA,IAAA,KAAA,KAAAuD,EAAAC,QAAA,CAAA,EASrE/E,EAAA,CAAA,EAAA4E,EAAA,IAAAnE,EAAA,GAAA,GAAA,sBAAA,EAAA,GAAA,EAKAT,EAAA,CAAA,EAAAC,EAAA,WAAA,CAAA6D,EAAA3B,eAAA1B,EAAA,GAAA,GAAAqD,EAAAzC,qBAAA,CAAA,EAI+BrB,EAAA,CAAA,EAAAC,EAAA,YAAAQ,EAAA,GAAA,GAAAqD,EAAAzC,qBAAA,CAAA,EAC7BrB,EAAA,CAAA,EAAA4E,EAAA,IAAAnE,EAAA,GAAA,GAAA,yBAAA,EAAA,GAAA,kBD3BFuE,GAAYC,GAAAC,GAAAC,EAAAC,GACZC,GACAC,GAAaC,GACbC,GACAC,GACAC,GAAeC,GACfC,GACAC,GACAC,GACAC,GACAC,GAAeC,EACfC,GACAC,GACAC,GAAeC,GAAAC,GAAAC,GACfC,GAAWC,EAAAC,EAAAC,GAAAC,EACXC,GAAqBC,EAAAC,EACrBC,GAAkCC,GAClClD,GAAcmD,EACdC,GACAC,EAAc,EAAAC,OAAA,CAAA;2HAAA,CAAA,CAAA,EAKZ,IAAO1G,EAAP2G,SAAO3G,CAA8B,GAAA,EEnCpC,IAAM4G,GAAsC,IAAIC,GACrD,gEAAgE,EAIrDC,IAAmB,IAAA,CAA1B,IAAOA,EAAP,MAAOA,UAA2BC,EAA0B,CAChEC,YACEC,EACiBC,EAC4CC,EACaC,EAClEC,EAAiB,CAGzB,GADA,MAAMJ,CAAI,EALO,KAAAC,IAAAA,EAC4C,KAAAC,QAAAA,EACa,KAAAC,gBAAAA,EAClE,KAAAC,OAAAA,EAGJ,CAACD,GAAmB,CAACD,EACvB,MAAM,IAAIG,MACR,6GAA6G,CAGnH,CAEAC,aAAaC,EAAkB,CAC7B,OAAI,KAAKJ,gBACA,KAAKA,gBAAgBG,aAAaC,CAAQ,GAEnD,KAAKC,UAAY,wDACb,KAAKP,IAAIQ,eAAc,IAAOC,GAAYC,OAC5C,KAAKH,UAAY,yDAEZ,KAAKN,QAAQU,KAClBC,EAAKC,GAAmB,IAAIC,GAAU,EAAGC,IAAI,aAAcF,EAAOG,IAAI,EAAED,IAAI,WAAYF,EAAOI,EAAE,CAAC,EAClGC,GAAWC,GAAW,MAAMd,aAAaC,EAAUa,CAAM,CAAC,EAC1DC,GAAK,CAAC,CAAC,EAEX,CAEMC,yBAAuB,QAAAC,GAAA,sBAM3B,OAAO,MALW,KAAKnB,OAAOoB,KAAKC,GAAgC,CACjEC,MAAO,QACPC,OAAQ,OACT,EAGEC,YAAW,EACXC,UAAS,EACTC,KAAMC,GAAQ,CACb,GAAIA,EAAM,CACR,IAAMC,EAAgB,CACpBC,QAAS,CAAEC,KAAMC,GAAM,CAAE,EACzBC,KAAML,EAAKK,KACXL,KAAMA,GAGR,OAAO,KAAKzB,aAAa0B,CAAa,EAAEpB,KAAKC,EAAKwB,GAASA,EAAKC,KAAKC,GAAG,CAAC,CAC3E,CACF,CAAC,CACL,2CAnDW1C,GAAkB2C,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAIPG,GAAsB,CAAA,EAAAH,EACtB7C,GAAmC,CAAA,EAAA6C,EAAAI,EAAA,CAAA,CAAA,wBAL9C/C,EAAkBgD,QAAlBhD,EAAkBiD,SAAA,CAAA,EAAzB,IAAOjD,EAAPkD,SAAOlD,CAAmB,GAAA,mDEJ5BmD,EAAA,CAAA,EACEC,EAAA,EAAA,MAAA,EAAA,EACEC,EAAA,CAAA,oCAGAD,EAAA,EAAA,MAAA,EAAA,EAA4B,EAAA,WAAA,EAAA,EACAC,EAAA,EAAA,gBAAA,EAAcC,EAAA,EAAW,EAC/C,sBALNC,EAAA,CAAA,EAAAC,GAAA,IAAAC,EAAA,EAAA,EAAA,qDAAA,EAAA,IAAAC,EAAAC,QAAAC,SAAA,gBAAA,SAAA,MAAA,IAAAH,EAAA,EAAA,EAAA,qDAAA,EAAA,GAAA,EAIYF,EAAA,CAAA,EAAAM,EAAA,SAAA,EAAA,sCA0BZV,EAAA,CAAA,EACEC,EAAA,EAAA,SAAA,EAAA,EAAsBU,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAAC,UAAA,OAAAC,EAAAH,EAAAI,UAA0B,EAAI,CAAA,CAAA,EAClDjB,EAAA,EAAA,UAAA,EAAUC,EAAA,EAAA,aAAA,EAAWC,EAAA,EACrBF,EAAA,EAAA,MAAA,EAAMC,EAAA,CAAA,mBAA+DC,EAAA,EAAO,YAAtEC,EAAA,CAAA,EAAAe,EAAAb,EAAA,EAAA,EAAA,6CAAA,CAAA,sCAIVN,EAAA,CAAA,EACEC,EAAA,EAAA,SAAA,EAAA,EAAsBU,EAAA,QAAA,UAAA,CAAAC,EAAAQ,CAAA,EAAA,IAAAN,EAAAC,EAAA,EAAAC,UAAA,OAAAC,EAAAH,EAAAI,UAA0B,EAAK,CAAA,CAAA,EACnDjB,EAAA,EAAA,UAAA,EAAUC,EAAA,EAAA,aAAA,EAAWC,EAAA,EACrBF,EAAA,EAAA,MAAA,EAAMC,EAAA,CAAA,mBAA6DC,EAAA,EAAO,YAApEC,EAAA,CAAA,EAAAe,EAAAb,EAAA,EAAA,EAAA,2CAAA,CAAA,6BAgDNN,EAAA,CAAA,EACEqB,EAAA,EAAA,MAAA,EAAA,EAIApB,EAAA,EAAA,QAAA,EAAQC,EAAA,CAAA,EAAkBC,EAAA,EAC1BD,EAAA,CAAA,gCAHEE,EAAA,EAAAkB,GAAA,mBAAAR,EAAAS,SAAA,OAAAT,EAAAS,SAAA,IAAA,IAAA,EAEMnB,EAAA,CAAA,EAAAe,EAAAL,EAAAU,OAAA,EACRpB,EAAA,EAAAqB,GAAA,IAAAX,EAAAY,WAAA,IAAAZ,EAAAa,KAAA,GAAA,sCAOF3B,EAAA,CAAA,EACEC,EAAA,EAAA,SAAA,EAAA,mBAEEU,EAAA,QAAA,UAAA,CAAAC,EAAAgB,CAAA,EAAA,IAAAd,EAAAC,EAAA,EAAAC,UAAA,OAAAC,EAAAH,EAAAI,UAA0B,EAAK,CAAA,CAAA,EAG/BjB,EAAA,EAAA,UAAA,EAAUC,EAAA,EAAA,aAAA,EAAWC,EAAA,EAAW,YAFhCC,EAAA,EAAAyB,GAAA,aAAA,IAAAvB,EAAA,EAAA,EAAA,gDAAA,EAAA,GAAA,sCAKJN,EAAA,CAAA,EACEC,EAAA,EAAA,SAAA,EAAA,mBAEEU,EAAA,QAAA,UAAA,CAAAC,EAAAkB,CAAA,EAAA,IAAAhB,EAAAC,EAAA,EAAAC,UAAA,OAAAC,EAAAH,EAAAI,UAA0B,EAAI,CAAA,CAAA,EAG9BjB,EAAA,EAAA,UAAA,EAAUC,EAAA,EAAA,aAAA,EAAWC,EAAA,EAAW,YAFhCC,EAAA,EAAAyB,GAAA,aAAA,IAAAvB,EAAA,EAAA,EAAA,kDAAA,EAAA,GAAA,yBAoBRe,EAAA,EAAA,MAAA,EAAA,qCAIIrB,EAAA,CAAA,EACEC,EAAA,EAAA,kBAAA,EAAA,EAAyC,EAAA,YAAA,EAC3BC,EAAA,CAAA,mBAA4DC,EAAA,EACxEF,EAAA,EAAA,MAAA,EAAA,EACEoB,EAAA,EAAA,MAAA,EAAA,EACApB,EAAA,EAAA,MAAA,EAAA,EAA4B,EAAA,mBAAA,EACP,EAAA,IAAA,EAAA,EAC2DC,EAAA,GAAA,MAAA,EAAIC,EAAA,EAChFF,EAAA,GAAA,SAAA,EAAA,EAAyCU,EAAA,QAAA,UAAA,CAAAC,EAAAmB,CAAA,EAAA,IAAAC,EAAAjB,EAAA,CAAA,EAAAkB,MAAA1B,EAAAQ,EAAA,EAAA,OAAAE,EAASV,EAAA2B,WAAAF,CAAA,CAAa,CAAA,CAAA,EAC7D9B,EAAA,EAAA,oBACFC,EAAA,EAAS,EACS,EAChB,EACF,mCAXMC,EAAA,CAAA,EAAAe,EAAAb,EAAA,EAAA,EAAA,0CAAA,CAAA,EAEiBF,EAAA,CAAA,EAAAkB,GAAA,mBAAA,OAAAR,EAAAS,SAAA,GAAA,EAGDnB,EAAA,CAAA,EAAAM,EAAA,OAAAI,EAAAS,SAAAY,EAAA,EAEpB/B,EAAA,CAAA,EAAAgC,EAAA,IAAA9B,EAAA,GAAA,EAAA,0CAAA,EAAA,GAAA,sCASVL,EAAA,EAAA,kBAAA,EAAA,EAAyC,EAAA,YAAA,EAC3BC,EAAA,CAAA,mBAA4DC,EAAA,EACxEF,EAAA,EAAA,MAAA,EAAA,EAAkC,EAAA,sBAAA,GAAA,CAAA,mBAO9BU,EAAA,eAAA,SAAA0B,EAAA,CAAAzB,EAAA0B,CAAA,EAAA,IAAAN,EAAAjB,EAAA,CAAA,EAAAkB,MAAA1B,EAAAQ,EAAA,EAAA,OAAAE,EAAgBV,EAAAgC,SAAAF,EAAAL,CAAA,CAAmB,CAAA,CAAA,EAAC,oBAAA,SAAAK,EAAA,CAAAzB,EAAA0B,CAAA,EAAA,IAAA/B,EAAAQ,EAAA,CAAA,EAAA,OAAAE,EACfV,EAAAiC,iBAAAH,CAAA,CAAwB,CAAA,CAAA,EAC9ClC,EAAA,EACDF,EAAA,EAAA,SAAA,EAAA,mBAGEU,EAAA,QAAA,UAAA,CAAAC,EAAA0B,CAAA,EAAA,IAAAN,EAAAjB,EAAA,CAAA,EAAAkB,MAAA1B,EAAAQ,EAAA,EAAA,OAAAE,EAASV,EAAAkC,uBAAAT,CAAA,CAAyB,CAAA,CAAA,EAGlCX,EAAA,GAAA,WAAA,EAAA,EACFlB,EAAA,EAAS,EACL,QAnBMC,EAAA,CAAA,EAAAe,EAAAb,EAAA,EAAA,EAAA,0CAAA,CAAA,EAIRF,EAAA,CAAA,EAAAM,EAAA,SAAA,aAAA,EAAwB,aAAA,EAAA,EACL,WAAA,CAAA,EACL,WAAAJ,EAAA,EAAA,EAAA,oBAAA,CAAA,EASdF,EAAA,CAAA,EAAAM,EAAA,cAAAJ,EAAA,EAAA,GAAA,iDAAA,CAAA,0BAuBNL,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAgC,EAAA,IAAA9B,EAAA,EAAA,EAAA,iDAAA,EAAA,GAAA,0BAmBFL,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAgC,EAAA,IAAA9B,EAAA,EAAA,EAAA,iDAAA,EAAA,GAAA,0BAmBFL,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAgC,EAAA,IAAA9B,EAAA,EAAA,EAAA,iDAAA,EAAA,GAAA,0BAgBFL,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAgC,EAAA,IAAA9B,EAAA,EAAA,EAAA,sCAAA,EAAA,GAAA,0BAiBAL,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAgC,EAAA,IAAA9B,EAAA,EAAA,EAAA,iDAAA,EAAA,GAAA,sCAdNN,EAAA,CAAA,EACEC,EAAA,EAAA,kBAAA,EAAA,EAAyC,EAAA,YAAA,EAC3BC,EAAA,CAAA,mBAAgEC,EAAA,EAC5EF,EAAA,EAAA,QAAA,GAAA,CAAA,mBAOEyC,EAAA,gBAAA,SAAAL,EAAA,CAAAzB,EAAA+B,CAAA,EAAA,IAAA7B,EAAAC,EAAA,CAAA,EAAAC,UAAA4B,OAAAC,EAAA/B,EAAAgC,SAAAT,CAAA,IAAAvB,EAAAgC,SAAAT,GAAApB,EAAAoB,CAAA,CAAA,CAAA,EAPFlC,EAAA,EAUA4C,EAAA,EAAAC,GAAA,EAAA,EAAA,aAAA,EAAA,EAGF7C,EAAA,wDAdcC,EAAA,CAAA,EAAAe,EAAAb,EAAA,EAAA,EAAA,8CAAA,CAAA,EAKVF,EAAA,CAAA,EAAAyB,GAAA,OAAA,YAAAG,EAAA,EAAA,EAEAiB,EAAA,cAAA3C,EAAA,EAAA,EAAA,+CAAA,CAAA,EACA4C,EAAA,UAAApC,EAAAgC,QAAA,EAGW1C,EAAA,CAAA,EAAAM,EAAA,OAAAyC,EAAAC,SAAA,yBAAA,GAAAD,EAAAE,OAAA,sCAtIrBrD,EAAA,CAAA,EACEC,EAAA,EAAA,MAAA,EAAA,EACE8C,EAAA,EAAAO,GAAA,GAAA,EAAA,eAAA,EAAA,EAAkD,EAAAC,GAAA,GAAA,GAAA,cAAA,KAAA,EAAAC,EAAA,EA0ClDvD,EAAA,EAAA,kBAAA,EAAA,EAAyC,EAAA,YAAA,EAC3BC,EAAA,CAAA,mBAA8DC,EAAA,EAC1EF,EAAA,EAAA,WAAA,GAAA,CAAA,oBAUEyC,EAAA,gBAAA,SAAAL,EAAA,CAAAzB,EAAA6C,CAAA,EAAA,IAAA3C,EAAAC,EAAA,EAAAC,UAAA4B,OAAAC,EAAA/B,EAAAU,QAAAa,CAAA,IAAAvB,EAAAU,QAAAa,GAAApB,EAAAoB,CAAA,CAAA,CAAA,EAEDlC,EAAA,EACD4C,EAAA,GAAAW,GAAA,EAAA,EAAA,aAAA,EAAA,EAGFvD,EAAA,EAEAF,EAAA,GAAA,kBAAA,EAAA,EAAyC,GAAA,YAAA,EAC3BC,EAAA,EAAA,oBAAiEC,EAAA,EAC7EF,EAAA,GAAA,WAAA,GAAA,CAAA,oBAUEyC,EAAA,gBAAA,SAAAL,EAAA,CAAAzB,EAAA6C,CAAA,EAAA,IAAA3C,EAAAC,EAAA,EAAAC,UAAA4B,OAAAC,EAAA/B,EAAAY,WAAAW,CAAA,IAAAvB,EAAAY,WAAAW,GAAApB,EAAAoB,CAAA,CAAA,CAAA,EAEDlC,EAAA,EACD4C,EAAA,GAAAY,GAAA,EAAA,EAAA,aAAA,EAAA,EAGFxD,EAAA,EAEAF,EAAA,GAAA,kBAAA,EAAA,EAAyC,GAAA,YAAA,EAC3BC,EAAA,EAAA,oBAAgEC,EAAA,EAC5EF,EAAA,GAAA,WAAA,GAAA,CAAA,oBAUEyC,EAAA,gBAAA,SAAAL,EAAA,CAAAzB,EAAA6C,CAAA,EAAA,IAAA3C,EAAAC,EAAA,EAAAC,UAAA4B,OAAAC,EAAA/B,EAAAa,KAAAU,CAAA,IAAAvB,EAAAa,KAAAU,GAAApB,EAAAoB,CAAA,CAAA,CAAA,EAEDlC,EAAA,EACD4C,EAAA,GAAAa,GAAA,EAAA,EAAA,aAAA,EAAA,EAGFzD,EAAA,EAEAF,EAAA,GAAA,kBAAA,EAAA,EAAyC,GAAA,YAAA,EAC3BC,EAAA,EAAA,oBAA2DC,EAAA,EACvEF,EAAA,GAAA,QAAA,GAAA,CAAA,EAOEyC,EAAA,gBAAA,SAAAL,EAAA,CAAAzB,EAAA6C,CAAA,EAAA,IAAA3C,EAAAC,EAAA,EAAAC,UAAA4B,OAAAC,EAAA/B,EAAA+C,QAAAxB,CAAA,IAAAvB,EAAA+C,QAAAxB,GAAApB,EAAAoB,CAAA,CAAA,CAAA,EAPFlC,EAAA,EAUA4C,EAAA,GAAAe,GAAA,EAAA,EAAA,aAAA,EAAA,EAGF3D,EAAA,EAEA4C,EAAA,GAAAgB,GAAA,EAAA,GAAA,eAAA,EAAA,EAkBF5D,EAAA,6FAzIiBC,EAAA,CAAA,EAAAM,EAAA,OAAAI,EAAAS,QAAA,EAAqB,WAAAyC,CAAA,EA2CtB5D,EAAA,CAAA,EAAAe,EAAAb,EAAA,EAAA,GAAA,4CAAA,CAAA,EAKVF,EAAA,CAAA,EAAAyB,GAAA,OAAA,WAAAG,EAAA,EAAA,EAKAiB,EAAA,cAAA3C,EAAA,GAAA,GAAA,sBAAA,CAAA,EACA4C,EAAA,UAAApC,EAAAU,OAAA,EAGWpB,EAAA,CAAA,EAAAM,EAAA,OAAAuD,EAAAb,SAAA,yBAAA,GAAAa,EAAAZ,OAAA,EAMDjD,EAAA,CAAA,EAAAe,EAAAb,EAAA,GAAA,GAAA,+CAAA,CAAA,EAKVF,EAAA,CAAA,EAAAyB,GAAA,OAAA,cAAAG,EAAA,EAAA,EAKAiB,EAAA,cAAA3C,EAAA,GAAA,GAAA,sBAAA,CAAA,EACA4C,EAAA,UAAApC,EAAAY,UAAA,EAGWtB,EAAA,CAAA,EAAAM,EAAA,OAAAwD,EAAAd,SAAA,yBAAA,GAAAc,EAAAb,OAAA,EAMDjD,EAAA,CAAA,EAAAe,EAAAb,EAAA,GAAA,GAAA,8CAAA,CAAA,EAKVF,EAAA,CAAA,EAAAyB,GAAA,OAAA,QAAAG,EAAA,EAAA,EAKAiB,EAAA,cAAA3C,EAAA,GAAA,GAAA,sBAAA,CAAA,EACA4C,EAAA,UAAApC,EAAAa,IAAA,EAGWvB,EAAA,CAAA,EAAAM,EAAA,OAAAyD,EAAAf,SAAA,yBAAA,GAAAe,EAAAd,OAAA,EAMDjD,EAAA,CAAA,EAAAe,EAAAb,EAAA,GAAA,GAAA,yCAAA,CAAA,EAIVF,EAAA,CAAA,EAAAyB,GAAA,OAAA,WAAAG,EAAA,EAAA,EAGAtB,EAAA,UAAAH,EAAA6D,8BAAA,EACAlB,EAAA,UAAApC,EAAA+C,OAAA,EAGWzD,EAAA,CAAA,EAAAM,EAAA,OAAA2D,EAAAjB,SAAA,SAAA,GAAAiB,EAAAhB,OAAA,EAKAjD,EAAA,EAAAM,EAAA,OAAAI,EAAA+C,OAAA,sCAxPvB7D,EAAA,CAAA,EASEC,EAAA,EAAA,WAAA,KAAA,CAAA,EAA0B,EAAA,SAAA,EAAA,EACFU,EAAA,QAAA,UAAA,CAAA,IAAAqB,EAAApB,EAAA0D,CAAA,EAAArC,MAAA1B,EAAAQ,EAAA,EAAA,OAAAE,EAASV,EAAAgE,YAAAvC,CAAA,CAAc,CAAA,CAAA,EAC3C/B,EAAA,EAAA,UAAA,EAAUC,EAAA,EAAA,KAAA,EAAGC,EAAA,EACbD,EAAA,CAAA,mBACFC,EAAA,EACAF,EAAA,EAAA,SAAA,EAAA,EAAsBU,EAAA,QAAA,UAAA,CAAA,IAAAqB,EAAApB,EAAA0D,CAAA,EAAArC,MAAA1B,EAAAQ,EAAA,EAAA,OAAAE,EAASV,EAAAiE,cAAAxC,CAAA,CAAgB,CAAA,CAAA,EAC7C/B,EAAA,EAAA,UAAA,EAAUC,EAAA,GAAA,cAAA,EAAYC,EAAA,EACtBD,EAAA,EAAA,oBACFC,EAAA,EAEAkB,EAAA,GAAA,aAAA,EAEA0B,EAAA,GAAA0B,GAAA,EAAA,EAAA,eAAA,EAAA,EAAsC,GAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,EActCzE,EAAA,GAAA,SAAA,EAAA,EAA2D,GAAA,UAAA,EAC/CC,EAAA,GAAA,WAAA,EAASC,EAAA,EACnBF,EAAA,GAAA,MAAA,EAAMC,EAAA,EAAA,oBAA4DC,EAAA,EAAO,EAG3EkB,EAAA,GAAA,aAAA,EAEApB,EAAA,GAAA,SAAA,EAAA,EAAsBU,EAAA,QAAA,UAAA,CAAA,IAAAqB,EAAApB,EAAA0D,CAAA,EAAArC,MAAA1B,EAAAQ,EAAA,EAAA,OAAAE,EAASV,EAAAoE,WAAA3C,CAAA,CAAa,CAAA,CAAA,EAC1C/B,EAAA,GAAA,UAAA,EAAUC,EAAA,GAAA,OAAA,EAAKC,EAAA,EACfD,EAAA,EAAA,oBACFC,EAAA,EAAS,EAGXF,EAAA,GAAA,WAAA,KAAA,CAAA,EAAoC,GAAA,SAAA,EAAA,EACOU,EAAA,QAAA,UAAA,CAAA,IAAAqB,EAAApB,EAAA0D,CAAA,EAAArC,MAAA1B,EAAAQ,EAAA,EAAA,OAAAE,EAASV,EAAAqE,eAAA5C,CAAA,CAAiB,CAAA,CAAA,EACjE/B,EAAA,GAAA,UAAA,EAAUC,EAAA,GAAA,oBAAA,EAAkBC,EAAA,EAC5BF,EAAA,GAAA,MAAA,EAAMC,EAAA,EAAA,oBAAkEC,EAAA,EAAO,EAGjFF,EAAA,GAAA,SAAA,EAAA,EAAyCU,EAAA,QAAA,UAAA,CAAA,IAAAqB,EAAApB,EAAA0D,CAAA,EAAArC,MAAA1B,EAAAQ,EAAA,EAAA,OAAAE,EAASV,EAAAsE,UAAA7C,EAAA,EAAe,CAAC,CAAA,CAAA,EAChE/B,EAAA,GAAA,UAAA,EAAUC,EAAA,GAAA,cAAA,EAAYC,EAAA,EACtBF,EAAA,GAAA,MAAA,EAAMC,EAAA,EAAA,oBAA8DC,EAAA,EAAO,EAG7EF,EAAA,GAAA,SAAA,EAAA,EAAwCU,EAAA,QAAA,UAAA,CAAA,IAAAqB,EAAApB,EAAA0D,CAAA,EAAArC,MAAA1B,EAAAQ,EAAA,EAAA,OAAAE,EAASV,EAAAsE,UAAA7C,EAAa,CAAC,CAAC,CAAA,CAAA,EAC9D/B,EAAA,GAAA,UAAA,EAAUC,EAAA,GAAA,gBAAA,EAAcC,EAAA,EACxBF,EAAA,GAAA,MAAA,EAAMC,EAAA,EAAA,oBAAgEC,EAAA,EAAO,EAG/EF,EAAA,GAAA,SAAA,EAAA,EAAwCU,EAAA,QAAA,UAAA,CAAA,IAAAqB,EAAApB,EAAA0D,CAAA,EAAArC,MAAA1B,EAAAQ,EAAA,EAAA,OAAAE,EAASV,EAAAuE,kBAAA9C,CAAA,CAAoB,CAAA,CAAA,EACnE/B,EAAA,GAAA,UAAA,EAAUC,EAAA,GAAA,uBAAA,EAAqBC,EAAA,EAC/BF,EAAA,GAAA,MAAA,EAAMC,EAAA,EAAA,oBAAqEC,EAAA,EAAO,EAC3E,EAGXF,EAAA,GAAA,MAAA,EAAA,EAA0B,GAAA,MAAA,EAAA,EAItBU,EAAA,WAAA,UAAA,CAAA,IAAAG,EAAAF,EAAA0D,CAAA,EAAAtD,UAAA,OAAAC,EAAAH,EAAAI,UAAA,CAAAJ,EAAAI,SAAA,CAAA,CAAA,EAGAjB,EAAA,GAAA,WAAA,EAAA,EAA4BC,EAAA,GAAA,gBAAA,EAAcC,EAAA,EAC1CF,EAAA,GAAA,MAAA,EAAA,EACE8C,EAAA,GAAAgC,GAAA,EAAA,EAAA,eAAA,EAAA,EASF5E,EAAA,EAGAH,EAAA,GAAA,EAAA,EACE+C,EAAA,GAAAiC,GAAA,EAAA,EAAA,eAAA,EAAA,EAAmC,GAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,MAoBrChF,EAAA,GAAA,SAAA,EAAA,EAAiE,GAAA,UAAA,EACrDC,EAAA,GAAA,YAAA,EAAUC,EAAA,EAAW,EAEjCF,EAAA,GAAA,SAAA,EAAA,oBAGEU,EAAA,QAAA,UAAA,CAAA,IAAAqB,EAAApB,EAAA0D,CAAA,EAAArC,MAAA1B,EAAAQ,EAAA,EAAA,OAAAE,EAASV,EAAAoE,WAAA3C,CAAA,CAAa,CAAA,CAAA,EAGtB/B,EAAA,GAAA,UAAA,EAAUC,EAAA,GAAA,OAAA,EAAKC,EAAA,EAAW,EACnB,EAGX4C,EAAA,GAAAmC,GAAA,EAAA,EAAA,MAAA,EAAA,EAAkD,GAAAC,GAAA,GAAA,GAAA,eAAA,EAAA,EA+IpDhF,EAAA,kEAhQIC,EAAA,CAAA,EAAAgC,EAAA,IAAA9B,EAAA,EAAA,GAAA,8CAAA,EAAA,GAAA,EAIAF,EAAA,CAAA,EAAAgC,EAAA,IAAA9B,EAAA,GAAA,GAAA,8CAAA,EAAA,GAAA,EAKaF,EAAA,CAAA,EAAAM,EAAA,OAAA,CAAAI,EAAAI,SAAA,EAOAd,EAAA,EAAAM,EAAA,OAAAI,EAAAI,SAAA,EAOOd,EAAA,EAAAM,EAAA,oBAAA0E,CAAA,EAEdhF,EAAA,CAAA,EAAAe,EAAAb,EAAA,GAAA,GAAA,0CAAA,CAAA,EAONF,EAAA,CAAA,EAAAgC,EAAA,IAAA9B,EAAA,GAAA,GAAA,2CAAA,EAAA,GAAA,EAKoBF,EAAA,CAAA,EAAAM,EAAA,WAAA2E,CAAA,EAEdjF,EAAA,CAAA,EAAAe,EAAAb,EAAA,GAAA,GAAA,gDAAA,CAAA,EAGcF,EAAA,CAAA,EAAAM,EAAA,WAAA2E,CAAA,EAEdjF,EAAA,CAAA,EAAAe,EAAAb,EAAA,GAAA,GAAA,4CAAA,CAAA,EAGcF,EAAA,CAAA,EAAAM,EAAA,WAAA4E,CAAA,EAEdlF,EAAA,CAAA,EAAAe,EAAAb,EAAA,GAAA,GAAA,8CAAA,CAAA,EAGcF,EAAA,CAAA,EAAAM,EAAA,WAAA4E,CAAA,EAEdlF,EAAA,CAAA,EAAAe,EAAAb,EAAA,GAAA,GAAA,mDAAA,CAAA,EASNF,EAAA,CAAA,EAAAmF,GAAA,YAAAzE,EAAAI,SAAA,EAIiBd,EAAA,CAAA,EAAAM,EAAA,OAAAI,EAAAI,SAAA,EAYHd,EAAA,EAAAM,EAAA,WAAAI,EAAAI,SAAA,EACGd,EAAA,EAAAM,EAAA,eAAA,EAAA,EASAN,EAAA,EAAAM,EAAA,eAAA,EAAA,EAWqBN,EAAA,EAAAM,EAAA,oBAAA8E,CAAA,EAOpCpF,EAAA,CAAA,EAAAyB,GAAA,aAAA,IAAAvB,EAAA,GAAA,GAAA,gDAAA,EAAA,GAAA,EAQWF,EAAA,CAAA,EAAAM,EAAA,OAAA,CAAAI,EAAAI,SAAA,GDpHhB,IAAMuE,GAA4C,CACvDhF,OAAQ,gBACRiF,eAAgB,KAChBC,MAAO,CACL,CACEpE,SAAU,KACVC,QAAS,KACTE,WAAY,KACZC,KAAM,KACNkC,QAAS,KACTf,SAAU,KACV5B,UAAW,GACZ,GAIQ0E,GAA0C,CACrDrE,SAAU,KACVC,QAAS,KACTE,WAAY,KACZC,KAAM,KACNkC,QAAS,KACTf,SAAU,KACV5B,UAAW,IAQA2E,IAA0B,IAAA,CAAjC,IAAOA,EAAP,MAAOA,CAA0B,CAWrCC,YACUC,EACSC,EACTC,EAAsC,CAFtC,KAAAF,aAAAA,EACS,KAAAC,OAAAA,EACT,KAAAC,mBAAAA,EAbY,KAAAC,MAAQ,mBAEpB,KAAAC,aAAe,IAAIC,EAGtB,KAAAhC,+BAAiCiC,GAAUC,oCAElD,KAAAC,iBAAmBA,GACF,KAAAC,cAAgC,CAAA,CAM9C,CAEHC,iBAAe,CACb,KAAKD,cAAcE,KACjB,KAAKC,YAAYC,cAAcC,UAAWC,GAAU,CAClD,KAAKX,aAAaY,KAAKD,IAAW,OAAO,CAC3C,CAAC,CAAC,EAEJ,KAAKN,cAAcE,KACjB,KAAKC,YAAYK,aAAaH,UAAU,IAAK,CAC3C,KAAKd,aAAakB,QAAO,CAC3B,CAAC,CAAC,CAEN,CAEAC,aAAW,CACT,KAAKV,cAAcW,QAASC,GAAQA,EAAIC,YAAW,CAAE,CACvD,CAGAC,8BAA8BrF,EAAYsF,EAAS,CAEjD,OAAOtF,CACT,CAEAuF,KAAKC,EAA4B,CAC/BC,GAAgB,KAAKlH,QAAQmF,MAAO8B,EAAME,cAAeF,EAAMG,YAAY,EAC3E,KAAK7B,aAAakB,QAAO,CAC3B,CAEAY,SAAO,CACL,KAAKrH,QAAQmF,MAAMe,KAAKoB,GAASlC,EAAqB,CAAC,EACvD,KAAKG,aAAakB,QAAO,CAC3B,CAEAtC,WAAW1C,EAAa,CACtB,KAAKzB,QAAQmF,MAAMoC,OAAO9F,EAAO,CAAC,EAClC,KAAK8D,aAAakB,QAAO,CAC3B,CAEA1C,YAAYtC,EAAa,CACnBA,EAAQ,GACV,KAAKzB,QAAQmF,MAAMoC,OAAO9F,EAAO,EAAG6F,GAASlC,EAAqB,CAAC,EAEnE,KAAKpF,QAAQmF,MAAMe,KAAKoB,GAASlC,EAAqB,CAAC,EAEzD,KAAKG,aAAakB,QAAO,CAC3B,CAEAzC,cAAcvC,EAAa,CACrBA,EAAQ,IACV,KAAKzB,QAAQmF,MAAMoC,OAAO9F,EAAO,EAAG6F,GAAS,KAAKtH,QAAQmF,MAAM1D,CAAK,CAAC,CAAC,EAEzE,KAAK8D,aAAakB,QAAO,CAC3B,CAEApC,UAAU5C,EAAO+F,EAAK,CACpB,IAAMC,EAAWhG,EAAQ+F,EAGrBC,EAAW,GAAKA,IAAa,KAAKzH,QAAQmF,MAAMuC,SAEpDR,GAAgB,KAAKlH,QAAQmF,MAAO1D,EAAOgG,CAAQ,EACnD,KAAKlC,aAAakB,QAAO,EAC3B,CAEArC,eAAe3C,EAAK,CAClByF,GAAgB,KAAKlH,QAAQmF,MAAO1D,EAAO,CAAC,EAC5C,KAAK8D,aAAakB,QAAO,CAC3B,CAEAnC,kBAAkB7C,EAAK,CACrByF,GAAgB,KAAKlH,QAAQmF,MAAO1D,EAAO,KAAKzB,QAAQmF,MAAMuC,MAAM,EACpE,KAAKnC,aAAakB,QAAO,CAC3B,CAEA1E,SAAS4F,EAAgBC,EAAe,CACtC,KAAK5H,QAAQmF,MAAMyC,CAAO,EAAE7G,SAAW4G,EAAKE,IAC5C,KAAKtC,aAAakB,QAAO,CAC3B,CAEA/E,WAAWkG,EAAe,CACxB,KAAK5H,QAAQmF,MAAMyC,CAAO,EAAE7G,SAAW,KACvC,KAAKwE,aAAakB,QAAO,CAC3B,CAEAzE,iBAAiBH,EAAuB,CACtCiG,QAAQC,MAAM,sBAAuBlG,CAAM,EAC3C,KAAK2D,OAAOwC,eAAe,sBAAsB,CACnD,CAEM/F,uBAAuB2F,EAAe,QAAAK,GAAA,sBAC1C,MAAM,KAAKxC,mBAAmByC,wBAAuB,EAAGC,KAAMC,GAAiB,CACzEA,GACFA,EACGC,KACCC,GAAK,CAAC,EACNC,EAAKC,GAAO,CACV,KAAKxI,QAAQmF,MAAMyC,CAAO,EAAE7G,SAAWyH,EACvC,KAAKjD,aAAakB,QAAO,CAC3B,CAAC,CAAC,EAEHJ,UAAS,CAEhB,CAAC,CACH,2CAxHWhB,GAA0BoD,EAAAC,CAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,CAAA,CAAA,sBAA1BvD,EAA0BwD,UAAA,CAAA,CAAA,4BAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,qGAA1BE,EAAAD,EAAAtD,KAAA,k6ECvEbjG,EAAA,EAAA,OAAA,KAAA,CAAA,EAA4B,EAAA,iBAAA,EACT,EAAA,YAAA,EACHC,EAAA,CAAA,mBAAkEC,EAAA,EAC9EF,EAAA,EAAA,SAAA,EAAA,EAAiByC,EAAA,gBAAA,SAAAL,EAAA,CAAAO,OAAAhC,EAAA8I,CAAA,EAAA7G,EAAA2G,EAAAhJ,QAAAC,OAAA4B,CAAA,IAAAmH,EAAAhJ,QAAAC,OAAA4B,GAAApB,EAAAoB,CAAA,CAAA,CAAA,EACfpC,EAAA,EAAA,SAAA,EAAA,EAA8BC,EAAA,CAAA,mBAAsEC,EAAA,EACpGF,EAAA,GAAA,SAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,SAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,SAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EAAS,EACF,EAGXF,EAAA,GAAA,MAAA,EAAA,EAAmCU,EAAA,qBAAA,SAAA0B,EAAA,CAAAO,OAAAhC,EAAA8I,CAAA,EAAAzI,EAAsBuI,EAAAhC,KAAAnF,CAAA,CAAY,CAAA,CAAA,EACnEU,EAAA,GAAA4G,GAAA,EAAA,EAAA,eAAA,EAAA,EAAiD,GAAAC,GAAA,GAAA,GAAA,eAAA,EAAA,EAyRjDvI,EAAA,GAAA,MAAA,EAAA,EACFlB,EAAA,EAEAF,EAAA,GAAA,MAAA,EAAA,EAA6B,GAAA,SAAA,EAAA,EACcU,EAAA,QAAA,UAAA,CAAAiC,OAAAhC,EAAA8I,CAAA,EAAAzI,EAASuI,EAAA3B,QAAA,CAAS,CAAA,CAAA,EACzD3H,EAAA,EAAA,EACFC,EAAA,EAAS,EACL,QAhTQC,EAAA,CAAA,EAAAe,EAAAb,EAAA,EAAA,GAAA,gDAAA,CAAA,EACKF,EAAA,CAAA,EAAA8C,EAAA,UAAAsG,EAAAhJ,QAAAC,MAAA,EACeL,EAAA,CAAA,EAAAe,EAAAb,EAAA,EAAA,GAAA,oDAAA,CAAA,EAE5BF,EAAA,CAAA,EAAAgC,EAAA,IAAA9B,EAAA,GAAA,GAAA,4DAAA,EAAA,GAAA,EAGAF,EAAA,CAAA,EAAAgC,EAAA,IAAA9B,EAAA,GAAA,GAAA,6DAAA,EAAA,GAAA,EAGAF,EAAA,CAAA,EAAAgC,EAAA,IAAA9B,EAAA,GAAA,GAAA,4DAAA,EAAA,GAAA,EAMWF,EAAA,CAAA,EAAAM,EAAA,OAAA8I,EAAAhJ,QAAAmF,MAAAuC,SAAA,CAAA,EAaO9H,EAAA,EAAAM,EAAA,UAAA8I,EAAAhJ,QAAAmF,KAAA,EACT,eAAA6D,EAAAlC,6BAAA,EAgRXlH,EAAA,CAAA,EAAAgC,EAAA,IAAAoH,EAAAhJ,QAAAC,SAAA,gBAAA,aAAA,UAAA,GAAA;4HDzOA,IAAOoF,EAAPgE,SAAOhE,CAA0B,GAAA,4DGtErCiE,EAAA,CAAA,EACEC,EAAA,EAAA,YAAA,EAAYC,EAAA,CAAA,mBAAmDC,EAAA,EAC/DF,EAAA,EAAA,iBAAA,EAAiB,EAAA,MAAA,CAAA,EACc,EAAA,MAAA,EAAA,EAC8B,EAAA,yBAAA,EAAA,EAKrDG,EAAA,SAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAAUF,EAAAG,WAAA,CAAY,CAAA,CAAA,EACvBP,EAAA,EAAyB,EAE5BF,EAAA,EAAA,MAAA,EAAA,EAAmD,EAAA,mBAAA,EAC9B,GAAA,IAAA,EAAA,EAEfC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,SAAA,EAAA,EAA2BG,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAG,WAAA,CAAY,CAAA,CAAA,EAC9CR,EAAA,EAAA,oBACFC,EAAA,EAAS,EACS,EAChB,EACF,wBArBIQ,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,iCAAA,CAAA,EAKJF,EAAA,CAAA,EAAAG,EAAA,MAAAP,EAAAQ,QAAAC,GAAA,EAAmB,mBAAA,EAAA,EACM,SAAAT,EAAAU,iBAAAC,MAAA,EAOHP,EAAA,CAAA,EAAAG,EAAA,OAAAP,EAAAQ,QAAAC,IAAAG,EAAA,EACpBR,EAAA,EAAAS,EAAA,IAAAP,EAAA,GAAA,EAAA,gCAAA,EAAA,GAAA,EAGAF,EAAA,CAAA,EAAAS,EAAA,IAAAP,EAAA,GAAA,GAAA,iCAAA,EAAA,GAAA,sCASVZ,EAAA,EAAA,MAAA,EAAA,EAAmB,EAAA,YAAA,EACLC,EAAA,CAAA,mBAAmDC,EAAA,EAC/DF,EAAA,EAAA,SAAA,EAAA,mBAGEG,EAAA,QAAA,UAAA,CAAAC,EAAAgB,CAAA,EAAA,IAAAd,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAe,uBAAA,CAAwB,CAAA,CAAA,EAGjCC,EAAA,EAAA,WAAA,EAAA,EACFpB,EAAA,EAAS,EAEXF,EAAA,EAAA,iBAAA,EAAiB,EAAA,sBAAA,GAAA,CAAA,oBAMbG,EAAA,eAAA,SAAAoB,EAAA,CAAAnB,EAAAgB,CAAA,EAAA,IAAAd,EAAAC,EAAA,EAAA,OAAAC,EAAgBF,EAAAkB,SAAAD,CAAA,CAAgB,CAAA,CAAA,EAAC,oBAAA,SAAAA,EAAA,CAAAnB,EAAAgB,CAAA,EAAA,IAAAd,EAAAC,EAAA,EAAA,OAAAC,EACZF,EAAAmB,iBAAAF,CAAA,CAAwB,CAAA,CAAA,EAC9CrB,EAAA,EAAsB,QAlBXQ,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,iCAAA,CAAA,EAKVF,EAAA,CAAA,EAAAG,EAAA,cAAAD,EAAA,EAAA,EAAA,iDAAA,CAAA,EAQAF,EAAA,CAAA,EAAAG,EAAA,aAAA,EAAA,EAAmB,WAAA,CAAA,EACL,WAAAD,EAAA,GAAA,EAAA,oBAAA,CAAA,sCAmBlBb,EAAA,CAAA,EACEC,EAAA,EAAA,kBAAA,EAAA,EAAgE,EAAA,YAAA,EAClDC,EAAA,CAAA,mBAAmDC,EAAA,EAC/DF,EAAA,EAAA,QAAA,EAAA,mBAQE0B,EAAA,gBAAA,SAAAH,EAAA,CAAAnB,EAAAuB,CAAA,EAAA,IAAArB,EAAAC,EAAA,EAAAqB,OAAAC,EAAAvB,EAAAQ,QAAAgB,SAAAP,CAAA,IAAAjB,EAAAQ,QAAAgB,SAAAP,GAAAf,EAAAe,CAAA,CAAA,CAAA,EARFrB,EAAA,EAUE,wBAXUQ,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,iCAAA,CAAA,EAOVF,EAAA,CAAA,EAAAqB,EAAA,cAAAnB,EAAA,EAAA,EAAA,sBAAA,CAAA,EAEAoB,EAAA,UAAA1B,EAAAQ,QAAAgB,QAAA,0BAwBN9B,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEQ,EAAA,EAAAS,EAAA,IAAAP,EAAA,EAAA,EAAA,sCAAA,EAAA,GAAA,GDpEC,IAAMqB,GAA8B,CACzClB,IAAK,KACLmB,QAAS,KACTC,WAAY,YACZL,SAAU,KACVM,KAAM,MAQKC,IAAmB,IAAA,CAA1B,IAAOA,EAAP,MAAOA,CAAmB,CAY9BC,YACSC,EACUC,EACTC,EAAsC,CAFvC,KAAAF,aAAAA,EACU,KAAAC,OAAAA,EACT,KAAAC,mBAAAA,EAdY,KAAAC,MAAQ,oBAEpB,KAAAC,aAAe,IAAIC,EAEtB,KAAAC,+BAAiCC,GAAUC,oCAIlD,KAAA/B,iBAAmBA,GACF,KAAAgC,cAAgC,CAAA,CAM9C,CAEHC,iBAAe,CACb,KAAKD,cAAcE,KACjB,KAAKC,YAAYC,cAAcC,UAAWC,GAAU,CAClD,KAAKX,aAAaY,KAAKD,IAAW,OAAO,CAC3C,CAAC,CAAC,EAEJ,KAAKN,cAAcE,KACjB,KAAKC,YAAYK,aAAaH,UAAU,IAAK,CAC3C,KAAKd,aAAakB,QAAO,CAC3B,CAAC,CAAC,CAEN,CACAC,aAAW,CACT,KAAKV,cAAcW,QAASC,GAAQA,EAAIC,YAAW,CAAE,CACvD,CAEApD,YAAU,CACR,KAAKK,QAAQC,IAAM,KACnB,KAAKwB,aAAakB,QAAO,CAC3B,CAEAjC,SAASsC,EAAc,CACrB,KAAKhD,QAAQC,IAAM+C,EAAK/C,IACxB,KAAKwB,aAAakB,QAAO,CAC3B,CAEAhC,iBAAiBF,EAAuB,CACtCwC,QAAQC,MAAM,sBAAuBzC,CAAM,EAC3C,KAAKiB,OAAOyB,eAAe,sBAAsB,CACnD,CAEM5C,wBAAsB,QAAA6C,GAAA,sBAC1B,MAAM,KAAKzB,mBAAmB0B,wBAAuB,EAAGC,KAAMC,GAAiB,CACzEA,GACFA,EACGC,KACCC,GAAK,CAAC,EACNC,EAAKC,GAAO,CACV,KAAK3D,QAAQC,IAAM0D,EACnB,KAAKlC,aAAakB,QAAO,CAC3B,CAAC,CAAC,EAEHJ,UAAS,CAEhB,CAAC,CACH,2CA/DWhB,GAAmBqC,EAAAC,CAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,CAAA,CAAA,sBAAnBxC,EAAmByC,UAAA,CAAA,CAAA,mBAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,qGAAnBE,EAAAD,EAAAvC,KAAA,yyCC3Cb1C,EAAA,EAAA,OAAA,KAAA,CAAA,EACEmF,EAAA,EAAAC,GAAA,GAAA,GAAA,eAAA,CAAA,EAAgD,EAAAC,GAAA,GAAA,GAAA,cAAA,KAAA,EAAAC,EAAA,EAkDhDtF,EAAA,EAAA,MAAA,CAAA,EAA6B,EAAA,kBAAA,CAAA,EACqB,EAAA,YAAA,EAClCC,EAAA,CAAA,mBAA8DC,EAAA,EAC1EF,EAAA,GAAA,SAAA,CAAA,EAAiB0B,EAAA,gBAAA,SAAAH,EAAA,CAAAK,OAAAxB,EAAAmF,CAAA,EAAA1D,EAAAoD,EAAAnE,QAAAqB,WAAAZ,CAAA,IAAA0D,EAAAnE,QAAAqB,WAAAZ,GAAAf,EAAAe,CAAA,CAAA,CAAA,EACfvB,EAAA,GAAA,SAAA,CAAA,EAA0BC,EAAA,EAAA,oBAAoEC,EAAA,EAC9FF,EAAA,GAAA,SAAA,CAAA,EAAuBC,EAAA,EAAA,oBAAgEC,EAAA,EACvFF,EAAA,GAAA,SAAA,EAAA,EAAqBC,EAAA,EAAA,oBAA8DC,EAAA,EACnFF,EAAA,GAAA,SAAA,EAAA,EAAsBC,EAAA,EAAA,oBAA+DC,EAAA,EAAS,EACvF,EAGXiF,EAAA,GAAAK,GAAA,EAAA,EAAA,eAAA,EAAA,EAgBFtF,EAAA,EAEAF,EAAA,GAAA,iBAAA,EAAiB,GAAA,YAAA,EACHC,EAAA,EAAA,oBAAkDC,EAAA,EAC9DF,EAAA,GAAA,QAAA,GAAA,CAAA,EAME0B,EAAA,gBAAA,SAAAH,EAAA,CAAAK,OAAAxB,EAAAmF,CAAA,EAAA1D,EAAAoD,EAAAnE,QAAAsB,KAAAb,CAAA,IAAA0D,EAAAnE,QAAAsB,KAAAb,GAAAf,EAAAe,CAAA,CAAA,CAAA,EANFrB,EAAA,EAUAF,EAAA,GAAA,mCAAA,EAAA,EAGE0B,EAAA,cAAA,SAAAH,EAAA,CAAAK,OAAAxB,EAAAmF,CAAA,EAAA1D,EAAAoD,EAAAnE,QAAAsB,KAAAb,CAAA,IAAA0D,EAAAnE,QAAAsB,KAAAb,GAAAf,EAAAe,CAAA,CAAA,CAAA,EACDrB,EAAA,EACDiF,EAAA,GAAAM,GAAA,EAAA,EAAA,aAAA,EAAA,EAGFvF,EAAA,EAAkB,qCAnGHQ,EAAA,CAAA,EAAAG,EAAA,OAAAoE,EAAAnE,QAAAC,GAAA,EAAmB,WAAA2E,CAAA,EAoDlBhF,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,GAAA,4CAAA,CAAA,EACKF,EAAA,CAAA,EAAAsB,EAAA,UAAAiD,EAAAnE,QAAAqB,UAAA,EACWzB,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,GAAA,kDAAA,CAAA,EACHF,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,GAAA,8CAAA,CAAA,EACFF,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,GAAA,4CAAA,CAAA,EACCF,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,GAAA,6CAAA,CAAA,EAIXF,EAAA,CAAA,EAAAG,EAAA,OAAAoE,EAAAnE,QAAAqB,aAAA,WAAA,EAmBHzB,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,GAAA,gCAAA,CAAA,EAMVF,EAAA,CAAA,EAAAG,EAAA,UAAAoE,EAAApC,8BAAA,EACAb,EAAA,UAAAiD,EAAAnE,QAAAsB,IAAA,EAMA1B,EAAA,CAAA,EAAAG,EAAA,SAAA8E,CAAA,EACA3D,EAAA,QAAAiD,EAAAnE,QAAAsB,IAAA,EAEW1B,EAAA,EAAAG,EAAA,OAAA+E,EAAAC,SAAA,SAAA,GAAAD,EAAAE,OAAA;mHDtDX,IAAOzD,EAAP0D,SAAO1D,CAAmB,GAAA,4DGzC5B2D,EAAA,CAAA,EACEC,EAAA,EAAA,eAAA,CAAA,EAGEC,EAAA,SAAA,SAAAC,EAAA,CAAA,IAAAC,EAAAC,EAAAC,CAAA,EAAAC,UAAAC,EAAAC,EAAA,EAAA,OAAAC,EAAUF,EAAAG,YAAAP,EAAAQ,SAAAT,CAAA,CAAoC,CAAA,CAAA,EAE9CU,EAAA,CAAA,mBACFC,EAAA,sCAJEC,EAAA,EAAAC,EAAA,UAAAR,EAAAS,iBAAAb,EAAAQ,QAAA,CAAA,EAGAG,EAAA,EAAAG,EAAA,IAAAC,EAAA,EAAA,EAAAf,EAAAgB,IAAA,EAAA,GAAA,GDOR,IAAMC,GAAoD,IAAIC,IAA0B,CACtF,CACE,SACA,CACEF,KAAM,0DACNR,SAAU,QACX,EAEH,CACE,WACA,CACEQ,KAAM,4DACNR,SAAU,QACX,CACF,CACF,EAQKW,GAAiB,CAACF,GAAuBG,IAAI,QAAQ,EAAEZ,SAAUS,GAAuBG,IAAI,UAAU,EAAEZ,QAAQ,EAGzGa,GAAwD,CACnEC,QAASH,GACTI,QAASC,GAAWL,EAAc,GAGpC,SAASK,GAAWF,EAAiB,CAWnC,MAAO;MAVaA,EACjBG,IACEC,GACC,2BACAA,EACA,4EACAA,EACA,wBAAwB,EAE3BC,KAAI,CAEQ;OAEjB,CASA,IAAaC,IAAgC,IAAA,CAAvC,IAAOA,EAAP,MAAOA,CAAgC,CAS3CC,YAAoBC,EAAwC,CAAxC,KAAAA,aAAAA,EARE,KAAAC,MAAQ,mCAI9B,KAAAC,cAAgC,CAAC,GAAGf,GAAuBgB,OAAM,CAAE,EAElD,KAAAC,cAAgC,CAAA,CAEc,CAE/DC,iBAAe,CACb,KAAKD,cAAcE,KACjB,KAAKC,YAAYC,KAAKC,aAAaC,UAAU,IAAK,CAChD,KAAKV,aAAaW,QAAO,CAC3B,CAAC,CAAC,CAEN,CAEAC,aAAW,CACT,KAAKR,cAAcS,QAASC,GAAQA,EAAIC,YAAW,CAAE,CACvD,CAEAhC,iBAAiBL,EAAgB,CAC/B,MAAO,CAAC,CAAC,KAAKsC,QAAQxB,QAAQyB,KAAMC,GAAMA,IAAMxC,CAAQ,CAC1D,CAEAD,YAAYC,EAAkBT,EAAM,CAC9BA,EAAOkD,QACT,KAAKH,QAAQxB,QAAQc,KAAK5B,CAAQ,EAElC,KAAKsC,QAAQxB,QAAU,KAAKwB,QAAQxB,QAAQ4B,OAAQF,GAAMA,IAAMxC,CAAQ,EAE1E,KAAKsC,QAAQvB,QAAUC,GAAW,KAAKsB,QAAQxB,OAAO,EACtD,KAAKQ,aAAaW,QAAO,CAC3B,yCAnCWb,GAAgCuB,EAAAC,CAAA,CAAA,CAAA,sBAAhCxB,EAAgCyB,UAAA,CAAA,CAAA,kCAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,qGAAhCE,EAAAD,EAAAzB,KAAA,kOCrEblC,EAAA,EAAA,OAAA,KAAA,CAAA,EAA4B,EAAA,kBAAA,CAAA,EAExB6D,EAAA,EAAAC,GAAA,EAAA,EAAA,eAAA,CAAA,EASFjD,EAAA,EAAkB,SATiBC,EAAA,CAAA,EAAAC,EAAA,UAAA4C,EAAAxB,aAAA,kBDiEzB4B,GAAiBC,GAAEC,GAAeC,EAAEC,GAAqBC,EAAEC,GAAWC,GAAAC,GAAAC,GAAEC,GAAYC,EAAA,EAAAC,OAAA,CAAA;8HAAA,CAAA,CAAA,EAE1F,IAAO5C,EAAP6C,SAAO7C,CAAgC,GAAA,6CEzDhC8C,GAAiC,IAAIC,GAChD,mDAAmD,EAGxCC,GAAP,KAA2B,CAC/BC,MAAMC,EAAc,CAClB,MAAO,yEAAyEA,CAAM,EACxF,GAQWC,IAAuB,IAAA,CAA9B,IAAOA,EAAP,MAAOA,CAAuB,CAWlCC,YACqDC,EAC5CC,EACCC,EAC6DC,EACpDC,EAAgC,CAJE,KAAAJ,yBAAAA,EAC5C,KAAAC,UAAAA,EACC,KAAAC,eAAAA,EAC6D,KAAAC,cAAAA,EACpD,KAAAC,gBAAAA,EAfX,KAAAC,UAAsC,IAAIC,GAAyB,EAAK,EAChF,KAAAC,SAAgC,KAAKF,UAAUG,aAAY,EAE3D,KAAAC,WAAa,GACb,KAAAC,YAAc,GACd,KAAAC,cAAgB,CAAA,CAWb,CAEHC,eAAef,EAAc,CAC3B,KAAKK,eAAeW,WAAW,+BAAgC,kBAAmB,QAAS,KAAM,CAC/FhB,OAAQA,EACT,EAED,IAAMiB,GADgB,KAAKX,eAAiB,IAAIR,IACXC,MAAMC,CAAM,EACjD,KAAKQ,UAAUU,KAAK,EAAI,EACxB,KAAKJ,cAAcK,KACjB,KAAKhB,yBAAyBiB,eAAeH,CAAc,EAAEI,UAAU,CACrEH,KAAOI,GAAoB,CACzB,KAAKd,UAAUU,KAAK,EAAK,EACzB,KAAKL,YAAcS,CACrB,EACAC,MAAOA,IAAK,CACV,KAAKf,UAAUU,KAAK,EAAK,EACzB,KAAKX,gBAAgBiB,eAAe,gDAAgD,CACtF,EACD,CAAC,CAEN,CAEAC,oBAAoBC,EAAe,CACjC,KAAKrB,eAAeW,WAAW,8BAA+B,kBAAmB,QAAS,KAAM,CAC9FM,iBAAkBI,EACnB,EACD,KAAKtB,UAAUuB,MAAM,KAAKC,cAAcF,CAAO,CAAC,CAClD,CAEAE,cAAcF,EAAe,CAC3B,OAAOA,EAAQG,QAAQ,cAAe,MAAM,CAC9C,CAEAC,aAAW,CACT,KAAKhB,cAAciB,QAASC,GAAQA,EAAIC,YAAW,CAAE,CACvD,CAEAC,aAAW,CACT,KAAK9B,UAAUuB,MAAM,IAAI,CAC3B,yCAzDW1B,GAAuBkC,EAYxBC,EAAwB,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAGxBvC,GAA8B,CAAA,EAAAuC,EAAAI,EAAA,CAAA,CAAA,sBAf7BtC,EAAuBuC,UAAA,CAAA,CAAA,8BAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,WAQCE,EAAc,SACfA,EAAc,gsBCpClDC,EAAA,EAAA,KAAA,CAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,EACAF,EAAA,EAAA,oBAAA,EAAoB,EAAA,iBAAA,EACD,EAAA,YAAA,EAEbC,EAAA,CAAA,mBACFC,EAAA,EACAF,EAAA,EAAA,WAAA,EAAA,CAAA,oBAIEG,EAAA,gBAAA,SAAAC,EAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAAV,EAAA/B,WAAAqC,CAAA,IAAAN,EAAA/B,WAAAqC,GAAAK,EAAAL,CAAA,CAAA,CAAA,EAEDF,EAAA,EAAW,EAEdF,EAAA,GAAA,MAAA,CAAA,EAA0C,GAAA,SAAA,CAAA,gBAItCU,EAAA,QAAA,UAAA,CAAAL,OAAAC,EAAAC,CAAA,EAAAE,EAASX,EAAA5B,eAAA4B,EAAA/B,UAAA,CAA0B,CAAA,CAAA,EAInCiC,EAAA,GAAA,gCAAA,CAAA,gBACEC,EAAA,EAAA,oBACFC,EAAA,EAAgC,EACzB,EAEXF,EAAA,GAAA,iBAAA,EAAiB,GAAA,YAAA,EAEbC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,WAAA,EAAA,CAAA,oBAKEG,EAAA,gBAAA,SAAAC,EAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAAV,EAAA9B,YAAAoC,CAAA,IAAAN,EAAA9B,YAAAoC,GAAAK,EAAAL,CAAA,CAAA,CAAA,EACDF,EAAA,EAAW,EACI,EAEpBF,EAAA,GAAA,qBAAA,CAAA,EAAgD,GAAA,SAAA,CAAA,EACFU,EAAA,QAAA,UAAA,CAAAL,OAAAC,EAAAC,CAAA,EAAAE,EAASX,EAAAT,YAAA,CAAa,CAAA,CAAA,EAChEY,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,SAAA,EAAA,EAGEU,EAAA,QAAA,UAAA,CAAAL,OAAAC,EAAAC,CAAA,EAAAE,EAASX,EAAAlB,oBAAAkB,EAAA9B,WAAA,CAAgC,CAAA,CAAA,EAIzCiC,EAAA,EAAA,oBACFC,EAAA,EAAS,QArDTS,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,GAAA,yCAAA,EAAA;CAAA,EAKIF,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,GAAA,+CAAA,EAAA,GAAA,EAKAF,EAAA,CAAA,EAAAG,EAAA,cAAAD,EAAA,GAAA,GAAA,qDAAA,CAAA,EACAE,EAAA,UAAAjB,EAAA/B,UAAA,EAUA4C,EAAA,CAAA,EAAAK,EAAA,WAAAH,EAAA,GAAA,GAAAf,EAAAjC,QAAA,CAAA,EAE+B8C,EAAA,CAAA,EAAAK,EAAA,YAAAH,EAAA,GAAA,GAAAf,EAAAjC,QAAA,CAAA,EAC7B8C,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,mDAAA,EAAA,GAAA,EAMFF,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,oDAAA,EAAA,GAAA,EAMAF,EAAA,CAAA,EAAAG,EAAA,cAAAD,EAAA,GAAA,GAAA,gEAAA,CAAA,EACAE,EAAA,UAAAjB,EAAA9B,WAAA,EAMF2C,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,yCAAA,EAAA,GAAA,EAMAF,EAAA,CAAA,EAAAK,EAAA,WAAAlB,EAAA9B,cAAA,EAAA,EAGA2C,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,8CAAA,EAAA,GAAA;8HD1BE,IAAOzD,EAAP6D,SAAO7D,CAAuB,GAAA,+DGrB9B8D,EAAA,EAAA,SAAA,CAAA,mBAGEC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAG,2BAAA,CAA4B,CAAA,CAAA,EAIrCC,EAAA,EAAA,WAAA,CAAA,EACFC,EAAA,OAHEC,EAAA,cAAAC,EAAA,EAAA,EAAA,2DAAA,CAAA,yBAkBNX,EAAA,EAAA,YAAA,EACEY,EAAA,CAAA,mBACFH,EAAA,SADEI,EAAA,EAAAC,EAAA,IAAAH,EAAA,EAAA,EAAA,iDAAA,EAAA,GAAA,GDFG,IAAMI,GAAoC,CAC/CC,QAAS,IAQEC,IAAsB,IAAA,CAA7B,IAAOA,EAAP,MAAOA,CAAsB,CAejCC,YACUC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAAkC,CANlC,KAAAN,aAAAA,EACA,KAAAC,eAAAA,EACA,KAAAC,KAAAA,EACA,KAAAC,OAAAA,EACA,KAAAC,eAAAA,EACA,KAAAC,EAAAA,EACA,KAAAC,iBAAAA,EArBY,KAAAC,MAAQ,wBAMpB,KAAAC,aAAe,IAAIC,EAE7B,KAAAC,SAAgC,KAAKF,aAAaG,aAAY,EAI7C,KAAAC,cAAgC,CAAA,CAU9C,CAEHC,UAAQ,CACN,KAAKC,SAAW,KAAKC,QAAQlB,QAI7B,KAAKe,cAAcI,KACjB,KAAKf,eAAegB,qBAAqBC,UAAU,IAAK,CACtD,KAAKC,cAAa,CACpB,CAAC,CAAC,CAEN,CAEAC,aAAW,CACT,KAAKR,cAAcS,QAASC,GAAQA,EAAIC,YAAW,CAAE,CACvD,CAEAC,YAAU,CACR,KAAKtB,KAAKuB,IAAI,IAAM,KAAKzB,aAAa0B,QAAO,CAAE,CACjD,CAEAC,aAAaC,EAA8B,CACzC,KAAKpB,aAAaqB,KAAK,CAACD,CAAK,CAC/B,CAEOT,eAAa,CAClB,KAAKW,gBAAgBC,aAAY,CACnC,CAEM3C,4BAA0B,QAAA4C,GAAA,sBAC9B,KAAK5B,eAAe6B,WAAW,0CAA2C,kBAAmB,QAAS,IAAI,EAC1G,IAAMC,EAAY,KAAK/B,OAAOgC,KAAKC,GAAyB,CAC1D9B,iBAAkB,KAAKA,iBACvB+B,MAAO,QACPC,OAAQ,OACT,EACKvB,EAAU,MAAMwB,GAAeL,EAAUM,YAAW,CAAE,EACxDzB,GACF,KAAKe,eAAeW,eAAe1B,CAAO,CAE9C,2CAhEWjB,GAAsB4C,EAAAC,CAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,EAAAN,EAAAO,EAAA,CAAA,CAAA,sBAAtBnD,EAAsBoD,UAAA,CAAA,CAAA,uBAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,wGAAtBE,EAAAD,EAAA9C,KAAA,4mBCrCb1B,EAAA,EAAA,MAAA,EAAM,EAAA,MAAA,CAAA,EAC+B,EAAA,MAAA,CAAA,EAE/BY,EAAA,CAAA,mBACFH,EAAA,EACAT,EAAA,EAAA,MAAA,CAAA,EACE0E,EAAA,EAAAC,GAAA,EAAA,EAAA,SAAA,CAAA,EASA3E,EAAA,EAAA,mCAAA,CAAA,EAEE4E,EAAA,cAAA,SAAAC,EAAA,CAAAC,OAAA5E,EAAA6E,CAAA,EAAAC,EAAAR,EAAAtC,QAAAlB,QAAA6D,CAAA,IAAAL,EAAAtC,QAAAlB,QAAA6D,GAAAvE,EAAAuE,CAAA,CAAA,CAAA,EACDpE,EAAA,EAAmC,EAChC,EAGRT,EAAA,EAAA,yBAAA,EAAA,CAAA,EAEE4E,EAAA,cAAA,SAAAC,EAAA,CAAAC,OAAA5E,EAAA6E,CAAA,EAAAC,EAAAR,EAAAtC,QAAAlB,QAAA6D,CAAA,IAAAL,EAAAtC,QAAAlB,QAAA6D,GAAAvE,EAAAuE,CAAA,CAAA,CAAA,EACA5E,EAAA,cAAA,UAAA,CAAA6E,OAAA5E,EAAA6E,CAAA,EAAAzE,EAAekE,EAAA7B,WAAA,CAAY,CAAA,CAAA,EAAC,eAAA,SAAAkC,EAAA,CAAAC,OAAA5E,EAAA6E,CAAA,EAAAzE,EACZkE,EAAA1B,aAAA+B,CAAA,CAAoB,CAAA,CAAA,EACrCpE,EAAA,EAEDiE,EAAA,GAAAO,GAAA,EAAA,EAAA,aAAA,CAAA,gBAGFxE,EAAA,qBA7BMI,EAAA,CAAA,EAAAC,EAAA,IAAAH,EAAA,EAAA,EAAA,yCAAA,EAAA,GAAA,EAIGE,EAAA,CAAA,EAAAH,EAAA,OAAA8D,EAAAU,wBAAA,EASDrE,EAAA,EAAAH,EAAA,oBAAAyE,CAAA,EACAC,EAAA,QAAAZ,EAAAtC,QAAAlB,OAAA,EAOJH,EAAA,EAAAuE,EAAA,QAAAZ,EAAAtC,QAAAlB,OAAA,EAKWH,EAAA,CAAA,EAAAH,EAAA,OAAAC,EAAA,GAAA,EAAA6D,EAAA3C,QAAA,IAAA,EAAA;uHDQT,IAAOZ,EAAPoE,SAAOpE,CAAsB,GAAA,gDGsB7BqE,EAAA,EAAA,YAAA,EAMEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,iDAAA,EAAA,GAAA,sCA7DJC,EAAA,CAAA,EACEN,EAAA,EAAA,MAAA,CAAA,EACEO,EAAA,EAAA,MAAA,CAAA,EACAP,EAAA,EAAA,MAAA,CAAA,EAAoB,EAAA,MAAA,CAAA,EACS,EAAA,WAAA,EAAA,CAAA,mBAIvBQ,EAAA,gBAAA,SAAAC,EAAA,CAAA,IAAAC,EAAAC,EAAAC,CAAA,EAAAC,MAAAC,EAAAC,EAAA,EAAAC,OAAAC,EAAAH,EAAAI,QAAAC,UAAAT,CAAA,EAAAU,MAAAX,CAAA,IAAAK,EAAAI,QAAAC,UAAAT,CAAA,EAAAU,MAAAX,GAAAY,EAAAZ,CAAA,CAAA,CAAA,EASDP,EAAA,EACDF,EAAA,EAAA,mCAAA,EAAA,EAGEQ,EAAA,cAAA,SAAAC,EAAA,CAAA,IAAAC,EAAAC,EAAAC,CAAA,EAAAC,MAAAC,EAAAC,EAAA,EAAAC,OAAAC,EAAAH,EAAAI,QAAAC,UAAAT,CAAA,EAAAU,MAAAX,CAAA,IAAAK,EAAAI,QAAAC,UAAAT,CAAA,EAAAU,MAAAX,GAAAY,EAAAZ,CAAA,CAAA,CAAA,EACDP,EAAA,EAAmC,EAEtCF,EAAA,GAAA,MAAA,CAAA,EAA2B,GAAA,WAAA,EAAA,CAAA,oBAIvBQ,EAAA,gBAAA,SAAAC,EAAA,CAAA,IAAAC,EAAAC,EAAAC,CAAA,EAAAC,MAAAC,EAAAC,EAAA,EAAAC,OAAAC,EAAAH,EAAAI,QAAAC,UAAAT,CAAA,EAAAY,MAAAb,CAAA,IAAAK,EAAAI,QAAAC,UAAAT,CAAA,EAAAY,MAAAb,GAAAY,EAAAZ,CAAA,CAAA,CAAA,EASDP,EAAA,EACDF,EAAA,GAAA,mCAAA,EAAA,EAGEQ,EAAA,cAAA,SAAAC,EAAA,CAAA,IAAAC,EAAAC,EAAAC,CAAA,EAAAC,MAAAC,EAAAC,EAAA,EAAAC,OAAAC,EAAAH,EAAAI,QAAAC,UAAAT,CAAA,EAAAY,MAAAb,CAAA,IAAAK,EAAAI,QAAAC,UAAAT,CAAA,EAAAY,MAAAb,GAAAY,EAAAZ,CAAA,CAAA,CAAA,EACDP,EAAA,EAAmC,EAChC,EAGRF,EAAA,GAAA,SAAA,EAAA,oBAGEuB,EAAA,QAAA,UAAA,CAAA,IAAAb,EAAAC,EAAAC,CAAA,EAAAC,MAAAC,EAAAC,EAAA,EAAA,OAAAM,EAASP,EAAAU,UAAAd,CAAA,CAAY,CAAA,CAAA,EAGrBV,EAAA,GAAA,UAAA,EAAUC,EAAA,GAAA,OAAA,EAAKC,EAAA,EAAW,EACnB,EAEXuB,EAAA,GAAAC,GAAA,EAAA,EAAA,aAAA,EAAA,gEA1CQvB,EAAA,CAAA,EAAAwB,EAAA,cAAAtB,EAAA,EAAA,GAAA,wCAAA,CAAA,EAEAuB,GAAA,OAAA,sBAAAlB,EAAA,EAAA,EAPAmB,EAAA,UAAAf,EAAAI,QAAAC,UAAAT,CAAA,EAAAU,KAAA,EAYAjB,EAAA,CAAA,EAAA2B,EAAA,SAAAC,CAAA,EACAF,EAAA,QAAAf,EAAAI,QAAAC,UAAAT,CAAA,EAAAU,KAAA,EAYAjB,EAAA,CAAA,EAAAwB,EAAA,cAAAtB,EAAA,GAAA,GAAA,wCAAA,CAAA,EAEAuB,GAAA,OAAA,sBAAAlB,EAAA,EAAA,EAPAmB,EAAA,UAAAf,EAAAI,QAAAC,UAAAT,CAAA,EAAAY,KAAA,EAYAnB,EAAA,CAAA,EAAA2B,EAAA,SAAAE,CAAA,EACAH,EAAA,QAAAf,EAAAI,QAAAC,UAAAT,CAAA,EAAAY,KAAA,EASJnB,EAAA,EAAA2B,EAAA,aAAAzB,EAAA,GAAA,GAAA,6CAAA,CAAA,EAMDF,EAAA,CAAA,EAAA2B,EAAA,OAAAG,EAAAC,SAAA,yBAAA,GAAAD,EAAAE,SAAAC,EAAAF,SAAA,yBAAA,GAAAE,EAAAD,OAAA,GDlCF,IAAME,GAA0C,CACrDlB,UAAW,CAAC,CAAEC,MAAO,GAAIE,MAAO,EAAE,CAAE,GAQzBgB,IAAyB,IAAA,CAAhC,IAAOA,EAAP,MAAOA,CAAyB,CASpCC,YAAoBC,EAAwC,CAAxC,KAAAA,aAAAA,EARE,KAAAC,MAAQ,2BAIpB,KAAAC,aAAe,IAAIC,EAEZ,KAAAC,cAAgC,CAAA,CAEc,CAE/DC,iBAAe,CACb,KAAKD,cAAcE,KACjB,KAAKC,YAAYC,KAAKC,aAAaC,UAAU,IAAK,CAChD,KAAKV,aAAaW,QAAO,CAC3B,CAAC,EACD,KAAKJ,YAAYK,cAAcF,UAAWG,GAAU,CAClD,KAAKX,aAAaY,KAAKD,IAAW,OAAO,CAC3C,CAAC,CAAC,CAEN,CACAE,aAAW,CACT,KAAKX,cAAcY,QAASC,GAAQA,EAAIC,YAAW,CAAE,CACvD,CAGAC,8BAA8B9C,EAAY+C,EAAS,CAEjD,OAAO/C,CACT,CAEAgD,QAAM,CACJ,KAAK3C,QAAQC,UAAU2B,KAAK,CAAE1B,MAAO,GAAIE,MAAO,EAAE,CAAE,CACtD,CACAE,UAAUX,EAAa,CACrB,KAAKK,QAAQC,UAAU2C,OAAOjD,EAAO,CAAC,EAClC,KAAKK,QAAQC,UAAU4C,SAAW,GACpC,KAAKF,OAAM,CAEf,yCAvCWvB,GAAyB0B,EAAAC,CAAA,CAAA,CAAA,sBAAzB3B,EAAyB4B,UAAA,CAAA,CAAA,0BAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,qGAAzBE,EAAAD,EAAA5B,KAAA,irBCnCbzC,EAAA,EAAA,OAAA,KAAA,CAAA,EAA4B,EAAA,iBAAA,EACT,EAAA,YAAA,EACHC,EAAA,CAAA,mBAAkEC,EAAA,EAE9EuB,EAAA,EAAA8C,GAAA,GAAA,GAAA,eAAA,CAAA,EAgEFrE,EAAA,EAAkB,EAGpBF,EAAA,EAAA,SAAA,CAAA,EAA2BuB,EAAA,QAAA,UAAA,CAAAP,OAAAL,EAAA6D,CAAA,EAAAnD,EAASgD,EAAAR,OAAA,CAAQ,CAAA,CAAA,EAAE5D,EAAA,CAAA,mBAA4DC,EAAA,QArE1FC,EAAA,CAAA,EAAAsE,EAAApE,EAAA,EAAA,EAAA,gDAAA,CAAA,EAEmBF,EAAA,CAAA,EAAA2B,EAAA,UAAAuC,EAAAnD,QAAAC,SAAA,EAAsB,eAAAkD,EAAAV,6BAAA,EAmEXxD,EAAA,CAAA,EAAAsE,EAAApE,EAAA,EAAA,EAAA,0CAAA,CAAA;0HDpCxC,IAAOiC,EAAPoC,SAAOpC,CAAyB,GAAA,yBEvBzBqC,GAAgC,CAC3CC,aAAc,MAQHC,IAAoB,IAAA,CAA3B,IAAOA,EAAP,MAAOA,CAAoB,CAO/BC,YAAoBC,EAAwC,CAAxC,KAAAA,aAAAA,EANE,KAAAC,MAAQ,qBAIb,KAAAC,cAAgC,CAAA,CAEc,CAE/DC,iBAAe,CACb,KAAKD,cAAcE,KACjB,KAAKC,YAAYC,KAAKC,aAAaC,UAAU,IAAK,CAChD,KAAKR,aAAaS,QAAO,CAC3B,CAAC,CAAC,CAEN,CACAC,aAAW,CACT,KAAKR,cAAcS,QAASC,GAAQA,EAAIC,YAAW,CAAE,CACvD,yCAlBWf,GAAoBgB,EAAAC,CAAA,CAAA,CAAA,sBAApBjB,EAAoBkB,UAAA,CAAA,CAAA,oBAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,qGAApBE,EAAAD,EAAAlB,KAAA,6VCrBboB,EAAA,EAAA,OAAA,KAAA,CAAA,EAA4B,EAAA,kBAAA,CAAA,EACO,EAAA,YAAA,EACnBC,EAAA,CAAA,mBAAqDC,EAAA,EACjEF,EAAA,EAAA,QAAA,CAAA,EAOEG,EAAA,gBAAA,SAAAC,EAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAAV,EAAAW,QAAAjC,aAAA4B,CAAA,IAAAN,EAAAW,QAAAjC,aAAA4B,GAAAM,EAAAN,CAAA,CAAA,CAAA,EAPFF,EAAA,EASE,EACc,QAXJS,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,mCAAA,CAAA,EAQVF,EAAA,CAAA,EAAAG,EAAA,UAAAhB,EAAAW,QAAAjC,YAAA;oHDWA,IAAOC,EAAPsC,SAAOtC,CAAoB,GAAA,EEXjC,IAAauC,IAAyB,IAAA,CAAhC,IAAOA,EAAP,MAAOA,CAAyB,CACpCC,YAC+DC,EAC5CC,EAAsC,CADM,KAAAD,QAAAA,EAC5C,KAAAC,mBAAAA,CAChB,CAEIC,UAAUC,EAAsB,CACrC,IAAIC,EAAeC,GAAG,EAAK,EAC3B,OAAI,KAAKL,UACPI,EAAe,KAAKJ,QAAQM,KAC1BC,GAAWC,GACLA,EAAOC,OAASC,GAAWC,oBACtB,KAAKV,mBAAmBW,eAAeJ,EAAOK,GAAI,GAAI,CAACV,CAAc,CAAC,EAExEE,GAAG,CAAA,CAAE,CACb,EACDS,EAAKC,GAAsBA,EAAkBZ,CAAc,CAAC,EAC5Da,GAAY,CAAC,CAAC,GAGXZ,CACT,yCArBWN,GAAyBmB,EAE1BC,GAAsB,CAAA,EAAAD,EAAAE,EAAA,CAAA,CAAA,wBAFrBrB,EAAyBsB,QAAzBtB,EAAyBuB,UAAAC,WAFxB,MAAM,CAAA,EAEd,IAAOxB,EAAPyB,SAAOzB,CAAyB,GAAA,yBCMzB0B,IAA0B,IAAA,CAAjC,IAAOA,EAAP,MAAOA,CAA0B,CAKrCC,YAAoBC,EAAwC,CAAxC,KAAAA,aAAAA,EAJE,KAAAC,MAAQ,qBAIiC,CAE/DC,iBAAe,CACb,KAAKC,YAAYC,KAAKC,aAAaC,UAAU,IAAK,CAChD,KAAKN,aAAaO,QAAO,CAC3B,CAAC,CACH,yCAXWT,GAA0BU,EAAAC,CAAA,CAAA,CAAA,sBAA1BX,EAA0BY,UAAA,CAAA,CAAA,qBAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,qGAA1BE,EAAAD,EAAAZ,KAAA,oiBChBbc,EAAA,EAAA,OAAA,KAAA,CAAA,EAA4B,EAAA,MAAA,CAAA,EACG,EAAA,kBAAA,CAAA,EAC2B,EAAA,YAAA,EACxCC,EAAA,CAAA,mBAA2DC,EAAA,EACvEF,EAAA,EAAA,QAAA,CAAA,mBAOEG,EAAA,gBAAA,SAAAC,EAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAAV,EAAAW,QAAAC,IAAAN,CAAA,IAAAN,EAAAW,QAAAC,IAAAN,GAAAO,EAAAP,CAAA,CAAA,CAAA,EAPFF,EAAA,EASE,EAEJF,EAAA,EAAA,kBAAA,CAAA,EAAsD,GAAA,YAAA,EACxCC,EAAA,EAAA,oBAA8DC,EAAA,EAC1EF,EAAA,GAAA,QAAA,CAAA,oBAOEG,EAAA,gBAAA,SAAAC,EAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAAV,EAAAW,QAAAG,OAAAR,CAAA,IAAAN,EAAAW,QAAAG,OAAAR,GAAAO,EAAAP,CAAA,CAAA,CAAA,EAPFF,EAAA,EASE,EACc,EACd,QAzBUW,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,yCAAA,CAAA,EAOVF,EAAA,CAAA,EAAAG,EAAA,cAAAD,EAAA,EAAA,EAAA,sBAAA,CAAA,EACAE,EAAA,UAAAnB,EAAAW,QAAAC,GAAA,EAKUG,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,GAAA,4CAAA,CAAA,EAOVF,EAAA,CAAA,EAAAG,EAAA,cAAAD,EAAA,GAAA,GAAA,sBAAA,CAAA,EACAE,EAAA,UAAAnB,EAAAW,QAAAG,MAAA;2HDRF,IAAO7B,EAAPmC,SAAOnC,CAA0B,GAAA,kEGfrCoC,EAAA,CAAA,EACEC,EAAA,EAAA,MAAA,EAAA,EAA+B,EAAA,GAAA,EAC1BC,EAAA,CAAA,mBAAoDC,EAAA,EACvDF,EAAA,EAAA,GAAA,EAAG,EAAA,QAAA,EACOC,EAAA,CAAA,mBAAkEC,EAAA,EAAS,EACjF,aAHDC,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,kCAAA,CAAA,EAEOF,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,gDAAA,CAAA,yBAOVC,EAAA,EAAA,MAAA,EAAA,yBAwBIP,EAAA,CAAA,EACEC,EAAA,EAAA,OAAA,EAAA,EAA2BC,EAAA,EAAA,aAAA,EAAWC,EAAA,8BAI1CF,EAAA,EAAA,WAAA,EAAA,EAA2DC,EAAA,EAAA,OAAA,EAAKC,EAAA,sCAI9DH,EAAA,CAAA,EACEC,EAAA,EAAA,SAAA,EAAA,mBAIEO,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAAC,UAAA,OAAAC,EAAAH,EAAAI,UAA2B,EAAK,CAAA,CAAA,EAEhCd,EAAA,EAAA,UAAA,EAAUC,EAAA,EAAA,aAAA,EAAWC,EAAA,EAAW,YAHhCC,EAAA,EAAAY,GAAA,aAAA,IAAAV,EAAA,EAAA,EAAA,sCAAA,EAAA,GAAA,sCAMJN,EAAA,CAAA,EACEC,EAAA,EAAA,SAAA,EAAA,mBAIEO,EAAA,QAAA,UAAA,CAAAC,EAAAQ,CAAA,EAAA,IAAAN,EAAAC,EAAA,EAAAC,UAAA,OAAAC,EAAAH,EAAAI,UAA2B,EAAI,CAAA,CAAA,EAE/Bd,EAAA,EAAA,UAAA,EAAUC,EAAA,EAAA,aAAA,EAAWC,EAAA,EAAW,YAHhCC,EAAA,EAAAY,GAAA,aAAA,IAAAV,EAAA,EAAA,EAAA,wCAAA,EAAA,GAAA,0BA2BJN,EAAA,CAAA,EACEC,EAAA,EAAA,OAAA,EAAA,EAA2BC,EAAA,EAAA,aAAA,EAAWC,EAAA,8BAI1CF,EAAA,EAAA,WAAA,EAAA,EAA2DC,EAAA,EAAA,OAAA,EAAKC,EAAA,sCAI9DH,EAAA,CAAA,EACEC,EAAA,EAAA,SAAA,EAAA,mBAGEO,EAAA,QAAA,SAAAU,EAAA,CAAAT,EAAAU,CAAA,EAAA,IAAAR,EAAAC,EAAA,EAAAC,UAAAO,EAAAR,EAAA,EAAAD,OAAAA,EAAAI,UAA2B,GAAKD,EAAEM,EAAAC,gBAAgB,GAAKH,CAAA,CAAS,CAAA,CAAA,EAGhEjB,EAAA,EAAA,UAAA,EAAUC,EAAA,EAAA,aAAA,EAAWC,EAAA,EAAW,YAFhCC,EAAA,EAAAY,GAAA,aAAA,IAAAV,EAAA,EAAA,EAAA,sCAAA,EAAA,GAAA,sCAKJN,EAAA,CAAA,EACEC,EAAA,EAAA,SAAA,EAAA,mBAGEO,EAAA,QAAA,SAAAU,EAAA,CAAAT,EAAAa,CAAA,EAAA,IAAAX,EAAAC,EAAA,EAAAC,UAAAO,EAAAR,EAAA,EAAAD,OAAAA,EAAAI,UAA2B,GAAID,EAAEM,EAAAC,gBAAgB,GAAIH,CAAA,CAAS,CAAA,CAAA,EAG9DjB,EAAA,EAAA,UAAA,EAAUC,EAAA,EAAA,aAAA,EAAWC,EAAA,EAAW,YAFhCC,EAAA,EAAAY,GAAA,aAAA,IAAAV,EAAA,EAAA,EAAA,wCAAA,EAAA,GAAA,sCAeJN,EAAA,CAAA,EACEC,EAAA,EAAA,oBAAA,EAAA,EAEEO,EAAA,eAAA,SAAAU,EAAA,CAAAT,EAAAc,CAAA,EAAA,IAAAC,EAAAZ,EAAA,EAAAa,MAAAL,EAAAR,EAAA,EAAA,OAAAE,EAAgBM,EAAAM,yBAAAR,EAAAM,CAAA,CAAuC,CAAA,CAAA,EACxDrB,EAAA,kCAFCC,EAAA,EAAAuB,EAAA,UAAAhB,EAAAiB,OAAA,sCAKJ5B,EAAA,CAAA,EACEC,EAAA,EAAA,sBAAA,EAAA,EAEEO,EAAA,eAAA,SAAAU,EAAA,CAAAT,EAAAoB,CAAA,EAAA,IAAAL,EAAAZ,EAAA,EAAAa,MAAAL,EAAAR,EAAA,EAAA,OAAAE,EAAgBM,EAAAM,yBAAAR,EAAAM,CAAA,CAAuC,CAAA,CAAA,EACxDrB,EAAA,kCAFCC,EAAA,EAAAuB,EAAA,UAAAhB,EAAAiB,OAAA,sCAKJ5B,EAAA,CAAA,EACEC,EAAA,EAAA,wBAAA,GAAA,CAAA,eAIEO,EAAA,eAAA,SAAAU,EAAA,CAAAT,EAAAqB,CAAA,EAAA,IAAAN,EAAAZ,EAAA,EAAAa,MAAAL,EAAAR,EAAA,EAAA,OAAAE,EAAgBM,EAAAM,yBAAAR,EAAAM,CAAA,CAAuC,CAAA,CAAA,EACxDrB,EAAA,wCAHCC,EAAA,EAAAuB,EAAA,2BAAArB,EAAA,EAAA,EAAAc,EAAAW,yBAAA,CAAA,EAA8D,UAAApB,EAAAiB,OAAA,sCAMlE5B,EAAA,CAAA,EACEC,EAAA,EAAA,qBAAA,EAAA,EAEEO,EAAA,eAAA,SAAAU,EAAA,CAAAT,EAAAuB,CAAA,EAAA,IAAAR,EAAAZ,EAAA,EAAAa,MAAAL,EAAAR,EAAA,EAAA,OAAAE,EAAgBM,EAAAM,yBAAAR,EAAAM,CAAA,CAAuC,CAAA,CAAA,EACxDrB,EAAA,kCAFCC,EAAA,EAAAuB,EAAA,UAAAhB,EAAAiB,OAAA,sCAKJ5B,EAAA,CAAA,EACEC,EAAA,EAAA,6BAAA,EAAA,EAEEO,EAAA,eAAA,SAAAU,EAAA,CAAAT,EAAAwB,CAAA,EAAA,IAAAT,EAAAZ,EAAA,EAAAa,MAAAL,EAAAR,EAAA,EAAA,OAAAE,EAAgBM,EAAAM,yBAAAR,EAAAM,CAAA,CAAuC,CAAA,CAAA,EACxDrB,EAAA,kCAFCC,EAAA,EAAAuB,EAAA,UAAAhB,EAAAiB,OAAA,sCAKJ5B,EAAA,CAAA,EACEC,EAAA,EAAA,2BAAA,EAAA,EAEEO,EAAA,eAAA,SAAAU,EAAA,CAAAT,EAAAyB,CAAA,EAAA,IAAAV,EAAAZ,EAAA,EAAAa,MAAAL,EAAAR,EAAA,EAAA,OAAAE,EAAgBM,EAAAM,yBAAAR,EAAAM,CAAA,CAAuC,CAAA,CAAA,EACxDrB,EAAA,kCAFCC,EAAA,EAAAuB,EAAA,UAAAhB,EAAAiB,OAAA,sCAKJ5B,EAAA,CAAA,EACEC,EAAA,EAAA,qBAAA,EAAA,EAEEO,EAAA,eAAA,SAAAU,EAAA,CAAAT,EAAA0B,CAAA,EAAA,IAAAX,EAAAZ,EAAA,EAAAa,MAAAL,EAAAR,EAAA,EAAA,OAAAE,EAAgBM,EAAAM,yBAAAR,EAAAM,CAAA,CAAuC,CAAA,CAAA,EACxDrB,EAAA,kCAFCC,EAAA,EAAAuB,EAAA,UAAAhB,EAAAiB,OAAA,6BAKJ5B,EAAA,CAAA,EACEO,EAAA,EAAA,sBAAA,EAAA,gCAAqBH,EAAA,EAAAuB,EAAA,UAAAhB,EAAAiB,OAAA,6BAGvB5B,EAAA,CAAA,EACEO,EAAA,EAAA,qBAAA,EAAA,gCAAoBH,EAAA,EAAAuB,EAAA,UAAAhB,EAAAiB,OAAA,sCAGtB5B,EAAA,CAAA,EACEC,EAAA,EAAA,mBAAA,EAAA,EAEEO,EAAA,eAAA,SAAAU,EAAA,CAAAT,EAAA2B,CAAA,EAAA,IAAAZ,EAAAZ,EAAA,EAAAa,MAAAL,EAAAR,EAAA,EAAA,OAAAE,EAAgBM,EAAAM,yBAAAR,EAAAM,CAAA,CAAuC,CAAA,CAAA,EACxDrB,EAAA,kCAFCC,EAAA,EAAAuB,EAAA,UAAAhB,EAAAiB,OAAA,6BAMJ5B,EAAA,CAAA,EACEO,EAAA,EAAA,mCAAA,EAAA,gCAAkCH,EAAA,EAAAuB,EAAA,UAAAhB,EAAAiB,OAAA,0BAgB5B5B,EAAA,CAAA,EACEE,EAAA,EAAA,SAAA,iCALJF,EAAA,CAAA,EACEE,EAAA,CAAA,mBAGAmC,EAAA,EAAAC,GAAA,EAAA,EAAA,eAAA,CAAA,iCAHAlC,EAAA,EAAAmC,GAAA,IAAA5B,EAAA6B,QAAAC,IAAA,MAAAnC,EAAA,EAAA,EAAA,+BAAA,EAAA,GAAA,EAGeF,EAAA,CAAA,EAAAuB,EAAA,OAAAhB,EAAA6B,QAAAC,MAAA,MAAA9B,EAAA6B,QAAAE,SAAA,IAAA,6BAMjB1C,EAAA,CAAA,EACEE,EAAA,CAAA,kDAAAE,EAAA,EAAAmC,GAAA,IAAA5B,EAAA6B,QAAAE,OAAA,MAAApC,EAAA,EAAA,EAAA,kCAAA,EAAA,GAAA,0BAMAN,EAAA,CAAA,EACEE,EAAA,EAAA,SAAA,iCAHJF,EAAA,CAAA,EAEEqC,EAAA,EAAAM,GAAA,EAAA,EAAA,eAAA,CAAA,EAGAzC,EAAA,CAAA,kDAHeE,EAAA,EAAAuB,EAAA,OAAAhB,EAAA6B,QAAAC,MAAA,MAAA9B,EAAA6B,QAAAE,SAAA,IAAA,EAGftC,EAAA,EAAAmC,GAAA,IAAA5B,EAAAiB,QAAAgB,eAAA,MAAAtC,EAAA,EAAA,EAAA,mCAAA,EAAA,GAAA,sCAQNN,EAAA,CAAA,EACEC,EAAA,EAAA,kBAAA,EAAA,EAAiC,EAAA,YAAA,EACnBC,EAAA,CAAA,mBAAiEC,EAAA,EAC7EF,EAAA,EAAA,QAAA,EAAA,mBAQEO,EAAA,SAAA,UAAA,CAAAC,EAAAoC,CAAA,EAAA,IAAAzB,EAAAR,EAAA,CAAA,EAAA,OAAAE,EAAUM,EAAA0B,eAAA,CAAgB,CAAA,CAAA,EAAC,QAAA,UAAA,CAAArC,EAAAoC,CAAA,EAAA,IAAAzB,EAAAR,EAAA,CAAA,EAAA,OAAAE,EAClBM,EAAA0B,eAAA,CAAgB,CAAA,CAAA,EACzBC,EAAA,gBAAA,SAAA7B,EAAA,CAAAT,EAAAoC,CAAA,EAAA,IAAAlC,EAAAC,EAAA,CAAA,EAAAC,UAAAmC,OAAAC,EAAAtC,EAAAiB,QAAAgB,eAAA1B,CAAA,IAAAP,EAAAiB,QAAAgB,eAAA1B,GAAAJ,EAAAI,CAAA,CAAA,CAAA,EAVFf,EAAA,EAYE,mCAbUC,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,+CAAA,CAAA,EAOVF,EAAA,CAAA,EAAA8C,EAAA,cAAA5C,EAAA,EAAA,EAAA,sBAAA,CAAA,EAIA6C,EAAA,UAAAxC,EAAAiB,QAAAgB,cAAA,sCAhDV5C,EAAA,CAAA,EACEC,EAAA,EAAA,sBAAA,EAAA,EAA2D8C,EAAA,iBAAA,SAAA7B,EAAA,CAAAT,EAAA2C,CAAA,EAAA,IAAAzC,EAAAC,EAAA,EAAAC,UAAAmC,OAAAC,EAAAtC,EAAA0C,YAAAnC,CAAA,IAAAP,EAAA0C,YAAAnC,GAAAJ,EAAAI,CAAA,CAAA,CAAA,EACzDjB,EAAA,EAAA,6BAAA,EAAA,EAAsD,EAAA,iBAAA,EACnCC,EAAA,CAAA,mBAAqDC,EAAA,EAEtEF,EAAA,EAAA,uBAAA,EAEEoC,EAAA,EAAAiB,GAAA,EAAA,EAAA,eAAA,CAAA,EAAiD,EAAAC,GAAA,EAAA,EAAA,eAAA,CAAA,EAUG,EAAAC,GAAA,EAAA,EAAA,eAAA,CAAA,EAYtDrD,EAAA,EAAwB,EAG1BI,EAAA,GAAA,sBAAA,EAAA,EAGA8B,EAAA,GAAAoB,GAAA,EAAA,EAAA,eAAA,CAAA,EAkBFtD,EAAA,kCApD2DC,EAAA,EAAA+C,EAAA,WAAAxC,EAAA0C,WAAA,EAC7BjD,EAAA,EAAAuB,EAAA,iBAAA,MAAA,EACTvB,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,mCAAA,CAAA,EAIAF,EAAA,CAAA,EAAAuB,EAAA,OAAAhB,EAAA6B,QAAAC,MAAA,IAAA,EAUArC,EAAA,EAAAuB,EAAA,OAAAhB,EAAA6B,QAAAE,SAAA,IAAA,EAKAtC,EAAA,EAAAuB,EAAA,OAAAhB,EAAA+C,OAAA,kBAAA/C,EAAAiB,QAAAgB,iBAAA,IAAA,EAUExC,EAAA,EAAAuB,EAAA,UAAAhB,EAAA6B,OAAA,EAGNpC,EAAA,EAAAuB,EAAA,OAAAhB,EAAA+C,OAAA,gBAAA,sCAuCrB1D,EAAA,CAAA,EACEC,EAAA,EAAA,SAAA,EAAA,EAAsBO,EAAA,QAAA,UAAA,CAAAC,EAAAkD,CAAA,EAAA,IAAAhD,EAAAC,EAAA,EAAAC,UAAA,OAAAC,EAAAH,EAAAI,UAA2B,EAAI,CAAA,CAAA,EACnDd,EAAA,EAAA,UAAA,EAAUC,EAAA,EAAA,aAAA,EAAWC,EAAA,EACrBF,EAAA,EAAA,MAAA,EAAMC,EAAA,CAAA,mBAAsDC,EAAA,EAAO,YAA7DC,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,oCAAA,CAAA,sCAIVN,EAAA,CAAA,EACEC,EAAA,EAAA,SAAA,EAAA,EAAsBO,EAAA,QAAA,UAAA,CAAAC,EAAAmD,CAAA,EAAA,IAAAjD,EAAAC,EAAA,EAAAC,UAAA,OAAAC,EAAAH,EAAAI,UAA2B,EAAK,CAAA,CAAA,EACpDd,EAAA,EAAA,UAAA,EAAUC,EAAA,EAAA,aAAA,EAAWC,EAAA,EACrBF,EAAA,EAAA,MAAA,EAAMC,EAAA,CAAA,mBAAoDC,EAAA,EAAO,YAA3DC,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,kCAAA,CAAA,sCAhRdN,EAAA,CAAA,EACEC,EAAA,EAAA,MAAA,EAAA,EACEoC,EAAA,EAAAwB,GAAA,EAAA,EAAA,MAAA,EAAA,EAEA5D,EAAA,EAAA,MAAA,EAAA,EAAiC,EAAA,SAAA,EAAA,mBAM7BO,EAAA,QAAA,UAAA,CAAA,IAAAgB,EAAAf,EAAAqD,CAAA,EAAArC,MAAAL,EAAAR,EAAA,EAAA,OAAAE,EAASM,EAAA2C,UAAAvC,EAAA,EAAmB,CAAC,CAAA,CAAA,EAE7BvB,EAAA,EAAA,UAAA,EAAUC,EAAA,EAAA,cAAA,EAAYC,EAAA,EAAW,EAEnCF,EAAA,EAAA,SAAA,EAAA,mBAKEO,EAAA,QAAA,UAAA,CAAA,IAAAgB,EAAAf,EAAAqD,CAAA,EAAArC,MAAAL,EAAAR,EAAA,EAAA,OAAAE,EAASM,EAAA2C,UAAAvC,EAAiB,CAAC,CAAC,CAAA,CAAA,EAE5BvB,EAAA,GAAA,UAAA,EAAUC,EAAA,GAAA,gBAAA,EAAcC,EAAA,EAAW,EAGrCF,EAAA,GAAA,MAAA,EAAA,EACEC,EAAA,EAAA,gBACAmC,EAAA,GAAA2B,GAAA,EAAA,EAAA,eAAA,CAAA,EAGF7D,EAAA,EAEAkC,EAAA,GAAA4B,GAAA,EAAA,EAAA,WAAA,EAAA,EAGAjE,EAAA,GAAA,EAAA,EACEqC,EAAA,GAAA6B,GAAA,EAAA,EAAA,eAAA,EAAA,EAAmC,GAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,MAsBrClE,EAAA,GAAA,SAAA,EAAA,EAIC,GAAA,UAAA,EACWC,EAAA,GAAA,YAAA,EAAUC,EAAA,EAAW,EACxB,EAIXF,EAAA,GAAA,MAAA,EAAA,EAGEO,EAAA,WAAA,SAAAU,EAAA,CAAA,IAAAP,EAAAF,EAAAqD,CAAA,EAAAjD,UAAAO,EAAAR,EAAA,EAAAD,OAAAA,EAAAI,UAAA,CAAAJ,EAAAI,UAAAD,EAAgDM,EAAAC,gBAAAV,EAAAI,UAAAG,CAAA,CAAwC,CAAA,CAAA,EAExFjB,EAAA,GAAA,WAAA,EAAA,EAAkDC,EAAA,GAAA,gBAAA,EAAcC,EAAA,EAEhEF,EAAA,GAAA,MAAA,EAAA,EACEC,EAAA,EAAA,gBACAmC,EAAA,GAAA+B,GAAA,EAAA,EAAA,eAAA,CAAA,EAGFjE,EAAA,EAEAkC,EAAA,GAAAgC,GAAA,EAAA,EAAA,WAAA,EAAA,EAGArE,EAAA,GAAA,EAAA,EACEqC,EAAA,GAAAiC,GAAA,EAAA,EAAA,eAAA,EAAA,EAAmC,GAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,MAsBrCtE,EAAA,GAAA,SAAA,EAAA,EAAiG,GAAA,UAAA,EACrFC,EAAA,GAAA,YAAA,EAAUC,EAAA,EAAW,EACxB,EAIXF,EAAA,GAAA,MAAA,EAAA,EACED,EAAA,GAAA,EAAA,EACEqC,EAAA,GAAAmC,GAAA,EAAA,EAAA,eAAA,EAAA,EAAsC,GAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,EAOE,GAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,EAOE,GAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,EASH,GAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,EAOQ,GAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,EAOF,GAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,EAOA,GAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,EAOL,GAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,EAID,GAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,EAIF,GAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,MAcvC7C,EAAA,GAAA8C,GAAA,GAAA,GAAA,eAAA,CAAA,EAuDFhF,EAAA,EAAM,EAMRF,EAAA,GAAA,WAAA,KAAA,CAAA,EAA0B,GAAA,SAAA,EAAA,EACFO,EAAA,QAAA,UAAA,CAAA,IAAAgB,EAAAf,EAAAqD,CAAA,EAAArC,MAAAL,EAAAR,EAAA,EAAA,OAAAE,EAASM,EAAAgE,eAAA5D,CAAA,CAAqB,CAAA,CAAA,EAClDvB,EAAA,GAAA,UAAA,EAAUC,EAAA,GAAA,cAAA,EAAYC,EAAA,EACtBF,EAAA,GAAA,MAAA,EAAMC,EAAA,EAAA,oBAAuDC,EAAA,EAAO,EAGtEF,EAAA,GAAA,SAAA,EAAA,EAAoG,GAAA,UAAA,EACxFC,EAAA,GAAA,KAAA,EAAGC,EAAA,EACbF,EAAA,GAAA,MAAA,EAAMC,EAAA,EAAA,oBAA2DC,EAAA,EAAO,EAG1EI,EAAA,GAAA,aAAA,EAEA8B,EAAA,GAAAgD,GAAA,EAAA,EAAA,eAAA,CAAA,EAAuC,GAAAC,GAAA,EAAA,EAAA,eAAA,CAAA,EAcvCrF,EAAA,GAAA,SAAA,EAAA,EAA2D,GAAA,UAAA,EAC/CC,EAAA,GAAA,WAAA,EAASC,EAAA,EACnBF,EAAA,GAAA,MAAA,EAAMC,EAAA,EAAA,oBAAmDC,EAAA,EAAO,EAGlEI,EAAA,GAAA,aAAA,EAEAN,EAAA,GAAA,SAAA,EAAA,EAAsBO,EAAA,QAAA,UAAA,CAAA,IAAAgB,EAAAf,EAAAqD,CAAA,EAAArC,MAAAL,EAAAR,EAAA,EAAA,OAAAE,EAASM,EAAAmE,YAAA/D,CAAA,CAAkB,CAAA,CAAA,EAC/CvB,EAAA,GAAA,UAAA,EAAUC,EAAA,GAAA,QAAA,EAAMC,EAAA,EAChBF,EAAA,GAAA,MAAA,EAAMC,EAAA,EAAA,oBAAoDC,EAAA,EAAO,EAC1D,EAGXF,EAAA,GAAA,WAAA,KAAA,CAAA,EAAoC,GAAA,SAAA,EAAA,EACOO,EAAA,QAAA,UAAA,CAAA,IAAAgB,EAAAf,EAAAqD,CAAA,EAAArC,MAAAL,EAAAR,EAAA,EAAA,OAAAE,EAASM,EAAAoE,eAAAhE,CAAA,CAAqB,CAAA,CAAA,EACrEvB,EAAA,GAAA,UAAA,EAAUC,EAAA,GAAA,oBAAA,EAAkBC,EAAA,EAC5BF,EAAA,GAAA,MAAA,EAAMC,EAAA,EAAA,oBAAyDC,EAAA,EAAO,EAGxEF,EAAA,GAAA,SAAA,EAAA,EAAyCO,EAAA,QAAA,UAAA,CAAA,IAAAgB,EAAAf,EAAAqD,CAAA,EAAArC,MAAAL,EAAAR,EAAA,EAAA,OAAAE,EAASM,EAAA2C,UAAAvC,EAAA,EAAmB,CAAC,CAAA,CAAA,EACpEvB,EAAA,GAAA,UAAA,EAAUC,EAAA,GAAA,cAAA,EAAYC,EAAA,EACtBF,EAAA,GAAA,MAAA,EAAMC,EAAA,EAAA,oBAAqDC,EAAA,EAAO,EAGpEF,EAAA,GAAA,SAAA,EAAA,EAAwCO,EAAA,QAAA,UAAA,CAAA,IAAAgB,EAAAf,EAAAqD,CAAA,EAAArC,MAAAL,EAAAR,EAAA,EAAA,OAAAE,EAASM,EAAA2C,UAAAvC,EAAiB,CAAC,CAAC,CAAA,CAAA,EAClEvB,EAAA,GAAA,UAAA,EAAUC,EAAA,GAAA,gBAAA,EAAcC,EAAA,EACxBF,EAAA,GAAA,MAAA,EAAMC,EAAA,EAAA,qBAAuDC,EAAA,EAAO,EAGtEF,EAAA,IAAA,SAAA,EAAA,EAAwCO,EAAA,QAAA,UAAA,CAAA,IAAAgB,EAAAf,EAAAqD,CAAA,EAAArC,MAAAL,EAAAR,EAAA,EAAA,OAAAE,EAASM,EAAAqE,kBAAAjE,CAAA,CAAwB,CAAA,CAAA,EACvEvB,EAAA,IAAA,UAAA,EAAUC,EAAA,IAAA,uBAAA,EAAqBC,EAAA,EAC/BF,EAAA,IAAA,MAAA,EAAMC,EAAA,GAAA,qBAA4DC,EAAA,EAAO,EAClE,2FAnTEC,EAAA,EAAAsF,GAAA,SAAA/E,EAAA+C,KAAA,EAAA,EAA+BiC,GAAA,eAAAhF,EAAAI,SAAA,EAMtCX,EAAA,CAAA,EAAAY,GAAA,aAAA,IAAAV,EAAA,EAAA,GAAA,mCAAA,EAAA,GAAA,EAEAqB,EAAA,WAAAiE,CAAA,EAOAxF,EAAA,CAAA,EAAAY,GAAA,aAAA,IAAAV,EAAA,EAAA,GAAA,qCAAA,EAAA,GAAA,EAEAqB,EAAA,WAAAkE,CAAA,EAOAzF,EAAA,CAAA,EAAA0F,EAAA,IAAAxF,EAAA,GAAA,GAAAc,EAAA2E,UAAApF,EAAA+C,IAAA,CAAA,EAAA,GAAA,EACetD,EAAA,CAAA,EAAAuB,EAAA,OAAAhB,EAAAI,SAAA,EAKNX,EAAA,EAAAuB,EAAA,OAAAhB,EAAAqF,QAAA,EAAA,EAGG5F,EAAA,EAAAuB,EAAA,WAAAhB,EAAAI,SAAA,EACGX,EAAA,EAAAuB,EAAA,eAAA,EAAA,EAUAvB,EAAA,EAAAuB,EAAA,eAAA,EAAA,EAefvB,EAAA,EAAAuB,EAAA,oBAAAsE,CAAA,EAeA7F,EAAA,CAAA,EAAA0F,EAAA,IAAAxF,EAAA,GAAA,GAAAc,EAAA2E,UAAApF,EAAA+C,IAAA,CAAA,EAAA,GAAA,EACetD,EAAA,CAAA,EAAAuB,EAAA,OAAAhB,EAAAI,SAAA,EAKNX,EAAA,EAAAuB,EAAA,OAAAhB,EAAAqF,QAAA,EAAA,EAGG5F,EAAA,EAAAuB,EAAA,WAAAhB,EAAAI,SAAA,EACGX,EAAA,EAAAuB,EAAA,eAAA,EAAA,EAUAvB,EAAA,EAAAuB,EAAA,eAAA,EAAA,EAYqDvB,EAAA,EAAAuB,EAAA,oBAAAsE,CAAA,EAOxD7F,EAAA,CAAA,EAAAuB,EAAA,WAAAhB,EAAA+C,IAAA,EACGtD,EAAA,EAAAuB,EAAA,eAAA,OAAA,EAOAvB,EAAA,EAAAuB,EAAA,eAAA,SAAA,EAOAvB,EAAA,EAAAuB,EAAA,eAAA,WAAA,EASAvB,EAAA,EAAAuB,EAAA,eAAA,QAAA,EAOAvB,EAAA,EAAAuB,EAAA,eAAA,gBAAA,EAOAvB,EAAA,EAAAuB,EAAA,eAAA,cAAA,EAOAvB,EAAA,EAAAuB,EAAA,eAAA,cAAA,EAOAvB,EAAA,EAAAuB,EAAA,eAAA,SAAA,EAIAvB,EAAA,EAAAuB,EAAA,eAAA,QAAA,EAIAvB,EAAA,EAAAuB,EAAA,eAAA,MAAA,EAQAvB,EAAA,EAAAuB,EAAA,eAAAP,EAAA8E,oBAAAC,oBAAA,EAMF/F,EAAA,EAAAuB,EAAA,OAAAhB,EAAA+C,OAAA,QAAA,EAgETtD,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,GAAA,qCAAA,CAAA,EAGcF,EAAA,CAAA,EAAAuB,EAAA,oBAAAyE,CAAA,EAAqC,qBAAAC,GAAA,GAAAC,GAAA9E,CAAA,CAAA,EAEnDpB,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,GAAA,yCAAA,CAAA,EAKOF,EAAA,CAAA,EAAAuB,EAAA,OAAA,CAAAhB,EAAAI,SAAA,EAOAX,EAAA,EAAAuB,EAAA,OAAAhB,EAAAI,SAAA,EAOOX,EAAA,EAAAuB,EAAA,oBAAA4E,CAAA,EAEdnG,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,GAAA,iCAAA,CAAA,EAOAF,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,GAAA,kCAAA,CAAA,EAKcF,EAAA,CAAA,EAAAuB,EAAA,WAAAiE,CAAA,EAEdxF,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,GAAA,uCAAA,CAAA,EAGcF,EAAA,CAAA,EAAAuB,EAAA,WAAAiE,CAAA,EAEdxF,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,GAAA,mCAAA,CAAA,EAGcF,EAAA,CAAA,EAAAuB,EAAA,WAAAkE,CAAA,EAEdzF,EAAA,CAAA,EAAAC,EAAAC,EAAA,IAAA,GAAA,qCAAA,CAAA,EAGcF,EAAA,CAAA,EAAAuB,EAAA,WAAAkE,CAAA,EAEdzF,EAAA,CAAA,EAAAC,EAAAC,EAAA,IAAA,GAAA,0CAAA,CAAA,6BAqCJN,EAAA,CAAA,EACEO,EAAA,EAAA,SAAA,EAAA,6CAGEH,EAAA,EAAAuB,EAAA,uBAAA6E,CAAA,EAA0C,qBAAAH,GAAA,EAAAC,GAAAG,CAAA,CAAA,sCAZlDzG,EAAA,CAAA,EACEC,EAAA,EAAA,MAAA,EAAA,EAAwC,EAAA,SAAA,EAAA,EAChBO,EAAA,QAAA,UAAA,CAAAC,EAAAiG,CAAA,EAAA,IAAAC,EAAA/F,EAAA,EAAAC,UAAA4F,EAAA7F,EAAA,EAAAa,MAAAL,EAAAR,EAAA,EAAA,OAAAE,EAASM,EAAAwF,YAAAD,EAAAE,GAAAF,EAAAG,WAAAL,CAAA,CAA4C,CAAA,CAAA,EACzExG,EAAA,EAAA,UAAA,EAAUC,EAAA,CAAA,EAAeC,EAAA,EACzBF,EAAA,EAAA,MAAA,EACEC,EAAA,CAAA,oCACFC,EAAA,EAAO,EAETkC,EAAA,EAAA0E,GAAA,EAAA,EAAA,eAAA,CAAA,EAQF5G,EAAA,yCAbcC,EAAA,CAAA,EAAAC,EAAAsG,EAAAK,IAAA,EAER5G,EAAA,CAAA,EAAA0F,EAAA,IAAAxF,EAAA,EAAA,EAAAA,EAAA,EAAA,EAAA,qCAAAqG,EAAAE,EAAA,CAAA,EAAA,GAAA,EAGWzG,EAAA,CAAA,EAAAuB,EAAA,OAAAgF,EAAAE,KAAA,UAAAzF,EAAA6F,cAAAC,OAAA,CAAA,0BAWnBlH,EAAA,CAAA,EACEO,EAAA,EAAA,aAAA,iCArBJP,EAAA,CAAA,EACEqC,EAAA,EAAA8E,GAAA,GAAA,EAAA,eAAA,CAAA,EAAoD,EAAAC,GAAA,EAAA,EAAA,eAAA,CAAA,uCAArChH,EAAA,EAAAuB,EAAA,OAAAgF,EAAAE,KAAA,iBAAA,EAmBAzG,EAAA,EAAAuB,EAAA,OAAAgF,EAAAU,cAAA,CAAAC,CAAA,4BApBjBjF,EAAA,EAAAkF,GAAA,EAAA,EAAA,eAAA,EAAA,iBAA+B5F,EAAA,UAAAP,EAAAoG,kBAAA,sCA8B7BxH,EAAA,CAAA,EACEC,EAAA,EAAA,SAAA,EAAA,EAAgDO,EAAA,QAAA,UAAA,CAAAC,EAAAgH,CAAA,EAAA,IAAArG,EAAAR,EAAA,CAAA,EAAA,OAAAE,EAASM,EAAAsG,yBAAA,CAA0B,CAAA,CAAA,EACjFxH,EAAA,CAAA,EACFC,EAAA,kCADEC,EAAA,CAAA,EAAA0F,EAAA,IAAA6B,EAAAC,KAAA,GAAA,sCAGJ5H,EAAA,CAAA,EACEC,EAAA,EAAA,SAAA,EAAA,EAAgDO,EAAA,QAAA,UAAA,CAAAC,EAAAoH,CAAA,EAAA,IAAAzG,EAAAR,EAAA,CAAA,EAAA,OAAAE,EAASM,EAAA0G,uBAAA,CAAwB,CAAA,CAAA,EAC/E5H,EAAA,CAAA,EACFC,EAAA,kCADEC,EAAA,CAAA,EAAA0F,EAAA,IAAA6B,EAAAC,KAAA,GAAA,6BARN5H,EAAA,EAAA,EAAA,EACEqC,EAAA,EAAA0F,GAAA,EAAA,EAAA,eAAA,EAAA,EAAqD,EAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,8BADIrG,EAAA,WAAAgG,EAAAd,EAAA,EAC1CzG,EAAA,EAAAuB,EAAA,eAAA,sBAAA,EAKAvB,EAAA,EAAAuB,EAAA,eAAA,uBAAA,4BANjBU,EAAA,EAAA4F,GAAA,EAAA,EAAA,eAAA,EAAA,iBAAiCtG,EAAA,UAAAP,EAAA8G,qBAAA,sCAkB/BlI,EAAA,CAAA,EACEC,EAAA,EAAA,SAAA,EAAA,EAAgDO,EAAA,QAAA,UAAA,CAAAC,EAAA0H,CAAA,EAAA,IAAAC,EAAAxH,EAAA,CAAA,EAAAa,MAAAL,EAAAR,EAAA,EAAA,OAAAE,EAASM,EAAAiH,kBAAkB,CAAA5G,MAAA2G,CAAA,CAAgB,CAAC,CAAA,CAAA,EAC1FlI,EAAA,CAAA,EACAD,EAAA,EAAA,MAAA,EAAA,EAAsCC,EAAA,CAAA,EAAmBC,EAAA,EAAM,kCAD/DC,EAAA,CAAA,EAAA0F,EAAA,IAAAwC,EAAAV,KAAA,GAAA,EACsCxH,EAAA,CAAA,EAAAC,EAAAiI,EAAAC,MAAA,sCAI1CvI,EAAA,CAAA,EACEC,EAAA,EAAA,SAAA,EAAA,EAAgDO,EAAA,QAAA,UAAA,CAAAC,EAAA+H,CAAA,EAAA,IAAAF,EAAA1H,EAAA,EAAAC,UAAAuH,EAAAxH,EAAA,EAAAa,MAAAL,EAAAR,EAAA,EAAA,OAAAE,EAASM,EAAAqH,UAAAH,EAAkB,GAAEF,CAAA,CAAQ,CAAA,CAAA,EACnFlI,EAAA,CAAA,EACAD,EAAA,EAAA,MAAA,EAAA,EAAsCC,EAAA,CAAA,EAAmBC,EAAA,EAAM,kCAD/DC,EAAA,CAAA,EAAA0F,EAAA,IAAAwC,EAAAV,KAAA,GAAA,EACsCxH,EAAA,CAAA,EAAAC,EAAAiI,EAAAC,MAAA,6BAX5CvI,EAAA,EAAA,EAAA,EACEqC,EAAA,EAAAqG,GAAA,EAAA,EAAA,eAAA,EAAA,EAA+C,EAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,8BADmBhH,EAAA,WAAA2G,EAAAzB,EAAA,EACnDzG,EAAA,EAAAuB,EAAA,eAAA,gBAAA,4BADjBU,EAAA,EAAAuG,GAAA,EAAA,EAAA,eAAA,EAAA,iBAAiCjH,EAAA,UAAAP,EAAA6F,aAAA,sCA8B7BhH,EAAA,EAAA,aAAA,EAAA,EAGEO,EAAA,QAAA,UAAA,CAAA,IAAAqI,EAAApI,EAAAqI,CAAA,EAAAjI,UAAAkI,EAAAnI,EAAA,EAAAC,UAAAO,EAAAR,EAAA,EAAA,OAAAE,EAASM,EAAAqH,UAAArH,EAAA4H,oBAAAH,EAAAI,MAAAF,EAAAtH,KAAA,CAAyD,CAAA,CAAA,EAElExB,EAAA,EAAA,MAAA,EACEC,EAAA,CAAA,EACFC,EAAA,EAAO,4BADLC,EAAA,CAAA,EAAA0F,EAAA,IAAA+C,EAAAjB,KAAA,GAAA,6BAjBV3H,EAAA,EAAA,KAAA,EAAA,EAAqBC,EAAA,EAAA,2BAAA,EAAyBC,EAAA,EAC9CF,EAAA,EAAA,oBAAA,EAAoB,EAAA,iBAAA,EAEhBM,EAAA,EAAA,QAAA,EAAA,EAOAN,EAAA,EAAA,mBAAA,GAAA,CAAA,EACEoC,EAAA,EAAA6G,GAAA,EAAA,EAAA,aAAA,EAAA,eASF/I,EAAA,EAAmB,EACH,yBAddC,EAAA,CAAA,EAAAuB,EAAA,cAAAP,EAAA+H,oBAAA,EAAoC,kBAAAC,CAAA,EAKdhJ,EAAA,CAAA,EAAAuB,EAAA,UAAArB,EAAA,EAAA,EAAAc,EAAAiI,oBAAA,CAAA,GDhXvB,IAAMC,GAAgC,IAAIC,GAC/C,2DAA2D,EAWvDP,GAAsC,CAC1CnC,GAAI,iBACJ0B,OAAQ,cACRX,KAAM,sBACN4B,MAAO,CACL9F,KAAM,SACN9B,QAAS,CACP6H,WAAY,8BACZC,KAAM,oCACNC,YAAa,QACbC,YAAa,UACbC,eAAgB,KAGpBC,mBAAoB,UAGhBC,GAA+C,CACnDlD,GAAI,2BACJ0B,OAAQ,oBACRX,KAAM,wBACN4B,MAAO,CACL9F,KAAM,SACN9B,QAAS,CACP6H,WAAY,iBACZC,KAAM,4BACNC,YAAa,QACbC,YAAa,UACbC,eAAgB,MAKhBG,GAA2C,CAC/CnD,GAAI,uBACJe,KAAM,OACN4B,MAAO,CACL9F,KAAM,YACN9B,QAAS,CAAA,IAIPqI,GAA4C,CAChDpD,GAAI,wBACJe,KAAM,QACN4B,MAAO,CACL9F,KAAM,QACN9B,QAAS,CAAA,IAIPqF,GAAkC,CAAC+B,GAAqBe,EAA4B,EAe7EG,IAAwB,IAAA,CAA/B,IAAOA,EAAP,MAAOA,CAAwB,CAInC,IAAaC,mBAAmBC,EAAiC,CAC/D,IAAMC,GAA8BD,GAAS,CAAA,GAAIE,IAAKC,GAAMC,GAAsBC,IAAIF,CAAC,CAAC,EAAEG,OAAQH,GAAM,CAAC,CAACA,CAAC,EAC3G,KAAK/C,mBAAqB,KAAKA,mBAAmBmD,OAAON,CAA0B,CACrF,CAgBAO,YACUC,EACAC,EACDC,EACmDC,EACWC,EAC7DC,EACAC,EACAC,EACAC,GACiDtJ,GAA8C,CAT/F,KAAA8I,aAAAA,EACA,KAAAC,eAAAA,EACD,KAAAC,OAAAA,EACmD,KAAAC,eAAAA,EACW,KAAAC,kBAAAA,EAC7D,KAAAC,eAAAA,EACA,KAAAC,EAAAA,EACA,KAAAC,iBAAAA,EACA,KAAAC,mBAAAA,GACiD,KAAAtJ,0BAAAA,GAhCrC,KAAAuJ,MAAQ,oBAUvB,KAAAtC,oBAAsBA,GACtB,KAAA/B,cAAkC,CAAA,EAClC,KAAAiB,sBAA0C,CAAC8B,GAA0BC,EAAyB,EAIrG,KAAAzC,mBAAqB+D,GACrB,KAAArF,oBAAsBA,GAEtB,KAAAiD,qBAAuB,IAAIqC,EAcxB,CAEHC,UAAQ,CAEF,KAAKT,gBACP,KAAKA,eAAeU,QAASC,GAC3B,KAAK1E,cAAc2E,KAAK3E,GAAc4E,KAAMzB,GAAUA,EAAMvD,KAAO8E,CAAQ,CAAC,CAAC,EAG7E,KAAKV,kBACP,KAAKa,UAAY,KAAKb,kBAAkBc,uBAAsB,GAE9D,KAAKD,UAAYE,GAAG,CAAA,CAAE,EACtB,KAAK/E,cAAgB,KAAKA,cAAcyD,OAAQuB,GAAMA,EAAErE,OAAS,gBAAgB,GAEnF,KAAKyB,qBAAuB,KAAKF,qBAAqB+C,aAAaC,KACjEC,GAAU,EAAE,EACZC,GAAWjC,GAAmBA,IAAU,GAAK,KAAKkC,QAAQlC,CAAK,EAAI,KAAK0B,SAAU,CAAC,CAEvF,CAEApK,yBAAyB6K,EAAgB9K,EAAa,CACpD,KAAK+K,OAAO/K,CAAK,EAAEuE,MAAQuG,CAC7B,CAEAE,gBAAc,CAGZC,OAAOC,WAAW,IAAK,CACrB,KAAK7B,eAAe8B,aAAY,CAClC,EAAG,CAAC,CACN,CAEA7G,UAAU8G,EAAeC,EAAc,KAAKtF,mBAAkB,CAC5D,IAAMuF,EAAQD,EAAYjB,KAAMmB,GAASA,EAAKnG,KAAOgG,CAAK,EAC1D,OAAOb,GAAGe,EAAMnF,IAAI,CACtB,CAEA9E,gBAAc,CACZ,KAAK+H,aAAaoC,QAAO,CAC3B,CAEA5L,gBAAgBN,EAAoBwL,EAAK,CACnCA,EAAMW,QACR,KAAKV,OAAOd,QAASlC,GAAS,CAC5BA,EAAMzI,UAAYA,CACpB,CAAC,CAEL,CAEAoM,UAAUZ,EAA4B,CACpCa,GAAgB,KAAKZ,OAAQD,EAAMc,cAAed,EAAMe,YAAY,EACpE,KAAKb,eAAc,EACnB,KAAK5B,aAAaoC,QAAO,CAC3B,CAEAlJ,UAAUtC,EAAO8L,EAAOC,EAAa,KAAKhB,OAAM,CAC9C,IAAMiB,EAAWhM,EAAQ8L,EAGrBE,EAAW,GAAKA,IAAaD,EAAWtG,SAE5CkG,GAAgB,KAAKZ,OAAQ/K,EAAOgM,CAAQ,EAC5C,KAAKhB,eAAc,EACnB,KAAK5B,aAAaoC,QAAO,EAC3B,CAEAzH,eAAe/D,EAAO+L,EAAa,KAAKhB,OAAM,CAC5CY,GAAgBI,EAAY/L,EAAO,CAAC,EACpC,KAAKgL,eAAc,EACnB,KAAK5B,aAAaoC,QAAO,CAC3B,CAEAxH,kBAAkBhE,EAAO+L,EAAa,KAAKhB,OAAM,CAC/CY,GAAgB,KAAKZ,OAAQ/K,EAAO+L,EAAWtG,MAAM,EACrD,KAAKuF,eAAc,EACnB,KAAK5B,aAAaoC,QAAO,CAC3B,CAEA1H,YAAY9D,EAAe+L,EAAa,KAAKhB,OAAM,CAC7C/K,EAAQ,IACV+L,EAAWE,OAAOjM,EAAO,CAAC,EAE5B,KAAKoJ,aAAaoC,QAAO,CAC3B,CAEA7H,eAAe3D,EAAe+L,EAAa,KAAKhB,OAAM,CACpD,GAAI/K,EAAQ,GAAI,CACd,IAAMkM,EAAmBC,GAASJ,EAAW/L,CAAK,CAAC,EACnD+L,EAAWE,OAAOjM,EAAO,EAAGkM,CAAgB,CAC9C,CACA,KAAK9C,aAAaoC,QAAO,CAC3B,CAEMrG,YACJiH,EACA/G,EACArF,EACwB,QAAAqM,GAAA,yBAHxBD,EACA/G,EACArF,EACA+L,EAAa,KAAKhB,OAAM,CAExB,IAAMuB,EAAiBH,GAASI,EAAoB,EAOpD,OAJAD,EAAerK,KAAOmK,EACtBE,EAAejH,WAAaA,EAGpB+G,EAAY,CAClB,IAAK,QAAS,CACZE,EAAenM,QAAUgM,GAASK,EAAe,EACjD,KACF,CACA,IAAK,YAAa,CAChBF,EAAenM,QAAUgM,GAASM,EAAkB,EACpD,KACF,CACA,IAAK,UAAW,CACdH,EAAenM,QAAUgM,GAASO,EAAiB,EACnD,KACF,CACA,IAAK,SAAU,CACbJ,EAAenM,QAAUgM,GAASQ,EAAgB,EAClD,KACF,CACA,IAAK,iBAAkB,CACrBL,EAAenM,QAAUgM,GAASS,EAAsB,EACxD,KACF,CACA,IAAK,eAAgB,CACnBN,EAAenM,QAAUgM,GAASU,EAAqB,EACvD,KACF,CACA,IAAK,eAAgB,CACnBP,EAAenM,QAAUgM,GAASW,EAAqB,EACvD,KACF,CACA,IAAK,UAAW,CACdR,EAAenM,QAAUgM,GAASY,EAAiB,EACnD,KACF,CACA,IAAK,SAAU,CACbT,EAAenM,QAAUgM,GAASa,EAAgB,EAClD,KACF,CACA,IAAK,OAAQ,CACXV,EAAenM,QAAUgM,GAASc,EAAc,EAChD,KACF,CACA,IAAK,kBAAmB,CACtB,MAAM,KAAKhH,yBAAwB,EACnC,KACF,CACA,KAAKxB,GAAoBC,qBAAsB,CAC7C4H,EAAenM,QAAUgM,GAASe,EAA4B,EAC9D,KACF,CACA,QAAS,CACPC,QAAQC,MAAM,+BAAiChB,CAAY,EAC3D,MACF,CACF,CAEIE,EAAerK,OAAS,oBACtBjC,EAAQ,GACV+L,EAAWE,OAAOjM,EAAO,EAAGsM,CAAc,EAE1CP,EAAW5B,KAAKmC,CAAc,GAIlC,KAAKlD,aAAaoC,QAAO,CAC3B,GAEAxE,UAAUqG,EAAwBC,EAA8B,GAAItN,EAAc,CAChF,IAAMsM,EAAiBH,GAASI,EAAoB,EAC9CgB,EAAapB,GAASkB,EAAOtF,MAAM5H,OAAO,EAQhD,GALAmM,EAAerK,KAAOoL,EAAOtF,MAAM9F,KACnCqK,EAAejH,WAAagI,EAAOtF,MAAM1C,WAEzCiH,EAAenM,QAAUoN,EAErBF,EAAOtF,MAAM9F,MAAQ,UACvB,GAAIqL,IAAgC,IAAMD,EAAOhF,mBAAoB,CACnE,IAAMlI,EAAUoN,EAChBpN,EAAQ6H,WAAa7H,EAAQ6H,WAAWwF,QAAQH,EAAOhF,mBAAoBiF,CAA2B,EACtGnN,EAAQ8H,KAAO9H,EAAQ8H,KAAKuF,QAAQH,EAAOhF,mBAAoBiF,CAA2B,EAC1FhB,EAAenM,QAAUA,CAC3B,UACSkN,EAAOtF,MAAM9F,MAAQ,SAC9B,GAAIqL,IAAgC,GAAI,CACtC,IAAMnN,EAAUoN,EAChBpN,EAAQsN,IAAMH,EACdnN,EAAQuN,WAAa,YACrBpB,EAAenM,QAAUA,CAC3B,UACSkN,EAAOtF,MAAM9F,MAAQ,aAC1BqL,IAAgC,GAAI,CACtC,IAAMnN,EAAUoN,EAChBpN,EAAQwN,QAAUL,EAClBhB,EAAenM,QAAUA,CAC3B,CAGEH,EAAQ,GACV,KAAK+K,OAAOkB,OAAOjM,EAAO,EAAGsM,CAAc,EAE3C,KAAKvB,OAAOZ,KAAKmC,CAAc,EAGjC,KAAKlD,aAAaoC,QAAO,CAC3B,CAEA5E,kBAAkBgH,EAAuB,CACvC,KAAKtE,OAAOuE,KAAK,KAAKC,YAAa,CAAEC,MAAO,QAASH,KAAMA,CAAI,CAAE,CACnE,CAEM3H,0BAAwB,QAAAoG,GAAA,sBAC5B,KAAK5C,eAAeuE,WAAW,qCAAsC,kBAAmB,QAAS,IAAI,EACrG,IAAMC,EAAY,KAAK3E,OAAOuE,KAAKK,GAAyB,CAC1DvE,iBAAkB,KAAKA,iBACvBoE,MAAO,QACPI,OAAQ,OACT,EACKC,EAAO,MAAMC,GAAeJ,EAAUK,YAAW,CAAE,EACrDF,GACF,KAAKpH,UAAUuB,GAA0B6F,CAAI,CAEjD,GAEM/H,wBAAsB,QAAAgG,GAAA,sBAC1B,MAAM,KAAKzC,mBAAmB2E,wBAAuB,EAAGC,KAAMC,GAAiB,CACzEA,GACFA,EACG/D,KACCgE,GAAK,CAAC,EACN7F,EAAK8F,GAAO,CACV,KAAK3H,UAAUwB,GAA2BmG,CAAG,CAC/C,CAAC,CAAC,EAEHC,UAAS,CAEhB,CAAC,CACH,GAEQ/D,QAAQgE,EAAmB,CACjC,GAAI,CAACA,EACH,OAAO,KAAKxE,UAGd,IAAMyE,EAAcD,EAAYE,YAAW,EAC3C,OAAO,KAAK1E,UAAUK,KACpBgE,GAAK,CAAC,EACN7F,EAAKmG,GAAaA,EAAS/F,OAAQgG,GAAWA,EAAO9I,KAAK4I,YAAW,EAAGG,SAASJ,CAAW,CAAC,CAAC,CAAC,CAEnG,yCAlSWrG,GAAwB0G,EAAAC,CAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EA2BzBtH,GAA6B,CAAA,EAAAsH,EAC7BI,GAAuC,CAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,EAAAN,EAAAO,EAAA,EAAAP,EAAAQ,EAAA,EAAAR,EAKvC,6BAA4B,CAAA,CAAA,CAAA,sBAjC3B1G,EAAwBmH,UAAA,CAAA,CAAA,mBAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,qGAAxBE,EAAAD,EAAAlG,KAAA,iFATA,CACT,CACEoG,QAAS,6BACTC,WAAaC,GACXA,EAAmBC,UAAU,kCAAkC,EACjEC,KAAM,CAACC,EAAyB,EACjC,CACF,CAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,kBAAA,SAAA,EAAA,CAAA,qBAAA,SAAA,EAAA,CAAA,oBAAA,SAAA,EAAA,CAAA,cAAA,EAAA,EAAA,CAAA,OAAA,SAAA,EAAA,CAAA,iBAAA,SAAA,EAAA,CAAA,uBAAA,EAAA,EAAA,CAAA,OAAA,iBAAA,EAAA,CAAA,cAAA,GAAA,EAAA,aAAA,EAAA,qBAAA,2BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,6BAAA,EAAA,CAAA,qBAAA,GAAA,QAAA,UAAA,EAAA,mBAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,UAAA,gBAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,UAAA,EAAA,EAAA,CAAA,QAAA,qBAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,kBAAA,GAAA,EAAA,sBAAA,sBAAA,EAAA,QAAA,aAAA,UAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,QAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,kBAAA,GAAA,EAAA,sBAAA,oBAAA,wBAAA,EAAA,mBAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,CAAA,SAAA,OAAA,EAAA,mBAAA,EAAA,CAAA,kBAAA,GAAA,EAAA,sBAAA,oBAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,oBAAA,oBAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,mBAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,QAAA,UAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,kBAAA,GAAA,EAAA,sBAAA,wBAAA,EAAA,QAAA,YAAA,EAAA,CAAA,kBAAA,GAAA,EAAA,sBAAA,EAAA,QAAA,YAAA,EAAA,CAAA,EAAA,eAAA,SAAA,EAAA,CAAA,EAAA,eAAA,2BAAA,SAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,kBAAA,gBAAA,EAAA,iBAAA,UAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,aAAA,IAAA,EAAA,CAAA,WAAA,GAAA,OAAA,SAAA,OAAA,kBAAA,eAAA,MAAA,YAAA,UAAA,UAAA,SAAA,yCAAA,GAAA,EAAA,SAAA,QAAA,gBAAA,cAAA,SAAA,EAAA,CAAA,EAAA,4BAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,6BAAA,EAAA,uBAAA,oBAAA,EAAA,CAAA,EAAA,WAAA,EAAA,QAAA,SAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,gBAAA,GAAA,gBAAA,GAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,CAAA,EAAA,0BAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,OAAA,OAAA,cAAA,iBAAA,WAAA,GAAA,EAAA,cAAA,iBAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,CAAA,mBAAA,GAAA,EAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,mBAAA,GAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAZ,EAAAC,EAAA,CAAA,GAAAD,EAAA,EAAA,WClIHtR,EAAA,EAAA,MAAA,CAAA,EAAoEO,EAAA,qBAAA,SAAAU,EAAA,CAAA8B,OAAAvC,EAAA2R,CAAA,EAAAtR,EAAsB0Q,EAAArE,UAAAjM,CAAA,CAAiB,CAAA,CAAA,EACzGmB,EAAA,EAAAgQ,GAAA,EAAA,EAAA,eAAA,CAAA,EAA0C,EAAAC,GAAA,IAAA,GAAA,eAAA,EAAA,EAiU1CrS,EAAA,EAAA,MAAA,EAAA,EAAyC,EAAA,SAAA,EAAA,EAC0C,EAAA,UAAA,EACrEC,EAAA,EAAA,KAAA,EAAGC,EAAA,EACbD,EAAA,CAAA,mBACFC,EAAA,EAEAF,EAAA,EAAA,mBAAA,EAAmB,GAAA,SAAA,EAAA,EACUO,EAAA,QAAA,UAAA,CAAAwC,OAAAvC,EAAA2R,CAAA,EAAAtR,EAAS0Q,EAAA9J,yBAAA,CAA0B,CAAA,CAAA,EAC5DnH,EAAA,GAAA,WAAA,EAAA,EACAL,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,SAAA,EAAA,EAA0F,GAAA,UAAA,EAC9EC,EAAA,GAAA,iBAAA,EAAeC,EAAA,EAAW,EAC7B,EACS,EAGtBI,EAAA,GAAA,MAAA,EAAA,EACFJ,EAAA,EAGAF,EAAA,GAAA,WAAA,KAAA,CAAA,EACEoC,EAAA,GAAAkQ,GAAA,EAAA,EAAA,cAAA,EAAA,EA0BFpS,EAAA,EAEAF,EAAA,GAAA,WAAA,KAAA,CAAA,EACEoC,EAAA,GAAAmQ,GAAA,EAAA,EAAA,cAAA,EAAA,EAcFrS,EAAA,EAEAF,EAAA,GAAA,WAAA,KAAA,CAAA,EACEoC,EAAA,GAAAoQ,GAAA,EAAA,EAAA,cAAA,EAAA,EAiBFtS,EAAA,EAEAkC,EAAA,GAAAqQ,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,8BAzZoChR,EAAA,4BAAA,CAAA,EACnBvB,EAAA,EAAAuB,EAAA,OAAA6P,EAAAhF,OAAAtF,SAAA,CAAA,EASiB9G,EAAA,EAAAuB,EAAA,UAAA6P,EAAAhF,MAAA,EAyTapM,EAAA,CAAA,EAAAuB,EAAA,oBAAAyE,CAAA,EAEzChG,EAAA,CAAA,EAAA0F,EAAA,IAAAxF,EAAA,EAAA,EAAA,mCAAA,EAAA,GAAA,EAMEF,EAAA,CAAA,EAAA0F,EAAA,IAAAxF,EAAA,GAAA,EAAA,mDAAA,EAAA,GAAA,EAE+CF,EAAA,CAAA,EAAAuB,EAAA,oBAAAiR,CAAA;yHDzMjD,IAAO1I,EAAP2I,SAAO3I,CAAwB,GAAA,EEnHrC,IAAa4I,IAA6B,IAAA,CAApC,IAAOA,EAAP,MAAOA,CAA6B,CACxCC,YAA6BC,EAAgD,CAAhD,KAAAA,IAAAA,CAAmD,CAEhFC,MAAMC,EAAiB,CAAA,EAAE,CACvB,KAAKF,IAAIC,MAAMC,CAAM,CACvB,yCALWJ,GAA6BK,EAAAC,EAAA,CAAA,CAAA,sBAA7BN,EAA6BO,UAAA,CAAA,CAAA,8BAAA,CAAA,EAAAC,WAAA,GAAAC,SAAA,CAAAC,EAAA,EAAAC,MAAA,GAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,EAAA,CAAA,qBAAA,GAAA,QAAA,KAAA,EAAA,CAAA,aAAA,GAAA,QAAA,UAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,GAAA,QAAA,OAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICjB1CE,EAAA,EAAA,KAAA,CAAA,EAAqBC,EAAA,EAAA,iBAAA,EAAeC,EAAA,EAEpCF,EAAA,EAAA,MAAA,CAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,EAEAF,EAAA,EAAA,MAAA,CAAA,EAAoC,EAAA,SAAA,CAAA,EACCG,EAAA,QAAA,UAAA,CAAA,OAASJ,EAAAb,MAAA,CAAO,CAAA,EAAEe,EAAA,EAAA,QAAA,EAAMC,EAAA,EAC3DF,EAAA,EAAA,SAAA,CAAA,EAAuCG,EAAA,QAAA,UAAA,CAAA,OAASJ,EAAAb,MAAM,CAAAkB,uBAA0B,EAAI,CAAE,CAAC,CAAA,EAAEH,EAAA,EAAA,mBAAA,EAAiBC,EAAA,EAAS,SALnHG,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,yBAAA,EAAA;CAAA,kBDYUC,GAAcC,GAAeC,EAAEC,GAAeC,GAAAC,GAAAC,GAAEC,GAAeC,EAAA,EAAAC,OAAA,CAAA;0HAAA,CAAA,CAAA,EAErE,IAAOlC,EAAPmC,SAAOnC,CAA6B,GAAA,EER1C,IAAaoC,IAAsB,IAAA,CAA7B,IAAOA,EAAP,MAAOA,CAAsB,CAIjCC,YACmBC,EACAC,EAAiB,CADjB,KAAAD,iBAAAA,EACA,KAAAC,OAAAA,EALZ,KAAAC,gBAAkB,GACzB,KAAAC,0BAAgD,IAAIC,EAMlDC,OAAOC,iBAAiB,eAAiBC,GAAS,CAC5C,KAAKL,kBAAoB,KAC3BK,EAAMC,YAAc,KAAKR,iBAAiBS,QAAQ,yBAAyB,EAE/E,CAAC,CACH,CAEAC,eAAa,CACX,OAAI,KAAKR,kBAAoB,IAC3B,KAAKC,0BAA0BQ,KAAI,EAE9B,KAAKT,eACd,CAEAU,aAAW,CACTP,OAAOQ,oBAAoB,eAAiBN,GAAS,CAC9C,KAAKL,kBACRK,EAAMC,YAAc,KAAKR,iBAAiBS,QAAQ,yBAAyB,EAE/E,CAAC,CACH,CAEAK,eAAa,CACX,KAAKZ,gBAAkB,EACzB,CAEAa,aAAW,CACT,KAAKb,gBAAkB,EACzB,CAEAc,0BAAwB,CACtB,OAAO,KAAKf,OAAOgB,KAAKC,EAA6B,CACvD,yCAxCWpB,GAAsBqB,EAAAC,EAAA,EAAAD,EAAAE,EAAA,CAAA,CAAA,wBAAtBvB,EAAsBwB,QAAtBxB,EAAsByB,UAAAC,WAFrB,MAAM,CAAA,EAEd,IAAO1B,EAAP2B,SAAO3B,CAAsB,GAAA,ECFnC,IAAM4B,GAAiC,yEACjCC,GAAiC,yEA2B1BC,IAAuB,IAAA,CAA9B,IAAOA,EAAP,MAAOA,CAAuB,CAKlCC,YACmBC,EACAC,EACAC,EAA8B,CAF9B,KAAAF,WAAAA,EACA,KAAAC,UAAAA,EACA,KAAAC,WAAAA,EALX,KAAAC,OAAiBC,OAOvB,KAAKC,4BACHH,EAAWI,eAAc,IAAOC,GAAYC,KACxCX,GACAD,EACR,CAEAa,0BAA0BC,EAAiC,CACzD,KAAKC,uBAAyBD,CAChC,CAEAE,UAAUT,EAAc,CACtB,KAAKA,OAASA,CAChB,CAEAU,kBAAkBC,EAA8B,CAC9C,IAAMC,EAAU,IAAIC,GAAY,CAC9B,aAAc,uCACdC,OAAQ,YACT,EAED,OAAO,KAAKjB,WAAWkB,KAAK,KAAKb,4BAA6BS,EAAc,CAC1EC,QAAAA,EACAI,aAAc,OACf,CACH,CAEAC,oBAAoBN,EAAgCO,EAAuB,CAEzE,OADU,KAAKV,wBAA0B,CAAEW,wBAAyB,EAAI,GAClEA,wBACG,KAAKC,wBAAwBF,CAAe,EAE9C,KAAKG,gBAAgBV,EAAcO,CAAe,CAC3D,CAEAG,gBAAgBC,EAA2BC,EAAoB,CAC7D,IAAMC,EAAa,CACjBC,iBAAkB,KAAKjB,wBAAwBkB,UAAUC,eACzDC,UAAW,KAAKpB,wBAAwBqB,SACxCC,WAAY,KAAKtB,wBAAwBuB,UACzCC,QAAS,KAAKxB,wBAAwByB,OACtCC,WAAY,KAAK1B,wBAAwB2B,WAE3C,OAAO,KAAKrC,UAAUsC,OACpBb,EACAC,EACAa,GAAaC,qBACb,CACEX,eAAgB,mBAChBY,UAAW,aACXC,SAAU,YACVC,OAAQ,UACRC,UAAW,cAEb,KAAK1C,QAAUC,OACfA,OACAA,OACA,KAAKO,wBAAwBmC,aAAe,EAAI,CAEpD,CAEAC,eAAetB,EAA2BuB,EAAuB,CAC/D,IAAMrB,EAAa,CACjBC,iBAAkB,KAAKjB,wBAAwBkB,UAAUC,eACzDC,UAAW,KAAKpB,wBAAwBqB,SACxCC,WAAY,KAAKtB,wBAAwBuB,UACzCC,QAAS,KAAKxB,wBAAwByB,OACtCC,WAAY,KAAK1B,wBAAwB2B,WAE3C,OAAO,KAAKrC,UAAUsC,OACpBS,EACArB,EACAa,GAAaS,0BACb,CACEnB,eAAgB,mBAChBY,UAAW,aACXC,SAAU,YACVC,OAAQ,UACRC,UAAW,cAEb,KAAK1C,QAAUC,OACfA,OACAA,OACA,KAAKO,wBAAwBmC,aAAe,EAAI,CAEpD,CAEAvB,wBAAwBE,EAAe,CACrC,OAAOyB,GAAGzB,EAAQ0B,QAAQ,oBAAqB,6CAA6C,CAAC,CAC/F,yCAlGWrD,GAAuBsD,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,CAAA,CAAA,wBAAvBzD,EAAuB0D,QAAvB1D,EAAuB2D,UAAAC,WAFtB,KAAK,CAAA,EAEb,IAAO5D,EAAP6D,SAAO7D,CAAuB,GAAA,ECjC7B,IAAM8D,GAAwB,CACnCC,SAAU,KACVC,eAAgB,KAChBC,MAAO,KACPC,MAAO,KACPC,WAAY,KACZC,cAAe,KACfC,UAAW,KACXC,KAAM,KACNC,iBAAkB,MAGPC,GAAsB,CACjCC,UAAW,UACXC,WAAY,UACZC,cAAe,UACfC,UAAW,UACXC,gBAAiB,UACjBC,eAAgB,UAChBC,eAAgB,UAChBV,UAAW,iHElBPW,EAAA,EAAA,WAAA,EAAA,EAAyEC,EAAA,EAAA,OAAA,EAAKC,EAAA,0BAgBxEF,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,uCAAA,EAAA,GAAA,0BAiBFL,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,uCAAA,EAAA,GAAA,0BAiBFL,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,uCAAA,EAAA,GAAA,0BAiBFL,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,uCAAA,EAAA,GAAA,0BAiBFL,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,uCAAA,EAAA,GAAA,0BAiBFL,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,uCAAA,EAAA,GAAA,0BAiBFL,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,uCAAA,EAAA,GAAA,sCAjIdC,EAAA,CAAA,EACEN,EAAA,EAAA,sBAAA,EAAA,EAA+D,EAAA,6BAAA,EAAA,EACP,EAAA,iBAAA,EACnCC,EAAA,CAAA,mBAAiEC,EAAA,EAClFK,EAAA,EAAAC,GAAA,EAAA,EAAA,WAAA,EAAA,EACFN,EAAA,EACAF,EAAA,EAAA,MAAA,EAAA,EAAqB,EAAA,OAAA,KAAA,CAAA,EACO,GAAA,MAAA,EAAA,EACM,GAAA,kBAAA,EAAA,EACa,GAAA,YAAA,EAC3BC,EAAA,EAAA,oBAA+DC,EAAA,EAC3EF,EAAA,GAAA,QAAA,EAAA,EAA6BS,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAAC,OAAAC,EAAAH,EAAAI,WAAAC,OAAAC,UAAAT,CAAA,IAAAG,EAAAI,WAAAC,OAAAC,UAAAT,GAAAU,EAAAV,CAAA,CAAA,CAAA,EAA7BR,EAAA,EACAF,EAAA,GAAA,QAAA,GAAA,CAAA,EAGES,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAAC,OAAAC,EAAAH,EAAAI,WAAAC,OAAAC,UAAAT,CAAA,IAAAG,EAAAI,WAAAC,OAAAC,UAAAT,GAAAU,EAAAV,CAAA,CAAA,CAAA,EAHFR,EAAA,EAQAK,EAAA,GAAAc,GAAA,EAAA,EAAA,aAAA,EAAA,EAGFnB,EAAA,EAEAoB,EAAA,GAAA,aAAA,EAEAtB,EAAA,GAAA,kBAAA,EAAA,EAAyC,GAAA,YAAA,EAC3BC,EAAA,EAAA,oBAAgEC,EAAA,EAC5EF,EAAA,GAAA,QAAA,EAAA,EAA6BS,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAAC,OAAAC,EAAAH,EAAAI,WAAAC,OAAAK,WAAAb,CAAA,IAAAG,EAAAI,WAAAC,OAAAK,WAAAb,GAAAU,EAAAV,CAAA,CAAA,CAAA,EAA7BR,EAAA,EACAF,EAAA,GAAA,QAAA,GAAA,CAAA,EAGES,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAAC,OAAAC,EAAAH,EAAAI,WAAAC,OAAAK,WAAAb,CAAA,IAAAG,EAAAI,WAAAC,OAAAK,WAAAb,GAAAU,EAAAV,CAAA,CAAA,CAAA,EAHFR,EAAA,EAQAK,EAAA,GAAAiB,GAAA,EAAA,EAAA,aAAA,EAAA,EAGFtB,EAAA,EAEAoB,EAAA,GAAA,aAAA,EAEAtB,EAAA,GAAA,kBAAA,EAAA,EAAyC,GAAA,YAAA,EAC3BC,EAAA,EAAA,oBAAmEC,EAAA,EAC/EF,EAAA,GAAA,QAAA,EAAA,EAA6BS,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAAC,OAAAC,EAAAH,EAAAI,WAAAC,OAAAO,cAAAf,CAAA,IAAAG,EAAAI,WAAAC,OAAAO,cAAAf,GAAAU,EAAAV,CAAA,CAAA,CAAA,EAA7BR,EAAA,EACAF,EAAA,GAAA,QAAA,GAAA,CAAA,EAGES,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAAC,OAAAC,EAAAH,EAAAI,WAAAC,OAAAO,cAAAf,CAAA,IAAAG,EAAAI,WAAAC,OAAAO,cAAAf,GAAAU,EAAAV,CAAA,CAAA,CAAA,EAHFR,EAAA,EAQAK,EAAA,GAAAmB,GAAA,EAAA,EAAA,aAAA,EAAA,EAGFxB,EAAA,EAEAoB,EAAA,GAAA,aAAA,EAEAtB,EAAA,GAAA,kBAAA,EAAA,EAAyC,GAAA,YAAA,EAC3BC,EAAA,EAAA,oBAAgEC,EAAA,EAC5EF,EAAA,GAAA,QAAA,EAAA,EAA6BS,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAAC,OAAAC,EAAAH,EAAAI,WAAAC,OAAAS,UAAAjB,CAAA,IAAAG,EAAAI,WAAAC,OAAAS,UAAAjB,GAAAU,EAAAV,CAAA,CAAA,CAAA,EAA7BR,EAAA,EACAF,EAAA,GAAA,QAAA,GAAA,CAAA,EAGES,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAAC,OAAAC,EAAAH,EAAAI,WAAAC,OAAAS,UAAAjB,CAAA,IAAAG,EAAAI,WAAAC,OAAAS,UAAAjB,GAAAU,EAAAV,CAAA,CAAA,CAAA,EAHFR,EAAA,EAQAK,EAAA,GAAAqB,GAAA,EAAA,EAAA,aAAA,EAAA,EAGF1B,EAAA,EAEAoB,EAAA,GAAA,aAAA,EAEAtB,EAAA,GAAA,kBAAA,EAAA,EAAyC,GAAA,YAAA,EAC3BC,EAAA,EAAA,oBAAsEC,EAAA,EAClFF,EAAA,GAAA,QAAA,EAAA,EAA6BS,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAAC,OAAAC,EAAAH,EAAAI,WAAAC,OAAAW,gBAAAnB,CAAA,IAAAG,EAAAI,WAAAC,OAAAW,gBAAAnB,GAAAU,EAAAV,CAAA,CAAA,CAAA,EAA7BR,EAAA,EACAF,EAAA,GAAA,QAAA,GAAA,CAAA,EAGES,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAAC,OAAAC,EAAAH,EAAAI,WAAAC,OAAAW,gBAAAnB,CAAA,IAAAG,EAAAI,WAAAC,OAAAW,gBAAAnB,GAAAU,EAAAV,CAAA,CAAA,CAAA,EAHFR,EAAA,EAQAK,EAAA,GAAAuB,GAAA,EAAA,EAAA,aAAA,EAAA,EAGF5B,EAAA,EAEAoB,EAAA,GAAA,aAAA,EAEAtB,EAAA,GAAA,kBAAA,EAAA,EAAyC,GAAA,YAAA,EAC3BC,EAAA,EAAA,oBAA6EC,EAAA,EACzFF,EAAA,GAAA,QAAA,EAAA,EAA6BS,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAAC,OAAAC,EAAAH,EAAAI,WAAAC,OAAAa,eAAArB,CAAA,IAAAG,EAAAI,WAAAC,OAAAa,eAAArB,GAAAU,EAAAV,CAAA,CAAA,CAAA,EAA7BR,EAAA,EACAF,EAAA,GAAA,QAAA,GAAA,CAAA,EAGES,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAAC,OAAAC,EAAAH,EAAAI,WAAAC,OAAAa,eAAArB,CAAA,IAAAG,EAAAI,WAAAC,OAAAa,eAAArB,GAAAU,EAAAV,CAAA,CAAA,CAAA,EAHFR,EAAA,EAQAK,EAAA,GAAAyB,GAAA,EAAA,EAAA,aAAA,EAAA,EAGF9B,EAAA,EAEAoB,EAAA,GAAA,aAAA,EAEAtB,EAAA,GAAA,kBAAA,EAAA,EAAyC,GAAA,YAAA,EAC3BC,EAAA,EAAA,oBAA0EC,EAAA,EACtFF,EAAA,GAAA,QAAA,EAAA,EAA6BS,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAAC,OAAAC,EAAAH,EAAAI,WAAAC,OAAAe,eAAAvB,CAAA,IAAAG,EAAAI,WAAAC,OAAAe,eAAAvB,GAAAU,EAAAV,CAAA,CAAA,CAAA,EAA7BR,EAAA,EACAF,EAAA,GAAA,QAAA,GAAA,CAAA,EAGES,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAAC,OAAAC,EAAAH,EAAAI,WAAAC,OAAAe,eAAAvB,CAAA,IAAAG,EAAAI,WAAAC,OAAAe,eAAAvB,GAAAU,EAAAV,CAAA,CAAA,CAAA,EAHFR,EAAA,EAQAK,EAAA,GAAA2B,GAAA,EAAA,EAAA,aAAA,EAAA,EAGFhC,EAAA,EAAkB,EACd,EACD,EACH,gFArIaC,EAAA,EAAAgC,EAAA,WAAA,CAAAtB,EAAAI,WAAAC,OAAAkB,SAAA,EACSjC,EAAA,EAAAgC,EAAA,iBAAA,MAAA,EACThC,EAAA,CAAA,EAAAkC,EAAAhC,EAAA,EAAA,GAAA,+CAAA,CAAA,EACNF,EAAA,CAAA,EAAAgC,EAAA,OAAAtB,EAAAI,WAAAC,OAAAoB,UAAA,EAAA,EAMOnC,EAAA,CAAA,EAAAkC,EAAAhC,EAAA,GAAA,GAAA,6CAAA,CAAA,EACiBF,EAAA,CAAA,EAAAoC,EAAA,UAAA1B,EAAAI,WAAAC,OAAAC,SAAA,EAI3BhB,EAAA,EAAAoC,EAAA,UAAA1B,EAAAI,WAAAC,OAAAC,SAAA,EAEAgB,EAAA,UAAAtB,EAAA2B,UAAA,EAGWrC,EAAA,CAAA,EAAAgC,EAAA,OAAAM,EAAAC,SAAA,SAAA,GAAAD,EAAAE,OAAA,EAQDxC,EAAA,CAAA,EAAAkC,EAAAhC,EAAA,GAAA,GAAA,8CAAA,CAAA,EACiBF,EAAA,CAAA,EAAAoC,EAAA,UAAA1B,EAAAI,WAAAC,OAAAK,UAAA,EAI3BpB,EAAA,EAAAoC,EAAA,UAAA1B,EAAAI,WAAAC,OAAAK,UAAA,EAEAY,EAAA,UAAAtB,EAAA2B,UAAA,EAGWrC,EAAA,CAAA,EAAAgC,EAAA,OAAAS,EAAAF,SAAA,SAAA,GAAAE,EAAAD,OAAA,EAQDxC,EAAA,CAAA,EAAAkC,EAAAhC,EAAA,GAAA,GAAA,iDAAA,CAAA,EACiBF,EAAA,CAAA,EAAAoC,EAAA,UAAA1B,EAAAI,WAAAC,OAAAO,aAAA,EAI3BtB,EAAA,EAAAoC,EAAA,UAAA1B,EAAAI,WAAAC,OAAAO,aAAA,EAEAU,EAAA,UAAAtB,EAAA2B,UAAA,EAGWrC,EAAA,CAAA,EAAAgC,EAAA,OAAAU,EAAAH,SAAA,SAAA,GAAAG,EAAAF,OAAA,EAQDxC,EAAA,CAAA,EAAAkC,EAAAhC,EAAA,GAAA,GAAA,8CAAA,CAAA,EACiBF,EAAA,CAAA,EAAAoC,EAAA,UAAA1B,EAAAI,WAAAC,OAAAS,SAAA,EAI3BxB,EAAA,EAAAoC,EAAA,UAAA1B,EAAAI,WAAAC,OAAAS,SAAA,EAEAQ,EAAA,UAAAtB,EAAA2B,UAAA,EAGWrC,EAAA,CAAA,EAAAgC,EAAA,OAAAW,EAAAJ,SAAA,SAAA,GAAAI,EAAAH,OAAA,EAQDxC,EAAA,CAAA,EAAAkC,EAAAhC,EAAA,GAAA,GAAA,oDAAA,CAAA,EACiBF,EAAA,CAAA,EAAAoC,EAAA,UAAA1B,EAAAI,WAAAC,OAAAW,eAAA,EAI3B1B,EAAA,EAAAoC,EAAA,UAAA1B,EAAAI,WAAAC,OAAAW,eAAA,EAEAM,EAAA,UAAAtB,EAAA2B,UAAA,EAGWrC,EAAA,CAAA,EAAAgC,EAAA,OAAAY,EAAAL,SAAA,SAAA,GAAAK,EAAAJ,OAAA,EAQDxC,EAAA,CAAA,EAAAkC,EAAAhC,EAAA,GAAA,GAAA,2DAAA,CAAA,EACiBF,EAAA,CAAA,EAAAoC,EAAA,UAAA1B,EAAAI,WAAAC,OAAAa,cAAA,EAI3B5B,EAAA,EAAAoC,EAAA,UAAA1B,EAAAI,WAAAC,OAAAa,cAAA,EAEAI,EAAA,UAAAtB,EAAA2B,UAAA,EAGWrC,EAAA,CAAA,EAAAgC,EAAA,OAAAa,EAAAN,SAAA,SAAA,GAAAM,EAAAL,OAAA,EAQDxC,EAAA,CAAA,EAAAkC,EAAAhC,EAAA,GAAA,GAAA,wDAAA,CAAA,EACiBF,EAAA,CAAA,EAAAoC,EAAA,UAAA1B,EAAAI,WAAAC,OAAAe,cAAA,EAI3B9B,EAAA,EAAAoC,EAAA,UAAA1B,EAAAI,WAAAC,OAAAe,cAAA,EAEAE,EAAA,UAAAtB,EAAA2B,UAAA,EAGWrC,EAAA,CAAA,EAAAgC,EAAA,OAAAc,EAAAP,SAAA,SAAA,GAAAO,EAAAN,OAAA,sCAUzBrC,EAAA,CAAA,EACEN,EAAA,EAAA,sBAAA,EAAA,EAAkE,EAAA,6BAAA,EAAA,EACV,EAAA,iBAAA,EAElDC,EAAA,CAAA,mBACFC,EAAA,EAAkB,EAEpBF,EAAA,EAAA,MAAA,EAAA,EAAqB,EAAA,OAAA,KAAA,CAAA,EACkB,EAAA,kBAAA,EAAA,EACF,GAAA,YAAA,EAE7BC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,WAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,QAAA,EAAA,oBAKES,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAAuC,CAAA,EAAA,IAAArC,EAAAC,EAAA,EAAAC,OAAAC,EAAAH,EAAAI,WAAAkC,UAAAC,WAAA1C,CAAA,IAAAG,EAAAI,WAAAkC,UAAAC,WAAA1C,GAAAU,EAAAV,CAAA,CAAA,CAAA,EALFR,EAAA,EAME,EAEJF,EAAA,GAAA,MAAA,EAAA,EAA6B,GAAA,kBAAA,EAAA,EACqC,GAAA,YAAA,EAE5DC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,WAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,QAAA,EAAA,oBAKES,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAAuC,CAAA,EAAA,IAAArC,EAAAC,EAAA,EAAAC,OAAAC,EAAAH,EAAAI,WAAAkC,UAAAE,WAAA3C,CAAA,IAAAG,EAAAI,WAAAkC,UAAAE,WAAA3C,GAAAU,EAAAV,CAAA,CAAA,CAAA,EALFR,EAAA,EAME,EAEJF,EAAA,GAAA,kBAAA,EAAA,EAAgE,GAAA,YAAA,EAE5DC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,WAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,QAAA,EAAA,oBAKES,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAAuC,CAAA,EAAA,IAAArC,EAAAC,EAAA,EAAAC,OAAAC,EAAAH,EAAAI,WAAAkC,UAAAG,WAAA5C,CAAA,IAAAG,EAAAI,WAAAkC,UAAAG,WAAA5C,GAAAU,EAAAV,CAAA,CAAA,CAAA,EALFR,EAAA,EAME,EACc,EAGpBF,EAAA,GAAA,MAAA,EAAA,EAA6B,GAAA,kBAAA,EAAA,EACqC,GAAA,YAAA,EAE5DC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,WAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,QAAA,EAAA,oBAKES,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAAuC,CAAA,EAAA,IAAArC,EAAAC,EAAA,EAAAC,OAAAC,EAAAH,EAAAI,WAAAkC,UAAAI,uBAAA7C,CAAA,IAAAG,EAAAI,WAAAkC,UAAAI,uBAAA7C,GAAAU,EAAAV,CAAA,CAAA,CAAA,EALFR,EAAA,EAME,EAGJF,EAAA,GAAA,kBAAA,EAAA,EAAgE,GAAA,YAAA,EAE5DC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,WAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,QAAA,EAAA,oBAKES,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAAuC,CAAA,EAAA,IAAArC,EAAAC,EAAA,EAAAC,OAAAC,EAAAH,EAAAI,WAAAkC,UAAAK,qBAAA9C,CAAA,IAAAG,EAAAI,WAAAkC,UAAAK,qBAAA9C,GAAAU,EAAAV,CAAA,CAAA,CAAA,EALFR,EAAA,EAME,EACc,EACd,EACD,EACH,wBA1FaC,EAAA,EAAAgC,EAAA,WAAA,CAAAtB,EAAAI,WAAAkC,UAAAf,SAAA,EACSjC,EAAA,EAAAgC,EAAA,iBAAA,MAAA,EAExBhC,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,GAAA,mEAAA,EAAA,GAAA,EAOIF,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,qEAAA,EAAA,GAAA,EAGAF,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,wEAAA,EAAA,GAAA,EAKAF,EAAA,CAAA,EAAAsD,EAAA,cAAApD,EAAA,GAAA,GAAA,sBAAA,CAAA,EAEAkC,EAAA,UAAA1B,EAAAI,WAAAkC,UAAAC,UAAA,EAMEjD,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,qEAAA,EAAA,GAAA,EAGAF,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,wEAAA,EAAA,GAAA,EAKAF,EAAA,CAAA,EAAAsD,EAAA,cAAApD,EAAA,GAAA,GAAA,sBAAA,CAAA,EAEAkC,EAAA,UAAA1B,EAAAI,WAAAkC,UAAAE,UAAA,EAKAlD,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,qEAAA,EAAA,GAAA,EAGAF,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,wEAAA,EAAA,GAAA,EAKAF,EAAA,CAAA,EAAAsD,EAAA,cAAApD,EAAA,GAAA,GAAA,sBAAA,CAAA,EAEAkC,EAAA,UAAA1B,EAAAI,WAAAkC,UAAAG,UAAA,EAQAnD,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,kFAAA,EAAA,GAAA,EAGAF,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,qFAAA,EAAA,GAAA,EAKAF,EAAA,CAAA,EAAAsD,EAAA,cAAApD,EAAA,GAAA,GAAA,sBAAA,CAAA,EAEAkC,EAAA,UAAA1B,EAAAI,WAAAkC,UAAAI,sBAAA,EAMApD,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,gFAAA,EAAA,GAAA,EAGAF,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,mFAAA,EAAA,GAAA,EAKAF,EAAA,CAAA,EAAAsD,EAAA,cAAApD,EAAA,GAAA,GAAA,sBAAA,CAAA,EAEAkC,EAAA,UAAA1B,EAAAI,WAAAkC,UAAAK,oBAAA,0BAaRxD,EAAA,EAAA,WAAA,EAAA,EAA0EC,EAAA,EAAA,OAAA,EAAKC,EAAA,sCAoB3EI,EAAA,CAAA,EACEN,EAAA,EAAA,iBAAA,EAAiB,EAAA,YAAA,EACHC,EAAA,CAAA,mBAAwEC,EAAA,EAEpFF,EAAA,EAAA,MAAA,EAAA,EAA6B,EAAA,MAAA,EAAA,EAC8B,EAAA,yBAAA,EAAA,EAKrD0D,EAAA,SAAA,UAAA,CAAA/C,EAAAgD,CAAA,EAAA,IAAA9C,EAAAC,EAAA,CAAA,EAAAD,OAAAA,EAAAI,WAAA2C,QAAAC,eAA8C,KAAIzC,EAAEP,EAAAiD,aAAAC,QAAA,CAA2B,CAAA,CAAA,EAChF7D,EAAA,EAAyB,EAE5BF,EAAA,EAAA,MAAA,EAAA,EAAmD,EAAA,mBAAA,EAC9B,GAAA,IAAA,EAAA,EAEfC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,SAAA,EAAA,EAEE0D,EAAA,QAAA,UAAA,CAAA/C,EAAAgD,CAAA,EAAA,IAAA9C,EAAAC,EAAA,CAAA,EAAAD,OAAAA,EAAAI,WAAA2C,QAAAC,eAA6C,KAAIzC,EAAEP,EAAAiD,aAAAC,QAAA,CAA2B,CAAA,CAAA,EAE9E9D,EAAA,EAAA,oBACFC,EAAA,EAAS,EACS,EAChB,EACF,yBAxBMC,EAAA,CAAA,EAAAkC,EAAAhC,EAAA,EAAA,EAAA,sDAAA,CAAA,EAKNF,EAAA,CAAA,EAAAgC,EAAA,mBAAA,EAAA,EAAyB,SAAAtB,EAAAmD,iBAAAC,MAAA,EACS,MAAApD,EAAAI,WAAA2C,QAAAC,cAAA,EAOmB1D,EAAA,CAAA,EAAAgC,EAAA,OAAAtB,EAAAI,WAAA2C,QAAAC,eAAAK,EAAA,EACnD/D,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,EAAA,+CAAA,EAAA,GAAA,EAMAF,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,gDAAA,EAAA,GAAA,sCASVL,EAAA,EAAA,iBAAA,EAAiB,EAAA,YAAA,EACHC,EAAA,CAAA,mBAAwEC,EAAA,EACpFF,EAAA,EAAA,sBAAA,GAAA,EAAA,mBAKE0D,EAAA,oBAAA,UAAA,CAAA/C,EAAAwD,CAAA,EAAA,IAAAtD,EAAAC,EAAA,CAAA,EAAAD,OAAAA,EAAAI,WAAA2C,QAAAC,eAEuB,uFACtBzC,EAAoBP,EAAAiD,aAAAC,QAAA,CAErC,CAAA,CAAA,EADiB,eAAA,SAAArD,EAAA,CAAAC,EAAAwD,CAAA,EAAA,IAAAtD,EAAAC,EAAA,CAAA,EAAA,OAAAM,EACeP,EAAAuD,gBAAA1D,CAAA,CAAuB,CAAA,CAAA,EACxCR,EAAA,EAAsB,QAZXC,EAAA,CAAA,EAAAkC,EAAAhC,EAAA,EAAA,EAAA,sDAAA,CAAA,EAGVF,EAAA,CAAA,EAAAgC,EAAA,aAAA,EAAA,EAAmB,WAAA,CAAA,EACL,WAAA9B,EAAA,EAAA,EAAA,oBAAA,CAAA,6BArCtBC,EAAA,CAAA,EACEC,EAAA,EAAA8D,GAAA,GAAA,GAAA,eAAA,EAAA,EAAsE,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,GAAAC,EAAA,8BAAvDpE,EAAA,EAAAgC,EAAA,OAAAtB,EAAAI,WAAA2C,QAAAC,cAAA,EAAyC,WAAAW,CAAA,0BA0HtDxE,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,sCAAA,EAAA,GAAA,sCA3ENC,EAAA,CAAA,EACEN,EAAA,EAAA,MAAA,EAAA,EAA6B,EAAA,kBAAA,EAAA,EACqC,EAAA,YAAA,EAClDC,EAAA,CAAA,mBAA4EC,EAAA,EACxFF,EAAA,EAAA,QAAA,EAAA,mBAOES,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAA8D,CAAA,EAAA,IAAA5D,EAAAC,EAAA,CAAA,EAAAC,OAAAC,EAAAH,EAAAI,WAAA2C,QAAAc,MAAAhE,CAAA,IAAAG,EAAAI,WAAA2C,QAAAc,MAAAhE,GAAAU,EAAAV,CAAA,CAAA,CAAA,EAPFR,EAAA,EAUAF,EAAA,EAAA,WAAA,EAAWC,EAAA,CAAA,oBAA+EC,EAAA,EAAY,EAExGF,EAAA,GAAA,kBAAA,EAAA,EAAgD,GAAA,YAAA,EAClCC,EAAA,EAAA,oBAAgFC,EAAA,EAC5FF,EAAA,GAAA,SAAA,EAAA,EAAiBS,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAA8D,CAAA,EAAA,IAAA5D,EAAAC,EAAA,CAAA,EAAAC,OAAAC,EAAAH,EAAAI,WAAA2C,QAAAe,MAAAjE,CAAA,IAAAG,EAAAI,WAAA2C,QAAAe,MAAAjE,GAAAU,EAAAV,CAAA,CAAA,CAAA,EACfV,EAAA,GAAA,SAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,SAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,SAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EAAS,EACF,EACO,EAGpBF,EAAA,GAAA,MAAA,EAAA,EAA6B,GAAA,kBAAA,EAAA,EAC2B,GAAA,YAAA,EACxCC,EAAA,EAAA,oBAA6EC,EAAA,EACzFF,EAAA,GAAA,QAAA,EAAA,oBAOES,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAA8D,CAAA,EAAA,IAAA5D,EAAAC,EAAA,CAAA,EAAAC,OAAAC,EAAAH,EAAAI,WAAA2C,QAAAR,WAAA1C,CAAA,IAAAG,EAAAI,WAAA2C,QAAAR,WAAA1C,GAAAU,EAAAV,CAAA,CAAA,CAAA,EAPFR,EAAA,EAUAF,EAAA,GAAA,WAAA,EAAWC,EAAA,EAAA,oBAAgFC,EAAA,EAAY,EAEzGF,EAAA,GAAA,kBAAA,EAAA,EAAsD,GAAA,YAAA,EACxCC,EAAA,EAAA,oBAAgFC,EAAA,EAC5FF,EAAA,GAAA,QAAA,EAAA,oBAOES,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAA8D,CAAA,EAAA,IAAA5D,EAAAC,EAAA,CAAA,EAAAC,OAAAC,EAAAH,EAAAI,WAAA2C,QAAAgB,cAAAlE,CAAA,IAAAG,EAAAI,WAAA2C,QAAAgB,cAAAlE,GAAAU,EAAAV,CAAA,CAAA,CAAA,EAPFR,EAAA,EAUAF,EAAA,GAAA,WAAA,EAAWC,EAAA,EAAA,oBAAmFC,EAAA,EAAY,EAC1F,EAEpBF,EAAA,GAAA,iBAAA,EAAiB,GAAA,YAAA,EACHC,EAAA,EAAA,oBAAiEC,EAAA,EAC7EF,EAAA,GAAA,QAAA,GAAA,EAAA,EAMES,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAA8D,CAAA,EAAA,IAAA5D,EAAAC,EAAA,CAAA,EAAAC,OAAAC,EAAAH,EAAAI,WAAA2C,QAAAiB,KAAAnE,CAAA,IAAAG,EAAAI,WAAA2C,QAAAiB,KAAAnE,GAAAU,EAAAV,CAAA,CAAA,CAAA,EANFR,EAAA,EAUAK,EAAA,GAAAuE,GAAA,EAAA,EAAA,aAAA,EAAA,EAGF5E,EAAA,iCA1EgBC,EAAA,CAAA,EAAAkC,EAAAhC,EAAA,EAAA,GAAA,0DAAA,CAAA,EAOVF,EAAA,CAAA,EAAAsD,EAAA,cAAApD,EAAA,EAAA,GAAA,sBAAA,CAAA,EACAkC,EAAA,UAAA1B,EAAAI,WAAA2C,QAAAc,KAAA,EAGSvE,EAAA,CAAA,EAAAkC,EAAAhC,EAAA,GAAA,GAAA,6DAAA,CAAA,EAGCF,EAAA,CAAA,EAAAkC,EAAAhC,EAAA,GAAA,GAAA,8DAAA,CAAA,EACKF,EAAA,CAAA,EAAAoC,EAAA,UAAA1B,EAAAI,WAAA2C,QAAAe,KAAA,EACPxE,EAAA,EAAAgC,EAAA,UAAA,QAAA,EACNhC,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,gEAAA,EAAA,GAAA,EAGAF,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,8DAAA,EAAA,GAAA,EAGAF,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,+DAAA,EAAA,GAAA,EAQQF,EAAA,CAAA,EAAAkC,EAAAhC,EAAA,GAAA,GAAA,2DAAA,CAAA,EAOVF,EAAA,CAAA,EAAAsD,EAAA,cAAApD,EAAA,GAAA,GAAA,sBAAA,CAAA,EACAkC,EAAA,UAAA1B,EAAAI,WAAA2C,QAAAR,UAAA,EAGSjD,EAAA,CAAA,EAAAkC,EAAAhC,EAAA,GAAA,GAAA,8DAAA,CAAA,EAGCF,EAAA,CAAA,EAAAkC,EAAAhC,EAAA,GAAA,GAAA,8DAAA,CAAA,EAOVF,EAAA,CAAA,EAAAsD,EAAA,cAAApD,EAAA,GAAA,GAAA,sBAAA,CAAA,EACAkC,EAAA,UAAA1B,EAAAI,WAAA2C,QAAAgB,aAAA,EAGSzE,EAAA,CAAA,EAAAkC,EAAAhC,EAAA,GAAA,GAAA,iEAAA,CAAA,EAIDF,EAAA,CAAA,EAAAkC,EAAAhC,EAAA,GAAA,GAAA,+CAAA,CAAA,EAOVF,EAAA,CAAA,EAAAoC,EAAA,UAAA1B,EAAAI,WAAA2C,QAAAiB,IAAA,EACA1C,EAAA,UAAAtB,EAAAkE,8BAAA,EAGW5E,EAAA,CAAA,EAAAgC,EAAA,OAAA6C,EAAAtC,SAAA,SAAA,GAAAsC,EAAArC,OAAA,sCAlJzBrC,EAAA,CAAA,EACEN,EAAA,EAAA,sBAAA,EAAA,EAAgE,EAAA,6BAAA,EAAA,EACR,EAAA,iBAAA,EACnCC,EAAA,CAAA,mBAAiEC,EAAA,EAClFK,EAAA,EAAA0E,GAAA,EAAA,EAAA,WAAA,EAAA,EACF/E,EAAA,EACAF,EAAA,EAAA,MAAA,EAAA,EAAqB,EAAA,OAAA,KAAA,CAAA,EACS,GAAA,iBAAA,EACT,GAAA,YAAA,EACHC,EAAA,EAAA,oBAAiEC,EAAA,EAC7EF,EAAA,GAAA,0BAAA,EAAA,EAAgDS,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAAuE,CAAA,EAAA,IAAArE,EAAAC,EAAA,EAAAC,OAAAC,EAAAH,EAAAI,WAAA2C,QAAAuB,SAAAzE,CAAA,IAAAG,EAAAI,WAAA2C,QAAAuB,SAAAzE,GAAAU,EAAAV,CAAA,CAAA,CAAA,EAC9CV,EAAA,GAAA,oBAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,oBAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,oBAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EAAoB,EACI,EAG5BK,EAAA,GAAA6E,GAAA,EAAA,EAAA,eAAA,EAAA,EAA+D,GAAAC,GAAA,GAAA,GAAA,eAAA,EAAA,EAgIjEnF,EAAA,EAAO,EACH,wBAvJaC,EAAA,EAAAgC,EAAA,WAAA,CAAAtB,EAAAI,WAAA2C,QAAAxB,SAAA,EACSjC,EAAA,EAAAgC,EAAA,iBAAA,MAAA,EACThC,EAAA,CAAA,EAAAkC,EAAAhC,EAAA,EAAA,GAAA,+CAAA,CAAA,EACNF,EAAA,CAAA,EAAAgC,EAAA,OAAAtB,EAAAI,WAAA2C,QAAAtB,UAAA,EAAA,EAKKnC,EAAA,CAAA,EAAAkC,EAAAhC,EAAA,GAAA,GAAA,+CAAA,CAAA,EACoCF,EAAA,CAAA,EAAAoC,EAAA,UAAA1B,EAAAI,WAAA2C,QAAAuB,QAAA,EAC3BhF,EAAA,EAAAgC,EAAA,QAAA,MAAA,EACjBhC,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,kDAAA,EAAA,GAAA,EAEiBF,EAAA,CAAA,EAAAgC,EAAA,QAAA,QAAA,EACjBhC,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,iDAAA,EAAA,GAAA,EAEiBF,EAAA,CAAA,EAAAgC,EAAA,QAAA,MAAA,EACjBhC,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,+CAAA,EAAA,GAAA,EAKSF,EAAA,CAAA,EAAAgC,EAAA,OAAAtB,EAAAI,WAAA2C,QAAAuB,WAAA,QAAA,EAiDAhF,EAAA,EAAAgC,EAAA,OAAAtB,EAAAI,WAAA2C,QAAAuB,WAAA,MAAA,sCAoFvB7E,EAAA,CAAA,EACEN,EAAA,EAAA,sBAAA,EAAA,EAA+D,EAAA,6BAAA,EAAA,EACP,EAAA,iBAAA,EACnCC,EAAA,CAAA,mBAA+DC,EAAA,EAAkB,EAEpGF,EAAA,EAAA,MAAA,EAAA,EAAqB,EAAA,OAAA,KAAA,EAAA,EACQ,EAAA,iBAAA,EACR,GAAA,YAAA,EACHC,EAAA,EAAA,oBAAqEC,EAAA,EACjFF,EAAA,GAAA,WAAA,EAAA,oBAOES,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAA2E,CAAA,EAAA,IAAAzE,EAAAC,EAAA,EAAAC,OAAAC,EAAAH,EAAAI,WAAAsE,OAAAC,WAAA9E,CAAA,IAAAG,EAAAI,WAAAsE,OAAAC,WAAA9E,GAAAU,EAAAV,CAAA,CAAA,CAAA,EACDR,EAAA,EAAW,EACI,EACb,EACH,wBAnBaC,EAAA,EAAAgC,EAAA,WAAA,CAAAtB,EAAAI,WAAAsE,OAAAnD,SAAA,EACSjC,EAAA,EAAAgC,EAAA,iBAAA,MAAA,EACThC,EAAA,CAAA,EAAAkC,EAAAhC,EAAA,EAAA,EAAA,6CAAA,CAAA,EAKDF,EAAA,CAAA,EAAAkC,EAAAhC,EAAA,GAAA,EAAA,mDAAA,CAAA,EAOVF,EAAA,CAAA,EAAAsD,EAAA,cAAApD,EAAA,GAAA,GAAA,sBAAA,CAAA,EACAkC,EAAA,UAAA1B,EAAAI,WAAAsE,OAAAC,UAAA,GD5YL,IAAMC,GAAkD,CAC7DtC,UAAW,GACXS,QAAS,GACT2B,OAAQ,GACRrE,OAAQ,IA4EJ,SAAUwE,GAAuBC,EAAgBC,EAAkBC,EAAkB,CAErFA,IACFF,EAASA,EAAOE,CAAS,EAAIF,EAAOE,CAAS,EAAKF,EAAOE,CAAS,EAAI,CAAA,GAI3DC,OAAOC,KAAKH,CAAQ,EAC5BI,QAASC,GAAO,CACfN,EAAOM,CAAG,IAAMC,SAClBP,EAAOM,CAAG,EAAIL,EAASK,CAAG,EAE9B,CAAC,CACH,CAOA,IAAaE,IAA8B,IAAA,CAArC,IAAOA,EAAP,MAAOA,CAA8B,CAkBzCC,YAAmBtC,EAAwC,CAAxC,KAAAA,aAAAA,EAjBG,KAAAuC,MAAQ,0BAUvB,KAAAtB,+BAAiCuB,GAAUC,oCAC3C,KAAA/D,WAAa8D,GAAUE,gBAE9B,KAAAxC,iBAAmBA,GAEF,KAAAyC,KAAuB,CAAA,CAEsB,CAE9DC,UAAQ,CAENhB,GAAuB,KAAKzE,WAAY0F,GAAa,QAAQ,CAC/D,CAEAC,iBAAe,CACb,KAAKC,oBAAmB,EACxB,KAAKC,oBAAmB,CAC1B,CAEAA,qBAAmB,CACjB,KAAKL,KAAKM,KACR,KAAKC,aAAaC,cAAcC,UAAWC,GAAgB,CACzD,KAAKlG,WAAW2C,QAAQtB,QAAU6E,IAAiB,OACrD,CAAC,CAAC,EAEJ,KAAKV,KAAKM,KACR,KAAKK,WAAWH,cAAcC,UAAWG,GAAe,CACtD,KAAKpG,WAAWC,OAAOoB,QAAU+E,IAAgB,OACnD,CAAC,CAAC,CAEN,CAEAR,qBAAmB,CACjB,KAAKJ,KAAKM,KACR,KAAKO,sBAAsBC,MAAMC,cAAcN,UAAU,IAAK,CAC5D,KAAKpD,aAAaC,QAAO,CAC3B,CAAC,EACD,KAAKiD,aAAaQ,cAAcN,UAAU,IAAK,CAC7C,KAAKpD,aAAaC,QAAO,CAC3B,CAAC,EACD,KAAK0D,YAAYF,MAAMC,cAAcN,UAAU,IAAK,CAClD,KAAKpD,aAAaC,QAAO,CAC3B,CAAC,EACD,KAAKqD,WAAWI,cAAcN,UAAU,IAAK,CAC3C,KAAKpD,aAAaC,QAAO,CAC3B,CAAC,CAAC,CAEN,CAEA2D,aAAW,CACT,KAAKjB,KAAKT,QAAS2B,GAAMA,GAAGC,YAAW,CAAE,CAC3C,CAEAxD,gBAAgByD,EAAc,CAC5B,KAAK5G,WAAW2C,QAAQC,eAAiBgE,EAAKC,IAC9C,KAAKhE,aAAaC,QAAO,CAC3B,yCAnEWoC,GAA8B4B,EAAAC,CAAA,CAAA,CAAA,sBAA9B7B,EAA8B8B,UAAA,CAAA,CAAA,yBAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,2OAA9BE,EAAAD,EAAA/B,KAAA,m0HC7Gb9F,EAAA,EAAA+H,GAAA,GAAA,GAAA,eAAA,EAAA,EAA6C,EAAAC,GAAA,GAAA,GAAA,eAAA,EAAA,EA0IG,EAAAC,GAAA,GAAA,GAAA,eAAA,EAAA,EA+FF,EAAAC,GAAA,GAAA,GAAA,eAAA,EAAA,QAzO/BtG,EAAA,OAAAiG,EAAAM,gBAAAxH,MAAA,EA0IAf,EAAA,EAAAgC,EAAA,OAAAiG,EAAAM,gBAAAvF,SAAA,EA+FAhD,EAAA,EAAAgC,EAAA,OAAAiG,EAAAM,gBAAA9E,OAAA,EA4JAzD,EAAA,EAAAgC,EAAA,OAAAiG,EAAAM,gBAAAnD,MAAA;+HDxRT,IAAOY,EAAPwC,SAAOxC,CAA8B,GAAA,EE7GpC,IAAMyC,GAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBCwBnBC,IAAe,IAAA,CAAtB,IAAOA,EAAP,MAAOA,CAAe,CAL5BC,aAAA,CAM2C,KAAAC,KAAO,EAWvC,KAAAC,WAAqC,WACrC,KAAAC,UAAmC,QACnC,KAAAC,SAAqD,OAEpD,KAAAC,YAAc,IAAIC,EAElB,KAAAC,YAAc,IAAID,EAEM,KAAAE,WAAa,GA8BvC,KAAAC,yBAA2B,EAC3B,KAAAC,eAAiB,EACjB,KAAAC,eAAiB,GAEjB,KAAAC,GAAKC,GAAOC,EAAU,EACtB,KAAAC,SAAWF,GAAOG,EAAS,EApDnC,IAAaC,MAAMA,EAAsB,CACvC,KAAKC,cAAgB,KAAKC,iBAAiBF,CAAK,CAClD,CACA,IAAaG,SAASH,EAAsB,CAC1C,KAAKI,iBAAmB,KAAKF,iBAAiBF,CAAK,CACrD,CACA,IAAaK,SAASL,EAAsB,CAC1C,KAAKM,iBAAmB,KAAKJ,iBAAiBF,CAAK,CACrD,CAgBA,IACIO,mBAAiB,CACnB,OAAO,KAAKtB,aAAe,OAC7B,CACA,IACIuB,sBAAoB,CACtB,OAAO,KAAKvB,aAAe,UAC7B,CACA,IACIwB,oBAAkB,CACpB,OAAO,KAAKxB,aAAe,QAC7B,CAGA,IACIyB,iBAAe,CACjB,OAAO,KAAKxB,YAAc,MAC5B,CACA,IACIyB,kBAAgB,CAClB,OAAO,KAAKzB,YAAc,OAC5B,CASA0B,UAAQ,CACN,KAAKd,SAASe,OAAO,WAAY,UAAW,KAAKC,SAASC,KAAK,IAAI,CAAC,CACtE,CAEAC,aAAW,CACT,KAAKlB,SAASmB,QAAO,CACvB,CAEAC,UAAUC,EAAiB,CACzBA,EAAMC,eAAc,EACpB,KAAK5B,yBAA2B,KAAKG,GAAG0B,cAAcC,YACtD,KAAK7B,eAAiB0B,EAAMI,QAC5B,KAAK7B,eAAiB,GACtB,KAAKH,WAAa,GAClB,KAAKH,YAAYoC,KAAI,EACrBC,SAASC,cAAc,MAAM,GAAGC,UAAUC,IAAI,sBAAsB,CACtE,CAEAd,UAAQ,CACF,KAAKvB,aACP,KAAKG,eAAiB,GACtB,KAAKH,WAAa,GAClB,KAAKD,YAAYkC,KAAI,EACrBC,SAASC,cAAc,MAAM,GAAGC,UAAUE,OAAO,sBAAsB,EAE3E,CAE8CC,OAAOX,EAAiB,CACpE,GAAI,KAAKzB,eAAgB,CACvByB,EAAMC,eAAc,EACpB,IAAMW,EAAWZ,EAAMI,QAAU,KAAK9B,eAClCuC,EAEA,KAAK9C,YAAc,QACrB8C,EAAa,KAAKxC,yBAA2BuC,EAE7CC,EAAa,KAAKxC,yBAA2BuC,EAG/C,KAAK/B,MAAQgC,CACf,CACF,CAEQ9B,iBAAiBF,EAAsB,CAC7C,OAAI,OAAOA,GAAU,SACZ,GAAGA,CAAK,KAEVA,CACT,yCAzGWlB,EAAe,sBAAfA,EAAemD,UAAA,CAAA,CAAA,aAAA,CAAA,EAAAC,SAAA,GAAAC,aAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GAAfE,EAAA,YAAA,SAAAC,EAAA,CAAA,OAAAF,EAAAP,OAAAS,CAAA,CAAc,EAAA,GAAAC,EAAA,QAAdC,GAAA,QAAAJ,EAAApC,aAAA,EAAe,YAAAoC,EAAAjC,gBAAA,EAAA,YAAAiC,EAAA/B,gBAAA,EAAA,WAAA+B,EAAAK,gBAAA,EAAfC,GAAA,cAAAN,EAAArD,IAAA,EAAe,cAAAqD,EAAA9C,UAAA,EAAA,+BAAA8C,EAAA9B,iBAAA,EAAA,kCAAA8B,EAAA7B,oBAAA,EAAA,gCAAA6B,EAAA5B,kBAAA,EAAA,6BAAA4B,EAAA3B,eAAA,EAAA,8BAAA2B,EAAA1B,gBAAA,sjBCxB5BiC,EAAA,EAAA,MAAA,CAAA,EACEC,GAAA,CAAA,EACFC,EAAA,EAEAF,EAAA,EAAA,MAAA,EAAA,CAAA,EAAuCN,EAAA,YAAA,SAAAC,EAAA,CAAAQ,OAAAC,EAAAC,CAAA,EAAAC,EAAab,EAAAnB,UAAAqB,CAAA,CAAiB,CAAA,CAAA,EACnEK,EAAA,EAAA,MAAA,CAAA,OACEA,EAAA,EAAA,MAAA,CAAA,EAAmF,EAAA,IAAA,CAAA,EAE/EO,EAAA,EAAA,OAAA,CAAA,EACFL,EAAA,EAAI,EACA,EACF,OAXqBL,GAAA,WAAAJ,EAAAlD,QAAA;8GDwBvB,IAAOL,EAAPsE,SAAOtE,CAAe,GAAA,+HGrBxBuE,EAAA,CAAA,EACEC,EAAA,EAAA,MAAA,CAAA,EACEC,EAAA,EAAA,uBAAA,CAAA,EACFC,EAAA,aADwBC,EAAA,CAAA,EAAAC,EAAA,SAAA,EAAA,sCAMtBL,EAAA,CAAA,EACEC,EAAA,EAAA,SAAA,CAAA,EAEEK,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAG,mBAAmB,SAAS,CAAC,CAAA,CAAA,EAKtCX,EAAA,EAAA,UAAA,EAAUY,EAAA,EAAA,UAAA,EAAQV,EAAA,EAClBU,EAAA,CAAA,mBACFV,EAAA,yBANEC,EAAA,EAAAC,EAAA,UAAAS,GAAA,EAAAC,GAAAN,EAAAO,sBAAA,SAAA,CAAA,EAKAZ,EAAA,CAAA,EAAAa,EAAA,IAAAC,EAAA,EAAA,EAAA,8BAAA,EAAA,GAAA,sCAXRlB,EAAA,CAAA,EACEC,EAAA,EAAA,oBAAA,CAAA,EACEkB,EAAA,EAAAC,GAAA,EAAA,EAAA,eAAA,CAAA,EAYAnB,EAAA,EAAA,SAAA,CAAA,EAEEK,EAAA,QAAA,UAAA,CAAAC,EAAAc,CAAA,EAAA,IAAAZ,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAG,mBAAmB,QAAQ,CAAC,CAAA,CAAA,EAKrCX,EAAA,EAAA,UAAA,EAAUY,EAAA,EAAA,YAAA,EAAUV,EAAA,EACpBU,EAAA,CAAA,mBACFV,EAAA,EACAF,EAAA,EAAA,SAAA,CAAA,EACEK,EAAA,QAAA,UAAA,CAAAC,EAAAc,CAAA,EAAA,IAAAZ,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAG,mBAAmB,QAAQ,CAAC,CAAA,CAAA,EAMrCX,EAAA,EAAA,UAAA,EAAUY,EAAA,GAAA,cAAA,EAAYV,EAAA,EACtBU,EAAA,EAAA,oBACFV,EAAA,EAAS,yBA/BMC,EAAA,CAAA,EAAAC,EAAA,OAAAI,EAAAa,iBAAA,EAeblB,EAAA,EAAAC,EAAA,UAAAS,GAAA,EAAAC,GAAAN,EAAAO,sBAAA,QAAA,CAAA,EAKAZ,EAAA,CAAA,EAAAa,EAAA,IAAAC,EAAA,EAAA,EAAA,6BAAA,EAAA,GAAA,EAKAd,EAAA,CAAA,EAAAC,EAAA,UAAAS,GAAA,GAAAC,GAAAN,EAAAO,sBAAA,QAAA,CAAA,EAKAZ,EAAA,CAAA,EAAAa,EAAA,IAAAC,EAAA,GAAA,EAAA,6BAAA,EAAA,GAAA,6BAxCVlB,EAAA,CAAA,EACEC,EAAA,EAAA,MAAA,CAAA,EACEkB,EAAA,EAAAI,GAAA,EAAA,EAAA,eAAA,CAAA,EAAuC,EAAAC,GAAA,GAAA,GAAA,eAAA,CAAA,EA0CzCrB,EAAA,sBA1CiBC,EAAA,CAAA,EAAAC,EAAA,OAAAI,EAAAgB,gBAAA,EAMArB,EAAA,EAAAC,EAAA,OAAAI,EAAAiB,4BAAA,0BAoDjB1B,EAAA,CAAA,EACEC,EAAA,EAAA,MAAA,EAAA,EACEC,EAAA,EAAA,uBAAA,EAAA,EACFC,EAAA,aADwBC,EAAA,CAAA,EAAAC,EAAA,YAAA,EAAA,EAAkB,aAAA,EAAA,GDpD9C,IAAasB,IAA2B,IAAA,CAAlC,IAAOA,EAAP,MAAOA,CAA2B,CAMtC,IACWC,KAAKC,EAAwB,CACtC,KAAKC,MAAQD,EACb,KAAKE,oBAAoB,KAAKD,KAAK,CACrC,CAeAE,YAAoBC,EAAsB,CAAtB,KAAAA,WAAAA,EAxBE,KAAAC,MAAQ,uBAErB,KAAAT,iBAAmB,GACnB,KAAAU,gBAAkB,GAU3B,KAAAC,QAAU,KAAKH,WAAWI,cAE1B,KAAAC,cAAgC,CAAA,EAGhC,KAAAhB,kBAAoB,GACpB,KAAAI,6BAA+B,GAG/B,KAAAV,oBAAmC,UAG7BuB,OAAOC,iBACT,KAAKC,eAAiB,IAAID,eAAgBE,GAAW,CAEnD,IAAMC,GADQC,MAAMC,QAAQH,CAAO,EAAIA,EAAQ,CAAC,EAAIA,GACvBI,YAAYC,MAEnCC,EAA4B,KAAK1B,kBACvC,KAAKA,kBAAoBqB,EAAiB,IAEtC,CAAC,KAAKrB,mBAAqB0B,GAA6B,KAAKhC,sBAAwB,WACvF,KAAKJ,mBAAmB,QAAQ,EAElC,KAAKc,6BAA+BiB,EAAiB,GACvD,CAAC,EAEL,CAEAM,iBAAe,CACbV,OAAOW,WAAW,IAAM,KAAKT,eAAeU,QAAQ,KAAKf,OAAO,EAAGgB,EAAiC,EAEpGb,OAAOW,WAAW,IAAM,KAAKnB,oBAAoB,KAAKD,KAAK,EAAG,CAAC,CACjE,CAEAuB,aAAW,CACT,KAAKZ,eAAea,WAAU,CAChC,CAEA1C,mBAAmB2C,EAAkB,CACnC,OAAQA,EAAK,CACX,IAAK,UACH,KAAKC,kBAAoB,OACzB,KAAKxC,oBAAsB,UAC3B,MACF,IAAK,SACH,KAAKwC,kBAAoB,QACzB,KAAKxC,oBAAsB,SAC3B,MACF,IAAK,SACH,KAAKwC,kBAAoB,QACzB,KAAKxC,oBAAsB,SAC3B,MACF,QACE,KAAKwC,kBAAoB,GACzB,KACJ,CACF,CAEAC,yBAAuB,CACrB,GAAI,KAAKtB,gBAAiB,CACxB,IAAMuB,EAAa,KAAKC,cAActB,cAAcuB,cAAcC,SAASC,KACvEJ,IACF,KAAKC,cAActB,cAAc0B,MAAMC,OAASN,EAAWO,aAAe,GAAK,KAEnF,CACF,CAEAlC,oBAAoBF,EAAwB,CAG1C,GAAI,KAAKM,iBAAmB,CAACN,GAAoB,CAAC,KAAK8B,cACrD,OAEF,IAAMC,EAAgB,KAAKD,cAActB,cAAcuB,cACvD,GAAI,CAACA,EACH,OAGF,IAAMM,EAAkB,KAAKP,cAActB,cAAc6B,gBACzD,GAAI,CAACA,EACH,OAGF,IAAMC,EAAUP,EAAcrB,QAAQ4B,QAChCC,EAAUR,EAAcrB,QAAQ6B,QAEtCF,EAAgBG,KAAI,EACpBH,EAAgBI,MAAMzC,CAAgB,EACtCqC,EAAgBK,MAAK,EAGrB,KAAKZ,cAActB,cAAcuB,cAAcY,SAASL,EAASC,CAAO,CAC1E,yCA1GWzC,GAA2B8C,EAAAC,EAAA,CAAA,CAAA,sBAA3B/C,EAA2BgD,UAAA,CAAA,CAAA,sBAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,uGAA3BE,EAAAD,EAAA5C,KAAA,0lBCVbf,EAAA,EAAA6D,GAAA,EAAA,EAAA,eAAA,CAAA,EA+CAC,GAAA,CAAA,EAGAhF,EAAA,EAAA,MAAA,CAAA,EAAsC,EAAA,SAAA,EAAA,CAAA,wBAQlCK,EAAA,OAAA,UAAA,CAAA4E,OAAA3E,EAAA4E,CAAA,EAAAxE,EAAQmE,EAAArB,wBAAA,CAAyB,CAAA,CAAA,EAClCtD,EAAA,EACDgB,EAAA,EAAAiE,GAAA,EAAA,EAAA,eAAA,CAAA,EAKAlF,EAAA,EAAA,MAAA,CAAA,EACFC,EAAA,QAlEeE,EAAA,OAAA,CAAAyE,EAAA3C,eAAA,EAqDX/B,EAAA,CAAA,EAAAiF,GAAA,YAAAP,EAAAtB,iBAAA,EAAqC,aAAAsB,EAAA3C,gBAAA,QAAA,IAAA,EAIrC9B,EAAA,SAAAyE,EAAA3C,iBAAA2C,EAAAhD,MAAAZ,EAAA,EAAA,EAAA4D,EAAAhD,KAAA,EAAA,KAAAwD,EAAA,EAGalF,EAAA,CAAA,EAAAC,EAAA,OAAA,CAAAyE,EAAAhD,KAAA;4HDlDX,IAAOH,EAAP4D,SAAO5D,CAA2B,GAAA,wJGG9B6D,GAAA,CAAA,wBACAA,GAAA,CAAA,wBACAA,GAAA,CAAA,4BAZRC,EAAA,CAAA,EACEC,EAAA,EAAA,MAAA,CAAA,EAAmC,EAAA,uBAAA,EAAA,EAG/BC,GAAA,EAAA,EAAA,CAAA,cAAA,mBAAA,iBAAA,GAAA,EAAA,CAAA,GAAA,iBAAA,EAAA,CAAA,CAAA,EACFC,EAAA,EAGAF,EAAA,EAAA,cAAA,EAAA,EAA0G,EAAA,MAAA,EAAA,EAEtGG,EAAA,EAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,EAA+C,EAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,EACK,EAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,EAEtDJ,EAAA,EAAM,EACM,4CAXQK,EAAA,CAAA,EAAAC,EAAA,OAAAC,EAAAC,gBAAA,EAAyB,mBAAAD,EAAAE,gBAAA,EAKXJ,EAAA,CAAA,EAAAC,EAAA,QAAA,GAAA,EAEjBD,EAAA,CAAA,EAAAC,EAAA,mBAAAI,CAAA,EACAL,EAAA,EAAAC,EAAA,mBAAAK,CAAA,EACAN,EAAA,EAAAC,EAAA,mBAAAM,CAAA,yBAWfhB,GAAA,CAAA,wBACAA,GAAA,CAAA,2BADAK,EAAA,EAAAY,GAAA,EAAA,EAAA,eAAA,EAAA,EAA6C,EAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,8BAA9BR,EAAA,mBAAAI,CAAA,EACAL,EAAA,EAAAC,EAAA,mBAAAK,CAAA,yBAWjBf,GAAA,CAAA,4BAhBNC,EAAA,CAAA,EACEC,EAAA,EAAA,gBAAA,EAAA,EAAuC,EAAA,UAAA,EAAA,mBAEnCG,EAAA,EAAAc,GAAA,EAAA,EAAA,cAAA,EAAA,EAIFf,EAAA,EAEAF,EAAA,EAAA,UAAA,EAAA,mBACEA,EAAA,EAAA,uBAAA,EAAA,EACEC,GAAA,EAAA,EAAA,CAAA,cAAA,mBAAA,iBAAA,GAAA,EAAA,CAAA,GAAA,iBAAA,EAAA,CAAA,CAAA,EACFC,EAAA,EAAuB,EAGzBF,EAAA,EAAA,UAAA,EAAA,oBACEG,EAAA,GAAAe,GAAA,EAAA,EAAA,eAAA,EAAA,EACFhB,EAAA,EAAU,8BAfDK,EAAA,CAAA,EAAAY,EAAA,QAAAC,EAAA,EAAA,EAAA,qCAAA,CAAA,EAOAb,EAAA,CAAA,EAAAY,EAAA,QAAAC,EAAA,EAAA,EAAA,kCAAA,CAAA,EACeb,EAAA,CAAA,EAAAC,EAAA,OAAAC,EAAAC,gBAAA,EAAyB,kBAAA,EAAA,EAKxCH,EAAA,CAAA,EAAAY,EAAA,QAAAC,EAAA,GAAA,GAAA,mCAAA,CAAA,EACQb,EAAA,CAAA,EAAAC,EAAA,mBAAAM,CAAA,6BAvCvBf,EAAA,CAAA,EAIEI,EAAA,EAAAkB,GAAA,EAAA,EAAA,eAAA,CAAA,EAA4C,EAAAC,GAAA,GAAA,GAAA,eAAA,CAAA,sBAA7Bf,EAAA,EAAAC,EAAA,OAAA,CAAAC,EAAAc,oBAAA,EAmBAhB,EAAA,EAAAC,EAAA,OAAAC,EAAAc,oBAAA,yBAuBfC,EAAA,EAAA,uBAAA,EAAA,OAAsBhB,EAAA,YAAA,EAAA,EAAkB,aAAA,EAAA,yBAqClCR,EAAA,EAAA,YAAA,EACEyB,EAAA,CAAA,mBACFvB,EAAA,SADEK,EAAA,EAAAmB,EAAA,IAAAN,EAAA,EAAA,EAAA,iDAAA,EAAA,GAAA,0BAqBFpB,EAAA,EAAA,YAAA,EACEyB,EAAA,CAAA,mBACFvB,EAAA,SADEK,EAAA,EAAAmB,EAAA,IAAAN,EAAA,EAAA,EAAA,iDAAA,EAAA,GAAA,sCAnDRpB,EAAA,EAAA,OAAA,KAAA,CAAA,EAA+B,EAAA,MAAA,EAAA,EACS,EAAA,iBAAA,EACnB,EAAA,YAAA,EACHyB,EAAA,CAAA,mBAAoEvB,EAAA,EAChFF,EAAA,EAAA,QAAA,EAAA,EAAyB2B,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAArB,EAAAsB,EAAA,EAAAC,OAAAC,EAAAxB,EAAAyB,aAAAC,KAAAP,CAAA,IAAAnB,EAAAyB,aAAAC,KAAAP,GAAAQ,EAAAR,CAAA,CAAA,CAAA,EAAzB1B,EAAA,EAAmG,EACnF,EAGpBsB,EAAA,EAAA,aAAA,EAEAxB,EAAA,EAAA,MAAA,EAAA,EAAsC,GAAA,iBAAA,EACnB,GAAA,YAAA,EACHyB,EAAA,EAAA,oBAAmEvB,EAAA,EAC/EF,EAAA,GAAA,QAAA,GAAA,CAAA,EAKE2B,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAArB,EAAAsB,EAAA,EAAAC,OAAAC,EAAAxB,EAAAyB,aAAAG,YAAAT,CAAA,IAAAnB,EAAAyB,aAAAG,YAAAT,GAAAQ,EAAAR,CAAA,CAAA,CAAA,EALF1B,EAAA,EAUAF,EAAA,GAAA,mCAAA,EAAA,EAGE2B,EAAA,cAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAArB,EAAAsB,EAAA,EAAAC,OAAAC,EAAAxB,EAAAyB,aAAAG,YAAAT,CAAA,IAAAnB,EAAAyB,aAAAG,YAAAT,GAAAQ,EAAAR,CAAA,CAAA,CAAA,EACD1B,EAAA,EACDC,EAAA,GAAAmC,GAAA,EAAA,EAAA,aAAA,CAAA,EAGFpC,EAAA,EAEAF,EAAA,GAAA,iBAAA,EAAiB,GAAA,YAAA,EACHyB,EAAA,EAAA,oBAAoEvB,EAAA,EAChFF,EAAA,GAAA,iBAAA,EAAiByB,EAAA,EAAA,oBAAyEvB,EAAA,EAC1FF,EAAA,GAAA,QAAA,GAAA,CAAA,EAIE2B,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAArB,EAAAsB,EAAA,EAAAC,OAAAC,EAAAxB,EAAAyB,aAAAK,YAAAX,CAAA,IAAAnB,EAAAyB,aAAAK,YAAAX,GAAAQ,EAAAR,CAAA,CAAA,CAAA,EAJF1B,EAAA,EASAF,EAAA,GAAA,mCAAA,EAAA,EAGE2B,EAAA,cAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAArB,EAAAsB,EAAA,EAAAC,OAAAC,EAAAxB,EAAAyB,aAAAK,YAAAX,CAAA,IAAAnB,EAAAyB,aAAAK,YAAAX,GAAAQ,EAAAR,CAAA,CAAA,CAAA,EACD1B,EAAA,EACDC,EAAA,GAAAqC,GAAA,EAAA,EAAA,aAAA,CAAA,EAGFtC,EAAA,EAAkB,EACd,oDAnDUK,EAAA,CAAA,EAAAkC,EAAArB,EAAA,EAAA,GAAA,kDAAA,CAAA,EACab,EAAA,CAAA,EAAAmC,EAAA,UAAAjC,EAAAyB,aAAAC,IAAA,EAQb5B,EAAA,CAAA,EAAAkC,EAAArB,EAAA,GAAA,GAAA,iDAAA,CAAA,EAMVb,EAAA,CAAA,EAAAmC,EAAA,UAAAjC,EAAAyB,aAAAG,WAAA,EAOA9B,EAAA,CAAA,EAAAC,EAAA,SAAAmC,CAAA,EACAD,EAAA,QAAAjC,EAAAyB,aAAAG,WAAA,EAEW9B,EAAA,EAAAC,EAAA,OAAAoC,EAAAC,SAAA,yBAAA,GAAAD,EAAAE,OAAA,EAMDvC,EAAA,CAAA,EAAAkC,EAAArB,EAAA,GAAA,GAAA,kDAAA,CAAA,EACKb,EAAA,CAAA,EAAAkC,EAAArB,EAAA,GAAA,GAAA,uDAAA,CAAA,EAKfb,EAAA,CAAA,EAAAmC,EAAA,UAAAjC,EAAAyB,aAAAK,WAAA,EAOAhC,EAAA,CAAA,EAAAC,EAAA,SAAAuC,CAAA,EACAL,EAAA,QAAAjC,EAAAyB,aAAAK,WAAA,EAEWhC,EAAA,EAAAC,EAAA,OAAAwC,EAAAH,SAAA,yBAAA,GAAAG,EAAAF,OAAA,4BAUnBtB,EAAA,EAAA,oBAAA,EAAA,iBACEhB,EAAA,SAAAC,EAAAyB,aAAAe,kBAAA,EAA0C,qBAAAxC,EAAAyC,kBAAA,4BAO5C1B,EAAA,EAAA,0BAAA,EAAA,iBACEhB,EAAA,aAAAC,EAAAyB,aAAAiB,UAAA,EAAsC,kBAAA1C,EAAA2C,gBAAA,GD1FnC,IAAMC,GAAmB,IAQnBC,IAAqB,IAAA,CAA5B,IAAOA,EAAP,MAAOA,CAAqB,CANlCC,aAAA,CAOwB,KAAAC,MAAQ,gBACgB,KAAAjC,qBAAuB,GAG5D,KAAAkC,eAAiBJ,GAIjB,KAAAD,iBAAqCM,GAW5B,KAAAC,OAAiBC,OAEjB,KAAAC,mBAA6B,8CAEtC,KAAAC,kBAAwC,CAAA,EAExC,KAAAC,gBAAkB,gBAEV,KAAAC,gBAAkB,IAAIC,GAE7B,KAAAC,oBAAsB,IAAIC,EAC1B,KAAAC,mBAAqB,IAAID,EACzB,KAAAE,cAAgB,IAAIF,EAAsB,EAAK,EAC/C,KAAAG,kBAAoB,IAAIH,EAIjB,KAAAI,mBAAqBC,GAAOC,EAAkB,EAC9C,KAAAC,iBAAmBF,GAAOG,EAAgB,EAC1C,KAAAC,gCAAkCJ,GAAOK,EAA+B,EACjF,KAAAC,aAAeN,GAAOO,CAA0B,EAChD,KAAAC,aAAeR,GAAOS,EAAsB,EAC5C,KAAAC,eAAiBV,GAAOW,EAAuB,EAC/C,KAAAC,kBAAoBZ,GAAOa,EAAiB,EAC5C,KAAAC,wBAA0Bd,GAAOe,EAAuB,EAGhE,KAAA5E,iBAAmB,GACnB,KAAA6E,cAAgB,GAChB,KAAAC,yBAA2BC,GAEnB,KAAAC,cAAgC,CAAA,EAtCxC,IAAaC,uBAAuBC,EAAiC,CAC/DA,IAAW,OACb,KAAKP,wBAAwBQ,0BAA0BD,CAAM,EAC7D,KAAKE,yBAAwB,EAEjC,CAmCAC,UAAQ,CACF,KAAKlC,mBAAmBmC,OAAS,GACnC,KAAKrB,gCAAgCsB,iCAAiC,KAAKpC,iBAAiB,EAK1F,KAAK5B,cAAciB,YAAYgD,iBACjC,OAAO,KAAKjE,cAAciB,YAAYgD,gBAGxC,KAAKjB,eAAekB,iBAAgB,EAGpC,KAAKT,cAAcU,KACjB,KAAK9B,mBAAmB+B,QAAQ,eAAiB,KAAK7C,eAAiB,KAAK,EAAE8C,UAAWC,GAAQ,CAC/F,KAAKjF,qBAAuBiF,EAAKC,OACnC,CAAC,CAAC,EAEJ,KAAKd,cAAcU,KACjB,KAAKrC,gBAAgB0C,KAAKC,GAAa,GAAI,EAAGC,GAAOC,EAAQ,CAAC,EAAEN,UAAU,IAAK,CAC7E,KAAKjC,kBAAkBwC,KAAI,CAC7B,CAAC,CAAC,EAIJ,KAAKnB,cAAcU,KACjB,KAAKvB,aAAaiC,gBAEfL,KAAKM,GAAK,CAAC,CAAC,EACZT,UAAU,IAAK,CACd,KAAKU,qBAAoB,CAC3B,CAAC,CAAC,EAIN,KAAKtB,cAAcU,KACjB,KAAKvB,aAAaoC,uBAAuBR,KAAKM,GAAK,CAAC,CAAC,EAAET,UAAU,IAAK,CACpE,KAAK5F,iBAAmB,GACxB,KAAK6E,cAAgB,EACvB,CAAC,CAAC,EAIJ,KAAKG,cAAcU,KACjB,KAAKrB,aAAamC,0BAA0BZ,UAAU,IAAK,CACzD,KAAKa,iCAAgC,CACvC,CAAC,CAAC,CAEN,CAEAC,YAAYC,EAAsB,CAC5BA,GAAS3D,QACX,KAAK2B,wBAAwBiC,UAAUD,EAAQ3D,OAAO6D,YAAY,CAEtE,CAEAC,iBAAe,CACb,KAAK9B,cAAcU,KACjB,KAAKqB,eAAeC,cAAcpB,UAAWqB,GAAU,CACrD,KAAK1F,aAAa2F,gBAAkBD,IAAW,OACjD,CAAC,CAAC,EAEJ,KAAKF,eAAeI,aAAavB,UAAU,IAAK,CAC9C,KAAKzB,aAAaiD,QAAO,CAC3B,CAAC,EACD,KAAKhC,yBAAwB,CAC/B,CAEAiC,aAAW,CACT,KAAKrC,cAAcsC,QAASC,GAAQA,EAAIC,YAAW,CAAE,CACvD,CAEApC,0BAAwB,CACtB,IAAMqC,EAAyB,KAAK3C,yBACjC4C,QAAQ,iBAAkB,KAAKtE,iBAAmB,EAAE,EACpDsE,QAAQ,oBAAqB,KAAKnG,aAAaG,aAAe,EAAE,EAChEgG,QAAQ,oBAAqB,KAAKnG,aAAaK,aAAe,EAAE,EACnE,KAAKiD,cAAgB,GACrB,IAAM8C,EAA2BC,KAAKC,MAAMD,KAAKE,UAAU,KAAKvG,YAAY,CAAC,EACvEwG,EAAmB,KAAKpD,wBAAwBqD,kBAAkBL,CAAwB,EAAE5B,KAChGkC,GAAYC,IACVC,QAAQC,MAAM,yBAA0BF,CAAG,EACpCG,GAAWH,CAAG,EACtB,EACDI,GAAK,CAAE,EAGHC,EAAmBR,EAAiBhC,KACxCyC,GAAUC,GACR,KAAK9D,wBAAwB+D,oBAAoBf,EAA0Bc,CAAe,EAAE1C,KAC1F4C,GAAI,IAAM,KAAKtF,gBAAgBuF,KAAK,EAAK,CAAC,EAC1CX,GAAYC,IACVC,QAAQC,MAAM,kCAAmCF,CAAG,EACpD,KAAK7E,gBAAgBuF,KAAK,EAAI,EACvBP,GAAWH,CAAG,EACtB,CAAC,CACH,CACF,EAGGW,EAAsBC,GAAc,CACxCP,EACAR,EAAiBhC,KACfkC,GAAW,IAAMF,EAAiBhC,KAAKgD,EAAKC,GAAMA,EAAEtB,QAAQ,oBAAqB,KAAKxE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAC7G,CACF,EACD,KAAK8B,cAAcU,KACjBmD,EAAoB9C,KAAKkD,GAAK,CAAC,CAAC,EAAErD,UAAU,CAAC,CAACsD,EAAOC,CAAO,IAAK,CAC/D,KAAKpJ,iBAAmBmJ,EAAMxB,QAAQ,gBAAiB,KAAOD,CAAsB,EACpF,KAAKhE,mBAAmB0C,KAAKgD,CAAO,EACpC,KAAKzF,cAAcyC,KAAK,EAAK,EACxB,KAAKtB,gBACR,KAAK7E,iBAAmB,IAE1B,KAAKyE,kBAAkB2E,cAAa,CACtC,CAAC,CAAC,CAEN,CAEAC,WAAS,CACP,KAAKhF,aAAaiF,YAAW,CAC/B,CAEAhD,sBAAoB,CAClB,KAAK5C,cAAcyC,KAAK,EAAI,EAC5B,KAAK5C,oBAAoB4C,KAAK,KAAK5E,YAAY,EAC/C,KAAK6D,yBAAwB,EAC7B,KAAKf,aAAakF,cAAa,CACjC,CAEA9C,kCAAgC,CAC1B+C,OAAOC,QAAQ,KAAK1F,iBAAiB2F,QAAQ,yBAAyB,CAAC,GACzE,KAAKrF,aAAaiF,YAAW,CAEjC,yCA5LW3G,EAAqB,sBAArBA,EAAqBgH,UAAA,CAAA,CAAA,eAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,yGAArBE,EAAAD,EAAAjH,KAAA,EAAAmH,GAAA,0BAAAF,EAAAlJ,oBAAA,kfAFA,CAAC,CAAEqJ,QAASC,GAA+BC,YAAaC,EAAkB,CAAE,CAAC,EAAAC,EAAA,EAAAC,mBAAAC,GAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,CAAA,iBAAA,QAAA,EAAA,CAAA,cAAA,GAAA,mBAAA,SAAA,EAAA,CAAA,cAAA,GAAA,mBAAA,SAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,OAAA,kBAAA,EAAA,CAAA,WAAA,QAAA,WAAA,QAAA,aAAA,WAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,oBAAA,KAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,EAAA,OAAA,iBAAA,EAAA,CAAA,EAAA,YAAA,YAAA,EAAA,CAAA,EAAA,0BAAA,EAAA,CAAA,WAAA,GAAA,WAAA,GAAA,OAAA,gBAAA,eAAA,MAAA,EAAA,gBAAA,SAAA,EAAA,CAAA,WAAA,GAAA,WAAA,GAAA,OAAA,eAAA,eAAA,MAAA,oCAAA,GAAA,EAAA,gBAAA,SAAA,EAAA,CAAA,aAAA,GAAA,EAAA,cAAA,SAAA,OAAA,EAAA,CAAA,WAAA,GAAA,OAAA,qBAAA,eAAA,MAAA,oCAAA,GAAA,EAAA,gBAAA,SAAA,EAAA,CAAA,EAAA,SAAA,oBAAA,EAAA,CAAA,EAAA,aAAA,iBAAA,CAAA,EAAAC,SAAA,SAAAd,EAAAC,EAAA,IAAAD,EAAA,WCxC1FrK,EAAA,EAAAoL,GAAA,EAAA,EAAA,eAAA,CAAA,EAAuD,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,EA6C3B,EAAAC,GAAA,GAAA,GAAA,cAAA,KAAA,EAAAD,EAAA,EASH,EAAAE,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAF,EAAA,EA4DK,EAAAG,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAH,EAAA,mBAlHfjL,EAAA,OAAAiK,EAAAvI,YAAA,EAAoB,WAAA2J,CAAA;qHD0C7B,IAAOvI,EAAPwI,SAAOxI,CAAqB,GAAA,EEhClC,IAAayI,IAAkB,IAAA,CAAzB,IAAOA,EAAP,MAAOA,CAAkB,yCAAlBA,EAAkB,uBAAlBA,CAAkB,CAAA,2BAHnBC,GAAcC,EAAmB,CAAA,CAAA,EAGvC,IAAOF,EAAPG,SAAOH,CAAkB,GAAA,ECMxB,IAAMI,GAAiB,CAC5BC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,EAAiB,EAUnB,IAAaC,IAAwB,IAAA,CAA/B,IAAOA,EAAP,MAAOA,CAAwB,yCAAxBA,EAAwB,uBAAxBA,CAAwB,CAAA,2BAH1BC,EAAc,CAAA,CAAA,EAGnB,IAAOD,EAAPE,SAAOF,CAAwB,GAAA,EC8DrC,IAAMG,GAAiB,CACrBC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GAAcC,SAAQ,EACtBC,GACAC,GACAC,GACAhB,GACAiB,EAA8B,EAkCnBC,IAAkB,IAAA,CAAzB,IAAOA,EAAP,MAAOA,CAAkB,yCAAlBA,EAAkB,uBAAlBA,CAAkB,CAAA,4BARlB,CACTC,GACAC,GACAC,GACAC,GACAC,EAAyB,EAC1BC,QAAA,CARY5C,GAAgB6C,GAAkCC,EAAiB,CAAA,CAAA,EAU5E,IAAOR,EAAPS,SAAOT,CAAkB,GAAA","names":["OwnerType","enumStringToValue","enumRef","value","CreateEmailBuilderTemplateRequest","_CreateEmailBuilderTemplateRequest","proto","m","OwnerType","TemplateReference","kwargs","toReturn","DeleteEmailBuilderTemplateRequest","_DeleteEmailBuilderTemplateRequest","EmailBuilderTemplate","_EmailBuilderTemplate","GetEmailBuilderTemplateRequest","_GetEmailBuilderTemplateRequest","GetEmailBuilderTemplateResponse","_GetEmailBuilderTemplateResponse","GetEmailBuilderTemplatesRequest","_GetEmailBuilderTemplatesRequest","GetEmailBuilderTemplatesResponse","_GetEmailBuilderTemplatesResponse","ListEmailBuilderTemplatesRequest","_ListEmailBuilderTemplatesRequest","PagedRequestOptions","ListEmailBuilderTemplatesResponse","_ListEmailBuilderTemplatesResponse","PagedResponseMetadata","_PagedRequestOptions","_PagedResponseMetadata","SearchEmailBuilderTemplatesRequest","_SearchEmailBuilderTemplatesRequest","SearchEmailBuilderTemplatesResponse","_SearchEmailBuilderTemplatesResponse","SuggestContentRequest","_SuggestContentRequest","SuggestContentResponse","_SuggestContentResponse","_TemplateReference","UpdateEmailBuilderTemplateRequest","_UpdateEmailBuilderTemplateRequest","environment","hostMap","HostService","t","ɵɵdefineInjectable","ContentGenerationApiService","http","hostService","HttpHeaders","r","request","map","resp","ɵɵinject","HttpClient","TemplatesApiService","__spreadProps","__spreadValues","AppNamespace","TemplatesService","api","ownerType","ownerId","appNamespace","templateId","templateDisplayName","templateJSON","templateHTML","templateSubject","parent","req","templateIds","searchTerm","cursor","pageSize","v","ContentGenerationService","prompt","DynamicComponentSelectorService","constructor","templatesService","appListingService","parentVariableCategories","hasComponentsToDisplay","length","getVariables","filters","listSubstitutionParameters","pipe","map","params","filterSubstitutionParameters","v","textKey","replacementTags","options","subItems","filter","p","some","t","replacementTag","sort","a","b","indexOf","getProductSubstitutionVariables","listAllActivatableApps","take","overrideParentVariableCategories","variableCategories","ɵɵinject","TemplatesService","EMAIL_BUILDER_APP_LISTING_SERVICE_TOKEN","factory","ɵfac","_DynamicComponentSelectorService","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","mainItem_r4","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","textKey","subParam_r6","displayName","ɵɵelementContainerStart","ɵɵtwoWayListener","$event","ɵɵrestoreView","_r5","ctx_r2","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","chosenParam","ɵɵresetView","ɵɵlistener","handleParamChange","ɵɵtemplate","DynamicComponentDialogComponent_ng_container_4_ng_container_8_mat_option_7_Template","chosenCategory","ɵɵtwoWayProperty","subItems","v_r8","value","title","_r7","chosenParamDetails","DynamicComponentDialogComponent_ng_container_4_ng_container_9_ng_container_1_mat_option_7_Template","dynamicValues_r9","ɵɵelement","DynamicComponentDialogComponent_ng_container_4_ng_container_9_ng_container_1_Template","DynamicComponentDialogComponent_ng_container_4_ng_container_9_ng_template_3_Template","ɵɵtemplateRefExtractor","chosenDynamicParam$","loading_r10","_r2","handleCategoryChange","DynamicComponentDialogComponent_ng_container_4_mat_option_7_Template","DynamicComponentDialogComponent_ng_container_4_ng_container_8_Template","DynamicComponentDialogComponent_ng_container_4_ng_container_9_Template","ɵɵtextInterpolate","variables_r11","options","nestedDynamicSelector","DynamicComponentDialogComponent","constructor","dynamicComponentSelectorService","dialogRef","formResult","EventEmitter","allowedEntryApps","variables$","getVariables","includeHtml","pipe","map","vars","filter","v","requiredParams","reduce","prev","curr","i","arr","shareReplay","chosenDynamicParam$$","ReplaySubject","ngOnInit","asObservable","switchMap","chosenDynamicParam","getProductSubstitutionVariables","apps","a","includes","appId","app","name","replacementTag","next","add","close","ɵɵdirectiveInject","DynamicComponentSelectorService","MatDialogRef","selectors","outputs","decls","consts","template","rf","ctx","DynamicComponentDialogComponent_ng_container_4_Template","_r1","DynamicComponentDialogComponent_ng_template_14_Template","empty_r12","_DynamicComponentDialogComponent","AuthInterceptor","constructor","inj","intercept","req","next","withCredentials","get","SessionService","getSessionId","pipe","first","switchMap","sessionId","handle","clone","headers","set","ɵɵinject","Injector","factory","ɵfac","_AuthInterceptor","CoreModule","provide","HTTP_INTERCEPTORS","useClass","AuthInterceptor","multi","_CoreModule","ɵɵelementContainerStart","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","tinyMCEHyperlinkTextColour","RichTextEditorComponent","constructor","class","menubar","menu","toolbar","plugins","height","showUploadTab","valueChange","EventEmitter","statusChange","editorIsReady","subscriptions","value","_value","ngAfterViewInit","push","subscribe","isValid","Validator","containsValidDynamicContent","emit","window","setTimeout","setupEditor","ngOnDestroy","tinymce","remove","editor","forEach","subscription","unsubscribe","onEditorChange","newContent","getContent","reloadEditor","console","log","insertAtCursor","text","insertContent","focus","richEditorDiv","nativeElement","baseURL","init","browser_spellcheck","content_style","target","readonly","disabled","width","convert_urls","allow_conditional_comments","valid_children","invalid_elements","invalidElements","branding","setup","on","setContent","updateHandler","images_upload_handler","blobInfo","success","failure","images_upload_url","init_instance_callback","selectors","viewQuery","rf","ctx","ɵɵclassMap","ɵɵtemplate","RichTextEditorComponent_ng_container_2_Template","ɵɵadvance","ɵɵproperty","_RichTextEditorComponent","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","openDialog","ɵɵtext","ɵɵelementEnd","ɵɵproperty","ɵɵpipeBind1","DynamicComponentSelectorComponent","constructor","dialog","variableService","modelChange","EventEmitter","variablesReady","hasComponentsToDisplay","open","DynamicComponentDialogComponent","width","height","afterClosed","pipe","take","subscribe","res","selectVariable","replacementTag","richTextEditorRef","insertAtCursor","window","setTimeout","focus","startPos","target","selectionStart","endPos","selectionEnd","contentBefore","value","substr","contentAfter","length","newValue","emit","setSelectionRange","ɵɵdirectiveInject","MatDialog","DynamicComponentSelectorService","selectors","inputs","marketId","model","outputs","decls","vars","consts","template","rf","ctx","ɵɵtemplate","DynamicComponentSelectorComponent_mat_icon_0_Template","_DynamicComponentSelectorComponent","DynamicComponentSelectorModule","DynamicComponentSelectorService","imports","CommonModule","GalaxyTooltipModule","GalaxyWrapModule","MatFormFieldModule","MatButtonModule","MatDialogModule","MatInputModule","MatListModule","MatIconModule","MatTooltipModule","MatCardModule","MatOptionModule","TranslateModule","MatSelectModule","GalaxyEmptyStateModule","EmailUII18nModule","_DynamicComponentSelectorModule","jsonCopy","input","JSON","parse","stringify","SENDER_INJECTION_TOKEN","InjectionToken","buildSenderData","partnerID$","inject","optional","accountGroup$","accountGroupID$","pipe","map","agid","type","SenderType","SENDER_TYPE_BUSINESS","id","accountGroupId","pid","SENDER_TYPE_PARTNER","Error","AfterBlockDragService","constructor","dragHappenedEmitter$","EventEmitter","dragHappened","emit","factory","ɵfac","providedIn","_AfterBlockDragService","EmailPreviewRefreshService","constructor","unthrottledRefreshEmitter$","EventEmitter","refreshEmitter$","refreshStartedEmitter$","subscriptions","push","pipe","throttleTime","asyncScheduler","trailing","delay","subscribe","emit","leading","ngOnDestroy","forEach","sub","unsubscribe","refresh","factory","ɵfac","providedIn","_EmailPreviewRefreshService","blankContentListItem","type","renderType","showPadding","padding","top","bottom","collapsed","defaultBlockChoices","id","name","icon","dividerAfter","OptionalBlockTypeID","optionalBlockTypesMap","Map","REVIEW_REQUEST_LINKS","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","blankButtonBlock","buttonText","buttonStyle","link","buttonColor","showBackupLink","ButtonBlockComponent","constructor","emailPreview","class","isBlockValid","EventEmitter","urlMailtoOrDynamicContentRegex","Validator","URL_MAILTO_OR_DYNAMIC_CONTENT_REGEX","hexColorRegex","HEX_COLOR_REGEX","subscriptions","ngAfterViewInit","push","blockInputs","statusChanges","subscribe","status","emit","valueChanges","refresh","ngOnDestroy","forEach","sub","unsubscribe","ɵɵdirectiveInject","EmailPreviewRefreshService","selectors","viewQuery","rf","ctx","ɵɵclassMap","ɵɵtwoWayListener","$event","i0","ɵɵrestoreView","_r1","ɵɵtwoWayBindingSet","content","ɵɵresetView","ɵɵtemplate","ButtonBlockComponent_glxy_error_11_Template","ButtonBlockComponent_glxy_error_28_Template","ButtonBlockComponent_glxy_error_37_Template","ɵɵtextInterpolate","ɵɵpropertyInterpolate","ɵɵtwoWayProperty","ɵɵproperty","buttonText_r2","buttonTextModel_r3","hasError","touched","buttonColor_r4","linkUrl_r6","linkModel_r5","_ButtonBlockComponent","ɵɵelementContainerStart","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵlistener","ɵɵrestoreView","_r2","ctx_r2","ɵɵnextContext","ɵɵresetView","clearImage","ɵɵtwoWayListener","$event","i0","ɵɵtwoWayBindingSet","content","size","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵproperty","contactPhoto","FileUploadStatus","Queued","ɵɵtwoWayProperty","ɵɵsanitizeUrl","ɵɵtextInterpolate1","_r4","setImage","alertFileErrored","i_r6","_r5","index","additionalInfo","removeAdditionalItem","ɵɵtemplate","ContactCardComponent_ng_container_29_div_12_Template","ɵɵpropertyInterpolate","ɵɵpropertyInterpolate1","additionalInfo_r7","additionalInfoModel_r8","hasError","touched","blankContactCardBlock","contactName","jobTitle","ContactCardComponent","constructor","emailPreview","alerts","class","isBlockValid","EventEmitter","subscriptions","ngAfterViewInit","push","blockInputs","form","valueChanges","subscribe","refresh","statusChanges","status","emit","ngOnDestroy","forEach","sub","unsubscribe","fixFieldLosingFocusWhenTyping","item","file","url","console","error","openErrorSnack","addAdditionalItem","splice","ɵɵdirectiveInject","EmailPreviewRefreshService","SnackbarService","selectors","viewQuery","rf","ctx","ɵɵclassMap","ContactCardComponent_ng_container_2_Template","ContactCardComponent_ng_template_3_Template","ɵɵtemplateRefExtractor","_r1","ContactCardComponent_glxy_error_14_Template","ContactCardComponent_glxy_error_24_Template","ContactCardComponent_ng_container_29_Template","NoImage_r9","name_r10","nameModel_r11","jobTitle_r12","jobTitleModel_r13","_ContactCardComponent","HoldShiftToChangeNumberFieldByTenDirective","onShiftDown","event","key","shiftKey","checkShift","onShiftUp","constructor","el","nativeElement","step","ɵɵdirectiveInject","ElementRef","selectors","hostBindings","rf","ctx","ɵɵlistener","$event","_HoldShiftToChangeNumberFieldByTenDirective","blankDividerBlock","dividerColor","dividerHeight","DividerBlockComponent","constructor","emailPreview","class","subscriptions","ngAfterViewInit","push","blockInputs","form","valueChanges","subscribe","refresh","ngOnDestroy","forEach","sub","unsubscribe","ɵɵdirectiveInject","EmailPreviewRefreshService","selectors","viewQuery","rf","ctx","ɵɵclassMap","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵtwoWayListener","$event","i0","ɵɵrestoreView","_r1","ɵɵtwoWayBindingSet","content","ɵɵresetView","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵpropertyInterpolate","ɵɵtwoWayProperty","_DividerBlockComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","blankHeadingBlock","title","subtitle","textAlign","HeadingBlockComponent","constructor","emailPreview","class","isBlockValid","EventEmitter","subscriptions","ngAfterViewInit","push","blockInputs","form","valueChanges","subscribe","refresh","statusChanges","status","emit","ngOnDestroy","forEach","sub","unsubscribe","ɵɵdirectiveInject","EmailPreviewRefreshService","selectors","viewQuery","rf","ctx","ɵɵclassMap","ɵɵtwoWayListener","$event","i0","ɵɵrestoreView","_r1","ɵɵtwoWayBindingSet","content","ɵɵresetView","ɵɵtemplate","HeadingBlockComponent_glxy_error_11_Template","HeadingBlockComponent_glxy_error_21_Template","ɵɵtextInterpolate","ɵɵpropertyInterpolate","ɵɵtwoWayProperty","ɵɵproperty","title_r2","titleModel_r3","hasError","touched","subtitle_r4","subtitleModel_r5","_HeadingBlockComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","blankHtmlBlock","rawHtml","HtmlBlockComponent","constructor","emailPreview","class","isBlockValid","EventEmitter","subscriptions","ngAfterViewInit","push","blockInputs","form","valueChanges","subscribe","refresh","statusChanges","status","emit","ngOnDestroy","forEach","sub","unsubscribe","ɵɵdirectiveInject","EmailPreviewRefreshService","selectors","viewQuery","rf","ctx","ɵɵclassMap","ɵɵtwoWayListener","$event","i0","ɵɵrestoreView","_r1","ɵɵtwoWayBindingSet","content","ɵɵresetView","ɵɵtemplate","HtmlBlockComponent_glxy_error_8_Template","ɵɵtextInterpolate","ɵɵtwoWayProperty","ɵɵproperty","htmlModel_r2","hasError","touched","_HtmlBlockComponent","en_devel_default","ContentGenerationI18nModule","TranslateModule","LexiconModule","forChild","componentName","baseTranslation","En","_ContentGenerationI18nModule","PostStatusV2","PostTypeV2","YoutubeCustomizationV2PrivacyStatusV2","enumStringToValue$4","enumRef","value","LinkV2","_LinkV2","proto","m","kwargs","toReturn","MetadataV2","_MetadataV2","PostActionV2","_PostActionV2","PostContentV2","_PostContentV2","PostMediaV2","PostCustomizationV2","_PostCustomizationV2","PostEventV2","_PostEventV2","_PostMediaV2","SocialPostV2","_SocialPostV2","PostTypeV2","YoutubeCustomizationV2","TikTokCustomizationV2","_TikTokCustomizationV2","_YoutubeCustomizationV2","YoutubeCustomizationV2PrivacyStatusV2","enumStringToValue$1","enumRef","value","CreateImageRequest","_CreateImageRequest","proto","m","MetadataV2","kwargs","toReturn","CreateImageResponse","_CreateImageResponse","ImageCreated","ImageBlob","_ImageBlob","proto","m","kwargs","toReturn","ImageCreated","_ImageCreated","ImageUrl","_ImageUrl","RepostSocialPostRequest","_RepostSocialPostRequest","proto","m","kwargs","toReturn","SocialPostOutput","_SocialPostOutput","SocialPostV2","MetadataV2","enumStringToValue$1","PostStatusV2","SocialPostRequest","_SocialPostRequest","SocialPostResponse","_SocialPostResponse","UpdateSocialPostRequest","_UpdateSocialPostRequest","proto","m","SocialPostV2","MetadataV2","kwargs","toReturn","UpdateSocialPostResponse","_UpdateSocialPostResponse","environment","hostMap","HostService","t","ɵɵdefineInjectable","SocialPostsV2ApiService","http","hostService","HttpHeaders","r","request","SocialPostRequest","map","resp","SocialPostResponse","UpdateSocialPostRequest","UpdateSocialPostResponse","CreateImageRequest","CreateImageResponse","ImageUrl","ImageBlob","RepostSocialPostRequest","__spreadProps","__spreadValues","t","ɵɵinject","HttpClient","HostService","ɵɵdefineInjectable","SocialPostsV2Service","socialpostV2ApiService","socialPost","image","url","urlRequest","ImageUrl","socialPostId","businessId","repostRequest","RepostSocialPostRequest","t","ɵɵinject","SocialPostsV2ApiService","ɵɵdefineInjectable","ImageGenerationService","constructor","imageCreationService","createSuggestedImages","prompt","size","imageAmount","businessId","imageRequest","model","createImage","getImageAsFile","url","fileName","getImageByUrl","pipe","map","resp","blob","slice","switchMap","file64","toBlob","blobResponse","d","Date","File","type","lastModified","valueOf","file","from","fetch","then","res","suggestImagesWithUrls","generatedImages","imgs","ɵɵinject","SocialPostsV2Service","factory","ɵfac","_ImageGenerationService","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵelementContainerStart","ɵɵlistener","ctx_r2","ɵɵrestoreView","_r2","img_r4","$implicit","i_r5","index","ctx_r5","ɵɵnextContext","ɵɵresetView","selectImage","ɵɵtemplate","ImageGenerationDialogComponent_ng_container_19_mat_icon_2_Template","ImageGenerationDialogComponent_ng_container_19_mat_icon_3_Template","ɵɵelement","ɵɵadvance","ɵɵproperty","ɵɵpureFunction1","_c1","selectedIndex","ɵɵpropertyInterpolate","ɵɵsanitizeUrl","_r7","addPhoto","ɵɵpipeBind1","loadingImages$","ImageGenerationDialogComponent","constructor","dialogRef","posthogService","snackbarService","imageGenerationService","loadingImages$$","BehaviorSubject","loadingSelectedImage$$","asObservable","loadingSelectedImage$","generatedImage$$","generatedImages$","pipe","share","filter","a","scan","acc","curr","map","arr","slice","promptText","selectedImage","suggestImages","prompt","trackEvent","next","suggestImagesWithUrls","results","catchError","err","openErrorSnack","tap","subscribe","img","getValue","useSelectedImage","getImageAsFile","take","close","closeDialog","ɵɵdirectiveInject","MatDialogRef","ProductAnalyticsService","SnackbarService","ImageGenerationService","selectors","viewQuery","rf","ctx","MatInputModule","ɵɵStandaloneFeature","decls","vars","consts","template","ɵɵtwoWayListener","$event","i0","_r1","ɵɵtwoWayBindingSet","ImageGenerationDialogComponent_ng_container_19_Template","ImageGenerationDialogComponent_button_21_Template","ɵɵtextInterpolate1","ɵɵtwoWayProperty","tmp_9_0","length","CommonModule","NgClass","NgForOf","NgIf","AsyncPipe","MatCardModule","MatIconModule","MatIcon","MatListModule","MatDividerModule","MatButtonModule","MatButton","MatTooltipModule","MatMenuModule","VaStencilsModule","GalaxyEmptyStateModule","TranslateModule","TranslatePipe","AsyncUiModule","VaBadgeModule","MatDialogModule","MatDialogTitle","MatDialogActions","MatDialogContent","FormsModule","DefaultValueAccessor","NgControlStatus","MaxLengthValidator","NgModel","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","GalaxyButtonLoadingIndicatorModule","ButtonLoadingIndicatorComponent","MatInput","ContentGenerationI18nModule","MatRadioModule","styles","_ImageGenerationDialogComponent","EMAILBUILDER_UPLOADER_SERVICE_TOKEN","InjectionToken","ImageUploadService","GalaxyImageUploaderService","constructor","http","env","sender$","uploaderService","dialog","Error","buildRequest","fileInfo","uploadUrl","getEnvironment","Environment","PROD","pipe","map","sender","HttpParams","set","type","id","switchMap","params","take","generateAndUploadImages","__async","open","ImageGenerationDialogComponent","width","height","afterClosed","toPromise","then","file","imageToUpload","context","uuid","uuidv4","name","resp","data","url","ɵɵinject","HttpClient","EnvironmentService","SENDER_INJECTION_TOKEN","MatDialog","factory","ɵfac","_ImageUploadService","ɵɵelementContainerStart","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate3","ɵɵpipeBind1","ctx_r1","content","layout","ɵɵproperty","ɵɵlistener","ɵɵrestoreView","_r5","item_r6","ɵɵnextContext","$implicit","ɵɵresetView","collapsed","ɵɵtextInterpolate","_r7","ɵɵelement","ɵɵstyleProp","imageUrl","heading","ɵɵtextInterpolate2","subheading","body","_r8","ɵɵpropertyInterpolate1","_r9","_r11","i_r4","index","clearImage","ɵɵsanitizeUrl","ɵɵtextInterpolate1","$event","_r12","setImage","alertFileErrored","openSuggestImageDialog","ɵɵtwoWayListener","_r13","i0","ɵɵtwoWayBindingSet","linkText","ɵɵtemplate","ImageAndTextBlockComponent_ng_container_21_ng_container_71_ng_container_36_glxy_error_8_Template","ɵɵpropertyInterpolate","ɵɵtwoWayProperty","linkText_r14","hasError","touched","ImageAndTextBlockComponent_ng_container_21_ng_container_71_ng_container_2_Template","ImageAndTextBlockComponent_ng_container_21_ng_container_71_ng_template_3_Template","ɵɵtemplateRefExtractor","_r10","ImageAndTextBlockComponent_ng_container_21_ng_container_71_glxy_error_12_Template","ImageAndTextBlockComponent_ng_container_21_ng_container_71_glxy_error_20_Template","ImageAndTextBlockComponent_ng_container_21_ng_container_71_glxy_error_28_Template","linkUrl","ImageAndTextBlockComponent_ng_container_21_ng_container_71_glxy_error_35_Template","ImageAndTextBlockComponent_ng_container_21_ng_container_71_ng_container_36_Template","NoImage_r16","heading_r17","subheading_r18","body_r19","urlMailtoOrDynamicContentRegex","linkUrl_r20","_r3","addNewAbove","duplicateItem","ImageAndTextBlockComponent_ng_container_21_ng_container_14_Template","ImageAndTextBlockComponent_ng_container_21_ng_container_15_Template","removeItem","moveBlockToTop","moveBlock","moveBlockToBottom","ImageAndTextBlockComponent_ng_container_21_ng_container_59_Template","ImageAndTextBlockComponent_ng_container_21_ng_container_61_Template","ImageAndTextBlockComponent_ng_container_21_ng_container_62_Template","ImageAndTextBlockComponent_ng_container_21_div_70_Template","ImageAndTextBlockComponent_ng_container_21_ng_container_71_Template","blockOrderMenu_r24","first_r21","last_r22","ɵɵclassProp","menu_r23","blankImageAndTextBlock","paddingBetween","items","blankImageAndTextItem","ImageAndTextBlockComponent","constructor","emailPreview","alerts","imageUploadService","class","isBlockValid","EventEmitter","Validator","URL_MAILTO_OR_DYNAMIC_CONTENT_REGEX","FileUploadStatus","subscriptions","ngAfterViewInit","push","blockInputs","statusChanges","subscribe","status","emit","valueChanges","refresh","ngOnDestroy","forEach","sub","unsubscribe","fixFieldLosingFocusWhenTyping","item","drop","event","moveItemInArray","previousIndex","currentIndex","addItem","jsonCopy","splice","delta","newIndex","length","file","arrayId","url","console","error","openErrorSnack","__async","generateAndUploadImages","then","selectedImage","pipe","take","map","img","ɵɵdirectiveInject","EmailPreviewRefreshService","SnackbarService","ImageUploadService","selectors","viewQuery","rf","ctx","ɵɵclassMap","_r1","ImageAndTextBlockComponent_ng_container_20_Template","ImageAndTextBlockComponent_ng_container_21_Template","_ImageAndTextBlockComponent","ɵɵelementContainerStart","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵlistener","ɵɵrestoreView","_r2","ctx_r2","ɵɵnextContext","ɵɵresetView","clearImage","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵproperty","content","url","FileUploadStatus","Queued","ɵɵsanitizeUrl","ɵɵtextInterpolate1","_r4","openSuggestImageDialog","ɵɵelement","$event","setImage","alertFileErrored","ɵɵtwoWayListener","_r5","i0","ɵɵtwoWayBindingSet","maxWidth","ɵɵpropertyInterpolate","ɵɵtwoWayProperty","blankImageBlock","altText","imageStyle","link","ImageBlockComponent","constructor","emailPreview","alerts","imageUploadService","class","isBlockValid","EventEmitter","urlMailtoOrDynamicContentRegex","Validator","URL_MAILTO_OR_DYNAMIC_CONTENT_REGEX","subscriptions","ngAfterViewInit","push","blockInputs","statusChanges","subscribe","status","emit","valueChanges","refresh","ngOnDestroy","forEach","sub","unsubscribe","file","console","error","openErrorSnack","__async","generateAndUploadImages","then","selectedImage","pipe","take","map","img","ɵɵdirectiveInject","EmailPreviewRefreshService","SnackbarService","ImageUploadService","selectors","viewQuery","rf","ctx","ɵɵclassMap","ɵɵtemplate","ImageBlockComponent_ng_container_2_Template","ImageBlockComponent_ng_template_3_Template","ɵɵtemplateRefExtractor","_r1","ImageBlockComponent_ng_container_23_Template","ImageBlockComponent_glxy_error_32_Template","NoImage_r6","link_r8","linkUrl_r7","hasError","touched","_ImageBlockComponent","ɵɵelementContainerStart","ɵɵelementStart","ɵɵlistener","$event","source_r2","ɵɵrestoreView","_r1","$implicit","ctx_r2","ɵɵnextContext","ɵɵresetView","valueChange","sourceId","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","isSourceSelected","ɵɵtextInterpolate1","ɵɵpipeBind1","name","SuggestedReviewSources","Map","defaultSources","get","blankReviewRequestLinksBlock","sources","rawHtml","getRawHtml","map","source","join","ReviewRequestLinksBlockComponent","constructor","emailPreview","class","reviewSources","values","subscriptions","ngAfterViewInit","push","blockInputs","form","valueChanges","subscribe","refresh","ngOnDestroy","forEach","sub","unsubscribe","content","find","x","checked","filter","ɵɵdirectiveInject","EmailPreviewRefreshService","selectors","viewQuery","rf","ctx","ɵɵclassMap","ɵɵtemplate","ReviewRequestLinksBlockComponent_ng_container_3_Template","MatCheckboxModule","MatCheckbox","TranslateModule","TranslatePipe","GalaxyFormFieldModule","FormFieldComponent","FormsModule","ɵNgNoValidate","NgControlStatusGroup","NgForm","CommonModule","NgForOf","styles","_ReviewRequestLinksBlockComponent","PROMPT_BUILDER_INJECTION_TOKEN","InjectionToken","DefaultPromptBuilder","build","prompt","SuggestContentComponent","constructor","contentGenerationService","dialogRef","posthogService","promptBuilder","snackbarService","loading$$","BehaviorSubject","loading$","asObservable","promptText","contentText","subscriptions","suggestMessage","trackEvent","promptTemplate","next","push","suggestContent","subscribe","suggestedContent","error","openErrorSnack","useSuggestedMessage","content","close","formatContent","replace","ngOnDestroy","forEach","sub","unsubscribe","closeDialog","ɵɵdirectiveInject","ContentGenerationService","MatDialogRef","ProductAnalyticsService","SnackbarService","selectors","viewQuery","rf","ctx","MatInputModule","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵtwoWayListener","$event","i0","ɵɵrestoreView","_r1","ɵɵtwoWayBindingSet","ɵɵresetView","ɵɵlistener","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵpropertyInterpolate","ɵɵtwoWayProperty","ɵɵproperty","_SuggestContentComponent","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r2","ctx_r2","ɵɵnextContext","ɵɵresetView","openSuggestAIContentDialog","ɵɵelement","ɵɵelementEnd","ɵɵproperty","ɵɵpipeBind1","ɵɵtext","ɵɵadvance","ɵɵtextInterpolate1","blankRichTextBlock","rawHtml","RichTextBlockComponent","constructor","emailPreview","afterBlockDrag","zone","dialog","posthogService","_","viewContainerRef","class","isBlockValid","EventEmitter","isValid$","asObservable","subscriptions","ngOnInit","_rawHTML","content","push","dragHappenedEmitter$","subscribe","whileDragging","ngOnDestroy","forEach","sub","unsubscribe","updateText","run","refresh","updateStatus","event","emit","richTextEditor","reloadEditor","__async","trackEvent","dialogRef","open","SuggestContentComponent","width","height","firstValueFrom","afterClosed","insertAtCursor","ɵɵdirectiveInject","EmailPreviewRefreshService","AfterBlockDragService","NgZone","MatDialog","ProductAnalyticsService","GalaxyAiIconService","ViewContainerRef","selectors","viewQuery","rf","ctx","ɵɵclassMap","ɵɵtemplate","RichTextBlockComponent_button_6_Template","ɵɵtwoWayListener","$event","i0","_r1","ɵɵtwoWayBindingSet","RichTextBlockComponent_glxy_error_10_Template","contentGenerationEnabled","richTextEditor_r4","ɵɵtwoWayProperty","_RichTextBlockComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵelementContainerStart","ɵɵelement","ɵɵtwoWayListener","$event","i_r3","ɵɵrestoreView","_r2","index","ctx_r3","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","content","tableData","label","ɵɵresetView","value","ɵɵlistener","removeRow","ɵɵtemplate","SimpleTableBlockComponent_ng_container_6_glxy_error_20_Template","ɵɵpropertyInterpolate","ɵɵpropertyInterpolate1","ɵɵtwoWayProperty","ɵɵproperty","label_r5","value_r7","labelModel_r6","hasError","touched","valueModel_r8","blankSimpleTableBlock","SimpleTableBlockComponent","constructor","emailPreview","class","isBlockValid","EventEmitter","subscriptions","ngAfterViewInit","push","blockInputs","form","valueChanges","subscribe","refresh","statusChanges","status","emit","ngOnDestroy","forEach","sub","unsubscribe","fixFieldLosingFocusWhenTyping","item","addRow","splice","length","ɵɵdirectiveInject","EmailPreviewRefreshService","selectors","viewQuery","rf","ctx","ɵɵclassMap","SimpleTableBlockComponent_ng_container_6_Template","_r1","ɵɵtextInterpolate","_SimpleTableBlockComponent","blankSpacerBlock","spacerHeight","SpacerBlockComponent","constructor","emailPreview","class","subscriptions","ngAfterViewInit","push","blockInputs","form","valueChanges","subscribe","refresh","ngOnDestroy","forEach","sub","unsubscribe","ɵɵdirectiveInject","EmailPreviewRefreshService","selectors","viewQuery","rf","ctx","ɵɵclassMap","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵtwoWayListener","$event","i0","ɵɵrestoreView","_r1","ɵɵtwoWayBindingSet","content","ɵɵresetView","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵtwoWayProperty","_SpacerBlockComponent","FeatureFlagEnabledService","constructor","sender$","featureFlagService","isEnabled","featureFlagIds","flagEnabled$","of","pipe","switchMap","sender","type","SenderType","SENDER_TYPE_PARTNER","batchGetStatus","id","map","featureFlagStatus","shareReplay","ɵɵinject","SENDER_INJECTION_TOKEN","FeatureFlagService","factory","ɵfac","providedIn","_FeatureFlagEnabledService","EmailBlockPaddingComponent","constructor","emailPreview","class","ngAfterViewInit","paddingForm","form","valueChanges","subscribe","refresh","ɵɵdirectiveInject","EmailPreviewRefreshService","selectors","viewQuery","rf","ctx","ɵɵclassMap","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵtwoWayListener","$event","i0","ɵɵrestoreView","_r1","ɵɵtwoWayBindingSet","padding","top","ɵɵresetView","bottom","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵpropertyInterpolate","ɵɵtwoWayProperty","_EmailBlockPaddingComponent","ɵɵelementContainerStart","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵelement","ɵɵlistener","ɵɵrestoreView","_r5","block_r6","ɵɵnextContext","$implicit","ɵɵresetView","collapsed","ɵɵpropertyInterpolate1","_r7","$event","_r8","ctx_r3","toggleAllBlocks","_r9","_r10","index_r3","index","handleBlockValidityEvent","ɵɵproperty","content","_r11","_r12","contentGenerationEnabled$","_r13","_r14","_r15","_r16","_r17","ɵɵtemplate","EmailBlocksListComponent_ng_container_2_ng_container_50_ng_container_7_ng_container_3_Template","ɵɵtextInterpolate2","padding","top","bottom","EmailBlocksListComponent_ng_container_2_ng_container_50_ng_container_9_ng_container_1_Template","paddingBetween","_r19","refreshPreview","ɵɵtwoWayListener","i0","ɵɵtwoWayBindingSet","ɵɵpropertyInterpolate","ɵɵtwoWayProperty","_r18","showPadding","EmailBlocksListComponent_ng_container_2_ng_container_50_ng_container_7_Template","EmailBlocksListComponent_ng_container_2_ng_container_50_ng_container_8_Template","EmailBlocksListComponent_ng_container_2_ng_container_50_ng_container_9_Template","EmailBlocksListComponent_ng_container_2_ng_container_50_ng_container_11_Template","type","_r20","_r21","EmailBlocksListComponent_ng_container_2_div_2_Template","_r2","moveBlock","EmailBlocksListComponent_ng_container_2_ng_container_15_Template","EmailBlocksListComponent_ng_container_2_mat_icon_16_Template","EmailBlocksListComponent_ng_container_2_ng_container_18_Template","EmailBlocksListComponent_ng_container_2_ng_container_19_Template","EmailBlocksListComponent_ng_container_2_ng_container_29_Template","EmailBlocksListComponent_ng_container_2_mat_icon_30_Template","EmailBlocksListComponent_ng_container_2_ng_container_32_Template","EmailBlocksListComponent_ng_container_2_ng_container_33_Template","EmailBlocksListComponent_ng_container_2_ng_container_39_Template","EmailBlocksListComponent_ng_container_2_ng_container_40_Template","EmailBlocksListComponent_ng_container_2_ng_container_41_Template","EmailBlocksListComponent_ng_container_2_ng_container_42_Template","EmailBlocksListComponent_ng_container_2_ng_container_43_Template","EmailBlocksListComponent_ng_container_2_ng_container_44_Template","EmailBlocksListComponent_ng_container_2_ng_container_45_Template","EmailBlocksListComponent_ng_container_2_ng_container_46_Template","EmailBlocksListComponent_ng_container_2_ng_container_47_Template","EmailBlocksListComponent_ng_container_2_ng_container_48_Template","EmailBlocksListComponent_ng_container_2_ng_container_49_Template","EmailBlocksListComponent_ng_container_2_ng_container_50_Template","duplicateBlock","EmailBlocksListComponent_ng_container_2_ng_container_66_Template","EmailBlocksListComponent_ng_container_2_ng_container_67_Template","deleteBlock","moveBlockToTop","moveBlockToBottom","ɵɵclassMapInterpolate1","ɵɵclassProp","first_r22","last_r23","ɵɵtextInterpolate1","checkName","valid","menu_r24","OptionalBlockTypeID","REVIEW_REQUEST_LINKS","addNewBlockMenu_r26","ɵɵpureFunction1","_c1","blockOrderMenu_r25","buttonRecipesMenu_r30","index_r29","_r27","item_r28","addNewBlock","id","renderType","EmailBlocksListComponent_ng_template_20_ng_container_0_ng_container_1_ng_container_9_Template","icon","buttonRecipes","length","EmailBlocksListComponent_ng_template_20_ng_container_0_ng_container_1_Template","EmailBlocksListComponent_ng_template_20_ng_container_0_ng_container_2_Template","dividerAfter","last_r31","EmailBlocksListComponent_ng_template_20_ng_container_0_Template","blockNamesAndIcons","_r32","openSuggestContentDialog","recipe_r33","name","_r34","openSuggestImageDialog","EmailBlocksListComponent_ng_template_23_ng_container_0_ng_container_1_Template","EmailBlocksListComponent_ng_template_23_ng_container_0_ng_container_2_Template","EmailBlocksListComponent_ng_template_23_ng_container_0_Template","suggestContentRecipes","_r35","index_r36","openProductDialog","recipe_r37","source","_r38","addRecipe","EmailBlocksListComponent_ng_template_26_ng_container_0_ng_container_1_Template","EmailBlocksListComponent_ng_template_26_ng_container_0_ng_container_2_Template","EmailBlocksListComponent_ng_template_26_ng_container_0_Template","product_r40","_r39","data_r41","productButtonRecipe","appId","EmailBlocksListComponent_ng_template_27_mat_option_7_Template","productSearchControl","auto_r42","filteredProductList$","EMAIL_BUILDER_ENABLED_RECIPES","InjectionToken","block","buttonText","link","buttonStyle","buttonColor","showBackupLink","contentPlaceholder","meetingSchedulerButtonRecipe","suggestTextContentRecipe","suggestImageContentRecipe","EmailBlocksListComponent","optionalBlockTypes","value","optionalBlockNamesAndIcons","map","c","optionalBlockTypesMap","get","filter","concat","constructor","emailPreview","afterBlockDrag","dialog","enabledRecipes","appListingService","posthogService","_","viewContainerRef","imageUploadService","class","defaultBlockChoices","UntypedFormControl","ngOnInit","forEach","recipeID","push","find","products$","listAllActivatableApps","of","r","valueChanges","pipe","startWith","switchMap","_filter","event","blocks","draggingEvents","window","setTimeout","dragHappened","input","listOfNames","found","item","refresh","altKey","dropBlock","moveItemInArray","previousIndex","currentIndex","delta","inputArray","newIndex","splice","blockToDuplicate","jsonCopy","newBlockType","__async","newBlockObject","blankContentListItem","blankImageBlock","blankRichTextBlock","blankHeadingBlock","blankButtonBlock","blankImageAndTextBlock","blankSimpleTableBlock","blankContactCardBlock","blankDividerBlock","blankSpacerBlock","blankHtmlBlock","blankReviewRequestLinksBlock","console","error","recipe","contentToReplacePlaceholder","newContent","replace","url","imageStyle","rawHtml","data","open","productList","width","trackEvent","dialogRef","SuggestContentComponent","height","text","firstValueFrom","afterClosed","generateAndUploadImages","then","selectedImage","take","img","subscribe","searchValue","filterValue","toLowerCase","products","option","includes","ɵɵdirectiveInject","EmailPreviewRefreshService","AfterBlockDragService","MatDialog","EMAIL_BUILDER_APP_LISTING_SERVICE_TOKEN","ProductAnalyticsService","GalaxyAiIconService","ViewContainerRef","ImageUploadService","selectors","viewQuery","rf","ctx","ɵɵclassMap","provide","useFactory","flagEnabledService","isEnabled","deps","FeatureFlagEnabledService","decls","vars","consts","template","_r1","EmailBlocksListComponent_ng_container_1_Template","EmailBlocksListComponent_ng_container_2_Template","EmailBlocksListComponent_ng_template_20_Template","EmailBlocksListComponent_ng_template_23_Template","EmailBlocksListComponent_ng_template_26_Template","EmailBlocksListComponent_ng_template_27_Template","ɵɵtemplateRefExtractor","suggestContentMenu_r43","_EmailBlocksListComponent","UnsavedChangesDialogComponent","constructor","ref","close","result","ɵɵdirectiveInject","MatDialogRef","selectors","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵlistener","navigateAwayAndDiscard","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","CommonModule","TranslateModule","TranslatePipe","MatDialogModule","MatDialogTitle","MatDialogActions","MatDialogContent","MatButtonModule","MatButton","styles","_UnsavedChangesDialogComponent","HasUnsavedChangesGuard","constructor","translateService","dialog","canNavigateAway","attemptedNavWhileUnsaved$","EventEmitter","window","addEventListener","event","returnValue","instant","canDeactivate","emit","ngOnDestroy","removeEventListener","markAsUnsaved","markAsSaved","showUnsavedChangesDialog","open","UnsavedChangesDialogComponent","ɵɵinject","TranslateService","MatDialog","factory","ɵfac","providedIn","_HasUnsavedChangesGuard","TEMPLATE_RENDERING_SERVER_DEMO","TEMPLATE_RENDERING_SERVER_PROD","PreviewRenderingService","constructor","httpClient","templates","envService","locale","undefined","templateRenderingServiceURL","getEnvironment","Environment","PROD","setPreviewHydrationParams","params","previewHydrationParams","setLocale","renderContentHTML","emailContent","headers","HttpHeaders","Accept","post","responseType","hydrateEmailContent","contentWithTags","disablePreviewHydration","replaceDefaultLogoParam","hydrateTemplate","content","templateHtml","parameters","account_group_id","business","accountGroupId","market_id","marketID","partner_id","partnerID","user_id","userID","contact_id","contactID","render","TemplateType","TEMPLATE_TYPE_DJANGO","partnerId","marketId","userId","contactId","useFakeData","hydrateSubject","templateSubject","TEMPLATE_TYPE_GOLANG_TEXT","of","replace","ɵɵinject","HttpClient","TemplatesService","EnvironmentService","factory","ɵfac","providedIn","_PreviewRenderingService","emptyTopLogo","showLogo","customImageUrl","width","align","topPadding","bottomPadding","collapsed","link","defaultSourceUrl","emptyColors","textColor","titleColor","subtitleColor","linkColor","footerTextColor","textBackground","pageBackground","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵelementContainerStart","ɵɵtemplate","EmailAdvancedSettingsComponent_ng_container_0_mat_icon_6_Template","ɵɵtwoWayListener","$event","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","emailSetup","colors","textColor","ɵɵresetView","EmailAdvancedSettingsComponent_ng_container_0_glxy_error_18_Template","ɵɵelement","titleColor","EmailAdvancedSettingsComponent_ng_container_0_glxy_error_27_Template","subtitleColor","EmailAdvancedSettingsComponent_ng_container_0_glxy_error_36_Template","linkColor","EmailAdvancedSettingsComponent_ng_container_0_glxy_error_45_Template","footerTextColor","EmailAdvancedSettingsComponent_ng_container_0_glxy_error_54_Template","textBackground","EmailAdvancedSettingsComponent_ng_container_0_glxy_error_63_Template","pageBackground","EmailAdvancedSettingsComponent_ng_container_0_glxy_error_72_Template","ɵɵproperty","collapsed","ɵɵtextInterpolate","isValid","ɵɵtwoWayProperty","colorRegex","textColor_r3","hasError","touched","titleColor_r4","subtitleColor_r5","linkColor_r6","footerTextColor_r7","textBackground_r8","pageBackground_r9","_r10","pageSetup","topPadding","outerWidth","innerWidth","innerHorizontalPadding","bottomContentPadding","ɵɵpropertyInterpolate","ɵɵlistener","_r12","topLogo","customImageUrl","emailPreview","refresh","FileUploadStatus","Queued","ɵɵsanitizeUrl","_r13","setContentImage","EmailAdvancedSettingsComponent_ng_container_2_ng_container_24_ng_container_1_Template","EmailAdvancedSettingsComponent_ng_container_2_ng_container_24_ng_template_2_Template","ɵɵtemplateRefExtractor","NoImage_r14","_r15","width","align","bottomPadding","link","EmailAdvancedSettingsComponent_ng_container_2_ng_container_25_glxy_error_50_Template","urlMailtoOrDynamicContentRegex","topLogoLink_r16","EmailAdvancedSettingsComponent_ng_container_2_mat_icon_6_Template","_r11","showLogo","EmailAdvancedSettingsComponent_ng_container_2_ng_container_24_Template","EmailAdvancedSettingsComponent_ng_container_2_ng_container_25_Template","_r17","footer","disclaimer","ALL_ADVANCED_SECTIONS_ENABLED","addMissingKeysToObject","target","template","targetKey","Object","keys","forEach","key","undefined","EmailAdvancedSettingsComponent","constructor","class","Validator","URL_MAILTO_OR_DYNAMIC_CONTENT_REGEX","HEX_COLOR_REGEX","subs","ngOnInit","emptyColors","ngAfterViewInit","setupPreviewRefresh","setupFormValidation","push","topLogoForm","statusChanges","subscribe","topLogoValid","colorForm","colorsValid","sizingAndSpacingForm","form","valueChanges","footerForm","ngOnDestroy","s","unsubscribe","file","url","ɵɵdirectiveInject","EmailPreviewRefreshService","selectors","viewQuery","rf","ctx","ɵɵclassMap","EmailAdvancedSettingsComponent_ng_container_0_Template","EmailAdvancedSettingsComponent_ng_container_1_Template","EmailAdvancedSettingsComponent_ng_container_2_Template","EmailAdvancedSettingsComponent_ng_container_3_Template","sectionsEnabled","_EmailAdvancedSettingsComponent","inboxPreviewHtml","ResizeComponent","constructor","true","appearance","direction","overflow","dragStarted","EventEmitter","dragStopped","isDragging","initialParentOffsetWidth","initialclientX","canResizeWidth","el","inject","ElementRef","renderer","Renderer2","width","widthProperty","handleWidthInput","minWidth","minWidthProperty","maxWidth","maxWidthProperty","isLargeAppearance","isStandardAppearance","isSimpleAppearance","isDirectionLeft","isDirectionRight","ngOnInit","listen","dragStop","bind","ngOnDestroy","destroy","dragStart","event","preventDefault","nativeElement","offsetWidth","clientX","emit","document","querySelector","classList","add","remove","resize","moveDiff","finalWidth","selectors","hostVars","hostBindings","rf","ctx","ɵɵlistener","$event","ɵɵresolveWindow","ɵɵstyleProp","overflowProperty","ɵɵclassProp","ɵɵelementStart","ɵɵprojection","ɵɵelementEnd","i0","ɵɵrestoreView","_r1","ɵɵresetView","ɵɵelement","_ResizeComponent","ɵɵelementContainerStart","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ɵɵlistener","ɵɵrestoreView","_r3","ctx_r3","ɵɵnextContext","ɵɵresetView","previewSizeClicked","ɵɵtext","ɵɵpureFunction1","_c3","previewSizeSelected","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵtemplate","EmailEditorPreviewComponent_ng_container_0_ng_container_3_ng_container_2_Template","_r2","showDesktopButton","EmailEditorPreviewComponent_ng_container_0_ng_container_2_Template","EmailEditorPreviewComponent_ng_container_0_ng_container_3_Template","loadingIndicator","showDevicePreviewSizeButtons","EmailEditorPreviewComponent","html","renderedTemplate","_html","updateIFramePreview","constructor","elementRef","class","previewIsMobile","element","nativeElement","subscriptions","window","ResizeObserver","resizeObserver","entries","componentWidth","Array","isArray","contentRect","width","previousShowDesktopButton","ngAfterViewInit","setTimeout","observe","NAV_OPEN_CLOSE_ANIMATION_DURATION","ngOnDestroy","disconnect","value","emailPreviewWidth","setIframeHeightOnMobile","iframeBody","iframePreview","contentWindow","document","body","style","height","offsetHeight","contentDocument","scrollX","scrollY","open","write","close","scrollTo","ɵɵdirectiveInject","ElementRef","selectors","viewQuery","rf","ctx","ɵɵclassMap","EmailEditorPreviewComponent_ng_container_0_Template","ɵɵprojection","i0","_r1","EmailEditorPreviewComponent_ng_container_6_Template","ɵɵstyleProp","ɵɵsanitizeHtml","_EmailEditorPreviewComponent","ɵɵelementContainer","ɵɵelementContainerStart","ɵɵelementStart","ɵɵprojection","ɵɵelementEnd","ɵɵtemplate","EmailBuilderComponent_ng_container_0_ng_container_1_ng_container_6_Template","EmailBuilderComponent_ng_container_0_ng_container_1_ng_container_7_Template","EmailBuilderComponent_ng_container_0_ng_container_1_ng_container_8_Template","ɵɵadvance","ɵɵproperty","ctx_r0","renderedTemplate","loadingIndicator","emailSetup_r2","emailBlocksList_r3","emailAdvancedSettings_r4","EmailBuilderComponent_ng_container_0_ng_container_2_ng_template_4_ng_container_0_Template","EmailBuilderComponent_ng_container_0_ng_container_2_ng_template_4_ng_container_1_Template","EmailBuilderComponent_ng_container_0_ng_container_2_ng_template_4_Template","EmailBuilderComponent_ng_container_0_ng_container_2_ng_container_11_Template","ɵɵpropertyInterpolate","ɵɵpipeBind1","EmailBuilderComponent_ng_container_0_ng_container_1_Template","EmailBuilderComponent_ng_container_0_ng_container_2_Template","emailBuilderIsMobile","ɵɵelement","ɵɵtext","ɵɵtextInterpolate1","ɵɵtwoWayListener","$event","ɵɵrestoreView","_r5","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","emailContent","name","ɵɵresetView","subjectLine","EmailBuilderComponent_ng_template_3_glxy_error_18_Template","previewText","EmailBuilderComponent_ng_template_3_glxy_error_30_Template","ɵɵtextInterpolate","ɵɵtwoWayProperty","subjectLine_r6","subjectLineModel_r7","hasError","touched","previewText_r8","previewTextModel_r9","emailContentBlocks","optionalBlockTypes","emailSetup","advancedSections","MOBILE_MAX_WIDTH","EmailBuilderComponent","constructor","class","mobileMaxWidth","ALL_ADVANCED_SECTIONS_ENABLED","locale","undefined","placeholderLogoUrl","dynamicComponents","previewUserName","failedRenders$$","Subject","emailContentChanged","EventEmitter","emailRenderUpdated","htmlRendering","emailRenderFailed","breakpointObserver","inject","BreakpointObserver","translateService","TranslateService","dynamicComponentSelectorService","DynamicComponentSelectorService","emailPreview","EmailPreviewRefreshService","unsavedGuard","HasUnsavedChangesGuard","sideNavControl","GalaxyNavControlService","changeDetectorRef","ChangeDetectorRef","previewRenderingService","PreviewRenderingService","stagedChanges","inboxPreviewHtmlToInject","inboxPreviewHtml","subscriptions","previewHydrationParams","params","setPreviewHydrationParams","renderPreviewAndTemplate","ngOnInit","length","overrideParentVariableCategories","googleAnalytics","closeForThisPage","push","observe","subscribe","resp","matches","pipe","debounceTime","filter","identity","emit","refreshEmitter$","skip","emailHasBeenModified","refreshStartedEmitter$","attemptedNavWhileUnsaved$","confirmLeavingWithUnsavedChanges","ngOnChanges","changes","setLocale","currentValue","ngAfterViewInit","emailSetupForm","statusChanges","status","basicSetupValid","valueChanges","refresh","ngOnDestroy","forEach","sub","unsubscribe","customizedInboxPreview","replace","preparedEmailContentData","JSON","parse","stringify","contentWithTags$","renderContentHTML","catchError","err","console","error","throwError","share","hydratedContent$","mergeMap","contentWithTags","hydrateEmailContent","tap","next","hydratedOrFallback$","combineLatest","map","v","take","value","rawHTML","detectChanges","saveEmail","markAsSaved","markAsUnsaved","window","confirm","instant","selectors","viewQuery","rf","ctx","ɵɵclassMap","ɵɵclassProp","provide","GALAXY_UPLOADER_SERVICE_TOKEN","useExisting","ImageUploadService","ɵɵNgOnChangesFeature","ngContentSelectors","_c2","decls","vars","consts","template","EmailBuilderComponent_ng_container_0_Template","EmailBuilderComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","EmailBuilderComponent_ng_template_3_Template","EmailBuilderComponent_ng_template_5_Template","EmailBuilderComponent_ng_template_7_Template","loadingScreen_r10","_EmailBuilderComponent","GalaxyResizeModule","CommonModule","CdkScrollableModule","_GalaxyResizeModule","MODULE_IMPORTS","CommonModule","MatIconModule","MatButtonModule","GalaxyButtonGroupModule","GalaxyPipesModule","GalaxyLoadingSpinnerModule","TranslateModule","EmailUII18nModule","EmailEditorPreviewModule","MODULE_IMPORTS","_EmailEditorPreviewModule","MODULE_IMPORTS","HttpClientModule","CommonModule","MatIconModule","MatCheckboxModule","MatButtonModule","MatButtonToggleModule","GalaxyTooltipModule","MatExpansionModule","MatMenuModule","MatDividerModule","MatTooltipModule","MatTabsModule","FormsModule","DragDropModule","CdkScrollableModule","GalaxyResizeModule","GalaxyButtonGroupModule","GalaxyFormFieldModule","GalaxyUploaderModule","GalaxySnackbarModule","GalaxyLoadingSpinnerModule","GalaxyButtonLoadingIndicatorModule","MatInputModule","MatProgressSpinnerModule","MatDialogModule","MatSelectModule","MatAutocompleteModule","ReactiveFormsModule","TranslateModule","EmailEditorPreviewModule","EmailUII18nModule","LexiconModule","forChild","DynamicComponentSelectorModule","UnsavedChangesDialogComponent","CoreModule","ImageGenerationDialogComponent","EmailBuilderModule","ContentGenerationService","PreviewRenderingService","HasUnsavedChangesGuard","ImageUploadService","FeatureFlagEnabledService","imports","ReviewRequestLinksBlockComponent","GalaxyBadgeModule","_EmailBuilderModule"],"x_google_ignoreList":[0,28]}