valtech-components 4.0.154 → 4.0.155

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,3 +1,4 @@
1
+ import { rbacGuard } from '../../../services/auth/guards';
1
2
  import { ApiKeysViewComponent } from './api-keys-view.component';
2
3
  /**
3
4
  * Helper para montar la vista de Client API Keys (`val-api-keys-view`) como ruta
@@ -20,8 +21,9 @@ export function provideValtechApiKeysRoutes(opts) {
20
21
  {
21
22
  path: opts?.path ?? 'api-keys',
22
23
  component: ApiKeysViewComponent,
24
+ canActivate: [rbacGuard('api-keys:read')],
23
25
  data: { apiKeysConfig: opts?.config },
24
26
  },
25
27
  ];
26
28
  }
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWtleXMucm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9hcGkta2V5cy12aWV3L2FwaS1rZXlzLnJvdXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUdqRTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFNLFVBQVUsMkJBQTJCLENBQUMsSUFHM0M7SUFDQyxPQUFPO1FBQ0w7WUFDRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxVQUFVO1lBQzlCLFNBQVMsRUFBRSxvQkFBb0I7WUFDL0IsSUFBSSxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7U0FDdEM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IEFwaUtleXNWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9hcGkta2V5cy12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcGlLZXlzVmlld0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIEhlbHBlciBwYXJhIG1vbnRhciBsYSB2aXN0YSBkZSBDbGllbnQgQVBJIEtleXMgKGB2YWwtYXBpLWtleXMtdmlld2ApIGNvbW8gcnV0YVxuICogZW4gdW5hIGFwcCBkZWwgZmFjdG9yeS4gRWwgYGNvbmZpZ2Agc2UgcGFzYSBwb3Igcm91dGUgYGRhdGFgIChgYXBpS2V5c0NvbmZpZ2ApIHlcbiAqIGVsIGNvbXBvbmVudGUgbG8gbGVlIGNvbW8gZmFsbGJhY2sgZGUgc3UgYEBJbnB1dCgpIGNvbmZpZ2AuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAvLyBzZXR0aW5ncy5yb3V0ZXMudHNcbiAqIGltcG9ydCB7IHByb3ZpZGVWYWx0ZWNoQXBpS2V5c1JvdXRlcyB9IGZyb20gJ3ZhbHRlY2gtY29tcG9uZW50cyc7XG4gKlxuICogZXhwb3J0IGNvbnN0IHNldHRpbmdzUm91dGVzOiBSb3V0ZXMgPSBbXG4gKiAgIC4uLnByb3ZpZGVWYWx0ZWNoQXBpS2V5c1JvdXRlcygpLCAgICAgICAgICAgICAgICAgIC8vIOKGkiAvYXBwL3NldHRpbmdzL2FwaS1rZXlzXG4gKiAgIC8vIC4uLnByb3ZpZGVWYWx0ZWNoQXBpS2V5c1JvdXRlcyh7IHBhdGg6ICdpbnRlZ3JhdGlvbnMva2V5cycgfSksXG4gKiBdO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlVmFsdGVjaEFwaUtleXNSb3V0ZXMob3B0cz86IHtcbiAgcGF0aD86IHN0cmluZztcbiAgY29uZmlnPzogQXBpS2V5c1ZpZXdDb25maWc7XG59KTogUm91dGVzIHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBwYXRoOiBvcHRzPy5wYXRoID8/ICdhcGkta2V5cycsXG4gICAgICBjb21wb25lbnQ6IEFwaUtleXNWaWV3Q29tcG9uZW50LFxuICAgICAgZGF0YTogeyBhcGlLZXlzQ29uZmlnOiBvcHRzPy5jb25maWcgfSxcbiAgICB9LFxuICBdO1xufVxuIl19
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWtleXMucm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9hcGkta2V5cy12aWV3L2FwaS1rZXlzLnJvdXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHakU7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBTSxVQUFVLDJCQUEyQixDQUFDLElBRzNDO0lBQ0MsT0FBTztRQUNMO1lBQ0UsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksVUFBVTtZQUM5QixTQUFTLEVBQUUsb0JBQW9CO1lBQy9CLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUN6QyxJQUFJLEVBQUUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtTQUN0QztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgcmJhY0d1YXJkIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9ndWFyZHMnO1xuaW1wb3J0IHsgQXBpS2V5c1ZpZXdDb21wb25lbnQgfSBmcm9tICcuL2FwaS1rZXlzLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IEFwaUtleXNWaWV3Q29uZmlnIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogSGVscGVyIHBhcmEgbW9udGFyIGxhIHZpc3RhIGRlIENsaWVudCBBUEkgS2V5cyAoYHZhbC1hcGkta2V5cy12aWV3YCkgY29tbyBydXRhXG4gKiBlbiB1bmEgYXBwIGRlbCBmYWN0b3J5LiBFbCBgY29uZmlnYCBzZSBwYXNhIHBvciByb3V0ZSBgZGF0YWAgKGBhcGlLZXlzQ29uZmlnYCkgeVxuICogZWwgY29tcG9uZW50ZSBsbyBsZWUgY29tbyBmYWxsYmFjayBkZSBzdSBgQElucHV0KCkgY29uZmlnYC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIC8vIHNldHRpbmdzLnJvdXRlcy50c1xuICogaW1wb3J0IHsgcHJvdmlkZVZhbHRlY2hBcGlLZXlzUm91dGVzIH0gZnJvbSAndmFsdGVjaC1jb21wb25lbnRzJztcbiAqXG4gKiBleHBvcnQgY29uc3Qgc2V0dGluZ3NSb3V0ZXM6IFJvdXRlcyA9IFtcbiAqICAgLi4ucHJvdmlkZVZhbHRlY2hBcGlLZXlzUm91dGVzKCksICAgICAgICAgICAgICAgICAgLy8g4oaSIC9hcHAvc2V0dGluZ3MvYXBpLWtleXNcbiAqICAgLy8gLi4ucHJvdmlkZVZhbHRlY2hBcGlLZXlzUm91dGVzKHsgcGF0aDogJ2ludGVncmF0aW9ucy9rZXlzJyB9KSxcbiAqIF07XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVWYWx0ZWNoQXBpS2V5c1JvdXRlcyhvcHRzPzoge1xuICBwYXRoPzogc3RyaW5nO1xuICBjb25maWc/OiBBcGlLZXlzVmlld0NvbmZpZztcbn0pOiBSb3V0ZXMge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHBhdGg6IG9wdHM/LnBhdGggPz8gJ2FwaS1rZXlzJyxcbiAgICAgIGNvbXBvbmVudDogQXBpS2V5c1ZpZXdDb21wb25lbnQsXG4gICAgICBjYW5BY3RpdmF0ZTogW3JiYWNHdWFyZCgnYXBpLWtleXM6cmVhZCcpXSxcbiAgICAgIGRhdGE6IHsgYXBpS2V5c0NvbmZpZzogb3B0cz8uY29uZmlnIH0sXG4gICAgfSxcbiAgXTtcbn1cbiJdfQ==
@@ -1,3 +1,4 @@
1
+ import { rbacGuard } from '../../../services/auth/guards';
1
2
  import { PermissionsViewComponent } from './permissions-view.component';
2
3
  /**
3
4
  * Helper para montar la vista Permisos (`val-permissions-view`) como ruta en una
@@ -22,8 +23,9 @@ export function provideValtechPermissionsRoutes(opts) {
22
23
  {
23
24
  path: opts?.path ?? 'permissions',
24
25
  component: PermissionsViewComponent,
26
+ canActivate: [rbacGuard('roles:read', 'rbac:manage')],
25
27
  data: { permissionsConfig: opts?.config },
26
28
  },
27
29
  ];
28
30
  }
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMucm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9wZXJtaXNzaW9ucy12aWV3L3Blcm1pc3Npb25zLnJvdXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUd4RTs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFNLFVBQVUsK0JBQStCLENBQUMsSUFHL0M7SUFDQyxPQUFPO1FBQ0w7WUFDRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxhQUFhO1lBQ2pDLFNBQVMsRUFBRSx3QkFBd0I7WUFDbkMsSUFBSSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtTQUMxQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgUGVybWlzc2lvbnNWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9wZXJtaXNzaW9ucy12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uc1ZpZXdDb25maWcgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBIZWxwZXIgcGFyYSBtb250YXIgbGEgdmlzdGEgUGVybWlzb3MgKGB2YWwtcGVybWlzc2lvbnMtdmlld2ApIGNvbW8gcnV0YSBlbiB1bmFcbiAqIGFwcCBkZWwgZmFjdG9yeS4gRWwgYGNvbmZpZ2Agc2UgcGFzYSBwb3Igcm91dGUgYGRhdGFgIChgcGVybWlzc2lvbnNDb25maWdgKSB5IGVsXG4gKiBjb21wb25lbnRlIGxvIGxlZSBjb21vIGZhbGxiYWNrIGRlIHN1IGBASW5wdXQoKSBjb25maWdgLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gc2V0dGluZ3Mucm91dGVzLnRzXG4gKiBleHBvcnQgY29uc3Qgc2V0dGluZ3NSb3V0ZXM6IFJvdXRlcyA9IFtcbiAqICAgLi4ucHJvdmlkZVZhbHRlY2hQZXJtaXNzaW9uc1JvdXRlcygpLCAgICAgICAgICAgICAgICAgIC8vIOKGkiAvYXBwL3NldHRpbmdzL3Blcm1pc3Npb25zXG4gKiAgIHsgcGF0aDogJ3ByZWZlcmVuY2VzJywgbG9hZENvbXBvbmVudDogKCkgPT4gLi4uIH0sXG4gKiBdO1xuICpcbiAqIC8vIGNvbiBjb25maWcgYWNvdGFkYTpcbiAqIC4uLnByb3ZpZGVWYWx0ZWNoUGVybWlzc2lvbnNSb3V0ZXMoeyBjb25maWc6IHsgc2hvd0N1c3RvbVJvbGVzOiBmYWxzZSB9IH0pLFxuICogLi4ucHJvdmlkZVZhbHRlY2hQZXJtaXNzaW9uc1JvdXRlcyh7IHBhdGg6ICdyb2xlcycgfSksXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVWYWx0ZWNoUGVybWlzc2lvbnNSb3V0ZXMob3B0cz86IHtcbiAgcGF0aD86IHN0cmluZztcbiAgY29uZmlnPzogUGVybWlzc2lvbnNWaWV3Q29uZmlnO1xufSk6IFJvdXRlcyB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcGF0aDogb3B0cz8ucGF0aCA/PyAncGVybWlzc2lvbnMnLFxuICAgICAgY29tcG9uZW50OiBQZXJtaXNzaW9uc1ZpZXdDb21wb25lbnQsXG4gICAgICBkYXRhOiB7IHBlcm1pc3Npb25zQ29uZmlnOiBvcHRzPy5jb25maWcgfSxcbiAgICB9LFxuICBdO1xufVxuIl19
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMucm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9wZXJtaXNzaW9ucy12aWV3L3Blcm1pc3Npb25zLnJvdXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHeEU7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxVQUFVLCtCQUErQixDQUFDLElBRy9DO0lBQ0MsT0FBTztRQUNMO1lBQ0UsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksYUFBYTtZQUNqQyxTQUFTLEVBQUUsd0JBQXdCO1lBQ25DLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDckQsSUFBSSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtTQUMxQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgcmJhY0d1YXJkIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9ndWFyZHMnO1xuaW1wb3J0IHsgUGVybWlzc2lvbnNWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9wZXJtaXNzaW9ucy12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uc1ZpZXdDb25maWcgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBIZWxwZXIgcGFyYSBtb250YXIgbGEgdmlzdGEgUGVybWlzb3MgKGB2YWwtcGVybWlzc2lvbnMtdmlld2ApIGNvbW8gcnV0YSBlbiB1bmFcbiAqIGFwcCBkZWwgZmFjdG9yeS4gRWwgYGNvbmZpZ2Agc2UgcGFzYSBwb3Igcm91dGUgYGRhdGFgIChgcGVybWlzc2lvbnNDb25maWdgKSB5IGVsXG4gKiBjb21wb25lbnRlIGxvIGxlZSBjb21vIGZhbGxiYWNrIGRlIHN1IGBASW5wdXQoKSBjb25maWdgLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gc2V0dGluZ3Mucm91dGVzLnRzXG4gKiBleHBvcnQgY29uc3Qgc2V0dGluZ3NSb3V0ZXM6IFJvdXRlcyA9IFtcbiAqICAgLi4ucHJvdmlkZVZhbHRlY2hQZXJtaXNzaW9uc1JvdXRlcygpLCAgICAgICAgICAgICAgICAgIC8vIOKGkiAvYXBwL3NldHRpbmdzL3Blcm1pc3Npb25zXG4gKiAgIHsgcGF0aDogJ3ByZWZlcmVuY2VzJywgbG9hZENvbXBvbmVudDogKCkgPT4gLi4uIH0sXG4gKiBdO1xuICpcbiAqIC8vIGNvbiBjb25maWcgYWNvdGFkYTpcbiAqIC4uLnByb3ZpZGVWYWx0ZWNoUGVybWlzc2lvbnNSb3V0ZXMoeyBjb25maWc6IHsgc2hvd0N1c3RvbVJvbGVzOiBmYWxzZSB9IH0pLFxuICogLi4ucHJvdmlkZVZhbHRlY2hQZXJtaXNzaW9uc1JvdXRlcyh7IHBhdGg6ICdyb2xlcycgfSksXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVWYWx0ZWNoUGVybWlzc2lvbnNSb3V0ZXMob3B0cz86IHtcbiAgcGF0aD86IHN0cmluZztcbiAgY29uZmlnPzogUGVybWlzc2lvbnNWaWV3Q29uZmlnO1xufSk6IFJvdXRlcyB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcGF0aDogb3B0cz8ucGF0aCA/PyAncGVybWlzc2lvbnMnLFxuICAgICAgY29tcG9uZW50OiBQZXJtaXNzaW9uc1ZpZXdDb21wb25lbnQsXG4gICAgICBjYW5BY3RpdmF0ZTogW3JiYWNHdWFyZCgncm9sZXM6cmVhZCcsICdyYmFjOm1hbmFnZScpXSxcbiAgICAgIGRhdGE6IHsgcGVybWlzc2lvbnNDb25maWc6IG9wdHM/LmNvbmZpZyB9LFxuICAgIH0sXG4gIF07XG59XG4iXX0=
@@ -98,6 +98,53 @@ export function permissionGuard(permissions) {
98
98
  return router.createUrlTree([config.unauthorizedRoute]);
99
99
  };
100
100
  }
101
+ /**
102
+ * Factory de guard RBAC parametrizable — defense-in-depth a nivel de RUTA.
103
+ *
104
+ * Variante ergonómica de {@link permissionGuard} con firma variádica
105
+ * (`rbacGuard('a:read', 'b:manage')` en vez de `permissionGuard(['a:read', 'b:manage'])`),
106
+ * pensada para gatear vistas administrativas montadas vía los `provideValtech*Routes`
107
+ * de la lib. Pasa si el usuario tiene **AL MENOS UNO** de los permisos (OR), igual que
108
+ * el resto del gating del factory (`*valHasPermission`, menú). El match de wildcards
109
+ * (`*:*`, `resource:*`, `*:action`) lo resuelve `AuthService.hasPermission`.
110
+ *
111
+ * Es una capa ADICIONAL al gating fino dentro de los componentes (botones por
112
+ * `*valHasPermission`) y al 403 del backend — no los reemplaza. Sin permiso redirige
113
+ * a `unauthorizedRoute` (mismo destino que `permissionGuard`).
114
+ *
115
+ * @param permissions - Uno o más permisos requeridos (OR)
116
+ * @returns Guard function
117
+ *
118
+ * @example
119
+ * ```typescript
120
+ * import { rbacGuard } from 'valtech-components';
121
+ *
122
+ * const routes: Routes = [
123
+ * {
124
+ * path: 'api-keys',
125
+ * canActivate: [rbacGuard('api-keys:read')],
126
+ * component: ApiKeysViewComponent,
127
+ * },
128
+ * {
129
+ * path: 'permissions',
130
+ * canActivate: [rbacGuard('roles:read', 'rbac:manage')],
131
+ * component: PermissionsViewComponent,
132
+ * },
133
+ * ];
134
+ * ```
135
+ */
136
+ export function rbacGuard(...permissions) {
137
+ return () => {
138
+ const authService = inject(AuthService);
139
+ const router = inject(Router);
140
+ const config = inject(VALTECH_AUTH_CONFIG);
141
+ if (permissions.length === 0 || authService.hasAnyPermission(permissions)) {
142
+ return true;
143
+ }
144
+ console.warn(`[ValtechAuth] Acceso a ruta denegado. Requerido: ${permissions.join(' o ')}`);
145
+ return router.createUrlTree([config.unauthorizedRoute]);
146
+ };
147
+ }
101
148
  /**
102
149
  * Guard que lee permisos desde route.data.
103
150
  * Permite configurar permisos directamente en la definición de rutas.
@@ -196,4 +243,4 @@ export function roleGuard(roles) {
196
243
  return router.createUrlTree([config.unauthorizedRoute]);
197
244
  };
198
245
  }
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhcmRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL2d1YXJkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFDTCxNQUFNLEdBS1AsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRS9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFrQixDQUN0QyxNQUE4QixFQUM5QixLQUEwQixFQUNQLEVBQUU7SUFDckIsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUUzQyxJQUFJLFdBQVcsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRTtRQUMvQyxXQUFXLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRTtLQUN0QyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQWtCLEdBQXNCLEVBQUU7SUFDL0QsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxN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ImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgUm91dGVyLFxuICBDYW5BY3RpdmF0ZUZuLFxuICBVcmxUcmVlLFxuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90LFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBWQUxURUNIX0FVVEhfQ09ORklHIH0gZnJvbSAnLi9jb25maWcnO1xuXG4vKipcbiAqIEd1YXJkIHF1ZSB2ZXJpZmljYSBzaSBlbCB1c3VhcmlvIGVzdMOhIGF1dGVudGljYWRvLlxuICogUmVkaXJpZ2UgYSBsb2dpblJvdXRlIHNpIG5vIGVzdMOhIGF1dGVudGljYWRvLlxuICpcbiAqIFByZXNlcnZhIGxhIFVSTCBzb2xpY2l0YWRhIGVuIGVsIHF1ZXJ5IHBhcmFtIGByZXR1cm5VcmxgIHBhcmEgcXVlIGxhXG4gKiBww6FnaW5hIGRlIGxvZ2luIHB1ZWRhIGRldm9sdmVyIGFsIHVzdWFyaW8gYSBzdSBkZXN0aW5vIHRyYXMgYXV0ZW50aWNhcnNlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBhdXRoR3VhcmQgfSBmcm9tICd2YWx0ZWNoLWNvbXBvbmVudHMnO1xuICpcbiAqIGNvbnN0IHJvdXRlczogUm91dGVzID0gW1xuICogICB7XG4gKiAgICAgcGF0aDogJ2Rhc2hib2FyZCcsXG4gKiAgICAgY2FuQWN0aXZhdGU6IFthdXRoR3VhcmRdLFxuICogICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9kYXNoYm9hcmQucGFnZScpLFxuICogICB9LFxuICogXTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgYXV0aEd1YXJkOiBDYW5BY3RpdmF0ZUZuID0gKFxuICBfcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XG4pOiBib29sZWFuIHwgVXJsVHJlZSA9PiB7XG4gIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIGNvbnN0IGNvbmZpZyA9IGluamVjdChWQUxURUNIX0FVVEhfQ09ORklHKTtcblxuICBpZiAoYXV0aFNlcnZpY2UuaXNBdXRoZW50aWNhdGVkKCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiByb3V0ZXIuY3JlYXRlVXJsVHJlZShbY29uZmlnLmxvZ2luUm91dGVdLCB7XG4gICAgcXVlcnlQYXJhbXM6IHsgcmV0dXJuVXJsOiBzdGF0ZS51cmwgfSxcbiAgfSk7XG59O1xuXG4vKipcbiAqIEd1YXJkIHF1ZSB2ZXJpZmljYSBzaSBlbCB1c3VhcmlvIE5PIGVzdMOhIGF1dGVudGljYWRvLlxuICogUmVkaXJpZ2UgYSBob21lUm91dGUgc2kgeWEgZXN0w6EgYXV0ZW50aWNhZG8uXG4gKiDDmnRpbCBwYXJhIHDDoWdpbmFzIGRlIGxvZ2luL3JlZ2lzdHJvLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBndWVzdEd1YXJkIH0gZnJvbSAndmFsdGVjaC1jb21wb25lbnRzJztcbiAqXG4gKiBjb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAqICAge1xuICogICAgIHBhdGg6ICdsb2dpbicsXG4gKiAgICAgY2FuQWN0aXZhdGU6IFtndWVzdEd1YXJkXSxcbiAqICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vbG9naW4ucGFnZScpLFxuICogICB9LFxuICogXTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgZ3Vlc3RHdWFyZDogQ2FuQWN0aXZhdGVGbiA9ICgpOiBib29sZWFuIHwgVXJsVHJlZSA9PiB7XG4gIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIGNvbnN0IGNvbmZpZyA9IGluamVjdChWQUxURUNIX0FVVEhfQ09ORklHKTtcblxuICBpZiAoIWF1dGhTZXJ2aWNlLmlzQXV0aGVudGljYXRlZCgpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gcm91dGVyLmNyZWF0ZVVybFRyZWUoW2NvbmZpZy5ob21lUm91dGVdKTtcbn07XG5cbi8qKlxuICogRmFjdG9yeSBwYXJhIGNyZWFyIGd1YXJkIGRlIHBlcm1pc29zLlxuICogVmVyaWZpY2Egc2kgZWwgdXN1YXJpbyB0aWVuZSBlbCBwZXJtaXNvIGVzcGVjaWZpY2Fkby5cbiAqXG4gKiBAcGFyYW0gcGVybWlzc2lvbnMgLSBQZXJtaXNvIG8gbGlzdGEgZGUgcGVybWlzb3MgcmVxdWVyaWRvcyAoT1IpXG4gKiBAcmV0dXJucyBHdWFyZCBmdW5jdGlvblxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBhdXRoR3VhcmQsIHBlcm1pc3Npb25HdWFyZCB9IGZyb20gJ3ZhbHRlY2gtY29tcG9uZW50cyc7XG4gKlxuICogY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gKiAgIHtcbiAqICAgICBwYXRoOiAndGVtcGxhdGVzJyxcbiAqICAgICBjYW5BY3RpdmF0ZTogW2F1dGhHdWFyZCwgcGVybWlzc2lvbkd1YXJkKCd0ZW1wbGF0ZXM6cmVhZCcpXSxcbiAqICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vdGVtcGxhdGVzLnBhZ2UnKSxcbiAqICAgfSxcbiAqICAge1xuICogICAgIHBhdGg6ICdhZG1pbicsXG4gKiAgICAgY2FuQWN0aXZhdGU6IFthdXRoR3VhcmQsIHBlcm1pc3Npb25HdWFyZChbJ2FkbWluOionLCAnc3VwZXJfYWRtaW4nXSldLFxuICogICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9hZG1pbi5wYWdlJyksXG4gKiAgIH0sXG4gKiBdO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwZXJtaXNzaW9uR3VhcmQocGVybWlzc2lvbnM6IHN0cmluZyB8IHN0cmluZ1tdKTogQ2FuQWN0aXZhdGVGbiB7XG4gIHJldHVybiAoKTogYm9vbGVhbiB8IFVybFRyZWUgPT4ge1xuICAgIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgICBjb25zdCBjb25maWcgPSBpbmplY3QoVkFMVEVDSF9BVVRIX0NPTkZJRyk7XG5cbiAgICBjb25zdCBwZXJtQXJyYXkgPSBBcnJheS5pc0FycmF5KHBlcm1pc3Npb25zKSA/IHBlcm1pc3Npb25zIDogW3Blcm1pc3Npb25zXTtcblxuICAgIGlmIChhdXRoU2VydmljZS5oYXNBbnlQZXJtaXNzaW9uKHBlcm1BcnJheSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnNvbGUud2FybihgW1ZhbHRlY2hBdXRoXSBQZXJtaXNvIGRlbmVnYWRvLiBSZXF1ZXJpZG86ICR7cGVybUFycmF5LmpvaW4oJyBvICcpfWApO1xuICAgIHJldHVybiByb3V0ZXIuY3JlYXRlVXJsVHJlZShbY29uZmlnLnVuYXV0aG9yaXplZFJvdXRlXSk7XG4gIH07XG59XG5cbi8qKlxuICogR3VhcmQgcXVlIGxlZSBwZXJtaXNvcyBkZXNkZSByb3V0ZS5kYXRhLlxuICogUGVybWl0ZSBjb25maWd1cmFyIHBlcm1pc29zIGRpcmVjdGFtZW50ZSBlbiBsYSBkZWZpbmljacOzbiBkZSBydXRhcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgYXV0aEd1YXJkLCBwZXJtaXNzaW9uR3VhcmRGcm9tUm91dGUgfSBmcm9tICd2YWx0ZWNoLWNvbXBvbmVudHMnO1xuICpcbiAqIGNvbnN0IHJvdXRlczogUm91dGVzID0gW1xuICogICB7XG4gKiAgICAgcGF0aDogJ2FkbWluL3VzZXJzJyxcbiAqICAgICBjYW5BY3RpdmF0ZTogW2F1dGhHdWFyZCwgcGVybWlzc2lvbkd1YXJkRnJvbVJvdXRlXSxcbiAqICAgICBkYXRhOiB7XG4gKiAgICAgICBwZXJtaXNzaW9uczogWyd1c2VyczpyZWFkJywgJ3VzZXJzOm1hbmFnZSddLFxuICogICAgICAgcmVxdWlyZUFsbDogZmFsc2UgIC8vIHRydWUgPSBBTkQsIGZhbHNlID0gT1IgKGRlZmF1bHQpXG4gKiAgICAgfSxcbiAqICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vdXNlcnMucGFnZScpLFxuICogICB9LFxuICogXTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgcGVybWlzc2lvbkd1YXJkRnJvbVJvdXRlOiBDYW5BY3RpdmF0ZUZuID0gKFxuICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdFxuKTogYm9vbGVhbiB8IFVybFRyZWUgPT4ge1xuICBjb25zdCBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBjb25zdCBjb25maWcgPSBpbmplY3QoVkFMVEVDSF9BVVRIX0NPTkZJRyk7XG5cbiAgY29uc3QgcGVybWlzc2lvbnMgPSByb3V0ZS5kYXRhWydwZXJtaXNzaW9ucyddIGFzIHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICBjb25zdCByZXF1aXJlQWxsID0gcm91dGUuZGF0YVsncmVxdWlyZUFsbCddIGFzIGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgaWYgKCFwZXJtaXNzaW9ucyB8fCBwZXJtaXNzaW9ucy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0IGhhc0FjY2VzcyA9IHJlcXVpcmVBbGxcbiAgICA/IGF1dGhTZXJ2aWNlLmhhc0FsbFBlcm1pc3Npb25zKHBlcm1pc3Npb25zKVxuICAgIDogYXV0aFNlcnZpY2UuaGFzQW55UGVybWlzc2lvbihwZXJtaXNzaW9ucyk7XG5cbiAgaWYgKGhhc0FjY2Vzcykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY29uc29sZS53YXJuKFxuICAgIGBbVmFsdGVjaEF1dGhdIFBlcm1pc28gZGVuZWdhZG8uIFJlcXVlcmlkbzogJHtwZXJtaXNzaW9ucy5qb2luKHJlcXVpcmVBbGwgPyAnIHkgJyA6ICcgbyAnKX1gXG4gICk7XG4gIHJldHVybiByb3V0ZXIuY3JlYXRlVXJsVHJlZShbY29uZmlnLnVuYXV0aG9yaXplZFJvdXRlXSk7XG59O1xuXG4vKipcbiAqIEd1YXJkIHF1ZSB2ZXJpZmljYSBzaSBlbCB1c3VhcmlvIGVzIHN1cGVyIGFkbWluLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBhdXRoR3VhcmQsIHN1cGVyQWRtaW5HdWFyZCB9IGZyb20gJ3ZhbHRlY2gtY29tcG9uZW50cyc7XG4gKlxuICogY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gKiAgIHtcbiAqICAgICBwYXRoOiAnc3VwZXItYWRtaW4nLFxuICogICAgIGNhbkFjdGl2YXRlOiBbYXV0aEd1YXJkLCBzdXBlckFkbWluR3VhcmRdLFxuICogICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9zdXBlci1hZG1pbi5wYWdlJyksXG4gKiAgIH0sXG4gKiBdO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBzdXBlckFkbWluR3VhcmQ6IENhbkFjdGl2YXRlRm4gPSAoKTogYm9vbGVhbiB8IFVybFRyZWUgPT4ge1xuICBjb25zdCBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBjb25zdCBjb25maWcgPSBpbmplY3QoVkFMVEVDSF9BVVRIX0NPTkZJRyk7XG5cbiAgaWYgKGF1dGhTZXJ2aWNlLmlzU3VwZXJBZG1pbigpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb25zb2xlLndhcm4oJ1tWYWx0ZWNoQXV0aF0gQWNjZXNvIGRlIHN1cGVyIGFkbWluIHJlcXVlcmlkbycpO1xuICByZXR1cm4gcm91dGVyLmNyZWF0ZVVybFRyZWUoW2NvbmZpZy51bmF1dGhvcml6ZWRSb3V0ZV0pO1xufTtcblxuLyoqXG4gKiBHdWFyZCBxdWUgdmVyaWZpY2Egc2kgZWwgdXN1YXJpbyB0aWVuZSB1biByb2wgZXNwZWPDrWZpY28uXG4gKlxuICogQHBhcmFtIHJvbGVzIC0gUm9sIG8gbGlzdGEgZGUgcm9sZXMgcmVxdWVyaWRvcyAoT1IpXG4gKiBAcmV0dXJucyBHdWFyZCBmdW5jdGlvblxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBhdXRoR3VhcmQsIHJvbGVHdWFyZCB9IGZyb20gJ3ZhbHRlY2gtY29tcG9uZW50cyc7XG4gKlxuICogY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gKiAgIHtcbiAqICAgICBwYXRoOiAnZWRpdG9yJyxcbiAqICAgICBjYW5BY3RpdmF0ZTogW2F1dGhHdWFyZCwgcm9sZUd1YXJkKFsnZWRpdG9yJywgJ2FkbWluJ10pXSxcbiAqICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vZWRpdG9yLnBhZ2UnKSxcbiAqICAgfSxcbiAqIF07XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvbGVHdWFyZChyb2xlczogc3RyaW5nIHwgc3RyaW5nW10pOiBDYW5BY3RpdmF0ZUZuIHtcbiAgcmV0dXJuICgpOiBib29sZWFuIHwgVXJsVHJlZSA9PiB7XG4gICAgY29uc3QgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICAgIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICAgIGNvbnN0IGNvbmZpZyA9IGluamVjdChWQUxURUNIX0FVVEhfQ09ORklHKTtcblxuICAgIGNvbnN0IHJvbGVBcnJheSA9IEFycmF5LmlzQXJyYXkocm9sZXMpID8gcm9sZXMgOiBbcm9sZXNdO1xuXG4gICAgY29uc3QgaGFzUm9sZSA9IHJvbGVBcnJheS5zb21lKHJvbGUgPT4gYXV0aFNlcnZpY2UuaGFzUm9sZShyb2xlKSk7XG5cbiAgICBpZiAoaGFzUm9sZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc29sZS53YXJuKGBbVmFsdGVjaEF1dGhdIFJvbCByZXF1ZXJpZG86ICR7cm9sZUFycmF5LmpvaW4oJyBvICcpfWApO1xuICAgIHJldHVybiByb3V0ZXIuY3JlYXRlVXJsVHJlZShbY29uZmlnLnVuYXV0aG9yaXplZFJvdXRlXSk7XG4gIH07XG59XG4iXX0=
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhcmRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL2d1YXJkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFDTCxNQUFNLEdBS1AsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRS9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFrQixDQUN0QyxNQUE4QixFQUM5QixLQUEwQixFQUNQLEVBQUU7SUFDckIsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUUzQyxJQUFJLFdBQVcsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRTtRQUMvQyxXQUFXLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRTtLQUN0QyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQWtCLEdBQXNCLEVBQUU7SUFDL0QsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxN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LE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUUzQyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFekQsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUVsRSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEUsT0FBTyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBSb3V0ZXIsXG4gIENhbkFjdGl2YXRlRm4sXG4gIFVybFRyZWUsXG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIFJvdXRlclN0YXRlU25hcHNob3QsXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IFZBTFRFQ0hfQVVUSF9DT05GSUcgfSBmcm9tICcuL2NvbmZpZyc7XG5cbi8qKlxuICogR3VhcmQgcXVlIHZlcmlmaWNhIHNpIGVsIHVzdWFyaW8gZXN0w6EgYXV0ZW50aWNhZG8uXG4gKiBSZWRpcmlnZSBhIGxvZ2luUm91dGUgc2kgbm8gZXN0w6EgYXV0ZW50aWNhZG8uXG4gKlxuICogUHJlc2VydmEgbGEgVVJMIHNvbGljaXRhZGEgZW4gZWwgcXVlcnkgcGFyYW0gYHJldHVyblVybGAgcGFyYSBxdWUgbGFcbiAqIHDDoWdpbmEgZGUgbG9naW4gcHVlZGEgZGV2b2x2ZXIgYWwgdXN1YXJpbyBhIHN1IGRlc3Rpbm8gdHJhcyBhdXRlbnRpY2Fyc2UuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IGF1dGhHdWFyZCB9IGZyb20gJ3ZhbHRlY2gtY29tcG9uZW50cyc7XG4gKlxuICogY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gKiAgIHtcbiAqICAgICBwYXRoOiAnZGFzaGJvYXJkJyxcbiAqICAgICBjYW5BY3RpdmF0ZTogW2F1dGhHdWFyZF0sXG4gKiAgICAgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL2Rhc2hib2FyZC5wYWdlJyksXG4gKiAgIH0sXG4gKiBdO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBhdXRoR3VhcmQ6IENhbkFjdGl2YXRlRm4gPSAoXG4gIF9yb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3Rcbik6IGJvb2xlYW4gfCBVcmxUcmVlID0+IHtcbiAgY29uc3QgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgY29uc3QgY29uZmlnID0gaW5qZWN0KFZBTFRFQ0hfQVVUSF9DT05GSUcpO1xuXG4gIGlmIChhdXRoU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQoKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHJvdXRlci5jcmVhdGVVcmxUcmVlKFtjb25maWcubG9naW5Sb3V0ZV0sIHtcbiAgICBxdWVyeVBhcmFtczogeyByZXR1cm5Vcmw6IHN0YXRlLnVybCB9LFxuICB9KTtcbn07XG5cbi8qKlxuICogR3VhcmQgcXVlIHZlcmlmaWNhIHNpIGVsIHVzdWFyaW8gTk8gZXN0w6EgYXV0ZW50aWNhZG8uXG4gKiBSZWRpcmlnZSBhIGhvbWVSb3V0ZSBzaSB5YSBlc3TDoSBhdXRlbnRpY2Fkby5cbiAqIMOadGlsIHBhcmEgcMOhZ2luYXMgZGUgbG9naW4vcmVnaXN0cm8uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IGd1ZXN0R3VhcmQgfSBmcm9tICd2YWx0ZWNoLWNvbXBvbmVudHMnO1xuICpcbiAqIGNvbnN0IHJvdXRlczogUm91dGVzID0gW1xuICogICB7XG4gKiAgICAgcGF0aDogJ2xvZ2luJyxcbiAqICAgICBjYW5BY3RpdmF0ZTogW2d1ZXN0R3VhcmRdLFxuICogICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9sb2dpbi5wYWdlJyksXG4gKiAgIH0sXG4gKiBdO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBndWVzdEd1YXJkOiBDYW5BY3RpdmF0ZUZuID0gKCk6IGJvb2xlYW4gfCBVcmxUcmVlID0+IHtcbiAgY29uc3QgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgY29uc3QgY29uZmlnID0gaW5qZWN0KFZBTFRFQ0hfQVVUSF9DT05GSUcpO1xuXG4gIGlmICghYXV0aFNlcnZpY2UuaXNBdXRoZW50aWNhdGVkKCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiByb3V0ZXIuY3JlYXRlVXJsVHJlZShbY29uZmlnLmhvbWVSb3V0ZV0pO1xufTtcblxuLyoqXG4gKiBGYWN0b3J5IHBhcmEgY3JlYXIgZ3VhcmQgZGUgcGVybWlzb3MuXG4gKiBWZXJpZmljYSBzaSBlbCB1c3VhcmlvIHRpZW5lIGVsIHBlcm1pc28gZXNwZWNpZmljYWRvLlxuICpcbiAqIEBwYXJhbSBwZXJtaXNzaW9ucyAtIFBlcm1pc28gbyBsaXN0YSBkZSBwZXJtaXNvcyByZXF1ZXJpZG9zIChPUilcbiAqIEByZXR1cm5zIEd1YXJkIGZ1bmN0aW9uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IGF1dGhHdWFyZCwgcGVybWlzc2lvbkd1YXJkIH0gZnJvbSAndmFsdGVjaC1jb21wb25lbnRzJztcbiAqXG4gKiBjb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAqICAge1xuICogICAgIHBhdGg6ICd0ZW1wbGF0ZXMnLFxuICogICAgIGNhbkFjdGl2YXRlOiBbYXV0aEd1YXJkLCBwZXJtaXNzaW9uR3VhcmQoJ3RlbXBsYXRlczpyZWFkJyldLFxuICogICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi90ZW1wbGF0ZXMucGFnZScpLFxuICogICB9LFxuICogICB7XG4gKiAgICAgcGF0aDogJ2FkbWluJyxcbiAqICAgICBjYW5BY3RpdmF0ZTogW2F1dGhHdWFyZCwgcGVybWlzc2lvbkd1YXJkKFsnYWRtaW46KicsICdzdXBlcl9hZG1pbiddKV0sXG4gKiAgICAgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL2FkbWluLnBhZ2UnKSxcbiAqICAgfSxcbiAqIF07XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBlcm1pc3Npb25HdWFyZChwZXJtaXNzaW9uczogc3RyaW5nIHwgc3RyaW5nW10pOiBDYW5BY3RpdmF0ZUZuIHtcbiAgcmV0dXJuICgpOiBib29sZWFuIHwgVXJsVHJlZSA9PiB7XG4gICAgY29uc3QgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICAgIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICAgIGNvbnN0IGNvbmZpZyA9IGluamVjdChWQUxURUNIX0FVVEhfQ09ORklHKTtcblxuICAgIGNvbnN0IHBlcm1BcnJheSA9IEFycmF5LmlzQXJyYXkocGVybWlzc2lvbnMpID8gcGVybWlzc2lvbnMgOiBbcGVybWlzc2lvbnNdO1xuXG4gICAgaWYgKGF1dGhTZXJ2aWNlLmhhc0FueVBlcm1pc3Npb24ocGVybUFycmF5KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc29sZS53YXJuKGBbVmFsdGVjaEF1dGhdIFBlcm1pc28gZGVuZWdhZG8uIFJlcXVlcmlkbzogJHtwZXJtQXJyYXkuam9pbignIG8gJyl9YCk7XG4gICAgcmV0dXJuIHJvdXRlci5jcmVhdGVVcmxUcmVlKFtjb25maWcudW5hdXRob3JpemVkUm91dGVdKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBGYWN0b3J5IGRlIGd1YXJkIFJCQUMgcGFyYW1ldHJpemFibGUg4oCUIGRlZmVuc2UtaW4tZGVwdGggYSBuaXZlbCBkZSBSVVRBLlxuICpcbiAqIFZhcmlhbnRlIGVyZ29uw7NtaWNhIGRlIHtAbGluayBwZXJtaXNzaW9uR3VhcmR9IGNvbiBmaXJtYSB2YXJpw6FkaWNhXG4gKiAoYHJiYWNHdWFyZCgnYTpyZWFkJywgJ2I6bWFuYWdlJylgIGVuIHZleiBkZSBgcGVybWlzc2lvbkd1YXJkKFsnYTpyZWFkJywgJ2I6bWFuYWdlJ10pYCksXG4gKiBwZW5zYWRhIHBhcmEgZ2F0ZWFyIHZpc3RhcyBhZG1pbmlzdHJhdGl2YXMgbW9udGFkYXMgdsOtYSBsb3MgYHByb3ZpZGVWYWx0ZWNoKlJvdXRlc2BcbiAqIGRlIGxhIGxpYi4gUGFzYSBzaSBlbCB1c3VhcmlvIHRpZW5lICoqQUwgTUVOT1MgVU5PKiogZGUgbG9zIHBlcm1pc29zIChPUiksIGlndWFsIHF1ZVxuICogZWwgcmVzdG8gZGVsIGdhdGluZyBkZWwgZmFjdG9yeSAoYCp2YWxIYXNQZXJtaXNzaW9uYCwgbWVuw7opLiBFbCBtYXRjaCBkZSB3aWxkY2FyZHNcbiAqIChgKjoqYCwgYHJlc291cmNlOipgLCBgKjphY3Rpb25gKSBsbyByZXN1ZWx2ZSBgQXV0aFNlcnZpY2UuaGFzUGVybWlzc2lvbmAuXG4gKlxuICogRXMgdW5hIGNhcGEgQURJQ0lPTkFMIGFsIGdhdGluZyBmaW5vIGRlbnRybyBkZSBsb3MgY29tcG9uZW50ZXMgKGJvdG9uZXMgcG9yXG4gKiBgKnZhbEhhc1Blcm1pc3Npb25gKSB5IGFsIDQwMyBkZWwgYmFja2VuZCDigJQgbm8gbG9zIHJlZW1wbGF6YS4gU2luIHBlcm1pc28gcmVkaXJpZ2VcbiAqIGEgYHVuYXV0aG9yaXplZFJvdXRlYCAobWlzbW8gZGVzdGlubyBxdWUgYHBlcm1pc3Npb25HdWFyZGApLlxuICpcbiAqIEBwYXJhbSBwZXJtaXNzaW9ucyAtIFVubyBvIG3DoXMgcGVybWlzb3MgcmVxdWVyaWRvcyAoT1IpXG4gKiBAcmV0dXJucyBHdWFyZCBmdW5jdGlvblxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyByYmFjR3VhcmQgfSBmcm9tICd2YWx0ZWNoLWNvbXBvbmVudHMnO1xuICpcbiAqIGNvbnN0IHJvdXRlczogUm91dGVzID0gW1xuICogICB7XG4gKiAgICAgcGF0aDogJ2FwaS1rZXlzJyxcbiAqICAgICBjYW5BY3RpdmF0ZTogW3JiYWNHdWFyZCgnYXBpLWtleXM6cmVhZCcpXSxcbiAqICAgICBjb21wb25lbnQ6IEFwaUtleXNWaWV3Q29tcG9uZW50LFxuICogICB9LFxuICogICB7XG4gKiAgICAgcGF0aDogJ3Blcm1pc3Npb25zJyxcbiAqICAgICBjYW5BY3RpdmF0ZTogW3JiYWNHdWFyZCgncm9sZXM6cmVhZCcsICdyYmFjOm1hbmFnZScpXSxcbiAqICAgICBjb21wb25lbnQ6IFBlcm1pc3Npb25zVmlld0NvbXBvbmVudCxcbiAqICAgfSxcbiAqIF07XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJiYWNHdWFyZCguLi5wZXJtaXNzaW9uczogc3RyaW5nW10pOiBDYW5BY3RpdmF0ZUZuIHtcbiAgcmV0dXJuICgpOiBib29sZWFuIHwgVXJsVHJlZSA9PiB7XG4gICAgY29uc3QgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICAgIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICAgIGNvbnN0IGNvbmZpZyA9IGluamVjdChWQUxURUNIX0FVVEhfQ09ORklHKTtcblxuICAgIGlmIChwZXJtaXNzaW9ucy5sZW5ndGggPT09IDAgfHwgYXV0aFNlcnZpY2UuaGFzQW55UGVybWlzc2lvbihwZXJtaXNzaW9ucykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnNvbGUud2FybihgW1ZhbHRlY2hBdXRoXSBBY2Nlc28gYSBydXRhIGRlbmVnYWRvLiBSZXF1ZXJpZG86ICR7cGVybWlzc2lvbnMuam9pbignIG8gJyl9YCk7XG4gICAgcmV0dXJuIHJvdXRlci5jcmVhdGVVcmxUcmVlKFtjb25maWcudW5hdXRob3JpemVkUm91dGVdKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBHdWFyZCBxdWUgbGVlIHBlcm1pc29zIGRlc2RlIHJvdXRlLmRhdGEuXG4gKiBQZXJtaXRlIGNvbmZpZ3VyYXIgcGVybWlzb3MgZGlyZWN0YW1lbnRlIGVuIGxhIGRlZmluaWNpw7NuIGRlIHJ1dGFzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBhdXRoR3VhcmQsIHBlcm1pc3Npb25HdWFyZEZyb21Sb3V0ZSB9IGZyb20gJ3ZhbHRlY2gtY29tcG9uZW50cyc7XG4gKlxuICogY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gKiAgIHtcbiAqICAgICBwYXRoOiAnYWRtaW4vdXNlcnMnLFxuICogICAgIGNhbkFjdGl2YXRlOiBbYXV0aEd1YXJkLCBwZXJtaXNzaW9uR3VhcmRGcm9tUm91dGVdLFxuICogICAgIGRhdGE6IHtcbiAqICAgICAgIHBlcm1pc3Npb25zOiBbJ3VzZXJzOnJlYWQnLCAndXNlcnM6bWFuYWdlJ10sXG4gKiAgICAgICByZXF1aXJlQWxsOiBmYWxzZSAgLy8gdHJ1ZSA9IEFORCwgZmFsc2UgPSBPUiAoZGVmYXVsdClcbiAqICAgICB9LFxuICogICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi91c2Vycy5wYWdlJyksXG4gKiAgIH0sXG4gKiBdO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBwZXJtaXNzaW9uR3VhcmRGcm9tUm91dGU6IENhbkFjdGl2YXRlRm4gPSAoXG4gIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90XG4pOiBib29sZWFuIHwgVXJsVHJlZSA9PiB7XG4gIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIGNvbnN0IGNvbmZpZyA9IGluamVjdChWQUxURUNIX0FVVEhfQ09ORklHKTtcblxuICBjb25zdCBwZXJtaXNzaW9ucyA9IHJvdXRlLmRhdGFbJ3Blcm1pc3Npb25zJ10gYXMgc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gIGNvbnN0IHJlcXVpcmVBbGwgPSByb3V0ZS5kYXRhWydyZXF1aXJlQWxsJ10gYXMgYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICBpZiAoIXBlcm1pc3Npb25zIHx8IHBlcm1pc3Npb25zLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY29uc3QgaGFzQWNjZXNzID0gcmVxdWlyZUFsbFxuICAgID8gYXV0aFNlcnZpY2UuaGFzQWxsUGVybWlzc2lvbnMocGVybWlzc2lvbnMpXG4gICAgOiBhdXRoU2VydmljZS5oYXNBbnlQZXJtaXNzaW9uKHBlcm1pc3Npb25zKTtcblxuICBpZiAoaGFzQWNjZXNzKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb25zb2xlLndhcm4oXG4gICAgYFtWYWx0ZWNoQXV0aF0gUGVybWlzbyBkZW5lZ2Fkby4gUmVxdWVyaWRvOiAke3Blcm1pc3Npb25zLmpvaW4ocmVxdWlyZUFsbCA/ICcgeSAnIDogJyBvICcpfWBcbiAgKTtcbiAgcmV0dXJuIHJvdXRlci5jcmVhdGVVcmxUcmVlKFtjb25maWcudW5hdXRob3JpemVkUm91dGVdKTtcbn07XG5cbi8qKlxuICogR3VhcmQgcXVlIHZlcmlmaWNhIHNpIGVsIHVzdWFyaW8gZXMgc3VwZXIgYWRtaW4uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IGF1dGhHdWFyZCwgc3VwZXJBZG1pbkd1YXJkIH0gZnJvbSAndmFsdGVjaC1jb21wb25lbnRzJztcbiAqXG4gKiBjb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAqICAge1xuICogICAgIHBhdGg6ICdzdXBlci1hZG1pbicsXG4gKiAgICAgY2FuQWN0aXZhdGU6IFthdXRoR3VhcmQsIHN1cGVyQWRtaW5HdWFyZF0sXG4gKiAgICAgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL3N1cGVyLWFkbWluLnBhZ2UnKSxcbiAqICAgfSxcbiAqIF07XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IHN1cGVyQWRtaW5HdWFyZDogQ2FuQWN0aXZhdGVGbiA9ICgpOiBib29sZWFuIHwgVXJsVHJlZSA9PiB7XG4gIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIGNvbnN0IGNvbmZpZyA9IGluamVjdChWQUxURUNIX0FVVEhfQ09ORklHKTtcblxuICBpZiAoYXV0aFNlcnZpY2UuaXNTdXBlckFkbWluKCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbnNvbGUud2FybignW1ZhbHRlY2hBdXRoXSBBY2Nlc28gZGUgc3VwZXIgYWRtaW4gcmVxdWVyaWRvJyk7XG4gIHJldHVybiByb3V0ZXIuY3JlYXRlVXJsVHJlZShbY29uZmlnLnVuYXV0aG9yaXplZFJvdXRlXSk7XG59O1xuXG4vKipcbiAqIEd1YXJkIHF1ZSB2ZXJpZmljYSBzaSBlbCB1c3VhcmlvIHRpZW5lIHVuIHJvbCBlc3BlY8OtZmljby5cbiAqXG4gKiBAcGFyYW0gcm9sZXMgLSBSb2wgbyBsaXN0YSBkZSByb2xlcyByZXF1ZXJpZG9zIChPUilcbiAqIEByZXR1cm5zIEd1YXJkIGZ1bmN0aW9uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IGF1dGhHdWFyZCwgcm9sZUd1YXJkIH0gZnJvbSAndmFsdGVjaC1jb21wb25lbnRzJztcbiAqXG4gKiBjb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAqICAge1xuICogICAgIHBhdGg6ICdlZGl0b3InLFxuICogICAgIGNhbkFjdGl2YXRlOiBbYXV0aEd1YXJkLCByb2xlR3VhcmQoWydlZGl0b3InLCAnYWRtaW4nXSldLFxuICogICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9lZGl0b3IucGFnZScpLFxuICogICB9LFxuICogXTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcm9sZUd1YXJkKHJvbGVzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IENhbkFjdGl2YXRlRm4ge1xuICByZXR1cm4gKCk6IGJvb2xlYW4gfCBVcmxUcmVlID0+IHtcbiAgICBjb25zdCBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gICAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gICAgY29uc3QgY29uZmlnID0gaW5qZWN0KFZBTFRFQ0hfQVVUSF9DT05GSUcpO1xuXG4gICAgY29uc3Qgcm9sZUFycmF5ID0gQXJyYXkuaXNBcnJheShyb2xlcykgPyByb2xlcyA6IFtyb2xlc107XG5cbiAgICBjb25zdCBoYXNSb2xlID0gcm9sZUFycmF5LnNvbWUocm9sZSA9PiBhdXRoU2VydmljZS5oYXNSb2xlKHJvbGUpKTtcblxuICAgIGlmIChoYXNSb2xlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zb2xlLndhcm4oYFtWYWx0ZWNoQXV0aF0gUm9sIHJlcXVlcmlkbzogJHtyb2xlQXJyYXkuam9pbignIG8gJyl9YCk7XG4gICAgcmV0dXJuIHJvdXRlci5jcmVhdGVVcmxUcmVlKFtjb25maWcudW5hdXRob3JpemVkUm91dGVdKTtcbiAgfTtcbn1cbiJdfQ==
@@ -75,7 +75,7 @@ export { VALTECH_AUTH_CONFIG, provideValtechAuth, provideValtechAuthInterceptor,
75
75
  // Servicio principal
76
76
  export { AuthService } from './auth.service';
77
77
  // Guards
78
- export { authGuard, guestGuard, permissionGuard, permissionGuardFromRoute, superAdminGuard, roleGuard, } from './guards';
78
+ export { authGuard, guestGuard, permissionGuard, permissionGuardFromRoute, rbacGuard, superAdminGuard, roleGuard, } from './guards';
79
79
  // Interceptor (para uso avanzado)
80
80
  export { authInterceptor } from './interceptor';
81
81
  // Servicios internos (para testing o extensión)
@@ -95,4 +95,4 @@ export { HandoffService, HANDOFF_TOKEN_PARAM, HANDOFF_ROUTE_PARAM } from './hand
95
95
  export { OrgSwitchService } from './org-switch.service';
96
96
  // Cross-app cross-org notification click handler
97
97
  export { NotificationActionService } from './notification-action.service';
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2F1dGgvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFFRztBQUVILFFBQVE7QUFDUixjQUFjLFNBQVMsQ0FBQztBQUV4QixnQkFBZ0I7QUFDaEIsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsNkJBQTZCLEVBQzdCLG1CQUFtQixHQUNwQixNQUFNLFVBQVUsQ0FBQztBQUVsQixxQkFBcUI7QUFDckIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLFNBQVM7QUFDVCxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixlQUFlLEVBQ2Ysd0JBQXdCLEVBQ3hCLGVBQWUsRUFDZixTQUFTLEdBQ1YsTUFBTSxVQUFVLENBQUM7QUFFbEIsa0NBQWtDO0FBQ2xDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEQsZ0RBQWdEO0FBQ2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsa0RBQWtEO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbkQsdUJBQXVCO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVwRSx3RUFBd0U7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBUTdGLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd4RCxpREFBaUQ7QUFDakQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFZhbHRlY2ggQXV0aCBTZXJ2aWNlXG4gKlxuICogU2VydmljaW8gZGUgYXV0ZW50aWNhY2nDs24gcmV1dGlsaXphYmxlIHBhcmEgYXBsaWNhY2lvbmVzIEFuZ3VsYXIuXG4gKiBQcm9wb3JjaW9uYSBhdXRlbnRpY2FjacOzbiBjb24gQXV0aFYyLCBNRkEsIHNpbmNyb25pemFjacOzbiBlbnRyZSBwZXN0YcOxYXMsXG4gKiByZWZyZXNoIHByb2FjdGl2byBkZSB0b2tlbnMsIHkgcmVnaXN0cm8gYXV0b23DoXRpY28gZGUgZGlzcG9zaXRpdm9zIHBhcmFcbiAqIHB1c2ggbm90aWZpY2F0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gRW4gbWFpbi50c1xuICogaW1wb3J0IHsgYm9vdHN0cmFwQXBwbGljYXRpb24gfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbiAqIGltcG9ydCB7IHByb3ZpZGVWYWx0ZWNoQXV0aCwgcHJvdmlkZVZhbHRlY2hGaXJlYmFzZSB9IGZyb20gJ3ZhbHRlY2gtY29tcG9uZW50cyc7XG4gKiBpbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJy4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbiAqXG4gKiBib290c3RyYXBBcHBsaWNhdGlvbihBcHBDb21wb25lbnQsIHtcbiAqICAgcHJvdmlkZXJzOiBbXG4gKiAgICAgcHJvdmlkZVZhbHRlY2hGaXJlYmFzZShlbnZpcm9ubWVudC5maXJlYmFzZSksXG4gKiAgICAgcHJvdmlkZVZhbHRlY2hBdXRoKHtcbiAqICAgICAgIGFwaVVybDogZW52aXJvbm1lbnQuYXBpVXJsLFxuICogICAgICAgZW5hYmxlRmlyZWJhc2VJbnRlZ3JhdGlvbjogdHJ1ZSxcbiAqICAgICAgIGVuYWJsZURldmljZVJlZ2lzdHJhdGlvbjogdHJ1ZSwgLy8gQXV0by1yZWdpc3RyYSBkaXNwb3NpdGl2b3MgcGFyYSBwdXNoXG4gKiAgICAgfSksXG4gKiAgIF0sXG4gKiB9KTtcbiAqXG4gKiAvLyBFbiBhcHAucm91dGVzLnRzXG4gKiBpbXBvcnQgeyBhdXRoR3VhcmQsIGd1ZXN0R3VhcmQsIHBlcm1pc3Npb25HdWFyZCB9IGZyb20gJ3ZhbHRlY2gtY29tcG9uZW50cyc7XG4gKlxuICogY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gKiAgIHsgcGF0aDogJ2xvZ2luJywgY2FuQWN0aXZhdGU6IFtndWVzdEd1YXJkXSwgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL2xvZ2luLnBhZ2UnKSB9LFxuICogICB7IHBhdGg6ICdkYXNoYm9hcmQnLCBjYW5BY3RpdmF0ZTogW2F1dGhHdWFyZF0sIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9kYXNoYm9hcmQucGFnZScpIH0sXG4gKiAgIHsgcGF0aDogJ2FkbWluJywgY2FuQWN0aXZhdGU6IFthdXRoR3VhcmQsIHBlcm1pc3Npb25HdWFyZCgnYWRtaW46KicpXSwgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL2FkbWluLnBhZ2UnKSB9LFxuICogXTtcbiAqXG4gKiAvLyBFbiBjb21wb25lbnRlc1xuICogaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICd2YWx0ZWNoLWNvbXBvbmVudHMnO1xuICpcbiAqIEBDb21wb25lbnQoey4uLn0pXG4gKiBleHBvcnQgY2xhc3MgTG9naW5Db21wb25lbnQge1xuICogICBwcml2YXRlIGF1dGggPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICpcbiAqICAgYXN5bmMgbG9naW4oKSB7XG4gKiAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5hdXRoLnNpZ25pbih7IGVtYWlsLCBwYXNzd29yZCB9KSk7XG4gKiAgICAgaWYgKHRoaXMuYXV0aC5tZmFQZW5kaW5nKCkucmVxdWlyZWQpIHtcbiAqICAgICAgIC8vIE1vc3RyYXIgVUkgZGUgTUZBXG4gKiAgICAgfSBlbHNlIHtcbiAqICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2Rhc2hib2FyZCddKTtcbiAqICAgICB9XG4gKiAgIH1cbiAqXG4gKiAgIC8vIEhhYmlsaXRhciBub3RpZmljYWNpb25lcyBwdXNoIChzb2xpY2l0YSBwZXJtaXNvcyArIHJlZ2lzdHJhIGRpc3Bvc2l0aXZvKVxuICogICBhc3luYyBlbmFibGVOb3RpZmljYXRpb25zKCkge1xuICogICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYXV0aC5lbmFibGVOb3RpZmljYXRpb25zKCk7XG4gKiAgICAgaWYgKHJlc3VsdC5ncmFudGVkKSB7XG4gKiAgICAgICBjb25zb2xlLmxvZygnTm90aWZpY2FjaW9uZXMgaGFiaWxpdGFkYXMnKTtcbiAqICAgICB9XG4gKiAgIH1cbiAqXG4gKiAgIC8vIFZlcmlmaWNhciBlc3RhZG8gZGUgcGVybWlzb3NcbiAqICAgZ2V0IGNhblJlY2VpdmVOb3RpZmljYXRpb25zKCk6IGJvb2xlYW4ge1xuICogICAgIHJldHVybiB0aGlzLmF1dGguZ2V0Tm90aWZpY2F0aW9uUGVybWlzc2lvblN0YXRlKCkgPT09ICdncmFudGVkJztcbiAqICAgfVxuICpcbiAqICAgLy8gRW4gdGVtcGxhdGU6IHVzYXIgc2lnbmFscyBkaXJlY3RhbWVudGVcbiAqICAgLy8ge3sgYXV0aC51c2VyKCk/LmVtYWlsIH19XG4gKiAgIC8vIEBpZiAoYXV0aC5oYXNQZXJtaXNzaW9uKCd0ZW1wbGF0ZXM6ZWRpdCcpKSB7IC4uLiB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuXG4vLyBUaXBvc1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5cbi8vIENvbmZpZ3VyYWNpw7NuXG5leHBvcnQge1xuICBWQUxURUNIX0FVVEhfQ09ORklHLFxuICBwcm92aWRlVmFsdGVjaEF1dGgsXG4gIHByb3ZpZGVWYWx0ZWNoQXV0aEludGVyY2VwdG9yLFxuICBERUZBVUxUX0FVVEhfQ09ORklHLFxufSBmcm9tICcuL2NvbmZpZyc7XG5cbi8vIFNlcnZpY2lvIHByaW5jaXBhbFxuZXhwb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5cbi8vIEd1YXJkc1xuZXhwb3J0IHtcbiAgYXV0aEd1YXJkLFxuICBndWVzdEd1YXJkLFxuICBwZXJtaXNzaW9uR3VhcmQsXG4gIHBlcm1pc3Npb25HdWFyZEZyb21Sb3V0ZSxcbiAgc3VwZXJBZG1pbkd1YXJkLFxuICByb2xlR3VhcmQsXG59IGZyb20gJy4vZ3VhcmRzJztcblxuLy8gSW50ZXJjZXB0b3IgKHBhcmEgdXNvIGF2YW56YWRvKVxuZXhwb3J0IHsgYXV0aEludGVyY2VwdG9yIH0gZnJvbSAnLi9pbnRlcmNlcHRvcic7XG5cbi8vIFNlcnZpY2lvcyBpbnRlcm5vcyAocGFyYSB0ZXN0aW5nIG8gZXh0ZW5zacOzbilcbmV4cG9ydCB7IEF1dGhTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL2F1dGgtc3RhdGUuc2VydmljZSc7XG5leHBvcnQgeyBUb2tlblNlcnZpY2UgfSBmcm9tICcuL3Rva2VuLnNlcnZpY2UnO1xuZXhwb3J0IHsgQXV0aFN0b3JhZ2VTZXJ2aWNlLCBMT0dHRURfSU5fSElOVF9DT09LSUUgfSBmcm9tICcuL3N0b3JhZ2Uuc2VydmljZSc7XG5leHBvcnQgeyBBdXRoU3luY1NlcnZpY2UgfSBmcm9tICcuL3N5bmMuc2VydmljZSc7XG5cbi8vIFNlcnZpY2lvcyBkZSBnZXN0acOzbiBkZSBkaXNwb3NpdGl2b3MgeSBzZXNpb25lc1xuZXhwb3J0IHsgRGV2aWNlU2VydmljZSB9IGZyb20gJy4vZGV2aWNlLnNlcnZpY2UnO1xuZXhwb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL3Nlc3Npb24uc2VydmljZSc7XG5cbi8vIE9BdXRoIChMb2dpbiBzb2NpYWwpXG5leHBvcnQgeyBPQXV0aFNlcnZpY2UgfSBmcm9tICcuL29hdXRoLnNlcnZpY2UnO1xuZXhwb3J0IHsgT0F1dGhDYWxsYmFja0NvbXBvbmVudCB9IGZyb20gJy4vb2F1dGgtY2FsbGJhY2suY29tcG9uZW50JztcblxuLy8gQ3Jvc3MtYXBwIHNlc3Npb24gaGFuZG9mZiAoT0F1dGggQXV0aG9yaXphdGlvbiBDb2RlIHBhdHRlcm4gaW50ZXJuYWwpXG5leHBvcnQgeyBIYW5kb2ZmU2VydmljZSwgSEFORE9GRl9UT0tFTl9QQVJBTSwgSEFORE9GRl9ST1VURV9QQVJBTSB9IGZyb20gJy4vaGFuZG9mZi5zZXJ2aWNlJztcbmV4cG9ydCB0eXBlIHtcbiAgSGFuZG9mZkNyZWF0ZVJlcXVlc3QsXG4gIEhhbmRvZmZDcmVhdGVSZXNwb25zZSxcbiAgSGFuZG9mZkV4Y2hhbmdlUmVzcG9uc2UsXG4gIERldGVjdEFuZEV4Y2hhbmdlT3B0aW9ucyxcbn0gZnJvbSAnLi9oYW5kb2ZmLnNlcnZpY2UnO1xuXG4vLyBBY3RpdmUgb3JnYW5pemF0aW9uIHN3aXRjaCBvcmNoZXN0cmF0aW9uXG5leHBvcnQgeyBPcmdTd2l0Y2hTZXJ2aWNlIH0gZnJvbSAnLi9vcmctc3dpdGNoLnNlcnZpY2UnO1xuZXhwb3J0IHR5cGUgeyBPcmdDaGFuZ2VkRXZlbnQsIFN3aXRjaE9yZ09wdGlvbnMgfSBmcm9tICcuL29yZy1zd2l0Y2guc2VydmljZSc7XG5cbi8vIENyb3NzLWFwcCBjcm9zcy1vcmcgbm90aWZpY2F0aW9uIGNsaWNrIGhhbmRsZXJcbmV4cG9ydCB7IE5vdGlmaWNhdGlvbkFjdGlvblNlcnZpY2UgfSBmcm9tICcuL25vdGlmaWNhdGlvbi1hY3Rpb24uc2VydmljZSc7XG5leHBvcnQgdHlwZSB7IE5vdGlmaWNhdGlvbk9wZW5SZXN1bHQgfSBmcm9tICcuL25vdGlmaWNhdGlvbi1hY3Rpb24uc2VydmljZSc7XG4iXX0=
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2F1dGgvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFFRztBQUVILFFBQVE7QUFDUixjQUFjLFNBQVMsQ0FBQztBQUV4QixnQkFBZ0I7QUFDaEIsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsNkJBQTZCLEVBQzdCLG1CQUFtQixHQUNwQixNQUFNLFVBQVUsQ0FBQztBQUVsQixxQkFBcUI7QUFDckIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLFNBQVM7QUFDVCxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixlQUFlLEVBQ2Ysd0JBQXdCLEVBQ3hCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsU0FBUyxHQUNWLE1BQU0sVUFBVSxDQUFDO0FBRWxCLGtDQUFrQztBQUNsQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhELGdEQUFnRDtBQUNoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpELGtEQUFrRDtBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELHVCQUF1QjtBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFcEUsd0VBQXdFO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQVE3RiwyQ0FBMkM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHeEQsaURBQWlEO0FBQ2pELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBWYWx0ZWNoIEF1dGggU2VydmljZVxuICpcbiAqIFNlcnZpY2lvIGRlIGF1dGVudGljYWNpw7NuIHJldXRpbGl6YWJsZSBwYXJhIGFwbGljYWNpb25lcyBBbmd1bGFyLlxuICogUHJvcG9yY2lvbmEgYXV0ZW50aWNhY2nDs24gY29uIEF1dGhWMiwgTUZBLCBzaW5jcm9uaXphY2nDs24gZW50cmUgcGVzdGHDsWFzLFxuICogcmVmcmVzaCBwcm9hY3Rpdm8gZGUgdG9rZW5zLCB5IHJlZ2lzdHJvIGF1dG9tw6F0aWNvIGRlIGRpc3Bvc2l0aXZvcyBwYXJhXG4gKiBwdXNoIG5vdGlmaWNhdGlvbnMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIEVuIG1haW4udHNcbiAqIGltcG9ydCB7IGJvb3RzdHJhcEFwcGxpY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG4gKiBpbXBvcnQgeyBwcm92aWRlVmFsdGVjaEF1dGgsIHByb3ZpZGVWYWx0ZWNoRmlyZWJhc2UgfSBmcm9tICd2YWx0ZWNoLWNvbXBvbmVudHMnO1xuICogaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XG4gKlxuICogYm9vdHN0cmFwQXBwbGljYXRpb24oQXBwQ29tcG9uZW50LCB7XG4gKiAgIHByb3ZpZGVyczogW1xuICogICAgIHByb3ZpZGVWYWx0ZWNoRmlyZWJhc2UoZW52aXJvbm1lbnQuZmlyZWJhc2UpLFxuICogICAgIHByb3ZpZGVWYWx0ZWNoQXV0aCh7XG4gKiAgICAgICBhcGlVcmw6IGVudmlyb25tZW50LmFwaVVybCxcbiAqICAgICAgIGVuYWJsZUZpcmViYXNlSW50ZWdyYXRpb246IHRydWUsXG4gKiAgICAgICBlbmFibGVEZXZpY2VSZWdpc3RyYXRpb246IHRydWUsIC8vIEF1dG8tcmVnaXN0cmEgZGlzcG9zaXRpdm9zIHBhcmEgcHVzaFxuICogICAgIH0pLFxuICogICBdLFxuICogfSk7XG4gKlxuICogLy8gRW4gYXBwLnJvdXRlcy50c1xuICogaW1wb3J0IHsgYXV0aEd1YXJkLCBndWVzdEd1YXJkLCBwZXJtaXNzaW9uR3VhcmQgfSBmcm9tICd2YWx0ZWNoLWNvbXBvbmVudHMnO1xuICpcbiAqIGNvbnN0IHJvdXRlczogUm91dGVzID0gW1xuICogICB7IHBhdGg6ICdsb2dpbicsIGNhbkFjdGl2YXRlOiBbZ3Vlc3RHdWFyZF0sIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9sb2dpbi5wYWdlJykgfSxcbiAqICAgeyBwYXRoOiAnZGFzaGJvYXJkJywgY2FuQWN0aXZhdGU6IFthdXRoR3VhcmRdLCBsb2FkQ29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vZGFzaGJvYXJkLnBhZ2UnKSB9LFxuICogICB7IHBhdGg6ICdhZG1pbicsIGNhbkFjdGl2YXRlOiBbYXV0aEd1YXJkLCBwZXJtaXNzaW9uR3VhcmQoJ2FkbWluOionKV0sIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9hZG1pbi5wYWdlJykgfSxcbiAqIF07XG4gKlxuICogLy8gRW4gY29tcG9uZW50ZXNcbiAqIGltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAndmFsdGVjaC1jb21wb25lbnRzJztcbiAqXG4gKiBAQ29tcG9uZW50KHsuLi59KVxuICogZXhwb3J0IGNsYXNzIExvZ2luQ29tcG9uZW50IHtcbiAqICAgcHJpdmF0ZSBhdXRoID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAqXG4gKiAgIGFzeW5jIGxvZ2luKCkge1xuICogICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuYXV0aC5zaWduaW4oeyBlbWFpbCwgcGFzc3dvcmQgfSkpO1xuICogICAgIGlmICh0aGlzLmF1dGgubWZhUGVuZGluZygpLnJlcXVpcmVkKSB7XG4gKiAgICAgICAvLyBNb3N0cmFyIFVJIGRlIE1GQVxuICogICAgIH0gZWxzZSB7XG4gKiAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9kYXNoYm9hcmQnXSk7XG4gKiAgICAgfVxuICogICB9XG4gKlxuICogICAvLyBIYWJpbGl0YXIgbm90aWZpY2FjaW9uZXMgcHVzaCAoc29saWNpdGEgcGVybWlzb3MgKyByZWdpc3RyYSBkaXNwb3NpdGl2bylcbiAqICAgYXN5bmMgZW5hYmxlTm90aWZpY2F0aW9ucygpIHtcbiAqICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmF1dGguZW5hYmxlTm90aWZpY2F0aW9ucygpO1xuICogICAgIGlmIChyZXN1bHQuZ3JhbnRlZCkge1xuICogICAgICAgY29uc29sZS5sb2coJ05vdGlmaWNhY2lvbmVzIGhhYmlsaXRhZGFzJyk7XG4gKiAgICAgfVxuICogICB9XG4gKlxuICogICAvLyBWZXJpZmljYXIgZXN0YWRvIGRlIHBlcm1pc29zXG4gKiAgIGdldCBjYW5SZWNlaXZlTm90aWZpY2F0aW9ucygpOiBib29sZWFuIHtcbiAqICAgICByZXR1cm4gdGhpcy5hdXRoLmdldE5vdGlmaWNhdGlvblBlcm1pc3Npb25TdGF0ZSgpID09PSAnZ3JhbnRlZCc7XG4gKiAgIH1cbiAqXG4gKiAgIC8vIEVuIHRlbXBsYXRlOiB1c2FyIHNpZ25hbHMgZGlyZWN0YW1lbnRlXG4gKiAgIC8vIHt7IGF1dGgudXNlcigpPy5lbWFpbCB9fVxuICogICAvLyBAaWYgKGF1dGguaGFzUGVybWlzc2lvbigndGVtcGxhdGVzOmVkaXQnKSkgeyAuLi4gfVxuICogfVxuICogYGBgXG4gKi9cblxuLy8gVGlwb3NcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuXG4vLyBDb25maWd1cmFjacOzblxuZXhwb3J0IHtcbiAgVkFMVEVDSF9BVVRIX0NPTkZJRyxcbiAgcHJvdmlkZVZhbHRlY2hBdXRoLFxuICBwcm92aWRlVmFsdGVjaEF1dGhJbnRlcmNlcHRvcixcbiAgREVGQVVMVF9BVVRIX0NPTkZJRyxcbn0gZnJvbSAnLi9jb25maWcnO1xuXG4vLyBTZXJ2aWNpbyBwcmluY2lwYWxcbmV4cG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuXG4vLyBHdWFyZHNcbmV4cG9ydCB7XG4gIGF1dGhHdWFyZCxcbiAgZ3Vlc3RHdWFyZCxcbiAgcGVybWlzc2lvbkd1YXJkLFxuICBwZXJtaXNzaW9uR3VhcmRGcm9tUm91dGUsXG4gIHJiYWNHdWFyZCxcbiAgc3VwZXJBZG1pbkd1YXJkLFxuICByb2xlR3VhcmQsXG59IGZyb20gJy4vZ3VhcmRzJztcblxuLy8gSW50ZXJjZXB0b3IgKHBhcmEgdXNvIGF2YW56YWRvKVxuZXhwb3J0IHsgYXV0aEludGVyY2VwdG9yIH0gZnJvbSAnLi9pbnRlcmNlcHRvcic7XG5cbi8vIFNlcnZpY2lvcyBpbnRlcm5vcyAocGFyYSB0ZXN0aW5nIG8gZXh0ZW5zacOzbilcbmV4cG9ydCB7IEF1dGhTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL2F1dGgtc3RhdGUuc2VydmljZSc7XG5leHBvcnQgeyBUb2tlblNlcnZpY2UgfSBmcm9tICcuL3Rva2VuLnNlcnZpY2UnO1xuZXhwb3J0IHsgQXV0aFN0b3JhZ2VTZXJ2aWNlLCBMT0dHRURfSU5fSElOVF9DT09LSUUgfSBmcm9tICcuL3N0b3JhZ2Uuc2VydmljZSc7XG5leHBvcnQgeyBBdXRoU3luY1NlcnZpY2UgfSBmcm9tICcuL3N5bmMuc2VydmljZSc7XG5cbi8vIFNlcnZpY2lvcyBkZSBnZXN0acOzbiBkZSBkaXNwb3NpdGl2b3MgeSBzZXNpb25lc1xuZXhwb3J0IHsgRGV2aWNlU2VydmljZSB9IGZyb20gJy4vZGV2aWNlLnNlcnZpY2UnO1xuZXhwb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL3Nlc3Npb24uc2VydmljZSc7XG5cbi8vIE9BdXRoIChMb2dpbiBzb2NpYWwpXG5leHBvcnQgeyBPQXV0aFNlcnZpY2UgfSBmcm9tICcuL29hdXRoLnNlcnZpY2UnO1xuZXhwb3J0IHsgT0F1dGhDYWxsYmFja0NvbXBvbmVudCB9IGZyb20gJy4vb2F1dGgtY2FsbGJhY2suY29tcG9uZW50JztcblxuLy8gQ3Jvc3MtYXBwIHNlc3Npb24gaGFuZG9mZiAoT0F1dGggQXV0aG9yaXphdGlvbiBDb2RlIHBhdHRlcm4gaW50ZXJuYWwpXG5leHBvcnQgeyBIYW5kb2ZmU2VydmljZSwgSEFORE9GRl9UT0tFTl9QQVJBTSwgSEFORE9GRl9ST1VURV9QQVJBTSB9IGZyb20gJy4vaGFuZG9mZi5zZXJ2aWNlJztcbmV4cG9ydCB0eXBlIHtcbiAgSGFuZG9mZkNyZWF0ZVJlcXVlc3QsXG4gIEhhbmRvZmZDcmVhdGVSZXNwb25zZSxcbiAgSGFuZG9mZkV4Y2hhbmdlUmVzcG9uc2UsXG4gIERldGVjdEFuZEV4Y2hhbmdlT3B0aW9ucyxcbn0gZnJvbSAnLi9oYW5kb2ZmLnNlcnZpY2UnO1xuXG4vLyBBY3RpdmUgb3JnYW5pemF0aW9uIHN3aXRjaCBvcmNoZXN0cmF0aW9uXG5leHBvcnQgeyBPcmdTd2l0Y2hTZXJ2aWNlIH0gZnJvbSAnLi9vcmctc3dpdGNoLnNlcnZpY2UnO1xuZXhwb3J0IHR5cGUgeyBPcmdDaGFuZ2VkRXZlbnQsIFN3aXRjaE9yZ09wdGlvbnMgfSBmcm9tICcuL29yZy1zd2l0Y2guc2VydmljZSc7XG5cbi8vIENyb3NzLWFwcCBjcm9zcy1vcmcgbm90aWZpY2F0aW9uIGNsaWNrIGhhbmRsZXJcbmV4cG9ydCB7IE5vdGlmaWNhdGlvbkFjdGlvblNlcnZpY2UgfSBmcm9tICcuL25vdGlmaWNhdGlvbi1hY3Rpb24uc2VydmljZSc7XG5leHBvcnQgdHlwZSB7IE5vdGlmaWNhdGlvbk9wZW5SZXN1bHQgfSBmcm9tICcuL25vdGlmaWNhdGlvbi1hY3Rpb24uc2VydmljZSc7XG4iXX0=
@@ -2,5 +2,5 @@
2
2
  * Current version of valtech-components.
3
3
  * This is automatically updated during the publish process.
4
4
  */
