@alfresco/aca-shared 7.3.0-20948466018 → 7.3.0-20950287046

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/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/utils/node.utils.ts","../../../../projects/aca-shared/src/lib/services/auto-download.service.ts","../../../../projects/aca-shared/src/lib/services/navigation-history.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/testing/lib-testing-module.ts","../../../../projects/aca-shared/src/lib/validators/no-whitespace.validator.ts","../../../../projects/aca-shared/src/public-api.ts","../../../../projects/aca-shared/src/alfresco-aca-shared.ts"],"sourcesContent":["/*!\n * Copyright © 2005-2025 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-2025 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-2025 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-2025 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-2025 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 { 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 NodesApi,\n TrashcanApi,\n SharedlinksApi,\n DiscoveryApi,\n FavoritesApi,\n ContentApi,\n SitesApi,\n SearchApi,\n PeopleApi,\n VersionsApi,\n DirectAccessUrlEntry,\n VersionPaging\n} from '@alfresco/js-api';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ContentApiService {\n private _nodesApi: NodesApi;\n get nodesApi(): NodesApi {\n this._nodesApi = this._nodesApi ?? new NodesApi(this.api.getInstance());\n return this._nodesApi;\n }\n\n private _trashcanApi: TrashcanApi;\n get trashcanApi(): TrashcanApi {\n this._trashcanApi = this._trashcanApi ?? new TrashcanApi(this.api.getInstance());\n return this._trashcanApi;\n }\n\n private _sharedLinksApi: SharedlinksApi;\n get sharedLinksApi(): SharedlinksApi {\n this._sharedLinksApi = this._sharedLinksApi ?? new SharedlinksApi(this.api.getInstance());\n return this._sharedLinksApi;\n }\n\n private _discoveryApi: DiscoveryApi;\n get discoveryApi(): DiscoveryApi {\n this._discoveryApi = this._discoveryApi ?? new DiscoveryApi(this.api.getInstance());\n return this._discoveryApi;\n }\n\n private _favoritesApi: FavoritesApi;\n get favoritesApi(): FavoritesApi {\n this._favoritesApi = this._favoritesApi ?? new FavoritesApi(this.api.getInstance());\n return this._favoritesApi;\n }\n\n private _contentApi: ContentApi;\n get contentApi(): ContentApi {\n this._contentApi = this._contentApi ?? new ContentApi(this.api.getInstance());\n return this._contentApi;\n }\n\n private _sitesApi: SitesApi;\n get sitesApi(): SitesApi {\n this._sitesApi = this._sitesApi ?? new SitesApi(this.api.getInstance());\n return this._sitesApi;\n }\n\n private _searchApi: SearchApi;\n get searchApi(): SearchApi {\n this._searchApi = this._searchApi ?? new SearchApi(this.api.getInstance());\n return this._searchApi;\n }\n\n private _peopleApi: PeopleApi;\n get peopleApi(): PeopleApi {\n this._peopleApi = this._peopleApi ?? new PeopleApi(this.api.getInstance());\n return this._peopleApi;\n }\n\n private _versionsApi: VersionsApi;\n get versionsApi(): VersionsApi {\n this._versionsApi = this._versionsApi ?? new VersionsApi(this.api.getInstance());\n return this._versionsApi;\n }\n constructor(\n private readonly api: AlfrescoApiService,\n private readonly preferences: UserPreferencesService\n ) {}\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']\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']\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 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-2025 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 } 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 defaults = {\n layout: 'app.layout.main',\n auth: ['app.auth', 'app.extensions.dataLoaderGuard']\n };\n\n constructor(\n private readonly router: Router,\n protected readonly extensions: ExtensionService\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 };\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-2025 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, Inject, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { CommonModule } from '@angular/common';\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: [CommonModule, 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 private redirectUrl: string;\n public appStoreUrl: string;\n public window: Window & typeof globalThis = window;\n\n constructor(\n @Inject(MAT_DIALOG_DATA)\n public data: OpenInAppDialogOptions,\n private dialog: MatDialogRef<OpenInAppComponent>\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 <div class=\"aca-download-app-container\" *ngIf=\"appStoreUrl\">\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</div>\n","/*!\n * Copyright © 2005-2025 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 config = inject(AppConfigService);\n private 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-2025 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-2025 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 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 * Copyright © 2005-2025 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 } from '@alfresco/js-api';\n\n@Injectable({ providedIn: 'root' })\nexport class UserProfileService {\n private api = inject(AlfrescoApiService);\n private groupService = inject(GroupService);\n\n private get peopleApi(): PeopleApi {\n return new PeopleApi(this.api.getInstance());\n }\n\n private 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-2025 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 AuthenticationService,\n AppConfigService,\n PageTitleService,\n UserPreferencesService,\n NotificationService,\n StorageService\n} from '@alfresco/adf-core';\nimport { Observable, BehaviorSubject, 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 private notificationService = inject(NotificationService);\n private matDialog = inject(MatDialog);\n private ready: BehaviorSubject<boolean>;\n\n ready$: Observable<boolean>;\n\n private 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 = ['/search'];\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 public preferencesService: UserPreferencesService,\n private authenticationService: AuthenticationService,\n private store: Store<AppStore>,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private config: AppConfigService,\n private pageTitle: PageTitleService,\n private alfrescoApiService: AlfrescoApiService,\n private uploadService: UploadService,\n private routerExtensionService: RouterExtensionService,\n private contentApi: ContentApiService,\n private sharedLinksApiService: SharedLinksApiService,\n private overlayContainer: OverlayContainer,\n searchQueryBuilderService: SearchQueryBuilderService,\n private acaMobileAppSwitcherService: AcaMobileAppSwitcherService,\n private appSettingsService: AppSettingsService,\n private readonly userProfileService: UserProfileService,\n private readonly storage: StorageService\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 if (error.status === 401 && !this.alfrescoApiService.isExcludedErrorListener(error?.response?.req?.url)) {\n if (!this.authenticationService.isLoggedIn()) {\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\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-2025 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 { 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';\n\n@Component({\n imports: [CommonModule, TranslatePipe, MatButtonModule, MatIconModule],\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 @Input()\n hasError = false;\n\n appNavNarMode$: Observable<'collapsed' | 'expanded'>;\n\n constructor(private appService: AppService) {\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 <button *ngIf=\"(appNavNarMode$ | async) === 'collapsed'\"\n mat-icon-button\n class=\"aca-content-header-button\"\n (click)=\"toggleClick()\"\n title=\"{{'APP.TOOLTIPS.EXPAND_NAVIGATION' | translate}}\">\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n <ng-content select=\".aca-page-layout-header, aca-page-layout-header\" />\n</div>\n\n<ng-container *ngIf=\"hasError\">\n <ng-content select=\".aca-page-layout-error, aca-page-layout-error\" />\n</ng-container>\n\n<ng-container *ngIf=\"!hasError\">\n <ng-content select=\".aca-page-layout-content, aca-page-layout-content\" />\n</ng-container>\n","/*!\n * Copyright © 2005-2025 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-2025 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';\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\">{{ '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 public text: string;\n\n ngOnInit(): void {\n this.text = this.node?.entry?.properties?.['cm:lockOwner']?.displayName;\n }\n}\n","/*!\n * Copyright © 2005-2025 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-2025 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 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-2025 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 private _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 _headerActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private _toolbarActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private _viewerToolbarActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private _sharedLinkViewerToolbarActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private _contextMenuActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private _openWithActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private _createActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private _sidebarActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private _badges = new BehaviorSubject<Array<Badge>>([]);\n private _filesDocumentListPreset = new BehaviorSubject<Array<DocumentListPresetRef>>([]);\n private _customMetadataPanels = new BehaviorSubject<Array<ContentActionRef>>([]);\n private _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 public auth: AuthenticationService,\n protected store: Store<AppStore>,\n protected loader: ExtensionLoaderService,\n protected extensions: ExtensionService,\n public permissions: NodePermissionService,\n public appConfig: AppConfigService,\n protected matIconRegistry: MatIconRegistry,\n protected sanitizer: DomSanitizer,\n protected logger: LogService\n ) {\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 let presets = {};\n presets = this.filterDisabled(mergeObjects(presets, ...elements));\n\n const metadata = this.appConfig.config['content-metadata'] || {};\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-2025 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 } 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 { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { IconComponent } from '@alfresco/adf-core';\n\n@Component({\n imports: [CommonModule, 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 @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 constructor(private extensions: AppExtensionService) {}\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","<ng-container [ngSwitch]=\"actionRef.type\">\n <ng-container *ngSwitchCase=\"'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\n <mat-menu #childMenu=\"matMenu\" class=\"app-create-menu__sub-menu\">\n <ng-container *ngFor=\"let child of actionRef.children; trackBy: trackByActionId\">\n <app-toolbar-menu-item [actionRef]=\"child\" />\n </ng-container>\n </mat-menu>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'separator'\">\n <mat-divider />\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'custom'\">\n <adf-dynamic-component [id]=\"actionRef.component\" />\n </ng-container>\n\n <ng-container *ngSwitchDefault>\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 </ng-container>\n</ng-container>\n","/*!\n * Copyright © 2005-2025 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 { AppExtensionService } from '../../../services/app.extension.service';\nimport { ThemePalette } from '@angular/material/core';\nimport { CommonModule } from '@angular/common';\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: [CommonModule, 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 @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 constructor(private extensions: AppExtensionService) {}\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","<ng-container [ngSwitch]=\"data?.buttonType || type\">\n <ng-container *ngSwitchCase=\"'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 </ng-container>\n\n <ng-container *ngSwitchCase=\"'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 <span *ngIf=\"actionRef.title\">{{ actionRef.title | translate }}</span>\n </button>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'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 <span *ngIf=\"actionRef.title\">{{ actionRef.title | translate }}</span>\n </button>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'menu-item'\">\n <app-toolbar-menu-item [actionRef]=\"actionRef\" />\n </ng-container>\n</ng-container>\n","/*!\n * Copyright © 2005-2025 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 { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { IconComponent } from '@alfresco/adf-core';\n\n@Component({\n imports: [CommonModule, 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","<ng-container [ngSwitch]=\"type\">\n <ng-container *ngSwitchCase=\"'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 <span *ngIf=\"actionRef.title\">{{ actionRef.title | translate }}</span>\n </button>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'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 <span *ngIf=\"actionRef.title\">{{ actionRef.title | translate }}</span>\n </button>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'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 <span *ngIf=\"actionRef.title\">{{ actionRef.title | translate }}</span>\n </button>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\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 <adf-icon *ngIf=\"actionRef.icon\" [value]=\"actionRef.icon\" />\n </button>\n </ng-container>\n</ng-container>\n\n<mat-menu #menu=\"matMenu\" [overlapTrigger]=\"false\" [xPosition]=\"'before'\">\n <ng-container *ngFor=\"let child of actionRef.children; trackBy: trackByActionId\">\n <ng-container [ngSwitch]=\"child.type\">\n <ng-container *ngSwitchCase=\"'custom'\">\n <adf-dynamic-component [id]=\"child.component\" [data]=\"child.data\" />\n </ng-container>\n <ng-container *ngSwitchDefault>\n <app-toolbar-menu-item [actionRef]=\"child\" [menuId]=\"actionRef.id\" />\n </ng-container>\n </ng-container>\n </ng-container>\n</mat-menu>\n","/*!\n * Copyright © 2005-2025 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 } 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 { CommonModule } from '@angular/common';\nimport { ToolbarMenuComponent } from '../toolbar-menu/toolbar-menu.component';\n\n@Component({\n imports: [CommonModule, 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 @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 constructor(private cd: ChangeDetectorRef) {}\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","<ng-container [ngSwitch]=\"actionRef.type\">\n <div *ngSwitchCase=\"'default'\">\n <app-toolbar-button [type]=\"type\" [actionRef]=\"actionRef\" [color]=\"color\" />\n </div>\n\n <div *ngSwitchCase=\"'button'\">\n <app-toolbar-button [type]=\"data?.buttonType || type\" [actionRef]=\"actionRef\" [color]=\"color\" [data]=\"actionRef.data\" />\n </div>\n\n <div *ngSwitchCase=\"'separator'\" [id]=\"actionRef.id\" class=\"aca-toolbar-divider\"></div>\n\n <ng-container *ngSwitchCase=\"'menu'\">\n <app-toolbar-menu [actionRef]=\"actionRef\" [color]=\"color\" [data]=\"actionRef.data\" />\n </ng-container>\n\n <div *ngSwitchCase=\"'custom'\">\n <adf-dynamic-component [data]=\"actionRef.data\" [id]=\"actionRef.component\" />\n </div>\n</ng-container>\n","/*!\n * Copyright © 2005-2025 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 { CommonModule } from '@angular/common';\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: [CommonModule, 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 <ng-container *ngFor=\"let item of items; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"item\" />\n </ng-container>\n</mat-toolbar>\n","/*!\n * Copyright © 2005-2025 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 { CommonModule } from '@angular/common';\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';\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\n\n@Component({\n imports: [\n CommonModule,\n TranslatePipe,\n MatProgressBarModule,\n AdfInfoDrawerComponent,\n A11yModule,\n ToolbarComponent,\n DynamicTabComponent,\n InfoDrawerTabComponent\n ],\n selector: 'aca-info-drawer',\n templateUrl: './info-drawer.component.html',\n styleUrl: './info-drawer.component.scss',\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: MAT_FORM_FIELD_DEFAULT_OPTIONS,\n useValue: { appearance: 'fill', floatLabel: 'always' }\n }\n ]\n})\nexport class InfoDrawerComponent implements OnChanges, OnInit, OnDestroy {\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 constructor(\n private store: Store<any>,\n private contentApi: ContentApiService,\n private extensions: AppExtensionService,\n private nodesService: NodesApiService,\n private contentService: ContentService\n ) {}\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","<div *ngIf=\"isLoading\">\n <mat-progress-bar mode=\"indeterminate\" [attr.aria-label]=\"'APP.INFO_DRAWER.DATA_LOADING' | translate\" />\n</div>\n<ng-container *ngIf=\"!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\n <adf-info-drawer-tab *ngFor=\"let tab of tabs\" [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 </adf-info-drawer>\n</ng-container>\n","/*!\n * Copyright © 2005-2025 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-2025 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 } 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 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-2025 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 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-2025 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 { NavigationEnd, Router } from '@angular/router';\nimport { filter, startWith } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class NavigationHistoryService {\n history: string[] = [];\n\n constructor(private router: Router) {}\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-2025 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 {\n DocumentListComponent,\n DocumentListService,\n SearchAiInputState,\n SearchAiService,\n ShareDataRow,\n UploadService\n} from '@alfresco/adf-content-services';\nimport { ShowHeaderMode, UserPreferencesService } 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, isLocked } 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 { NavigationHistoryService } from '../../services/navigation-history.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.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 protected userPreferencesService = inject(UserPreferencesService);\n protected searchAiService = inject(SearchAiService);\n\n protected readonly destroyRef = inject(DestroyRef);\n\n private autoDownloadService = inject(AutoDownloadService, { optional: true });\n private navigationHistoryService = inject(NavigationHistoryService);\n\n protected subscriptions: Subscription[] = [];\n\n private _searchAiInputState: SearchAiInputState = {\n active: false\n };\n\n get searchAiInputState(): SearchAiInputState {\n return this._searchAiInputState;\n }\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 this.searchAiService.toggleSearchAiInput$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((searchAiInputState) => (this._searchAiInputState = searchAiInputState));\n\n this.setKnowledgeRetrievalState();\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) {\n if (isLocked(row.node)) {\n return 'material-icons://lock';\n }\n\n if (isLibrary(row.node)) {\n return 'material-icons://library_books';\n }\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 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 setKnowledgeRetrievalState() {\n const nodes = this.userPreferencesService.get('knowledgeRetrievalNodes');\n if (nodes && this.navigationHistoryService.shouldReturnLastSelection('/knowledge-retrieval')) {\n this.selectedNodesState = JSON.parse(nodes);\n }\n\n if (!this.selectedNodesState && !this.router.url.startsWith('/knowledge-retrieval')) {\n this.searchAiService.updateSearchAiInputState({\n active: false\n });\n }\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-2025 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-2025 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 // 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 execute$: Subject<any> = new Subject();\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(private store: Store<AppStore>) {}\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-2025 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 destroyRef = inject(DestroyRef);\n\n constructor(\n private readonly pagination: PaginationComponent,\n private readonly preferences: UserPreferencesService,\n private readonly config: AppConfigService\n ) {}\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-2025 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-2025 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-2025 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-2025 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-2025 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 { Subject } from 'rxjs';\nimport { 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 * Copyright © 2005-2025 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/alfresco-logo-white.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-2025 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 { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport const noWhitespaceValidator = (): ValidatorFn => {\n return (control: AbstractControl): ValidationErrors | null => {\n const rawValue = control.value;\n if (!rawValue) {\n return null;\n }\n\n const trimmedValue = rawValue.toString().trim();\n return trimmedValue.length === 0 ? { whitespace: true } : null;\n };\n};\n","/*!\n * Copyright © 2005-2025 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\nexport * from './lib/validators/no-whitespace.validator';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i4","i5.RouterExtensionService","i6.ContentApiService","i8.AcaMobileAppSwitcherService","i9.AppSettingsService","i10.UserProfileService","i1.AppService","i4.NodePermissionService","i5","i1.AppExtensionService","i2.ContentApiService","i3.AppExtensionService","i6","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;AAEN,MAAA,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;;AAGjB,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;SAChB,CAAC,CACH;;SACI;AACL,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC;;AAEnB;AAEO,MAAM,YAAY,GAAG,MAAK;IAC/B,OAAO,GAAG,KAAK;AACjB;;ACvEA;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAIH;MASa,0BAA0B,CAAA;IAGrC,UAAU,GAAG,KAAK;wGAHP,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,yOAL3B,CAAgB,cAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,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,CAAgB,cAAA,CAAA;oBAC1B,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,yBAAyB;AACzC,iBAAA;8BAIC,UAAU,EAAA,CAAA;sBAFT;;sBACA,WAAW;uBAAC,sBAAsB;;;ACrCrC;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAIH;MASa,wBAAwB,CAAA;wGAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,oIALzB,CAAgB,cAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,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,CAAgB,cAAA,CAAA;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;wGAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,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;;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;;;AClCD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAuCU,iBAAiB,CAAA;AA6DT,IAAA,GAAA;AACA,IAAA,WAAA;AA7DX,IAAA,SAAS;AACjB,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACvE,OAAO,IAAI,CAAC,SAAS;;AAGf,IAAA,YAAY;AACpB,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QAChF,OAAO,IAAI,CAAC,YAAY;;AAGlB,IAAA,eAAe;AACvB,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACzF,OAAO,IAAI,CAAC,eAAe;;AAGrB,IAAA,aAAa;AACrB,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACnF,OAAO,IAAI,CAAC,aAAa;;AAGnB,IAAA,aAAa;AACrB,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACnF,OAAO,IAAI,CAAC,aAAa;;AAGnB,IAAA,WAAW;AACnB,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QAC7E,OAAO,IAAI,CAAC,WAAW;;AAGjB,IAAA,SAAS;AACjB,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACvE,OAAO,IAAI,CAAC,SAAS;;AAGf,IAAA,UAAU;AAClB,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QAC1E,OAAO,IAAI,CAAC,UAAU;;AAGhB,IAAA,UAAU;AAClB,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QAC1E,OAAO,IAAI,CAAC,UAAU;;AAGhB,IAAA,YAAY;AACpB,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QAChF,OAAO,IAAI,CAAC,YAAY;;IAE1B,WACmB,CAAA,GAAuB,EACvB,WAAmC,EAAA;QADnC,IAAG,CAAA,GAAA,GAAH,GAAG;QACH,IAAW,CAAA,WAAA,GAAX,WAAW;;AAG9B;;;;;;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;;AAGxD;;;;;;AAMG;AACH,IAAA,OAAO,CAAC,MAAc,EAAE,OAAA,GAAe,EAAE,EAAA;AACvC,QAAA,MAAM,QAAQ,GAAG;YACf,OAAO,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,YAAY;SACnF;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;;IAG1D,WAAW,CAAC,MAAc,EAAE,OAAa,EAAA;AACvC,QAAA,MAAM,QAAQ,GAAG;YACf,OAAO,EAAE,CAAC,YAAY,EAAE,qBAAqB,EAAE,MAAM,EAAE,YAAY;SACpE;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,aAAC,EACD,CAAC,KAAK,KAAI;gBACR,MAAM,CAAC,KAAK,CAAC;AACf,aAAC,CACF;SACF,CAAC,CACH;;AAGH;;;;;;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;;AAGnE,IAAA,gBAAgB,CAAC,MAAc,EAAA;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;;IAG3D,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;;AAG9D,IAAA,WAAW,CAAC,MAAc,EAAA;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;;AAG1D,IAAA,gBAAgB,CAAC,MAAc,EAAA;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;;AAGzD;;;;;;AAMG;IACH,SAAS,CAAC,QAAgB,EAAE,OAAoC,EAAA;AAC9D,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;;AAG1D;;;;;;;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;;AAG7E;;;;AAIG;IACH,wBAAwB,GAAA;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,wBAAwB,EAAE,CAAC;;IAG3D,YAAY,CACV,QAAgB,EAChB,IAKC,EAAA;AAED,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;;AAG9D,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,iBAAC,CAAC;AACF,gBAAA,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC;AAC3B;SACF,CAAC,CAAC,CACJ;;AAGH,IAAA,eAAe,CAAC,IAAU,EAAA;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;;IAGxD,oBAAoB,CAAC,QAAgB,EAAE,UAAoB,EAAA;QACzD,OAAO,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,QAAQ,EAAE,UAAU,CAAC;;AAGtE,IAAA,MAAM,CAAC,OAAsB,EAAA;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;;IAG7C,aAAa,CAAC,MAAc,EAAE,UAAoB,EAAA;QAChD,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC;;AAG1D,IAAA,oBAAoB,CAAC,MAAc,EAAE,SAAiB,EAAE,UAAoB,EAAA;AAC1E,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC;;IAG5E,UAAU,CAAC,MAAe,EAAE,IAA8B,EAAA;AACxD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;;AAGrD,IAAA,SAAS,CAAC,MAAe,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;IAGjE,UAAU,CACR,QAAwB,EACxB,IAIC,EAAA;AAED,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;;IAGvD,OAAO,CAAC,MAAe,EAAE,IAA4D,EAAA;AACnF,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;;IAGlD,aAAa,CAAC,MAAc,EAAE,QAAwB,EAAA;AACpD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;;AAGzD,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,SAAC,CAAC;AAEF,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,EAAE,OAAc,CAAC,CAAC;;AAGvE,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;SACpD,CAAC,CACH,CACF;;IAGH,UAAU,CAAC,MAAc,EAAE,IAAU,EAAA;QACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC;;IAG/C,eAAe,CAAC,MAAc,EAAE,IAAU,EAAA;AACxC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;;AAGhE,IAAA,0BAA0B,CAAC,MAAc,EAAA;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;;IAG3D,6BAA6B,CAAC,MAAc,EAAE,SAAiB,EAAA;AAC7D,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;;wGAhT9D,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,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;;4FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;AC5DD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAUU,sBAAsB,CAAA;AAOd,IAAA,MAAA;AACE,IAAA,UAAA;AAPrB,IAAA,QAAQ,GAAG;AACT,QAAA,MAAM,EAAE,iBAAiB;AACzB,QAAA,IAAI,EAAE,CAAC,UAAU,EAAE,gCAAgC;KACpD;IAED,WACmB,CAAA,MAAc,EACZ,UAA4B,EAAA;QAD9B,IAAM,CAAA,MAAA,GAAN,MAAM;QACJ,IAAU,CAAA,UAAA,GAAV,UAAU;;IAG/B,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;;;iBAEzC;AACL,gBAAA,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC;;AAE5C,SAAC,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,mBAAmB,CAAC;;IAG7C,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;aACF;AACH,SAAC,CAAC;;AAGI,IAAA,gBAAgB,CAAC,EAAU,EAAA;QACjC,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;;AAGrC,IAAA,sBAAsB,CAAC,KAAqB,EAAA;AAClD,QAAA,OAAO,KAAK,CAAC,WAAW,KAAK,SAAS;;AAGhC,IAAA,4BAA4B,CAAC,cAA8B,EAAA;QACjE,OAAO,cAAc,CAAC,WAAW;QACjC,OAAO,cAAc,CAAC,SAAS;;AAGzB,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;;wGAzE5B,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,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;;4FAEP,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;AC/BD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAqBU,kBAAkB,CAAA;AAOpB,IAAA,IAAA;AACC,IAAA,MAAA;AAPF,IAAA,WAAW;AACZ,IAAA,WAAW;IACX,MAAM,GAA+B,MAAM;IAElD,WAES,CAAA,IAA4B,EAC3B,MAAwC,EAAA;QADzC,IAAI,CAAA,IAAA,GAAJ,IAAI;QACH,IAAM,CAAA,MAAA,GAAN,MAAM;QAEd,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;AACnC,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;;;IAIvC,SAAS,GAAA;QACP,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW;;IAG9C,cAAc,GAAA;QACZ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW;;IAG9C,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;;AA3BV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,kBAMnB,eAAe,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AANd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EC3C/B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,khCAsBA,EDeY,MAAA,EAAA,CAAA,gvCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,aAAa,EAAE,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,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,EAAA,UAAU,8BAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,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,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAMvF,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,CAAC,EAAA,QAAA,EACzF,iBAAiB,EAGZ,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,khCAAA,EAAA,MAAA,EAAA,CAAA,gvCAAA,CAAA,EAAA;;0BAQlC,MAAM;2BAAC,eAAe;;;AEjD3B;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAUU,2BAA2B,CAAA;AAC/B,IAAA,WAAW;AACV,IAAA,SAAS;AACT,IAAA,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACjC,IAAA,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;AAElC,IAAA,IAAI,WAAW,GAAA;QACb,MAAM,YAAY,GAAG,sEAAsE;QAC3F,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAS,6BAA6B,EAAE,YAAY,CAAC;;AAG7E,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAS,gCAAgC,EAAE,EAAE,CAAC;;AAGtE,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;;AAGrB,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;;IAG9B,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;;QAEtH,IAAI,CAAC,UAAU,EAAE;YACf,IAAI,CAAC,4BAA4B,EAAE;;;IAIvC,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;;;aAEpC;YACL,IAAI,CAAC,gCAAgC,EAAE;;;IAI3C,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;;AACnD,aAAA,IAAI,SAAS,KAAK,IAAI,EAAE;YAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC;;AAG3D,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;;;IAIvD,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;;;IAIN,sBAAsB,GAAA;AACpB,QAAA,cAAc,CAAC,UAAU,CAAC,gCAAgC,CAAC;;IAG7D,aAAa,GAAA;AACX,QAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI;;IAG7B,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACtB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;;;wGApGd,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,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;;4FAEP,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;AC/BD;;;;;;;;;;;;;;;;;;;;;;AAsBG;AASU,MAAA,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;AACrB,IAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAE5C;;AAEG;AACH,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,uBAAuB,EAAE,EAAE,CAAC;;AAGhE;;AAEG;AACH,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,SAAS,CAAC;;AAG9C;;;AAGG;AACH,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,aAAa,EAAE,iBAAiB,CAAC;;AAGrE;;AAEG;AACH,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAqB,WAAW,EAAE,gBAAgB,CAAC;;AAG9E;;AAEG;AACH,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,kBAAkB,EAAE,8BAA8B,CAAC;;AAGvF;;AAEG;AACH,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,qBAAqB,EAAE,OAAO,CAAC;;AAGnE;;AAEG;AACH,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,kBAAkB,EAAE,4BAA4B,CAAC;;AAGrF;;AAEG;AACH,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,eAAe,EAAE,EAAE,CAAC;;AAGxD;;AAEG;AACH,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,aAAa,EAAE,EAAE,CAAC;;AAGtD;;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;;AAEf,QAAA,OAAO,MAAM;;AAGf;;AAEG;AACH,IAAA,IAAI,yBAAyB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,4BAA4B,EAAE,mBAAmB,CAAC,KAAK,CAAC;;AAGpF;;AAEG;AACH,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,mBAAmB,EAAE,CAAC,CAAC;;AAG3D;;AAEG;AACH,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAU,mCAAmC,EAAE,IAAI,CAAC;;AAG/E;;AAEG;AACH,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAU,mCAAmC,EAAE,IAAI,CAAC;;AAG/E;;AAEG;AACH,IAAA,IAAI,+BAA+B,GAAA;QACjC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAU,uCAAuC,EAAE,IAAI,CAAC;;AAGnF;;AAEG;AACH,IAAA,IAAI,gCAAgC,GAAA;QAClC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAU,wCAAwC,EAAE,IAAI,CAAC;;AAGpF;;AAEG;AACH,IAAA,IAAI,yBAAyB,GAAA;QAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAU,iCAAiC,EAAE,IAAI,CAAC;;AAG7E;;AAEG;AACH,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAU,+BAA+B,EAAE,IAAI,CAAC;;AAG3E;;AAEG;AACH,IAAA,IAAI,qBAAqB,GAAA;QACvB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,0CAA0C,EAAE,EAAE,CAAC;;wGA1IxE,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,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;;4FACnB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;AC5BlC;;;;;;;;;;;;;;;;;;;;;;AAsBG;MASU,kBAAkB,CAAA;AACrB,IAAA,GAAG,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAChC,IAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AAE3C,IAAA,IAAY,SAAS,GAAA;QACnB,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;;AAGtC,IAAA,WAAW,GAAG,IAAI,eAAe,CAAe,IAAI,CAAC;AAC7D,IAAA,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;AAE9C;;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;;AAGvD,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,CAAI,CAAA,EAAA,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;;wGA9CL,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,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;;4FACnB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;AC9BlC;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAoCH;MACa,UAAU,CAAA;AA0BZ,IAAA,kBAAA;AACC,IAAA,qBAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,cAAA;AACA,IAAA,MAAA;AACA,IAAA,SAAA;AACA,IAAA,kBAAA;AACA,IAAA,aAAA;AACA,IAAA,sBAAA;AACA,IAAA,UAAA;AACA,IAAA,qBAAA;AACA,IAAA,gBAAA;AAEA,IAAA,2BAAA;AACA,IAAA,kBAAA;AACS,IAAA,kBAAA;AACA,IAAA,OAAA;AA1CX,IAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC7B,IAAA,KAAK;AAEb,IAAA,MAAM;AAEE,IAAA,WAAW,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC;;AAE7C,IAAA,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;AAE9C,IAAA,cAAc,GAAsC,IAAI,eAAe,CAAC,UAAU,CAAC;AACnF,IAAA,gBAAgB,GAAG,IAAI,OAAO,EAAQ;AAEtC,IAAA,qBAAqB,GAAG,CAAC,WAAW,CAAC;AACrC,IAAA,yBAAyB,GAAG,CAAC,SAAS,CAAC;AAEvC;;;AAGG;AACH,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAU,sBAAsB,EAAE,KAAK,CAAC;;AAGhE,IAAA,WAAA,CACS,kBAA0C,EACzC,qBAA4C,EAC5C,KAAsB,EACtB,MAAc,EACd,cAA8B,EAC9B,MAAwB,EACxB,SAA2B,EAC3B,kBAAsC,EACtC,aAA4B,EAC5B,sBAA8C,EAC9C,UAA6B,EAC7B,qBAA4C,EAC5C,gBAAkC,EAC1C,yBAAoD,EAC5C,2BAAwD,EACxD,kBAAsC,EAC7B,kBAAsC,EACtC,OAAuB,EAAA;QAjBjC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;QACjB,IAAqB,CAAA,qBAAA,GAArB,qBAAqB;QACrB,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;QAClB,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB;QACtB,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAqB,CAAA,qBAAA,GAArB,qBAAqB;QACrB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAEhB,IAA2B,CAAA,2BAAA,GAA3B,2BAA2B;QAC3B,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;QACT,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;QAClB,IAAO,CAAA,OAAA,GAAP,OAAO;AAExB,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,SAAC,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,SAAC,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,SAAC,CAAC;;IAGN,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAwC,KAAI;YAC7F,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;gBACvG,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,EAAE;AAC5C,oBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AAEzB,oBAAA,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC;oBACzE,IAAI,CAAC,WAAW,EAAE;AAChB,wBAAA,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG;;oBAG/B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE;wBAC/B,WAAW,EAAE,EAAE,WAAW;AAC3B,qBAAA,CAAC;;;AAGR,SAAC,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,SAAC,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,SAAC,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;;AAEnD,SAAC,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,iBAAC,CAAC;;AAEN,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;;AAG5E,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;;IAG7D,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;;AAE/E,SAAC,CAAC;;AAGI,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;;AAGxD,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;;QAG3C,IAAI,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG,EAAE;YAChC,OAAO,GAAG,+BAA+B;;QAG3C,IAAI,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG,EAAE;YAChC,OAAO,GAAG,oCAAoC;;QAGhD,IAAI,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG,EAAE;YAChC,OAAO,GAAG,+BAA+B;;QAG3C,IAAI,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG,EAAE;YAChC,OAAO,GAAG,+BAA+B;;AAG3C,QAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,OAAO,CAAC;;IAGrC,aAAa,GAAA;AACnB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa;QAC3D,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;;;IAI1B,iBAAiB,GAAA;AACvB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW;QACvD,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;;;AAIxB,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;;IAGpC,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;;aACtD;AACL,YAAA,IAAI,CAAC,2BAA2B,CAAC,sBAAsB,EAAE;;;wGApMlD,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAV,IAAA,OAAA,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;;4FAGP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAJtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACzDD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAmBU,mBAAmB,CAAA;AAMV,IAAA,UAAA;IAJpB,QAAQ,GAAG,KAAK;AAEhB,IAAA,cAAc;AAEd,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAU,CAAA,UAAA,GAAV,UAAU;AAC5B,QAAA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;;IAG5E,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,EAAE;;wGAX9B,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAnB,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,ECzChC,irBAkBA,EDgBY,MAAA,EAAA,CAAA,g0CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,mLAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,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,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAO1D,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAR/B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,CAAC,EAAA,QAAA,EAC5D,iBAAiB,EAGZ,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAA,QAAA,EAAA,irBAAA,EAAA,MAAA,EAAA,CAAA,g0CAAA,CAAA,EAAA;4EAIlC,QAAQ,EAAA,CAAA;sBADP;;;AE1CH;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAYU,gBAAgB,CAAA;wGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAHjB,OAAA,EAAA,CAAA,mBAAmB,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,yBAAyB,CAAA,EAAA,OAAA,EAAA,CACpG,0BAA0B,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,mBAAmB,CAAA,EAAA,CAAA;AAEnG,IAAA,OAAA,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;;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;MAsBU,iBAAiB,CAAA;AAE5B,IAAA,IAAI;AAEG,IAAA,IAAI;IAEX,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,GAAG,cAAc,CAAC,EAAE,WAAW;;wGAP9D,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAZlB,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,EAAA;;;;GAIT,EANS,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,uPAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,aAAa,iDAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,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,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAc3B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAf7B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,aAAa,EAAE,aAAa,CAAC,EAAA,QAAA,EAC7B,eAAe,EACf,QAAA,EAAA;;;;AAIT,EAAA,CAAA,EAAA,eAAA,EAEgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAC/B,IAAA,EAAA;AACJ,wBAAA,KAAK,EAAE;AACR,qBAAA,EAAA,MAAA,EAAA,CAAA,uPAAA,CAAA,EAAA;8BAID,IAAI,EAAA,CAAA;sBADH;;;AC7CH;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAeU,qBAAqB,CAAA;IAEhC,IAAI,GAAG,qCAAqC;wGAFjC,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,ECrClC,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,EAAA,gIAIA,EDyBY,MAAA,EAAA,CAAA,4TAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,iLAAE,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;;4FAQ3B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBATjC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,aAAa,EAAE,aAAa,CAAC,EAC7B,QAAA,EAAA,mBAAmB,iBAGd,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAA,QAAA,EAAA,gIAAA,EAAA,MAAA,EAAA,CAAA,4TAAA,CAAA,EAAA;8BAIpC,IAAI,EAAA,CAAA;sBADH;;;AEtCH;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAgBU,qBAAqB,CAAA;AAChC,IAAA,OAAgB,iBAAiB,GAAG,IAAI;AAEhC,IAAA,cAAc,GAAsB;QAC1C,SAAS,EAAE,qBAAqB,CAAC,iBAAiB;AAClD,QAAA,MAAM,EAAE;KACT;AAED,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;;AAGd,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;;AAEjF,YAAA,OAAO,KAAK;;aACP;YACL,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC;;;AAIrD,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;;iBAC5E;AACL,gBAAA,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;;;AAItF,QAAA,OAAO,KAAK;;IAGN,sBAAsB,CAAC,IAAsB,EAAE,QAAiB,EAAA;AACtE,QAAA,IAAI,KAAwB;AAE5B,QAAA,IAAI,OAAO,IAAI,IAAI,EAAE;AACnB,YAAA,KAAK,GAAG,IAAI,CAAC,KAAK;;aACb;YACL,KAAK,GAAG,IAAI;;QAGd,IAAI,QAAQ,EAAE;AACZ,YAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE;;AAG9B,QAAA,IAAI,6BAA6B,IAAI,KAAK,EAAE;AAC1C,YAAA,OAAO,KAAK,CAAC,2BAA2B,IAAI,EAAE;;aACzC;AACL,YAAA,OAAO,KAAK,CAAC,mBAAmB,IAAI,EAAE;;;wGAzD/B,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAArB,IAAA,OAAA,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;;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,SAAC;KACF;AACH;MAKa,mBAAmB,CAAA;AAwDrB,IAAA,IAAA;AACG,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,UAAA;AACH,IAAA,WAAA;AACA,IAAA,SAAA;AACG,IAAA,eAAA;AACA,IAAA,SAAA;AACA,IAAA,MAAA;AA/DJ,IAAA,WAAW,GAAG,IAAI,eAAe,CAAiB,EAAE,CAAC;AAC7D,IAAA,mBAAmB,GAAG,IAAI,OAAO,EAAQ;IAEzC,MAAM,GAA0B,EAAE;IAClC,WAAW,GAAyB,EAAE;AACtC,IAAA,eAAe;AACf,IAAA,MAAM;IACN,WAAW,GAAgB,EAAE;AAErB,IAAA,cAAc,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AACjE,IAAA,eAAe,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AAClE,IAAA,qBAAqB,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AACxE,IAAA,+BAA+B,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AAClF,IAAA,mBAAmB,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AACtE,IAAA,gBAAgB,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AACnE,IAAA,cAAc,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AACjE,IAAA,eAAe,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AAClE,IAAA,OAAO,GAAG,IAAI,eAAe,CAAe,EAAE,CAAC;AAC/C,IAAA,wBAAwB,GAAG,IAAI,eAAe,CAA+B,EAAE,CAAC;AAChF,IAAA,qBAAqB,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AACxE,IAAA,YAAY,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AACtD,IAAA,oBAAoB,GAAG,IAAI,eAAe,CAA4B,EAAE,CAAC;AAE1F,IAAA,mBAAmB,GASf;AACF,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,iBAAiB,EAAE,EAAE;AACrB,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,eAAe,EAAE,EAAE;AACnB,QAAA,aAAa,EAAE;KAChB;AAED,IAAA,SAAS;AACT,IAAA,UAAU;AACV,IAAA,OAAO;AACP,IAAA,UAAU;AACV,IAAA,eAAe;AAEf,IAAA,WAAW;AACX,IAAA,wBAAwB,GAAwC,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE;AAE5G,IAAA,MAAM;AAEN,IAAA,WAAA,CACS,IAA2B,EACxB,KAAsB,EACtB,MAA8B,EAC9B,UAA4B,EAC/B,WAAkC,EAClC,SAA2B,EACxB,eAAgC,EAChC,SAAuB,EACvB,MAAkB,EAAA;QARrB,IAAI,CAAA,IAAA,GAAJ,IAAI;QACD,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAU,CAAA,UAAA,GAAV,UAAU;QACb,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAS,CAAA,SAAA,GAAT,SAAS;QACN,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAM,CAAA,MAAA,GAAN,MAAM;QAEhB,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;;AAE3B,SAAC,CAAC;;AAGJ,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;;AAGzB,IAAA,KAAK,CAAC,MAAuB,EAAA;QAC3B,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC;YACtD;;AAGF,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,SAAC,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;;AAG3E,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;;AAGzB,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,CAA2B,wBAAA,EAAA,IAAI,CAAC,EAAE,CAAI,EAAA,CAAA,CAAC;;AACnD,iBAAA,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE;AACrB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,yBAAA,CAA2B,CAAC;;iBACxC;AACL,gBAAA,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC;;;;AAKpG,IAAA,UAAU,CAAC,MAAuB,EAAA;QAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAiB,MAAM,EAAE,iBAAiB,CAAC;;IAGjE,qBAAqB,CAAC,MAAuB,EAAE,GAAW,EAAA;QAClE,OAAO,IAAI,CAAC;AACT,aAAA,WAAW,CAAwB,MAAM,EAAE,CAAyB,sBAAA,EAAA,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,SAAC;aACA,IAAI,CAAC,WAAW,CAAC;;AAGtB,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;;AAGH,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;;wBAGH,OAAO;AACL,4BAAA,GAAG,KAAK;4BACR,MAAM,EAAE,KAAK,CAAC;yBACf;AACH,qBAAC,CAAC;oBAEJ,OAAO;AACL,wBAAA,GAAG;qBACJ;;AAGH,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,oBAAA,OAAO,EAAE,GAAG,IAAI,EAAE;;AAGpB,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;;gBAGH,OAAO;AACL,oBAAA,GAAG,IAAI;oBACP,MAAM,EAAE,IAAI,CAAC;iBACd;AACH,aAAC;AACA,iBAAA,MAAM,CAAC,gBAAgB,EAAE,EAAE;AAC/B,SAAA,CAAC,CAAC;;AAGP,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;;QAGb,IAAI,OAAO,GAAG,EAAE;AAChB,QAAA,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC;AAEjE,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE;AAChE,QAAA,QAAQ,CAAC,OAAO,GAAG,OAAO;QAE1B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC,GAAG,QAAQ;QACpD,OAAO,EAAE,OAAO,EAAE;;AAGpB,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;;AAGb,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;;AAGf,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;;AAClF,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,iBAAC,CAAC;AACF,gBAAA,OAAO,MAAM;;;aAEV;AACL,YAAA,OAAO,MAAM;;;IAIjB,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;;AAGhE,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;;QAGtE,OAAO;AACL,YAAA,GAAG,MAAM;YACT;SACD;;IAGH,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;;IAGnG,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;;AAGH,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;;IAGnH,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;;AAGlI,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;;AAGzH,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;;AAGjC,QAAA,OAAO,SAAS;;AAGV,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;;AAEjC,gBAAA,OAAO,IAAI;;AAEb,YAAA,OAAO,MAAM;AACf,SAAC;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;;IAGjC,wBAAwB,GAAA;QACtB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC;;IAGnG,wBAAwB,GAAA;QACtB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC;;IAGnG,uBAAuB,GAAA;QACrB,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,oBAAoB,KAAK,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC,CAAC;;IAGrH,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;;IAG1F,kBAAkB,GAAA;QAChB,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,eAAe,KAAK,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAAC;;IAGtG,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;;IAGH,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;;AAEjC,gBAAA,OAAO,IAAI;;AAGb,YAAA,OAAO,MAAM;AACf,SAAC;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;;IAGH,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;;AAGhJ,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;;AAGH,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;;AAEvF,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;;AAEjE,QAAA,OAAO,IAAI;;AAGb,IAAA,yBAAyB,CAAC,SAAc,EAAA;QACtC,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,SAAS,CAAC,QAAQ,EAAE;AACtB,gBAAA,OAAO,IAAI;;AAGb,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;;;AAIvE,QAAA,OAAO,KAAK;;IAGd,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;;aACG;AACL,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AAClB,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,aAAa,EAAE;AAChB,aAAA,CAAC;;;;AAKN,IAAA,aAAa,CAAC,MAAc,EAAA;AAC1B,QAAA,OAAO,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;;;AAIhD,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;;aACpG;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YAC3C,IAAI,SAAS,EAAE;AACb,gBAAA,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;;;AAGjC,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;;AAGrE,QAAA,OAAO,KAAK;;AAGd,IAAA,YAAY,CAAC,GAAW,EAAA;QACtB,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC;;AAG1C,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;;;AAIhB,QAAA,OAAO,IAAI;;AAGb,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;;;AAIhB,QAAA,OAAO,IAAI;;IAGb,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;;AAGjC,IAAA,kBAAkB,CAAC,OAAe,EAAA;QAChC,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC;;wGAlhBzC,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAQ,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,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;;4FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACvED;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAmBU,wBAAwB,CAAA;AAYf,IAAA,UAAA;AAVpB,IAAA,SAAS;AAET,IAAA,MAAM;AAGN,IAAA,QAAQ;AAGR,IAAA,gBAAgB;AAEhB,IAAA,WAAA,CAAoB,UAA+B,EAAA;QAA/B,IAAU,CAAA,UAAA,GAAV,UAAU;;IAE9B,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,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAE;AAC9F;kBACD,SAAS,CACd;;;IAIL,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,QAAQ,EAAE;YACnC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ;;;AAI1C,IAAA,cAAc,CAAC,SAA2B,EAAA;AAChD,QAAA,OAAO,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK;;IAGpC,eAAe,CAAC,CAAS,EAAE,GAAqB,EAAA;QAC9C,OAAO,GAAG,CAAC,EAAE;;wGAtCJ,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,oOAMxB,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGX,yBAAyB,EClDtC,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,6+CAsCA,0MDGa,wBAAwB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAPzB,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,aAAa,iDAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,EAAE,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,EAAA,aAAa,qGAAE,yBAAyB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAOrG,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,SAAS;8BACC,CAAC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,yBAAyB,CAAC,EACvG,QAAA,EAAA,uBAAuB,EAGlB,aAAA,EAAA,iBAAiB,CAAC,IAAI,QAC/B,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAA,QAAA,EAAA,6+CAAA,EAAA,MAAA,EAAA,CAAA,kJAAA,CAAA,EAAA;qFAIxC,SAAS,EAAA,CAAA;sBADR;gBAGD,MAAM,EAAA,CAAA;sBADL;gBAID,QAAQ,EAAA,CAAA;sBADP,SAAS;uBAAC,WAAW;gBAItB,gBAAgB,EAAA,CAAA;sBADf,SAAS;uBAAC,yBAAyB;;;AElDtC;;;;;;;;;;;;;;;;;;;;;;AAsBG;IAYS;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,GAK5B,EAAA,CAAA,CAAA;MASY,sBAAsB,CAAA;AAgBb,IAAA,UAAA;AAdpB,IAAA,IAAI;AAMJ,IAAA,IAAI,GAAsB,iBAAiB,CAAC,WAAW;AAGvD,IAAA,KAAK;AAGL,IAAA,SAAS;AAET,IAAA,WAAA,CAAoB,UAA+B,EAAA;QAA/B,IAAU,CAAA,UAAA,GAAV,UAAU;;IAE9B,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,CAAE;AACpG,aAAA,CAAC;;;AAIE,IAAA,cAAc,CAAC,SAA2B,EAAA;AAChD,QAAA,OAAO,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK;;wGA3BzB,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAS,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAtB,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,EChDnC,opDA+CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDLY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,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,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAMpF,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;8BACC,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,wBAAwB,EAAE,aAAa,CAAC,YACtF,oBAAoB,EAAA,aAAA,EAEf,iBAAiB,CAAC,IAAI,QAC/B,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAA,QAAA,EAAA,opDAAA,EAAA;qFAIrC,IAAI,EAAA,CAAA;sBADH;gBAOD,IAAI,EAAA,CAAA;sBADH;gBAID,KAAK,EAAA,CAAA;sBADJ;gBAID,SAAS,EAAA,CAAA;sBADR;;;AE7DH;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAmBU,oBAAoB,CAAA;AAE/B,IAAA,SAAS;AAGT,IAAA,KAAK;AAGL,IAAA,UAAU;AAGV,IAAA,IAAI;AAGJ,IAAA,gBAAgB;AAGhB,IAAA,0BAA0B;AAG1B,IAAA,IAAI;IAKJ,IAAI,GAAG,SAAS;IAGhB,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;;IAG7B,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,SAAS;;IAG9C,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;;AAE/C,SAAC,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;;;iBAE/B;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;;;AAG1C,SAAC,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;;IAGhC,eAAe,CAAC,CAAS,EAAE,GAAqB,EAAA;QAC9C,OAAO,GAAG,CAAC,EAAE;;wGAvEJ,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAUpB,OAAO,EAGJ,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,wBAAwB,gFAGxB,yBAAyB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzDzC,mvFA0EA,EDvCY,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,ugBAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,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,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,yBAAyB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAM9H,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;8BACC,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,wBAAwB,EAAE,aAAa,EAAE,yBAAyB,CAAC,EAAA,QAAA,EAChI,kBAAkB,EAAA,aAAA,EAEb,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAA,QAAA,EAAA,mvFAAA,EAAA;8BAInC,SAAS,EAAA,CAAA;sBADR;gBAID,KAAK,EAAA,CAAA;sBADJ;gBAID,UAAU,EAAA,CAAA;sBADT,SAAS;uBAAC,YAAY;gBAIvB,IAAI,EAAA,CAAA;sBADH,SAAS;uBAAC,OAAO;gBAIlB,gBAAgB,EAAA,CAAA;sBADf,YAAY;uBAAC,wBAAwB;gBAItC,0BAA0B,EAAA,CAAA;sBADzB,YAAY;uBAAC,yBAAyB;gBAIvC,IAAI,EAAA,CAAA;sBADH;gBASD,mBAAmB,EAAA,CAAA;sBADlB,YAAY;uBAAC,yBAAyB;;;AEpEzC;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAkBU,sBAAsB,CAAA;AAgBb,IAAA,EAAA;AAdpB,IAAA,IAAI;AAMJ,IAAA,IAAI,GAAsB,iBAAiB,CAAC,WAAW;AAGvD,IAAA,KAAK;AAGL,IAAA,SAAS;AAET,IAAA,WAAA,CAAoB,EAAqB,EAAA;QAArB,IAAE,CAAA,EAAA,GAAF,EAAE;;;;IAItB,SAAS,GAAA;QACP,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;AAC5C,YAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;;wGAtBf,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAtB,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,ECxCnC,uwBAmBA,EDaY,MAAA,EAAA,CAAA,gKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,2NAAE,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,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,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;;4FAQpF,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBATlC,SAAS;8BACC,CAAC,YAAY,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,yBAAyB,CAAC,EAAA,QAAA,EACtF,oBAAoB,EAAA,aAAA,EAGf,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,QACzC,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAA,QAAA,EAAA,uwBAAA,EAAA,MAAA,EAAA,CAAA,gKAAA,CAAA,EAAA;sFAIrC,IAAI,EAAA,CAAA;sBADH;gBAOD,IAAI,EAAA,CAAA;sBADH;gBAID,KAAK,EAAA,CAAA;sBADJ;gBAID,SAAS,EAAA,CAAA;sBADR;;;AErDH;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAeU,gBAAgB,CAAA;AACA,IAAA,KAAK;IAEhC,eAAe,CAAC,CAAS,EAAE,MAAwB,EAAA;QACjD,OAAO,MAAM,CAAC,EAAE;;wGAJP,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,mGCrC7B,oMAKA,EAAA,MAAA,EAAA,CAAA,0SAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED2BY,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,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;;4FAKrD,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;+BACE,aAAa,EAAA,OAAA,EACd,CAAC,YAAY,EAAE,sBAAsB,EAAE,gBAAgB,CAAC,EAAA,aAAA,EAGlD,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,oMAAA,EAAA,MAAA,EAAA,CAAA,0SAAA,CAAA,EAAA;8BAGV,KAAK,EAAA,CAAA;sBAA/B,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;AEtC3B;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAyCU,mBAAmB,CAAA;AAuBpB,IAAA,KAAA;AACA,IAAA,UAAA;AACA,IAAA,UAAA;AACA,IAAA,YAAA;AACA,IAAA,cAAA;AAzBV,IAAA,MAAM;AAGN,IAAA,IAAI;IAEJ,SAAS,GAAG,KAAK;AACjB,IAAA,WAAW;IACX,IAAI,GAAyB,EAAE;IAC/B,OAAO,GAA4B,EAAE;IAErC,kBAAkB,GAAG,KAAK;IAC1B,IAAI,GAAW,IAAI;IAGnB,qBAAqB,GAAA;QACnB,IAAI,CAAC,KAAK,EAAE;;AAGG,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAEhD,WACU,CAAA,KAAiB,EACjB,UAA6B,EAC7B,UAA+B,EAC/B,YAA6B,EAC7B,cAA8B,EAAA;QAJ9B,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAc,CAAA,cAAA,GAAd,cAAc;;IAGxB,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,SAAC,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,SAAC,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,SAAC,CAAC;;IAGJ,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,wBAAwB,CAAC,KAAK,CAAC,CAAC;;;IAI5D,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;;AAGvC,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;;;IAIxB,KAAK,GAAA;QACX,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,sBAAsB,EAAE,CAAC;;AAG3C,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,aAAC,EACD,OAAO,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAC/B;;;AAIG,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;;wGA3FxC,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAa,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAPnB,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,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,8BAA8B;gBACvC,QAAQ,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ;AACrD;AACF,SAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7DH,wrBAYA,ED+BI,MAAA,EAAA,CAAA,glBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,aAAa,iDACb,oBAAoB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpBC,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,EACtB,UAAU,EACV,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,EAChB,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mBAAmB,oFACnB,sBAAsB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAab,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAtB/B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA;wBACP,YAAY;wBACZ,aAAa;wBACb,oBAAoB;wBACpBA,qBAAsB;wBACtB,UAAU;wBACV,gBAAgB;wBAChB,mBAAmB;wBACnB;AACD,qBAAA,EAAA,QAAA,EACS,iBAAiB,EAAA,aAAA,EAGZ,iBAAiB,CAAC,IAAI,EAC1B,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,8BAA8B;4BACvC,QAAQ,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ;AACrD;AACF,qBAAA,EAAA,QAAA,EAAA,wrBAAA,EAAA,MAAA,EAAA,CAAA,glBAAA,CAAA,EAAA;mMAID,MAAM,EAAA,CAAA;sBADL;gBAID,IAAI,EAAA,CAAA;sBADH,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAYzB,qBAAqB,EAAA,CAAA;sBADpB,YAAY;uBAAC,gBAAgB;;;AE9EhC;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAImB,uBAAuB,CAAA;AAG5C;;AC7BD;;;;;;;;;;;;;;;;;;;;;;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;;SAChI;AACL,QAAA,OAAO,KAAK;;AAEhB;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;;SAC/G;AACL,QAAA,OAAO,KAAK;;AAEhB;;AC5CA;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAOH,MAAM,4BAA4B,GAAG,OAAO;MAK/B,mBAAmB,CAAA;AACtB,IAAA,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;IAE1B,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;;AAGzC;;;;;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;;AAGb,QAAA,OAAO,KAAK;;wGAtBH,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,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;;4FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACjCD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAQU,wBAAwB,CAAA;AAGf,IAAA,MAAA;IAFpB,OAAO,GAAa,EAAE;AAEtB,IAAA,WAAA,CAAoB,MAAc,EAAA;QAAd,IAAM,CAAA,MAAA,GAAN,MAAM;;IAE1B,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;;AAGH,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;;AAI1F,IAAA,UAAU,CAAC,KAAoB,EAAA;QAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;;wGAxBjC,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAhB,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,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;;4FACnB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;AC7BlC;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAmCH;MAEsB,aAAa,CAAA;AAEjC,IAAA,YAAY;IAEZ,KAAK,GAAG,MAAM;AACd,IAAA,iBAAiB;AACjB,IAAA,IAAI;AACJ,IAAA,SAAS;IACT,OAAO,GAA4B,EAAE;IACrC,oBAAoB,GAA4B,EAAE;IAClD,WAAW,GAAuB,EAAE;IACpC,aAAa,GAAG,KAAK;IACrB,SAAS,GAAG,KAAK;AACjB,IAAA,UAAU;AACV,IAAA,UAAU,GAAG,cAAc,CAAC,IAAI;IAChC,aAAa,GAAG,UAAU;IAC1B,aAAa,GAAuB,EAAE;IACtC,aAAa,GAAG,KAAK;IACrB,qBAAqB,GAAG,CAAC;AACzB,IAAA,kBAAkB;AAER,IAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,IAAA,QAAQ,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACrC,IAAA,UAAU,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACxC,IAAA,OAAO,GAAG,MAAM,CAAC,uBAAuB,CAAC;AACzC,IAAA,KAAK,GAAG,MAAM,EAAkB,KAAe,EAAC;AAChD,IAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC/C,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,IAAA,sBAAsB,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACvD,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AAEhC,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAE1C,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACrE,IAAA,wBAAwB,GAAG,MAAM,CAAC,wBAAwB,CAAC;IAEzD,aAAa,GAAmB,EAAE;AAEpC,IAAA,mBAAmB,GAAuB;AAChD,QAAA,MAAM,EAAE;KACT;AAED,IAAA,IAAI,kBAAkB,GAAA;QACpB,OAAO,IAAI,CAAC,mBAAmB;;IAGjC,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,SAAC,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,SAAC,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,SAAC,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,SAAC,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,SAAC,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,SAAC,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,SAAC,CAAC;QAEJ,IAAI,CAAC,eAAe,CAAC;AAClB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,kBAAkB,MAAM,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC,CAAC;QAErF,IAAI,CAAC,0BAA0B,EAAE;;AAGnC,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,UAAU,EAAE,YAAY,EAAE;YACpC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY;;;IAIrD,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;;IAGrD,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;;qBACvC;AACL,oBAAA,EAAE,GAAI,IAAY,CAAC,KAAK,CAAC,MAAM,IAAK,IAAY,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;;AAG9E,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;;;;AAKzD,IAAA,2BAA2B,CAAC,KAAa,EAAA;AACvC,QAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK;;IAGpC,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI;;AAGxC,IAAA,aAAa,CAAC,GAAiB,EAAA;QAC7B,IAAI,GAAG,EAAE;AACP,YAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACtB,gBAAA,OAAO,uBAAuB;;AAGhC,YAAA,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACvB,gBAAA,OAAO,gCAAgC;;;AAI3C,QAAA,OAAO,IAAI;;AAGb,IAAA,MAAM,CAAC,YAAwB,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;YAC7B;;AAGF,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;;;IAInE,eAAe,CAAC,CAAS,EAAE,MAAwB,EAAA;QACjD,OAAO,MAAM,CAAC,EAAE;;IAGlB,SAAS,CAAC,CAAS,EAAE,GAAmB,EAAA;QACtC,OAAO,GAAG,CAAC,EAAE;;IAGf,eAAe,CAAC,CAAS,EAAE,GAA0B,EAAA;QACnD,OAAO,GAAG,CAAC,EAAE;;IAGP,0BAA0B,GAAA;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,yBAAyB,CAAC;QACxE,IAAI,KAAK,IAAI,IAAI,CAAC,wBAAwB,CAAC,yBAAyB,CAAC,sBAAsB,CAAC,EAAE;YAC5F,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;;AAG7C,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE;AACnF,YAAA,IAAI,CAAC,eAAe,CAAC,wBAAwB,CAAC;AAC5C,gBAAA,MAAM,EAAE;AACT,aAAA,CAAC;;;IAIE,kBAAkB,GAAA;QACxB,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;;AAI9C,IAAA,gBAAgB,CAAC,KAAU,EAAA;AACzB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS;;wGAxMlD,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,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;;4FADZ,aAAa,EAAA,UAAA,EAAA,CAAA;kBADlC;8BAGC,YAAY,EAAA,CAAA;sBADX,SAAS;uBAAC,qBAAqB;gBAsMhC,gBAAgB,EAAA,CAAA;sBADf,YAAY;uBAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC;;;ACjQ7C;;;;;;;;;;;;;;;;;;;;;;AAsBG;;ACtBH;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAeU,uBAAuB,CAAA;AA0Bd,IAAA,KAAA;;IAvBpB,OAAO,GAAG,IAAI;IAGd,aAAa,GAAuB,EAAE;AAGtC,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;;;;;AAM3B,IAAA,QAAQ,GAAiB,IAAI,OAAO,EAAE;AAE7B,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEhD,IAAA,WAAA,CAAoB,KAAsB,EAAA;QAAtB,IAAK,CAAA,KAAA,GAAL,KAAK;;IAEzB,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;;iBAChE;gBACL,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;;AAE/C,SAAC,CAAC;;IAEJ,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;;AAG/C,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;AAC7B,YAAA,OAAO,IAAI;;AAGb,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGnB,IAAA,SAAS,CAAC,KAAiB,EAAA;AACjC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAiB;QACtC,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,oBAAoB,CAAC;;AAGhD,IAAA,UAAU,CAAC,MAAe,EAAA;QAChC,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,KAAK;;AAGd,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC;;AAGrF,IAAA,YAAY,CAAC,MAAe,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,0BAA0B,CAAC;;IAG/F,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;;AAEvB,QAAA,OAAO,EAAE;;wGAtEA,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAvB,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;;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;4EAIC,OAAO,EAAA,CAAA;sBADN,KAAK;uBAAC,kBAAkB;gBAIzB,aAAa,EAAA,CAAA;sBADZ;gBAID,kBAAkB,EAAA,CAAA;sBADjB,YAAY;uBAAC,aAAa,EAAE,CAAC,QAAQ,CAAC;;;AC7CzC;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAUU,mBAAmB,CAAA;AAIX,IAAA,UAAA;AACA,IAAA,WAAA;AACA,IAAA,MAAA;AALF,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEhD,IAAA,WAAA,CACmB,UAA+B,EAC/B,WAAmC,EACnC,MAAwB,EAAA;QAFxB,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAM,CAAA,MAAA,GAAN,MAAM;;IAGzB,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,SAAC,CAAC;;wGAbO,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,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;AAMU,MAAA,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;;AAGxB,IAAA,OAAO,eAAe;AACxB;;ACvCA;;;;;;;;;;;;;;;;;;;;;;AAsBG;MASU,cAAc,CAAA;AACzB;;AAEG;AACH,IAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;AAElC;;AAEG;AACH,IAAA,cAAc,GAAG,IAAI,OAAO,EAAU;AAEtC;;AAEG;AACH,IAAA,cAAc,GAAG,IAAI,OAAO,EAAa;AAEzC;;AAEG;AACH,IAAA,cAAc,GAAG,IAAI,OAAO,EAAa;AAEzC;;AAEG;AACH,IAAA,mBAAmB,GAAG,IAAI,OAAO,EAAQ;AAEzC;;AAEG;AACH,IAAA,aAAa,GAAG,IAAI,OAAO,EAAQ;AAEnC;;AAEG;AACH,IAAA,WAAW,GAAG,IAAI,OAAO,EAAU;AAEnC;;AAEG;AACH,IAAA,eAAe,GAAG,IAAI,OAAO,EAAQ;AAErC;;AAEG;AACH,IAAA,iBAAiB,GAAG,IAAI,OAAO,EAAQ;AAEvC;;AAEG;AACH,IAAA,aAAa,GAAG,IAAI,OAAO,EAAQ;AAEnC;;AAEG;AACH,IAAA,qBAAqB,GAAG,IAAI,OAAO,EAAQ;wGAtDhC,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,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;;4FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;AC9BD;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAgBU,MAAA,YAAY,GAAG;AAC1B,IAAA,GAAG,EAAE;AACH,QAAA,OAAO,EAAE,8BAA8B;AACvC,QAAA,QAAQ,EAAE,uCAAuC;AACjD,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;;AAGU,MAAA,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;;IAGb,gBAAgB,GAAA;AACd,QAAA,OAAO,IAAI;;wGANF,2BAA2B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAA3B,2BAA2B,EAAA,CAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC;;MA6BY,gBAAgB,CAAA;wGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAAhB,gBAAgB,EAAA,OAAA,EAAA,CAjBjB,oBAAoB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,aAAa,CAAA,EAAA,CAAA;AAiBlG,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAhBhB,SAAA,EAAA;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,EAfS,OAAA,EAAA,CAAA,oBAAoB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,aAAa,CAAA,EAAA,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;AAII,MAAM,qBAAqB,GAAG,MAAkB;IACrD,OAAO,CAAC,OAAwB,KAA6B;AAC3D,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK;QAC9B,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,IAAI;;QAGb,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;AAC/C,QAAA,OAAO,YAAY,CAAC,MAAM,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,IAAI;AAChE,KAAC;AACH;;ACpCA;;;;;;;;;;;;;;;;;;;;;;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/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/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/utils/node.utils.ts","../../../../projects/aca-shared/src/lib/services/auto-download.service.ts","../../../../projects/aca-shared/src/lib/services/navigation-history.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/testing/lib-testing-module.ts","../../../../projects/aca-shared/src/lib/validators/no-whitespace.validator.ts","../../../../projects/aca-shared/src/lib/validators/no-leading-trailing-operators.validator.ts","../../../../projects/aca-shared/src/public-api.ts","../../../../projects/aca-shared/src/alfresco-aca-shared.ts"],"sourcesContent":["/*!\n * Copyright © 2005-2025 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-2025 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-2025 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-2025 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-2025 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 { 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 NodesApi,\n TrashcanApi,\n SharedlinksApi,\n DiscoveryApi,\n FavoritesApi,\n ContentApi,\n SitesApi,\n SearchApi,\n PeopleApi,\n VersionsApi,\n DirectAccessUrlEntry,\n VersionPaging\n} from '@alfresco/js-api';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ContentApiService {\n private _nodesApi: NodesApi;\n get nodesApi(): NodesApi {\n this._nodesApi = this._nodesApi ?? new NodesApi(this.api.getInstance());\n return this._nodesApi;\n }\n\n private _trashcanApi: TrashcanApi;\n get trashcanApi(): TrashcanApi {\n this._trashcanApi = this._trashcanApi ?? new TrashcanApi(this.api.getInstance());\n return this._trashcanApi;\n }\n\n private _sharedLinksApi: SharedlinksApi;\n get sharedLinksApi(): SharedlinksApi {\n this._sharedLinksApi = this._sharedLinksApi ?? new SharedlinksApi(this.api.getInstance());\n return this._sharedLinksApi;\n }\n\n private _discoveryApi: DiscoveryApi;\n get discoveryApi(): DiscoveryApi {\n this._discoveryApi = this._discoveryApi ?? new DiscoveryApi(this.api.getInstance());\n return this._discoveryApi;\n }\n\n private _favoritesApi: FavoritesApi;\n get favoritesApi(): FavoritesApi {\n this._favoritesApi = this._favoritesApi ?? new FavoritesApi(this.api.getInstance());\n return this._favoritesApi;\n }\n\n private _contentApi: ContentApi;\n get contentApi(): ContentApi {\n this._contentApi = this._contentApi ?? new ContentApi(this.api.getInstance());\n return this._contentApi;\n }\n\n private _sitesApi: SitesApi;\n get sitesApi(): SitesApi {\n this._sitesApi = this._sitesApi ?? new SitesApi(this.api.getInstance());\n return this._sitesApi;\n }\n\n private _searchApi: SearchApi;\n get searchApi(): SearchApi {\n this._searchApi = this._searchApi ?? new SearchApi(this.api.getInstance());\n return this._searchApi;\n }\n\n private _peopleApi: PeopleApi;\n get peopleApi(): PeopleApi {\n this._peopleApi = this._peopleApi ?? new PeopleApi(this.api.getInstance());\n return this._peopleApi;\n }\n\n private _versionsApi: VersionsApi;\n get versionsApi(): VersionsApi {\n this._versionsApi = this._versionsApi ?? new VersionsApi(this.api.getInstance());\n return this._versionsApi;\n }\n constructor(\n private readonly api: AlfrescoApiService,\n private readonly preferences: UserPreferencesService\n ) {}\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']\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']\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 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-2025 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 } 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 defaults = {\n layout: 'app.layout.main',\n auth: ['app.auth', 'app.extensions.dataLoaderGuard']\n };\n\n constructor(\n private readonly router: Router,\n protected readonly extensions: ExtensionService\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 };\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-2025 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, Inject, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { CommonModule } from '@angular/common';\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: [CommonModule, 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 private redirectUrl: string;\n public appStoreUrl: string;\n public window: Window & typeof globalThis = window;\n\n constructor(\n @Inject(MAT_DIALOG_DATA)\n public data: OpenInAppDialogOptions,\n private dialog: MatDialogRef<OpenInAppComponent>\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 <div class=\"aca-download-app-container\" *ngIf=\"appStoreUrl\">\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</div>\n","/*!\n * Copyright © 2005-2025 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 config = inject(AppConfigService);\n private 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-2025 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-2025 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 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 * Copyright © 2005-2025 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 } from '@alfresco/js-api';\n\n@Injectable({ providedIn: 'root' })\nexport class UserProfileService {\n private api = inject(AlfrescoApiService);\n private groupService = inject(GroupService);\n\n private get peopleApi(): PeopleApi {\n return new PeopleApi(this.api.getInstance());\n }\n\n private 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-2025 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 AuthenticationService,\n AppConfigService,\n PageTitleService,\n UserPreferencesService,\n NotificationService,\n StorageService\n} from '@alfresco/adf-core';\nimport { Observable, BehaviorSubject, 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 private notificationService = inject(NotificationService);\n private matDialog = inject(MatDialog);\n private ready: BehaviorSubject<boolean>;\n\n ready$: Observable<boolean>;\n\n private 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 = ['/search'];\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 public preferencesService: UserPreferencesService,\n private authenticationService: AuthenticationService,\n private store: Store<AppStore>,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private config: AppConfigService,\n private pageTitle: PageTitleService,\n private alfrescoApiService: AlfrescoApiService,\n private uploadService: UploadService,\n private routerExtensionService: RouterExtensionService,\n private contentApi: ContentApiService,\n private sharedLinksApiService: SharedLinksApiService,\n private overlayContainer: OverlayContainer,\n searchQueryBuilderService: SearchQueryBuilderService,\n private acaMobileAppSwitcherService: AcaMobileAppSwitcherService,\n private appSettingsService: AppSettingsService,\n private readonly userProfileService: UserProfileService,\n private readonly storage: StorageService\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 if (error.status === 401 && !this.alfrescoApiService.isExcludedErrorListener(error?.response?.req?.url)) {\n if (!this.authenticationService.isLoggedIn()) {\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\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-2025 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 { 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';\n\n@Component({\n imports: [CommonModule, TranslatePipe, MatButtonModule, MatIconModule],\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 @Input()\n hasError = false;\n\n appNavNarMode$: Observable<'collapsed' | 'expanded'>;\n\n constructor(private appService: AppService) {\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 <button *ngIf=\"(appNavNarMode$ | async) === 'collapsed'\"\n mat-icon-button\n class=\"aca-content-header-button\"\n (click)=\"toggleClick()\"\n title=\"{{'APP.TOOLTIPS.EXPAND_NAVIGATION' | translate}}\">\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n <ng-content select=\".aca-page-layout-header, aca-page-layout-header\" />\n</div>\n\n<ng-container *ngIf=\"hasError\">\n <ng-content select=\".aca-page-layout-error, aca-page-layout-error\" />\n</ng-container>\n\n<ng-container *ngIf=\"!hasError\">\n <ng-content select=\".aca-page-layout-content, aca-page-layout-content\" />\n</ng-container>\n","/*!\n * Copyright © 2005-2025 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-2025 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';\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\">{{ '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 public text: string;\n\n ngOnInit(): void {\n this.text = this.node?.entry?.properties?.['cm:lockOwner']?.displayName;\n }\n}\n","/*!\n * Copyright © 2005-2025 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-2025 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 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-2025 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 private _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 _headerActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private _toolbarActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private _viewerToolbarActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private _sharedLinkViewerToolbarActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private _contextMenuActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private _openWithActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private _createActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private _sidebarActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n private _badges = new BehaviorSubject<Array<Badge>>([]);\n private _filesDocumentListPreset = new BehaviorSubject<Array<DocumentListPresetRef>>([]);\n private _customMetadataPanels = new BehaviorSubject<Array<ContentActionRef>>([]);\n private _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 public auth: AuthenticationService,\n protected store: Store<AppStore>,\n protected loader: ExtensionLoaderService,\n protected extensions: ExtensionService,\n public permissions: NodePermissionService,\n public appConfig: AppConfigService,\n protected matIconRegistry: MatIconRegistry,\n protected sanitizer: DomSanitizer,\n protected logger: LogService\n ) {\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 let presets = {};\n presets = this.filterDisabled(mergeObjects(presets, ...elements));\n\n const metadata = this.appConfig.config['content-metadata'] || {};\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-2025 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 } 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 { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { IconComponent } from '@alfresco/adf-core';\n\n@Component({\n imports: [CommonModule, 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 @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 constructor(private extensions: AppExtensionService) {}\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","<ng-container [ngSwitch]=\"actionRef.type\">\n <ng-container *ngSwitchCase=\"'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\n <mat-menu #childMenu=\"matMenu\" class=\"app-create-menu__sub-menu\">\n <ng-container *ngFor=\"let child of actionRef.children; trackBy: trackByActionId\">\n <app-toolbar-menu-item [actionRef]=\"child\" />\n </ng-container>\n </mat-menu>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'separator'\">\n <mat-divider />\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'custom'\">\n <adf-dynamic-component [id]=\"actionRef.component\" />\n </ng-container>\n\n <ng-container *ngSwitchDefault>\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 </ng-container>\n</ng-container>\n","/*!\n * Copyright © 2005-2025 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 { AppExtensionService } from '../../../services/app.extension.service';\nimport { ThemePalette } from '@angular/material/core';\nimport { CommonModule } from '@angular/common';\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: [CommonModule, 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 @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 constructor(private extensions: AppExtensionService) {}\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","<ng-container [ngSwitch]=\"data?.buttonType || type\">\n <ng-container *ngSwitchCase=\"'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 </ng-container>\n\n <ng-container *ngSwitchCase=\"'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 <span *ngIf=\"actionRef.title\">{{ actionRef.title | translate }}</span>\n </button>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'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 <span *ngIf=\"actionRef.title\">{{ actionRef.title | translate }}</span>\n </button>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'menu-item'\">\n <app-toolbar-menu-item [actionRef]=\"actionRef\" />\n </ng-container>\n</ng-container>\n","/*!\n * Copyright © 2005-2025 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 { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { IconComponent } from '@alfresco/adf-core';\n\n@Component({\n imports: [CommonModule, 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","<ng-container [ngSwitch]=\"type\">\n <ng-container *ngSwitchCase=\"'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 <span *ngIf=\"actionRef.title\">{{ actionRef.title | translate }}</span>\n </button>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'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 <span *ngIf=\"actionRef.title\">{{ actionRef.title | translate }}</span>\n </button>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'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 <span *ngIf=\"actionRef.title\">{{ actionRef.title | translate }}</span>\n </button>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\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 <adf-icon *ngIf=\"actionRef.icon\" [value]=\"actionRef.icon\" />\n </button>\n </ng-container>\n</ng-container>\n\n<mat-menu #menu=\"matMenu\" [overlapTrigger]=\"false\" [xPosition]=\"'before'\">\n <ng-container *ngFor=\"let child of actionRef.children; trackBy: trackByActionId\">\n <ng-container [ngSwitch]=\"child.type\">\n <ng-container *ngSwitchCase=\"'custom'\">\n <adf-dynamic-component [id]=\"child.component\" [data]=\"child.data\" />\n </ng-container>\n <ng-container *ngSwitchDefault>\n <app-toolbar-menu-item [actionRef]=\"child\" [menuId]=\"actionRef.id\" />\n </ng-container>\n </ng-container>\n </ng-container>\n</mat-menu>\n","/*!\n * Copyright © 2005-2025 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 } 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 { CommonModule } from '@angular/common';\nimport { ToolbarMenuComponent } from '../toolbar-menu/toolbar-menu.component';\n\n@Component({\n imports: [CommonModule, 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 @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 constructor(private cd: ChangeDetectorRef) {}\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","<ng-container [ngSwitch]=\"actionRef.type\">\n <div *ngSwitchCase=\"'default'\">\n <app-toolbar-button [type]=\"type\" [actionRef]=\"actionRef\" [color]=\"color\" />\n </div>\n\n <div *ngSwitchCase=\"'button'\">\n <app-toolbar-button [type]=\"data?.buttonType || type\" [actionRef]=\"actionRef\" [color]=\"color\" [data]=\"actionRef.data\" />\n </div>\n\n <div *ngSwitchCase=\"'separator'\" [id]=\"actionRef.id\" class=\"aca-toolbar-divider\"></div>\n\n <ng-container *ngSwitchCase=\"'menu'\">\n <app-toolbar-menu [actionRef]=\"actionRef\" [color]=\"color\" [data]=\"actionRef.data\" />\n </ng-container>\n\n <div *ngSwitchCase=\"'custom'\">\n <adf-dynamic-component [data]=\"actionRef.data\" [id]=\"actionRef.component\" />\n </div>\n</ng-container>\n","/*!\n * Copyright © 2005-2025 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 { CommonModule } from '@angular/common';\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: [CommonModule, 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 <ng-container *ngFor=\"let item of items; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"item\" />\n </ng-container>\n</mat-toolbar>\n","/*!\n * Copyright © 2005-2025 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 { CommonModule } from '@angular/common';\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';\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\n\n@Component({\n imports: [\n CommonModule,\n TranslatePipe,\n MatProgressBarModule,\n AdfInfoDrawerComponent,\n A11yModule,\n ToolbarComponent,\n DynamicTabComponent,\n InfoDrawerTabComponent\n ],\n selector: 'aca-info-drawer',\n templateUrl: './info-drawer.component.html',\n styleUrl: './info-drawer.component.scss',\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: MAT_FORM_FIELD_DEFAULT_OPTIONS,\n useValue: { appearance: 'fill', floatLabel: 'always' }\n }\n ]\n})\nexport class InfoDrawerComponent implements OnChanges, OnInit, OnDestroy {\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 constructor(\n private store: Store<any>,\n private contentApi: ContentApiService,\n private extensions: AppExtensionService,\n private nodesService: NodesApiService,\n private contentService: ContentService\n ) {}\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","<div *ngIf=\"isLoading\">\n <mat-progress-bar mode=\"indeterminate\" [attr.aria-label]=\"'APP.INFO_DRAWER.DATA_LOADING' | translate\" />\n</div>\n<ng-container *ngIf=\"!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\n <adf-info-drawer-tab *ngFor=\"let tab of tabs\" [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 </adf-info-drawer>\n</ng-container>\n","/*!\n * Copyright © 2005-2025 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-2025 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 } 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 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-2025 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 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-2025 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 { NavigationEnd, Router } from '@angular/router';\nimport { filter, startWith } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class NavigationHistoryService {\n history: string[] = [];\n\n constructor(private router: Router) {}\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-2025 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 {\n DocumentListComponent,\n DocumentListService,\n SearchAiInputState,\n SearchAiService,\n ShareDataRow,\n UploadService\n} from '@alfresco/adf-content-services';\nimport { ShowHeaderMode, UserPreferencesService } 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, isLocked } 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 { NavigationHistoryService } from '../../services/navigation-history.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.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 protected userPreferencesService = inject(UserPreferencesService);\n protected searchAiService = inject(SearchAiService);\n\n protected readonly destroyRef = inject(DestroyRef);\n\n private autoDownloadService = inject(AutoDownloadService, { optional: true });\n private navigationHistoryService = inject(NavigationHistoryService);\n\n protected subscriptions: Subscription[] = [];\n\n private _searchAiInputState: SearchAiInputState = {\n active: false\n };\n\n get searchAiInputState(): SearchAiInputState {\n return this._searchAiInputState;\n }\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 this.searchAiService.toggleSearchAiInput$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((searchAiInputState) => (this._searchAiInputState = searchAiInputState));\n\n this.setKnowledgeRetrievalState();\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) {\n if (isLocked(row.node)) {\n return 'material-icons://lock';\n }\n\n if (isLibrary(row.node)) {\n return 'material-icons://library_books';\n }\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 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 setKnowledgeRetrievalState() {\n const nodes = this.userPreferencesService.get('knowledgeRetrievalNodes');\n if (nodes && this.navigationHistoryService.shouldReturnLastSelection('/knowledge-retrieval')) {\n this.selectedNodesState = JSON.parse(nodes);\n }\n\n if (!this.selectedNodesState && !this.router.url.startsWith('/knowledge-retrieval')) {\n this.searchAiService.updateSearchAiInputState({\n active: false\n });\n }\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-2025 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-2025 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 // 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 execute$: Subject<any> = new Subject();\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(private store: Store<AppStore>) {}\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-2025 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 destroyRef = inject(DestroyRef);\n\n constructor(\n private readonly pagination: PaginationComponent,\n private readonly preferences: UserPreferencesService,\n private readonly config: AppConfigService\n ) {}\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-2025 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-2025 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-2025 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-2025 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-2025 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 { Subject } from 'rxjs';\nimport { 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 * Copyright © 2005-2025 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/alfresco-logo-white.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-2025 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 { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport const noWhitespaceValidator = (): ValidatorFn => {\n return (control: AbstractControl): ValidationErrors | null => {\n const rawValue = control.value;\n if (!rawValue) {\n return null;\n }\n\n const trimmedValue = rawValue.toString().trim();\n return trimmedValue.length === 0 ? { whitespace: true } : null;\n };\n};\n","/*!\n * Copyright © 2005-2025 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 { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nconst isOperator = (word: string): boolean => {\n const operators = ['AND', 'OR'];\n return operators.includes(word.trim());\n};\n\nexport const noLeadingTrailingOperatorsValidator = (): ValidatorFn => {\n return (control: AbstractControl<string>): ValidationErrors | null => {\n const rawValue = control.value;\n if (!rawValue) {\n return null;\n }\n\n const words = rawValue.trim().split(/\\s+/);\n\n return isOperator(words[0]) || isOperator(words[words.length - 1]) ? { operators: true } : null;\n };\n};\n","/*!\n * Copyright © 2005-2025 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\nexport * from './lib/validators/no-whitespace.validator';\nexport * from './lib/validators/no-leading-trailing-operators.validator';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i4","i5.RouterExtensionService","i6.ContentApiService","i8.AcaMobileAppSwitcherService","i9.AppSettingsService","i10.UserProfileService","i1.AppService","i4.NodePermissionService","i5","i1.AppExtensionService","i2.ContentApiService","i3.AppExtensionService","i6","AdfInfoDrawerComponent"],"mappings":"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"}