@alfresco/aca-shared 8.1.0-37916619404 → 8.1.0-37922544708

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"alfresco-aca-shared.mjs","sources":["../../../../projects/aca-shared/src/lib/adf-extensions/extensions-data-loader.guard.ts","../../../../projects/aca-shared/src/lib/components/page-layout/page-layout-content.component.ts","../../../../projects/aca-shared/src/lib/components/page-layout/page-layout-error.component.ts","../../../../projects/aca-shared/src/lib/components/page-layout/page-layout-header.component.ts","../../../../projects/aca-shared/src/lib/services/content-api.service.ts","../../../../projects/aca-shared/src/lib/services/router.extension.service.ts","../../../../projects/aca-shared/src/lib/components/open-in-app/open-in-app.component.ts","../../../../projects/aca-shared/src/lib/components/open-in-app/open-in-app.component.html","../../../../projects/aca-shared/src/lib/services/aca-mobile-app-switcher.service.ts","../../../../projects/aca-shared/src/lib/constants/mime-types.ts","../../../../projects/aca-shared/src/lib/services/app-settings.service.ts","../../../../projects/aca-shared/src/lib/services/user-profile.service.ts","../../../../projects/aca-shared/src/lib/services/app.service.ts","../../../../projects/aca-shared/src/lib/components/page-layout/page-layout.component.ts","../../../../projects/aca-shared/src/lib/components/page-layout/page-layout.component.html","../../../../projects/aca-shared/src/lib/components/page-layout/page-layout.module.ts","../../../../projects/aca-shared/src/lib/utils/node.utils.ts","../../../../projects/aca-shared/src/lib/components/locked-by/locked-by.component.ts","../../../../projects/aca-shared/src/lib/components/generic-error/generic-error.component.ts","../../../../projects/aca-shared/src/lib/components/generic-error/generic-error.component.html","../../../../projects/aca-shared/src/lib/services/node-permission.service.ts","../../../../projects/aca-shared/src/lib/services/app.extension.service.ts","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar-menu-item/toolbar-menu-item.component.ts","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar-menu-item/toolbar-menu-item.component.html","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar-button/toolbar-button.component.ts","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar-button/toolbar-button.component.html","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar-menu/toolbar-menu.component.ts","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar-menu/toolbar-menu.component.html","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar-action/toolbar-action.component.ts","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar-action/toolbar-action.component.html","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar.component.ts","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar.component.html","../../../../projects/aca-shared/src/lib/components/info-drawer/info-drawer.component.ts","../../../../projects/aca-shared/src/lib/components/info-drawer/info-drawer.component.html","../../../../projects/aca-shared/src/lib/components/document-base-page/document-base-page.service.ts","../../../../projects/aca-shared/src/lib/services/auto-download.service.ts","../../../../projects/aca-shared/src/lib/components/document-base-page/document-base-page.component.ts","../../../../projects/aca-shared/src/lib/constants/index.ts","../../../../projects/aca-shared/src/lib/directives/contextmenu/contextmenu.directive.ts","../../../../projects/aca-shared/src/lib/directives/pagination.directive.ts","../../../../projects/aca-shared/src/lib/models/types.ts","../../../../projects/aca-shared/src/lib/models/viewer.rules.ts","../../../../projects/aca-shared/src/lib/routing/shared.guard.ts","../../../../projects/aca-shared/src/lib/routing/plugin-enabled.guard.ts","../../../../projects/aca-shared/src/lib/services/app-hook.service.ts","../../../../projects/aca-shared/src/lib/services/navigation-history.service.ts","../../../../projects/aca-shared/src/lib/testing/lib-testing-module.ts","../../../../projects/aca-shared/src/public-api.ts","../../../../projects/aca-shared/src/alfresco-aca-shared.ts"],"sourcesContent":["/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { InjectionToken, inject } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivateFn } from '@angular/router';\nimport { Observable, forkJoin, of } from 'rxjs';\nimport { tap, map, catchError } from 'rxjs/operators';\n\nexport type ExtensionLoaderCallback = (route: ActivatedRouteSnapshot) => Observable<boolean>;\n\nexport const DefaultExtensionLoaderFactory = () => [];\n\nexport const EXTENSION_DATA_LOADERS = new InjectionToken<ExtensionLoaderCallback[]>('EXTENSION_DATA_LOADERS', {\n providedIn: 'root',\n factory: DefaultExtensionLoaderFactory\n});\n\nlet invoked = false;\n\nexport const ExtensionsDataLoaderGuard: CanActivateFn = (route: ActivatedRouteSnapshot): Observable<boolean> => {\n const extensionDataLoaders = inject(EXTENSION_DATA_LOADERS);\n if (!invoked) {\n if (!extensionDataLoaders.length) {\n invoked = true;\n return of(true);\n }\n\n const dataLoaderCallbacks = extensionDataLoaders.map((callback) => callback(route));\n\n // Undocumented forkJoin behaviour/bug:\n // https://github.com/ReactiveX/rxjs/issues/3246\n // So all callbacks need to emit before completion, otherwise forkJoin will short circuit\n return forkJoin(...dataLoaderCallbacks).pipe(\n map(() => true),\n tap(() => (invoked = true)),\n catchError((e) => {\n // eslint-disable-next-line no-console\n console.error('Some of the extension data loader guards has been errored.');\n // eslint-disable-next-line no-console\n console.error(e);\n return of(true);\n })\n );\n } else {\n return of(true);\n }\n};\n\nexport const resetInvoked = () => {\n invoked = false;\n};\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ChangeDetectionStrategy, Component, HostBinding, Input, ViewEncapsulation } from '@angular/core';\n\n// @deprecated Use `.aca-page-layout-content` CSS selector instead\n@Component({\n standalone: true,\n selector: 'aca-page-layout-content',\n template: `<ng-content />`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'aca-page-layout-content' }\n})\nexport class PageLayoutContentComponent {\n @Input()\n @HostBinding('class.aca-scrollable')\n scrollable = false;\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n// @deprecated Use `.aca-page-layout-error` selectors instead\n@Component({\n standalone: true,\n selector: 'aca-page-layout-error',\n template: `<ng-content />`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'aca-page-layout-error' }\n})\nexport class PageLayoutErrorComponent {}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n// @deprecated Use `.aca-page-layout-header` CSS selector instead\n@Component({\n standalone: true,\n selector: 'aca-page-layout-header',\n template: '<ng-content />',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'aca-page-layout-header' }\n})\nexport class PageLayoutHeaderComponent {}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { UserPreferencesService } from '@alfresco/adf-core';\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { Observable, from } from 'rxjs';\nimport {\n NodePaging,\n Node,\n DeletedNodesPaging,\n PersonEntry,\n NodeEntry,\n DiscoveryEntry,\n FavoritePaging,\n SharedLinkPaging,\n SearchRequest,\n ResultSetPaging,\n SiteBodyCreate,\n SiteEntry,\n FavoriteBodyCreate,\n FavoriteEntry,\n AssociationBody,\n AssociationEntry,\n NodeAssociationPaging,\n NodesApi,\n TrashcanApi,\n SharedlinksApi,\n DiscoveryApi,\n FavoritesApi,\n ContentApi,\n SitesApi,\n SearchApi,\n PeopleApi,\n VersionsApi,\n DirectAccessUrlEntry,\n VersionPaging,\n LazyApi\n} from '@alfresco/js-api';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ContentApiService {\n private readonly api = inject(AlfrescoApiService);\n private readonly preferences = inject(UserPreferencesService);\n\n @LazyApi((self: ContentApiService) => new NodesApi(self.api.getInstance()))\n declare nodesApi: NodesApi;\n\n @LazyApi((self: ContentApiService) => new TrashcanApi(self.api.getInstance()))\n declare trashcanApi: TrashcanApi;\n\n @LazyApi((self: ContentApiService) => new SharedlinksApi(self.api.getInstance()))\n declare sharedLinksApi: SharedlinksApi;\n\n @LazyApi((self: ContentApiService) => new DiscoveryApi(self.api.getInstance()))\n declare discoveryApi: DiscoveryApi;\n\n @LazyApi((self: ContentApiService) => new FavoritesApi(self.api.getInstance()))\n declare favoritesApi: FavoritesApi;\n\n @LazyApi((self: ContentApiService) => new ContentApi(self.api.getInstance()))\n declare contentApi: ContentApi;\n\n @LazyApi((self: ContentApiService) => new SitesApi(self.api.getInstance()))\n declare sitesApi: SitesApi;\n\n @LazyApi((self: ContentApiService) => new SearchApi(self.api.getInstance()))\n declare searchApi: SearchApi;\n\n @LazyApi((self: ContentApiService) => new PeopleApi(self.api.getInstance()))\n declare peopleApi: PeopleApi;\n\n @LazyApi((self: ContentApiService) => new VersionsApi(self.api.getInstance()))\n declare versionsApi: VersionsApi;\n\n /**\n * Moves a node to the trashcan.\n *\n * @param nodeId ID of the target node\n * @param options Optional parameters supported by JS-API\n * @returns Empty result that notifies when the deletion is complete\n */\n deleteNode(nodeId: string, options: { permanent?: boolean } = {}): Observable<void> {\n return from(this.nodesApi.deleteNode(nodeId, options));\n }\n\n /**\n * Gets the stored information about a node.\n *\n * @param nodeId ID of the target node\n * @param options Optional parameters supported by JS-API\n * @returns Node information\n */\n getNode(nodeId: string, options: any = {}): Observable<NodeEntry> {\n const defaults = {\n include: ['path', 'properties', 'allowableOperations', 'permissions', 'definition', 'isLink']\n };\n const queryOptions = Object.assign(defaults, options);\n\n return from(this.nodesApi.getNode(nodeId, queryOptions));\n }\n\n getNodeInfo(nodeId: string, options?: any): Observable<Node> {\n const defaults = {\n include: ['isFavorite', 'allowableOperations', 'path', 'definition', 'isLink']\n };\n const queryOptions = Object.assign(defaults, options || {});\n\n return from(\n new Promise<Node>((resolve, reject) => {\n this.nodesApi.getNode(nodeId, queryOptions).then(\n (nodeEntry: NodeEntry) => {\n resolve(nodeEntry.entry);\n },\n (error) => {\n reject(error);\n }\n );\n })\n );\n }\n\n /**\n * Gets the items contained in a folder node.\n *\n * @param nodeId ID of the target node\n * @param options Optional parameters supported by JS-API\n * @returns List of child items from the folder\n */\n getNodeChildren(nodeId: string, options: any = {}): Observable<NodePaging> {\n const defaults = {\n maxItems: this.preferences.paginationSize,\n skipCount: 0,\n include: ['isLocked', 'path', 'properties', 'allowableOperations', 'permissions']\n };\n const queryOptions = Object.assign(defaults, options);\n\n return from(this.nodesApi.listNodeChildren(nodeId, queryOptions));\n }\n\n /**\n * Gets the target nodes that are associated with the given source node.\n *\n * @param nodeId ID of the source node\n * @param options Optional parameters supported by JS-API\n * @returns List of target associations\n */\n getNodeTargetAssociations(nodeId: string, options: any = {}): Observable<NodeAssociationPaging> {\n return from(this.nodesApi.listTargetAssociations(nodeId, options));\n }\n\n /**\n * Creates a target association from the given source node to another node.\n *\n * @param nodeId ID of the source node\n * @param association Target node id and association type\n * @returns The created association\n */\n createNodeAssociation(nodeId: string, association: AssociationBody): Observable<AssociationEntry> {\n return from(this.nodesApi.createAssociation(nodeId, association));\n }\n\n /**\n * Deletes a target association between the given source node and a target node.\n *\n * @param nodeId ID of the source node\n * @param targetId ID of the target node\n * @param assocType Association type to remove\n * @returns Empty result that notifies when the deletion is complete\n */\n deleteNodeAssociation(nodeId: string, targetId: string, assocType?: string): Observable<void> {\n return from(this.nodesApi.deleteAssociation(nodeId, targetId, { assocType }));\n }\n\n deleteSharedLink(linkId: string): Observable<any> {\n return from(this.sharedLinksApi.deleteSharedLink(linkId));\n }\n\n getDeletedNodes(options: any = {}): Observable<DeletedNodesPaging> {\n const defaults = {\n include: ['path']\n };\n const queryOptions = Object.assign(defaults, options);\n\n return from(this.trashcanApi.listDeletedNodes(queryOptions));\n }\n\n restoreNode(nodeId: string): Observable<NodeEntry> {\n return from(this.trashcanApi.restoreDeletedNode(nodeId));\n }\n\n purgeDeletedNode(nodeId: string): Observable<any> {\n return from(this.trashcanApi.deleteDeletedNode(nodeId));\n }\n\n /**\n * Gets information about a user identified by their username.\n *\n * @param personId ID of the target user\n * @param options Api options\n * @returns User information\n */\n getPerson(personId: string, options?: { fields?: Array<string> }): Observable<PersonEntry> {\n return from(this.peopleApi.getPerson(personId, options));\n }\n\n /**\n * Copy a node to destination node\n *\n * @param nodeId The id of the node to be copied\n * @param targetParentId The id of the folder-node where the node have to be copied to\n * @param name The new name for the copy that would be added on the destination folder\n * @param opts Api options\n */\n copyNode(nodeId: string, targetParentId: string, name?: string, opts?: { include?: Array<string>; fields?: Array<string> }): Observable<NodeEntry> {\n return from(this.nodesApi.copyNode(nodeId, { targetParentId, name }, opts));\n }\n\n /**\n * Gets product information for Content Services.\n *\n * @returns ProductVersionModel containing product details\n */\n getRepositoryInformation(): Observable<DiscoveryEntry> {\n return from(this.discoveryApi.getRepositoryInformation());\n }\n\n getFavorites(\n personId: string,\n opts?: {\n skipCount?: number;\n maxItems?: number;\n where?: string;\n fields?: Array<string>;\n }\n ): Observable<FavoritePaging> {\n return from(this.favoritesApi.listFavorites(personId, opts));\n }\n\n getFavoriteLibraries(personId: string = '-me-', opts?: any): Observable<FavoritePaging> {\n return this.getFavorites(personId, {\n ...opts,\n where: '(EXISTS(target/site))'\n }).pipe(\n map((response: FavoritePaging) => ({\n list: {\n entries: response.list.entries.map(({ entry }: any) => {\n entry.target.site.createdAt = entry.createdAt;\n return {\n entry: entry.target.site\n };\n }),\n pagination: response.list.pagination\n }\n }))\n );\n }\n\n findSharedLinks(opts?: any): Observable<SharedLinkPaging> {\n return from(this.sharedLinksApi.listSharedLinks(opts));\n }\n\n getSharedLinkContent(sharedId: string, attachment?: boolean): string {\n return this.contentApi.getSharedLinkContentUrl(sharedId, attachment);\n }\n\n search(request: SearchRequest): Observable<ResultSetPaging> {\n return from(this.searchApi.search(request));\n }\n\n getContentUrl(nodeId: string, attachment?: boolean): string {\n return this.contentApi.getContentUrl(nodeId, attachment);\n }\n\n getVersionContentUrl(nodeId: string, versionId: string, attachment?: boolean): string {\n return this.contentApi.getVersionContentUrl(nodeId, versionId, attachment);\n }\n\n deleteSite(siteId?: string, opts?: { permanent?: boolean }): Observable<any> {\n return from(this.sitesApi.deleteSite(siteId, opts));\n }\n\n leaveSite(siteId?: string): Observable<any> {\n return from(this.sitesApi.deleteSiteMembership(siteId, '-me-'));\n }\n\n createSite(\n siteBody: SiteBodyCreate,\n opts?: {\n fields?: Array<string>;\n skipConfiguration?: boolean;\n skipAddToFavorites?: boolean;\n }\n ): Observable<SiteEntry> {\n return from(this.sitesApi.createSite(siteBody, opts));\n }\n\n getSite(siteId?: string, opts?: { relations?: Array<string>; fields?: Array<string> }): Observable<SiteEntry> {\n return from(this.sitesApi.getSite(siteId, opts));\n }\n\n updateLibrary(siteId: string, siteBody: SiteBodyCreate): Observable<SiteEntry> {\n return from(this.sitesApi.updateSite(siteId, siteBody));\n }\n\n addFavorite(nodes: Array<NodeEntry>): Observable<FavoriteEntry> {\n const payload: FavoriteBodyCreate[] = nodes.map((node) => {\n const { isFolder, nodeId, id } = node.entry as any;\n const siteId = node.entry['guid'];\n const type = siteId ? 'site' : isFolder ? 'folder' : 'file';\n const guid = siteId || nodeId || id;\n\n return {\n target: {\n [type]: {\n guid\n }\n }\n };\n });\n\n return from(this.favoritesApi.createFavorite('-me-', payload as any));\n }\n\n removeFavorite(nodes: Array<NodeEntry>): Observable<any> {\n return from(\n Promise.all(\n nodes.map((node: any) => {\n const id = node.entry.nodeId || node.entry.id;\n return this.favoritesApi.deleteFavorite('-me-', id);\n })\n )\n );\n }\n\n unlockNode(nodeId: string, opts?: any): Promise<NodeEntry> {\n return this.nodesApi.unlockNode(nodeId, opts);\n }\n\n getNodeVersions(nodeId: string, opts?: any): Observable<VersionPaging> {\n return from(this.versionsApi.listVersionHistory(nodeId, opts));\n }\n\n requestNodeDirectAccessUrl(nodeId: string): Observable<DirectAccessUrlEntry> {\n return from(this.nodesApi.requestDirectAccessUrl(nodeId));\n }\n\n requestVersionDirectAccessUrl(nodeId: string, versionId: string): Observable<DirectAccessUrlEntry> {\n return from(this.versionsApi.requestDirectAccessUrl(nodeId, versionId));\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable, Type, inject } from '@angular/core';\nimport { ExtensionService } from '@alfresco/adf-extensions';\nimport { ExtensionRoute } from '../models/types';\nimport { Router } from '@angular/router';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RouterExtensionService {\n private readonly router = inject(Router);\n protected readonly extensions = inject(ExtensionService);\n\n defaults = {\n layout: 'app.layout.main',\n auth: ['app.auth', 'app.extensions.dataLoaderGuard']\n };\n\n mapExtensionRoutes() {\n const routesWithoutParent = [];\n this.getApplicationRoutes().forEach((extensionRoute: ExtensionRoute) => {\n if (this.extensionRouteHasChild(extensionRoute)) {\n const parentRoute = this.findRoute(extensionRoute.parentRoute);\n if (parentRoute) {\n this.convertExtensionRouteToRoute(extensionRoute);\n parentRoute.children.unshift(extensionRoute);\n }\n } else {\n routesWithoutParent.push(extensionRoute);\n }\n });\n\n this.router.config.unshift(...routesWithoutParent);\n }\n\n public getApplicationRoutes(): Array<ExtensionRoute> {\n return this.extensions.routes.map((route) => {\n const guards = this.extensions.getAuthGuards(route.auth && route.auth.length > 0 ? route.auth : this.defaults.auth);\n\n return {\n path: route.path,\n component: this.getComponentById(route.layout ?? this.defaults.layout),\n canActivateChild: guards,\n canActivate: guards,\n parentRoute: route.parentRoute,\n children: [\n ...(route['children']\n ? route['children'].map(({ path, component, outlet, data }) => ({\n path,\n outlet,\n data,\n component: this.getComponentById(component)\n }))\n : []),\n {\n path: '',\n component: this.getComponentById(route.component),\n data: route.data\n }\n ]\n } as ExtensionRoute;\n });\n }\n\n private getComponentById(id: string): Type<unknown> {\n return this.extensions.getComponentById(id);\n }\n\n private extensionRouteHasChild(route: ExtensionRoute): boolean {\n return route.parentRoute !== undefined;\n }\n\n private convertExtensionRouteToRoute(extensionRoute: ExtensionRoute) {\n delete extensionRoute.parentRoute;\n delete extensionRoute.component;\n }\n\n private findRoute(parentRoute) {\n const routeIndex = this.router.config.findIndex((route) => route.path === parentRoute);\n\n return this.router.config[routeIndex];\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation, inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { A11yModule } from '@angular/cdk/a11y';\n\nexport interface OpenInAppDialogOptions {\n redirectUrl: string;\n appStoreUrl: string;\n}\n@Component({\n imports: [TranslatePipe, MatButtonModule, MatIconModule, A11yModule, MatDialogModule],\n selector: 'aca-open-in-app',\n templateUrl: './open-in-app.component.html',\n styleUrls: ['./open-in-app.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class OpenInAppComponent {\n data = inject<OpenInAppDialogOptions>(MAT_DIALOG_DATA);\n private readonly dialog = inject<MatDialogRef<OpenInAppComponent>>(MatDialogRef);\n\n private readonly redirectUrl: string;\n public appStoreUrl: string;\n public window: Window & typeof globalThis = window;\n\n constructor() {\n const data = this.data;\n\n if (data) {\n this.redirectUrl = data.redirectUrl;\n this.appStoreUrl = data.appStoreUrl;\n }\n }\n\n openInApp(): void {\n this.window.location.href = this.redirectUrl;\n }\n\n downloadIosApp(): void {\n this.window.location.href = this.appStoreUrl;\n }\n\n onCloseDialog(): void {\n const time: number = new Date().getTime();\n sessionStorage.setItem('mobile_notification_expires_in', time.toString());\n this.dialog.close();\n }\n}\n","<div class=\"aca-open-in-app\">\n <div class=\"aca-mobile-application-container\">\n <span>{{ 'APP.DIALOGS.MOBILE_APP.OPEN_ALFRESCO_MOBILE_APP' | translate }}</span>\n <button mat-icon-button mat-dialog-close class=\"aca-cross-button\" (click)=\"onCloseDialog()\" >\n <mat-icon class=\"aca-cross-button-icon\">close</mat-icon>\n </button>\n </div>\n\n <div class=\"aca-open-in-app-button-container\">\n <button mat-button (click)=\"openInApp()\"\n data-automation-id=\"open-in-app-button\"\n class=\"aca-open-in-app-button-container\" cdkFocusInitial>\n <span>{{ 'APP.DIALOGS.MOBILE_APP.MOBILE_APP_BUTTON_LABEL' | translate }}</span>\n </button>\n </div>\n\n @if (appStoreUrl) {\n <div class=\"aca-download-app-container\">\n <button mat-button data-automation-id=\"download-app-button\" class=\"aca-download-app-container-button\" (click)=\"downloadIosApp()\">\n <span>{{ 'APP.DIALOGS.MOBILE_APP.DOWNLOAD_APP_BUTTON_LABEL' | translate }}</span>\n </button>\n </div>\n }\n</div>\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AppConfigService } from '@alfresco/adf-core';\nimport { inject, Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { OpenInAppComponent } from '../components/open-in-app/open-in-app.component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AcaMobileAppSwitcherService {\n public redirectUrl: string;\n private dialogRef: MatDialogRef<OpenInAppComponent>;\n private readonly config = inject(AppConfigService);\n private readonly dialog = inject(MatDialog);\n\n get appStoreUrl(): string {\n const defaultValue = 'https://apps.apple.com/us/app/alfresco-mobile-workspace/id1514434480';\n return this.config.get<string>('mobileAppSwitch.appStoreUrl', defaultValue);\n }\n\n get sessionTimeout(): number {\n return this.config.get<number>('mobileAppSwitch.sessionTimeout', 12);\n }\n\n getIPhoneRedirectUrl(url: string): string {\n const prefix = this.config.get<string>('mobileAppSwitch.iphoneUrl', 'iosamw://');\n return prefix + url;\n }\n\n getAndroidRedirectUrl(url: string): string {\n const prefix = this.config.get<string>('mobileAppSwitch.androidUrlPart1', 'intent:///');\n const suffix = this.config.get<string>('mobileAppSwitch.androidUrlPart2', '#Intent;scheme=androidamw;package=com.alfresco.content.app;end');\n return prefix + url + suffix;\n }\n\n resolveExistenceOfDialog(): void {\n const url: string = this.getCurrentUrl();\n const queryParams: string = url.split('?')[1];\n let queryParamsList = [];\n let hideBanner = false;\n if (queryParams !== null && queryParams !== undefined) {\n queryParamsList = queryParams.split('&');\n hideBanner = queryParamsList.some((param) => param.split('=')[0] === 'mobileapps' && param.split('=')[1] === 'true');\n }\n if (!hideBanner) {\n this.verifySessionExistsForDialog();\n }\n }\n\n verifySessionExistsForDialog(): void {\n const sessionTime: string = sessionStorage.getItem('mobile_notification_expires_in');\n if (sessionTime !== null) {\n const currentTime: number = new Date().getTime();\n const sessionConvertedTime: number = parseFloat(sessionTime);\n const timeDifference: number = (currentTime - sessionConvertedTime) / (1000 * 60 * 60);\n\n if (timeDifference > this.sessionTimeout) {\n this.clearSessionExpireTime();\n this.identifyBrowserAndSetRedirectURL();\n }\n } else {\n this.identifyBrowserAndSetRedirectURL();\n }\n }\n\n identifyBrowserAndSetRedirectURL(): void {\n const ua: string = navigator.userAgent.toLowerCase();\n const isAndroid: boolean = ua.indexOf('android') > -1;\n const isIPadInSafari = /Macintosh/i.test(ua) && navigator.maxTouchPoints && navigator.maxTouchPoints > 1;\n const isIOS: boolean = ua.indexOf('iphone') > -1 || ua.indexOf('ipad') > -1 || ua.indexOf('ipod') > -1 || isIPadInSafari;\n const currentUrl: string = this.getCurrentUrl();\n\n if (isIOS === true) {\n this.redirectUrl = this.getIPhoneRedirectUrl(currentUrl);\n } else if (isAndroid === true) {\n this.redirectUrl = this.getAndroidRedirectUrl(currentUrl);\n }\n\n if (this.redirectUrl !== undefined && this.redirectUrl !== null) {\n this.openDialog(this.redirectUrl, this.appStoreUrl);\n }\n }\n\n openDialog(redirectUrl: string, appStoreUrl?: string): void {\n if (!this.dialogRef) {\n this.dialogRef = this.dialog.open(OpenInAppComponent, {\n data: {\n redirectUrl,\n appStoreUrl\n },\n hasBackdrop: false,\n width: '100%',\n role: 'dialog',\n position: { bottom: '0' }\n });\n }\n }\n\n clearSessionExpireTime(): void {\n sessionStorage.removeItem('mobile_notification_expires_in');\n }\n\n getCurrentUrl(): string {\n return window.location.href;\n }\n\n closeDialog(): void {\n if (this.dialogRef) {\n this.dialog.closeAll();\n this.dialogRef = null;\n }\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\n/* eslint-disable @cspell/spellchecker */\n\nexport interface AlfrescoMimeType {\n label: string;\n value: string;\n}\n\nexport const DefaultMimeTypes: AlfrescoMimeType[] = [\n { value: 'video/3gpp', label: '3G Video' },\n { value: 'video/3gpp2', label: '3G2 Video' },\n { value: 'application/vnd.alfresco.ai.features.v1+json', label: 'AI-Features' },\n { value: 'application/vnd.alfresco.ai.labels.v1+json', label: 'AI-Labels' },\n { value: 'application/vnd.alfresco.ai.pii.entities.v1+json', label: 'AI-PII-Entities' },\n { value: 'application/vnd.alfresco.ai.speech-to-text.v1+json', label: 'AI-SpeechToText' },\n { value: 'application/vnd.alfresco.ai.textract.v1+json', label: 'AI-Textract' },\n { value: 'audio/x-aiff', label: 'AIFF Audio' },\n { value: 'application/vnd.adobe.air-application-installer-package+zip', label: 'Adobe AIR' },\n { value: 'application/vnd.adobe.xdp+xml', label: 'Adobe Acrobat XML Data Package' },\n { value: 'application/vnd.adobe.aftereffects.project', label: 'Adobe AfterEffects Project' },\n { value: 'application/vnd.adobe.aftereffects.template', label: 'Adobe AfterEffects Template' },\n { value: 'image/x-raw-adobe', label: 'Adobe Digital Negative Image' },\n { value: 'application/x-zip', label: 'Adobe Flex Project File' },\n { value: 'application/framemaker', label: 'Adobe FrameMaker' },\n { value: 'application/illustrator', label: 'Adobe Illustrator File' },\n { value: 'application/x-indesign', label: 'Adobe InDesign Document' },\n { value: 'application/pdf', label: 'Adobe PDF Document' },\n { value: 'application/pagemaker', label: 'Adobe PageMaker' },\n { value: 'image/vnd.adobe.photoshop', label: 'Adobe Photoshop' },\n { value: 'image/vnd.adobe.premiere', label: 'Adobe Premiere' },\n { value: 'audio/vnd.adobe.soundbooth', label: 'Adobe SoundBooth' },\n { value: 'application/acp', label: 'Alfresco Content Package' },\n { value: 'application/vnd.android.package-archive', label: 'Android Package' },\n { value: 'image/x-portable-anymap', label: 'Anymap Image' },\n { value: 'image/icns', label: 'Apple Icon' },\n { value: 'application/vnd.apple.keynote', label: 'Apple iWork Keynote' },\n { value: 'application/vnd.apple.numbers', label: 'Apple iWork Numbers' },\n { value: 'application/vnd.apple.pages', label: 'Apple iWork Pages' },\n { value: 'image/vnd.dwg', label: 'AutoCAD Drawing' },\n { value: 'image/x-dwt', label: 'AutoCAD Template' },\n { value: 'audio/basic', label: 'Basic Audio' },\n { value: 'application/x-dosexec', label: 'Binary File' },\n { value: 'application/octet-stream', label: 'Binary File (Octet Stream)' },\n { value: 'image/bmp', label: 'Bitmap Image' },\n { value: 'image/cgm', label: 'CGM Image' },\n { value: 'image/x-raw-canon', label: 'Canon RAW Image' },\n { value: 'text/csv', label: 'Comma Separated Values (CSV)' },\n { value: 'application/dita+xml', label: 'DITA' },\n { value: 'message/rfc822', label: 'EMail' },\n { value: 'application/eps', label: 'EPS Type PostScript' },\n { value: 'audio/x-flac', label: 'FLAC Audio' },\n { value: 'application/x-fla', label: 'Flash Source' },\n { value: 'video/x-flv', label: 'Flash Video' },\n { value: 'image/x-raw-fuji', label: 'Fuji RAW Image' },\n { value: 'image/gif', label: 'GIF Image' },\n { value: 'application/x-gzip', label: 'GZIP' },\n { value: 'application/x-gtar', label: 'GZIP Tarball' },\n { value: 'image/x-portable-graymap', label: 'Greymap Image' },\n { value: 'text/html', label: 'HTML' },\n { value: 'application/vnd.oasis.opendocument.text-web', label: 'HTML Document Template' },\n { value: 'image/x-raw-hasselblad', label: 'Hasselblad RAW Image' },\n { value: 'image/ief', label: 'IEF Image' },\n { value: 'image/jp2', label: 'JPEG 2000 Image' },\n { value: 'image/jpeg', label: 'JPEG Image' },\n { value: 'application/json', label: 'JSON' },\n { value: 'application/java-archive', label: 'Java Archive' },\n { value: 'application/java', label: 'Java Class' },\n { value: 'text/x-jsp', label: 'Java Server Page' },\n { value: 'text/x-java-source', label: 'Java Source File' },\n { value: 'application/x-javascript', label: 'JavaScript' },\n { value: 'image/x-raw-kodak', label: 'Kodak RAW Image' },\n { value: 'application/x-latex', label: 'LaTeX' },\n { value: 'image/x-raw-leica', label: 'Leica RAW Image' },\n { value: 'audio/mpeg', label: 'MPEG Audio' },\n { value: 'video/mp2t', label: 'MPEG Transport Stream' },\n { value: 'video/mpeg', label: 'MPEG Video' },\n { value: 'video/mpeg2', label: 'MPEG2 Video' },\n { value: 'audio/mp4', label: 'MPEG4 Audio' },\n { value: 'video/mp4', label: 'MPEG4 Video' },\n { value: 'video/x-m4v', label: 'MPEG4 Video (m4v)' },\n { value: 'video/x-ms-asf', label: 'MS ASF Streaming Video' },\n { value: 'video/x-msvideo', label: 'MS Video' },\n { value: 'audio/x-ms-wma', label: 'MS WMA Streaming Audio' },\n { value: 'video/x-ms-wmv', label: 'MS WMV Streaming Video' },\n { value: 'application/x-troff-man', label: 'Man Page' },\n { value: 'text/x-markdown', label: 'Markdown' },\n { value: 'text/mediawiki', label: 'MediaWiki Markup' },\n { value: 'application/vnd.ms-excel', label: 'Microsoft Excel' },\n { value: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', label: 'Microsoft Excel 2007' },\n { value: 'application/vnd.ms-excel.addin.macroenabled.12', label: 'Microsoft Excel 2007 add-in' },\n { value: 'application/vnd.ms-excel.sheet.binary.macroenabled.12', label: 'Microsoft Excel 2007 binary workbook' },\n { value: 'application/vnd.ms-excel.sheet.macroenabled.12', label: 'Microsoft Excel 2007 macro-enabled workbook' },\n { value: 'application/vnd.ms-excel.template.macroenabled.12', label: 'Microsoft Excel 2007 macro-enabled workbook template' },\n { value: 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', label: 'Microsoft Excel template 2007' },\n { value: 'application/vnd.ms-outlook', label: 'Microsoft Outlook Message' },\n { value: 'application/vnd.ms-powerpoint', label: 'Microsoft PowerPoint' },\n { value: 'application/vnd.openxmlformats-officedocument.presentationml.presentation', label: 'Microsoft PowerPoint 2007' },\n { value: 'application/vnd.ms-powerpoint.addin.macroenabled.12', label: 'Microsoft PowerPoint 2007 add-in' },\n { value: 'application/vnd.ms-powerpoint.presentation.macroenabled.12', label: 'Microsoft PowerPoint 2007 macro-enabled presentation' },\n { value: 'application/vnd.ms-powerpoint.template.macroenabled.12', label: 'Microsoft PowerPoint 2007 macro-enabled presentation template' },\n { value: 'application/vnd.ms-powerpoint.slide.macroenabled.12', label: 'Microsoft PowerPoint 2007 macro-enabled slide' },\n { value: 'application/vnd.ms-powerpoint.slideshow.macroenabled.12', label: 'Microsoft PowerPoint 2007 macro-enabled slide show' },\n { value: 'application/vnd.openxmlformats-officedocument.presentationml.slide', label: 'Microsoft PowerPoint 2007 slide' },\n { value: 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', label: 'Microsoft PowerPoint 2007 slide show' },\n { value: 'application/vnd.openxmlformats-officedocument.presentationml.template', label: 'Microsoft PowerPoint 2007 template' },\n { value: 'application/vnd.ms-project', label: 'Microsoft Project' },\n { value: 'application/vnd.visio', label: 'Microsoft Visio' },\n { value: 'application/vnd.visio2013', label: 'Microsoft Visio 2013' },\n { value: 'application/vnd.ms-visio.drawing.macroenabled.main+xml', label: 'Microsoft Visio macro-enabled drawing' },\n { value: 'application/vnd.ms-visio.stencil.macroenabled.main+xml', label: 'Microsoft Visio macro-enabled stencil' },\n { value: 'application/vnd.ms-visio.template.macroenabled.main+xml', label: 'Microsoft Visio macro-enabled template' },\n { value: 'application/vnd.ms-visio.stencil.main+xml', label: 'Microsoft Visio stencil' },\n { value: 'application/vnd.ms-visio.template.main+xml', label: 'Microsoft Visio template' },\n { value: 'application/msword', label: 'Microsoft Word' },\n { value: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', label: 'Microsoft Word 2007' },\n { value: 'application/vnd.ms-word.document.macroenabled.12', label: 'Microsoft Word 2007 macro-enabled document' },\n { value: 'application/vnd.ms-word.template.macroenabled.12', label: 'Microsoft Word 2007 macro-enabled document template' },\n { value: 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', label: 'Microsoft Word 2007 template' },\n { value: 'image/x-raw-minolta', label: 'Minolta RAW Image' },\n { value: 'image/x-raw-nikon', label: 'Nikon RAW Image' },\n { value: 'audio/ogg', label: 'Ogg Audio' },\n { value: 'application/ogg', label: 'Ogg Multiplex' },\n { value: 'video/ogg', label: 'Ogg Video' },\n { value: 'audio/vorbis', label: 'Ogg Vorbis Audio' },\n { value: 'image/x-raw-olympus', label: 'Olympus RAW Image' },\n { value: 'application/vnd.oasis.opendocument.chart', label: 'OpenDocument Chart' },\n { value: 'application/vnd.oasis.opendocument.database', label: 'OpenDocument Database' },\n { value: 'application/vnd.oasis.opendocument.graphics', label: 'OpenDocument Drawing' },\n { value: 'application/vnd.oasis.opendocument.graphics-template', label: 'OpenDocument Drawing Template' },\n { value: 'application/vnd.oasis.opendocument.formula', label: 'OpenDocument Formula' },\n { value: 'application/vnd.oasis.opendocument.image', label: 'OpenDocument Image' },\n { value: 'application/vnd.oasis.opendocument.text-master', label: 'OpenDocument Master Document' },\n { value: 'application/vnd.oasis.opendocument.presentation', label: 'OpenDocument Presentation' },\n { value: 'application/vnd.oasis.opendocument.presentation-template', label: 'OpenDocument Presentation Template' },\n { value: 'application/vnd.oasis.opendocument.spreadsheet', label: 'OpenDocument Spreadsheet' },\n { value: 'application/vnd.oasis.opendocument.spreadsheet-template', label: 'OpenDocument Spreadsheet Template' },\n { value: 'application/vnd.oasis.opendocument.text', label: 'OpenDocument Text (OpenOffice 2.0)' },\n { value: 'application/vnd.oasis.opendocument.text-template', label: 'OpenDocument Text Template' },\n { value: 'application/vnd.sun.xml.calc', label: 'OpenOffice 1.0/StarOffice6.0 Calc 6.0' },\n { value: 'application/vnd.sun.xml.calc.template', label: 'OpenOffice 1.0/StarOffice6.0 Calc 6.0 Template' },\n { value: 'application/vnd.sun.xml.draw', label: 'OpenOffice 1.0/StarOffice6.0 Draw 6.0' },\n { value: 'application/vnd.sun.xml.impress', label: 'OpenOffice 1.0/StarOffice6.0 Impress 6.0' },\n { value: 'application/vnd.sun.xml.impress.template', label: 'OpenOffice 1.0/StarOffice6.0 Impress 6.0 Template' },\n { value: 'application/vnd.sun.xml.writer', label: 'OpenOffice 1.0/StarOffice6.0 Writer 6.0' },\n { value: 'application/vnd.sun.xml.writer.template', label: 'OpenOffice 1.0/StarOffice6.0 Writer 6.0 Template' },\n { value: 'image/png', label: 'PNG Image' },\n { value: 'image/x-raw-panasonic', label: 'Panasonic RAW Image' },\n { value: 'image/x-raw-pentax', label: 'Pentax RAW Image' },\n { value: 'image/x-portable-pixmap', label: 'Pixmap Image' },\n { value: 'text/plain', label: 'Plain Text' },\n { value: 'image/x-portable-bitmap', label: 'Portable Bitmap' },\n { value: 'application/postscript', label: 'PostScript' },\n { value: 'application/remote-printing', label: 'Printer Text File' },\n { value: 'video/quicktime', label: 'Quicktime Video' },\n { value: 'video/x-rad-screenplay', label: 'RAD Screen Display' },\n { value: 'application/x-rar-compressed', label: 'RAR Archive' },\n { value: 'image/x-raw-red', label: 'RED RAW Image' },\n { value: 'image/x-rgb', label: 'RGB Image' },\n { value: 'application/rss+xml', label: 'RSS' },\n { value: 'image/x-cmu-raster', label: 'Raster Image' },\n { value: 'text/richtext', label: 'Rich Text' },\n { value: 'application/rtf', label: 'Rich Text Format' },\n { value: 'video/x-sgi-movie', label: 'SGI Video' },\n { value: 'text/sgml', label: 'SGML (Human Readable)' },\n { value: 'application/sgml', label: 'SGML (Machine Readable)' },\n { value: 'image/svg+xml', label: 'Scalable Vector Graphics Image' },\n { value: 'application/x-sh', label: 'Shell Script' },\n { value: 'application/x-shockwave-flash', label: 'Shockwave Flash' },\n { value: 'image/x-raw-sigma', label: 'Sigma RAW Image' },\n { value: 'image/x-raw-sony', label: 'Sony RAW Image' },\n { value: 'application/vnd.stardivision.chart', label: 'StarChart 5.x' },\n { value: 'application/vnd.stardivision.calc', label: 'StarCalc 5.x' },\n { value: 'application/vnd.stardivision.draw', label: 'StarDraw 5.x' },\n { value: 'application/vnd.stardivision.impress', label: 'StarImpress 5.x' },\n { value: 'application/vnd.stardivision.impress-packed', label: 'StarImpress Packed 5.x' },\n { value: 'application/vnd.stardivision.math', label: 'StarMath 5.x' },\n { value: 'application/vnd.stardivision.writer', label: 'StarWriter 5.x' },\n { value: 'application/vnd.stardivision.writer-global', label: 'StarWriter 5.x global' },\n { value: 'text/css', label: 'Style Sheet' },\n { value: 'image/tiff', label: 'TIFF Image' },\n { value: 'text/tab-separated-values', label: 'Tab Separated Values' },\n { value: 'application/x-tar', label: 'Tarball' },\n { value: 'application/x-tex', label: 'Tex' },\n { value: 'application/x-texinfo', label: 'Tex Info' },\n { value: 'x-world/x-vrml', label: 'VRML' },\n { value: 'audio/x-wav', label: 'WAV Audio' },\n { value: 'video/webm', label: 'WebM Video' },\n { value: 'application/wordperfect', label: 'WordPerfect' },\n { value: 'image/x-xbitmap', label: 'XBitmap Image' },\n { value: 'application/xhtml+xml', label: 'XHTML' },\n { value: 'text/xml', label: 'XML' },\n { value: 'image/x-xpixmap', label: 'XPixmap Image' },\n { value: 'image/x-xwindowdump', label: 'XWindow Dump' },\n { value: 'application/x-compress', label: 'Z Compress' },\n { value: 'application/zip', label: 'ZIP' },\n { value: 'text/calendar', label: 'iCalendar File' }\n];\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { inject, Injectable } from '@angular/core';\nimport { AppConfigService, CloseButtonPosition } from '@alfresco/adf-core';\nimport { AlfrescoMimeType, DefaultMimeTypes } from '../constants/mime-types';\n\n@Injectable({ providedIn: 'root' })\nexport class AppSettingsService {\n private readonly appConfig = inject(AppConfigService);\n\n /**\n * Get the application copyright text from the app settings.\n */\n get appCopyright(): string {\n return this.appConfig.get<string>('application.copyright', '');\n }\n\n /**\n * Get the AOS (Alfresco Office Services) host URL from the app settings.\n */\n get aosHost(): string {\n return this.appConfig.get<string>('aosHost');\n }\n\n /**\n * Get the default landing page from the app settings.\n * Default value: `/personal-files`.\n */\n get landingPage(): string {\n return this.appConfig.get<string>('landingPage', '/personal-files');\n }\n\n /**\n * Get the list of mime types from the app settings.\n */\n get mimeTypes(): AlfrescoMimeType[] {\n return this.appConfig.get<AlfrescoMimeType[]>('mimeTypes', DefaultMimeTypes);\n }\n\n /**\n * Get the application name from the app settings.\n */\n get appName(): string {\n return this.appConfig.get<string>('application.name', 'Alfresco Content Application');\n }\n\n /**\n * Get the application version from the app settings.\n */\n get appVersion(): string {\n return this.appConfig.get<string>('application.version', '1.0.0');\n }\n\n /**\n * Get the application logo URL from the app settings.\n */\n get appLogoUrl(): string {\n return this.appConfig.get<string>('application.logo', 'assets/images/app-logo.svg');\n }\n\n /**\n * Get the custom CSS stylesheet path from the app settings.\n */\n get customCssPath(): string {\n return this.appConfig.get<string>('customCssPath', '');\n }\n\n /**\n * Get the custom web font path from the app settings.\n */\n get webFontPath(): string {\n return this.appConfig.get<string>('webFontPath', '');\n }\n\n /**\n * Get the base share URL from the app settings.\n */\n get baseShareUrl(): string {\n let result = this.appConfig.get<string>('baseShareUrl', '');\n if (!result.endsWith('/')) {\n result += '/';\n }\n return result;\n }\n\n /**\n * Get the viewer close button position from the app settings.\n */\n get viewerCloseButtonPosition(): CloseButtonPosition {\n return this.appConfig.get('viewer.closeButtonPosition', CloseButtonPosition.Right);\n }\n\n /**\n * Get the viewer max retries from the app settings.\n */\n get viewerMaxRetries(): number {\n return this.appConfig.get<number>('viewer.maxRetries', 1);\n }\n\n /**\n * Enabled state of the comment feature for upload dialog\n */\n get uploadAllowComments(): boolean {\n return this.appConfig.get<boolean>('adf-version-manager.allowComments', true);\n }\n\n /**\n * Enabled state of the download feature for upload dialog\n */\n get uploadAllowDownload(): boolean {\n return this.appConfig.get<boolean>('adf-version-manager.allowDownload', true);\n }\n\n /**\n * Allow to view versions if true, disallow otherwise.\n */\n get versionManagerAllowViewVersions(): boolean {\n return this.appConfig.get<boolean>('adf-version-manager.allowViewVersions', true);\n }\n\n /**\n * Allow to delete versions if true, disallow otherwise.\n */\n get versionManagerAllowVersionDelete(): boolean {\n return this.appConfig.get<boolean>('adf-version-manager.allowVersionDelete', true);\n }\n\n /**\n * Allow to open actions menu when true, otherwise hides it.\n */\n get versionManagerShowActions(): boolean {\n return this.appConfig.get<boolean>('adf-version-manager.showActions', true);\n }\n\n /**\n * Gets the enablement of the file auto tryDownload feature from the app settings.\n */\n get autoDownloadEnabled(): boolean {\n return this.appConfig.get<boolean>('viewer.enableFileAutoDownload', true);\n }\n\n /**\n * Gets the file auto tryDownload size threshold in MB from the app settings.\n */\n get authDownloadThreshold(): number {\n return this.appConfig.get<number>('viewer.fileAutoDownloadSizeThresholdInMB', 15);\n }\n\n /**\n * Get the Knowledge Discovery URL from the app settings.\n */\n get knowledgeDiscoveryUrl(): string {\n return this.appConfig.get<string>('knowledgeDiscoveryUrl', '');\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { inject, Injectable } from '@angular/core';\nimport { ProfileState } from '@alfresco/adf-extensions';\nimport { AlfrescoApiService, GroupService } from '@alfresco/adf-content-services';\nimport { BehaviorSubject } from 'rxjs';\nimport { PeopleApi, LazyApi } from '@alfresco/js-api';\n\n@Injectable({ providedIn: 'root' })\nexport class UserProfileService {\n private readonly api = inject(AlfrescoApiService);\n private readonly groupService = inject(GroupService);\n\n @LazyApi((self: UserProfileService) => new PeopleApi(self.api.getInstance()))\n declare private readonly peopleApi: PeopleApi;\n\n private readonly userProfile = new BehaviorSubject<ProfileState>(null);\n userProfile$ = this.userProfile.asObservable();\n\n /**\n * Load user profile.\n */\n async loadUserProfile(): Promise<ProfileState> {\n const groupsEntries = await this.groupService.listAllGroupMembershipsForPerson('-me-', { maxItems: 250 });\n\n const groups = [];\n if (groupsEntries) {\n groups.push(...groupsEntries.map((obj) => obj.entry));\n }\n\n const { entry: user } = await this.peopleApi.getPerson('-me-');\n\n const id = user.id;\n const firstName = user.firstName || '';\n const lastName = user.lastName || '';\n const userName = `${firstName} ${lastName}`;\n const initials = [firstName[0], lastName[0]].join('');\n const email = user.email;\n\n const capabilities = user.capabilities;\n const isAdmin = capabilities ? capabilities.isAdmin : true;\n\n const profile: ProfileState = {\n firstName,\n lastName,\n userName,\n initials,\n isAdmin,\n id,\n groups,\n email\n };\n\n this.userProfile.next(profile);\n return profile;\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { inject, Injectable } from '@angular/core';\nimport {\n AppConfigService,\n AuthenticationService,\n NotificationService,\n PageTitleService,\n StorageService,\n UserPreferencesService\n} from '@alfresco/adf-core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport {\n AlfrescoApiService,\n FileUploadErrorEvent,\n SearchQueryBuilderService,\n SharedLinksApiService,\n UploadService\n} from '@alfresco/adf-content-services';\nimport { OverlayContainer } from '@angular/cdk/overlay';\nimport { ActivatedRoute, ActivationEnd, NavigationStart, Router } from '@angular/router';\nimport { filter, map } from 'rxjs/operators';\nimport { AppStore, ResetSelectionAction, SetCurrentUrlAction, SetRepositoryInfoAction, SetUserProfileAction } from '@alfresco/aca-shared/store';\nimport { ContentApiService } from './content-api.service';\nimport { RouterExtensionService } from './router.extension.service';\nimport { Store } from '@ngrx/store';\nimport { DiscoveryEntry } from '@alfresco/js-api';\nimport { AcaMobileAppSwitcherService } from './aca-mobile-app-switcher.service';\nimport { ShellAppService } from '@alfresco/adf-core/shell';\nimport { AppSettingsService } from './app-settings.service';\nimport { UserProfileService } from './user-profile.service';\nimport { MatDialog } from '@angular/material/dialog';\n\n@Injectable({\n providedIn: 'root'\n})\n// After moving shell to ADF to core, AppService will implement ShellAppService\nexport class AppService implements ShellAppService {\n preferencesService = inject(UserPreferencesService);\n private readonly authenticationService = inject(AuthenticationService);\n private readonly store = inject<Store<AppStore>>(Store);\n private readonly router = inject(Router);\n private readonly activatedRoute = inject(ActivatedRoute);\n private readonly config = inject(AppConfigService);\n private readonly pageTitle = inject(PageTitleService);\n private readonly alfrescoApiService = inject(AlfrescoApiService);\n private readonly uploadService = inject(UploadService);\n private readonly routerExtensionService = inject(RouterExtensionService);\n private readonly contentApi = inject(ContentApiService);\n private readonly sharedLinksApiService = inject(SharedLinksApiService);\n private readonly overlayContainer = inject(OverlayContainer);\n private readonly acaMobileAppSwitcherService = inject(AcaMobileAppSwitcherService);\n private readonly appSettingsService = inject(AppSettingsService);\n private readonly userProfileService = inject(UserProfileService);\n private readonly storage = inject(StorageService);\n\n private readonly notificationService = inject(NotificationService);\n private readonly matDialog = inject(MatDialog);\n private readonly ready: BehaviorSubject<boolean>;\n\n ready$: Observable<boolean>;\n\n private readonly pageHeading = new BehaviorSubject('');\n /** @deprecated page title is updated automatically */\n pageHeading$ = this.pageHeading.asObservable();\n\n appNavNarMode$: Subject<'collapsed' | 'expanded'> = new BehaviorSubject('expanded');\n toggleAppNavBar$ = new Subject<void>();\n\n hideSidenavConditions = ['/preview/'];\n minimizeSidenavConditions = [];\n\n /**\n * Whether `withCredentials` mode is enabled.\n * Usually means that `Kerberos` mode is used.\n */\n get withCredentials(): boolean {\n return this.config.get<boolean>('auth.withCredentials', false);\n }\n\n constructor() {\n const searchQueryBuilderService = inject(SearchQueryBuilderService);\n const acaMobileAppSwitcherService = this.acaMobileAppSwitcherService;\n\n this.ready = new BehaviorSubject(this.authenticationService.isLoggedIn() || this.withCredentials);\n this.ready$ = this.ready.asObservable();\n\n this.authenticationService.onLogin.subscribe(() => {\n this.ready.next(true);\n this.preferencesService.setStoragePrefix(this.authenticationService.getUsername());\n });\n\n this.authenticationService.onLogout.subscribe(() => {\n this.storage.removeItem(this.preferencesService.getPropertyKey('expandedSidenav'));\n searchQueryBuilderService.resetToDefaults();\n acaMobileAppSwitcherService.clearSessionExpireTime();\n acaMobileAppSwitcherService.closeDialog();\n });\n\n this.router.events\n .pipe(\n filter((event) => event instanceof ActivationEnd && event.snapshot.children.length === 0),\n map((event: ActivationEnd) => event.snapshot?.data?.title ?? '')\n )\n .subscribe((title) => {\n this.pageHeading.next(title);\n this.pageTitle.setTitle(title);\n });\n }\n\n init(): void {\n this.alfrescoApiService.getInstance().on('error', (error: { status: number; response: any }) => {\n const shouldNavigateToLogin =\n error.status === 401 &&\n !this.alfrescoApiService.isExcludedErrorListener(error?.response?.req?.url) &&\n !this.authenticationService.isLoggedIn();\n\n if (shouldNavigateToLogin) {\n this.matDialog.closeAll();\n\n let redirectUrl = this.activatedRoute.snapshot.queryParams['redirectUrl'];\n if (!redirectUrl) {\n redirectUrl = this.router.url;\n }\n\n this.router.navigate(['/login'], {\n queryParams: { redirectUrl }\n });\n }\n });\n\n this.loadCustomCss();\n this.loadCustomWebFont();\n\n const { router } = this;\n\n this.router.events.pipe(filter((event) => event instanceof ActivationEnd && event.snapshot.children.length === 0)).subscribe(() => {\n this.store.dispatch(new SetCurrentUrlAction(router.url));\n });\n\n this.router.events.pipe(filter((event) => event instanceof NavigationStart)).subscribe(() => {\n this.store.dispatch(new ResetSelectionAction());\n });\n\n this.routerExtensionService.mapExtensionRoutes();\n\n this.uploadService.fileUploadError.subscribe((error) => this.onFileUploadedError(error));\n\n this.sharedLinksApiService.error.subscribe((err: { message: string }) => {\n if (err?.message) {\n this.notificationService.showError(err.message);\n }\n });\n\n this.ready$.subscribe((isReady) => {\n if (isReady) {\n this.loadRepositoryStatus();\n this.loadUserProfile();\n setTimeout(() => {\n this.openMobileAppDialog();\n });\n }\n });\n\n this.overlayContainer.getContainerElement().setAttribute('role', 'region');\n }\n\n setAppNavbarMode(mode: 'expanded' | 'collapsed'): void {\n this.appNavNarMode$.next(mode);\n this.preferencesService.set('expandedSidenav', mode === 'expanded');\n }\n\n private loadRepositoryStatus() {\n this.contentApi.getRepositoryInformation().subscribe((response: DiscoveryEntry) => {\n if (response?.entry?.repository) {\n this.store.dispatch(new SetRepositoryInfoAction(response.entry.repository));\n }\n });\n }\n\n private async loadUserProfile() {\n const profile = await this.userProfileService.loadUserProfile();\n this.store.dispatch(new SetUserProfileAction(profile));\n }\n\n onFileUploadedError(error: FileUploadErrorEvent) {\n let message = 'APP.MESSAGES.UPLOAD.ERROR.GENERIC';\n\n if (error?.error?.status === 403) {\n message = 'APP.MESSAGES.UPLOAD.ERROR.403';\n }\n\n if (error?.error?.status === 404) {\n message = 'APP.MESSAGES.UPLOAD.ERROR.404';\n }\n\n if (error?.error?.status === 409) {\n message = 'APP.MESSAGES.UPLOAD.ERROR.CONFLICT';\n }\n\n if (error?.error?.status === 500) {\n message = 'APP.MESSAGES.UPLOAD.ERROR.500';\n }\n\n if (error?.error?.status === 504) {\n message = 'APP.MESSAGES.UPLOAD.ERROR.504';\n }\n\n this.notificationService.showError(message);\n }\n\n private loadCustomCss(): void {\n const customCssPath = this.appSettingsService.customCssPath;\n if (customCssPath) {\n this.createLink(customCssPath);\n }\n }\n\n private loadCustomWebFont(): void {\n const webFontPath = this.appSettingsService.webFontPath;\n if (webFontPath) {\n this.createLink(webFontPath);\n }\n }\n\n private createLink(url: string): void {\n const cssLinkElement = document.createElement('link');\n cssLinkElement.setAttribute('rel', 'stylesheet');\n cssLinkElement.setAttribute('type', 'text/css');\n cssLinkElement.setAttribute('href', url);\n document.head.appendChild(cssLinkElement);\n }\n\n public openMobileAppDialog(): void {\n const isMobileSwitchEnabled: boolean = this.config.get<boolean>('mobileAppSwitch.enabled', false);\n if (isMobileSwitchEnabled) {\n this.acaMobileAppSwitcherService.resolveExistenceOfDialog();\n } else {\n this.acaMobileAppSwitcherService.clearSessionExpireTime();\n }\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, ViewEncapsulation, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { AppService } from '../../services/app.service';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AutoFocusDirective } from '@alfresco/adf-content-services';\n\n@Component({\n imports: [CommonModule, TranslatePipe, MatButtonModule, MatIconModule, AutoFocusDirective],\n selector: 'aca-page-layout',\n templateUrl: './page-layout.component.html',\n styleUrls: ['./page-layout.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { class: 'aca-page-layout' }\n})\nexport class PageLayoutComponent {\n private readonly appService = inject(AppService);\n\n @Input()\n hasError = false;\n\n appNavNarMode$: Observable<'collapsed' | 'expanded'>;\n\n constructor() {\n const appService = this.appService;\n\n this.appNavNarMode$ = appService.appNavNarMode$.pipe(takeUntilDestroyed());\n }\n\n toggleClick() {\n this.appService.toggleAppNavBar$.next();\n }\n}\n","<div class=\"aca-content-header\">\n @if ((appNavNarMode$ | async) === 'collapsed') {\n <button\n mat-icon-button\n class=\"aca-content-header-button\"\n (click)=\"toggleClick()\"\n [attr.aria-label]=\"'APP.TOOLTIPS.EXPAND_NAVIGATION' | translate\"\n title=\"{{'APP.TOOLTIPS.EXPAND_NAVIGATION' | translate}}\"\n adf-auto-focus>\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n }\n <ng-content select=\".aca-page-layout-header, aca-page-layout-header\" />\n</div>\n\n@if (hasError) {\n <ng-content select=\".aca-page-layout-error, aca-page-layout-error\" />\n}\n\n@if (!hasError) {\n <ng-content select=\".aca-page-layout-content, aca-page-layout-content\" />\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NgModule } from '@angular/core';\nimport { PageLayoutContentComponent } from './page-layout-content.component';\nimport { PageLayoutErrorComponent } from './page-layout-error.component';\nimport { PageLayoutHeaderComponent } from './page-layout-header.component';\nimport { PageLayoutComponent } from './page-layout.component';\n\n@NgModule({\n imports: [PageLayoutComponent, PageLayoutContentComponent, PageLayoutErrorComponent, PageLayoutHeaderComponent],\n exports: [PageLayoutContentComponent, PageLayoutErrorComponent, PageLayoutHeaderComponent, PageLayoutComponent]\n})\nexport class PageLayoutModule {}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Node, NodeEntry } from '@alfresco/js-api';\n\nexport function isLocked(node: { entry: Node }): boolean {\n if (node?.entry) {\n const { entry } = node;\n\n return entry.isLocked || entry.properties?.['cm:lockType'] === 'READ_ONLY_LOCK' || entry.properties?.['cm:lockType'] === 'WRITE_LOCK';\n } else {\n return false;\n }\n}\n\nexport function isWorkingCopy(nodeEntry: NodeEntry): boolean {\n if (nodeEntry?.entry) {\n const { entry } = nodeEntry;\n\n return entry.aspectNames?.includes('cm:workingcopy') ?? false;\n } else {\n return false;\n }\n}\n\nexport function isLibrary(node: { entry: Node | any }): boolean {\n if (node?.entry) {\n const { entry } = node;\n\n return !!(entry.guid && entry.id && entry.preset && entry.title && entry.visibility) || entry.nodeType === 'st:site';\n } else {\n return false;\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ChangeDetectionStrategy, Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { NodeEntry } from '@alfresco/js-api';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { isWorkingCopy } from '../../utils/node.utils';\n\n@Component({\n imports: [TranslatePipe, MatIconModule],\n selector: 'aca-locked-by',\n template: `\n <mat-icon class=\"aca-locked-by--icon\">lock</mat-icon>\n <span class=\"aca-locked-by--label\">{{ (workingCopy ? 'CHECKOUT.CHECKED_OUT_BY' : 'APP.LOCKED_BY') | translate }}</span>\n <span class=\"aca-locked-by--name\">{{ text }}</span>\n `,\n styleUrls: ['./locked-by.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'aca-locked-by'\n }\n})\nexport class LockedByComponent implements OnInit {\n @Input()\n node: NodeEntry;\n\n workingCopy = false;\n text: string;\n\n ngOnInit(): void {\n this.workingCopy = isWorkingCopy(this.node);\n this.text = this.workingCopy\n ? this.node?.entry?.properties?.['cm:workingCopyOwner']?.displayName\n : this.node?.entry?.properties?.['cm:lockOwner']?.displayName;\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n imports: [MatIconModule, TranslatePipe],\n selector: 'aca-generic-error',\n templateUrl: './generic-error.component.html',\n styleUrls: ['./generic-error.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'aca-generic-error' }\n})\nexport class GenericErrorComponent {\n @Input()\n text = 'APP.MESSAGES.ERRORS.MISSING_CONTENT';\n}\n","<mat-icon class=\"generic-error__icon\">error</mat-icon>\n<p class=\"generic-error__title\">\n {{ text | translate }}\n</p>\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable } from '@angular/core';\nimport { NodePermissions } from '@alfresco/adf-extensions';\nimport { Node, SharedLink, SharedLinkEntry, NodeEntry } from '@alfresco/js-api';\n\nexport type PermissionSource = NodeEntry | SharedLinkEntry | Node;\n\nexport interface PermissionOptions {\n target?: string;\n operation?: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NodePermissionService implements NodePermissions {\n static readonly DEFAULT_OPERATION = 'OR';\n\n private readonly defaultOptions: PermissionOptions = {\n operation: NodePermissionService.DEFAULT_OPERATION,\n target: null\n };\n\n check(source: PermissionSource | PermissionSource[], permissions: string[], options?: PermissionOptions): boolean {\n const opts = Object.assign({}, this.defaultOptions, options || {});\n\n if (!source) {\n return false;\n }\n\n if (Array.isArray(source)) {\n source = source.filter((item) => item);\n\n if (source.length > 0) {\n return source.every((node) => this.isOperationAllowed(node, permissions, opts));\n }\n return false;\n } else {\n return this.isOperationAllowed(source, permissions, opts);\n }\n }\n\n private isOperationAllowed(node: PermissionSource, permissions: string[], options: PermissionOptions): boolean {\n const allowableOperations = this.getAllowableOperations(node, options.target);\n\n if (allowableOperations.length) {\n if (options.operation === NodePermissionService.DEFAULT_OPERATION) {\n return permissions.some((permission) => allowableOperations.includes(permission));\n } else {\n return permissions.every((permission) => allowableOperations.includes(permission));\n }\n }\n\n return false;\n }\n\n private getAllowableOperations(node: PermissionSource, property?: string): string[] {\n let entry: Node | SharedLink;\n\n if ('entry' in node) {\n entry = node.entry;\n } else {\n entry = node;\n }\n\n if (property) {\n return entry[property] || [];\n }\n\n if ('allowableOperationsOnTarget' in entry) {\n return entry.allowableOperationsOnTarget || [];\n } else {\n return entry.allowableOperations || [];\n }\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { EnvironmentProviders, inject, Injectable, provideAppInitializer } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { AppStore, getRuleContext } from '@alfresco/aca-shared/store';\nimport {\n ContentActionRef,\n ContentActionType,\n DocumentListPresetRef,\n ExtensionConfig,\n ExtensionLoaderService,\n ExtensionRef,\n ExtensionService,\n IconRef,\n mergeArrays,\n mergeObjects,\n NavBarGroupRef,\n NavigationState,\n ProfileState,\n reduceEmptyMenus,\n reduceSeparators,\n RuleContext,\n RuleEvaluator,\n SelectionState,\n SidebarTabRef,\n sortByOrder\n} from '@alfresco/adf-extensions';\nimport { AppConfigService, AuthenticationService, LogService } from '@alfresco/adf-core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { NodeEntry, RepositoryInfo } from '@alfresco/js-api';\nimport { ViewerRules } from '../models/viewer.rules';\nimport { Badge, UserProfileSection } from '../models/types';\nimport { NodePermissionService } from '../services/node-permission.service';\nimport { map } from 'rxjs/operators';\nimport { SearchCategory } from '@alfresco/adf-content-services';\n\nexport function provideContentAppExtensions(): EnvironmentProviders[] {\n return [\n provideAppInitializer(() => {\n const service = inject(AppExtensionService);\n return service.load();\n })\n ];\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppExtensionService implements RuleContext {\n readonly auth = inject(AuthenticationService);\n protected readonly store = inject<Store<AppStore>>(Store);\n protected readonly loader = inject(ExtensionLoaderService);\n protected readonly extensions = inject(ExtensionService);\n readonly permissions = inject(NodePermissionService);\n readonly appConfig = inject(AppConfigService);\n protected readonly matIconRegistry = inject(MatIconRegistry);\n protected readonly sanitizer = inject(DomSanitizer);\n protected readonly logger = inject(LogService);\n\n private readonly _references = new BehaviorSubject<ExtensionRef[]>([]);\n bulkActionExecuted$ = new Subject<void>();\n\n navbar: Array<NavBarGroupRef> = [];\n sidebarTabs: Array<SidebarTabRef> = [];\n contentMetadata: any;\n search: any;\n viewerRules: ViewerRules = {};\n\n private readonly _headerActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private readonly _toolbarActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private readonly _viewerToolbarActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private readonly _sharedLinkViewerToolbarActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private readonly _contextMenuActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private readonly _openWithActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private readonly _createActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private readonly _sidebarActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private readonly _badges = new BehaviorSubject<Array<Badge>>([]);\n private readonly _filesDocumentListPreset = new BehaviorSubject<Array<DocumentListPresetRef>>([]);\n private readonly _customMetadataPanels = new BehaviorSubject<Array<ContentActionRef>>([]);\n private readonly _bulkActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private readonly _userProfileSections = new BehaviorSubject<Array<UserProfileSection>>([]);\n\n documentListPresets: {\n libraries: Array<DocumentListPresetRef>;\n favoriteLibraries: Array<DocumentListPresetRef>;\n shared: Array<DocumentListPresetRef>;\n recent: Array<DocumentListPresetRef>;\n favorites: Array<DocumentListPresetRef>;\n trashcan: Array<DocumentListPresetRef>;\n searchLibraries: Array<DocumentListPresetRef>;\n searchResults: Array<DocumentListPresetRef>;\n } = {\n libraries: [],\n favoriteLibraries: [],\n shared: [],\n recent: [],\n favorites: [],\n trashcan: [],\n searchLibraries: [],\n searchResults: []\n };\n\n selection: SelectionState;\n navigation: NavigationState;\n profile: ProfileState;\n repository: RepositoryInfo;\n withCredentials: boolean;\n\n references$: Observable<ExtensionRef[]>;\n filesDocumentListPreset$: Observable<DocumentListPresetRef[]> = this._filesDocumentListPreset.asObservable();\n\n config: ExtensionConfig;\n\n constructor() {\n this.references$ = this._references.asObservable();\n\n this.store.select(getRuleContext).subscribe((result) => {\n this.selection = result.selection;\n this.navigation = result.navigation;\n this.profile = result.profile;\n this.repository = result.repository;\n\n if (this.config) {\n this.setup(this.config);\n }\n });\n }\n\n async load() {\n this.config = await this.extensions.load();\n this.setup(this.config);\n }\n\n setup(config: ExtensionConfig) {\n if (!config) {\n this.logger.error('Extension configuration not found');\n return;\n }\n\n this._headerActions.next(this.loader.getContentActions(config, 'features.header'));\n this._sidebarActions.next(this.loader.getContentActions(config, 'features.sidebar.toolbar'));\n this._toolbarActions.next(this.loader.getContentActions(config, 'features.toolbar'));\n this._viewerToolbarActions.next(this.loader.getContentActions(config, 'features.viewer.toolbarActions'));\n this._sharedLinkViewerToolbarActions.next(this.loader.getContentActions(config, 'features.viewer.shared.toolbarActions'));\n this._contextMenuActions.next(this.loader.getContentActions(config, 'features.contextMenu'));\n this._openWithActions.next(this.loader.getContentActions(config, 'features.viewer.openWith'));\n this._createActions.next(this.loader.getElements<ContentActionRef>(config, 'features.create'));\n this._badges.next(this.loader.getElements<Badge>(config, 'features.badges'));\n this._userProfileSections.next(this.loader.getElements<UserProfileSection>(config, 'features.userProfileSections'));\n this._filesDocumentListPreset.next(this.getDocumentListPreset(config, 'files'));\n this._customMetadataPanels.next(this.loader.getElements<ContentActionRef>(config, 'features.customMetadataPanels'));\n this._bulkActions.next(this.loader.getElements<ContentActionRef>(config, 'features.bulk-actions'));\n\n this.navbar = this.loadNavBar(config);\n this.sidebarTabs = this.loader.getElements<SidebarTabRef>(config, 'features.sidebar.tabs');\n this.contentMetadata = this.loadContentMetadata(config);\n this.search = this.loadSearchForms(config);\n this.search?.forEach((searchSet) => {\n searchSet.categories = searchSet.categories?.filter((category) => this.filterVisible(category));\n });\n\n this.documentListPresets = {\n libraries: this.getDocumentListPreset(config, 'libraries'),\n favoriteLibraries: this.getDocumentListPreset(config, 'favoriteLibraries'),\n shared: this.getDocumentListPreset(config, 'shared'),\n recent: this.getDocumentListPreset(config, 'recent'),\n favorites: this.getDocumentListPreset(config, 'favorites'),\n trashcan: this.getDocumentListPreset(config, 'trashcan'),\n searchLibraries: this.getDocumentListPreset(config, 'search-libraries'),\n searchResults: this.getDocumentListPreset(config, 'search-results')\n };\n\n this.withCredentials = this.appConfig.get<boolean>('auth.withCredentials', false);\n\n if (config.features?.viewer) {\n this.viewerRules = (config.features.viewer['rules'] as ViewerRules) || {};\n }\n\n this.registerIcons(config);\n\n const references = (config.$references || []).filter((entry) => typeof entry === 'object').map((entry) => entry as ExtensionRef);\n this._references.next(references);\n }\n\n protected registerIcons(config: ExtensionConfig) {\n const icons: Array<IconRef> = this.loader.getElements<IconRef>(config, 'features.icons').filter((entry) => !entry.disabled);\n\n for (const icon of icons) {\n const [ns, id] = icon.id.split(':');\n const value = icon.value;\n\n if (!value) {\n this.logger.warn(`Missing icon value for \"${icon.id}\".`);\n } else if (!ns || !id) {\n this.logger.warn(`Incorrect icon id format.`);\n } else {\n this.matIconRegistry.addSvgIconInNamespace(ns, id, this.sanitizer.bypassSecurityTrustResourceUrl(value));\n }\n }\n }\n\n protected loadNavBar(config: ExtensionConfig): Array<NavBarGroupRef> {\n return this.loader.getElements<NavBarGroupRef>(config, 'features.navbar');\n }\n\n protected getDocumentListPreset(config: ExtensionConfig, key: string): DocumentListPresetRef[] {\n return this.loader\n .getElements<DocumentListPresetRef>(config, `features.documentList.${key}`)\n .filter((group) => this.filterVisible(group))\n .filter((entry) => !entry.disabled)\n .map((entry) => {\n entry.resizable = entry.resizable ?? true;\n return entry;\n })\n .sort(sortByOrder);\n }\n\n getApplicationNavigation(elements): Array<NavBarGroupRef> {\n return elements\n .filter((group) => this.filterVisible(group))\n .map((group) => ({\n ...group,\n items: (group.items || [])\n .filter((entry) => !entry.disabled)\n .filter((item) => this.filterVisible(item))\n .sort(sortByOrder)\n .map((item) => {\n if (item.children && item.children.length > 0) {\n item.children = item.children\n .filter((entry) => !entry.disabled)\n .filter((child) => this.filterVisible(child))\n .sort(sortByOrder)\n .map((child) => {\n if (child.component) {\n return {\n ...child\n };\n }\n\n if (!child.click) {\n const childRouteRef = this.extensions.getRouteById(child.route);\n const childUrl = `/${childRouteRef ? childRouteRef.path : child.route}`;\n return {\n ...child,\n url: childUrl\n };\n }\n\n return {\n ...child,\n action: child.click\n };\n });\n\n return {\n ...item\n };\n }\n\n if (item.component) {\n return { ...item };\n }\n\n if (!item.click) {\n const routeRef = this.extensions.getRouteById(item.route);\n const url = `/${routeRef ? routeRef.path : item.route}`;\n return {\n ...item,\n url\n };\n }\n\n return {\n ...item,\n action: item.click\n };\n })\n .reduce(reduceEmptyMenus, [])\n }));\n }\n\n loadContentMetadata(config: ExtensionConfig): any {\n const elements = this.loader.getElements<any>(config, 'features.content-metadata-presets');\n if (!elements.length) {\n return null;\n }\n\n const metadata = this.appConfig.config['content-metadata'] || {};\n\n let presets = mergeObjects({}, ...elements);\n if (metadata.presets) {\n presets = mergeObjects(presets, metadata.presets);\n }\n presets = this.filterDisabled(presets);\n\n metadata.presets = presets;\n\n this.appConfig.config['content-metadata'] = metadata;\n return { presets };\n }\n\n loadSearchForms(config: ExtensionConfig): any {\n const elements = this.loader.getElements<any>(config, 'features.search');\n if (!elements.length) {\n return null;\n }\n\n const search = mergeArrays([], elements)\n .filter((entry) => !entry.disabled)\n .filter((entry) => this.filterVisible(entry))\n .sort(sortByOrder);\n\n this.appConfig.config['search'] = search;\n return search;\n }\n\n filterDisabled(object: Array<{ disabled: boolean }> | { disabled: boolean }) {\n if (Array.isArray(object)) {\n return object.filter((item) => !item.disabled).map((item) => this.filterDisabled(item));\n } else if (typeof object === 'object') {\n if (!object.disabled) {\n Object.keys(object).forEach((prop) => {\n object[prop] = this.filterDisabled(object[prop]);\n });\n return object;\n }\n } else {\n return object;\n }\n }\n\n getSidebarTabs(): Array<SidebarTabRef> {\n return this.sidebarTabs.filter((action) => this.filterVisible(action));\n }\n\n private setActionDisabledFromRule(action: ContentActionRef) {\n let disabled = false;\n\n if (action?.rules?.enabled) {\n disabled = !this.extensions.evaluateRule(action.rules.enabled, this);\n }\n\n return {\n ...action,\n disabled\n };\n }\n\n updateSidebarActions() {\n this._sidebarActions.next(this.loader.getContentActions(this.config, 'features.sidebar.toolbar'));\n }\n\n getCreateActions(): Observable<Array<ContentActionRef>> {\n return this._createActions.pipe(\n map((createActions) =>\n createActions\n .filter((action) => this.filterVisible(action))\n .map((action) => this.copyAction(action))\n .map((action) => this.buildMenu(action))\n .map((action) => this.setActionDisabledFromRule(action))\n )\n );\n }\n\n getBadges(node: NodeEntry): Observable<Array<Badge>> {\n return this._badges.pipe(map((badges) => badges.filter((badge) => this.evaluateRule(badge.rules.visible, node))));\n }\n\n getUserProfileSections(): Observable<Array<UserProfileSection>> {\n return this._userProfileSections.pipe(map((sections) => sections.filter((section) => this.evaluateRule(section.rules.visible))));\n }\n\n getCustomMetadataPanels(node: NodeEntry): Observable<Array<ContentActionRef>> {\n return this._customMetadataPanels.pipe(map((panels) => panels.filter((panel) => this.evaluateRule(panel.rules.visible, node))));\n }\n\n private buildMenu(actionRef: ContentActionRef): ContentActionRef {\n if (actionRef.type === ContentActionType.menu && actionRef.children && actionRef.children.length > 0) {\n const children = actionRef.children.filter((action) => this.filterVisible(action)).map((action) => this.buildMenu(action));\n\n actionRef.children = children\n .map((action) => this.setActionDisabledFromRule(action))\n .sort(sortByOrder)\n .reduce(reduceEmptyMenus, [])\n .reduce(reduceSeparators, []);\n }\n\n return actionRef;\n }\n\n private getAllowedActions(actions: ContentActionRef[]): ContentActionRef[] {\n return (actions || [])\n .filter((action) => this.filterVisible(action))\n .map((action) => {\n if (action.type === ContentActionType.menu) {\n const copy = this.copyAction(action);\n if (copy.children && copy.children.length > 0) {\n copy.children = copy.children\n .filter((entry) => !entry.disabled)\n .filter((childAction) => this.filterVisible(childAction))\n .sort(sortByOrder)\n .reduce(reduceSeparators, []);\n }\n return copy;\n }\n return action;\n })\n .map((action) => this.setActionDisabledFromRule(action))\n .reduce(reduceEmptyMenus, [])\n .reduce(reduceSeparators, []);\n }\n\n getAllowedSidebarActions(): Observable<Array<ContentActionRef>> {\n return this._sidebarActions.pipe(map((sidebarActions) => this.getAllowedActions(sidebarActions)));\n }\n\n getAllowedToolbarActions(): Observable<Array<ContentActionRef>> {\n return this._toolbarActions.pipe(map((toolbarActions) => this.getAllowedActions(toolbarActions)));\n }\n\n getViewerToolbarActions(): Observable<Array<ContentActionRef>> {\n return this._viewerToolbarActions.pipe(map((viewerToolbarActions) => this.getAllowedActions(viewerToolbarActions)));\n }\n\n getBulkActions(): Observable<Array<ContentActionRef>> {\n return this._bulkActions.pipe(map((bulkActions) => this.getAllowedActions(bulkActions)));\n }\n\n getOpenWithActions(): Observable<Array<ContentActionRef>> {\n return this._openWithActions.pipe(map((openWithActions) => this.getAllowedActions(openWithActions)));\n }\n\n getSharedLinkViewerToolbarActions(): Observable<Array<ContentActionRef>> {\n return this._sharedLinkViewerToolbarActions.pipe(\n map((sharedLinkViewerToolbarActions) => (!this.selection.isEmpty ? this.getAllowedActions(sharedLinkViewerToolbarActions) : []))\n );\n }\n\n getHeaderActions(): Observable<Array<ContentActionRef>> {\n return this._headerActions.pipe(\n map((headerActions) =>\n headerActions\n .filter((action) => this.filterVisible(action))\n .map((action) => {\n if (action.type === ContentActionType.menu) {\n const copy = this.copyAction(action);\n if (copy.children && copy.children.length > 0) {\n copy.children = copy.children\n .filter((childAction) => this.filterVisible(childAction))\n .sort(sortByOrder)\n .reduce(reduceEmptyMenus, [])\n .reduce(reduceSeparators, []);\n }\n return copy;\n }\n\n return action;\n })\n .map((action) => this.setActionDisabledFromRule(action))\n .sort(sortByOrder)\n .reduce(reduceEmptyMenus, [])\n .reduce(reduceSeparators, [])\n )\n );\n }\n\n getAllowedContextMenuActions(): Observable<Array<ContentActionRef>> {\n return this._contextMenuActions.pipe(map((contextMenuActions) => (!this.selection.isEmpty ? this.getAllowedActions(contextMenuActions) : [])));\n }\n\n copyAction(action: ContentActionRef): ContentActionRef {\n return {\n ...action,\n children: (action.children || []).map((child) => this.copyAction(child))\n };\n }\n\n filterVisible(action: ContentActionRef | SidebarTabRef | DocumentListPresetRef | SearchCategory): boolean {\n if (action?.rules?.visible) {\n if (Array.isArray(action.rules.visible)) {\n return action.rules.visible.every((rule) => this.extensions.evaluateRule(rule, this));\n }\n return this.extensions.evaluateRule(action.rules.visible, this);\n }\n return true;\n }\n\n isViewerExtensionDisabled(extension: any): boolean {\n if (extension) {\n if (extension.disabled) {\n return true;\n }\n\n if (extension.rules?.disabled) {\n return this.extensions.evaluateRule(extension.rules.disabled, this);\n }\n }\n\n return false;\n }\n\n runActionById(id: string, additionalPayload?: any) {\n const action = this.extensions.getActionById(id);\n if (action) {\n const { type, payload } = action;\n const context = {\n selection: this.selection\n };\n const expression = this.extensions.runExpression(payload, context);\n\n this.store.dispatch({\n type,\n payload: expression,\n configuration: additionalPayload\n });\n } else {\n this.store.dispatch({\n type: id,\n configuration: additionalPayload\n });\n }\n }\n\n // todo: move to ADF/RuleService\n isRuleDefined(ruleId: string): boolean {\n return !!(ruleId && this.getEvaluator(ruleId));\n }\n\n // todo: move to ADF/RuleService\n evaluateRule(ruleId: string | string[], ...args: any[]): boolean {\n let evaluatorList: RuleEvaluator[] = [];\n if (Array.isArray(ruleId)) {\n evaluatorList = ruleId.filter((rule) => !!this.getEvaluator(rule)).map((rule) => this.getEvaluator(rule));\n } else {\n const evaluator = this.getEvaluator(ruleId);\n if (evaluator) {\n evaluatorList.push(evaluator);\n }\n }\n if (evaluatorList?.length > 0) {\n return evaluatorList.every((evaluator) => evaluator(this, ...args));\n }\n\n return false;\n }\n\n getEvaluator(key: string): RuleEvaluator {\n return this.extensions.getEvaluator(key);\n }\n\n canPreviewNode(node: NodeEntry) {\n const rules = this.viewerRules;\n\n if (this.isRuleDefined(rules.canPreview)) {\n const canPreview = this.evaluateRule(rules.canPreview, node);\n\n if (!canPreview) {\n return false;\n }\n }\n\n return true;\n }\n\n canShowViewerNavigation(node: NodeEntry) {\n const rules = this.viewerRules;\n\n if (this.isRuleDefined(rules.showNavigation)) {\n const showNavigation = this.evaluateRule(rules.showNavigation, node);\n if (!showNavigation) {\n return false;\n }\n }\n\n return true;\n }\n\n bulkActionExecuted(): void {\n this.bulkActionExecuted$.next();\n }\n\n isFeatureSupported(feature: string): boolean {\n return this.extensions.evaluateRule(feature, this);\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AfterViewInit, Component, Input, ViewChild, ViewEncapsulation, inject } from '@angular/core';\nimport { ContentActionRef, DynamicExtensionComponent } from '@alfresco/adf-extensions';\nimport { AppExtensionService } from '../../../services/app.extension.service';\nimport { MatMenuItem, MatMenuModule } from '@angular/material/menu';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { IconComponent } from '@alfresco/adf-core';\n\n@Component({\n imports: [TranslatePipe, MatMenuModule, MatDividerModule, IconComponent, DynamicExtensionComponent],\n selector: 'app-toolbar-menu-item',\n templateUrl: './toolbar-menu-item.component.html',\n styleUrls: ['./toolbar-menu-item.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-toolbar-menu-item' }\n})\nexport class ToolbarMenuItemComponent implements AfterViewInit {\n private readonly extensions = inject(AppExtensionService);\n\n @Input()\n actionRef: ContentActionRef;\n @Input()\n menuId?: string;\n\n @ViewChild(MatMenuItem)\n menuItem: MatMenuItem;\n\n @ViewChild(DynamicExtensionComponent)\n dynamicComponent: DynamicExtensionComponent;\n\n runAction() {\n if (this.hasClickAction(this.actionRef)) {\n this.extensions.runActionById(\n this.actionRef.actions.click,\n this.menuId\n ? {\n focusedElementOnCloseSelector: `#${this.menuId.replace(/\\\\/g, '\\\\\\\\').replace(/\\./g, '\\\\.')}`\n }\n : undefined\n );\n }\n }\n\n ngAfterViewInit() {\n if (this.dynamicComponent?.menuItem) {\n this.menuItem = this.dynamicComponent.menuItem;\n }\n }\n\n private hasClickAction(actionRef: ContentActionRef): boolean {\n return !!actionRef?.actions?.click;\n }\n\n trackByActionId(_: number, obj: ContentActionRef): string {\n return obj.id;\n }\n}\n","\n@switch (actionRef.type) {\n @case ('menu') {\n <button [id]=\"actionRef.id\" mat-menu-item role=\"menuitem\" tabindex=\"0\" [disabled]=\"actionRef.disabled\" [matMenuTriggerFor]=\"childMenu\">\n <adf-icon [value]=\"actionRef.icon\" />\n <span data-automation-id=\"menu-item-title\">{{ actionRef.title | translate }}</span>\n </button>\n <mat-menu #childMenu=\"matMenu\" class=\"app-create-menu__sub-menu\">\n @for (child of actionRef.children; track trackByActionId($index, child)) {\n <app-toolbar-menu-item [actionRef]=\"child\" />\n }\n </mat-menu>\n }\n @case ('separator') {\n <mat-divider aria-hidden=\"true\" />\n }\n @case ('custom') {\n <adf-dynamic-component [id]=\"actionRef.component\" />\n }\n @default {\n <button\n [id]=\"actionRef.id\"\n role=\"menuitem\"\n mat-menu-item\n [role]=\"'menuitem'\"\n tabindex=\"0\"\n [disabled]=\"actionRef.disabled\"\n [attr.title]=\"(actionRef.disabled ? actionRef['description-disabled'] : actionRef.description || actionRef.title) | translate\"\n (click)=\"runAction()\"\n >\n <adf-icon [value]=\"actionRef.icon\" class=\"app-toolbar-menu-item--icon\" />\n <span data-automation-id=\"menu-item-title\">{{ actionRef.title | translate }}</span>\n </button>\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, ViewEncapsulation, inject } from '@angular/core';\nimport { ContentActionRef } from '@alfresco/adf-extensions';\nimport { AppExtensionService } from '../../../services/app.extension.service';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ToolbarMenuItemComponent } from '../toolbar-menu-item/toolbar-menu-item.component';\nimport { IconComponent } from '@alfresco/adf-core';\n\nexport enum ToolbarButtonType {\n ICON_BUTTON = 'icon-button',\n FLAT_BUTTON = 'flat-button',\n STROKED_BUTTON = 'stroked-button',\n MENU_ITEM = 'menu-item'\n}\n\n@Component({\n imports: [TranslatePipe, MatButtonModule, ToolbarMenuItemComponent, IconComponent],\n selector: 'app-toolbar-button',\n templateUrl: './toolbar-button.component.html',\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-toolbar-button' }\n})\nexport class ToolbarButtonComponent {\n private readonly extensions = inject(AppExtensionService);\n\n @Input()\n data: {\n buttonType?: ToolbarButtonType;\n color?: string;\n };\n\n @Input()\n type: ToolbarButtonType = ToolbarButtonType.ICON_BUTTON;\n\n @Input()\n color: ThemePalette;\n\n @Input()\n actionRef: ContentActionRef;\n\n runAction() {\n if (this.hasClickAction(this.actionRef)) {\n this.extensions.runActionById(this.actionRef.actions.click, {\n focusedElementOnCloseSelector: `#${this.actionRef.id.replace(/\\\\/g, '\\\\\\\\').replace(/\\./g, '\\\\.')}`\n });\n }\n }\n\n private hasClickAction(actionRef: ContentActionRef): boolean {\n return !!actionRef?.actions?.click;\n }\n}\n","\n@switch (data?.buttonType || type) {\n @case ('icon-button') {\n <button\n [id]=\"actionRef.id\"\n mat-icon-button\n [color]=\"color\"\n [attr.aria-label]=\"actionRef.description || actionRef.title | translate\"\n [attr.title]=\"actionRef.description || actionRef.title | translate\"\n [disabled]=\"actionRef.disabled\"\n (click)=\"runAction()\"\n >\n <adf-icon [value]=\"actionRef.icon\" />\n </button>\n }\n @case ('flat-button') {\n <button\n [id]=\"actionRef.id\"\n [color]=\"data?.color || color\"\n mat-flat-button\n [attr.aria-label]=\"actionRef.description || actionRef.title | translate\"\n [attr.title]=\"actionRef.description || actionRef.title | translate\"\n [disabled]=\"actionRef.disabled\"\n (click)=\"runAction()\"\n >\n @if (actionRef.title) {\n <span>{{ actionRef.title | translate }}</span>\n }\n </button>\n }\n @case ('stroked-button') {\n <button\n [id]=\"actionRef.id\"\n [color]=\"data?.color || color\"\n mat-stroked-button\n [attr.aria-label]=\"actionRef.description || actionRef.title | translate\"\n [attr.title]=\"actionRef.description || actionRef.title | translate\"\n [disabled]=\"actionRef.disabled\"\n (click)=\"runAction()\"\n >\n @if (actionRef.title) {\n <span>{{ actionRef.title | translate }}</span>\n }\n </button>\n }\n @case ('menu-item') {\n <app-toolbar-menu-item [actionRef]=\"actionRef\" />\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, ViewEncapsulation, HostListener, ViewChild, ViewChildren, QueryList, AfterViewInit, OnInit } from '@angular/core';\nimport { ContentActionRef, ContentActionType, DynamicExtensionComponent } from '@alfresco/adf-extensions';\nimport { MatMenu, MatMenuItem, MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\nimport { ThemePalette } from '@angular/material/core';\nimport { ToolbarMenuItemComponent } from '../toolbar-menu-item/toolbar-menu-item.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { IconComponent } from '@alfresco/adf-core';\n\n@Component({\n imports: [TranslatePipe, MatButtonModule, MatMenuModule, ToolbarMenuItemComponent, IconComponent, DynamicExtensionComponent],\n selector: 'app-toolbar-menu',\n templateUrl: './toolbar-menu.component.html',\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-toolbar-menu' }\n})\nexport class ToolbarMenuComponent implements OnInit, AfterViewInit {\n @Input()\n actionRef: ContentActionRef;\n\n @Input()\n color: ThemePalette;\n\n @ViewChild('matTrigger')\n matTrigger: MatMenuTrigger;\n\n @ViewChild(MatMenu)\n menu: MatMenu;\n\n @ViewChildren(ToolbarMenuItemComponent)\n toolbarMenuItems: QueryList<ToolbarMenuItemComponent>;\n\n @ViewChildren(DynamicExtensionComponent)\n dynamicExtensionComponents: QueryList<DynamicExtensionComponent>;\n\n @Input()\n data: {\n menuType?: string;\n color?: string;\n };\n\n type = 'default';\n\n @HostListener('document:keydown.Escape')\n handleKeydownEscape() {\n this.matTrigger.closeMenu();\n }\n\n ngOnInit(): void {\n this.type = this.data?.menuType || 'default';\n }\n\n ngAfterViewInit(): void {\n const dynamicComponentMap = new Map<string, DynamicExtensionComponent>(\n this.dynamicExtensionComponents.map((component) => [component.id, component])\n );\n\n const toolbarItemMap = new Map<string, ToolbarMenuItemComponent>();\n this.toolbarMenuItems.forEach((item) => {\n if (item.actionRef?.id) {\n toolbarItemMap.set(item.actionRef.id, item);\n }\n });\n\n const menuItems: MatMenuItem[] = [];\n this.actionRef.children?.forEach((child) => {\n if (child.type === ContentActionType.custom) {\n const componentId = child.component || child.id;\n const component = dynamicComponentMap.get(componentId);\n if (component?.menuItem) {\n menuItems.push(component.menuItem);\n }\n } else {\n const toolbarItem = toolbarItemMap.get(child.id);\n if (toolbarItem?.menuItem) {\n menuItems.push(toolbarItem.menuItem);\n }\n }\n });\n\n const menuItemsQueryList = new QueryList<MatMenuItem>();\n menuItemsQueryList.reset(menuItems);\n this.menu._allItems = menuItemsQueryList;\n this.menu.ngAfterContentInit();\n }\n\n trackByActionId(_: number, obj: ContentActionRef): string {\n return obj.id;\n }\n}\n","\n@switch (type) {\n @case ('button') {\n <button\n [id]=\"actionRef.id\"\n [color]=\"data?.color || color\"\n mat-button\n [attr.aria-label]=\"actionRef.description || actionRef.title | translate\"\n [attr.title]=\"actionRef.description || actionRef.title | translate\"\n [matMenuTriggerFor]=\"menu\"\n [disabled]=\"actionRef.disabled\"\n #matTrigger=\"matMenuTrigger\"\n >\n @if (actionRef.title) {\n <span>{{ actionRef.title | translate }}</span>\n }\n </button>\n }\n @case ('flat-button') {\n <button\n [id]=\"actionRef.id\"\n [color]=\"data?.color || color\"\n mat-flat-button\n [attr.aria-label]=\"actionRef.description || actionRef.title | translate\"\n [attr.title]=\"actionRef.description || actionRef.title | translate\"\n [matMenuTriggerFor]=\"menu\"\n [disabled]=\"actionRef.disabled\"\n #matTrigger=\"matMenuTrigger\"\n >\n @if (actionRef.title) {\n <span>{{ actionRef.title | translate }}</span>\n }\n </button>\n }\n @case ('stroked-button') {\n <button\n [id]=\"actionRef.id\"\n [color]=\"data?.color || color\"\n mat-stroked-button\n [attr.aria-label]=\"actionRef.description || actionRef.title | translate\"\n [attr.title]=\"actionRef.description || actionRef.title | translate\"\n [matMenuTriggerFor]=\"menu\"\n [disabled]=\"actionRef.disabled\"\n #matTrigger=\"matMenuTrigger\"\n >\n @if (actionRef.title) {\n <span>{{ actionRef.title | translate }}</span>\n }\n </button>\n }\n @default {\n <button\n [id]=\"actionRef.id\"\n [color]=\"data?.color || color\"\n mat-icon-button\n [attr.aria-label]=\"actionRef.description || actionRef.title | translate\"\n [attr.title]=\"actionRef.description || actionRef.title | translate\"\n [matMenuTriggerFor]=\"menu\"\n [disabled]=\"actionRef.disabled\"\n #matTrigger=\"matMenuTrigger\"\n >\n @if (actionRef.icon) {\n <adf-icon [value]=\"actionRef.icon\" />\n }\n </button>\n }\n}\n\n<mat-menu #menu=\"matMenu\" [overlapTrigger]=\"false\" [xPosition]=\"'before'\">\n @for (child of actionRef.children; track trackByActionId($index, child)) {\n @switch (child.type) {\n @case ('custom') {\n <adf-dynamic-component [id]=\"child.component\" [data]=\"child.data\" />\n }\n @default {\n <app-toolbar-menu-item [actionRef]=\"child\" [menuId]=\"actionRef.id\" />\n }\n }\n }\n</mat-menu>\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation, ChangeDetectionStrategy, Input, DoCheck, ChangeDetectorRef, inject } from '@angular/core';\nimport { ContentActionRef, DynamicExtensionComponent } from '@alfresco/adf-extensions';\nimport { ToolbarButtonComponent, ToolbarButtonType } from '../toolbar-button/toolbar-button.component';\nimport { ThemePalette } from '@angular/material/core';\nimport { ToolbarMenuComponent } from '../toolbar-menu/toolbar-menu.component';\n\n@Component({\n imports: [ToolbarButtonComponent, ToolbarMenuComponent, DynamicExtensionComponent],\n selector: 'aca-toolbar-action',\n templateUrl: './toolbar-action.component.html',\n styleUrl: './toolbar-action.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'aca-toolbar-action' }\n})\nexport class ToolbarActionComponent implements DoCheck {\n private readonly cd = inject(ChangeDetectorRef);\n\n @Input()\n data: {\n buttonType?: ToolbarButtonType;\n color?: string;\n };\n\n @Input()\n type: ToolbarButtonType = ToolbarButtonType.ICON_BUTTON;\n\n @Input()\n color: ThemePalette;\n\n @Input()\n actionRef: ContentActionRef;\n\n // todo: review after ADF 2.6\n // preview component : change detection workaround for children without input\n ngDoCheck() {\n if (this.actionRef.id.includes('app.viewer')) {\n this.cd.markForCheck();\n }\n }\n}\n","\n@switch (actionRef.type) {\n @case ('default') {\n <div>\n <app-toolbar-button [type]=\"type\" [actionRef]=\"actionRef\" [color]=\"color\" />\n </div>\n }\n @case ('button') {\n <div>\n <app-toolbar-button [type]=\"data?.buttonType || type\" [actionRef]=\"actionRef\" [color]=\"color\" [data]=\"actionRef.data\" />\n </div>\n }\n @case ('separator') {\n <div [id]=\"actionRef.id\" class=\"aca-toolbar-divider\"></div>\n }\n @case ('menu') {\n <app-toolbar-menu [actionRef]=\"actionRef\" [color]=\"color\" [data]=\"actionRef.data\" />\n }\n @case ('custom') {\n <div>\n <adf-dynamic-component [data]=\"actionRef.data\" [id]=\"actionRef.component\" />\n </div>\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { ContentActionRef } from '@alfresco/adf-extensions';\nimport { ToolbarActionComponent } from './toolbar-action/toolbar-action.component';\nimport { MatToolbarModule } from '@angular/material/toolbar';\n\n@Component({\n selector: 'aca-toolbar',\n imports: [ToolbarActionComponent, MatToolbarModule],\n templateUrl: './toolbar.component.html',\n styleUrls: ['./toolbar.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ToolbarComponent {\n @Input({ required: true }) items: ContentActionRef[];\n\n trackByActionId(_: number, action: ContentActionRef) {\n return action.id;\n }\n}\n","<mat-toolbar class=\"aca-toolbar\">\n @for (item of items; track trackByActionId($index, item)) {\n <aca-toolbar-action [actionRef]=\"item\" />\n }\n</mat-toolbar>\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, DestroyRef, HostListener, inject, Input, OnChanges, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Node, NodeEntry, SiteEntry } from '@alfresco/js-api';\nimport { ContentActionRef, DynamicTabComponent, SidebarTabRef } from '@alfresco/adf-extensions';\nimport { Store } from '@ngrx/store';\nimport { infoDrawerPreview, SetInfoDrawerStateAction, ToggleInfoDrawerAction } from '@alfresco/aca-shared/store';\nimport { AppExtensionService } from '../../services/app.extension.service';\nimport { ContentApiService } from '../../services/content-api.service';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { InfoDrawerComponent as AdfInfoDrawerComponent, InfoDrawerTabComponent } from '@alfresco/adf-core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { ToolbarComponent } from '../toolbar/toolbar.component';\nimport { ContentService, NodesApiService } from '@alfresco/adf-content-services';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n imports: [TranslatePipe, MatProgressBarModule, AdfInfoDrawerComponent, A11yModule, ToolbarComponent, DynamicTabComponent, InfoDrawerTabComponent],\n selector: 'aca-info-drawer',\n templateUrl: './info-drawer.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class InfoDrawerComponent implements OnChanges, OnInit, OnDestroy {\n private readonly store = inject<Store<any>>(Store);\n private readonly contentApi = inject(ContentApiService);\n private readonly extensions = inject(AppExtensionService);\n private readonly nodesService = inject(NodesApiService);\n private readonly contentService = inject(ContentService);\n\n @Input()\n nodeId: string;\n\n @Input({ required: true })\n node: NodeEntry;\n\n isLoading = false;\n displayNode: Node | SiteEntry;\n tabs: Array<SidebarTabRef> = [];\n actions: Array<ContentActionRef> = [];\n\n preventFromClosing = false;\n icon: string = null;\n\n @HostListener('keydown.escape')\n onEscapeKeyboardEvent(): void {\n this.close();\n }\n\n private readonly destroyRef = inject(DestroyRef);\n\n ngOnInit() {\n this.tabs = this.extensions.getSidebarTabs();\n this.extensions\n .getAllowedSidebarActions()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((actions) => {\n this.actions = actions;\n });\n\n this.store\n .select(infoDrawerPreview)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((isInfoDrawerPreviewOpened) => {\n this.preventFromClosing = isInfoDrawerPreviewOpened;\n });\n\n this.nodesService.nodeUpdated.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((node: any) => {\n this.node.entry = node;\n });\n }\n\n ngOnDestroy() {\n if (!this.preventFromClosing) {\n this.store.dispatch(new SetInfoDrawerStateAction(false));\n }\n }\n\n ngOnChanges() {\n if (this.node) {\n if (this.node['isLibrary']) {\n return this.setDisplayNode(this.node);\n }\n\n const entry: any = this.node.entry;\n\n const id = entry.nodeId || entry.id;\n return this.loadNodeInfo(id);\n }\n }\n\n private close() {\n this.store.dispatch(new ToggleInfoDrawerAction());\n }\n\n private loadNodeInfo(nodeId: string) {\n if (nodeId) {\n this.isLoading = true;\n\n this.contentApi.getNodeInfo(nodeId).subscribe(\n (entity) => {\n this.setDisplayNode(entity);\n this.node.entry = entity;\n this.isLoading = false;\n },\n () => (this.isLoading = false)\n );\n }\n }\n\n private setDisplayNode(node: any) {\n this.displayNode = node;\n this.icon = this.contentService.getNodeIcon(node);\n }\n}\n","@if (isLoading) {\n <div>\n <mat-progress-bar mode=\"indeterminate\" [attr.aria-label]=\"'APP.INFO_DRAWER.DATA_LOADING' | translate\" />\n </div>\n}\n@if (!isLoading && !!displayNode) {\n <adf-info-drawer class=\"aca-info-drawer\" [icon]=\"icon\" [title]=\"node?.entry?.name || 'APP.INFO_DRAWER.TITLE'\" cdkTrapFocusAutoCapture>\n <aca-toolbar [items]=\"actions\" info-drawer-buttons />\n @for (tab of tabs; track tab.component) {\n <adf-info-drawer-tab [icon]=\"tab.icon\" [label]=\"tab.title\">\n <adf-dynamic-tab [node]=\"$any(displayNode)\" [id]=\"tab.component\" [attr.data-automation-id]=\"tab.component\" />\n </adf-info-drawer-tab>\n }\n </adf-info-drawer>\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NodeEntry, Node } from '@alfresco/js-api';\n\nexport abstract class DocumentBasePageService {\n abstract canUpdateNode(node: NodeEntry): boolean;\n abstract canUploadContent(node: Node): boolean;\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { inject, Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { NodeEntry } from '@alfresco/js-api';\nimport { FileAutoDownloadComponent } from '@alfresco/adf-content-services';\n\nconst BYTES_TO_MB_CONVERSION_VALUE = 1048576;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AutoDownloadService {\n private readonly dialog = inject(MatDialog);\n\n private shouldDownload(node: NodeEntry, threshold: number): boolean {\n const fileSizeInBytes = node?.entry?.content?.sizeInBytes || 0;\n const sizeInMB = fileSizeInBytes / BYTES_TO_MB_CONVERSION_VALUE;\n\n return sizeInMB && sizeInMB > threshold;\n }\n\n /**\n * Opens the dialog to download the node content.\n * Determines whether node content should be auto downloaded based on the file size and the configured threshold.\n * @param node node entry\n * @param threshold file size threshold in MB\n */\n tryDownload(node: NodeEntry, threshold: number): boolean {\n if (this.shouldDownload(node, threshold)) {\n this.dialog.open(FileAutoDownloadComponent, { disableClose: true, data: node });\n return true;\n }\n\n return false;\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { DocumentListComponent, DocumentListService, ShareDataRow, UploadService } from '@alfresco/adf-content-services';\nimport { ShowHeaderMode } from '@alfresco/adf-core';\nimport { ContentActionRef, DocumentListPresetRef, SelectionState } from '@alfresco/adf-extensions';\nimport { DestroyRef, Directive, HostListener, inject, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewChild } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Node, NodeEntry, NodePaging } from '@alfresco/js-api';\nimport { Observable, Subscription } from 'rxjs';\nimport { DocumentBasePageService } from './document-base-page.service';\nimport {\n AppStore,\n getAppSelection,\n getCurrentFolder,\n isInfoDrawerOpened,\n SetSelectedNodesAction,\n ViewNodeAction,\n ViewNodeExtras\n} from '@alfresco/aca-shared/store';\nimport { AppExtensionService } from '../../services/app.extension.service';\nimport { isLibrary } from '../../utils/node.utils';\nimport { AutoDownloadService } from '../../services/auto-download.service';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { Router } from '@angular/router';\nimport { AppSettingsService } from '../../services/app-settings.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/* eslint-disable @angular-eslint/directive-class-suffix */\n@Directive()\nexport abstract class PageComponent implements OnInit, OnDestroy, OnChanges {\n @ViewChild(DocumentListComponent)\n documentList: DocumentListComponent;\n\n title = 'Page';\n infoDrawerOpened$: Observable<boolean>;\n node: Node;\n selection: SelectionState;\n actions: Array<ContentActionRef> = [];\n viewerToolbarActions: Array<ContentActionRef> = [];\n bulkActions: ContentActionRef[] = [];\n canUpdateNode = false;\n canUpload = false;\n nodeResult: NodePaging;\n showHeader: ShowHeaderMode = ShowHeaderMode.Data;\n filterSorting = 'name-asc';\n createActions: ContentActionRef[] = [];\n isSmallScreen = false;\n selectedRowItemsCount = 0;\n selectedNodesState: SelectionState;\n\n protected documentListService = inject(DocumentListService);\n protected settings = inject(AppSettingsService);\n protected extensions = inject(AppExtensionService);\n protected content = inject(DocumentBasePageService);\n protected store = inject<Store<AppStore>>(Store<AppStore>);\n protected breakpointObserver = inject(BreakpointObserver);\n protected uploadService = inject(UploadService);\n protected router = inject(Router);\n\n protected readonly destroyRef = inject(DestroyRef);\n\n private readonly autoDownloadService = inject(AutoDownloadService, { optional: true });\n\n protected subscriptions: Subscription[] = [];\n\n ngOnInit() {\n this.extensions\n .getCreateActions()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((actions) => {\n this.createActions = actions;\n });\n\n this.infoDrawerOpened$ = this.store.select(isInfoDrawerOpened);\n\n this.store\n .select(getAppSelection)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((selection) => {\n this.selection = selection;\n this.canUpdateNode = this.selection.count === 1 && this.content.canUpdateNode(selection.first);\n });\n\n this.extensions\n .getAllowedToolbarActions()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((actions) => {\n this.actions = actions;\n });\n\n this.extensions\n .getBulkActions()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((actions) => {\n this.bulkActions = actions;\n });\n\n this.extensions\n .getViewerToolbarActions()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((actions) => {\n this.viewerToolbarActions = actions;\n });\n\n this.store\n .select(getCurrentFolder)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((node) => {\n this.canUpload = node && this.content.canUploadContent(node);\n });\n\n this.breakpointObserver\n .observe([Breakpoints.HandsetPortrait, Breakpoints.HandsetLandscape])\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((result) => {\n this.isSmallScreen = result.matches;\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.nodeResult?.currentValue) {\n this.nodeResult = changes.nodeResult.currentValue;\n }\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\n this.subscriptions = [];\n\n this.store.dispatch(new SetSelectedNodesAction([]));\n }\n\n showPreview(node: NodeEntry, extras?: ViewNodeExtras) {\n if (node?.entry) {\n if (!this.settings.autoDownloadEnabled || !this.autoDownloadService.tryDownload(node, this.settings.authDownloadThreshold)) {\n let id: string;\n\n if (node.entry.nodeType === 'app:filelink') {\n id = node.entry.properties['cm:destination'];\n } else {\n id = (node as any).entry.nodeId || (node as any).entry.guid || node.entry.id;\n }\n\n this.store.dispatch(new ViewNodeAction(id, extras));\n }\n }\n }\n\n onSelectedItemsCountChanged(count: number) {\n this.selectedRowItemsCount = count;\n }\n\n getParentNodeId(): string {\n return this.node ? this.node.id : null;\n }\n\n imageResolver(row: ShareDataRow): string | null {\n if (row && isLibrary(row.node)) {\n return 'material-icons://library_books';\n }\n\n return null;\n }\n\n reload(selectedNode?: NodeEntry): void {\n if (this.isOutletPreviewUrl()) {\n return;\n }\n\n this.documentListService.reload();\n if (selectedNode) {\n this.store.dispatch(new SetSelectedNodesAction([selectedNode]));\n }\n }\n\n reloadWithoutResettingSelection(): void {\n if (this.isOutletPreviewUrl()) {\n return;\n }\n this.documentListService.reloadSilently();\n }\n\n trackByActionId(_: number, action: ContentActionRef) {\n return action.id;\n }\n\n trackById(_: number, obj: { id: string }) {\n return obj.id;\n }\n\n trackByColumnId(_: number, obj: DocumentListPresetRef): string {\n return obj.id;\n }\n\n private isOutletPreviewUrl(): boolean {\n return location.href.includes('viewer:view');\n }\n\n @HostListener('sorting-changed', ['$event'])\n onSortingChanged(event: any) {\n this.filterSorting = event.detail.key + '-' + event.detail.direction;\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './mime-types';\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { DestroyRef, Directive, HostListener, inject, Input, OnInit } from '@angular/core';\nimport { debounceTime } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { AppStore, ContextMenu, CustomContextMenu } from '@alfresco/aca-shared/store';\nimport { ContentActionRef } from '@alfresco/adf-extensions';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n standalone: true,\n selector: '[acaContextActions]',\n exportAs: 'acaContextActions'\n})\nexport class ContextActionsDirective implements OnInit {\n private readonly store = inject<Store<AppStore>>(Store);\n\n // eslint-disable-next-line\n @Input('acaContextEnable')\n enabled = true;\n\n @Input()\n customActions: ContentActionRef[] = [];\n\n @HostListener('contextmenu', ['$event'])\n onContextMenuEvent(event: MouseEvent) {\n if (event) {\n event.preventDefault();\n\n if (this.enabled) {\n const target = this.getTarget(event);\n if (target) {\n this.execute(event, target);\n }\n }\n }\n }\n\n private readonly execute$: Subject<any> = new Subject();\n\n private readonly destroyRef = inject(DestroyRef);\n\n ngOnInit() {\n this.execute$.pipe(debounceTime(300), takeUntilDestroyed(this.destroyRef)).subscribe((event: MouseEvent) => {\n if (this.customActions?.length) {\n this.store.dispatch(new CustomContextMenu(event, this.customActions));\n } else {\n this.store.dispatch(new ContextMenu(event));\n }\n });\n }\n execute(event: MouseEvent, target: Element) {\n if (!this.isSelected(target)) {\n target.dispatchEvent(new MouseEvent('click'));\n }\n\n if (this.isEmptyTable(target)) {\n return null;\n }\n\n this.execute$.next(event);\n }\n\n private getTarget(event: MouseEvent): Element {\n const target = event.target as Element;\n return this.findAncestor(target, 'adf-datatable-cell');\n }\n\n private isSelected(target: Element): boolean {\n if (!target) {\n return false;\n }\n\n return this.findAncestor(target, 'adf-datatable-row').classList.contains('adf-is-selected');\n }\n\n private isEmptyTable(target: Element): boolean {\n return this.findAncestor(target, 'adf-datatable-cell').classList.contains('adf-no-content-container');\n }\n\n private findAncestor(el: Element, className: string): Element {\n while (el && !el.classList.contains(className)) {\n el = el.parentElement;\n }\n return el;\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { DestroyRef, Directive, inject, OnInit } from '@angular/core';\nimport { AppConfigService, PaginationComponent, PaginationModel, UserPreferencesService } from '@alfresco/adf-core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n standalone: true,\n selector: '[acaPagination]'\n})\nexport class PaginationDirective implements OnInit {\n private readonly pagination = inject(PaginationComponent);\n private readonly preferences = inject(UserPreferencesService);\n private readonly config = inject(AppConfigService);\n\n private readonly destroyRef = inject(DestroyRef);\n\n ngOnInit() {\n this.pagination.supportedPageSizes = this.config.get('pagination.supportedPageSizes');\n this.pagination.changePageSize.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event: PaginationModel) => {\n this.preferences.paginationSize = event.maxItems;\n });\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ContentActionRef } from '@alfresco/adf-extensions';\nimport { Route } from '@angular/router';\n\nexport interface ExtensionRoute extends Route {\n parentRoute?: string;\n}\n\nexport interface Badge extends Partial<Pick<ContentActionRef, 'component' | 'actions' | 'rules'>> {\n id: string;\n icon: string;\n tooltip: string;\n}\n\nexport interface UserProfileSection extends Partial<Pick<ContentActionRef, 'component' | 'rules'>> {\n id: string;\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport interface ViewerRules {\n /**\n * Checks if user can preview the node.\n */\n canPreview?: string;\n\n /**\n * Shows navigation options\n */\n showNavigation?: string;\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { CanActivateFn } from '@angular/router';\nimport { inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { AppStore, isQuickShareEnabled } from '@alfresco/aca-shared/store';\n\nexport const AppSharedRuleGuard: CanActivateFn = (): Observable<boolean> => {\n const store = inject(Store<AppStore>);\n return store.select(isQuickShareEnabled);\n};\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ActivatedRouteSnapshot, Router, CanActivateFn } from '@angular/router';\nimport { inject } from '@angular/core';\nimport { AppConfigService } from '@alfresco/adf-core';\n\nexport const PluginEnabledGuard: CanActivateFn = (route: ActivatedRouteSnapshot) => {\n const appConfigService = inject(AppConfigService);\n const router = inject(Router);\n\n const isPluginEnabled = appConfigService.get(route.data.plugin, true);\n\n if (!isPluginEnabled) {\n router.navigate(['/']);\n }\n\n return isPluginEnabled;\n};\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { NodeEntry, SiteEntry } from '@alfresco/js-api';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppHookService {\n /**\n * Gets emitted when user delete the node\n */\n nodesDeleted = new Subject<void>();\n\n /**\n * Gets emitted when user delete the library\n */\n libraryDeleted = new Subject<string>();\n\n /**\n * Gets emitted when user create the library\n */\n libraryCreated = new Subject<SiteEntry>();\n\n /**\n * Gets emitted when user update the library\n */\n libraryUpdated = new Subject<SiteEntry>();\n\n /**\n * Gets emitted when library update fails\n */\n libraryUpdateFailed = new Subject<void>();\n\n /**\n * Gets emitted when user join the library\n */\n libraryJoined = new Subject<void>();\n\n /**\n * Gets emitted when user left the library\n */\n libraryLeft = new Subject<string>();\n\n /**\n * Gets emitted when library throws 400 error code\n */\n library400Error = new Subject<void>();\n\n /**\n * Gets emitted when user join the library\n */\n joinLibraryToggle = new Subject<void>();\n\n /**\n * Gets emitted when user unlink the node\n */\n linksUnshared = new Subject<void>();\n\n /**\n * Gets emitted when user mark the favorite library\n */\n favoriteLibraryToggle = new Subject<void>();\n\n /**\n * Holds the node that should be pre-selected in the document list after navigation.\n */\n nodeToSelect$ = new BehaviorSubject<NodeEntry | null>(null);\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter, startWith } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class NavigationHistoryService {\n private readonly router = inject(Router);\n\n history: string[] = [];\n\n listenToRouteChanges(): Observable<NavigationEnd> {\n return this.router.events.pipe(\n startWith(new NavigationEnd(0, this.router.url, this.router.url)),\n filter((event: NavigationEnd) => event instanceof NavigationEnd)\n );\n }\n\n shouldReturnLastSelection(url: string): boolean {\n return (\n this.history.length > 2 &&\n this.history[this.history.length - 2].startsWith(url) &&\n [...this.history]\n .reverse()\n .slice(1)\n .find((oldUrl) => !oldUrl.startsWith(url)) === this.history[this.history.length - 1]\n );\n }\n\n setHistory(event: NavigationEnd): void {\n this.history.push(event.urlAfterRedirects);\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable, NgModule } from '@angular/core';\nimport { NoopAnimationsModule } from '@angular/platform-browser/animations';\nimport { NoopTranslateModule } from '@alfresco/adf-core';\nimport { AlfrescoApiService, AlfrescoApiServiceMock } from '@alfresco/adf-content-services';\nimport { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport { RouterTestingModule } from '@angular/router/testing';\nimport { provideEffects } from '@ngrx/effects';\nimport { provideStore } from '@ngrx/store';\nimport { MatIconTestingModule } from '@angular/material/icon/testing';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { RepositoryInfo, VersionInfo } from '@alfresco/js-api';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { DocumentBasePageService } from '../../public-api';\n\nexport const initialState = {\n app: {\n appName: 'Alfresco Content Application',\n logoPath: 'assets/images/updated-alfresco-logo.svg',\n sharedUrl: '',\n user: {\n isAdmin: null,\n id: null,\n firstName: '',\n lastName: ''\n },\n selection: {\n nodes: [],\n libraries: [],\n isEmpty: true,\n count: 0\n },\n navigation: {\n currentFolder: null\n },\n infoDrawerOpened: false,\n infoDrawerMetadataAspect: '',\n showFacetFilter: true,\n repository: {\n status: {\n isQuickShareEnabled: true\n }\n } as any\n }\n};\n\nexport const discoveryApiServiceMockValue = {\n ecmProductInfo$: new BehaviorSubject<RepositoryInfo | null>(null),\n getEcmProductInfo: (): Observable<RepositoryInfo> =>\n of(\n new RepositoryInfo({\n version: {\n major: '10.0.0'\n } as VersionInfo\n })\n )\n};\n\n@Injectable()\nexport class DocumentBasePageServiceMock extends DocumentBasePageService {\n canUpdateNode(): boolean {\n return true;\n }\n\n canUploadContent(): boolean {\n return true;\n }\n}\n\n@NgModule({\n imports: [NoopAnimationsModule, NoopTranslateModule, RouterTestingModule, MatIconTestingModule, OverlayModule],\n providers: [\n provideStore(\n { app: null },\n {\n initialState,\n runtimeChecks: {\n strictStateImmutability: false,\n strictActionImmutability: false\n }\n }\n ),\n provideEffects([]),\n { provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock },\n provideHttpClient(withInterceptorsFromDi())\n ]\n})\nexport class LibTestingModule {}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './lib/adf-extensions/extensions-data-loader.guard';\nexport * from './lib/components/page-layout/page-layout-content.component';\nexport * from './lib/components/page-layout/page-layout-error.component';\nexport * from './lib/components/page-layout/page-layout-header.component';\nexport * from './lib/components/page-layout/page-layout.component';\nexport * from './lib/components/page-layout/page-layout.module';\nexport * from './lib/components/locked-by/locked-by.component';\nexport * from './lib/components/generic-error/generic-error.component';\nexport * from './lib/components/toolbar/toolbar.component';\nexport * from './lib/components/toolbar/toolbar-action/toolbar-action.component';\nexport * from './lib/components/toolbar/toolbar-button/toolbar-button.component';\nexport * from './lib/components/toolbar/toolbar-menu/toolbar-menu.component';\nexport * from './lib/components/toolbar/toolbar-menu-item/toolbar-menu-item.component';\nexport * from './lib/components/info-drawer/info-drawer.component';\nexport * from './lib/components/document-base-page/document-base-page.component';\nexport * from './lib/components/document-base-page/document-base-page.service';\nexport * from './lib/components/open-in-app/open-in-app.component';\nexport * from './lib/constants';\n\nexport * from './lib/directives/contextmenu/contextmenu.directive';\nexport * from './lib/directives/pagination.directive';\n\nexport * from './lib/models/types';\nexport * from './lib/models/viewer.rules';\n\nexport * from './lib/routing/shared.guard';\nexport * from './lib/routing/plugin-enabled.guard';\n\nexport * from './lib/services/app.service';\nexport * from './lib/services/content-api.service';\nexport * from './lib/services/node-permission.service';\nexport * from './lib/services/app.extension.service';\nexport * from './lib/services/router.extension.service';\nexport * from './lib/services/app-hook.service';\nexport * from './lib/services/auto-download.service';\nexport * from './lib/services/app-settings.service';\nexport * from './lib/services/user-profile.service';\nexport * from './lib/services/navigation-history.service';\n\nexport * from './lib/testing/lib-testing-module';\n\nexport * from './lib/utils/node.utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i2","i1","AdfInfoDrawerComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;AAsBG;MASU,6BAA6B,GAAG,MAAM;MAEtC,sBAAsB,GAAG,IAAI,cAAc,CAA4B,wBAAwB,EAAE;AAC5G,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE;AACV,CAAA;AAED,IAAI,OAAO,GAAG,KAAK;AAEZ,MAAM,yBAAyB,GAAkB,CAAC,KAA6B,KAAyB;AAC7G,IAAA,MAAM,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC;IAC3D,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE;YAChC,OAAO,GAAG,IAAI;AACd,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;QACjB;AAEA,QAAA,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC;;;;AAKnF,QAAA,OAAO,QAAQ,CAAC,GAAG,mBAAmB,CAAC,CAAC,IAAI,CAC1C,GAAG,CAAC,MAAM,IAAI,CAAC,EACf,GAAG,CAAC,OAAO,OAAO,GAAG,IAAI,CAAC,CAAC,EAC3B,UAAU,CAAC,CAAC,CAAC,KAAI;;AAEf,YAAA,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC;;AAE3E,YAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAChB,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;QACjB,CAAC,CAAC,CACH;IACH;SAAO;AACL,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC;IACjB;AACF;AAEO,MAAM,YAAY,GAAG,MAAK;IAC/B,OAAO,GAAG,KAAK;AACjB;;ACvEA;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAIH;MASa,0BAA0B,CAAA;AARvC,IAAA,WAAA,GAAA;QAWE,IAAA,CAAA,UAAU,GAAG,KAAK;AACnB,IAAA;+GAJY,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,yOAL3B,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAKf,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBARtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;oBAC1B,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,yBAAyB;AACzC,iBAAA;;sBAEE;;sBACA,WAAW;uBAAC,sBAAsB;;;ACrCrC;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAIH;MASa,wBAAwB,CAAA;+GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,oIALzB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAKf,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;oBAC1B,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,uBAAuB;AACvC,iBAAA;;;AClCD;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAIH;MASa,yBAAyB,CAAA;+GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,sIAL1B,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAKf,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBARrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE,gBAAgB;oBAC1B,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,wBAAwB;AACxC,iBAAA;;;MC+BY,iBAAiB,CAAA;AAH9B,IAAA,WAAA,GAAA;AAImB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAChC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAmT9D,IAAA;AAnRC;;;;;;AAMG;AACH,IAAA,UAAU,CAAC,MAAc,EAAE,OAAA,GAAmC,EAAE,EAAA;AAC9D,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxD;AAEA;;;;;;AAMG;AACH,IAAA,OAAO,CAAC,MAAc,EAAE,OAAA,GAAe,EAAE,EAAA;AACvC,QAAA,MAAM,QAAQ,GAAG;AACf,YAAA,OAAO,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ;SAC7F;QACD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;AAErD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC1D;IAEA,WAAW,CAAC,MAAc,EAAE,OAAa,EAAA;AACvC,QAAA,MAAM,QAAQ,GAAG;YACf,OAAO,EAAE,CAAC,YAAY,EAAE,qBAAqB,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ;SAC9E;AACD,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC;QAE3D,OAAO,IAAI,CACT,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;AACpC,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,IAAI,CAC9C,CAAC,SAAoB,KAAI;AACvB,gBAAA,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;AAC1B,YAAA,CAAC,EACD,CAAC,KAAK,KAAI;gBACR,MAAM,CAAC,KAAK,CAAC;AACf,YAAA,CAAC,CACF;QACH,CAAC,CAAC,CACH;IACH;AAEA;;;;;;AAMG;AACH,IAAA,eAAe,CAAC,MAAc,EAAE,OAAA,GAAe,EAAE,EAAA;AAC/C,QAAA,MAAM,QAAQ,GAAG;AACf,YAAA,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc;AACzC,YAAA,SAAS,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,qBAAqB,EAAE,aAAa;SACjF;QACD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;AAErD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACnE;AAEA;;;;;;AAMG;AACH,IAAA,yBAAyB,CAAC,MAAc,EAAE,OAAA,GAAe,EAAE,EAAA;AACzD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpE;AAEA;;;;;;AAMG;IACH,qBAAqB,CAAC,MAAc,EAAE,WAA4B,EAAA;AAChE,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACnE;AAEA;;;;;;;AAOG;AACH,IAAA,qBAAqB,CAAC,MAAc,EAAE,QAAgB,EAAE,SAAkB,EAAA;AACxE,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IAC/E;AAEA,IAAA,gBAAgB,CAAC,MAAc,EAAA;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC3D;IAEA,eAAe,CAAC,UAAe,EAAE,EAAA;AAC/B,QAAA,MAAM,QAAQ,GAAG;YACf,OAAO,EAAE,CAAC,MAAM;SACjB;QACD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;QAErD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC9D;AAEA,IAAA,WAAW,CAAC,MAAc,EAAA;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC1D;AAEA,IAAA,gBAAgB,CAAC,MAAc,EAAA;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACzD;AAEA;;;;;;AAMG;IACH,SAAS,CAAC,QAAgB,EAAE,OAAoC,EAAA;AAC9D,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC1D;AAEA;;;;;;;AAOG;AACH,IAAA,QAAQ,CAAC,MAAc,EAAE,cAAsB,EAAE,IAAa,EAAE,IAA0D,EAAA;AACxH,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IAC7E;AAEA;;;;AAIG;IACH,wBAAwB,GAAA;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,wBAAwB,EAAE,CAAC;IAC3D;IAEA,YAAY,CACV,QAAgB,EAChB,IAKC,EAAA;AAED,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC9D;AAEA,IAAA,oBAAoB,CAAC,QAAA,GAAmB,MAAM,EAAE,IAAU,EAAA;AACxD,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;AACjC,YAAA,GAAG,IAAI;AACP,YAAA,KAAK,EAAE;SACR,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,QAAwB,MAAM;AACjC,YAAA,IAAI,EAAE;AACJ,gBAAA,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAO,KAAI;oBACpD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS;oBAC7C,OAAO;AACL,wBAAA,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;qBACrB;AACH,gBAAA,CAAC,CAAC;AACF,gBAAA,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC;AAC3B;SACF,CAAC,CAAC,CACJ;IACH;AAEA,IAAA,eAAe,CAAC,IAAU,EAAA;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACxD;IAEA,oBAAoB,CAAC,QAAgB,EAAE,UAAoB,EAAA;QACzD,OAAO,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,QAAQ,EAAE,UAAU,CAAC;IACtE;AAEA,IAAA,MAAM,CAAC,OAAsB,EAAA;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7C;IAEA,aAAa,CAAC,MAAc,EAAE,UAAoB,EAAA;QAChD,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC;IAC1D;AAEA,IAAA,oBAAoB,CAAC,MAAc,EAAE,SAAiB,EAAE,UAAoB,EAAA;AAC1E,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC;IAC5E;IAEA,UAAU,CAAC,MAAe,EAAE,IAA8B,EAAA;AACxD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACrD;AAEA,IAAA,SAAS,CAAC,MAAe,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjE;IAEA,UAAU,CACR,QAAwB,EACxB,IAIC,EAAA;AAED,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACvD;IAEA,OAAO,CAAC,MAAe,EAAE,IAA4D,EAAA;AACnF,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClD;IAEA,aAAa,CAAC,MAAc,EAAE,QAAwB,EAAA;AACpD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACzD;AAEA,IAAA,WAAW,CAAC,KAAuB,EAAA;QACjC,MAAM,OAAO,GAAyB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;YACvD,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,KAAY;YAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AACjC,YAAA,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM;AAC3D,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,MAAM,IAAI,EAAE;YAEnC,OAAO;AACL,gBAAA,MAAM,EAAE;oBACN,CAAC,IAAI,GAAG;wBACN;AACD;AACF;aACF;AACH,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,EAAE,OAAc,CAAC,CAAC;IACvE;AAEA,IAAA,cAAc,CAAC,KAAuB,EAAA;AACpC,QAAA,OAAO,IAAI,CACT,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,KAAI;AACtB,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;YAC7C,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;QACrD,CAAC,CAAC,CACH,CACF;IACH;IAEA,UAAU,CAAC,MAAc,EAAE,IAAU,EAAA;QACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC;IAC/C;IAEA,eAAe,CAAC,MAAc,EAAE,IAAU,EAAA;AACxC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAChE;AAEA,IAAA,0BAA0B,CAAC,MAAc,EAAA;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC3D;IAEA,6BAA6B,CAAC,MAAc,EAAE,SAAiB,EAAA;AAC7D,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACzE;+GApTW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA;;AAOV,UAAA,CAAA;AADP,IAAA,OAAO,CAAC,CAAC,IAAuB,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;8BACzD,QAAQ;AAAC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAGnB,UAAA,CAAA;AADP,IAAA,OAAO,CAAC,CAAC,IAAuB,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;8BACzD,WAAW;AAAC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA;AAGzB,UAAA,CAAA;AADP,IAAA,OAAO,CAAC,CAAC,IAAuB,KAAK,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;8BACzD,cAAc;AAAC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,KAAA,CAAA,CAAA;AAG/B,UAAA,CAAA;AADP,IAAA,OAAO,CAAC,CAAC,IAAuB,KAAK,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;8BACzD,YAAY;AAAC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA;AAG3B,UAAA,CAAA;AADP,IAAA,OAAO,CAAC,CAAC,IAAuB,KAAK,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;8BACzD,YAAY;AAAC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA;AAG3B,UAAA,CAAA;AADP,IAAA,OAAO,CAAC,CAAC,IAAuB,KAAK,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;8BACzD,UAAU;AAAC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA;AAGvB,UAAA,CAAA;AADP,IAAA,OAAO,CAAC,CAAC,IAAuB,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;8BACzD,QAAQ;AAAC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAGnB,UAAA,CAAA;AADP,IAAA,OAAO,CAAC,CAAC,IAAuB,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;8BACzD,SAAS;AAAC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;AAGrB,UAAA,CAAA;AADP,IAAA,OAAO,CAAC,CAAC,IAAuB,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;8BACzD,SAAS;AAAC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;AAGrB,UAAA,CAAA;AADP,IAAA,OAAO,CAAC,CAAC,IAAuB,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;8BACzD,WAAW;AAAC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA;4FAhCtB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;AChED;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAUU,sBAAsB,CAAA;AAHnC,IAAA,WAAA,GAAA;AAImB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACrB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAExD,QAAA,IAAA,CAAA,QAAQ,GAAG;AACT,YAAA,MAAM,EAAE,iBAAiB;AACzB,YAAA,IAAI,EAAE,CAAC,UAAU,EAAE,gCAAgC;SACpD;AAkEF,IAAA;IAhEC,kBAAkB,GAAA;QAChB,MAAM,mBAAmB,GAAG,EAAE;QAC9B,IAAI,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC,CAAC,cAA8B,KAAI;AACrE,YAAA,IAAI,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,EAAE;gBAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC;gBAC9D,IAAI,WAAW,EAAE;AACf,oBAAA,IAAI,CAAC,4BAA4B,CAAC,cAAc,CAAC;AACjD,oBAAA,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC;gBAC9C;YACF;iBAAO;AACL,gBAAA,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC;YAC1C;AACF,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,mBAAmB,CAAC;IACpD;IAEO,oBAAoB,GAAA;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;AAC1C,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAEnH,OAAO;gBACL,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,gBAAA,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACtE,gBAAA,gBAAgB,EAAE,MAAM;AACxB,gBAAA,WAAW,EAAE,MAAM;gBACnB,WAAW,EAAE,KAAK,CAAC,WAAW;AAC9B,gBAAA,QAAQ,EAAE;AACR,oBAAA,IAAI,KAAK,CAAC,UAAU;0BAChB,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;4BAC5D,IAAI;4BACJ,MAAM;4BACN,IAAI;AACJ,4BAAA,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS;AAC3C,yBAAA,CAAC;0BACF,EAAE,CAAC;AACP,oBAAA;AACE,wBAAA,IAAI,EAAE,EAAE;wBACR,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC;wBACjD,IAAI,EAAE,KAAK,CAAC;AACb;AACF;aACgB;AACrB,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,gBAAgB,CAAC,EAAU,EAAA;QACjC,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;IAC7C;AAEQ,IAAA,sBAAsB,CAAC,KAAqB,EAAA;AAClD,QAAA,OAAO,KAAK,CAAC,WAAW,KAAK,SAAS;IACxC;AAEQ,IAAA,4BAA4B,CAAC,cAA8B,EAAA;QACjE,OAAO,cAAc,CAAC,WAAW;QACjC,OAAO,cAAc,CAAC,SAAS;IACjC;AAEQ,IAAA,SAAS,CAAC,WAAW,EAAA;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC;QAEtF,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;IACvC;+GAxEW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cAFrB,MAAM,EAAA,CAAA,CAAA;;4FAEP,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;AC/BD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAoBU,kBAAkB,CAAA;AAQ7B,IAAA,WAAA,GAAA;AAPA,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAyB,eAAe,CAAC;AACrC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAmC,YAAY,CAAC;QAIzE,IAAA,CAAA,MAAM,GAA+B,MAAM;AAGhD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;QAEtB,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;AACnC,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;QACrC;IACF;IAEA,SAAS,GAAA;QACP,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW;IAC9C;IAEA,cAAc,GAAA;QACZ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW;IAC9C;IAEA,aAAa,GAAA;QACX,MAAM,IAAI,GAAW,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;QACzC,cAAc,CAAC,OAAO,CAAC,gCAAgC,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AACzE,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;IACrB;+GA7BW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1C/B,shCAwBA,EAAA,MAAA,EAAA,CAAA,w4CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDY2B,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAA1E,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAMZ,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,CAAC,EAAA,QAAA,EAC3E,iBAAiB,EAAA,aAAA,EAGZ,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,shCAAA,EAAA,MAAA,EAAA,CAAA,w4CAAA,CAAA,EAAA;;;AExCvC;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAUU,2BAA2B,CAAA;AAHxC,IAAA,WAAA,GAAA;AAMmB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACjC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;AAmG5C,IAAA;AAjGC,IAAA,IAAI,WAAW,GAAA;QACb,MAAM,YAAY,GAAG,sEAAsE;QAC3F,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAS,6BAA6B,EAAE,YAAY,CAAC;IAC7E;AAEA,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAS,gCAAgC,EAAE,EAAE,CAAC;IACtE;AAEA,IAAA,oBAAoB,CAAC,GAAW,EAAA;AAC9B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAS,2BAA2B,EAAE,WAAW,CAAC;QAChF,OAAO,MAAM,GAAG,GAAG;IACrB;AAEA,IAAA,qBAAqB,CAAC,GAAW,EAAA;AAC/B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAS,iCAAiC,EAAE,YAAY,CAAC;AACvF,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAS,iCAAiC,EAAE,gEAAgE,CAAC;AAC3I,QAAA,OAAO,MAAM,GAAG,GAAG,GAAG,MAAM;IAC9B;IAEA,wBAAwB,GAAA;AACtB,QAAA,MAAM,GAAG,GAAW,IAAI,CAAC,aAAa,EAAE;QACxC,MAAM,WAAW,GAAW,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7C,IAAI,eAAe,GAAG,EAAE;QACxB,IAAI,UAAU,GAAG,KAAK;QACtB,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,SAAS,EAAE;AACrD,YAAA,eAAe,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;AACxC,YAAA,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;QACtH;QACA,IAAI,CAAC,UAAU,EAAE;YACf,IAAI,CAAC,4BAA4B,EAAE;QACrC;IACF;IAEA,4BAA4B,GAAA;QAC1B,MAAM,WAAW,GAAW,cAAc,CAAC,OAAO,CAAC,gCAAgC,CAAC;AACpF,QAAA,IAAI,WAAW,KAAK,IAAI,EAAE;YACxB,MAAM,WAAW,GAAW,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;AAChD,YAAA,MAAM,oBAAoB,GAAW,UAAU,CAAC,WAAW,CAAC;AAC5D,YAAA,MAAM,cAAc,GAAW,CAAC,WAAW,GAAG,oBAAoB,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC;AAEtF,YAAA,IAAI,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;gBACxC,IAAI,CAAC,sBAAsB,EAAE;gBAC7B,IAAI,CAAC,gCAAgC,EAAE;YACzC;QACF;aAAO;YACL,IAAI,CAAC,gCAAgC,EAAE;QACzC;IACF;IAEA,gCAAgC,GAAA;QAC9B,MAAM,EAAE,GAAW,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE;QACpD,MAAM,SAAS,GAAY,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACrD,QAAA,MAAM,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,cAAc,IAAI,SAAS,CAAC,cAAc,GAAG,CAAC;AACxG,QAAA,MAAM,KAAK,GAAY,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,cAAc;AACxH,QAAA,MAAM,UAAU,GAAW,IAAI,CAAC,aAAa,EAAE;AAE/C,QAAA,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;QAC1D;AAAO,aAAA,IAAI,SAAS,KAAK,IAAI,EAAE;YAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC;QAC3D;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE;YAC/D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;QACrD;IACF;IAEA,UAAU,CAAC,WAAmB,EAAE,WAAoB,EAAA;AAClD,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE;AACpD,gBAAA,IAAI,EAAE;oBACJ,WAAW;oBACX;AACD,iBAAA;AACD,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,QAAQ,EAAE,EAAE,MAAM,EAAE,GAAG;AACxB,aAAA,CAAC;QACJ;IACF;IAEA,sBAAsB,GAAA;AACpB,QAAA,cAAc,CAAC,UAAU,CAAC,gCAAgC,CAAC;IAC7D;IAEA,aAAa,GAAA;AACX,QAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI;IAC7B;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACtB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACvB;IACF;+GAtGW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,cAF1B,MAAM,EAAA,CAAA,CAAA;;4FAEP,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;AC/BD;;;;;;;;;;;;;;;;;;;;;;AAsBG;AASI,MAAM,gBAAgB,GAAuB;AAClD,IAAA,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE;AAC1C,IAAA,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE;AAC5C,IAAA,EAAE,KAAK,EAAE,8CAA8C,EAAE,KAAK,EAAE,aAAa,EAAE;AAC/E,IAAA,EAAE,KAAK,EAAE,4CAA4C,EAAE,KAAK,EAAE,WAAW,EAAE;AAC3E,IAAA,EAAE,KAAK,EAAE,kDAAkD,EAAE,KAAK,EAAE,iBAAiB,EAAE;AACvF,IAAA,EAAE,KAAK,EAAE,oDAAoD,EAAE,KAAK,EAAE,iBAAiB,EAAE;AACzF,IAAA,EAAE,KAAK,EAAE,8CAA8C,EAAE,KAAK,EAAE,aAAa,EAAE;AAC/E,IAAA,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE;AAC9C,IAAA,EAAE,KAAK,EAAE,6DAA6D,EAAE,KAAK,EAAE,WAAW,EAAE;AAC5F,IAAA,EAAE,KAAK,EAAE,+BAA+B,EAAE,KAAK,EAAE,gCAAgC,EAAE;AACnF,IAAA,EAAE,KAAK,EAAE,4CAA4C,EAAE,KAAK,EAAE,4BAA4B,EAAE;AAC5F,IAAA,EAAE,KAAK,EAAE,6CAA6C,EAAE,KAAK,EAAE,6BAA6B,EAAE;AAC9F,IAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,8BAA8B,EAAE;AACrE,IAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,yBAAyB,EAAE;AAChE,IAAA,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,kBAAkB,EAAE;AAC9D,IAAA,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,wBAAwB,EAAE;AACrE,IAAA,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,yBAAyB,EAAE;AACrE,IAAA,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,oBAAoB,EAAE;AACzD,IAAA,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,iBAAiB,EAAE;AAC5D,IAAA,EAAE,KAAK,EAAE,2BAA2B,EAAE,KAAK,EAAE,iBAAiB,EAAE;AAChE,IAAA,EAAE,KAAK,EAAE,0BAA0B,EAAE,KAAK,EAAE,gBAAgB,EAAE;AAC9D,IAAA,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,kBAAkB,EAAE;AAClE,IAAA,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,0BAA0B,EAAE;AAC/D,IAAA,EAAE,KAAK,EAAE,yCAAyC,EAAE,KAAK,EAAE,iBAAiB,EAAE;AAC9E,IAAA,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,cAAc,EAAE;AAC3D,IAAA,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;AAC5C,IAAA,EAAE,KAAK,EAAE,+BAA+B,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACxE,IAAA,EAAE,KAAK,EAAE,+BAA+B,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACxE,IAAA,EAAE,KAAK,EAAE,6BAA6B,EAAE,KAAK,EAAE,mBAAmB,EAAE;AACpE,IAAA,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,iBAAiB,EAAE;AACpD,IAAA,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,kBAAkB,EAAE;AACnD,IAAA,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;AAC9C,IAAA,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,aAAa,EAAE;AACxD,IAAA,EAAE,KAAK,EAAE,0BAA0B,EAAE,KAAK,EAAE,4BAA4B,EAAE;AAC1E,IAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,cAAc,EAAE;AAC7C,IAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;AAC1C,IAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,iBAAiB,EAAE;AACxD,IAAA,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,8BAA8B,EAAE;AAC5D,IAAA,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,EAAE;AAChD,IAAA,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE;AAC3C,IAAA,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,qBAAqB,EAAE;AAC1D,IAAA,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE;AAC9C,IAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,cAAc,EAAE;AACrD,IAAA,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;AAC9C,IAAA,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,gBAAgB,EAAE;AACtD,IAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;AAC1C,IAAA,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,EAAE;AAC9C,IAAA,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,cAAc,EAAE;AACtD,IAAA,EAAE,KAAK,EAAE,0BAA0B,EAAE,KAAK,EAAE,eAAe,EAAE;AAC7D,IAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE;AACrC,IAAA,EAAE,KAAK,EAAE,6CAA6C,EAAE,KAAK,EAAE,wBAAwB,EAAE;AACzF,IAAA,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,sBAAsB,EAAE;AAClE,IAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;AAC1C,IAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,EAAE;AAChD,IAAA,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;AAC5C,IAAA,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,EAAE;AAC5C,IAAA,EAAE,KAAK,EAAE,0BAA0B,EAAE,KAAK,EAAE,cAAc,EAAE;AAC5D,IAAA,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,YAAY,EAAE;AAClD,IAAA,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE;AAClD,IAAA,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,kBAAkB,EAAE;AAC1D,IAAA,EAAE,KAAK,EAAE,0BAA0B,EAAE,KAAK,EAAE,YAAY,EAAE;AAC1D,IAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,iBAAiB,EAAE;AACxD,IAAA,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE;AAChD,IAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,iBAAiB,EAAE;AACxD,IAAA,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;AAC5C,IAAA,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,uBAAuB,EAAE;AACvD,IAAA,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;AAC5C,IAAA,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;AAC9C,IAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE;AAC5C,IAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE;AAC5C,IAAA,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,mBAAmB,EAAE;AACpD,IAAA,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,wBAAwB,EAAE;AAC5D,IAAA,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,UAAU,EAAE;AAC/C,IAAA,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,wBAAwB,EAAE;AAC5D,IAAA,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,wBAAwB,EAAE;AAC5D,IAAA,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,UAAU,EAAE;AACvD,IAAA,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,UAAU,EAAE;AAC/C,IAAA,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,kBAAkB,EAAE;AACtD,IAAA,EAAE,KAAK,EAAE,0BAA0B,EAAE,KAAK,EAAE,iBAAiB,EAAE;AAC/D,IAAA,EAAE,KAAK,EAAE,mEAAmE,EAAE,KAAK,EAAE,sBAAsB,EAAE;AAC7G,IAAA,EAAE,KAAK,EAAE,gDAAgD,EAAE,KAAK,EAAE,6BAA6B,EAAE;AACjG,IAAA,EAAE,KAAK,EAAE,uDAAuD,EAAE,KAAK,EAAE,sCAAsC,EAAE;AACjH,IAAA,EAAE,KAAK,EAAE,gDAAgD,EAAE,KAAK,EAAE,6CAA6C,EAAE;AACjH,IAAA,EAAE,KAAK,EAAE,mDAAmD,EAAE,KAAK,EAAE,sDAAsD,EAAE;AAC7H,IAAA,EAAE,KAAK,EAAE,sEAAsE,EAAE,KAAK,EAAE,+BAA+B,EAAE;AACzH,IAAA,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,2BAA2B,EAAE;AAC3E,IAAA,EAAE,KAAK,EAAE,+BAA+B,EAAE,KAAK,EAAE,sBAAsB,EAAE;AACzE,IAAA,EAAE,KAAK,EAAE,2EAA2E,EAAE,KAAK,EAAE,2BAA2B,EAAE;AAC1H,IAAA,EAAE,KAAK,EAAE,qDAAqD,EAAE,KAAK,EAAE,kCAAkC,EAAE;AAC3G,IAAA,EAAE,KAAK,EAAE,4DAA4D,EAAE,KAAK,EAAE,sDAAsD,EAAE;AACtI,IAAA,EAAE,KAAK,EAAE,wDAAwD,EAAE,KAAK,EAAE,+DAA+D,EAAE;AAC3I,IAAA,EAAE,KAAK,EAAE,qDAAqD,EAAE,KAAK,EAAE,+CAA+C,EAAE;AACxH,IAAA,EAAE,KAAK,EAAE,yDAAyD,EAAE,KAAK,EAAE,oDAAoD,EAAE;AACjI,IAAA,EAAE,KAAK,EAAE,oEAAoE,EAAE,KAAK,EAAE,iCAAiC,EAAE;AACzH,IAAA,EAAE,KAAK,EAAE,wEAAwE,EAAE,KAAK,EAAE,sCAAsC,EAAE;AAClI,IAAA,EAAE,KAAK,EAAE,uEAAuE,EAAE,KAAK,EAAE,oCAAoC,EAAE;AAC/H,IAAA,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,mBAAmB,EAAE;AACnE,IAAA,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,iBAAiB,EAAE;AAC5D,IAAA,EAAE,KAAK,EAAE,2BAA2B,EAAE,KAAK,EAAE,sBAAsB,EAAE;AACrE,IAAA,EAAE,KAAK,EAAE,wDAAwD,EAAE,KAAK,EAAE,uCAAuC,EAAE;AACnH,IAAA,EAAE,KAAK,EAAE,wDAAwD,EAAE,KAAK,EAAE,uCAAuC,EAAE;AACnH,IAAA,EAAE,KAAK,EAAE,yDAAyD,EAAE,KAAK,EAAE,wCAAwC,EAAE;AACrH,IAAA,EAAE,KAAK,EAAE,2CAA2C,EAAE,KAAK,EAAE,yBAAyB,EAAE;AACxF,IAAA,EAAE,KAAK,EAAE,4CAA4C,EAAE,KAAK,EAAE,0BAA0B,EAAE;AAC1F,IAAA,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,gBAAgB,EAAE;AACxD,IAAA,EAAE,KAAK,EAAE,yEAAyE,EAAE,KAAK,EAAE,qBAAqB,EAAE;AAClH,IAAA,EAAE,KAAK,EAAE,kDAAkD,EAAE,KAAK,EAAE,4CAA4C,EAAE;AAClH,IAAA,EAAE,KAAK,EAAE,kDAAkD,EAAE,KAAK,EAAE,qDAAqD,EAAE;AAC3H,IAAA,EAAE,KAAK,EAAE,yEAAyE,EAAE,KAAK,EAAE,8BAA8B,EAAE;AAC3H,IAAA,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,mBAAmB,EAAE;AAC5D,IAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,iBAAiB,EAAE;AACxD,IAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;AAC1C,IAAA,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,eAAe,EAAE;AACpD,IAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;AAC1C,IAAA,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,kBAAkB,EAAE;AACpD,IAAA,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,mBAAmB,EAAE;AAC5D,IAAA,EAAE,KAAK,EAAE,0CAA0C,EAAE,KAAK,EAAE,oBAAoB,EAAE;AAClF,IAAA,EAAE,KAAK,EAAE,6CAA6C,EAAE,KAAK,EAAE,uBAAuB,EAAE;AACxF,IAAA,EAAE,KAAK,EAAE,6CAA6C,EAAE,KAAK,EAAE,sBAAsB,EAAE;AACvF,IAAA,EAAE,KAAK,EAAE,sDAAsD,EAAE,KAAK,EAAE,+BAA+B,EAAE;AACzG,IAAA,EAAE,KAAK,EAAE,4CAA4C,EAAE,KAAK,EAAE,sBAAsB,EAAE;AACtF,IAAA,EAAE,KAAK,EAAE,0CAA0C,EAAE,KAAK,EAAE,oBAAoB,EAAE;AAClF,IAAA,EAAE,KAAK,EAAE,gDAAgD,EAAE,KAAK,EAAE,8BAA8B,EAAE;AAClG,IAAA,EAAE,KAAK,EAAE,iDAAiD,EAAE,KAAK,EAAE,2BAA2B,EAAE;AAChG,IAAA,EAAE,KAAK,EAAE,0DAA0D,EAAE,KAAK,EAAE,oCAAoC,EAAE;AAClH,IAAA,EAAE,KAAK,EAAE,gDAAgD,EAAE,KAAK,EAAE,0BAA0B,EAAE;AAC9F,IAAA,EAAE,KAAK,EAAE,yDAAyD,EAAE,KAAK,EAAE,mCAAmC,EAAE;AAChH,IAAA,EAAE,KAAK,EAAE,yCAAyC,EAAE,KAAK,EAAE,oCAAoC,EAAE;AACjG,IAAA,EAAE,KAAK,EAAE,kDAAkD,EAAE,KAAK,EAAE,4BAA4B,EAAE;AAClG,IAAA,EAAE,KAAK,EAAE,8BAA8B,EAAE,KAAK,EAAE,uCAAuC,EAAE;AACzF,IAAA,EAAE,KAAK,EAAE,uCAAuC,EAAE,KAAK,EAAE,gDAAgD,EAAE;AAC3G,IAAA,EAAE,KAAK,EAAE,8BAA8B,EAAE,KAAK,EAAE,uCAAuC,EAAE;AACzF,IAAA,EAAE,KAAK,EAAE,iCAAiC,EAAE,KAAK,EAAE,0CAA0C,EAAE;AAC/F,IAAA,EAAE,KAAK,EAAE,0CAA0C,EAAE,KAAK,EAAE,mDAAmD,EAAE;AACjH,IAAA,EAAE,KAAK,EAAE,gCAAgC,EAAE,KAAK,EAAE,yCAAyC,EAAE;AAC7F,IAAA,EAAE,KAAK,EAAE,yCAAyC,EAAE,KAAK,EAAE,kDAAkD,EAAE;AAC/G,IAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;AAC1C,IAAA,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,qBAAqB,EAAE;AAChE,IAAA,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,kBAAkB,EAAE;AAC1D,IAAA,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,cAAc,EAAE;AAC3D,IAAA,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;AAC5C,IAAA,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,iBAAiB,EAAE;AAC9D,IAAA,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE;AACxD,IAAA,EAAE,KAAK,EAAE,6BAA6B,EAAE,KAAK,EAAE,mBAAmB,EAAE;AACpE,IAAA,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;AACtD,IAAA,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,oBAAoB,EAAE;AAChE,IAAA,EAAE,KAAK,EAAE,8BAA8B,EAAE,KAAK,EAAE,aAAa,EAAE;AAC/D,IAAA,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,eAAe,EAAE;AACpD,IAAA,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE;AAC5C,IAAA,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,KAAK,EAAE;AAC9C,IAAA,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,cAAc,EAAE;AACtD,IAAA,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,WAAW,EAAE;AAC9C,IAAA,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,kBAAkB,EAAE;AACvD,IAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,WAAW,EAAE;AAClD,IAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,uBAAuB,EAAE;AACtD,IAAA,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,yBAAyB,EAAE;AAC/D,IAAA,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,gCAAgC,EAAE;AACnE,IAAA,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,cAAc,EAAE;AACpD,IAAA,EAAE,KAAK,EAAE,+BAA+B,EAAE,KAAK,EAAE,iBAAiB,EAAE;AACpE,IAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,iBAAiB,EAAE;AACxD,IAAA,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,gBAAgB,EAAE;AACtD,IAAA,EAAE,KAAK,EAAE,oCAAoC,EAAE,KAAK,EAAE,eAAe,EAAE;AACvE,IAAA,EAAE,KAAK,EAAE,mCAAmC,EAAE,KAAK,EAAE,cAAc,EAAE;AACrE,IAAA,EAAE,KAAK,EAAE,mCAAmC,EAAE,KAAK,EAAE,cAAc,EAAE;AACrE,IAAA,EAAE,KAAK,EAAE,sCAAsC,EAAE,KAAK,EAAE,iBAAiB,EAAE;AAC3E,IAAA,EAAE,KAAK,EAAE,6CAA6C,EAAE,KAAK,EAAE,wBAAwB,EAAE;AACzF,IAAA,EAAE,KAAK,EAAE,mCAAmC,EAAE,KAAK,EAAE,cAAc,EAAE;AACrE,IAAA,EAAE,KAAK,EAAE,qCAAqC,EAAE,KAAK,EAAE,gBAAgB,EAAE;AACzE,IAAA,EAAE,KAAK,EAAE,4CAA4C,EAAE,KAAK,EAAE,uBAAuB,EAAE;AACvF,IAAA,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE;AAC3C,IAAA,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;AAC5C,IAAA,EAAE,KAAK,EAAE,2BAA2B,EAAE,KAAK,EAAE,sBAAsB,EAAE;AACrE,IAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,SAAS,EAAE;AAChD,IAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE;AAC5C,IAAA,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,UAAU,EAAE;AACrD,IAAA,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE;AAC1C,IAAA,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE;AAC5C,IAAA,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;AAC5C,IAAA,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,aAAa,EAAE;AAC1D,IAAA,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,eAAe,EAAE;AACpD,IAAA,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,OAAO,EAAE;AAClD,IAAA,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE;AACnC,IAAA,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,eAAe,EAAE;AACpD,IAAA,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,cAAc,EAAE;AACvD,IAAA,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE;AACxD,IAAA,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,KAAK,EAAE;AAC1C,IAAA,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,gBAAgB;;;AC1NnD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAOU,kBAAkB,CAAA;AAD/B,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAkJtD,IAAA;AAhJC;;AAEG;AACH,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,uBAAuB,EAAE,EAAE,CAAC;IAChE;AAEA;;AAEG;AACH,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,SAAS,CAAC;IAC9C;AAEA;;;AAGG;AACH,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,aAAa,EAAE,iBAAiB,CAAC;IACrE;AAEA;;AAEG;AACH,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAqB,WAAW,EAAE,gBAAgB,CAAC;IAC9E;AAEA;;AAEG;AACH,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,kBAAkB,EAAE,8BAA8B,CAAC;IACvF;AAEA;;AAEG;AACH,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,qBAAqB,EAAE,OAAO,CAAC;IACnE;AAEA;;AAEG;AACH,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,kBAAkB,EAAE,4BAA4B,CAAC;IACrF;AAEA;;AAEG;AACH,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,eAAe,EAAE,EAAE,CAAC;IACxD;AAEA;;AAEG;AACH,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,aAAa,EAAE,EAAE,CAAC;IACtD;AAEA;;AAEG;AACH,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,cAAc,EAAE,EAAE,CAAC;QAC3D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACzB,MAAM,IAAI,GAAG;QACf;AACA,QAAA,OAAO,MAAM;IACf;AAEA;;AAEG;AACH,IAAA,IAAI,yBAAyB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,4BAA4B,EAAE,mBAAmB,CAAC,KAAK,CAAC;IACpF;AAEA;;AAEG;AACH,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,mBAAmB,EAAE,CAAC,CAAC;IAC3D;AAEA;;AAEG;AACH,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAU,mCAAmC,EAAE,IAAI,CAAC;IAC/E;AAEA;;AAEG;AACH,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAU,mCAAmC,EAAE,IAAI,CAAC;IAC/E;AAEA;;AAEG;AACH,IAAA,IAAI,+BAA+B,GAAA;QACjC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAU,uCAAuC,EAAE,IAAI,CAAC;IACnF;AAEA;;AAEG;AACH,IAAA,IAAI,gCAAgC,GAAA;QAClC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAU,wCAAwC,EAAE,IAAI,CAAC;IACpF;AAEA;;AAEG;AACH,IAAA,IAAI,yBAAyB,GAAA;QAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAU,iCAAiC,EAAE,IAAI,CAAC;IAC7E;AAEA;;AAEG;AACH,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAU,+BAA+B,EAAE,IAAI,CAAC;IAC3E;AAEA;;AAEG;AACH,IAAA,IAAI,qBAAqB,GAAA;QACvB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,0CAA0C,EAAE,EAAE,CAAC;IACnF;AAEA;;AAEG;AACH,IAAA,IAAI,qBAAqB,GAAA;QACvB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,uBAAuB,EAAE,EAAE,CAAC;IAChE;+GAlJW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cADL,MAAM,EAAA,CAAA,CAAA;;4FACnB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCGrB,kBAAkB,CAAA;AAD/B,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAChC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AAKnC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAe,IAAI,CAAC;AACtE,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;AAuC/C,IAAA;AArCC;;AAEG;AACH,IAAA,MAAM,eAAe,GAAA;AACnB,QAAA,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,gCAAgC,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QAEzG,MAAM,MAAM,GAAG,EAAE;QACjB,IAAI,aAAa,EAAE;AACjB,YAAA,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;QACvD;AAEA,QAAA,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC;AAE9D,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE;AAClB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE;AACtC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE;AACpC,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,QAAQ,EAAE;AAC3C,QAAA,MAAM,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AACrD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;AAExB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY;AACtC,QAAA,MAAM,OAAO,GAAG,YAAY,GAAG,YAAY,CAAC,OAAO,GAAG,IAAI;AAE1D,QAAA,MAAM,OAAO,GAAiB;YAC5B,SAAS;YACT,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,OAAO;YACP,EAAE;YACF,MAAM;YACN;SACD;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;AAC9B,QAAA,OAAO,OAAO;IAChB;+GA9CW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cADL,MAAM,EAAA,CAAA,CAAA;;AAML,UAAA,CAAA;AADxB,IAAA,OAAO,CAAC,CAAC,IAAwB,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;8BACzC,SAAS;AAAC,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;4FALnC,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;AC9BlC;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAoCH;MACa,UAAU,CAAA;AAmCrB;;;AAGG;AACH,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAU,sBAAsB,EAAE,KAAK,CAAC;IAChE;AAEA,IAAA,WAAA,GAAA;AA1CA,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAClC,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACrD,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAkB,KAAK,CAAC;AACtC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACjC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACpC,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC/C,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACvD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACtC,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACrD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,2BAA2B,GAAG,MAAM,CAAC,2BAA2B,CAAC;AACjE,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC/C,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC/C,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC;AAEhC,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAK7B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC;;AAEtD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;AAE9C,QAAA,IAAA,CAAA,cAAc,GAAsC,IAAI,eAAe,CAAC,UAAU,CAAC;AACnF,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAAQ;AAEtC,QAAA,IAAA,CAAA,qBAAqB,GAAG,CAAC,WAAW,CAAC;QACrC,IAAA,CAAA,yBAAyB,GAAG,EAAE;AAW5B,QAAA,MAAM,yBAAyB,GAAG,MAAM,CAAC,yBAAyB,CAAC;AACnE,QAAA,MAAM,2BAA2B,GAAG,IAAI,CAAC,2BAA2B;AAEpE,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,eAAe,CAAC;QACjG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;QAEvC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;AAChD,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACrB,YAAA,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC;AACpF,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAK;AACjD,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;YAClF,yBAAyB,CAAC,eAAe,EAAE;YAC3C,2BAA2B,CAAC,sBAAsB,EAAE;YACpD,2BAA2B,CAAC,WAAW,EAAE;AAC3C,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC;AACT,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,YAAY,aAAa,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,EACzF,GAAG,CAAC,CAAC,KAAoB,KAAK,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;AAEjE,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;AAChC,QAAA,CAAC,CAAC;IACN;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAwC,KAAI;AAC7F,YAAA,MAAM,qBAAqB,GACzB,KAAK,CAAC,MAAM,KAAK,GAAG;AACpB,gBAAA,CAAC,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC;AAC3E,gBAAA,CAAC,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE;YAE1C,IAAI,qBAAqB,EAAE;AACzB,gBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AAEzB,gBAAA,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC;gBACzE,IAAI,CAAC,WAAW,EAAE;AAChB,oBAAA,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG;gBAC/B;gBAEA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE;oBAC/B,WAAW,EAAE,EAAE,WAAW;AAC3B,iBAAA,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,aAAa,EAAE;QACpB,IAAI,CAAC,iBAAiB,EAAE;AAExB,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;AAEvB,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,YAAY,aAAa,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAChI,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1D,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,YAAY,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YAC1F,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,oBAAoB,EAAE,CAAC;AACjD,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,EAAE;AAEhD,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAExF,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAwB,KAAI;AACtE,YAAA,IAAI,GAAG,EAAE,OAAO,EAAE;gBAChB,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;YACjD;AACF,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;YAChC,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,oBAAoB,EAAE;gBAC3B,IAAI,CAAC,eAAe,EAAE;gBACtB,UAAU,CAAC,MAAK;oBACd,IAAI,CAAC,mBAAmB,EAAE;AAC5B,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC5E;AAEA,IAAA,gBAAgB,CAAC,IAA8B,EAAA;AAC7C,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,KAAK,UAAU,CAAC;IACrE;IAEQ,oBAAoB,GAAA;QAC1B,IAAI,CAAC,UAAU,CAAC,wBAAwB,EAAE,CAAC,SAAS,CAAC,CAAC,QAAwB,KAAI;AAChF,YAAA,IAAI,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE;AAC/B,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC7E;AACF,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,MAAM,eAAe,GAAA;QAC3B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE;QAC/D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACxD;AAEA,IAAA,mBAAmB,CAAC,KAA2B,EAAA;QAC7C,IAAI,OAAO,GAAG,mCAAmC;QAEjD,IAAI,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG,EAAE;YAChC,OAAO,GAAG,+BAA+B;QAC3C;QAEA,IAAI,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG,EAAE;YAChC,OAAO,GAAG,+BAA+B;QAC3C;QAEA,IAAI,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG,EAAE;YAChC,OAAO,GAAG,oCAAoC;QAChD;QAEA,IAAI,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG,EAAE;YAChC,OAAO,GAAG,+BAA+B;QAC3C;QAEA,IAAI,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG,EAAE;YAChC,OAAO,GAAG,+BAA+B;QAC3C;AAEA,QAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,OAAO,CAAC;IAC7C;IAEQ,aAAa,GAAA;AACnB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa;QAC3D,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAChC;IACF;IAEQ,iBAAiB,GAAA;AACvB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW;QACvD,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAC9B;IACF;AAEQ,IAAA,UAAU,CAAC,GAAW,EAAA;QAC5B,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AACrD,QAAA,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC;AAChD,QAAA,cAAc,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC;AAC/C,QAAA,cAAc,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC;AACxC,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC;IAC3C;IAEO,mBAAmB,GAAA;AACxB,QAAA,MAAM,qBAAqB,GAAY,IAAI,CAAC,MAAM,CAAC,GAAG,CAAU,yBAAyB,EAAE,KAAK,CAAC;QACjG,IAAI,qBAAqB,EAAE;AACzB,YAAA,IAAI,CAAC,2BAA2B,CAAC,wBAAwB,EAAE;QAC7D;aAAO;AACL,YAAA,IAAI,CAAC,2BAA2B,CAAC,sBAAsB,EAAE;QAC3D;IACF;+GA3MW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAV,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cAHT,MAAM,EAAA,CAAA,CAAA;;4FAGP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAJtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACzDD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAoBU,mBAAmB,CAAA;AAQ9B,IAAA,WAAA,GAAA;AAPiB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAGhD,IAAA,CAAA,QAAQ,GAAG,KAAK;AAKd,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU;AAElC,QAAA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5E;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,EAAE;IACzC;+GAhBW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1ChC,utBAsBA,EAAA,MAAA,EAAA,CAAA,+yDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDaY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAiB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAjE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAO1B,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAR/B,SAAS;8BACC,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,kBAAkB,CAAC,YAChF,iBAAiB,EAAA,aAAA,EAGZ,iBAAiB,CAAC,IAAI,QAC/B,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAA,QAAA,EAAA,utBAAA,EAAA,MAAA,EAAA,CAAA,+yDAAA,CAAA,EAAA;;sBAKjC;;;AE7CH;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAYU,gBAAgB,CAAA;+GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,OAAA,EAAA,CAHjB,mBAAmB,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,yBAAyB,CAAA,EAAA,OAAA,EAAA,CACpG,0BAA0B,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAEnG,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAHjB,mBAAmB,CAAA,EAAA,CAAA,CAAA;;4FAGlB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,mBAAmB,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,yBAAyB,CAAC;oBAC/G,OAAO,EAAE,CAAC,0BAA0B,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,mBAAmB;AAC/G,iBAAA;;;ACjCD;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAIG,SAAU,QAAQ,CAAC,IAAqB,EAAA;AAC5C,IAAA,IAAI,IAAI,EAAE,KAAK,EAAE;AACf,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;QAEtB,OAAO,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC,KAAK,gBAAgB,IAAI,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC,KAAK,YAAY;IACvI;SAAO;AACL,QAAA,OAAO,KAAK;IACd;AACF;AAEM,SAAU,aAAa,CAAC,SAAoB,EAAA;AAChD,IAAA,IAAI,SAAS,EAAE,KAAK,EAAE;AACpB,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS;QAE3B,OAAO,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,gBAAgB,CAAC,IAAI,KAAK;IAC/D;SAAO;AACL,QAAA,OAAO,KAAK;IACd;AACF;AAEM,SAAU,SAAS,CAAC,IAA2B,EAAA;AACnD,IAAA,IAAI,IAAI,EAAE,KAAK,EAAE;AACf,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;AAEtB,QAAA,OAAO,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;IACtH;SAAO;AACL,QAAA,OAAO,KAAK;IACd;AACF;;ACtDA;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAuBU,iBAAiB,CAAA;AAf9B,IAAA,WAAA,GAAA;QAmBE,IAAA,CAAA,WAAW,GAAG,KAAK;AASpB,IAAA;IANC,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3C,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACf,cAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,GAAG,qBAAqB,CAAC,EAAE;AACzD,cAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,GAAG,cAAc,CAAC,EAAE,WAAW;IACjE;+GAZW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAZlB;;;;GAIT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,gTAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EANwB,aAAa,+KAA5B,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAcZ,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAf7B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,aAAa,EAAE,aAAa,CAAC,EAAA,QAAA,EAC7B,eAAe,EAAA,QAAA,EACf;;;;AAIT,EAAA,CAAA,EAAA,eAAA,EAEgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,KAAK,EAAE;AACR,qBAAA,EAAA,MAAA,EAAA,CAAA,gTAAA,CAAA,EAAA;;sBAGA;;;AC9CH;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAeU,qBAAqB,CAAA;AATlC,IAAA,WAAA,GAAA;QAWE,IAAA,CAAA,IAAI,GAAG,qCAAqC;AAC7C,IAAA;+GAHY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrClC,gIAIA,EAAA,MAAA,EAAA,CAAA,4TAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDyBY,aAAa,+KAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAQ3B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBATjC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,aAAa,EAAE,aAAa,CAAC,EAAA,QAAA,EAC7B,mBAAmB,iBAGd,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAA,QAAA,EAAA,gIAAA,EAAA,MAAA,EAAA,CAAA,4TAAA,CAAA,EAAA;;sBAGnC;;;AEtCH;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAgBU,qBAAqB,CAAA;AAHlC,IAAA,WAAA,GAAA;AAMmB,QAAA,IAAA,CAAA,cAAc,GAAsB;YACnD,SAAS,EAAE,qBAAqB,CAAC,iBAAiB;AAClD,YAAA,MAAM,EAAE;SACT;AAsDF,IAAA;aA3DiB,IAAA,CAAA,iBAAiB,GAAG,IAAH,CAAQ;AAOzC,IAAA,KAAK,CAAC,MAA6C,EAAE,WAAqB,EAAE,OAA2B,EAAA;AACrG,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,IAAI,EAAE,CAAC;QAElE,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACzB,YAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;AAEtC,YAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;YACjF;AACA,YAAA,OAAO,KAAK;QACd;aAAO;YACL,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC;QAC3D;IACF;AAEQ,IAAA,kBAAkB,CAAC,IAAsB,EAAE,WAAqB,EAAE,OAA0B,EAAA;AAClG,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC;AAE7E,QAAA,IAAI,mBAAmB,CAAC,MAAM,EAAE;YAC9B,IAAI,OAAO,CAAC,SAAS,KAAK,qBAAqB,CAAC,iBAAiB,EAAE;AACjE,gBAAA,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACnF;iBAAO;AACL,gBAAA,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACpF;QACF;AAEA,QAAA,OAAO,KAAK;IACd;IAEQ,sBAAsB,CAAC,IAAsB,EAAE,QAAiB,EAAA;AACtE,QAAA,IAAI,KAAwB;AAE5B,QAAA,IAAI,OAAO,IAAI,IAAI,EAAE;AACnB,YAAA,KAAK,GAAG,IAAI,CAAC,KAAK;QACpB;aAAO;YACL,KAAK,GAAG,IAAI;QACd;QAEA,IAAI,QAAQ,EAAE;AACZ,YAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE;QAC9B;AAEA,QAAA,IAAI,6BAA6B,IAAI,KAAK,EAAE;AAC1C,YAAA,OAAO,KAAK,CAAC,2BAA2B,IAAI,EAAE;QAChD;aAAO;AACL,YAAA,OAAO,KAAK,CAAC,mBAAmB,IAAI,EAAE;QACxC;IACF;+GA3DW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cAFpB,MAAM,EAAA,CAAA,CAAA;;4FAEP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACrCD;;;;;;;;;;;;;;;;;;;;;;AAsBG;SAsCa,2BAA2B,GAAA;IACzC,OAAO;QACL,qBAAqB,CAAC,MAAK;AACzB,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC3C,YAAA,OAAO,OAAO,CAAC,IAAI,EAAE;AACvB,QAAA,CAAC;KACF;AACH;MAKa,mBAAmB,CAAA;AAiE9B,IAAA,WAAA,GAAA;AAhES,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC1B,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAkB,KAAK,CAAC;AACtC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACvC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC/C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC3C,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC1B,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AAChC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;AAE7B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAiB,EAAE,CAAC;AACtE,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,OAAO,EAAQ;QAEzC,IAAA,CAAA,MAAM,GAA0B,EAAE;QAClC,IAAA,CAAA,WAAW,GAAyB,EAAE;QAGtC,IAAA,CAAA,WAAW,GAAgB,EAAE;AAEZ,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AACjE,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AAClE,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AACxE,QAAA,IAAA,CAAA,+BAA+B,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AAClF,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AACtE,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AACnE,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AACjE,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AAClE,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAe,EAAE,CAAC;AAC/C,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,eAAe,CAA+B,EAAE,CAAC;AAChF,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AACxE,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AAC/D,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAA4B,EAAE,CAAC;AAE1F,QAAA,IAAA,CAAA,mBAAmB,GASf;AACF,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,iBAAiB,EAAE,EAAE;AACrB,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,eAAe,EAAE,EAAE;AACnB,YAAA,aAAa,EAAE;SAChB;AASD,QAAA,IAAA,CAAA,wBAAwB,GAAwC,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE;QAK1G,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;AAElD,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACrD,YAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS;AACjC,YAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU;AACnC,YAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO;AAC7B,YAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU;AAEnC,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;YACzB;AACF,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,MAAM,IAAI,GAAA;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AAC1C,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;IACzB;AAEA,IAAA,KAAK,CAAC,MAAuB,EAAA;QAC3B,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC;YACtD;QACF;AAEA,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAClF,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;AAC5F,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AACpF,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAAC;AACxG,QAAA,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,uCAAuC,CAAC,CAAC;AACzH,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;AAC5F,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;AAC7F,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAmB,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAC9F,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAQ,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAC5E,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAqB,MAAM,EAAE,8BAA8B,CAAC,CAAC;AACnH,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC/E,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAmB,MAAM,EAAE,+BAA+B,CAAC,CAAC;AACnH,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAmB,MAAM,EAAE,uBAAuB,CAAC,CAAC;QAElG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AACrC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAgB,MAAM,EAAE,uBAAuB,CAAC;QAC1F,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;QACvD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;QAC1C,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS,KAAI;YACjC,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACjG,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,mBAAmB,GAAG;YACzB,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,WAAW,CAAC;YAC1D,iBAAiB,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,mBAAmB,CAAC;YAC1E,MAAM,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC;YACpD,MAAM,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC;YACpD,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,WAAW,CAAC;YAC1D,QAAQ,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,UAAU,CAAC;YACxD,eAAe,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,kBAAkB,CAAC;YACvE,aAAa,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,gBAAgB;SACnE;AAED,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAU,sBAAsB,EAAE,KAAK,CAAC;AAEjF,QAAA,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE;AAC3B,YAAA,IAAI,CAAC,WAAW,GAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAiB,IAAI,EAAE;QAC3E;AAEA,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAE1B,QAAA,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,KAAK,KAAK,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAqB,CAAC;AAChI,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;IACnC;AAEU,IAAA,aAAa,CAAC,MAAuB,EAAA;QAC7C,MAAM,KAAK,GAAmB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAU,MAAM,EAAE,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;AAE3H,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;AACnC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;YAExB,IAAI,CAAC,KAAK,EAAE;gBACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,wBAAA,EAA2B,IAAI,CAAC,EAAE,CAAA,EAAA,CAAI,CAAC;YAC1D;AAAO,iBAAA,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE;AACrB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,yBAAA,CAA2B,CAAC;YAC/C;iBAAO;AACL,gBAAA,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC;YAC1G;QACF;IACF;AAEU,IAAA,UAAU,CAAC,MAAuB,EAAA;QAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAiB,MAAM,EAAE,iBAAiB,CAAC;IAC3E;IAEU,qBAAqB,CAAC,MAAuB,EAAE,GAAW,EAAA;QAClE,OAAO,IAAI,CAAC;AACT,aAAA,WAAW,CAAwB,MAAM,EAAE,CAAA,sBAAA,EAAyB,GAAG,EAAE;AACzE,aAAA,MAAM,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;aAC3C,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,QAAQ;AACjC,aAAA,GAAG,CAAC,CAAC,KAAK,KAAI;YACb,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI;AACzC,YAAA,OAAO,KAAK;AACd,QAAA,CAAC;aACA,IAAI,CAAC,WAAW,CAAC;IACtB;AAEA,IAAA,wBAAwB,CAAC,QAAQ,EAAA;AAC/B,QAAA,OAAO;AACJ,aAAA,MAAM,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AAC3C,aAAA,GAAG,CAAC,CAAC,KAAK,MAAM;AACf,YAAA,GAAG,KAAK;AACR,YAAA,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;iBACtB,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,QAAQ;AACjC,iBAAA,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;iBACzC,IAAI,CAAC,WAAW;AAChB,iBAAA,GAAG,CAAC,CAAC,IAAI,KAAI;AACZ,gBAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;yBAClB,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,QAAQ;AACjC,yBAAA,MAAM,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;yBAC3C,IAAI,CAAC,WAAW;AAChB,yBAAA,GAAG,CAAC,CAAC,KAAK,KAAI;AACb,wBAAA,IAAI,KAAK,CAAC,SAAS,EAAE;4BACnB,OAAO;AACL,gCAAA,GAAG;6BACJ;wBACH;AAEA,wBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AAChB,4BAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC;AAC/D,4BAAA,MAAM,QAAQ,GAAG,CAAA,CAAA,EAAI,aAAa,GAAG,aAAa,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE;4BACvE,OAAO;AACL,gCAAA,GAAG,KAAK;AACR,gCAAA,GAAG,EAAE;6BACN;wBACH;wBAEA,OAAO;AACL,4BAAA,GAAG,KAAK;4BACR,MAAM,EAAE,KAAK,CAAC;yBACf;AACH,oBAAA,CAAC,CAAC;oBAEJ,OAAO;AACL,wBAAA,GAAG;qBACJ;gBACH;AAEA,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,oBAAA,OAAO,EAAE,GAAG,IAAI,EAAE;gBACpB;AAEA,gBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,oBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AACzD,oBAAA,MAAM,GAAG,GAAG,CAAA,CAAA,EAAI,QAAQ,GAAG,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE;oBACvD,OAAO;AACL,wBAAA,GAAG,IAAI;wBACP;qBACD;gBACH;gBAEA,OAAO;AACL,oBAAA,GAAG,IAAI;oBACP,MAAM,EAAE,IAAI,CAAC;iBACd;AACH,YAAA,CAAC;AACA,iBAAA,MAAM,CAAC,gBAAgB,EAAE,EAAE;AAC/B,SAAA,CAAC,CAAC;IACP;AAEA,IAAA,mBAAmB,CAAC,MAAuB,EAAA;AACzC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAM,MAAM,EAAE,mCAAmC,CAAC;AAC1F,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACpB,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE;QAEhE,IAAI,OAAO,GAAG,YAAY,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC;AAC3C,QAAA,IAAI,QAAQ,CAAC,OAAO,EAAE;YACpB,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC;QACnD;AACA,QAAA,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;AAEtC,QAAA,QAAQ,CAAC,OAAO,GAAG,OAAO;QAE1B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC,GAAG,QAAQ;QACpD,OAAO,EAAE,OAAO,EAAE;IACpB;AAEA,IAAA,eAAe,CAAC,MAAuB,EAAA;AACrC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAM,MAAM,EAAE,iBAAiB,CAAC;AACxE,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACpB,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,EAAE,QAAQ;aACpC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,QAAQ;AACjC,aAAA,MAAM,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;aAC3C,IAAI,CAAC,WAAW,CAAC;QAEpB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM;AACxC,QAAA,OAAO,MAAM;IACf;AAEA,IAAA,cAAc,CAAC,MAA4D,EAAA;AACzE,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACzB,YAAA,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACzF;AAAO,aAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACrC,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;gBACpB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACnC,oBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClD,gBAAA,CAAC,CAAC;AACF,gBAAA,OAAO,MAAM;YACf;QACF;aAAO;AACL,YAAA,OAAO,MAAM;QACf;IACF;IAEA,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACxE;AAEQ,IAAA,yBAAyB,CAAC,MAAwB,EAAA;QACxD,IAAI,QAAQ,GAAG,KAAK;AAEpB,QAAA,IAAI,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE;AAC1B,YAAA,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;QACtE;QAEA,OAAO;AACL,YAAA,GAAG,MAAM;YACT;SACD;IACH;IAEA,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACnG;IAEA,gBAAgB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAC7B,GAAG,CAAC,CAAC,aAAa,KAChB;AACG,aAAA,MAAM,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAC7C,aAAA,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AACvC,aAAA,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AACtC,aAAA,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAC3D,CACF;IACH;AAEA,IAAA,SAAS,CAAC,IAAe,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACnH;IAEA,sBAAsB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAClI;AAEA,IAAA,uBAAuB,CAAC,IAAe,EAAA;AACrC,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACjI;AAEQ,IAAA,SAAS,CAAC,SAA2B,EAAA;QAC3C,IAAI,SAAS,CAAC,IAAI,KAAK,iBAAiB,CAAC,IAAI,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACpG,YAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAE1H,SAAS,CAAC,QAAQ,GAAG;AAClB,iBAAA,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC;iBACtD,IAAI,CAAC,WAAW;AAChB,iBAAA,MAAM,CAAC,gBAAgB,EAAE,EAAE;AAC3B,iBAAA,MAAM,CAAC,gBAAgB,EAAE,EAAE,CAAC;QACjC;AAEA,QAAA,OAAO,SAAS;IAClB;AAEQ,IAAA,iBAAiB,CAAC,OAA2B,EAAA;AACnD,QAAA,OAAO,CAAC,OAAO,IAAI,EAAE;AAClB,aAAA,MAAM,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAC7C,aAAA,GAAG,CAAC,CAAC,MAAM,KAAI;YACd,IAAI,MAAM,CAAC,IAAI,KAAK,iBAAiB,CAAC,IAAI,EAAE;gBAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AACpC,gBAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;yBAClB,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,QAAQ;AACjC,yBAAA,MAAM,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;yBACvD,IAAI,CAAC,WAAW;AAChB,yBAAA,MAAM,CAAC,gBAAgB,EAAE,EAAE,CAAC;gBACjC;AACA,gBAAA,OAAO,IAAI;YACb;AACA,YAAA,OAAO,MAAM;AACf,QAAA,CAAC;AACA,aAAA,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC;AACtD,aAAA,MAAM,CAAC,gBAAgB,EAAE,EAAE;AAC3B,aAAA,MAAM,CAAC,gBAAgB,EAAE,EAAE,CAAC;IACjC;IAEA,wBAAwB,GAAA;QACtB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC;IACnG;IAEA,wBAAwB,GAAA;QACtB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC;IACnG;IAEA,uBAAuB,GAAA;QACrB,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,oBAAoB,KAAK,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACrH;IAEA,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;IAC1F;IAEA,kBAAkB,GAAA;QAChB,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,eAAe,KAAK,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAAC;IACtG;IAEA,iCAAiC,GAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAC9C,GAAG,CAAC,CAAC,8BAA8B,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,GAAG,EAAE,CAAC,CAAC,CACjI;IACH;IAEA,gBAAgB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAC7B,GAAG,CAAC,CAAC,aAAa,KAChB;AACG,aAAA,MAAM,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAC7C,aAAA,GAAG,CAAC,CAAC,MAAM,KAAI;YACd,IAAI,MAAM,CAAC,IAAI,KAAK,iBAAiB,CAAC,IAAI,EAAE;gBAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AACpC,gBAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AAClB,yBAAA,MAAM,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;yBACvD,IAAI,CAAC,WAAW;AAChB,yBAAA,MAAM,CAAC,gBAAgB,EAAE,EAAE;AAC3B,yBAAA,MAAM,CAAC,gBAAgB,EAAE,EAAE,CAAC;gBACjC;AACA,gBAAA,OAAO,IAAI;YACb;AAEA,YAAA,OAAO,MAAM;AACf,QAAA,CAAC;AACA,aAAA,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC;aACtD,IAAI,CAAC,WAAW;AAChB,aAAA,MAAM,CAAC,gBAAgB,EAAE,EAAE;AAC3B,aAAA,MAAM,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAChC,CACF;IACH;IAEA,4BAA4B,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,kBAAkB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAChJ;AAEA,IAAA,UAAU,CAAC,MAAwB,EAAA;QACjC,OAAO;AACL,YAAA,GAAG,MAAM;YACT,QAAQ,EAAE,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;SACxE;IACH;AAEA,IAAA,aAAa,CAAC,MAAiF,EAAA;AAC7F,QAAA,IAAI,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE;YAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;gBACvC,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACvF;AACA,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;QACjE;AACA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,yBAAyB,CAAC,SAAc,EAAA;QACtC,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,SAAS,CAAC,QAAQ,EAAE;AACtB,gBAAA,OAAO,IAAI;YACb;AAEA,YAAA,IAAI,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC7B,gBAAA,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC;YACrE;QACF;AAEA,QAAA,OAAO,KAAK;IACd;IAEA,aAAa,CAAC,EAAU,EAAE,iBAAuB,EAAA;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAChD,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM;AAChC,YAAA,MAAM,OAAO,GAAG;gBACd,SAAS,EAAE,IAAI,CAAC;aACjB;AACD,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC;AAElE,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAClB,IAAI;AACJ,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,aAAa,EAAE;AAChB,aAAA,CAAC;QACJ;aAAO;AACL,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AAClB,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,aAAa,EAAE;AAChB,aAAA,CAAC;QACJ;IACF;;AAGA,IAAA,aAAa,CAAC,MAAc,EAAA;AAC1B,QAAA,OAAO,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAChD;;AAGA,IAAA,YAAY,CAAC,MAAyB,EAAE,GAAG,IAAW,EAAA;QACpD,IAAI,aAAa,GAAoB,EAAE;AACvC,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACzB,YAAA,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC3G;aAAO;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YAC3C,IAAI,SAAS,EAAE;AACb,gBAAA,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;YAC/B;QACF;AACA,QAAA,IAAI,aAAa,EAAE,MAAM,GAAG,CAAC,EAAE;AAC7B,YAAA,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;QACrE;AAEA,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,YAAY,CAAC,GAAW,EAAA;QACtB,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC;IAC1C;AAEA,IAAA,cAAc,CAAC,IAAe,EAAA;AAC5B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;QAE9B,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;AACxC,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC;YAE5D,IAAI,CAAC,UAAU,EAAE;AACf,gBAAA,OAAO,KAAK;YACd;QACF;AAEA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,uBAAuB,CAAC,IAAe,EAAA;AACrC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;QAE9B,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;AAC5C,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC;YACpE,IAAI,CAAC,cAAc,EAAE;AACnB,gBAAA,OAAO,KAAK;YACd;QACF;AAEA,QAAA,OAAO,IAAI;IACb;IAEA,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;IACjC;AAEA,IAAA,kBAAkB,CAAC,OAAe,EAAA;QAChC,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC;IACpD;+GAvhBW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA;;4FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACvED;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAkBU,wBAAwB,CAAA;AARrC,IAAA,WAAA,GAAA;AASmB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAuC1D,IAAA;IA1BC,SAAS,GAAA;QACP,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACvC,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAC3B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAC5B,IAAI,CAAC;AACH,kBAAE;AACE,oBAAA,6BAA6B,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAC5F;kBACD,SAAS,CACd;QACH;IACF;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,QAAQ,EAAE;YACnC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ;QAChD;IACF;AAEQ,IAAA,cAAc,CAAC,SAA2B,EAAA;AAChD,QAAA,OAAO,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK;IACpC;IAEA,eAAe,CAAC,CAAS,EAAE,GAAqB,EAAA;QAC9C,OAAO,GAAG,CAAC,EAAE;IACf;+GAvCW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,oOAQxB,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGX,yBAAyB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnDtC,qzCAmCA,EAAA,MAAA,EAAA,CAAA,kJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDKa,wBAAwB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAPV,aAAa,mwBAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,yBAAyB,qFAAxF,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAOZ,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,SAAS;8BACC,CAAC,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,yBAAyB,CAAC,YACzF,uBAAuB,EAAA,aAAA,EAGlB,iBAAiB,CAAC,IAAI,QAC/B,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAA,QAAA,EAAA,qzCAAA,EAAA,MAAA,EAAA,CAAA,kJAAA,CAAA,EAAA;;sBAKvC;;sBAEA;;sBAGA,SAAS;uBAAC,WAAW;;sBAGrB,SAAS;uBAAC,yBAAyB;;;AEnDtC;;;;;;;;;;;;;;;;;;;;;;AAsBG;IAWS;AAAZ,CAAA,UAAY,iBAAiB,EAAA;AAC3B,IAAA,iBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,iBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,iBAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACjC,IAAA,iBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACzB,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,GAAA,EAAA,CAAA,CAAA;MAchB,sBAAsB,CAAA;AAPnC,IAAA,WAAA,GAAA;AAQmB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,mBAAmB,CAAC;AASzD,QAAA,IAAA,CAAA,IAAI,GAAsB,iBAAiB,CAAC,WAAW;AAmBxD,IAAA;IAXC,SAAS,GAAA;QACP,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACvC,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE;gBAC1D,6BAA6B,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAClG,aAAA,CAAC;QACJ;IACF;AAEQ,IAAA,cAAc,CAAC,SAA2B,EAAA;AAChD,QAAA,OAAO,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK;IACpC;+GA5BW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/CnC,kgDAiDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDR2B,eAAe,2iBAAE,wBAAwB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAvE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAMZ,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,aAAa,EAAE,eAAe,EAAE,wBAAwB,EAAE,aAAa,CAAC,EAAA,QAAA,EACxE,oBAAoB,EAAA,aAAA,EAEf,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAA,QAAA,EAAA,kgDAAA,EAAA;;sBAKpC;;sBAMA;;sBAGA;;sBAGA;;;AE9DH;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAkBU,oBAAoB,CAAA;AAPjC,IAAA,WAAA,GAAA;QAgCE,IAAA,CAAA,IAAI,GAAG,SAAS;AAgDjB,IAAA;IA7CC,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;IAC7B;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,SAAS;IAC9C;IAEA,eAAe,GAAA;QACb,MAAM,mBAAmB,GAAG,IAAI,GAAG,CACjC,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAC9E;AAED,QAAA,MAAM,cAAc,GAAG,IAAI,GAAG,EAAoC;QAClE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACrC,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE;gBACtB,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC;YAC7C;AACF,QAAA,CAAC,CAAC;QAEF,MAAM,SAAS,GAAkB,EAAE;QACnC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,KAAK,KAAI;YACzC,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,MAAM,EAAE;gBAC3C,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,EAAE;gBAC/C,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC;AACtD,gBAAA,IAAI,SAAS,EAAE,QAAQ,EAAE;AACvB,oBAAA,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;gBACpC;YACF;iBAAO;gBACL,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;AAChD,gBAAA,IAAI,WAAW,EAAE,QAAQ,EAAE;AACzB,oBAAA,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;gBACtC;YACF;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,kBAAkB,GAAG,IAAI,SAAS,EAAe;AACvD,QAAA,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,kBAAkB;AACxC,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;IAChC;IAEA,eAAe,CAAC,CAAS,EAAE,GAAqB,EAAA;QAC9C,OAAO,GAAG,CAAC,EAAE;IACf;+GAxEW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,gYAUpB,OAAO,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,SAAA,EAGJ,wBAAwB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,4BAAA,EAAA,SAAA,EAGxB,yBAAyB,gDCxDzC,sgFAgFA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED9C2B,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,8mBAAE,wBAAwB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,yBAAyB,qFAAjH,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAMZ,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;8BACC,CAAC,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,wBAAwB,EAAE,aAAa,EAAE,yBAAyB,CAAC,EAAA,QAAA,EAClH,kBAAkB,EAAA,aAAA,EAEb,iBAAiB,CAAC,IAAI,QAC/B,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAA,QAAA,EAAA,sgFAAA,EAAA;;sBAGlC;;sBAGA;;sBAGA,SAAS;uBAAC,YAAY;;sBAGtB,SAAS;uBAAC,OAAO;;sBAGjB,YAAY;uBAAC,wBAAwB;;sBAGrC,YAAY;uBAAC,yBAAyB;;sBAGtC;;sBAQA,YAAY;uBAAC,yBAAyB;;;AEnEzC;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAiBU,sBAAsB,CAAA;AATnC,IAAA,WAAA,GAAA;AAUmB,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAS/C,QAAA,IAAA,CAAA,IAAI,GAAsB,iBAAiB,CAAC,WAAW;AAexD,IAAA;;;IALC,SAAS,GAAA;QACP,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;AAC5C,YAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;QACxB;IACF;+GAxBW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,8MCvCnC,gtBAwBA,EAAA,MAAA,EAAA,CAAA,kUAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDOY,sBAAsB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,qGAAE,yBAAyB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAQtE,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBATlC,SAAS;8BACC,CAAC,sBAAsB,EAAE,oBAAoB,EAAE,yBAAyB,CAAC,EAAA,QAAA,EACxE,oBAAoB,EAAA,aAAA,EAGf,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,QACzC,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAA,QAAA,EAAA,gtBAAA,EAAA,MAAA,EAAA,CAAA,kUAAA,CAAA,EAAA;;sBAKpC;;sBAMA;;sBAGA;;sBAGA;;;AEtDH;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAcU,gBAAgB,CAAA;IAG3B,eAAe,CAAC,CAAS,EAAE,MAAwB,EAAA;QACjD,OAAO,MAAM,CAAC,EAAE;IAClB;+GALW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpC7B,4KAKA,EAAA,MAAA,EAAA,CAAA,sSAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED0BY,sBAAsB,8GAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAKvC,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;+BACE,aAAa,EAAA,OAAA,EACd,CAAC,sBAAsB,EAAE,gBAAgB,CAAC,EAAA,aAAA,EAGpC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,4KAAA,EAAA,MAAA,EAAA,CAAA,sSAAA,CAAA,EAAA;;sBAGpC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;AErC3B;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAuBU,mBAAmB,CAAA;AANhC,IAAA,WAAA,GAAA;AAOmB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAa,KAAK,CAAC;AACjC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACtC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACxC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC;AACtC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAQxD,IAAA,CAAA,SAAS,GAAG,KAAK;QAEjB,IAAA,CAAA,IAAI,GAAyB,EAAE;QAC/B,IAAA,CAAA,OAAO,GAA4B,EAAE;QAErC,IAAA,CAAA,kBAAkB,GAAG,KAAK;QAC1B,IAAA,CAAA,IAAI,GAAW,IAAI;AAOF,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAiEjD,IAAA;IArEC,qBAAqB,GAAA;QACnB,IAAI,CAAC,KAAK,EAAE;IACd;IAIA,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE;AAC5C,QAAA,IAAI,CAAC;AACF,aAAA,wBAAwB;AACxB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,OAAO,KAAI;AACrB,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACxB,QAAA,CAAC,CAAC;AAEJ,QAAA,IAAI,CAAC;aACF,MAAM,CAAC,iBAAiB;AACxB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,yBAAyB,KAAI;AACvC,YAAA,IAAI,CAAC,kBAAkB,GAAG,yBAAyB;AACrD,QAAA,CAAC,CAAC;QAEJ,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAS,KAAI;AAC9F,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI;AACxB,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAC1D;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;gBAC1B,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YACvC;AAEA,YAAA,MAAM,KAAK,GAAQ,IAAI,CAAC,IAAI,CAAC,KAAK;YAElC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE;AACnC,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B;IACF;IAEQ,KAAK,GAAA;QACX,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,sBAAsB,EAAE,CAAC;IACnD;AAEQ,IAAA,YAAY,CAAC,MAAc,EAAA;QACjC,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AAErB,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,SAAS,CAC3C,CAAC,MAAM,KAAI;AACT,gBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AAC3B,gBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM;AACxB,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACxB,YAAA,CAAC,EACD,OAAO,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAC/B;QACH;IACF;AAEQ,IAAA,cAAc,CAAC,IAAS,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC;IACnD;+GA1FW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7ChC,gsBAeA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDyB2B,oBAAoB,2NAAEC,qBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,eAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,sBAAsB,sFAAtI,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAKZ,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,aAAa,EAAE,oBAAoB,EAAEA,qBAAsB,EAAE,UAAU,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,sBAAsB,CAAC,EAAA,QAAA,EACvI,iBAAiB,EAAA,aAAA,EAEZ,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,gsBAAA,EAAA;;sBASpC;;sBAGA,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAWxB,YAAY;uBAAC,gBAAgB;;;AElEhC;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAImB,uBAAuB,CAAA;AAG5C;;AC7BD;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAOH,MAAM,4BAA4B,GAAG,OAAO;MAK/B,mBAAmB,CAAA;AAHhC,IAAA,WAAA,GAAA;AAImB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;AAuB5C,IAAA;IArBS,cAAc,CAAC,IAAe,EAAE,SAAiB,EAAA;QACvD,MAAM,eAAe,GAAG,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,IAAI,CAAC;AAC9D,QAAA,MAAM,QAAQ,GAAG,eAAe,GAAG,4BAA4B;AAE/D,QAAA,OAAO,QAAQ,IAAI,QAAQ,GAAG,SAAS;IACzC;AAEA;;;;;AAKG;IACH,WAAW,CAAC,IAAe,EAAE,SAAiB,EAAA;QAC5C,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE;AACxC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC/E,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,OAAO,KAAK;IACd;+GAvBW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA;;4FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACjCD;;;;;;;;;;;;;;;;;;;;;;AAsBG;AA2BH;MAEsB,aAAa,CAAA;AADnC,IAAA,WAAA,GAAA;QAKE,IAAA,CAAA,KAAK,GAAG,MAAM;QAId,IAAA,CAAA,OAAO,GAA4B,EAAE;QACrC,IAAA,CAAA,oBAAoB,GAA4B,EAAE;QAClD,IAAA,CAAA,WAAW,GAAuB,EAAE;QACpC,IAAA,CAAA,aAAa,GAAG,KAAK;QACrB,IAAA,CAAA,SAAS,GAAG,KAAK;AAEjB,QAAA,IAAA,CAAA,UAAU,GAAmB,cAAc,CAAC,IAAI;QAChD,IAAA,CAAA,aAAa,GAAG,UAAU;QAC1B,IAAA,CAAA,aAAa,GAAuB,EAAE;QACtC,IAAA,CAAA,aAAa,GAAG,KAAK;QACrB,IAAA,CAAA,qBAAqB,GAAG,CAAC;AAGf,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACrC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACxC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,uBAAuB,CAAC;AACzC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,EAAkB,KAAe,EAAC;AAChD,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC/C,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAEd,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAEjC,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAE5E,IAAA,CAAA,aAAa,GAAmB,EAAE;AA2I7C,IAAA;IAzIC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC;AACF,aAAA,gBAAgB;AAChB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,OAAO,KAAI;AACrB,YAAA,IAAI,CAAC,aAAa,GAAG,OAAO;AAC9B,QAAA,CAAC,CAAC;QAEJ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC;AAE9D,QAAA,IAAI,CAAC;aACF,MAAM,CAAC,eAAe;AACtB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,SAAS,KAAI;AACvB,YAAA,IAAI,CAAC,SAAS,GAAG,SAAS;YAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC;AAChG,QAAA,CAAC,CAAC;AAEJ,QAAA,IAAI,CAAC;AACF,aAAA,wBAAwB;AACxB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,OAAO,KAAI;AACrB,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACxB,QAAA,CAAC,CAAC;AAEJ,QAAA,IAAI,CAAC;AACF,aAAA,cAAc;AACd,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,OAAO,KAAI;AACrB,YAAA,IAAI,CAAC,WAAW,GAAG,OAAO;AAC5B,QAAA,CAAC,CAAC;AAEJ,QAAA,IAAI,CAAC;AACF,aAAA,uBAAuB;AACvB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,OAAO,KAAI;AACrB,YAAA,IAAI,CAAC,oBAAoB,GAAG,OAAO;AACrC,QAAA,CAAC,CAAC;AAEJ,QAAA,IAAI,CAAC;aACF,MAAM,CAAC,gBAAgB;AACvB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,IAAI,KAAI;AAClB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAC9D,QAAA,CAAC,CAAC;AAEJ,QAAA,IAAI,CAAC;aACF,OAAO,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE,WAAW,CAAC,gBAAgB,CAAC;AACnE,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,YAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO;AACrC,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,UAAU,EAAE,YAAY,EAAE;YACpC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY;QACnD;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,WAAW,EAAE,CAAC;AACxE,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;QAEvB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC,EAAE,CAAC,CAAC;IACrD;IAEA,WAAW,CAAC,IAAe,EAAE,MAAuB,EAAA;AAClD,QAAA,IAAI,IAAI,EAAE,KAAK,EAAE;YACf,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE;AAC1H,gBAAA,IAAI,EAAU;gBAEd,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,cAAc,EAAE;oBAC1C,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC;gBAC9C;qBAAO;AACL,oBAAA,EAAE,GAAI,IAAY,CAAC,KAAK,CAAC,MAAM,IAAK,IAAY,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;gBAC9E;AAEA,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACrD;QACF;IACF;AAEA,IAAA,2BAA2B,CAAC,KAAa,EAAA;AACvC,QAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK;IACpC;IAEA,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI;IACxC;AAEA,IAAA,aAAa,CAAC,GAAiB,EAAA;QAC7B,IAAI,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC9B,YAAA,OAAO,gCAAgC;QACzC;AAEA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,MAAM,CAAC,YAAwB,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;YAC7B;QACF;AAEA,QAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE;QACjC,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;QACjE;IACF;IAEA,+BAA+B,GAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;YAC7B;QACF;AACA,QAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE;IAC3C;IAEA,eAAe,CAAC,CAAS,EAAE,MAAwB,EAAA;QACjD,OAAO,MAAM,CAAC,EAAE;IAClB;IAEA,SAAS,CAAC,CAAS,EAAE,GAAmB,EAAA;QACtC,OAAO,GAAG,CAAC,EAAE;IACf;IAEA,eAAe,CAAC,CAAS,EAAE,GAA0B,EAAA;QACnD,OAAO,GAAG,CAAC,EAAE;IACf;IAEQ,kBAAkB,GAAA;QACxB,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;IAC9C;AAGA,IAAA,gBAAgB,CAAC,KAAU,EAAA;AACzB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS;IACtE;+GA5KoB,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,oKACtB,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FADZ,aAAa,EAAA,UAAA,EAAA,CAAA;kBADlC;;sBAEE,SAAS;uBAAC,qBAAqB;;sBAwK/B,YAAY;uBAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC;;;AC5N7C;;;;;;;;;;;;;;;;;;;;;;AAsBG;;ACtBH;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAeU,uBAAuB,CAAA;AALpC,IAAA,WAAA,GAAA;AAMmB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAkB,KAAK,CAAC;;QAIvD,IAAA,CAAA,OAAO,GAAG,IAAI;QAGd,IAAA,CAAA,aAAa,GAAuB,EAAE;AAgBrB,QAAA,IAAA,CAAA,QAAQ,GAAiB,IAAI,OAAO,EAAE;AAEtC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AA8CjD,IAAA;AA7DC,IAAA,kBAAkB,CAAC,KAAiB,EAAA;QAClC,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,cAAc,EAAE;AAEtB,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;gBACpC,IAAI,MAAM,EAAE;AACV,oBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;gBAC7B;YACF;QACF;IACF;IAMA,QAAQ,GAAA;QACN,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAiB,KAAI;AACzG,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE;AAC9B,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACvE;iBAAO;gBACL,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;YAC7C;AACF,QAAA,CAAC,CAAC;IACJ;IACA,OAAO,CAAC,KAAiB,EAAE,MAAe,EAAA;QACxC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YAC5B,MAAM,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;QAC/C;AAEA,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;AAC7B,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3B;AAEQ,IAAA,SAAS,CAAC,KAAiB,EAAA;AACjC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAiB;QACtC,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACxD;AAEQ,IAAA,UAAU,CAAC,MAAe,EAAA;QAChC,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC7F;AAEQ,IAAA,YAAY,CAAC,MAAe,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACvG;IAEQ,YAAY,CAAC,EAAW,EAAE,SAAiB,EAAA;AACjD,QAAA,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AAC9C,YAAA,EAAE,GAAG,EAAE,CAAC,aAAa;QACvB;AACA,QAAA,OAAO,EAAE;IACX;+GAvEW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,SAAA,CAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE;AACX,iBAAA;;sBAKE,KAAK;uBAAC,kBAAkB;;sBAGxB;;sBAGA,YAAY;uBAAC,aAAa,EAAE,CAAC,QAAQ,CAAC;;;AC/CzC;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAUU,mBAAmB,CAAA;AAJhC,IAAA,WAAA,GAAA;AAKmB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACxC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAC5C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEjC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAQjD,IAAA;IANC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,+BAA+B,CAAC;QACrF,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAsB,KAAI;YAC5G,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,KAAK,CAAC,QAAQ;AAClD,QAAA,CAAC,CAAC;IACJ;+GAZW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;AC/BD;;;;;;;;;;;;;;;;;;;;;;AAsBG;;ACtBH;;;;;;;;;;;;;;;;;;;;;;AAsBG;;ACtBH;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAQI,MAAM,kBAAkB,GAAkB,MAA0B;IACzE,MAAM,KAAK,GAAG,MAAM,EAAC,KAAe,EAAC;AACrC,IAAA,OAAO,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC;AAC1C;;ACjCA;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAMI,MAAM,kBAAkB,GAAkB,CAAC,KAA6B,KAAI;AACjF,IAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACjD,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAE7B,IAAA,MAAM,eAAe,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;IAErE,IAAI,CAAC,eAAe,EAAE;AACpB,QAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;IACxB;AAEA,IAAA,OAAO,eAAe;AACxB;;ACvCA;;;;;;;;;;;;;;;;;;;;;;AAsBG;MASU,cAAc,CAAA;AAH3B,IAAA,WAAA,GAAA;AAIE;;AAEG;AACH,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;AAElC;;AAEG;AACH,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAU;AAEtC;;AAEG;AACH,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAa;AAEzC;;AAEG;AACH,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAa;AAEzC;;AAEG;AACH,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,OAAO,EAAQ;AAEzC;;AAEG;AACH,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAQ;AAEnC;;AAEG;AACH,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAU;AAEnC;;AAEG;AACH,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAQ;AAErC;;AAEG;AACH,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,OAAO,EAAQ;AAEvC;;AAEG;AACH,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAQ;AAEnC;;AAEG;AACH,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,OAAO,EAAQ;AAE3C;;AAEG;AACH,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAmB,IAAI,CAAC;AAC5D,IAAA;+GA5DY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA;;4FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;AC9BD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAQU,wBAAwB,CAAA;AADrC,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAExC,IAAA,CAAA,OAAO,GAAa,EAAE;AAuBvB,IAAA;IArBC,oBAAoB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAC5B,SAAS,CAAC,IAAI,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EACjE,MAAM,CAAC,CAAC,KAAoB,KAAK,KAAK,YAAY,aAAa,CAAC,CACjE;IACH;AAEA,IAAA,yBAAyB,CAAC,GAAW,EAAA;AACnC,QAAA,QACE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;AACvB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;AACrD,YAAA,CAAC,GAAG,IAAI,CAAC,OAAO;AACb,iBAAA,OAAO;iBACP,KAAK,CAAC,CAAC;AACP,iBAAA,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAE1F;AAEA,IAAA,UAAU,CAAC,KAAoB,EAAA;QAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;IAC5C;+GAzBW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cADX,MAAM,EAAA,CAAA,CAAA;;4FACnB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;AC7BlC;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAgBI,MAAM,YAAY,GAAG;AAC1B,IAAA,GAAG,EAAE;AACH,QAAA,OAAO,EAAE,8BAA8B;AACvC,QAAA,QAAQ,EAAE,yCAAyC;AACnD,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,IAAI,EAAE;AACJ,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,EAAE,EAAE,IAAI;AACR,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,QAAQ,EAAE;AACX,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,aAAa,EAAE;AAChB,SAAA;AACD,QAAA,gBAAgB,EAAE,KAAK;AACvB,QAAA,wBAAwB,EAAE,EAAE;AAC5B,QAAA,eAAe,EAAE,IAAI;AACrB,QAAA,UAAU,EAAE;AACV,YAAA,MAAM,EAAE;AACN,gBAAA,mBAAmB,EAAE;AACtB;AACK;AACT;;AAGI,MAAM,4BAA4B,GAAG;AAC1C,IAAA,eAAe,EAAE,IAAI,eAAe,CAAwB,IAAI,CAAC;IACjE,iBAAiB,EAAE,MACjB,EAAE,CACA,IAAI,cAAc,CAAC;AACjB,QAAA,OAAO,EAAE;AACP,YAAA,KAAK,EAAE;AACO;AACjB,KAAA,CAAC;;AAKF,MAAO,2BAA4B,SAAQ,uBAAuB,CAAA;IACtE,aAAa,GAAA;AACX,QAAA,OAAO,IAAI;IACb;IAEA,gBAAgB,GAAA;AACd,QAAA,OAAO,IAAI;IACb;+GAPW,2BAA2B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAA3B,2BAA2B,EAAA,CAAA,CAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC;;MA6BY,gBAAgB,CAAA;+GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAhB,gBAAgB,EAAA,OAAA,EAAA,CAjBjB,oBAAoB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA;AAiBlG,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,SAAA,EAhBhB;AACT,YAAA,YAAY,CACV,EAAE,GAAG,EAAE,IAAI,EAAE,EACb;gBACE,YAAY;AACZ,gBAAA,aAAa,EAAE;AACb,oBAAA,uBAAuB,EAAE,KAAK;AAC9B,oBAAA,wBAAwB,EAAE;AAC3B;aACF,CACF;YACD,cAAc,CAAC,EAAE,CAAC;AAClB,YAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,sBAAsB,EAAE;YACjE,iBAAiB,CAAC,sBAAsB,EAAE;SAC3C,EAAA,OAAA,EAAA,CAfS,oBAAoB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA;;4FAiBlG,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAlB5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,oBAAoB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,aAAa,CAAC;AAC9G,oBAAA,SAAS,EAAE;AACT,wBAAA,YAAY,CACV,EAAE,GAAG,EAAE,IAAI,EAAE,EACb;4BACE,YAAY;AACZ,4BAAA,aAAa,EAAE;AACb,gCAAA,uBAAuB,EAAE,KAAK;AAC9B,gCAAA,wBAAwB,EAAE;AAC3B;yBACF,CACF;wBACD,cAAc,CAAC,EAAE,CAAC;AAClB,wBAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,sBAAsB,EAAE;wBACjE,iBAAiB,CAAC,sBAAsB,EAAE;AAC3C;AACF,iBAAA;;;AC7GD;;;;;;;;;;;;;;;;;;;;;;AAsBG;;ACtBH;;AAEG;;"}
1
+ {"version":3,"file":"alfresco-aca-shared.mjs","sources":["../../../../projects/aca-shared/src/lib/adf-extensions/extensions-data-loader.guard.ts","../../../../projects/aca-shared/src/lib/components/page-layout/page-layout-content.component.ts","../../../../projects/aca-shared/src/lib/components/page-layout/page-layout-error.component.ts","../../../../projects/aca-shared/src/lib/components/page-layout/page-layout-header.component.ts","../../../../projects/aca-shared/src/lib/services/content-api.service.ts","../../../../projects/aca-shared/src/lib/services/router.extension.service.ts","../../../../projects/aca-shared/src/lib/components/open-in-app/open-in-app.component.ts","../../../../projects/aca-shared/src/lib/components/open-in-app/open-in-app.component.html","../../../../projects/aca-shared/src/lib/services/aca-mobile-app-switcher.service.ts","../../../../projects/aca-shared/src/lib/constants/mime-types.ts","../../../../projects/aca-shared/src/lib/services/app-settings.service.ts","../../../../projects/aca-shared/src/lib/services/user-profile.service.ts","../../../../projects/aca-shared/src/lib/services/pagination-state-base.service.ts","../../../../projects/aca-shared/src/lib/services/pagination-state.service.ts","../../../../projects/aca-shared/src/lib/services/app.service.ts","../../../../projects/aca-shared/src/lib/components/page-layout/page-layout.component.ts","../../../../projects/aca-shared/src/lib/components/page-layout/page-layout.component.html","../../../../projects/aca-shared/src/lib/components/page-layout/page-layout.module.ts","../../../../projects/aca-shared/src/lib/utils/node.utils.ts","../../../../projects/aca-shared/src/lib/components/locked-by/locked-by.component.ts","../../../../projects/aca-shared/src/lib/components/generic-error/generic-error.component.ts","../../../../projects/aca-shared/src/lib/components/generic-error/generic-error.component.html","../../../../projects/aca-shared/src/lib/services/node-permission.service.ts","../../../../projects/aca-shared/src/lib/services/app.extension.service.ts","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar-menu-item/toolbar-menu-item.component.ts","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar-menu-item/toolbar-menu-item.component.html","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar-button/toolbar-button.component.ts","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar-button/toolbar-button.component.html","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar-menu/toolbar-menu.component.ts","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar-menu/toolbar-menu.component.html","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar-action/toolbar-action.component.ts","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar-action/toolbar-action.component.html","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar.component.ts","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar.component.html","../../../../projects/aca-shared/src/lib/components/info-drawer/info-drawer.component.ts","../../../../projects/aca-shared/src/lib/components/info-drawer/info-drawer.component.html","../../../../projects/aca-shared/src/lib/components/document-base-page/document-base-page.service.ts","../../../../projects/aca-shared/src/lib/services/auto-download.service.ts","../../../../projects/aca-shared/src/lib/components/document-base-page/document-base-page.component.ts","../../../../projects/aca-shared/src/lib/constants/index.ts","../../../../projects/aca-shared/src/lib/directives/contextmenu/contextmenu.directive.ts","../../../../projects/aca-shared/src/lib/directives/pagination.directive.ts","../../../../projects/aca-shared/src/lib/models/types.ts","../../../../projects/aca-shared/src/lib/models/viewer.rules.ts","../../../../projects/aca-shared/src/lib/routing/shared.guard.ts","../../../../projects/aca-shared/src/lib/routing/plugin-enabled.guard.ts","../../../../projects/aca-shared/src/lib/services/app-hook.service.ts","../../../../projects/aca-shared/src/lib/services/navigation-history.service.ts","../../../../projects/aca-shared/src/lib/testing/lib-testing-module.ts","../../../../projects/aca-shared/src/public-api.ts","../../../../projects/aca-shared/src/alfresco-aca-shared.ts"],"sourcesContent":["/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { InjectionToken, inject } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivateFn } from '@angular/router';\nimport { Observable, forkJoin, of } from 'rxjs';\nimport { tap, map, catchError } from 'rxjs/operators';\n\nexport type ExtensionLoaderCallback = (route: ActivatedRouteSnapshot) => Observable<boolean>;\n\nexport const DefaultExtensionLoaderFactory = () => [];\n\nexport const EXTENSION_DATA_LOADERS = new InjectionToken<ExtensionLoaderCallback[]>('EXTENSION_DATA_LOADERS', {\n providedIn: 'root',\n factory: DefaultExtensionLoaderFactory\n});\n\nlet invoked = false;\n\nexport const ExtensionsDataLoaderGuard: CanActivateFn = (route: ActivatedRouteSnapshot): Observable<boolean> => {\n const extensionDataLoaders = inject(EXTENSION_DATA_LOADERS);\n if (!invoked) {\n if (!extensionDataLoaders.length) {\n invoked = true;\n return of(true);\n }\n\n const dataLoaderCallbacks = extensionDataLoaders.map((callback) => callback(route));\n\n // Undocumented forkJoin behaviour/bug:\n // https://github.com/ReactiveX/rxjs/issues/3246\n // So all callbacks need to emit before completion, otherwise forkJoin will short circuit\n return forkJoin(...dataLoaderCallbacks).pipe(\n map(() => true),\n tap(() => (invoked = true)),\n catchError((e) => {\n // eslint-disable-next-line no-console\n console.error('Some of the extension data loader guards has been errored.');\n // eslint-disable-next-line no-console\n console.error(e);\n return of(true);\n })\n );\n } else {\n return of(true);\n }\n};\n\nexport const resetInvoked = () => {\n invoked = false;\n};\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ChangeDetectionStrategy, Component, HostBinding, Input, ViewEncapsulation } from '@angular/core';\n\n// @deprecated Use `.aca-page-layout-content` CSS selector instead\n@Component({\n standalone: true,\n selector: 'aca-page-layout-content',\n template: `<ng-content />`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'aca-page-layout-content' }\n})\nexport class PageLayoutContentComponent {\n @Input()\n @HostBinding('class.aca-scrollable')\n scrollable = false;\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n// @deprecated Use `.aca-page-layout-error` selectors instead\n@Component({\n standalone: true,\n selector: 'aca-page-layout-error',\n template: `<ng-content />`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'aca-page-layout-error' }\n})\nexport class PageLayoutErrorComponent {}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n// @deprecated Use `.aca-page-layout-header` CSS selector instead\n@Component({\n standalone: true,\n selector: 'aca-page-layout-header',\n template: '<ng-content />',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'aca-page-layout-header' }\n})\nexport class PageLayoutHeaderComponent {}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { UserPreferencesService } from '@alfresco/adf-core';\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { Observable, from } from 'rxjs';\nimport {\n NodePaging,\n Node,\n DeletedNodesPaging,\n PersonEntry,\n NodeEntry,\n DiscoveryEntry,\n FavoritePaging,\n SharedLinkPaging,\n SearchRequest,\n ResultSetPaging,\n SiteBodyCreate,\n SiteEntry,\n FavoriteBodyCreate,\n FavoriteEntry,\n AssociationBody,\n AssociationEntry,\n NodeAssociationPaging,\n NodesApi,\n TrashcanApi,\n SharedlinksApi,\n DiscoveryApi,\n FavoritesApi,\n ContentApi,\n SitesApi,\n SearchApi,\n PeopleApi,\n VersionsApi,\n DirectAccessUrlEntry,\n VersionPaging,\n LazyApi\n} from '@alfresco/js-api';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ContentApiService {\n private readonly api = inject(AlfrescoApiService);\n private readonly preferences = inject(UserPreferencesService);\n\n @LazyApi((self: ContentApiService) => new NodesApi(self.api.getInstance()))\n declare nodesApi: NodesApi;\n\n @LazyApi((self: ContentApiService) => new TrashcanApi(self.api.getInstance()))\n declare trashcanApi: TrashcanApi;\n\n @LazyApi((self: ContentApiService) => new SharedlinksApi(self.api.getInstance()))\n declare sharedLinksApi: SharedlinksApi;\n\n @LazyApi((self: ContentApiService) => new DiscoveryApi(self.api.getInstance()))\n declare discoveryApi: DiscoveryApi;\n\n @LazyApi((self: ContentApiService) => new FavoritesApi(self.api.getInstance()))\n declare favoritesApi: FavoritesApi;\n\n @LazyApi((self: ContentApiService) => new ContentApi(self.api.getInstance()))\n declare contentApi: ContentApi;\n\n @LazyApi((self: ContentApiService) => new SitesApi(self.api.getInstance()))\n declare sitesApi: SitesApi;\n\n @LazyApi((self: ContentApiService) => new SearchApi(self.api.getInstance()))\n declare searchApi: SearchApi;\n\n @LazyApi((self: ContentApiService) => new PeopleApi(self.api.getInstance()))\n declare peopleApi: PeopleApi;\n\n @LazyApi((self: ContentApiService) => new VersionsApi(self.api.getInstance()))\n declare versionsApi: VersionsApi;\n\n /**\n * Moves a node to the trashcan.\n *\n * @param nodeId ID of the target node\n * @param options Optional parameters supported by JS-API\n * @returns Empty result that notifies when the deletion is complete\n */\n deleteNode(nodeId: string, options: { permanent?: boolean } = {}): Observable<void> {\n return from(this.nodesApi.deleteNode(nodeId, options));\n }\n\n /**\n * Gets the stored information about a node.\n *\n * @param nodeId ID of the target node\n * @param options Optional parameters supported by JS-API\n * @returns Node information\n */\n getNode(nodeId: string, options: any = {}): Observable<NodeEntry> {\n const defaults = {\n include: ['path', 'properties', 'allowableOperations', 'permissions', 'definition', 'isLink']\n };\n const queryOptions = Object.assign(defaults, options);\n\n return from(this.nodesApi.getNode(nodeId, queryOptions));\n }\n\n getNodeInfo(nodeId: string, options?: any): Observable<Node> {\n const defaults = {\n include: ['isFavorite', 'allowableOperations', 'path', 'definition', 'isLink']\n };\n const queryOptions = Object.assign(defaults, options || {});\n\n return from(\n new Promise<Node>((resolve, reject) => {\n this.nodesApi.getNode(nodeId, queryOptions).then(\n (nodeEntry: NodeEntry) => {\n resolve(nodeEntry.entry);\n },\n (error) => {\n reject(error);\n }\n );\n })\n );\n }\n\n /**\n * Gets the items contained in a folder node.\n *\n * @param nodeId ID of the target node\n * @param options Optional parameters supported by JS-API\n * @returns List of child items from the folder\n */\n getNodeChildren(nodeId: string, options: any = {}): Observable<NodePaging> {\n const defaults = {\n maxItems: this.preferences.paginationSize,\n skipCount: 0,\n include: ['isLocked', 'path', 'properties', 'allowableOperations', 'permissions']\n };\n const queryOptions = Object.assign(defaults, options);\n\n return from(this.nodesApi.listNodeChildren(nodeId, queryOptions));\n }\n\n /**\n * Gets the target nodes that are associated with the given source node.\n *\n * @param nodeId ID of the source node\n * @param options Optional parameters supported by JS-API\n * @returns List of target associations\n */\n getNodeTargetAssociations(nodeId: string, options: any = {}): Observable<NodeAssociationPaging> {\n return from(this.nodesApi.listTargetAssociations(nodeId, options));\n }\n\n /**\n * Creates a target association from the given source node to another node.\n *\n * @param nodeId ID of the source node\n * @param association Target node id and association type\n * @returns The created association\n */\n createNodeAssociation(nodeId: string, association: AssociationBody): Observable<AssociationEntry> {\n return from(this.nodesApi.createAssociation(nodeId, association));\n }\n\n /**\n * Deletes a target association between the given source node and a target node.\n *\n * @param nodeId ID of the source node\n * @param targetId ID of the target node\n * @param assocType Association type to remove\n * @returns Empty result that notifies when the deletion is complete\n */\n deleteNodeAssociation(nodeId: string, targetId: string, assocType?: string): Observable<void> {\n return from(this.nodesApi.deleteAssociation(nodeId, targetId, { assocType }));\n }\n\n deleteSharedLink(linkId: string): Observable<any> {\n return from(this.sharedLinksApi.deleteSharedLink(linkId));\n }\n\n getDeletedNodes(options: any = {}): Observable<DeletedNodesPaging> {\n const defaults = {\n include: ['path']\n };\n const queryOptions = Object.assign(defaults, options);\n\n return from(this.trashcanApi.listDeletedNodes(queryOptions));\n }\n\n restoreNode(nodeId: string): Observable<NodeEntry> {\n return from(this.trashcanApi.restoreDeletedNode(nodeId));\n }\n\n purgeDeletedNode(nodeId: string): Observable<any> {\n return from(this.trashcanApi.deleteDeletedNode(nodeId));\n }\n\n /**\n * Gets information about a user identified by their username.\n *\n * @param personId ID of the target user\n * @param options Api options\n * @returns User information\n */\n getPerson(personId: string, options?: { fields?: Array<string> }): Observable<PersonEntry> {\n return from(this.peopleApi.getPerson(personId, options));\n }\n\n /**\n * Copy a node to destination node\n *\n * @param nodeId The id of the node to be copied\n * @param targetParentId The id of the folder-node where the node have to be copied to\n * @param name The new name for the copy that would be added on the destination folder\n * @param opts Api options\n */\n copyNode(nodeId: string, targetParentId: string, name?: string, opts?: { include?: Array<string>; fields?: Array<string> }): Observable<NodeEntry> {\n return from(this.nodesApi.copyNode(nodeId, { targetParentId, name }, opts));\n }\n\n /**\n * Gets product information for Content Services.\n *\n * @returns ProductVersionModel containing product details\n */\n getRepositoryInformation(): Observable<DiscoveryEntry> {\n return from(this.discoveryApi.getRepositoryInformation());\n }\n\n getFavorites(\n personId: string,\n opts?: {\n skipCount?: number;\n maxItems?: number;\n where?: string;\n fields?: Array<string>;\n }\n ): Observable<FavoritePaging> {\n return from(this.favoritesApi.listFavorites(personId, opts));\n }\n\n getFavoriteLibraries(personId: string = '-me-', opts?: any): Observable<FavoritePaging> {\n return this.getFavorites(personId, {\n ...opts,\n where: '(EXISTS(target/site))'\n }).pipe(\n map((response: FavoritePaging) => ({\n list: {\n entries: response.list.entries.map(({ entry }: any) => {\n entry.target.site.createdAt = entry.createdAt;\n return {\n entry: entry.target.site\n };\n }),\n pagination: response.list.pagination\n }\n }))\n );\n }\n\n findSharedLinks(opts?: any): Observable<SharedLinkPaging> {\n return from(this.sharedLinksApi.listSharedLinks(opts));\n }\n\n getSharedLinkContent(sharedId: string, attachment?: boolean): string {\n return this.contentApi.getSharedLinkContentUrl(sharedId, attachment);\n }\n\n search(request: SearchRequest): Observable<ResultSetPaging> {\n return from(this.searchApi.search(request));\n }\n\n getContentUrl(nodeId: string, attachment?: boolean): string {\n return this.contentApi.getContentUrl(nodeId, attachment);\n }\n\n getVersionContentUrl(nodeId: string, versionId: string, attachment?: boolean): string {\n return this.contentApi.getVersionContentUrl(nodeId, versionId, attachment);\n }\n\n deleteSite(siteId?: string, opts?: { permanent?: boolean }): Observable<any> {\n return from(this.sitesApi.deleteSite(siteId, opts));\n }\n\n leaveSite(siteId?: string): Observable<any> {\n return from(this.sitesApi.deleteSiteMembership(siteId, '-me-'));\n }\n\n createSite(\n siteBody: SiteBodyCreate,\n opts?: {\n fields?: Array<string>;\n skipConfiguration?: boolean;\n skipAddToFavorites?: boolean;\n }\n ): Observable<SiteEntry> {\n return from(this.sitesApi.createSite(siteBody, opts));\n }\n\n getSite(siteId?: string, opts?: { relations?: Array<string>; fields?: Array<string> }): Observable<SiteEntry> {\n return from(this.sitesApi.getSite(siteId, opts));\n }\n\n updateLibrary(siteId: string, siteBody: SiteBodyCreate): Observable<SiteEntry> {\n return from(this.sitesApi.updateSite(siteId, siteBody));\n }\n\n addFavorite(nodes: Array<NodeEntry>): Observable<FavoriteEntry> {\n const payload: FavoriteBodyCreate[] = nodes.map((node) => {\n const { isFolder, nodeId, id } = node.entry as any;\n const siteId = node.entry['guid'];\n const type = siteId ? 'site' : isFolder ? 'folder' : 'file';\n const guid = siteId || nodeId || id;\n\n return {\n target: {\n [type]: {\n guid\n }\n }\n };\n });\n\n return from(this.favoritesApi.createFavorite('-me-', payload as any));\n }\n\n removeFavorite(nodes: Array<NodeEntry>): Observable<any> {\n return from(\n Promise.all(\n nodes.map((node: any) => {\n const id = node.entry.nodeId || node.entry.id;\n return this.favoritesApi.deleteFavorite('-me-', id);\n })\n )\n );\n }\n\n unlockNode(nodeId: string, opts?: any): Promise<NodeEntry> {\n return this.nodesApi.unlockNode(nodeId, opts);\n }\n\n getNodeVersions(nodeId: string, opts?: any): Observable<VersionPaging> {\n return from(this.versionsApi.listVersionHistory(nodeId, opts));\n }\n\n requestNodeDirectAccessUrl(nodeId: string): Observable<DirectAccessUrlEntry> {\n return from(this.nodesApi.requestDirectAccessUrl(nodeId));\n }\n\n requestVersionDirectAccessUrl(nodeId: string, versionId: string): Observable<DirectAccessUrlEntry> {\n return from(this.versionsApi.requestDirectAccessUrl(nodeId, versionId));\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable, Type, inject } from '@angular/core';\nimport { ExtensionService } from '@alfresco/adf-extensions';\nimport { ExtensionRoute } from '../models/types';\nimport { Router } from '@angular/router';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RouterExtensionService {\n private readonly router = inject(Router);\n protected readonly extensions = inject(ExtensionService);\n\n defaults = {\n layout: 'app.layout.main',\n auth: ['app.auth', 'app.extensions.dataLoaderGuard']\n };\n\n mapExtensionRoutes() {\n const routesWithoutParent = [];\n this.getApplicationRoutes().forEach((extensionRoute: ExtensionRoute) => {\n if (this.extensionRouteHasChild(extensionRoute)) {\n const parentRoute = this.findRoute(extensionRoute.parentRoute);\n if (parentRoute) {\n this.convertExtensionRouteToRoute(extensionRoute);\n parentRoute.children.unshift(extensionRoute);\n }\n } else {\n routesWithoutParent.push(extensionRoute);\n }\n });\n\n this.router.config.unshift(...routesWithoutParent);\n }\n\n public getApplicationRoutes(): Array<ExtensionRoute> {\n return this.extensions.routes.map((route) => {\n const guards = this.extensions.getAuthGuards(route.auth && route.auth.length > 0 ? route.auth : this.defaults.auth);\n\n return {\n path: route.path,\n component: this.getComponentById(route.layout ?? this.defaults.layout),\n canActivateChild: guards,\n canActivate: guards,\n parentRoute: route.parentRoute,\n children: [\n ...(route['children']\n ? route['children'].map(({ path, component, outlet, data }) => ({\n path,\n outlet,\n data,\n component: this.getComponentById(component)\n }))\n : []),\n {\n path: '',\n component: this.getComponentById(route.component),\n data: route.data\n }\n ]\n } as ExtensionRoute;\n });\n }\n\n private getComponentById(id: string): Type<unknown> {\n return this.extensions.getComponentById(id);\n }\n\n private extensionRouteHasChild(route: ExtensionRoute): boolean {\n return route.parentRoute !== undefined;\n }\n\n private convertExtensionRouteToRoute(extensionRoute: ExtensionRoute) {\n delete extensionRoute.parentRoute;\n delete extensionRoute.component;\n }\n\n private findRoute(parentRoute) {\n const routeIndex = this.router.config.findIndex((route) => route.path === parentRoute);\n\n return this.router.config[routeIndex];\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation, inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { A11yModule } from '@angular/cdk/a11y';\n\nexport interface OpenInAppDialogOptions {\n redirectUrl: string;\n appStoreUrl: string;\n}\n@Component({\n imports: [TranslatePipe, MatButtonModule, MatIconModule, A11yModule, MatDialogModule],\n selector: 'aca-open-in-app',\n templateUrl: './open-in-app.component.html',\n styleUrls: ['./open-in-app.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class OpenInAppComponent {\n data = inject<OpenInAppDialogOptions>(MAT_DIALOG_DATA);\n private readonly dialog = inject<MatDialogRef<OpenInAppComponent>>(MatDialogRef);\n\n private readonly redirectUrl: string;\n public appStoreUrl: string;\n public window: Window & typeof globalThis = window;\n\n constructor() {\n const data = this.data;\n\n if (data) {\n this.redirectUrl = data.redirectUrl;\n this.appStoreUrl = data.appStoreUrl;\n }\n }\n\n openInApp(): void {\n this.window.location.href = this.redirectUrl;\n }\n\n downloadIosApp(): void {\n this.window.location.href = this.appStoreUrl;\n }\n\n onCloseDialog(): void {\n const time: number = new Date().getTime();\n sessionStorage.setItem('mobile_notification_expires_in', time.toString());\n this.dialog.close();\n }\n}\n","<div class=\"aca-open-in-app\">\n <div class=\"aca-mobile-application-container\">\n <span>{{ 'APP.DIALOGS.MOBILE_APP.OPEN_ALFRESCO_MOBILE_APP' | translate }}</span>\n <button mat-icon-button mat-dialog-close class=\"aca-cross-button\" (click)=\"onCloseDialog()\" >\n <mat-icon class=\"aca-cross-button-icon\">close</mat-icon>\n </button>\n </div>\n\n <div class=\"aca-open-in-app-button-container\">\n <button mat-button (click)=\"openInApp()\"\n data-automation-id=\"open-in-app-button\"\n class=\"aca-open-in-app-button-container\" cdkFocusInitial>\n <span>{{ 'APP.DIALOGS.MOBILE_APP.MOBILE_APP_BUTTON_LABEL' | translate }}</span>\n </button>\n </div>\n\n @if (appStoreUrl) {\n <div class=\"aca-download-app-container\">\n <button mat-button data-automation-id=\"download-app-button\" class=\"aca-download-app-container-button\" (click)=\"downloadIosApp()\">\n <span>{{ 'APP.DIALOGS.MOBILE_APP.DOWNLOAD_APP_BUTTON_LABEL' | translate }}</span>\n </button>\n </div>\n }\n</div>\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AppConfigService } from '@alfresco/adf-core';\nimport { inject, Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { OpenInAppComponent } from '../components/open-in-app/open-in-app.component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AcaMobileAppSwitcherService {\n public redirectUrl: string;\n private dialogRef: MatDialogRef<OpenInAppComponent>;\n private readonly config = inject(AppConfigService);\n private readonly dialog = inject(MatDialog);\n\n get appStoreUrl(): string {\n const defaultValue = 'https://apps.apple.com/us/app/alfresco-mobile-workspace/id1514434480';\n return this.config.get<string>('mobileAppSwitch.appStoreUrl', defaultValue);\n }\n\n get sessionTimeout(): number {\n return this.config.get<number>('mobileAppSwitch.sessionTimeout', 12);\n }\n\n getIPhoneRedirectUrl(url: string): string {\n const prefix = this.config.get<string>('mobileAppSwitch.iphoneUrl', 'iosamw://');\n return prefix + url;\n }\n\n getAndroidRedirectUrl(url: string): string {\n const prefix = this.config.get<string>('mobileAppSwitch.androidUrlPart1', 'intent:///');\n const suffix = this.config.get<string>('mobileAppSwitch.androidUrlPart2', '#Intent;scheme=androidamw;package=com.alfresco.content.app;end');\n return prefix + url + suffix;\n }\n\n resolveExistenceOfDialog(): void {\n const url: string = this.getCurrentUrl();\n const queryParams: string = url.split('?')[1];\n let queryParamsList = [];\n let hideBanner = false;\n if (queryParams !== null && queryParams !== undefined) {\n queryParamsList = queryParams.split('&');\n hideBanner = queryParamsList.some((param) => param.split('=')[0] === 'mobileapps' && param.split('=')[1] === 'true');\n }\n if (!hideBanner) {\n this.verifySessionExistsForDialog();\n }\n }\n\n verifySessionExistsForDialog(): void {\n const sessionTime: string = sessionStorage.getItem('mobile_notification_expires_in');\n if (sessionTime !== null) {\n const currentTime: number = new Date().getTime();\n const sessionConvertedTime: number = parseFloat(sessionTime);\n const timeDifference: number = (currentTime - sessionConvertedTime) / (1000 * 60 * 60);\n\n if (timeDifference > this.sessionTimeout) {\n this.clearSessionExpireTime();\n this.identifyBrowserAndSetRedirectURL();\n }\n } else {\n this.identifyBrowserAndSetRedirectURL();\n }\n }\n\n identifyBrowserAndSetRedirectURL(): void {\n const ua: string = navigator.userAgent.toLowerCase();\n const isAndroid: boolean = ua.indexOf('android') > -1;\n const isIPadInSafari = /Macintosh/i.test(ua) && navigator.maxTouchPoints && navigator.maxTouchPoints > 1;\n const isIOS: boolean = ua.indexOf('iphone') > -1 || ua.indexOf('ipad') > -1 || ua.indexOf('ipod') > -1 || isIPadInSafari;\n const currentUrl: string = this.getCurrentUrl();\n\n if (isIOS === true) {\n this.redirectUrl = this.getIPhoneRedirectUrl(currentUrl);\n } else if (isAndroid === true) {\n this.redirectUrl = this.getAndroidRedirectUrl(currentUrl);\n }\n\n if (this.redirectUrl !== undefined && this.redirectUrl !== null) {\n this.openDialog(this.redirectUrl, this.appStoreUrl);\n }\n }\n\n openDialog(redirectUrl: string, appStoreUrl?: string): void {\n if (!this.dialogRef) {\n this.dialogRef = this.dialog.open(OpenInAppComponent, {\n data: {\n redirectUrl,\n appStoreUrl\n },\n hasBackdrop: false,\n width: '100%',\n role: 'dialog',\n position: { bottom: '0' }\n });\n }\n }\n\n clearSessionExpireTime(): void {\n sessionStorage.removeItem('mobile_notification_expires_in');\n }\n\n getCurrentUrl(): string {\n return window.location.href;\n }\n\n closeDialog(): void {\n if (this.dialogRef) {\n this.dialog.closeAll();\n this.dialogRef = null;\n }\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\n/* eslint-disable @cspell/spellchecker */\n\nexport interface AlfrescoMimeType {\n label: string;\n value: string;\n}\n\nexport const DefaultMimeTypes: AlfrescoMimeType[] = [\n { value: 'video/3gpp', label: '3G Video' },\n { value: 'video/3gpp2', label: '3G2 Video' },\n { value: 'application/vnd.alfresco.ai.features.v1+json', label: 'AI-Features' },\n { value: 'application/vnd.alfresco.ai.labels.v1+json', label: 'AI-Labels' },\n { value: 'application/vnd.alfresco.ai.pii.entities.v1+json', label: 'AI-PII-Entities' },\n { value: 'application/vnd.alfresco.ai.speech-to-text.v1+json', label: 'AI-SpeechToText' },\n { value: 'application/vnd.alfresco.ai.textract.v1+json', label: 'AI-Textract' },\n { value: 'audio/x-aiff', label: 'AIFF Audio' },\n { value: 'application/vnd.adobe.air-application-installer-package+zip', label: 'Adobe AIR' },\n { value: 'application/vnd.adobe.xdp+xml', label: 'Adobe Acrobat XML Data Package' },\n { value: 'application/vnd.adobe.aftereffects.project', label: 'Adobe AfterEffects Project' },\n { value: 'application/vnd.adobe.aftereffects.template', label: 'Adobe AfterEffects Template' },\n { value: 'image/x-raw-adobe', label: 'Adobe Digital Negative Image' },\n { value: 'application/x-zip', label: 'Adobe Flex Project File' },\n { value: 'application/framemaker', label: 'Adobe FrameMaker' },\n { value: 'application/illustrator', label: 'Adobe Illustrator File' },\n { value: 'application/x-indesign', label: 'Adobe InDesign Document' },\n { value: 'application/pdf', label: 'Adobe PDF Document' },\n { value: 'application/pagemaker', label: 'Adobe PageMaker' },\n { value: 'image/vnd.adobe.photoshop', label: 'Adobe Photoshop' },\n { value: 'image/vnd.adobe.premiere', label: 'Adobe Premiere' },\n { value: 'audio/vnd.adobe.soundbooth', label: 'Adobe SoundBooth' },\n { value: 'application/acp', label: 'Alfresco Content Package' },\n { value: 'application/vnd.android.package-archive', label: 'Android Package' },\n { value: 'image/x-portable-anymap', label: 'Anymap Image' },\n { value: 'image/icns', label: 'Apple Icon' },\n { value: 'application/vnd.apple.keynote', label: 'Apple iWork Keynote' },\n { value: 'application/vnd.apple.numbers', label: 'Apple iWork Numbers' },\n { value: 'application/vnd.apple.pages', label: 'Apple iWork Pages' },\n { value: 'image/vnd.dwg', label: 'AutoCAD Drawing' },\n { value: 'image/x-dwt', label: 'AutoCAD Template' },\n { value: 'audio/basic', label: 'Basic Audio' },\n { value: 'application/x-dosexec', label: 'Binary File' },\n { value: 'application/octet-stream', label: 'Binary File (Octet Stream)' },\n { value: 'image/bmp', label: 'Bitmap Image' },\n { value: 'image/cgm', label: 'CGM Image' },\n { value: 'image/x-raw-canon', label: 'Canon RAW Image' },\n { value: 'text/csv', label: 'Comma Separated Values (CSV)' },\n { value: 'application/dita+xml', label: 'DITA' },\n { value: 'message/rfc822', label: 'EMail' },\n { value: 'application/eps', label: 'EPS Type PostScript' },\n { value: 'audio/x-flac', label: 'FLAC Audio' },\n { value: 'application/x-fla', label: 'Flash Source' },\n { value: 'video/x-flv', label: 'Flash Video' },\n { value: 'image/x-raw-fuji', label: 'Fuji RAW Image' },\n { value: 'image/gif', label: 'GIF Image' },\n { value: 'application/x-gzip', label: 'GZIP' },\n { value: 'application/x-gtar', label: 'GZIP Tarball' },\n { value: 'image/x-portable-graymap', label: 'Greymap Image' },\n { value: 'text/html', label: 'HTML' },\n { value: 'application/vnd.oasis.opendocument.text-web', label: 'HTML Document Template' },\n { value: 'image/x-raw-hasselblad', label: 'Hasselblad RAW Image' },\n { value: 'image/ief', label: 'IEF Image' },\n { value: 'image/jp2', label: 'JPEG 2000 Image' },\n { value: 'image/jpeg', label: 'JPEG Image' },\n { value: 'application/json', label: 'JSON' },\n { value: 'application/java-archive', label: 'Java Archive' },\n { value: 'application/java', label: 'Java Class' },\n { value: 'text/x-jsp', label: 'Java Server Page' },\n { value: 'text/x-java-source', label: 'Java Source File' },\n { value: 'application/x-javascript', label: 'JavaScript' },\n { value: 'image/x-raw-kodak', label: 'Kodak RAW Image' },\n { value: 'application/x-latex', label: 'LaTeX' },\n { value: 'image/x-raw-leica', label: 'Leica RAW Image' },\n { value: 'audio/mpeg', label: 'MPEG Audio' },\n { value: 'video/mp2t', label: 'MPEG Transport Stream' },\n { value: 'video/mpeg', label: 'MPEG Video' },\n { value: 'video/mpeg2', label: 'MPEG2 Video' },\n { value: 'audio/mp4', label: 'MPEG4 Audio' },\n { value: 'video/mp4', label: 'MPEG4 Video' },\n { value: 'video/x-m4v', label: 'MPEG4 Video (m4v)' },\n { value: 'video/x-ms-asf', label: 'MS ASF Streaming Video' },\n { value: 'video/x-msvideo', label: 'MS Video' },\n { value: 'audio/x-ms-wma', label: 'MS WMA Streaming Audio' },\n { value: 'video/x-ms-wmv', label: 'MS WMV Streaming Video' },\n { value: 'application/x-troff-man', label: 'Man Page' },\n { value: 'text/x-markdown', label: 'Markdown' },\n { value: 'text/mediawiki', label: 'MediaWiki Markup' },\n { value: 'application/vnd.ms-excel', label: 'Microsoft Excel' },\n { value: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', label: 'Microsoft Excel 2007' },\n { value: 'application/vnd.ms-excel.addin.macroenabled.12', label: 'Microsoft Excel 2007 add-in' },\n { value: 'application/vnd.ms-excel.sheet.binary.macroenabled.12', label: 'Microsoft Excel 2007 binary workbook' },\n { value: 'application/vnd.ms-excel.sheet.macroenabled.12', label: 'Microsoft Excel 2007 macro-enabled workbook' },\n { value: 'application/vnd.ms-excel.template.macroenabled.12', label: 'Microsoft Excel 2007 macro-enabled workbook template' },\n { value: 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', label: 'Microsoft Excel template 2007' },\n { value: 'application/vnd.ms-outlook', label: 'Microsoft Outlook Message' },\n { value: 'application/vnd.ms-powerpoint', label: 'Microsoft PowerPoint' },\n { value: 'application/vnd.openxmlformats-officedocument.presentationml.presentation', label: 'Microsoft PowerPoint 2007' },\n { value: 'application/vnd.ms-powerpoint.addin.macroenabled.12', label: 'Microsoft PowerPoint 2007 add-in' },\n { value: 'application/vnd.ms-powerpoint.presentation.macroenabled.12', label: 'Microsoft PowerPoint 2007 macro-enabled presentation' },\n { value: 'application/vnd.ms-powerpoint.template.macroenabled.12', label: 'Microsoft PowerPoint 2007 macro-enabled presentation template' },\n { value: 'application/vnd.ms-powerpoint.slide.macroenabled.12', label: 'Microsoft PowerPoint 2007 macro-enabled slide' },\n { value: 'application/vnd.ms-powerpoint.slideshow.macroenabled.12', label: 'Microsoft PowerPoint 2007 macro-enabled slide show' },\n { value: 'application/vnd.openxmlformats-officedocument.presentationml.slide', label: 'Microsoft PowerPoint 2007 slide' },\n { value: 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', label: 'Microsoft PowerPoint 2007 slide show' },\n { value: 'application/vnd.openxmlformats-officedocument.presentationml.template', label: 'Microsoft PowerPoint 2007 template' },\n { value: 'application/vnd.ms-project', label: 'Microsoft Project' },\n { value: 'application/vnd.visio', label: 'Microsoft Visio' },\n { value: 'application/vnd.visio2013', label: 'Microsoft Visio 2013' },\n { value: 'application/vnd.ms-visio.drawing.macroenabled.main+xml', label: 'Microsoft Visio macro-enabled drawing' },\n { value: 'application/vnd.ms-visio.stencil.macroenabled.main+xml', label: 'Microsoft Visio macro-enabled stencil' },\n { value: 'application/vnd.ms-visio.template.macroenabled.main+xml', label: 'Microsoft Visio macro-enabled template' },\n { value: 'application/vnd.ms-visio.stencil.main+xml', label: 'Microsoft Visio stencil' },\n { value: 'application/vnd.ms-visio.template.main+xml', label: 'Microsoft Visio template' },\n { value: 'application/msword', label: 'Microsoft Word' },\n { value: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', label: 'Microsoft Word 2007' },\n { value: 'application/vnd.ms-word.document.macroenabled.12', label: 'Microsoft Word 2007 macro-enabled document' },\n { value: 'application/vnd.ms-word.template.macroenabled.12', label: 'Microsoft Word 2007 macro-enabled document template' },\n { value: 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', label: 'Microsoft Word 2007 template' },\n { value: 'image/x-raw-minolta', label: 'Minolta RAW Image' },\n { value: 'image/x-raw-nikon', label: 'Nikon RAW Image' },\n { value: 'audio/ogg', label: 'Ogg Audio' },\n { value: 'application/ogg', label: 'Ogg Multiplex' },\n { value: 'video/ogg', label: 'Ogg Video' },\n { value: 'audio/vorbis', label: 'Ogg Vorbis Audio' },\n { value: 'image/x-raw-olympus', label: 'Olympus RAW Image' },\n { value: 'application/vnd.oasis.opendocument.chart', label: 'OpenDocument Chart' },\n { value: 'application/vnd.oasis.opendocument.database', label: 'OpenDocument Database' },\n { value: 'application/vnd.oasis.opendocument.graphics', label: 'OpenDocument Drawing' },\n { value: 'application/vnd.oasis.opendocument.graphics-template', label: 'OpenDocument Drawing Template' },\n { value: 'application/vnd.oasis.opendocument.formula', label: 'OpenDocument Formula' },\n { value: 'application/vnd.oasis.opendocument.image', label: 'OpenDocument Image' },\n { value: 'application/vnd.oasis.opendocument.text-master', label: 'OpenDocument Master Document' },\n { value: 'application/vnd.oasis.opendocument.presentation', label: 'OpenDocument Presentation' },\n { value: 'application/vnd.oasis.opendocument.presentation-template', label: 'OpenDocument Presentation Template' },\n { value: 'application/vnd.oasis.opendocument.spreadsheet', label: 'OpenDocument Spreadsheet' },\n { value: 'application/vnd.oasis.opendocument.spreadsheet-template', label: 'OpenDocument Spreadsheet Template' },\n { value: 'application/vnd.oasis.opendocument.text', label: 'OpenDocument Text (OpenOffice 2.0)' },\n { value: 'application/vnd.oasis.opendocument.text-template', label: 'OpenDocument Text Template' },\n { value: 'application/vnd.sun.xml.calc', label: 'OpenOffice 1.0/StarOffice6.0 Calc 6.0' },\n { value: 'application/vnd.sun.xml.calc.template', label: 'OpenOffice 1.0/StarOffice6.0 Calc 6.0 Template' },\n { value: 'application/vnd.sun.xml.draw', label: 'OpenOffice 1.0/StarOffice6.0 Draw 6.0' },\n { value: 'application/vnd.sun.xml.impress', label: 'OpenOffice 1.0/StarOffice6.0 Impress 6.0' },\n { value: 'application/vnd.sun.xml.impress.template', label: 'OpenOffice 1.0/StarOffice6.0 Impress 6.0 Template' },\n { value: 'application/vnd.sun.xml.writer', label: 'OpenOffice 1.0/StarOffice6.0 Writer 6.0' },\n { value: 'application/vnd.sun.xml.writer.template', label: 'OpenOffice 1.0/StarOffice6.0 Writer 6.0 Template' },\n { value: 'image/png', label: 'PNG Image' },\n { value: 'image/x-raw-panasonic', label: 'Panasonic RAW Image' },\n { value: 'image/x-raw-pentax', label: 'Pentax RAW Image' },\n { value: 'image/x-portable-pixmap', label: 'Pixmap Image' },\n { value: 'text/plain', label: 'Plain Text' },\n { value: 'image/x-portable-bitmap', label: 'Portable Bitmap' },\n { value: 'application/postscript', label: 'PostScript' },\n { value: 'application/remote-printing', label: 'Printer Text File' },\n { value: 'video/quicktime', label: 'Quicktime Video' },\n { value: 'video/x-rad-screenplay', label: 'RAD Screen Display' },\n { value: 'application/x-rar-compressed', label: 'RAR Archive' },\n { value: 'image/x-raw-red', label: 'RED RAW Image' },\n { value: 'image/x-rgb', label: 'RGB Image' },\n { value: 'application/rss+xml', label: 'RSS' },\n { value: 'image/x-cmu-raster', label: 'Raster Image' },\n { value: 'text/richtext', label: 'Rich Text' },\n { value: 'application/rtf', label: 'Rich Text Format' },\n { value: 'video/x-sgi-movie', label: 'SGI Video' },\n { value: 'text/sgml', label: 'SGML (Human Readable)' },\n { value: 'application/sgml', label: 'SGML (Machine Readable)' },\n { value: 'image/svg+xml', label: 'Scalable Vector Graphics Image' },\n { value: 'application/x-sh', label: 'Shell Script' },\n { value: 'application/x-shockwave-flash', label: 'Shockwave Flash' },\n { value: 'image/x-raw-sigma', label: 'Sigma RAW Image' },\n { value: 'image/x-raw-sony', label: 'Sony RAW Image' },\n { value: 'application/vnd.stardivision.chart', label: 'StarChart 5.x' },\n { value: 'application/vnd.stardivision.calc', label: 'StarCalc 5.x' },\n { value: 'application/vnd.stardivision.draw', label: 'StarDraw 5.x' },\n { value: 'application/vnd.stardivision.impress', label: 'StarImpress 5.x' },\n { value: 'application/vnd.stardivision.impress-packed', label: 'StarImpress Packed 5.x' },\n { value: 'application/vnd.stardivision.math', label: 'StarMath 5.x' },\n { value: 'application/vnd.stardivision.writer', label: 'StarWriter 5.x' },\n { value: 'application/vnd.stardivision.writer-global', label: 'StarWriter 5.x global' },\n { value: 'text/css', label: 'Style Sheet' },\n { value: 'image/tiff', label: 'TIFF Image' },\n { value: 'text/tab-separated-values', label: 'Tab Separated Values' },\n { value: 'application/x-tar', label: 'Tarball' },\n { value: 'application/x-tex', label: 'Tex' },\n { value: 'application/x-texinfo', label: 'Tex Info' },\n { value: 'x-world/x-vrml', label: 'VRML' },\n { value: 'audio/x-wav', label: 'WAV Audio' },\n { value: 'video/webm', label: 'WebM Video' },\n { value: 'application/wordperfect', label: 'WordPerfect' },\n { value: 'image/x-xbitmap', label: 'XBitmap Image' },\n { value: 'application/xhtml+xml', label: 'XHTML' },\n { value: 'text/xml', label: 'XML' },\n { value: 'image/x-xpixmap', label: 'XPixmap Image' },\n { value: 'image/x-xwindowdump', label: 'XWindow Dump' },\n { value: 'application/x-compress', label: 'Z Compress' },\n { value: 'application/zip', label: 'ZIP' },\n { value: 'text/calendar', label: 'iCalendar File' }\n];\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { inject, Injectable } from '@angular/core';\nimport { AppConfigService, CloseButtonPosition } from '@alfresco/adf-core';\nimport { AlfrescoMimeType, DefaultMimeTypes } from '../constants/mime-types';\n\n@Injectable({ providedIn: 'root' })\nexport class AppSettingsService {\n private readonly appConfig = inject(AppConfigService);\n\n /**\n * Get the application copyright text from the app settings.\n */\n get appCopyright(): string {\n return this.appConfig.get<string>('application.copyright', '');\n }\n\n /**\n * Get the AOS (Alfresco Office Services) host URL from the app settings.\n */\n get aosHost(): string {\n return this.appConfig.get<string>('aosHost');\n }\n\n /**\n * Get the default landing page from the app settings.\n * Default value: `/personal-files`.\n */\n get landingPage(): string {\n return this.appConfig.get<string>('landingPage', '/personal-files');\n }\n\n /**\n * Get the list of mime types from the app settings.\n */\n get mimeTypes(): AlfrescoMimeType[] {\n return this.appConfig.get<AlfrescoMimeType[]>('mimeTypes', DefaultMimeTypes);\n }\n\n /**\n * Get the application name from the app settings.\n */\n get appName(): string {\n return this.appConfig.get<string>('application.name', 'Alfresco Content Application');\n }\n\n /**\n * Get the application version from the app settings.\n */\n get appVersion(): string {\n return this.appConfig.get<string>('application.version', '1.0.0');\n }\n\n /**\n * Get the application logo URL from the app settings.\n */\n get appLogoUrl(): string {\n return this.appConfig.get<string>('application.logo', 'assets/images/app-logo.svg');\n }\n\n /**\n * Get the custom CSS stylesheet path from the app settings.\n */\n get customCssPath(): string {\n return this.appConfig.get<string>('customCssPath', '');\n }\n\n /**\n * Get the custom web font path from the app settings.\n */\n get webFontPath(): string {\n return this.appConfig.get<string>('webFontPath', '');\n }\n\n /**\n * Get the base share URL from the app settings.\n */\n get baseShareUrl(): string {\n let result = this.appConfig.get<string>('baseShareUrl', '');\n if (!result.endsWith('/')) {\n result += '/';\n }\n return result;\n }\n\n /**\n * Get the viewer close button position from the app settings.\n */\n get viewerCloseButtonPosition(): CloseButtonPosition {\n return this.appConfig.get('viewer.closeButtonPosition', CloseButtonPosition.Right);\n }\n\n /**\n * Get the viewer max retries from the app settings.\n */\n get viewerMaxRetries(): number {\n return this.appConfig.get<number>('viewer.maxRetries', 1);\n }\n\n /**\n * Enabled state of the comment feature for upload dialog\n */\n get uploadAllowComments(): boolean {\n return this.appConfig.get<boolean>('adf-version-manager.allowComments', true);\n }\n\n /**\n * Enabled state of the download feature for upload dialog\n */\n get uploadAllowDownload(): boolean {\n return this.appConfig.get<boolean>('adf-version-manager.allowDownload', true);\n }\n\n /**\n * Allow to view versions if true, disallow otherwise.\n */\n get versionManagerAllowViewVersions(): boolean {\n return this.appConfig.get<boolean>('adf-version-manager.allowViewVersions', true);\n }\n\n /**\n * Allow to delete versions if true, disallow otherwise.\n */\n get versionManagerAllowVersionDelete(): boolean {\n return this.appConfig.get<boolean>('adf-version-manager.allowVersionDelete', true);\n }\n\n /**\n * Allow to open actions menu when true, otherwise hides it.\n */\n get versionManagerShowActions(): boolean {\n return this.appConfig.get<boolean>('adf-version-manager.showActions', true);\n }\n\n /**\n * Gets the enablement of the file auto tryDownload feature from the app settings.\n */\n get autoDownloadEnabled(): boolean {\n return this.appConfig.get<boolean>('viewer.enableFileAutoDownload', true);\n }\n\n /**\n * Gets the file auto tryDownload size threshold in MB from the app settings.\n */\n get authDownloadThreshold(): number {\n return this.appConfig.get<number>('viewer.fileAutoDownloadSizeThresholdInMB', 15);\n }\n\n /**\n * Get the Knowledge Discovery URL from the app settings.\n */\n get knowledgeDiscoveryUrl(): string {\n return this.appConfig.get<string>('knowledgeDiscoveryUrl', '');\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { inject, Injectable } from '@angular/core';\nimport { ProfileState } from '@alfresco/adf-extensions';\nimport { AlfrescoApiService, GroupService } from '@alfresco/adf-content-services';\nimport { BehaviorSubject } from 'rxjs';\nimport { PeopleApi, LazyApi } from '@alfresco/js-api';\n\n@Injectable({ providedIn: 'root' })\nexport class UserProfileService {\n private readonly api = inject(AlfrescoApiService);\n private readonly groupService = inject(GroupService);\n\n @LazyApi((self: UserProfileService) => new PeopleApi(self.api.getInstance()))\n declare private readonly peopleApi: PeopleApi;\n\n private readonly userProfile = new BehaviorSubject<ProfileState>(null);\n userProfile$ = this.userProfile.asObservable();\n\n /**\n * Load user profile.\n */\n async loadUserProfile(): Promise<ProfileState> {\n const groupsEntries = await this.groupService.listAllGroupMembershipsForPerson('-me-', { maxItems: 250 });\n\n const groups = [];\n if (groupsEntries) {\n groups.push(...groupsEntries.map((obj) => obj.entry));\n }\n\n const { entry: user } = await this.peopleApi.getPerson('-me-');\n\n const id = user.id;\n const firstName = user.firstName || '';\n const lastName = user.lastName || '';\n const userName = `${firstName} ${lastName}`;\n const initials = [firstName[0], lastName[0]].join('');\n const email = user.email;\n\n const capabilities = user.capabilities;\n const isAdmin = capabilities ? capabilities.isAdmin : true;\n\n const profile: ProfileState = {\n firstName,\n lastName,\n userName,\n initials,\n isAdmin,\n id,\n groups,\n email\n };\n\n this.userProfile.next(profile);\n return profile;\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport interface PaginationState {\n skipCount: number;\n maxItems: number;\n}\n\nconst PAGINATION_SEGMENT = '_pagination_';\n\nexport abstract class PaginationStateBaseService {\n private lastContext: string = null;\n\n protected abstract getUsername(): string;\n protected abstract getCurrentContext(): string;\n\n prepareContext(): void {\n const context = this.getCurrentContext();\n\n if (this.lastContext === null) {\n this.lastContext = context;\n return;\n }\n\n if (context !== this.lastContext) {\n this.lastContext = context;\n this.clearAll();\n }\n }\n\n getPaginationState(key: string): PaginationState | null {\n if (!key) {\n return null;\n }\n\n const raw = this.read(this.getStorageKey(key));\n if (!raw) {\n return null;\n }\n\n try {\n const parsed = JSON.parse(raw);\n if (typeof parsed?.skipCount === 'number' && typeof parsed?.maxItems === 'number') {\n return { skipCount: parsed.skipCount, maxItems: parsed.maxItems };\n }\n } catch {\n /* malformed entry, ignore */\n }\n return null;\n }\n\n setPaginationState(key: string, state: PaginationState): void {\n if (!key) {\n return;\n }\n\n if (!state?.skipCount) {\n this.resetPaginationState(key);\n return;\n }\n\n this.write(this.getStorageKey(key), JSON.stringify({ skipCount: state.skipCount, maxItems: state.maxItems }));\n }\n\n resetPaginationState(key: string): void {\n if (!key) {\n return;\n }\n this.remove(this.getStorageKey(key));\n }\n\n clearAll(): void {\n const storage = this.getStorage();\n if (!storage) {\n return;\n }\n\n try {\n const keysToRemove: string[] = [];\n for (let i = 0; i < storage.length; i++) {\n const storageKey = storage.key(i);\n if (storageKey?.includes(PAGINATION_SEGMENT)) {\n keysToRemove.push(storageKey);\n }\n }\n keysToRemove.forEach((storageKey) => storage.removeItem(storageKey));\n } catch {\n /* sessionStorage not available */\n }\n }\n\n private getStorageKey(key: string): string {\n const user = this.getUsername() || 'anonymous';\n return `${user}${PAGINATION_SEGMENT}${key}`;\n }\n\n private getStorage(): Storage | null {\n try {\n return typeof sessionStorage !== 'undefined' ? sessionStorage : null;\n } catch {\n return null;\n }\n }\n\n private read(storageKey: string): string | null {\n try {\n return this.getStorage()?.getItem(storageKey) ?? null;\n } catch {\n return null;\n }\n }\n\n private write(storageKey: string, value: string): void {\n try {\n this.getStorage()?.setItem(storageKey, value);\n } catch {\n /* sessionStorage not available or quota exceeded */\n }\n }\n\n private remove(storageKey: string): void {\n try {\n this.getStorage()?.removeItem(storageKey);\n } catch {\n /* sessionStorage not available */\n }\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AuthenticationService } from '@alfresco/adf-core';\nimport { PaginationStateBaseService } from './pagination-state-base.service';\n\n@Injectable({ providedIn: 'root' })\nexport class PaginationStateService extends PaginationStateBaseService {\n private readonly authenticationService = inject(AuthenticationService);\n private readonly router = inject(Router);\n\n protected getUsername(): string {\n return this.authenticationService.getUsername();\n }\n\n protected getCurrentContext(): string {\n const path = (this.router.url || '').split('?')[0].split('#')[0];\n const segments = path.split('/').filter((segment) => !!segment);\n\n if (segments.includes('libraries')) {\n return segments[0] === 'favorite' ? 'favorite/libraries' : 'libraries';\n }\n\n if (segments[0] === 'favorite') {\n return segments.slice(0, 2).join('/');\n }\n return segments[0] ?? '';\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { inject, Injectable } from '@angular/core';\nimport {\n AppConfigService,\n AuthenticationService,\n NotificationService,\n PageTitleService,\n StorageService,\n UserPreferencesService\n} from '@alfresco/adf-core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport {\n AlfrescoApiService,\n FileUploadErrorEvent,\n SearchQueryBuilderService,\n SharedLinksApiService,\n UploadService\n} from '@alfresco/adf-content-services';\nimport { OverlayContainer } from '@angular/cdk/overlay';\nimport { ActivatedRoute, ActivationEnd, NavigationStart, Router } from '@angular/router';\nimport { filter, map } from 'rxjs/operators';\nimport { AppStore, ResetSelectionAction, SetCurrentUrlAction, SetRepositoryInfoAction, SetUserProfileAction } from '@alfresco/aca-shared/store';\nimport { ContentApiService } from './content-api.service';\nimport { RouterExtensionService } from './router.extension.service';\nimport { Store } from '@ngrx/store';\nimport { DiscoveryEntry } from '@alfresco/js-api';\nimport { AcaMobileAppSwitcherService } from './aca-mobile-app-switcher.service';\nimport { ShellAppService } from '@alfresco/adf-core/shell';\nimport { AppSettingsService } from './app-settings.service';\nimport { UserProfileService } from './user-profile.service';\nimport { PaginationStateService } from './pagination-state.service';\nimport { MatDialog } from '@angular/material/dialog';\n\n@Injectable({\n providedIn: 'root'\n})\n// After moving shell to ADF to core, AppService will implement ShellAppService\nexport class AppService implements ShellAppService {\n preferencesService = inject(UserPreferencesService);\n private readonly authenticationService = inject(AuthenticationService);\n private readonly store = inject<Store<AppStore>>(Store);\n private readonly router = inject(Router);\n private readonly activatedRoute = inject(ActivatedRoute);\n private readonly config = inject(AppConfigService);\n private readonly pageTitle = inject(PageTitleService);\n private readonly alfrescoApiService = inject(AlfrescoApiService);\n private readonly uploadService = inject(UploadService);\n private readonly routerExtensionService = inject(RouterExtensionService);\n private readonly contentApi = inject(ContentApiService);\n private readonly sharedLinksApiService = inject(SharedLinksApiService);\n private readonly overlayContainer = inject(OverlayContainer);\n private readonly acaMobileAppSwitcherService = inject(AcaMobileAppSwitcherService);\n private readonly appSettingsService = inject(AppSettingsService);\n private readonly userProfileService = inject(UserProfileService);\n private readonly storage = inject(StorageService);\n private readonly paginationStateService = inject(PaginationStateService);\n\n private readonly notificationService = inject(NotificationService);\n private readonly matDialog = inject(MatDialog);\n private readonly ready: BehaviorSubject<boolean>;\n\n ready$: Observable<boolean>;\n\n private readonly pageHeading = new BehaviorSubject('');\n /** @deprecated page title is updated automatically */\n pageHeading$ = this.pageHeading.asObservable();\n\n appNavNarMode$: Subject<'collapsed' | 'expanded'> = new BehaviorSubject('expanded');\n toggleAppNavBar$ = new Subject<void>();\n\n hideSidenavConditions = ['/preview/'];\n minimizeSidenavConditions = [];\n\n /**\n * Whether `withCredentials` mode is enabled.\n * Usually means that `Kerberos` mode is used.\n */\n get withCredentials(): boolean {\n return this.config.get<boolean>('auth.withCredentials', false);\n }\n\n constructor() {\n const searchQueryBuilderService = inject(SearchQueryBuilderService);\n const acaMobileAppSwitcherService = this.acaMobileAppSwitcherService;\n\n this.ready = new BehaviorSubject(this.authenticationService.isLoggedIn() || this.withCredentials);\n this.ready$ = this.ready.asObservable();\n\n this.authenticationService.onLogin.subscribe(() => {\n this.ready.next(true);\n this.preferencesService.setStoragePrefix(this.authenticationService.getUsername());\n });\n\n this.authenticationService.onLogout.subscribe(() => {\n this.storage.removeItem(this.preferencesService.getPropertyKey('expandedSidenav'));\n this.paginationStateService.clearAll();\n searchQueryBuilderService.resetToDefaults();\n acaMobileAppSwitcherService.clearSessionExpireTime();\n acaMobileAppSwitcherService.closeDialog();\n });\n\n this.router.events\n .pipe(\n filter((event) => event instanceof ActivationEnd && event.snapshot.children.length === 0),\n map((event: ActivationEnd) => event.snapshot?.data?.title ?? '')\n )\n .subscribe((title) => {\n this.pageHeading.next(title);\n this.pageTitle.setTitle(title);\n });\n }\n\n init(): void {\n this.alfrescoApiService.getInstance().on('error', (error: { status: number; response: any }) => {\n const shouldNavigateToLogin =\n error.status === 401 &&\n !this.alfrescoApiService.isExcludedErrorListener(error?.response?.req?.url) &&\n !this.authenticationService.isLoggedIn();\n\n if (shouldNavigateToLogin) {\n this.matDialog.closeAll();\n\n let redirectUrl = this.activatedRoute.snapshot.queryParams['redirectUrl'];\n if (!redirectUrl) {\n redirectUrl = this.router.url;\n }\n\n this.router.navigate(['/login'], {\n queryParams: { redirectUrl }\n });\n }\n });\n\n this.loadCustomCss();\n this.loadCustomWebFont();\n\n const { router } = this;\n\n this.router.events.pipe(filter((event) => event instanceof ActivationEnd && event.snapshot.children.length === 0)).subscribe(() => {\n this.store.dispatch(new SetCurrentUrlAction(router.url));\n });\n\n this.router.events.pipe(filter((event) => event instanceof NavigationStart)).subscribe(() => {\n this.store.dispatch(new ResetSelectionAction());\n });\n\n this.routerExtensionService.mapExtensionRoutes();\n\n this.uploadService.fileUploadError.subscribe((error) => this.onFileUploadedError(error));\n\n this.sharedLinksApiService.error.subscribe((err: { message: string }) => {\n if (err?.message) {\n this.notificationService.showError(err.message);\n }\n });\n\n this.ready$.subscribe((isReady) => {\n if (isReady) {\n this.loadRepositoryStatus();\n this.loadUserProfile();\n setTimeout(() => {\n this.openMobileAppDialog();\n });\n }\n });\n\n this.overlayContainer.getContainerElement().setAttribute('role', 'region');\n }\n\n setAppNavbarMode(mode: 'expanded' | 'collapsed'): void {\n this.appNavNarMode$.next(mode);\n this.preferencesService.set('expandedSidenav', mode === 'expanded');\n }\n\n private loadRepositoryStatus() {\n this.contentApi.getRepositoryInformation().subscribe((response: DiscoveryEntry) => {\n if (response?.entry?.repository) {\n this.store.dispatch(new SetRepositoryInfoAction(response.entry.repository));\n }\n });\n }\n\n private async loadUserProfile() {\n const profile = await this.userProfileService.loadUserProfile();\n this.store.dispatch(new SetUserProfileAction(profile));\n }\n\n onFileUploadedError(error: FileUploadErrorEvent) {\n let message = 'APP.MESSAGES.UPLOAD.ERROR.GENERIC';\n\n if (error?.error?.status === 403) {\n message = 'APP.MESSAGES.UPLOAD.ERROR.403';\n }\n\n if (error?.error?.status === 404) {\n message = 'APP.MESSAGES.UPLOAD.ERROR.404';\n }\n\n if (error?.error?.status === 409) {\n message = 'APP.MESSAGES.UPLOAD.ERROR.CONFLICT';\n }\n\n if (error?.error?.status === 500) {\n message = 'APP.MESSAGES.UPLOAD.ERROR.500';\n }\n\n if (error?.error?.status === 504) {\n message = 'APP.MESSAGES.UPLOAD.ERROR.504';\n }\n\n this.notificationService.showError(message);\n }\n\n private loadCustomCss(): void {\n const customCssPath = this.appSettingsService.customCssPath;\n if (customCssPath) {\n this.createLink(customCssPath);\n }\n }\n\n private loadCustomWebFont(): void {\n const webFontPath = this.appSettingsService.webFontPath;\n if (webFontPath) {\n this.createLink(webFontPath);\n }\n }\n\n private createLink(url: string): void {\n const cssLinkElement = document.createElement('link');\n cssLinkElement.setAttribute('rel', 'stylesheet');\n cssLinkElement.setAttribute('type', 'text/css');\n cssLinkElement.setAttribute('href', url);\n document.head.appendChild(cssLinkElement);\n }\n\n public openMobileAppDialog(): void {\n const isMobileSwitchEnabled: boolean = this.config.get<boolean>('mobileAppSwitch.enabled', false);\n if (isMobileSwitchEnabled) {\n this.acaMobileAppSwitcherService.resolveExistenceOfDialog();\n } else {\n this.acaMobileAppSwitcherService.clearSessionExpireTime();\n }\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, ViewEncapsulation, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { AppService } from '../../services/app.service';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AutoFocusDirective } from '@alfresco/adf-content-services';\n\n@Component({\n imports: [CommonModule, TranslatePipe, MatButtonModule, MatIconModule, AutoFocusDirective],\n selector: 'aca-page-layout',\n templateUrl: './page-layout.component.html',\n styleUrls: ['./page-layout.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { class: 'aca-page-layout' }\n})\nexport class PageLayoutComponent {\n private readonly appService = inject(AppService);\n\n @Input()\n hasError = false;\n\n appNavNarMode$: Observable<'collapsed' | 'expanded'>;\n\n constructor() {\n const appService = this.appService;\n\n this.appNavNarMode$ = appService.appNavNarMode$.pipe(takeUntilDestroyed());\n }\n\n toggleClick() {\n this.appService.toggleAppNavBar$.next();\n }\n}\n","<div class=\"aca-content-header\">\n @if ((appNavNarMode$ | async) === 'collapsed') {\n <button\n mat-icon-button\n class=\"aca-content-header-button\"\n (click)=\"toggleClick()\"\n [attr.aria-label]=\"'APP.TOOLTIPS.EXPAND_NAVIGATION' | translate\"\n title=\"{{'APP.TOOLTIPS.EXPAND_NAVIGATION' | translate}}\"\n adf-auto-focus>\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n }\n <ng-content select=\".aca-page-layout-header, aca-page-layout-header\" />\n</div>\n\n@if (hasError) {\n <ng-content select=\".aca-page-layout-error, aca-page-layout-error\" />\n}\n\n@if (!hasError) {\n <ng-content select=\".aca-page-layout-content, aca-page-layout-content\" />\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NgModule } from '@angular/core';\nimport { PageLayoutContentComponent } from './page-layout-content.component';\nimport { PageLayoutErrorComponent } from './page-layout-error.component';\nimport { PageLayoutHeaderComponent } from './page-layout-header.component';\nimport { PageLayoutComponent } from './page-layout.component';\n\n@NgModule({\n imports: [PageLayoutComponent, PageLayoutContentComponent, PageLayoutErrorComponent, PageLayoutHeaderComponent],\n exports: [PageLayoutContentComponent, PageLayoutErrorComponent, PageLayoutHeaderComponent, PageLayoutComponent]\n})\nexport class PageLayoutModule {}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Node, NodeEntry } from '@alfresco/js-api';\n\nexport function isLocked(node: { entry: Node }): boolean {\n if (node?.entry) {\n const { entry } = node;\n\n return entry.isLocked || entry.properties?.['cm:lockType'] === 'READ_ONLY_LOCK' || entry.properties?.['cm:lockType'] === 'WRITE_LOCK';\n } else {\n return false;\n }\n}\n\nexport function isWorkingCopy(nodeEntry: NodeEntry): boolean {\n if (nodeEntry?.entry) {\n const { entry } = nodeEntry;\n\n return entry.aspectNames?.includes('cm:workingcopy') ?? false;\n } else {\n return false;\n }\n}\n\nexport function isLibrary(node: { entry: Node | any }): boolean {\n if (node?.entry) {\n const { entry } = node;\n\n return !!(entry.guid && entry.id && entry.preset && entry.title && entry.visibility) || entry.nodeType === 'st:site';\n } else {\n return false;\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ChangeDetectionStrategy, Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { NodeEntry } from '@alfresco/js-api';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { isWorkingCopy } from '../../utils/node.utils';\n\n@Component({\n imports: [TranslatePipe, MatIconModule],\n selector: 'aca-locked-by',\n template: `\n <mat-icon class=\"aca-locked-by--icon\">lock</mat-icon>\n <span class=\"aca-locked-by--label\">{{ (workingCopy ? 'CHECKOUT.CHECKED_OUT_BY' : 'APP.LOCKED_BY') | translate }}</span>\n <span class=\"aca-locked-by--name\">{{ text }}</span>\n `,\n styleUrls: ['./locked-by.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'aca-locked-by'\n }\n})\nexport class LockedByComponent implements OnInit {\n @Input()\n node: NodeEntry;\n\n workingCopy = false;\n text: string;\n\n ngOnInit(): void {\n this.workingCopy = isWorkingCopy(this.node);\n this.text = this.workingCopy\n ? this.node?.entry?.properties?.['cm:workingCopyOwner']?.displayName\n : this.node?.entry?.properties?.['cm:lockOwner']?.displayName;\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n imports: [MatIconModule, TranslatePipe],\n selector: 'aca-generic-error',\n templateUrl: './generic-error.component.html',\n styleUrls: ['./generic-error.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'aca-generic-error' }\n})\nexport class GenericErrorComponent {\n @Input()\n text = 'APP.MESSAGES.ERRORS.MISSING_CONTENT';\n}\n","<mat-icon class=\"generic-error__icon\">error</mat-icon>\n<p class=\"generic-error__title\">\n {{ text | translate }}\n</p>\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable } from '@angular/core';\nimport { NodePermissions } from '@alfresco/adf-extensions';\nimport { Node, SharedLink, SharedLinkEntry, NodeEntry } from '@alfresco/js-api';\n\nexport type PermissionSource = NodeEntry | SharedLinkEntry | Node;\n\nexport interface PermissionOptions {\n target?: string;\n operation?: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NodePermissionService implements NodePermissions {\n static readonly DEFAULT_OPERATION = 'OR';\n\n private readonly defaultOptions: PermissionOptions = {\n operation: NodePermissionService.DEFAULT_OPERATION,\n target: null\n };\n\n check(source: PermissionSource | PermissionSource[], permissions: string[], options?: PermissionOptions): boolean {\n const opts = Object.assign({}, this.defaultOptions, options || {});\n\n if (!source) {\n return false;\n }\n\n if (Array.isArray(source)) {\n source = source.filter((item) => item);\n\n if (source.length > 0) {\n return source.every((node) => this.isOperationAllowed(node, permissions, opts));\n }\n return false;\n } else {\n return this.isOperationAllowed(source, permissions, opts);\n }\n }\n\n private isOperationAllowed(node: PermissionSource, permissions: string[], options: PermissionOptions): boolean {\n const allowableOperations = this.getAllowableOperations(node, options.target);\n\n if (allowableOperations.length) {\n if (options.operation === NodePermissionService.DEFAULT_OPERATION) {\n return permissions.some((permission) => allowableOperations.includes(permission));\n } else {\n return permissions.every((permission) => allowableOperations.includes(permission));\n }\n }\n\n return false;\n }\n\n private getAllowableOperations(node: PermissionSource, property?: string): string[] {\n let entry: Node | SharedLink;\n\n if ('entry' in node) {\n entry = node.entry;\n } else {\n entry = node;\n }\n\n if (property) {\n return entry[property] || [];\n }\n\n if ('allowableOperationsOnTarget' in entry) {\n return entry.allowableOperationsOnTarget || [];\n } else {\n return entry.allowableOperations || [];\n }\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { EnvironmentProviders, inject, Injectable, provideAppInitializer } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { AppStore, getRuleContext } from '@alfresco/aca-shared/store';\nimport {\n ContentActionRef,\n ContentActionType,\n DocumentListPresetRef,\n ExtensionConfig,\n ExtensionLoaderService,\n ExtensionRef,\n ExtensionService,\n IconRef,\n mergeArrays,\n mergeObjects,\n NavBarGroupRef,\n NavigationState,\n ProfileState,\n reduceEmptyMenus,\n reduceSeparators,\n RuleContext,\n RuleEvaluator,\n SelectionState,\n SidebarTabRef,\n sortByOrder\n} from '@alfresco/adf-extensions';\nimport { AppConfigService, AuthenticationService, LogService } from '@alfresco/adf-core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { NodeEntry, RepositoryInfo } from '@alfresco/js-api';\nimport { ViewerRules } from '../models/viewer.rules';\nimport { Badge, UserProfileSection } from '../models/types';\nimport { NodePermissionService } from '../services/node-permission.service';\nimport { map } from 'rxjs/operators';\nimport { SearchCategory } from '@alfresco/adf-content-services';\n\nexport function provideContentAppExtensions(): EnvironmentProviders[] {\n return [\n provideAppInitializer(() => {\n const service = inject(AppExtensionService);\n return service.load();\n })\n ];\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppExtensionService implements RuleContext {\n readonly auth = inject(AuthenticationService);\n protected readonly store = inject<Store<AppStore>>(Store);\n protected readonly loader = inject(ExtensionLoaderService);\n protected readonly extensions = inject(ExtensionService);\n readonly permissions = inject(NodePermissionService);\n readonly appConfig = inject(AppConfigService);\n protected readonly matIconRegistry = inject(MatIconRegistry);\n protected readonly sanitizer = inject(DomSanitizer);\n protected readonly logger = inject(LogService);\n\n private readonly _references = new BehaviorSubject<ExtensionRef[]>([]);\n bulkActionExecuted$ = new Subject<void>();\n\n navbar: Array<NavBarGroupRef> = [];\n sidebarTabs: Array<SidebarTabRef> = [];\n contentMetadata: any;\n search: any;\n viewerRules: ViewerRules = {};\n\n private readonly _headerActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private readonly _toolbarActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private readonly _viewerToolbarActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private readonly _sharedLinkViewerToolbarActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private readonly _contextMenuActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private readonly _openWithActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private readonly _createActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private readonly _sidebarActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private readonly _badges = new BehaviorSubject<Array<Badge>>([]);\n private readonly _filesDocumentListPreset = new BehaviorSubject<Array<DocumentListPresetRef>>([]);\n private readonly _customMetadataPanels = new BehaviorSubject<Array<ContentActionRef>>([]);\n private readonly _bulkActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private readonly _userProfileSections = new BehaviorSubject<Array<UserProfileSection>>([]);\n\n documentListPresets: {\n libraries: Array<DocumentListPresetRef>;\n favoriteLibraries: Array<DocumentListPresetRef>;\n shared: Array<DocumentListPresetRef>;\n recent: Array<DocumentListPresetRef>;\n favorites: Array<DocumentListPresetRef>;\n trashcan: Array<DocumentListPresetRef>;\n searchLibraries: Array<DocumentListPresetRef>;\n searchResults: Array<DocumentListPresetRef>;\n } = {\n libraries: [],\n favoriteLibraries: [],\n shared: [],\n recent: [],\n favorites: [],\n trashcan: [],\n searchLibraries: [],\n searchResults: []\n };\n\n selection: SelectionState;\n navigation: NavigationState;\n profile: ProfileState;\n repository: RepositoryInfo;\n withCredentials: boolean;\n\n references$: Observable<ExtensionRef[]>;\n filesDocumentListPreset$: Observable<DocumentListPresetRef[]> = this._filesDocumentListPreset.asObservable();\n\n config: ExtensionConfig;\n\n constructor() {\n this.references$ = this._references.asObservable();\n\n this.store.select(getRuleContext).subscribe((result) => {\n this.selection = result.selection;\n this.navigation = result.navigation;\n this.profile = result.profile;\n this.repository = result.repository;\n\n if (this.config) {\n this.setup(this.config);\n }\n });\n }\n\n async load() {\n this.config = await this.extensions.load();\n this.setup(this.config);\n }\n\n setup(config: ExtensionConfig) {\n if (!config) {\n this.logger.error('Extension configuration not found');\n return;\n }\n\n this._headerActions.next(this.loader.getContentActions(config, 'features.header'));\n this._sidebarActions.next(this.loader.getContentActions(config, 'features.sidebar.toolbar'));\n this._toolbarActions.next(this.loader.getContentActions(config, 'features.toolbar'));\n this._viewerToolbarActions.next(this.loader.getContentActions(config, 'features.viewer.toolbarActions'));\n this._sharedLinkViewerToolbarActions.next(this.loader.getContentActions(config, 'features.viewer.shared.toolbarActions'));\n this._contextMenuActions.next(this.loader.getContentActions(config, 'features.contextMenu'));\n this._openWithActions.next(this.loader.getContentActions(config, 'features.viewer.openWith'));\n this._createActions.next(this.loader.getElements<ContentActionRef>(config, 'features.create'));\n this._badges.next(this.loader.getElements<Badge>(config, 'features.badges'));\n this._userProfileSections.next(this.loader.getElements<UserProfileSection>(config, 'features.userProfileSections'));\n this._filesDocumentListPreset.next(this.getDocumentListPreset(config, 'files'));\n this._customMetadataPanels.next(this.loader.getElements<ContentActionRef>(config, 'features.customMetadataPanels'));\n this._bulkActions.next(this.loader.getElements<ContentActionRef>(config, 'features.bulk-actions'));\n\n this.navbar = this.loadNavBar(config);\n this.sidebarTabs = this.loader.getElements<SidebarTabRef>(config, 'features.sidebar.tabs');\n this.contentMetadata = this.loadContentMetadata(config);\n this.search = this.loadSearchForms(config);\n this.search?.forEach((searchSet) => {\n searchSet.categories = searchSet.categories?.filter((category) => this.filterVisible(category));\n });\n\n this.documentListPresets = {\n libraries: this.getDocumentListPreset(config, 'libraries'),\n favoriteLibraries: this.getDocumentListPreset(config, 'favoriteLibraries'),\n shared: this.getDocumentListPreset(config, 'shared'),\n recent: this.getDocumentListPreset(config, 'recent'),\n favorites: this.getDocumentListPreset(config, 'favorites'),\n trashcan: this.getDocumentListPreset(config, 'trashcan'),\n searchLibraries: this.getDocumentListPreset(config, 'search-libraries'),\n searchResults: this.getDocumentListPreset(config, 'search-results')\n };\n\n this.withCredentials = this.appConfig.get<boolean>('auth.withCredentials', false);\n\n if (config.features?.viewer) {\n this.viewerRules = (config.features.viewer['rules'] as ViewerRules) || {};\n }\n\n this.registerIcons(config);\n\n const references = (config.$references || []).filter((entry) => typeof entry === 'object').map((entry) => entry as ExtensionRef);\n this._references.next(references);\n }\n\n protected registerIcons(config: ExtensionConfig) {\n const icons: Array<IconRef> = this.loader.getElements<IconRef>(config, 'features.icons').filter((entry) => !entry.disabled);\n\n for (const icon of icons) {\n const [ns, id] = icon.id.split(':');\n const value = icon.value;\n\n if (!value) {\n this.logger.warn(`Missing icon value for \"${icon.id}\".`);\n } else if (!ns || !id) {\n this.logger.warn(`Incorrect icon id format.`);\n } else {\n this.matIconRegistry.addSvgIconInNamespace(ns, id, this.sanitizer.bypassSecurityTrustResourceUrl(value));\n }\n }\n }\n\n protected loadNavBar(config: ExtensionConfig): Array<NavBarGroupRef> {\n return this.loader.getElements<NavBarGroupRef>(config, 'features.navbar');\n }\n\n protected getDocumentListPreset(config: ExtensionConfig, key: string): DocumentListPresetRef[] {\n return this.loader\n .getElements<DocumentListPresetRef>(config, `features.documentList.${key}`)\n .filter((group) => this.filterVisible(group))\n .filter((entry) => !entry.disabled)\n .map((entry) => {\n entry.resizable = entry.resizable ?? true;\n return entry;\n })\n .sort(sortByOrder);\n }\n\n getApplicationNavigation(elements): Array<NavBarGroupRef> {\n return elements\n .filter((group) => this.filterVisible(group))\n .map((group) => ({\n ...group,\n items: (group.items || [])\n .filter((entry) => !entry.disabled)\n .filter((item) => this.filterVisible(item))\n .sort(sortByOrder)\n .map((item) => {\n if (item.children && item.children.length > 0) {\n item.children = item.children\n .filter((entry) => !entry.disabled)\n .filter((child) => this.filterVisible(child))\n .sort(sortByOrder)\n .map((child) => {\n if (child.component) {\n return {\n ...child\n };\n }\n\n if (!child.click) {\n const childRouteRef = this.extensions.getRouteById(child.route);\n const childUrl = `/${childRouteRef ? childRouteRef.path : child.route}`;\n return {\n ...child,\n url: childUrl\n };\n }\n\n return {\n ...child,\n action: child.click\n };\n });\n\n return {\n ...item\n };\n }\n\n if (item.component) {\n return { ...item };\n }\n\n if (!item.click) {\n const routeRef = this.extensions.getRouteById(item.route);\n const url = `/${routeRef ? routeRef.path : item.route}`;\n return {\n ...item,\n url\n };\n }\n\n return {\n ...item,\n action: item.click\n };\n })\n .reduce(reduceEmptyMenus, [])\n }));\n }\n\n loadContentMetadata(config: ExtensionConfig): any {\n const elements = this.loader.getElements<any>(config, 'features.content-metadata-presets');\n if (!elements.length) {\n return null;\n }\n\n const metadata = this.appConfig.config['content-metadata'] || {};\n\n let presets = mergeObjects({}, ...elements);\n if (metadata.presets) {\n presets = mergeObjects(presets, metadata.presets);\n }\n presets = this.filterDisabled(presets);\n\n metadata.presets = presets;\n\n this.appConfig.config['content-metadata'] = metadata;\n return { presets };\n }\n\n loadSearchForms(config: ExtensionConfig): any {\n const elements = this.loader.getElements<any>(config, 'features.search');\n if (!elements.length) {\n return null;\n }\n\n const search = mergeArrays([], elements)\n .filter((entry) => !entry.disabled)\n .filter((entry) => this.filterVisible(entry))\n .sort(sortByOrder);\n\n this.appConfig.config['search'] = search;\n return search;\n }\n\n filterDisabled(object: Array<{ disabled: boolean }> | { disabled: boolean }) {\n if (Array.isArray(object)) {\n return object.filter((item) => !item.disabled).map((item) => this.filterDisabled(item));\n } else if (typeof object === 'object') {\n if (!object.disabled) {\n Object.keys(object).forEach((prop) => {\n object[prop] = this.filterDisabled(object[prop]);\n });\n return object;\n }\n } else {\n return object;\n }\n }\n\n getSidebarTabs(): Array<SidebarTabRef> {\n return this.sidebarTabs.filter((action) => this.filterVisible(action));\n }\n\n private setActionDisabledFromRule(action: ContentActionRef) {\n let disabled = false;\n\n if (action?.rules?.enabled) {\n disabled = !this.extensions.evaluateRule(action.rules.enabled, this);\n }\n\n return {\n ...action,\n disabled\n };\n }\n\n updateSidebarActions() {\n this._sidebarActions.next(this.loader.getContentActions(this.config, 'features.sidebar.toolbar'));\n }\n\n getCreateActions(): Observable<Array<ContentActionRef>> {\n return this._createActions.pipe(\n map((createActions) =>\n createActions\n .filter((action) => this.filterVisible(action))\n .map((action) => this.copyAction(action))\n .map((action) => this.buildMenu(action))\n .map((action) => this.setActionDisabledFromRule(action))\n )\n );\n }\n\n getBadges(node: NodeEntry): Observable<Array<Badge>> {\n return this._badges.pipe(map((badges) => badges.filter((badge) => this.evaluateRule(badge.rules.visible, node))));\n }\n\n getUserProfileSections(): Observable<Array<UserProfileSection>> {\n return this._userProfileSections.pipe(map((sections) => sections.filter((section) => this.evaluateRule(section.rules.visible))));\n }\n\n getCustomMetadataPanels(node: NodeEntry): Observable<Array<ContentActionRef>> {\n return this._customMetadataPanels.pipe(map((panels) => panels.filter((panel) => this.evaluateRule(panel.rules.visible, node))));\n }\n\n private buildMenu(actionRef: ContentActionRef): ContentActionRef {\n if (actionRef.type === ContentActionType.menu && actionRef.children && actionRef.children.length > 0) {\n const children = actionRef.children.filter((action) => this.filterVisible(action)).map((action) => this.buildMenu(action));\n\n actionRef.children = children\n .map((action) => this.setActionDisabledFromRule(action))\n .sort(sortByOrder)\n .reduce(reduceEmptyMenus, [])\n .reduce(reduceSeparators, []);\n }\n\n return actionRef;\n }\n\n private getAllowedActions(actions: ContentActionRef[]): ContentActionRef[] {\n return (actions || [])\n .filter((action) => this.filterVisible(action))\n .map((action) => {\n if (action.type === ContentActionType.menu) {\n const copy = this.copyAction(action);\n if (copy.children && copy.children.length > 0) {\n copy.children = copy.children\n .filter((entry) => !entry.disabled)\n .filter((childAction) => this.filterVisible(childAction))\n .sort(sortByOrder)\n .reduce(reduceSeparators, []);\n }\n return copy;\n }\n return action;\n })\n .map((action) => this.setActionDisabledFromRule(action))\n .reduce(reduceEmptyMenus, [])\n .reduce(reduceSeparators, []);\n }\n\n getAllowedSidebarActions(): Observable<Array<ContentActionRef>> {\n return this._sidebarActions.pipe(map((sidebarActions) => this.getAllowedActions(sidebarActions)));\n }\n\n getAllowedToolbarActions(): Observable<Array<ContentActionRef>> {\n return this._toolbarActions.pipe(map((toolbarActions) => this.getAllowedActions(toolbarActions)));\n }\n\n getViewerToolbarActions(): Observable<Array<ContentActionRef>> {\n return this._viewerToolbarActions.pipe(map((viewerToolbarActions) => this.getAllowedActions(viewerToolbarActions)));\n }\n\n getBulkActions(): Observable<Array<ContentActionRef>> {\n return this._bulkActions.pipe(map((bulkActions) => this.getAllowedActions(bulkActions)));\n }\n\n getOpenWithActions(): Observable<Array<ContentActionRef>> {\n return this._openWithActions.pipe(map((openWithActions) => this.getAllowedActions(openWithActions)));\n }\n\n getSharedLinkViewerToolbarActions(): Observable<Array<ContentActionRef>> {\n return this._sharedLinkViewerToolbarActions.pipe(\n map((sharedLinkViewerToolbarActions) => (!this.selection.isEmpty ? this.getAllowedActions(sharedLinkViewerToolbarActions) : []))\n );\n }\n\n getHeaderActions(): Observable<Array<ContentActionRef>> {\n return this._headerActions.pipe(\n map((headerActions) =>\n headerActions\n .filter((action) => this.filterVisible(action))\n .map((action) => {\n if (action.type === ContentActionType.menu) {\n const copy = this.copyAction(action);\n if (copy.children && copy.children.length > 0) {\n copy.children = copy.children\n .filter((childAction) => this.filterVisible(childAction))\n .sort(sortByOrder)\n .reduce(reduceEmptyMenus, [])\n .reduce(reduceSeparators, []);\n }\n return copy;\n }\n\n return action;\n })\n .map((action) => this.setActionDisabledFromRule(action))\n .sort(sortByOrder)\n .reduce(reduceEmptyMenus, [])\n .reduce(reduceSeparators, [])\n )\n );\n }\n\n getAllowedContextMenuActions(): Observable<Array<ContentActionRef>> {\n return this._contextMenuActions.pipe(map((contextMenuActions) => (!this.selection.isEmpty ? this.getAllowedActions(contextMenuActions) : [])));\n }\n\n copyAction(action: ContentActionRef): ContentActionRef {\n return {\n ...action,\n children: (action.children || []).map((child) => this.copyAction(child))\n };\n }\n\n filterVisible(action: ContentActionRef | SidebarTabRef | DocumentListPresetRef | SearchCategory): boolean {\n if (action?.rules?.visible) {\n if (Array.isArray(action.rules.visible)) {\n return action.rules.visible.every((rule) => this.extensions.evaluateRule(rule, this));\n }\n return this.extensions.evaluateRule(action.rules.visible, this);\n }\n return true;\n }\n\n isViewerExtensionDisabled(extension: any): boolean {\n if (extension) {\n if (extension.disabled) {\n return true;\n }\n\n if (extension.rules?.disabled) {\n return this.extensions.evaluateRule(extension.rules.disabled, this);\n }\n }\n\n return false;\n }\n\n runActionById(id: string, additionalPayload?: any) {\n const action = this.extensions.getActionById(id);\n if (action) {\n const { type, payload } = action;\n const context = {\n selection: this.selection\n };\n const expression = this.extensions.runExpression(payload, context);\n\n this.store.dispatch({\n type,\n payload: expression,\n configuration: additionalPayload\n });\n } else {\n this.store.dispatch({\n type: id,\n configuration: additionalPayload\n });\n }\n }\n\n // todo: move to ADF/RuleService\n isRuleDefined(ruleId: string): boolean {\n return !!(ruleId && this.getEvaluator(ruleId));\n }\n\n // todo: move to ADF/RuleService\n evaluateRule(ruleId: string | string[], ...args: any[]): boolean {\n let evaluatorList: RuleEvaluator[] = [];\n if (Array.isArray(ruleId)) {\n evaluatorList = ruleId.filter((rule) => !!this.getEvaluator(rule)).map((rule) => this.getEvaluator(rule));\n } else {\n const evaluator = this.getEvaluator(ruleId);\n if (evaluator) {\n evaluatorList.push(evaluator);\n }\n }\n if (evaluatorList?.length > 0) {\n return evaluatorList.every((evaluator) => evaluator(this, ...args));\n }\n\n return false;\n }\n\n getEvaluator(key: string): RuleEvaluator {\n return this.extensions.getEvaluator(key);\n }\n\n canPreviewNode(node: NodeEntry) {\n const rules = this.viewerRules;\n\n if (this.isRuleDefined(rules.canPreview)) {\n const canPreview = this.evaluateRule(rules.canPreview, node);\n\n if (!canPreview) {\n return false;\n }\n }\n\n return true;\n }\n\n canShowViewerNavigation(node: NodeEntry) {\n const rules = this.viewerRules;\n\n if (this.isRuleDefined(rules.showNavigation)) {\n const showNavigation = this.evaluateRule(rules.showNavigation, node);\n if (!showNavigation) {\n return false;\n }\n }\n\n return true;\n }\n\n bulkActionExecuted(): void {\n this.bulkActionExecuted$.next();\n }\n\n isFeatureSupported(feature: string): boolean {\n return this.extensions.evaluateRule(feature, this);\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AfterViewInit, Component, Input, ViewChild, ViewEncapsulation, inject } from '@angular/core';\nimport { ContentActionRef, DynamicExtensionComponent } from '@alfresco/adf-extensions';\nimport { AppExtensionService } from '../../../services/app.extension.service';\nimport { MatMenuItem, MatMenuModule } from '@angular/material/menu';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { IconComponent } from '@alfresco/adf-core';\n\n@Component({\n imports: [TranslatePipe, MatMenuModule, MatDividerModule, IconComponent, DynamicExtensionComponent],\n selector: 'app-toolbar-menu-item',\n templateUrl: './toolbar-menu-item.component.html',\n styleUrls: ['./toolbar-menu-item.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-toolbar-menu-item' }\n})\nexport class ToolbarMenuItemComponent implements AfterViewInit {\n private readonly extensions = inject(AppExtensionService);\n\n @Input()\n actionRef: ContentActionRef;\n @Input()\n menuId?: string;\n\n @ViewChild(MatMenuItem)\n menuItem: MatMenuItem;\n\n @ViewChild(DynamicExtensionComponent)\n dynamicComponent: DynamicExtensionComponent;\n\n runAction() {\n if (this.hasClickAction(this.actionRef)) {\n this.extensions.runActionById(\n this.actionRef.actions.click,\n this.menuId\n ? {\n focusedElementOnCloseSelector: `#${this.menuId.replace(/\\\\/g, '\\\\\\\\').replace(/\\./g, '\\\\.')}`\n }\n : undefined\n );\n }\n }\n\n ngAfterViewInit() {\n if (this.dynamicComponent?.menuItem) {\n this.menuItem = this.dynamicComponent.menuItem;\n }\n }\n\n private hasClickAction(actionRef: ContentActionRef): boolean {\n return !!actionRef?.actions?.click;\n }\n\n trackByActionId(_: number, obj: ContentActionRef): string {\n return obj.id;\n }\n}\n","\n@switch (actionRef.type) {\n @case ('menu') {\n <button [id]=\"actionRef.id\" mat-menu-item role=\"menuitem\" tabindex=\"0\" [disabled]=\"actionRef.disabled\" [matMenuTriggerFor]=\"childMenu\">\n <adf-icon [value]=\"actionRef.icon\" />\n <span data-automation-id=\"menu-item-title\">{{ actionRef.title | translate }}</span>\n </button>\n <mat-menu #childMenu=\"matMenu\" class=\"app-create-menu__sub-menu\">\n @for (child of actionRef.children; track trackByActionId($index, child)) {\n <app-toolbar-menu-item [actionRef]=\"child\" />\n }\n </mat-menu>\n }\n @case ('separator') {\n <mat-divider aria-hidden=\"true\" />\n }\n @case ('custom') {\n <adf-dynamic-component [id]=\"actionRef.component\" />\n }\n @default {\n <button\n [id]=\"actionRef.id\"\n role=\"menuitem\"\n mat-menu-item\n [role]=\"'menuitem'\"\n tabindex=\"0\"\n [disabled]=\"actionRef.disabled\"\n [attr.title]=\"(actionRef.disabled ? actionRef['description-disabled'] : actionRef.description || actionRef.title) | translate\"\n (click)=\"runAction()\"\n >\n <adf-icon [value]=\"actionRef.icon\" class=\"app-toolbar-menu-item--icon\" />\n <span data-automation-id=\"menu-item-title\">{{ actionRef.title | translate }}</span>\n </button>\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, ViewEncapsulation, inject } from '@angular/core';\nimport { ContentActionRef } from '@alfresco/adf-extensions';\nimport { AppExtensionService } from '../../../services/app.extension.service';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ToolbarMenuItemComponent } from '../toolbar-menu-item/toolbar-menu-item.component';\nimport { IconComponent } from '@alfresco/adf-core';\n\nexport enum ToolbarButtonType {\n ICON_BUTTON = 'icon-button',\n FLAT_BUTTON = 'flat-button',\n STROKED_BUTTON = 'stroked-button',\n MENU_ITEM = 'menu-item'\n}\n\n@Component({\n imports: [TranslatePipe, MatButtonModule, ToolbarMenuItemComponent, IconComponent],\n selector: 'app-toolbar-button',\n templateUrl: './toolbar-button.component.html',\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-toolbar-button' }\n})\nexport class ToolbarButtonComponent {\n private readonly extensions = inject(AppExtensionService);\n\n @Input()\n data: {\n buttonType?: ToolbarButtonType;\n color?: string;\n };\n\n @Input()\n type: ToolbarButtonType = ToolbarButtonType.ICON_BUTTON;\n\n @Input()\n color: ThemePalette;\n\n @Input()\n actionRef: ContentActionRef;\n\n runAction() {\n if (this.hasClickAction(this.actionRef)) {\n this.extensions.runActionById(this.actionRef.actions.click, {\n focusedElementOnCloseSelector: `#${this.actionRef.id.replace(/\\\\/g, '\\\\\\\\').replace(/\\./g, '\\\\.')}`\n });\n }\n }\n\n private hasClickAction(actionRef: ContentActionRef): boolean {\n return !!actionRef?.actions?.click;\n }\n}\n","\n@switch (data?.buttonType || type) {\n @case ('icon-button') {\n <button\n [id]=\"actionRef.id\"\n mat-icon-button\n [color]=\"color\"\n [attr.aria-label]=\"actionRef.description || actionRef.title | translate\"\n [attr.title]=\"actionRef.description || actionRef.title | translate\"\n [disabled]=\"actionRef.disabled\"\n (click)=\"runAction()\"\n >\n <adf-icon [value]=\"actionRef.icon\" />\n </button>\n }\n @case ('flat-button') {\n <button\n [id]=\"actionRef.id\"\n [color]=\"data?.color || color\"\n mat-flat-button\n [attr.aria-label]=\"actionRef.description || actionRef.title | translate\"\n [attr.title]=\"actionRef.description || actionRef.title | translate\"\n [disabled]=\"actionRef.disabled\"\n (click)=\"runAction()\"\n >\n @if (actionRef.title) {\n <span>{{ actionRef.title | translate }}</span>\n }\n </button>\n }\n @case ('stroked-button') {\n <button\n [id]=\"actionRef.id\"\n [color]=\"data?.color || color\"\n mat-stroked-button\n [attr.aria-label]=\"actionRef.description || actionRef.title | translate\"\n [attr.title]=\"actionRef.description || actionRef.title | translate\"\n [disabled]=\"actionRef.disabled\"\n (click)=\"runAction()\"\n >\n @if (actionRef.title) {\n <span>{{ actionRef.title | translate }}</span>\n }\n </button>\n }\n @case ('menu-item') {\n <app-toolbar-menu-item [actionRef]=\"actionRef\" />\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, ViewEncapsulation, HostListener, ViewChild, ViewChildren, QueryList, AfterViewInit, OnInit } from '@angular/core';\nimport { ContentActionRef, ContentActionType, DynamicExtensionComponent } from '@alfresco/adf-extensions';\nimport { MatMenu, MatMenuItem, MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\nimport { ThemePalette } from '@angular/material/core';\nimport { ToolbarMenuItemComponent } from '../toolbar-menu-item/toolbar-menu-item.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { IconComponent } from '@alfresco/adf-core';\n\n@Component({\n imports: [TranslatePipe, MatButtonModule, MatMenuModule, ToolbarMenuItemComponent, IconComponent, DynamicExtensionComponent],\n selector: 'app-toolbar-menu',\n templateUrl: './toolbar-menu.component.html',\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-toolbar-menu' }\n})\nexport class ToolbarMenuComponent implements OnInit, AfterViewInit {\n @Input()\n actionRef: ContentActionRef;\n\n @Input()\n color: ThemePalette;\n\n @ViewChild('matTrigger')\n matTrigger: MatMenuTrigger;\n\n @ViewChild(MatMenu)\n menu: MatMenu;\n\n @ViewChildren(ToolbarMenuItemComponent)\n toolbarMenuItems: QueryList<ToolbarMenuItemComponent>;\n\n @ViewChildren(DynamicExtensionComponent)\n dynamicExtensionComponents: QueryList<DynamicExtensionComponent>;\n\n @Input()\n data: {\n menuType?: string;\n color?: string;\n };\n\n type = 'default';\n\n @HostListener('document:keydown.Escape')\n handleKeydownEscape() {\n this.matTrigger.closeMenu();\n }\n\n ngOnInit(): void {\n this.type = this.data?.menuType || 'default';\n }\n\n ngAfterViewInit(): void {\n const dynamicComponentMap = new Map<string, DynamicExtensionComponent>(\n this.dynamicExtensionComponents.map((component) => [component.id, component])\n );\n\n const toolbarItemMap = new Map<string, ToolbarMenuItemComponent>();\n this.toolbarMenuItems.forEach((item) => {\n if (item.actionRef?.id) {\n toolbarItemMap.set(item.actionRef.id, item);\n }\n });\n\n const menuItems: MatMenuItem[] = [];\n this.actionRef.children?.forEach((child) => {\n if (child.type === ContentActionType.custom) {\n const componentId = child.component || child.id;\n const component = dynamicComponentMap.get(componentId);\n if (component?.menuItem) {\n menuItems.push(component.menuItem);\n }\n } else {\n const toolbarItem = toolbarItemMap.get(child.id);\n if (toolbarItem?.menuItem) {\n menuItems.push(toolbarItem.menuItem);\n }\n }\n });\n\n const menuItemsQueryList = new QueryList<MatMenuItem>();\n menuItemsQueryList.reset(menuItems);\n this.menu._allItems = menuItemsQueryList;\n this.menu.ngAfterContentInit();\n }\n\n trackByActionId(_: number, obj: ContentActionRef): string {\n return obj.id;\n }\n}\n","\n@switch (type) {\n @case ('button') {\n <button\n [id]=\"actionRef.id\"\n [color]=\"data?.color || color\"\n mat-button\n [attr.aria-label]=\"actionRef.description || actionRef.title | translate\"\n [attr.title]=\"actionRef.description || actionRef.title | translate\"\n [matMenuTriggerFor]=\"menu\"\n [disabled]=\"actionRef.disabled\"\n #matTrigger=\"matMenuTrigger\"\n >\n @if (actionRef.title) {\n <span>{{ actionRef.title | translate }}</span>\n }\n </button>\n }\n @case ('flat-button') {\n <button\n [id]=\"actionRef.id\"\n [color]=\"data?.color || color\"\n mat-flat-button\n [attr.aria-label]=\"actionRef.description || actionRef.title | translate\"\n [attr.title]=\"actionRef.description || actionRef.title | translate\"\n [matMenuTriggerFor]=\"menu\"\n [disabled]=\"actionRef.disabled\"\n #matTrigger=\"matMenuTrigger\"\n >\n @if (actionRef.title) {\n <span>{{ actionRef.title | translate }}</span>\n }\n </button>\n }\n @case ('stroked-button') {\n <button\n [id]=\"actionRef.id\"\n [color]=\"data?.color || color\"\n mat-stroked-button\n [attr.aria-label]=\"actionRef.description || actionRef.title | translate\"\n [attr.title]=\"actionRef.description || actionRef.title | translate\"\n [matMenuTriggerFor]=\"menu\"\n [disabled]=\"actionRef.disabled\"\n #matTrigger=\"matMenuTrigger\"\n >\n @if (actionRef.title) {\n <span>{{ actionRef.title | translate }}</span>\n }\n </button>\n }\n @default {\n <button\n [id]=\"actionRef.id\"\n [color]=\"data?.color || color\"\n mat-icon-button\n [attr.aria-label]=\"actionRef.description || actionRef.title | translate\"\n [attr.title]=\"actionRef.description || actionRef.title | translate\"\n [matMenuTriggerFor]=\"menu\"\n [disabled]=\"actionRef.disabled\"\n #matTrigger=\"matMenuTrigger\"\n >\n @if (actionRef.icon) {\n <adf-icon [value]=\"actionRef.icon\" />\n }\n </button>\n }\n}\n\n<mat-menu #menu=\"matMenu\" [overlapTrigger]=\"false\" [xPosition]=\"'before'\">\n @for (child of actionRef.children; track trackByActionId($index, child)) {\n @switch (child.type) {\n @case ('custom') {\n <adf-dynamic-component [id]=\"child.component\" [data]=\"child.data\" />\n }\n @default {\n <app-toolbar-menu-item [actionRef]=\"child\" [menuId]=\"actionRef.id\" />\n }\n }\n }\n</mat-menu>\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation, ChangeDetectionStrategy, Input, DoCheck, ChangeDetectorRef, inject } from '@angular/core';\nimport { ContentActionRef, DynamicExtensionComponent } from '@alfresco/adf-extensions';\nimport { ToolbarButtonComponent, ToolbarButtonType } from '../toolbar-button/toolbar-button.component';\nimport { ThemePalette } from '@angular/material/core';\nimport { ToolbarMenuComponent } from '../toolbar-menu/toolbar-menu.component';\n\n@Component({\n imports: [ToolbarButtonComponent, ToolbarMenuComponent, DynamicExtensionComponent],\n selector: 'aca-toolbar-action',\n templateUrl: './toolbar-action.component.html',\n styleUrl: './toolbar-action.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'aca-toolbar-action' }\n})\nexport class ToolbarActionComponent implements DoCheck {\n private readonly cd = inject(ChangeDetectorRef);\n\n @Input()\n data: {\n buttonType?: ToolbarButtonType;\n color?: string;\n };\n\n @Input()\n type: ToolbarButtonType = ToolbarButtonType.ICON_BUTTON;\n\n @Input()\n color: ThemePalette;\n\n @Input()\n actionRef: ContentActionRef;\n\n // todo: review after ADF 2.6\n // preview component : change detection workaround for children without input\n ngDoCheck() {\n if (this.actionRef.id.includes('app.viewer')) {\n this.cd.markForCheck();\n }\n }\n}\n","\n@switch (actionRef.type) {\n @case ('default') {\n <div>\n <app-toolbar-button [type]=\"type\" [actionRef]=\"actionRef\" [color]=\"color\" />\n </div>\n }\n @case ('button') {\n <div>\n <app-toolbar-button [type]=\"data?.buttonType || type\" [actionRef]=\"actionRef\" [color]=\"color\" [data]=\"actionRef.data\" />\n </div>\n }\n @case ('separator') {\n <div [id]=\"actionRef.id\" class=\"aca-toolbar-divider\"></div>\n }\n @case ('menu') {\n <app-toolbar-menu [actionRef]=\"actionRef\" [color]=\"color\" [data]=\"actionRef.data\" />\n }\n @case ('custom') {\n <div>\n <adf-dynamic-component [data]=\"actionRef.data\" [id]=\"actionRef.component\" />\n </div>\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { ContentActionRef } from '@alfresco/adf-extensions';\nimport { ToolbarActionComponent } from './toolbar-action/toolbar-action.component';\nimport { MatToolbarModule } from '@angular/material/toolbar';\n\n@Component({\n selector: 'aca-toolbar',\n imports: [ToolbarActionComponent, MatToolbarModule],\n templateUrl: './toolbar.component.html',\n styleUrls: ['./toolbar.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ToolbarComponent {\n @Input({ required: true }) items: ContentActionRef[];\n\n trackByActionId(_: number, action: ContentActionRef) {\n return action.id;\n }\n}\n","<mat-toolbar class=\"aca-toolbar\">\n @for (item of items; track trackByActionId($index, item)) {\n <aca-toolbar-action [actionRef]=\"item\" />\n }\n</mat-toolbar>\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, DestroyRef, HostListener, inject, Input, OnChanges, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Node, NodeEntry, SiteEntry } from '@alfresco/js-api';\nimport { ContentActionRef, DynamicTabComponent, SidebarTabRef } from '@alfresco/adf-extensions';\nimport { Store } from '@ngrx/store';\nimport { infoDrawerPreview, SetInfoDrawerStateAction, ToggleInfoDrawerAction } from '@alfresco/aca-shared/store';\nimport { AppExtensionService } from '../../services/app.extension.service';\nimport { ContentApiService } from '../../services/content-api.service';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { InfoDrawerComponent as AdfInfoDrawerComponent, InfoDrawerTabComponent } from '@alfresco/adf-core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { ToolbarComponent } from '../toolbar/toolbar.component';\nimport { ContentService, NodesApiService } from '@alfresco/adf-content-services';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n imports: [TranslatePipe, MatProgressBarModule, AdfInfoDrawerComponent, A11yModule, ToolbarComponent, DynamicTabComponent, InfoDrawerTabComponent],\n selector: 'aca-info-drawer',\n templateUrl: './info-drawer.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class InfoDrawerComponent implements OnChanges, OnInit, OnDestroy {\n private readonly store = inject<Store<any>>(Store);\n private readonly contentApi = inject(ContentApiService);\n private readonly extensions = inject(AppExtensionService);\n private readonly nodesService = inject(NodesApiService);\n private readonly contentService = inject(ContentService);\n\n @Input()\n nodeId: string;\n\n @Input({ required: true })\n node: NodeEntry;\n\n isLoading = false;\n displayNode: Node | SiteEntry;\n tabs: Array<SidebarTabRef> = [];\n actions: Array<ContentActionRef> = [];\n\n preventFromClosing = false;\n icon: string = null;\n\n @HostListener('keydown.escape')\n onEscapeKeyboardEvent(): void {\n this.close();\n }\n\n private readonly destroyRef = inject(DestroyRef);\n\n ngOnInit() {\n this.tabs = this.extensions.getSidebarTabs();\n this.extensions\n .getAllowedSidebarActions()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((actions) => {\n this.actions = actions;\n });\n\n this.store\n .select(infoDrawerPreview)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((isInfoDrawerPreviewOpened) => {\n this.preventFromClosing = isInfoDrawerPreviewOpened;\n });\n\n this.nodesService.nodeUpdated.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((node: any) => {\n this.node.entry = node;\n });\n }\n\n ngOnDestroy() {\n if (!this.preventFromClosing) {\n this.store.dispatch(new SetInfoDrawerStateAction(false));\n }\n }\n\n ngOnChanges() {\n if (this.node) {\n if (this.node['isLibrary']) {\n return this.setDisplayNode(this.node);\n }\n\n const entry: any = this.node.entry;\n\n const id = entry.nodeId || entry.id;\n return this.loadNodeInfo(id);\n }\n }\n\n private close() {\n this.store.dispatch(new ToggleInfoDrawerAction());\n }\n\n private loadNodeInfo(nodeId: string) {\n if (nodeId) {\n this.isLoading = true;\n\n this.contentApi.getNodeInfo(nodeId).subscribe(\n (entity) => {\n this.setDisplayNode(entity);\n this.node.entry = entity;\n this.isLoading = false;\n },\n () => (this.isLoading = false)\n );\n }\n }\n\n private setDisplayNode(node: any) {\n this.displayNode = node;\n this.icon = this.contentService.getNodeIcon(node);\n }\n}\n","@if (isLoading) {\n <div>\n <mat-progress-bar mode=\"indeterminate\" [attr.aria-label]=\"'APP.INFO_DRAWER.DATA_LOADING' | translate\" />\n </div>\n}\n@if (!isLoading && !!displayNode) {\n <adf-info-drawer class=\"aca-info-drawer\" [icon]=\"icon\" [title]=\"node?.entry?.name || 'APP.INFO_DRAWER.TITLE'\" cdkTrapFocusAutoCapture>\n <aca-toolbar [items]=\"actions\" info-drawer-buttons />\n @for (tab of tabs; track tab.component) {\n <adf-info-drawer-tab [icon]=\"tab.icon\" [label]=\"tab.title\">\n <adf-dynamic-tab [node]=\"$any(displayNode)\" [id]=\"tab.component\" [attr.data-automation-id]=\"tab.component\" />\n </adf-info-drawer-tab>\n }\n </adf-info-drawer>\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NodeEntry, Node } from '@alfresco/js-api';\n\nexport abstract class DocumentBasePageService {\n abstract canUpdateNode(node: NodeEntry): boolean;\n abstract canUploadContent(node: Node): boolean;\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { inject, Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { NodeEntry } from '@alfresco/js-api';\nimport { FileAutoDownloadComponent } from '@alfresco/adf-content-services';\n\nconst BYTES_TO_MB_CONVERSION_VALUE = 1048576;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AutoDownloadService {\n private readonly dialog = inject(MatDialog);\n\n private shouldDownload(node: NodeEntry, threshold: number): boolean {\n const fileSizeInBytes = node?.entry?.content?.sizeInBytes || 0;\n const sizeInMB = fileSizeInBytes / BYTES_TO_MB_CONVERSION_VALUE;\n\n return sizeInMB && sizeInMB > threshold;\n }\n\n /**\n * Opens the dialog to download the node content.\n * Determines whether node content should be auto downloaded based on the file size and the configured threshold.\n * @param node node entry\n * @param threshold file size threshold in MB\n */\n tryDownload(node: NodeEntry, threshold: number): boolean {\n if (this.shouldDownload(node, threshold)) {\n this.dialog.open(FileAutoDownloadComponent, { disableClose: true, data: node });\n return true;\n }\n\n return false;\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { DocumentListComponent, DocumentListService, ShareDataRow, UploadService } from '@alfresco/adf-content-services';\nimport { ShowHeaderMode } from '@alfresco/adf-core';\nimport { ContentActionRef, DocumentListPresetRef, SelectionState } from '@alfresco/adf-extensions';\nimport { DestroyRef, Directive, HostListener, inject, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewChild } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Node, NodeEntry, NodePaging } from '@alfresco/js-api';\nimport { Observable, Subscription } from 'rxjs';\nimport { DocumentBasePageService } from './document-base-page.service';\nimport {\n AppStore,\n getAppSelection,\n getCurrentFolder,\n isInfoDrawerOpened,\n SetSelectedNodesAction,\n ViewNodeAction,\n ViewNodeExtras\n} from '@alfresco/aca-shared/store';\nimport { AppExtensionService } from '../../services/app.extension.service';\nimport { isLibrary } from '../../utils/node.utils';\nimport { AutoDownloadService } from '../../services/auto-download.service';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { Router } from '@angular/router';\nimport { AppSettingsService } from '../../services/app-settings.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/* eslint-disable @angular-eslint/directive-class-suffix */\n@Directive()\nexport abstract class PageComponent implements OnInit, OnDestroy, OnChanges {\n @ViewChild(DocumentListComponent)\n documentList: DocumentListComponent;\n\n title = 'Page';\n infoDrawerOpened$: Observable<boolean>;\n node: Node;\n selection: SelectionState;\n actions: Array<ContentActionRef> = [];\n viewerToolbarActions: Array<ContentActionRef> = [];\n bulkActions: ContentActionRef[] = [];\n canUpdateNode = false;\n canUpload = false;\n nodeResult: NodePaging;\n showHeader: ShowHeaderMode = ShowHeaderMode.Data;\n filterSorting = 'name-asc';\n createActions: ContentActionRef[] = [];\n isSmallScreen = false;\n selectedRowItemsCount = 0;\n selectedNodesState: SelectionState;\n\n protected documentListService = inject(DocumentListService);\n protected settings = inject(AppSettingsService);\n protected extensions = inject(AppExtensionService);\n protected content = inject(DocumentBasePageService);\n protected store = inject<Store<AppStore>>(Store<AppStore>);\n protected breakpointObserver = inject(BreakpointObserver);\n protected uploadService = inject(UploadService);\n protected router = inject(Router);\n\n protected readonly destroyRef = inject(DestroyRef);\n\n private readonly autoDownloadService = inject(AutoDownloadService, { optional: true });\n\n protected subscriptions: Subscription[] = [];\n\n ngOnInit() {\n this.extensions\n .getCreateActions()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((actions) => {\n this.createActions = actions;\n });\n\n this.infoDrawerOpened$ = this.store.select(isInfoDrawerOpened);\n\n this.store\n .select(getAppSelection)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((selection) => {\n this.selection = selection;\n this.canUpdateNode = this.selection.count === 1 && this.content.canUpdateNode(selection.first);\n });\n\n this.extensions\n .getAllowedToolbarActions()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((actions) => {\n this.actions = actions;\n });\n\n this.extensions\n .getBulkActions()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((actions) => {\n this.bulkActions = actions;\n });\n\n this.extensions\n .getViewerToolbarActions()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((actions) => {\n this.viewerToolbarActions = actions;\n });\n\n this.store\n .select(getCurrentFolder)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((node) => {\n this.canUpload = node && this.content.canUploadContent(node);\n });\n\n this.breakpointObserver\n .observe([Breakpoints.HandsetPortrait, Breakpoints.HandsetLandscape])\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((result) => {\n this.isSmallScreen = result.matches;\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.nodeResult?.currentValue) {\n this.nodeResult = changes.nodeResult.currentValue;\n }\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\n this.subscriptions = [];\n\n this.store.dispatch(new SetSelectedNodesAction([]));\n }\n\n showPreview(node: NodeEntry, extras?: ViewNodeExtras) {\n if (node?.entry) {\n if (!this.settings.autoDownloadEnabled || !this.autoDownloadService.tryDownload(node, this.settings.authDownloadThreshold)) {\n let id: string;\n\n if (node.entry.nodeType === 'app:filelink') {\n id = node.entry.properties['cm:destination'];\n } else {\n id = (node as any).entry.nodeId || (node as any).entry.guid || node.entry.id;\n }\n\n this.store.dispatch(new ViewNodeAction(id, extras));\n }\n }\n }\n\n onSelectedItemsCountChanged(count: number) {\n this.selectedRowItemsCount = count;\n }\n\n getParentNodeId(): string {\n return this.node ? this.node.id : null;\n }\n\n imageResolver(row: ShareDataRow): string | null {\n if (row && isLibrary(row.node)) {\n return 'material-icons://library_books';\n }\n\n return null;\n }\n\n reload(selectedNode?: NodeEntry): void {\n if (this.isOutletPreviewUrl()) {\n return;\n }\n\n this.documentListService.reload();\n if (selectedNode) {\n this.store.dispatch(new SetSelectedNodesAction([selectedNode]));\n }\n }\n\n reloadWithoutResettingSelection(): void {\n if (this.isOutletPreviewUrl()) {\n return;\n }\n this.documentListService.reloadSilently();\n }\n\n trackByActionId(_: number, action: ContentActionRef) {\n return action.id;\n }\n\n trackById(_: number, obj: { id: string }) {\n return obj.id;\n }\n\n trackByColumnId(_: number, obj: DocumentListPresetRef): string {\n return obj.id;\n }\n\n private isOutletPreviewUrl(): boolean {\n return location.href.includes('viewer:view');\n }\n\n @HostListener('sorting-changed', ['$event'])\n onSortingChanged(event: any) {\n this.filterSorting = event.detail.key + '-' + event.detail.direction;\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './mime-types';\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { DestroyRef, Directive, HostListener, inject, Input, OnInit } from '@angular/core';\nimport { debounceTime } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { AppStore, ContextMenu, CustomContextMenu } from '@alfresco/aca-shared/store';\nimport { ContentActionRef } from '@alfresco/adf-extensions';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n standalone: true,\n selector: '[acaContextActions]',\n exportAs: 'acaContextActions'\n})\nexport class ContextActionsDirective implements OnInit {\n private readonly store = inject<Store<AppStore>>(Store);\n\n // eslint-disable-next-line\n @Input('acaContextEnable')\n enabled = true;\n\n @Input()\n customActions: ContentActionRef[] = [];\n\n @HostListener('contextmenu', ['$event'])\n onContextMenuEvent(event: MouseEvent) {\n if (event) {\n event.preventDefault();\n\n if (this.enabled) {\n const target = this.getTarget(event);\n if (target) {\n this.execute(event, target);\n }\n }\n }\n }\n\n private readonly execute$: Subject<any> = new Subject();\n\n private readonly destroyRef = inject(DestroyRef);\n\n ngOnInit() {\n this.execute$.pipe(debounceTime(300), takeUntilDestroyed(this.destroyRef)).subscribe((event: MouseEvent) => {\n if (this.customActions?.length) {\n this.store.dispatch(new CustomContextMenu(event, this.customActions));\n } else {\n this.store.dispatch(new ContextMenu(event));\n }\n });\n }\n execute(event: MouseEvent, target: Element) {\n if (!this.isSelected(target)) {\n target.dispatchEvent(new MouseEvent('click'));\n }\n\n if (this.isEmptyTable(target)) {\n return null;\n }\n\n this.execute$.next(event);\n }\n\n private getTarget(event: MouseEvent): Element {\n const target = event.target as Element;\n return this.findAncestor(target, 'adf-datatable-cell');\n }\n\n private isSelected(target: Element): boolean {\n if (!target) {\n return false;\n }\n\n return this.findAncestor(target, 'adf-datatable-row').classList.contains('adf-is-selected');\n }\n\n private isEmptyTable(target: Element): boolean {\n return this.findAncestor(target, 'adf-datatable-cell').classList.contains('adf-no-content-container');\n }\n\n private findAncestor(el: Element, className: string): Element {\n while (el && !el.classList.contains(className)) {\n el = el.parentElement;\n }\n return el;\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { DestroyRef, Directive, inject, OnInit } from '@angular/core';\nimport { AppConfigService, PaginationComponent, PaginationModel, UserPreferencesService } from '@alfresco/adf-core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n standalone: true,\n selector: '[acaPagination]'\n})\nexport class PaginationDirective implements OnInit {\n private readonly pagination = inject(PaginationComponent);\n private readonly preferences = inject(UserPreferencesService);\n private readonly config = inject(AppConfigService);\n\n private readonly destroyRef = inject(DestroyRef);\n\n ngOnInit() {\n this.pagination.supportedPageSizes = this.config.get('pagination.supportedPageSizes');\n this.pagination.changePageSize.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event: PaginationModel) => {\n this.preferences.paginationSize = event.maxItems;\n });\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ContentActionRef } from '@alfresco/adf-extensions';\nimport { Route } from '@angular/router';\n\nexport interface ExtensionRoute extends Route {\n parentRoute?: string;\n}\n\nexport interface Badge extends Partial<Pick<ContentActionRef, 'component' | 'actions' | 'rules'>> {\n id: string;\n icon: string;\n tooltip: string;\n}\n\nexport interface UserProfileSection extends Partial<Pick<ContentActionRef, 'component' | 'rules'>> {\n id: string;\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport interface ViewerRules {\n /**\n * Checks if user can preview the node.\n */\n canPreview?: string;\n\n /**\n * Shows navigation options\n */\n showNavigation?: string;\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { CanActivateFn } from '@angular/router';\nimport { inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { AppStore, isQuickShareEnabled } from '@alfresco/aca-shared/store';\n\nexport const AppSharedRuleGuard: CanActivateFn = (): Observable<boolean> => {\n const store = inject(Store<AppStore>);\n return store.select(isQuickShareEnabled);\n};\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ActivatedRouteSnapshot, Router, CanActivateFn } from '@angular/router';\nimport { inject } from '@angular/core';\nimport { AppConfigService } from '@alfresco/adf-core';\n\nexport const PluginEnabledGuard: CanActivateFn = (route: ActivatedRouteSnapshot) => {\n const appConfigService = inject(AppConfigService);\n const router = inject(Router);\n\n const isPluginEnabled = appConfigService.get(route.data.plugin, true);\n\n if (!isPluginEnabled) {\n router.navigate(['/']);\n }\n\n return isPluginEnabled;\n};\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { NodeEntry, SiteEntry } from '@alfresco/js-api';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppHookService {\n /**\n * Gets emitted when user delete the node\n */\n nodesDeleted = new Subject<void>();\n\n /**\n * Gets emitted when user delete the library\n */\n libraryDeleted = new Subject<string>();\n\n /**\n * Gets emitted when user create the library\n */\n libraryCreated = new Subject<SiteEntry>();\n\n /**\n * Gets emitted when user update the library\n */\n libraryUpdated = new Subject<SiteEntry>();\n\n /**\n * Gets emitted when library update fails\n */\n libraryUpdateFailed = new Subject<void>();\n\n /**\n * Gets emitted when user join the library\n */\n libraryJoined = new Subject<void>();\n\n /**\n * Gets emitted when user left the library\n */\n libraryLeft = new Subject<string>();\n\n /**\n * Gets emitted when library throws 400 error code\n */\n library400Error = new Subject<void>();\n\n /**\n * Gets emitted when user join the library\n */\n joinLibraryToggle = new Subject<void>();\n\n /**\n * Gets emitted when user unlink the node\n */\n linksUnshared = new Subject<void>();\n\n /**\n * Gets emitted when user mark the favorite library\n */\n favoriteLibraryToggle = new Subject<void>();\n\n /**\n * Holds the node that should be pre-selected in the document list after navigation.\n */\n nodeToSelect$ = new BehaviorSubject<NodeEntry | null>(null);\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter, startWith } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class NavigationHistoryService {\n private readonly router = inject(Router);\n\n history: string[] = [];\n\n listenToRouteChanges(): Observable<NavigationEnd> {\n return this.router.events.pipe(\n startWith(new NavigationEnd(0, this.router.url, this.router.url)),\n filter((event: NavigationEnd) => event instanceof NavigationEnd)\n );\n }\n\n shouldReturnLastSelection(url: string): boolean {\n return (\n this.history.length > 2 &&\n this.history[this.history.length - 2].startsWith(url) &&\n [...this.history]\n .reverse()\n .slice(1)\n .find((oldUrl) => !oldUrl.startsWith(url)) === this.history[this.history.length - 1]\n );\n }\n\n setHistory(event: NavigationEnd): void {\n this.history.push(event.urlAfterRedirects);\n }\n}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable, NgModule } from '@angular/core';\nimport { NoopAnimationsModule } from '@angular/platform-browser/animations';\nimport { NoopTranslateModule } from '@alfresco/adf-core';\nimport { AlfrescoApiService, AlfrescoApiServiceMock } from '@alfresco/adf-content-services';\nimport { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport { RouterTestingModule } from '@angular/router/testing';\nimport { provideEffects } from '@ngrx/effects';\nimport { provideStore } from '@ngrx/store';\nimport { MatIconTestingModule } from '@angular/material/icon/testing';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { RepositoryInfo, VersionInfo } from '@alfresco/js-api';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { DocumentBasePageService } from '../../public-api';\n\nexport const initialState = {\n app: {\n appName: 'Alfresco Content Application',\n logoPath: 'assets/images/updated-alfresco-logo.svg',\n sharedUrl: '',\n user: {\n isAdmin: null,\n id: null,\n firstName: '',\n lastName: ''\n },\n selection: {\n nodes: [],\n libraries: [],\n isEmpty: true,\n count: 0\n },\n navigation: {\n currentFolder: null\n },\n infoDrawerOpened: false,\n infoDrawerMetadataAspect: '',\n showFacetFilter: true,\n repository: {\n status: {\n isQuickShareEnabled: true\n }\n } as any\n }\n};\n\nexport const discoveryApiServiceMockValue = {\n ecmProductInfo$: new BehaviorSubject<RepositoryInfo | null>(null),\n getEcmProductInfo: (): Observable<RepositoryInfo> =>\n of(\n new RepositoryInfo({\n version: {\n major: '10.0.0'\n } as VersionInfo\n })\n )\n};\n\n@Injectable()\nexport class DocumentBasePageServiceMock extends DocumentBasePageService {\n canUpdateNode(): boolean {\n return true;\n }\n\n canUploadContent(): boolean {\n return true;\n }\n}\n\n@NgModule({\n imports: [NoopAnimationsModule, NoopTranslateModule, RouterTestingModule, MatIconTestingModule, OverlayModule],\n providers: [\n provideStore(\n { app: null },\n {\n initialState,\n runtimeChecks: {\n strictStateImmutability: false,\n strictActionImmutability: false\n }\n }\n ),\n provideEffects([]),\n { provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock },\n provideHttpClient(withInterceptorsFromDi())\n ]\n})\nexport class LibTestingModule {}\n","/*!\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './lib/adf-extensions/extensions-data-loader.guard';\nexport * from './lib/components/page-layout/page-layout-content.component';\nexport * from './lib/components/page-layout/page-layout-error.component';\nexport * from './lib/components/page-layout/page-layout-header.component';\nexport * from './lib/components/page-layout/page-layout.component';\nexport * from './lib/components/page-layout/page-layout.module';\nexport * from './lib/components/locked-by/locked-by.component';\nexport * from './lib/components/generic-error/generic-error.component';\nexport * from './lib/components/toolbar/toolbar.component';\nexport * from './lib/components/toolbar/toolbar-action/toolbar-action.component';\nexport * from './lib/components/toolbar/toolbar-button/toolbar-button.component';\nexport * from './lib/components/toolbar/toolbar-menu/toolbar-menu.component';\nexport * from './lib/components/toolbar/toolbar-menu-item/toolbar-menu-item.component';\nexport * from './lib/components/info-drawer/info-drawer.component';\nexport * from './lib/components/document-base-page/document-base-page.component';\nexport * from './lib/components/document-base-page/document-base-page.service';\nexport * from './lib/components/open-in-app/open-in-app.component';\nexport * from './lib/constants';\n\nexport * from './lib/directives/contextmenu/contextmenu.directive';\nexport * from './lib/directives/pagination.directive';\n\nexport * from './lib/models/types';\nexport * from './lib/models/viewer.rules';\n\nexport * from './lib/routing/shared.guard';\nexport * from './lib/routing/plugin-enabled.guard';\n\nexport * from './lib/services/app.service';\nexport * from './lib/services/content-api.service';\nexport * from './lib/services/node-permission.service';\nexport * from './lib/services/app.extension.service';\nexport * from './lib/services/router.extension.service';\nexport * from './lib/services/app-hook.service';\nexport * from './lib/services/auto-download.service';\nexport * from './lib/services/app-settings.service';\nexport * from './lib/services/user-profile.service';\nexport * from './lib/services/navigation-history.service';\nexport * from './lib/services/pagination-state-base.service';\nexport * from './lib/services/pagination-state.service';\n\nexport * from './lib/testing/lib-testing-module';\n\nexport * from './lib/utils/node.utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i2","i1","AdfInfoDrawerComponent"],"mappings":"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"}