5
- export const VERSION = '4.0.154';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC4xNTQnO1xuIl19
5
+ export const VERSION = '4.0.155';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC4xNTUnO1xuIl19
@@ -56,7 +56,7 @@ import { BrowserMultiFormatReader } from '@zxing/browser';
56
56
  * Current version of valtech-components.
57
57
  * This is automatically updated during the publish process.
58
58
  */
59
- const VERSION = '4.0.154';
59
+ const VERSION = '4.0.155';
60
60
 
61
61
  // Control de estado de refresco (singleton a nivel de módulo)
62
62
  let isRefreshing = false;
@@ -33522,6 +33522,53 @@ function permissionGuard(permissions) {
33522
33522
  return router.createUrlTree([config.unauthorizedRoute]);
33523
33523
  };
33524
33524
  }
33525
+ /**
33526
+ * Factory de guard RBAC parametrizable — defense-in-depth a nivel de RUTA.
33527
+ *
33528
+ * Variante ergonómica de {@link permissionGuard} con firma variádica
33529
+ * (`rbacGuard('a:read', 'b:manage')` en vez de `permissionGuard(['a:read', 'b:manage'])`),
33530
+ * pensada para gatear vistas administrativas montadas vía los `provideValtech*Routes`
33531
+ * de la lib. Pasa si el usuario tiene **AL MENOS UNO** de los permisos (OR), igual que
33532
+ * el resto del gating del factory (`*valHasPermission`, menú). El match de wildcards
33533
+ * (`*:*`, `resource:*`, `*:action`) lo resuelve `AuthService.hasPermission`.
33534
+ *
33535
+ * Es una capa ADICIONAL al gating fino dentro de los componentes (botones por
33536
+ * `*valHasPermission`) y al 403 del backend — no los reemplaza. Sin permiso redirige
33537
+ * a `unauthorizedRoute` (mismo destino que `permissionGuard`).
33538
+ *
33539
+ * @param permissions - Uno o más permisos requeridos (OR)
33540
+ * @returns Guard function
33541
+ *
33542
+ * @example
33543
+ * ```typescript
33544
+ * import { rbacGuard } from 'valtech-components';
33545
+ *
33546
+ * const routes: Routes = [
33547
+ * {
33548
+ * path: 'api-keys',
33549
+ * canActivate: [rbacGuard('api-keys:read')],
33550
+ * component: ApiKeysViewComponent,
33551
+ * },
33552
+ * {
33553
+ * path: 'permissions',
33554
+ * canActivate: [rbacGuard('roles:read', 'rbac:manage')],
33555
+ * component: PermissionsViewComponent,
33556
+ * },
33557
+ * ];
33558
+ * ```
33559
+ */
33560
+ function rbacGuard(...permissions) {
33561
+ return () => {
33562
+ const authService = inject(AuthService);
33563
+ const router = inject(Router);
33564
+ const config = inject(VALTECH_AUTH_CONFIG);
33565
+ if (permissions.length === 0 || authService.hasAnyPermission(permissions)) {
33566
+ return true;
33567
+ }
33568
+ console.warn(`[ValtechAuth] Acceso a ruta denegado. Requerido: ${permissions.join(' o ')}`);
33569
+ return router.createUrlTree([config.unauthorizedRoute]);
33570
+ };
33571
+ }
33525
33572
  /**
33526
33573
  * Guard que lee permisos desde route.data.
33527
33574
  * Permite configurar permisos directamente en la definición de rutas.
@@ -55918,6 +55965,7 @@ function provideValtechPermissionsRoutes(opts) {
55918
55965
  {
55919
55966
  path: opts?.path ?? 'permissions',
55920
55967
  component: PermissionsViewComponent,
55968
+ canActivate: [rbacGuard('roles:read', 'rbac:manage')],
55921
55969
  data: { permissionsConfig: opts?.config },
55922
55970
  },
55923
55971
  ];
@@ -56667,6 +56715,7 @@ function provideValtechApiKeysRoutes(opts) {
56667
56715
  {
56668
56716
  path: opts?.path ?? 'api-keys',
56669
56717
  component: ApiKeysViewComponent,
56718
+ canActivate: [rbacGuard('api-keys:read')],
56670
56719
  data: { apiKeysConfig: opts?.config },
56671
56720
  },
56672
56721
  ];
@@ -70448,5 +70497,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
70448
70497
  * Generated bundle index. Do not edit.
70449
70498
  */
70450
70499
 
70451
- export { ACTION_CARD_DEFAULTS, AD_SIZE_MAP, API_TABLE_COLUMN_LABELS, APP_VERSION_PLATFORM_PLUGIN, APP_VERSION_REMOTE_PLUGIN, ARTICLE_CARD_DEFAULTS, ARTICLE_SPACING, ARTICLE_STRIP_DEFAULTS, AUTH_CTA_DEFAULTS, AVATAR_UPLOAD_DEFAULTS, AboutViewComponent, AccordionComponent, AccountViewComponent, ActionCardComponent, ActionHeaderComponent, ActionType, AdSlotComponent, AdsLoaderService, AdsService, AlertBoxComponent, AnalyticsErrorHandler, AnalyticsRouterTracker, AnalyticsService, AnimatedTerminalComponent, ApiKeyCreateModalComponent, ApiKeyService, ApiKeysModalComponent, ApiKeysViewComponent, AppConfigService, AppVersionService, ArticleBuilder, ArticleCardComponent, ArticleComponent, ArticleStripComponent, AttachmentUploaderComponent, AuthBackgroundComponent, AuthCtaComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, AvatarUploadComponent, BOTTOM_NAV_DEFAULTS, BannerComponent, BlogPostBuilder, BottomNavComponent, BoxComponent, BreadcrumbComponent, ButtonComponent, ButtonGroupComponent, CALLOUT_LABELS, CHEV_KEYS, CIRCLE_KEYS, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CORNER_KEYS, CTA_CARD_DEFAULTS, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, ChangeEmailModalComponent, ChangePasswordModalComponent, CheckInputComponent, CheckboxRadioInputComponent, ChipGroupComponent, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContainerComponent, ContentLoaderComponent, ContentReactionComponent, ContentService, ContentTransformer, CookieBannerComponent, CountdownComponent, CreateOrgModalComponent, CtaCardComponent, CurrencyInputComponent, DEFAULT_ADS_CONFIG, DEFAULT_APP_CONFIG_SERVICE_CONFIG, DEFAULT_APP_VERSION_SERVICE_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_BACK_HEADER, DEFAULT_BUTTON_PRESETS, DEFAULT_CANCEL_BUTTON, DEFAULT_CHECK_INTERVAL_MS, DEFAULT_CONFIRM_BUTTON, DEFAULT_COUNTDOWN_LABELS, DEFAULT_COUNTDOWN_LABELS_EN, DEFAULT_DEBUG_CONSOLE_CONFIG, DEFAULT_DONATION_CONFIG, DEFAULT_EMPTY_STATE, DEFAULT_EMULATOR_CONFIG, DEFAULT_FEEDBACK_CONFIG, DEFAULT_FEEDBACK_TYPE_OPTIONS, DEFAULT_HOME_HEADER, DEFAULT_INFINITE_LIST_METADATA, DEFAULT_LOGIN_LOGO, DEFAULT_MODAL_CANCEL_BUTTON, DEFAULT_MODAL_CONFIRM_BUTTON, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLATFORMS, DEFAULT_PRESETS, DEFAULT_REFRESHER_METADATA, DEFAULT_SKELETON_CONFIG, DEFAULT_SPLASH_SCREEN_CONFIG, DataTableComponent, DateInputComponent, DatePickerComponent, DateRangeInputComponent, DebugConsoleComponent, DeleteAccountModalComponent, DetailSkeletonComponent, DeviceService, DisplayComponent, DividerComponent, DocsApiTableComponent, DocsBreadcrumbComponent, DocsBuilder, DocsCalloutComponent, DocsCodeExampleComponent, DocsLayoutComponent, DocsNavLinksComponent, DocsNavigationService, DocsPageComponent, DocsSearchComponent, DocsSectionComponent, DocsShellComponent, DocsSidebarComponent, DocsTocComponent, DonationService, DownloadService, EditOrgModalComponent, EmptyStateComponent, EntityCardComponent, ExpandableTextComponent, FEATURES_LIST_DEFAULTS, FUN_MODAL_DEFAULTS, FabComponent, FaqComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FieldListComponent, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FontSizeOption, FontSizeSelectorComponent, FontSizeService, FooterComponent, FooterLinksComponent, FormComponent, FormFieldComponent, FormSkeletonComponent, FunHeaderComponent, FunModalComponent, GlassComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, HandoffService, HapticsService, HasPermissionDirective, HeaderComponent, HintComponent, HorizontalScrollComponent, HrefComponent, I18nService, IMAGE_DEFAULTS, INITIAL_AUTH_STATE, INITIAL_MFA_STATE, INVITATION_CARD_DEFAULTS, IONIC_COLORS$5 as IONIC_COLORS, Icon, IconComponent, IconService, ImageComponent, ImageCropComponent, ImageService, InAppBrowserService, InfiniteListComponent, InfoComponent, InputI18nHelper, InputType, InvitationCardComponent, InviteMemberModalComponent, ItemListComponent, LANG_STORAGE_KEY$1 as LANG_STORAGE_KEY, LEGAL_CONTENT_CONFIG, LOGGED_IN_HINT_COOKIE, LOGIN_DEFAULTS, LandingSplitComponent, LandingStepsComponent, LanguageSelectorComponent, LanguageSelectorV2Component, LayeredCardComponent, LegalContentService, LegalLinkService, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LoadingDirective, LocalStorageService, LocaleService, LoginAttemptModalComponent, LoginComponent, MEDIA_OBJECT_DEFAULTS, MEMBER_CARD_DEFAULTS, METRIC_CARD_DEFAULTS, MODAL_SIZES, MOTIF_KEYS, MOTION, MaintenancePageComponent, MarkdownArticleParserService, MediaObjectComponent, MemberCardComponent, MemberDetailModalComponent, MemberImportModalComponent, MenuComponent, MessagingService, MetaService, MetricCardComponent, MfaModalComponent, ModalService, ModalShellComponent, MultiSelectSearchComponent, NUM_KEYS, NavigationService, NetworkBannerComponent, NetworkStatusService, NewsBuilder, NoContentComponent, NotesBoxComponent, NotificationActionService, NotificationPreferencesViewComponent, NotificationsService, NotificationsViewComponent, NumberFromToComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OptionCardsComponent, OrgInfoSheetComponent, OrgService, OrgSwitchService, OrganizationViewComponent, PATTERN_MOTIFS, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, PLATFORM_CONFIGS, PageContentComponent, PageLinksComponent, PageRefreshService, PageTemplateComponent, PageWavesComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PermissionCatalogService, PermissionSelectorComponent, PermissionsModalComponent, PermissionsViewComponent, PhoneInputComponent, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PreferencesViewComponent, PresetService, PriceTagComponent, ProcessLinksPipe, ProfileSkeletonComponent, ProfileViewComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QrScannerComponent, QueryBuilder, QuoteBoxComponent, REQUEST_STATUSES, RadioInputComponent, RangeInputComponent, RatingComponent, RefresherComponent, RequestFirestoreService, RequestFormBuilderService, RequestFormComponent, RequestModalComponent, RequestService, RightsFooterComponent, RotatingTextComponent, SEARCH_HEADER_DEFAULTS, SETTINGS_SECTIONS_CATALOG, SHAPE_KEYS, SHARE_PROFILE_MODAL_DEFAULTS, SKELETON_LAYOUT_DEFAULT_ROWS, SKELETON_PRESETS, SOLID_KEYS, STATS_BAR_DEFAULTS, STROKE_KEYS, SearchHeaderComponent, SearchSelectorComponent, SearchbarComponent, SectionHeaderComponent, SecurityViewComponent, SegmentControlComponent, SelectSearchComponent, SessionListModalComponent, SessionService, SettingsHubComponent, ShareButtonsComponent, ShareProfileModalComponent, SimpleComponent, SkeletonComponent, SkeletonLayoutComponent, SkeletonService, SplashComponent, SplashScreenService, StatsBarComponent, StatsCardComponent, StepperComponent, StorageService, SwipeCarouselComponent, SwitchOrgModalComponent, TRI_KEYS, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeService, TicketCardComponent, TicketCardImageService, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TransferOwnershipModalComponent, TranslatePipe, TypedCollection, UPDATE_BANNER_DEFAULT_CONTENT, UPDATE_BANNER_I18N_NAMESPACE, UpdateBannerComponent, UserAvatarComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_APP_VERSION, VALTECH_AUTH_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_CONTENT_CONFIG, VALTECH_DEBUG_CONSOLE, VALTECH_DEFAULT_CONTENT, VALTECH_DONATION_CONFIG, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_LEGAL_CONFIG, VALTECH_NETWORK_ERROR_KEY, VALTECH_SETTINGS_MENU_LINKS, VALTECH_SITE_PATHS, VALTECH_SOCIAL_LINKS, VALTECH_SPLASH_SCREEN, VALTECH_WEB_BASE_URLS, VALTECH_WHATSAPP_CONFIG, VERSION, ValtechErrorService, VerifyViewComponent, WhatsappFabComponent, WhatsappService, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, authGuard, authInterceptor, authPasswordValidator, beautifyLegalArticle, blogPost, buildCompanyFooterProps, buildFooterLinks, buildLegalLinkResolver, buildPath, buildSettingsCards, button, canSubmitRequestType, collections, connectPageRefresh, createErrorStateProps, createFirebaseConfig, createGlowCardProps, createInitialPaginationState, createNumberFromToField, createPageState, createPermissionLabeler, createRefreshableStream, createTitleProps, docs, errorLoggingInterceptor, extractPathParams, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, groupPermissionsByScope, guestGuard, hasEmulators, iconButton, interpretError, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isIonicColor, isValidPath, joinPath, maxLength, mulberry32, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, provideLegalContent, provideSplashScreen, provideValtechAboutRoutes, provideValtechAccountRoutes, provideValtechAds, provideValtechApiKeysRoutes, provideValtechAppConfig, provideValtechAppVersion, provideValtechAppVersionHttp, provideValtechAuth, provideValtechAuthInterceptor, provideValtechContent, provideValtechDebugConsole, provideValtechDonations, provideValtechErrorHandling, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechNotificationPreferencesRoutes, provideValtechNotificationsRoutes, provideValtechOrganizationRoutes, provideValtechPermissionsRoutes, provideValtechPreferencesRoutes, provideValtechPresets, provideValtechProfileRoutes, provideValtechSecurityRoutes, provideValtechSettingsRoutes, provideValtechSite, provideValtechSkeleton, provideValtechWhatsapp, query, renderPatternSvgInner, replaceSpecialChars, requestSubmitMode, resolveColor, resolveInputDefaultValue, resolveIonicColor, resolveWebBaseUrl, roleGuard, selectableRequestTypes, storagePaths, superAdminGuard, toArticle };
70500
+ export { ACTION_CARD_DEFAULTS, AD_SIZE_MAP, API_TABLE_COLUMN_LABELS, APP_VERSION_PLATFORM_PLUGIN, APP_VERSION_REMOTE_PLUGIN, ARTICLE_CARD_DEFAULTS, ARTICLE_SPACING, ARTICLE_STRIP_DEFAULTS, AUTH_CTA_DEFAULTS, AVATAR_UPLOAD_DEFAULTS, AboutViewComponent, AccordionComponent, AccountViewComponent, ActionCardComponent, ActionHeaderComponent, ActionType, AdSlotComponent, AdsLoaderService, AdsService, AlertBoxComponent, AnalyticsErrorHandler, AnalyticsRouterTracker, AnalyticsService, AnimatedTerminalComponent, ApiKeyCreateModalComponent, ApiKeyService, ApiKeysModalComponent, ApiKeysViewComponent, AppConfigService, AppVersionService, ArticleBuilder, ArticleCardComponent, ArticleComponent, ArticleStripComponent, AttachmentUploaderComponent, AuthBackgroundComponent, AuthCtaComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, AvatarUploadComponent, BOTTOM_NAV_DEFAULTS, BannerComponent, BlogPostBuilder, BottomNavComponent, BoxComponent, BreadcrumbComponent, ButtonComponent, ButtonGroupComponent, CALLOUT_LABELS, CHEV_KEYS, CIRCLE_KEYS, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CORNER_KEYS, CTA_CARD_DEFAULTS, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, ChangeEmailModalComponent, ChangePasswordModalComponent, CheckInputComponent, CheckboxRadioInputComponent, ChipGroupComponent, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContainerComponent, ContentLoaderComponent, ContentReactionComponent, ContentService, ContentTransformer, CookieBannerComponent, CountdownComponent, CreateOrgModalComponent, CtaCardComponent, CurrencyInputComponent, DEFAULT_ADS_CONFIG, DEFAULT_APP_CONFIG_SERVICE_CONFIG, DEFAULT_APP_VERSION_SERVICE_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_BACK_HEADER, DEFAULT_BUTTON_PRESETS, DEFAULT_CANCEL_BUTTON, DEFAULT_CHECK_INTERVAL_MS, DEFAULT_CONFIRM_BUTTON, DEFAULT_COUNTDOWN_LABELS, DEFAULT_COUNTDOWN_LABELS_EN, DEFAULT_DEBUG_CONSOLE_CONFIG, DEFAULT_DONATION_CONFIG, DEFAULT_EMPTY_STATE, DEFAULT_EMULATOR_CONFIG, DEFAULT_FEEDBACK_CONFIG, DEFAULT_FEEDBACK_TYPE_OPTIONS, DEFAULT_HOME_HEADER, DEFAULT_INFINITE_LIST_METADATA, DEFAULT_LOGIN_LOGO, DEFAULT_MODAL_CANCEL_BUTTON, DEFAULT_MODAL_CONFIRM_BUTTON, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLATFORMS, DEFAULT_PRESETS, DEFAULT_REFRESHER_METADATA, DEFAULT_SKELETON_CONFIG, DEFAULT_SPLASH_SCREEN_CONFIG, DataTableComponent, DateInputComponent, DatePickerComponent, DateRangeInputComponent, DebugConsoleComponent, DeleteAccountModalComponent, DetailSkeletonComponent, DeviceService, DisplayComponent, DividerComponent, DocsApiTableComponent, DocsBreadcrumbComponent, DocsBuilder, DocsCalloutComponent, DocsCodeExampleComponent, DocsLayoutComponent, DocsNavLinksComponent, DocsNavigationService, DocsPageComponent, DocsSearchComponent, DocsSectionComponent, DocsShellComponent, DocsSidebarComponent, DocsTocComponent, DonationService, DownloadService, EditOrgModalComponent, EmptyStateComponent, EntityCardComponent, ExpandableTextComponent, FEATURES_LIST_DEFAULTS, FUN_MODAL_DEFAULTS, FabComponent, FaqComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FieldListComponent, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FontSizeOption, FontSizeSelectorComponent, FontSizeService, FooterComponent, FooterLinksComponent, FormComponent, FormFieldComponent, FormSkeletonComponent, FunHeaderComponent, FunModalComponent, GlassComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, HandoffService, HapticsService, HasPermissionDirective, HeaderComponent, HintComponent, HorizontalScrollComponent, HrefComponent, I18nService, IMAGE_DEFAULTS, INITIAL_AUTH_STATE, INITIAL_MFA_STATE, INVITATION_CARD_DEFAULTS, IONIC_COLORS$5 as IONIC_COLORS, Icon, IconComponent, IconService, ImageComponent, ImageCropComponent, ImageService, InAppBrowserService, InfiniteListComponent, InfoComponent, InputI18nHelper, InputType, InvitationCardComponent, InviteMemberModalComponent, ItemListComponent, LANG_STORAGE_KEY$1 as LANG_STORAGE_KEY, LEGAL_CONTENT_CONFIG, LOGGED_IN_HINT_COOKIE, LOGIN_DEFAULTS, LandingSplitComponent, LandingStepsComponent, LanguageSelectorComponent, LanguageSelectorV2Component, LayeredCardComponent, LegalContentService, LegalLinkService, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LoadingDirective, LocalStorageService, LocaleService, LoginAttemptModalComponent, LoginComponent, MEDIA_OBJECT_DEFAULTS, MEMBER_CARD_DEFAULTS, METRIC_CARD_DEFAULTS, MODAL_SIZES, MOTIF_KEYS, MOTION, MaintenancePageComponent, MarkdownArticleParserService, MediaObjectComponent, MemberCardComponent, MemberDetailModalComponent, MemberImportModalComponent, MenuComponent, MessagingService, MetaService, MetricCardComponent, MfaModalComponent, ModalService, ModalShellComponent, MultiSelectSearchComponent, NUM_KEYS, NavigationService, NetworkBannerComponent, NetworkStatusService, NewsBuilder, NoContentComponent, NotesBoxComponent, NotificationActionService, NotificationPreferencesViewComponent, NotificationsService, NotificationsViewComponent, NumberFromToComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OptionCardsComponent, OrgInfoSheetComponent, OrgService, OrgSwitchService, OrganizationViewComponent, PATTERN_MOTIFS, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, PLATFORM_CONFIGS, PageContentComponent, PageLinksComponent, PageRefreshService, PageTemplateComponent, PageWavesComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PermissionCatalogService, PermissionSelectorComponent, PermissionsModalComponent, PermissionsViewComponent, PhoneInputComponent, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PreferencesViewComponent, PresetService, PriceTagComponent, ProcessLinksPipe, ProfileSkeletonComponent, ProfileViewComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QrScannerComponent, QueryBuilder, QuoteBoxComponent, REQUEST_STATUSES, RadioInputComponent, RangeInputComponent, RatingComponent, RefresherComponent, RequestFirestoreService, RequestFormBuilderService, RequestFormComponent, RequestModalComponent, RequestService, RightsFooterComponent, RotatingTextComponent, SEARCH_HEADER_DEFAULTS, SETTINGS_SECTIONS_CATALOG, SHAPE_KEYS, SHARE_PROFILE_MODAL_DEFAULTS, SKELETON_LAYOUT_DEFAULT_ROWS, SKELETON_PRESETS, SOLID_KEYS, STATS_BAR_DEFAULTS, STROKE_KEYS, SearchHeaderComponent, SearchSelectorComponent, SearchbarComponent, SectionHeaderComponent, SecurityViewComponent, SegmentControlComponent, SelectSearchComponent, SessionListModalComponent, SessionService, SettingsHubComponent, ShareButtonsComponent, ShareProfileModalComponent, SimpleComponent, SkeletonComponent, SkeletonLayoutComponent, SkeletonService, SplashComponent, SplashScreenService, StatsBarComponent, StatsCardComponent, StepperComponent, StorageService, SwipeCarouselComponent, SwitchOrgModalComponent, TRI_KEYS, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeService, TicketCardComponent, TicketCardImageService, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TransferOwnershipModalComponent, TranslatePipe, TypedCollection, UPDATE_BANNER_DEFAULT_CONTENT, UPDATE_BANNER_I18N_NAMESPACE, UpdateBannerComponent, UserAvatarComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_APP_VERSION, VALTECH_AUTH_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_CONTENT_CONFIG, VALTECH_DEBUG_CONSOLE, VALTECH_DEFAULT_CONTENT, VALTECH_DONATION_CONFIG, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_LEGAL_CONFIG, VALTECH_NETWORK_ERROR_KEY, VALTECH_SETTINGS_MENU_LINKS, VALTECH_SITE_PATHS, VALTECH_SOCIAL_LINKS, VALTECH_SPLASH_SCREEN, VALTECH_WEB_BASE_URLS, VALTECH_WHATSAPP_CONFIG, VERSION, ValtechErrorService, VerifyViewComponent, WhatsappFabComponent, WhatsappService, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, authGuard, authInterceptor, authPasswordValidator, beautifyLegalArticle, blogPost, buildCompanyFooterProps, buildFooterLinks, buildLegalLinkResolver, buildPath, buildSettingsCards, button, canSubmitRequestType, collections, connectPageRefresh, createErrorStateProps, createFirebaseConfig, createGlowCardProps, createInitialPaginationState, createNumberFromToField, createPageState, createPermissionLabeler, createRefreshableStream, createTitleProps, docs, errorLoggingInterceptor, extractPathParams, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, groupPermissionsByScope, guestGuard, hasEmulators, iconButton, interpretError, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isIonicColor, isValidPath, joinPath, maxLength, mulberry32, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, provideLegalContent, provideSplashScreen, provideValtechAboutRoutes, provideValtechAccountRoutes, provideValtechAds, provideValtechApiKeysRoutes, provideValtechAppConfig, provideValtechAppVersion, provideValtechAppVersionHttp, provideValtechAuth, provideValtechAuthInterceptor, provideValtechContent, provideValtechDebugConsole, provideValtechDonations, provideValtechErrorHandling, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechNotificationPreferencesRoutes, provideValtechNotificationsRoutes, provideValtechOrganizationRoutes, provideValtechPermissionsRoutes, provideValtechPreferencesRoutes, provideValtechPresets, provideValtechProfileRoutes, provideValtechSecurityRoutes, provideValtechSettingsRoutes, provideValtechSite, provideValtechSkeleton, provideValtechWhatsapp, query, rbacGuard, renderPatternSvgInner, replaceSpecialChars, requestSubmitMode, resolveColor, resolveInputDefaultValue, resolveIonicColor, resolveWebBaseUrl, roleGuard, selectableRequestTypes, storagePaths, superAdminGuard, toArticle };
70452
70501
  //# sourceMappingURL=valtech-components.mjs.map