@ngrdt/router 0.0.97 → 0.0.98

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.
@@ -846,6 +846,8 @@ class RdtRoute extends RdtRouteBase {
846
846
  clone._paramMappings = this._paramMappings;
847
847
  clone._staticParams = { ...this._staticParams };
848
848
  clone._stateParams = { ...this._stateParams };
849
+ clone._canBeEntered = this._canBeEntered;
850
+ clone._queryParams = { ...this._queryParams };
849
851
  return clone;
850
852
  }
851
853
  setRegex() {
@@ -1 +1 @@
1
- {"version":3,"file":"ngrdt-router.mjs","sources":["../tmp-esm2022/lib/services/rdt-cannot-be-entered.token.js","../tmp-esm2022/lib/services/rdt-confirm-data-loss.service.js","../tmp-esm2022/lib/rdt-route/utils.js","../tmp-esm2022/lib/services/rdt-routes.token.js","../tmp-esm2022/lib/services/rdt-router.service.js","../tmp-esm2022/lib/rdt-route/constants.js","../tmp-esm2022/lib/rdt-route/rdt-angular-route.js","../tmp-esm2022/lib/rdt-route/rdt-route-base.js","../tmp-esm2022/lib/rdt-route/rdt-route.js","../tmp-esm2022/lib/rdt-route/rdt-route-builder.js","../tmp-esm2022/lib/directives/rdt-any-route-active.directive.js","../tmp-esm2022/lib/directives/rdt-back-link.directive.js","../tmp-esm2022/lib/directives/rdt-router-link.directive.js","../tmp-esm2022/lib/guards/prevent-data-loss.guard.js","../tmp-esm2022/lib/guards/global-route-guard.service.js","../tmp-esm2022/ngrdt-router.js"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n/**\n * Injection token that defines behavior when route cannot be entered (canBeEntered returns false).\n * If value is undefined, route will be redirected to ''.\n */\nexport const RDT_CANNOT_BE_ENTERED_PROVIDER = new InjectionToken('RDT_CANNOT_BE_ENTERED', { factory: () => undefined, providedIn: 'root' });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWNhbm5vdC1iZS1lbnRlcmVkLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL3NlcnZpY2VzL3JkdC1jYW5ub3QtYmUtZW50ZXJlZC50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLElBQUksY0FBYyxDQUU5RCx1QkFBdUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmR0UmVkaXJlY3RGbiwgUmR0UmVkaXJlY3RSZXR1cm5UeXBlIH0gZnJvbSAnLi4vcmR0LXJvdXRlL3V0aWxzJztcblxuLyoqXG4gKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBkZWZpbmVzIGJlaGF2aW9yIHdoZW4gcm91dGUgY2Fubm90IGJlIGVudGVyZWQgKGNhbkJlRW50ZXJlZCByZXR1cm5zIGZhbHNlKS5cbiAqIElmIHZhbHVlIGlzIHVuZGVmaW5lZCwgcm91dGUgd2lsbCBiZSByZWRpcmVjdGVkIHRvICcnLlxuICovXG5leHBvcnQgY29uc3QgUkRUX0NBTk5PVF9CRV9FTlRFUkVEX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPFxuICBSZHRSZWRpcmVjdEZuIHwgUmR0UmVkaXJlY3RSZXR1cm5UeXBlXG4+KCdSRFRfQ0FOTk9UX0JFX0VOVEVSRUQnLCB7IGZhY3Rvcnk6ICgpID0+IHVuZGVmaW5lZCwgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pO1xuIl19","import { InjectionToken } from '@angular/core';\nimport { defer, of } from 'rxjs';\nexport const RDT_CONFIRM_DATA_LOSS_SERVICE = new InjectionToken('RDT_CONFIRM_DATA_LOSS_SERVICE', { factory: () => new RdtConfirmDataLossServiceAlert() });\nexport class RdtConfirmDataLossService {\n}\nexport class RdtConfirmDataLossServiceAlert extends RdtConfirmDataLossService {\n confirmDataLoss() {\n return defer(() => of(confirm('Are you sure you want to leave this page?')));\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWNvbmZpcm0tZGF0YS1sb3NzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvc2VydmljZXMvcmR0LWNvbmZpcm0tZGF0YS1sb3NzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU3QyxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FDeEMsSUFBSSxjQUFjLENBQ2hCLCtCQUErQixFQUMvQixFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLDhCQUE4QixFQUFFLEVBQUUsQ0FDeEQsQ0FBQztBQUVKLE1BQU0sT0FBZ0IseUJBQXlCO0NBRTlDO0FBRUQsTUFBTSxPQUFPLDhCQUErQixTQUFRLHlCQUF5QjtJQUNsRSxlQUFlO1FBQ3RCLE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUNoQixFQUFFLENBQUMsT0FBTyxDQUFDLDJDQUEyQyxDQUFDLENBQUMsQ0FDekQsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGRlZmVyLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IFJEVF9DT05GSVJNX0RBVEFfTE9TU19TRVJWSUNFID1cclxuICBuZXcgSW5qZWN0aW9uVG9rZW48UmR0Q29uZmlybURhdGFMb3NzU2VydmljZT4oXHJcbiAgICAnUkRUX0NPTkZJUk1fREFUQV9MT1NTX1NFUlZJQ0UnLFxyXG4gICAgeyBmYWN0b3J5OiAoKSA9PiBuZXcgUmR0Q29uZmlybURhdGFMb3NzU2VydmljZUFsZXJ0KCkgfVxyXG4gICk7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmR0Q29uZmlybURhdGFMb3NzU2VydmljZSB7XHJcbiAgYWJzdHJhY3QgY29uZmlybURhdGFMb3NzKCk6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSZHRDb25maXJtRGF0YUxvc3NTZXJ2aWNlQWxlcnQgZXh0ZW5kcyBSZHRDb25maXJtRGF0YUxvc3NTZXJ2aWNlIHtcclxuICBvdmVycmlkZSBjb25maXJtRGF0YUxvc3MoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gZGVmZXIoKCkgPT5cclxuICAgICAgb2YoY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGxlYXZlIHRoaXMgcGFnZT8nKSlcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==","export class RdtParameters {\n params;\n constructor(params = {}) {\n this.params = params;\n }\n get(route) {\n return this.params[route.absolutePath] ?? null;\n }\n set(route, params) {\n this.params[route.absolutePath] = params;\n return this;\n }\n append(route, params) {\n const existing = this.get(route) ?? {};\n this.params[route.absolutePath] = { ...existing, ...params };\n return this;\n }\n setAll(params) {\n this.params = { ...this.params, ...params.params };\n return this;\n }\n *[Symbol.iterator]() {\n const keys = Object.keys(this.params);\n keys.sort((a, b) => a.length - b.length);\n for (const key of keys) {\n yield [key, this.params[key]];\n }\n }\n}\nexport function ALWAYS_TRUE() {\n return true;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvcmR0LXJvdXRlL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdCQSxNQUFNLE9BQU8sYUFBYTtJQUNKO0lBQXBCLFlBQW9CLFNBQTRCLEVBQUU7UUFBOUIsV0FBTSxHQUFOLE1BQU0sQ0FBd0I7SUFBRyxDQUFDO0lBRXRELEdBQUcsQ0FBbUIsS0FBa0I7UUFDdEMsT0FBUSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQWdCLElBQUksSUFBSSxDQUFDO0lBQ2pFLENBQUM7SUFFRCxHQUFHLENBQW1CLEtBQWtCLEVBQUUsTUFBa0I7UUFDMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQ3pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBbUIsS0FBa0IsRUFBRSxNQUFrQjtRQUM3RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLEdBQUcsUUFBUSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFDN0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQXFCO1FBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbkQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDaEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pDLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDdkIsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7Q0FDRjtBQUlELE1BQU0sVUFBVSxXQUFXO0lBQ3pCLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhcmFtcywgUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBSZHRSb3V0ZSB9IGZyb20gJy4vcmR0LXJvdXRlJztcclxuXHJcbmV4cG9ydCB0eXBlIFBhcmFtVHlwZU1hcDxUPiA9IHtcclxuICBba2V5IGluIGtleW9mIFRdPzogJ3N0cmluZycgfCAnbnVtYmVyJztcclxufTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW1NYXBwaW5nIHtcclxuICB1cmxOYW1lOiBzdHJpbmc7XHJcbiAgdGFibGVOYW1lOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGljUm91dGVQYXJhbXMge1xyXG4gIFthYnNvbHV0ZVBhdGg6IHN0cmluZ106IG9iamVjdDtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUmR0UmVkaXJlY3RSZXR1cm5UeXBlID0gc3RyaW5nIHwgdm9pZCB8IHVuZGVmaW5lZDtcclxuXHJcbmV4cG9ydCB0eXBlIFJkdFJlZGlyZWN0Rm4gPSAoXHJcbiAgY3VycmVudFBhdGg6IHN0cmluZyxcclxuICB0YXJnZXRQYXRoOiBzdHJpbmcsXHJcbiAgdGFyZ2V0Um91dGU6IFJkdFJvdXRlXHJcbikgPT4gUmR0UmVkaXJlY3RSZXR1cm5UeXBlO1xyXG5cclxuZXhwb3J0IGNsYXNzIFJkdFBhcmFtZXRlcnMge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFyYW1zOiBTdGF0aWNSb3V0ZVBhcmFtcyA9IHt9KSB7fVxyXG5cclxuICBnZXQ8VCBleHRlbmRzIG9iamVjdD4ocm91dGU6IFJkdFJvdXRlPFQ+KTogUGFydGlhbDxUPiB8IG51bGwge1xyXG4gICAgcmV0dXJuICh0aGlzLnBhcmFtc1tyb3V0ZS5hYnNvbHV0ZVBhdGhdIGFzIFBhcnRpYWw8VD4pID8/IG51bGw7XHJcbiAgfVxyXG5cclxuICBzZXQ8VCBleHRlbmRzIG9iamVjdD4ocm91dGU6IFJkdFJvdXRlPFQ+LCBwYXJhbXM6IFBhcnRpYWw8VD4pIHtcclxuICAgIHRoaXMucGFyYW1zW3JvdXRlLmFic29sdXRlUGF0aF0gPSBwYXJhbXM7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIGFwcGVuZDxUIGV4dGVuZHMgb2JqZWN0Pihyb3V0ZTogUmR0Um91dGU8VD4sIHBhcmFtczogUGFydGlhbDxUPikge1xyXG4gICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLmdldChyb3V0ZSkgPz8ge307XHJcbiAgICB0aGlzLnBhcmFtc1tyb3V0ZS5hYnNvbHV0ZVBhdGhdID0geyAuLi5leGlzdGluZywgLi4ucGFyYW1zIH07XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHNldEFsbChwYXJhbXM6IFJkdFBhcmFtZXRlcnMpIHtcclxuICAgIHRoaXMucGFyYW1zID0geyAuLi50aGlzLnBhcmFtcywgLi4ucGFyYW1zLnBhcmFtcyB9O1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAqW1N5bWJvbC5pdGVyYXRvcl0oKSB7XHJcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5wYXJhbXMpO1xyXG4gICAga2V5cy5zb3J0KChhLCBiKSA9PiBhLmxlbmd0aCAtIGIubGVuZ3RoKTtcclxuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcclxuICAgICAgeWllbGQgW2tleSwgdGhpcy5wYXJhbXNba2V5XV07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBMb2FkQ29tcG9uZW50Q2FsbGJhY2sgPSBSb3V0ZVsnbG9hZENvbXBvbmVudCddO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIEFMV0FZU19UUlVFKCkge1xyXG4gIHJldHVybiB0cnVlO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBSZHRDYW5CZUVudGVyZWRGbjxUIGV4dGVuZHMgb2JqZWN0PiA9IChcclxuICByb3V0ZTogUmR0Um91dGU8VD4sXHJcbiAgcGFyYW1zOiBSZHRDb21iaW5lZFJvdXRlUGFyYW1zPFQ+XHJcbikgPT4gYm9vbGVhbjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmR0Q29tYmluZWRSb3V0ZVBhcmFtczxUIGV4dGVuZHMgb2JqZWN0PiB7XHJcbiAgcGFyYW1zOiBQYXJ0aWFsPFQ+O1xyXG4gIHJvdXRlOiBSZHRQYXJhbWV0ZXJzO1xyXG4gIHF1ZXJ5OiBQYXJhbXM7XHJcbiAgc3RhdGU6IFBhcmFtcztcclxufVxyXG4iXX0=","import { InjectionToken } from '@angular/core';\nexport const RDT_ROUTES_PROVIDER = new InjectionToken('RDT_ROUTES_PROVIDER');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlcy50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL0BuZ3JkdC9yb3V0ZXIvc3JjL2xpYi9zZXJ2aWNlcy9yZHQtcm91dGVzLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxjQUFjLENBQ25ELHFCQUFxQixDQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmR0Um91dGUgfSBmcm9tICcuLi9yZHQtcm91dGUvcmR0LXJvdXRlJztcclxuXHJcbmV4cG9ydCBjb25zdCBSRFRfUk9VVEVTX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPFJkdFJvdXRlW10+KFxyXG4gICdSRFRfUk9VVEVTX1BST1ZJREVSJ1xyXG4pO1xyXG4iXX0=","import { Location, PlatformLocation } from '@angular/common';\nimport { inject, Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { RdtStringUtils } from '@ngrdt/utils';\nimport { filter, take } from 'rxjs';\nimport { RdtParameters } from '../rdt-route/utils';\nimport { RDT_ROUTES_PROVIDER } from './rdt-routes.token';\nimport * as i0 from \"@angular/core\";\nconst DEFAULT_TARGET = '_self';\nconst RDT_STATE_PARAMS_KEY = 'RdtStateParams';\nexport class RdtRouterService {\n allRoutes = inject(RDT_ROUTES_PROVIDER, { optional: true });\n baseHref = inject(PlatformLocation).getBaseHrefFromDOM();\n location = inject(Location);\n router = inject(Router);\n _previousUrl = null;\n _currentUrl = null;\n get previousUrl() {\n return this._previousUrl;\n }\n get currentUrl() {\n return this._currentUrl;\n }\n parsePreviousUrl() {\n return this._previousUrl ? this.parseAbsoluteUrl(this._previousUrl) : null;\n }\n parseCurrentUrl() {\n return this._currentUrl ? this.parseAbsoluteUrl(this._currentUrl) : null;\n }\n navigationEnd$ = this.router.events.pipe(filter((e) => e instanceof NavigationEnd));\n nextNavigationEnd$ = this.navigationEnd$.pipe(take(1));\n constructor() {\n if (this.allRoutes === null) {\n console.warn('All routes not provided. Make sure to provide RDT_ROUTES_PROVIDER with RdtRoute[].');\n this.allRoutes = [];\n }\n this.navigationEnd$.subscribe((e) => {\n this._previousUrl = this._currentUrl;\n this._currentUrl = e.url;\n });\n }\n /**\n * @returns window.history.state extended by state parameters passed from parent window.\n */\n getHistoryState() {\n if ('RdtStateParams' in window &&\n typeof window[RDT_STATE_PARAMS_KEY] === 'object') {\n return { ...window[RDT_STATE_PARAMS_KEY], ...(history.state ?? {}) };\n }\n else {\n return history.state ?? {};\n }\n }\n /**\n * Navigates to the specified route.\n * @param link Route to navigate to.\n * @param params Parameter of route passed as first argument or RdtParameters object.\n * @param extras Allows you to specify additional parameters for navigation. These extras have higher priority than those defined in the route.\n * @returns Promise that resolves when navigation is complete.\n */\n navigate(link, params, extras) {\n let url;\n if (params instanceof RdtParameters) {\n let linkCpy = link;\n for (let r = linkCpy; r !== null; r = r.parent) {\n const p = params.get(r);\n if (p) {\n linkCpy = linkCpy.withStaticParams(r, p);\n }\n }\n url = linkCpy.createAbsoluteUrl();\n }\n else {\n url = params ? link.createAbsoluteUrl(params) : link.createAbsoluteUrl();\n }\n const target = extras?.target ?? DEFAULT_TARGET;\n const queryParams = extras?.query ?? link.queryParams;\n const stateParams = extras?.state ?? link.stateParams;\n if (target === '_self') {\n return this.router.navigate([url], {\n queryParams: queryParams,\n state: stateParams,\n replaceUrl: extras?.replaceUrl,\n });\n }\n const absolutePath = RdtStringUtils.createAbsoluteUrl(url, this.baseHref);\n const pathWithParams = RdtStringUtils.appendQueryParams(absolutePath, queryParams);\n const win = window.open(pathWithParams, target);\n if (win) {\n win[RDT_STATE_PARAMS_KEY] = stateParams;\n }\n return Promise.resolve(true);\n }\n navigateHome(extras) {\n return this.router.navigateByUrl(RdtStringUtils.appendQueryParams('/', extras?.query ?? {}), {\n state: extras?.state,\n replaceUrl: extras?.replaceUrl,\n });\n }\n navigateBack(extras) {\n const parsed = this.parseAbsoluteUrl();\n if (parsed) {\n let route = parsed.route.withStaticParams(parsed.params);\n do {\n route = route.parent;\n } while (route && route.entryDisabled);\n // In case route has no ancestor with allowed entry,\n if (!route) {\n return this.navigateHome(extras);\n }\n if (extras) {\n if (extras.query) {\n route = route.withQueryParams(extras.query);\n }\n if (extras.state) {\n route = route.withStateParams(extras.state);\n }\n }\n return this.navigate(route, extras);\n }\n else {\n console.warn(`Cannot go back from ${this.location.path()} because no route matches current url`);\n return null;\n }\n }\n /**\n * This method will try to find matching route for given absolute URL, extract its parameters and return them.\n * If no route matches the URL, it returns null. Parameters are extracted only for the last matching route, not ancestors.\n * @param url Absolute URL to parse (e.g. '/home/details/123?query=abc').\n * @returns Object containing the matching route and its parameters, or null if no route is matching.\n */\n parseAbsoluteUrl(url = this.location.path()) {\n const stripped = RdtStringUtils.stripQueryParams(url);\n if (this.allRoutes) {\n for (const route of this.allRoutes) {\n const params = route.parseAbsoluteUrl(stripped);\n if (params) {\n return { route, params };\n }\n }\n }\n return null;\n }\n extractAllParams(currentRoute) {\n if (!currentRoute) {\n const parsed = this.parseAbsoluteUrl();\n if (!parsed) {\n console.warn('No route matches current url.');\n return null;\n }\n currentRoute = parsed.route;\n }\n const url = this.location.path();\n return currentRoute.parseAbsoluteUrl(url);\n }\n isParentOfCurrentLocation(route) {\n return true;\n }\n removeQueryParams(...paramNames) {\n const regex = new RegExp(`[?&](${paramNames.join('|')})=[^&]*`, 'g');\n return history.replaceState(history.state, '', location.pathname + location.search.replace(regex, '').replace(/^&/, '?'));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtRouterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtRouterService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtRouterService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL3NlcnZpY2VzL3JkdC1yb3V0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBVSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxNQUFNLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhELE9BQU8sRUFBMEIsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBU3pELE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQztBQUMvQixNQUFNLG9CQUFvQixHQUFHLGdCQUFnQixDQUFDO0FBSzlDLE1BQU0sT0FBTyxnQkFBZ0I7SUFDbEIsU0FBUyxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzVELFFBQVEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBRWpELFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVqQyxZQUFZLEdBQWtCLElBQUksQ0FBQztJQUNuQyxXQUFXLEdBQWtCLElBQUksQ0FBQztJQUUxQyxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FB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QVEsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQzFFLENBQUM7SUFDSixDQUFDO3VHQW5NVSxnQkFBZ0I7MkdBQWhCLGdCQUFnQixjQUZmLE1BQU07OzJGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiwgUGxhdGZvcm1Mb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBQYXJhbXMsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFJkdFN0cmluZ1V0aWxzIH0gZnJvbSAnQG5ncmR0L3V0aWxzJztcclxuaW1wb3J0IHsgZmlsdGVyLCBPYnNlcnZhYmxlLCB0YWtlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFJkdFJvdXRlIH0gZnJvbSAnLi4vcmR0LXJvdXRlL3JkdC1yb3V0ZSc7XHJcbmltcG9ydCB7IFJkdENvbWJpbmVkUm91dGVQYXJhbXMsIFJkdFBhcmFtZXRlcnMgfSBmcm9tICcuLi9yZHQtcm91dGUvdXRpbHMnO1xyXG5pbXBvcnQgeyBSRFRfUk9VVEVTX1BST1ZJREVSIH0gZnJvbSAnLi9yZHQtcm91dGVzLnRva2VuJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmR0TmF2aWdhdGVFeHRyYXMge1xyXG4gIHN0YXRlPzogUGFyYW1zO1xyXG4gIHF1ZXJ5PzogUGFyYW1zO1xyXG4gIHRhcmdldD86ICdfYmxhbmsnIHwgJ19zZWxmJyB8ICdfcGFyZW50JyB8ICdfdG9wJztcclxuICByZXBsYWNlVXJsPzogYm9vbGVhbjtcclxufVxyXG5cclxuY29uc3QgREVGQVVMVF9UQVJHRVQgPSAnX3NlbGYnO1xyXG5jb25zdCBSRFRfU1RBVEVfUEFSQU1TX0tFWSA9ICdSZHRTdGF0ZVBhcmFtcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmR0Um91dGVyU2VydmljZSB7XHJcbiAgcmVhZG9ubHkgYWxsUm91dGVzID0gaW5qZWN0KFJEVF9ST1VURVNfUFJPVklERVIsIHsgb3B0aW9uYWw6IHRydWUgfSk7XHJcbiAgcmVhZG9ubHkgYmFzZUhyZWYgPSBpbmplY3QoUGxhdGZvcm1Mb2NhdGlvbikuZ2V0QmFzZUhyZWZGcm9tRE9NKCk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9jYXRpb24gPSBpbmplY3QoTG9jYXRpb24pO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcblxyXG4gIHByaXZhdGUgX3ByZXZpb3VzVXJsOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIF9jdXJyZW50VXJsOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgZ2V0IHByZXZpb3VzVXJsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ByZXZpb3VzVXJsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGN1cnJlbnRVcmwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFVybDtcclxuICB9XHJcblxyXG4gIHBhcnNlUHJldmlvdXNVcmwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcHJldmlvdXNVcmwgPyB0aGlzLnBhcnNlQWJzb2x1dGVVcmwodGhpcy5fcHJldmlvdXNVcmwpIDogbnVsbDtcclxuICB9XHJcblxyXG4gIHBhcnNlQ3VycmVudFVybCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9jdXJyZW50VXJsID8gdGhpcy5wYXJzZUFic29sdXRlVXJsKHRoaXMuX2N1cnJlbnRVcmwpIDogbnVsbDtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IG5hdmlnYXRpb25FbmQkID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXHJcbiAgICBmaWx0ZXIoKGUpID0+IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKVxyXG4gICkgYXMgT2JzZXJ2YWJsZTxOYXZpZ2F0aW9uRW5kPjtcclxuXHJcbiAgcmVhZG9ubHkgbmV4dE5hdmlnYXRpb25FbmQkID0gdGhpcy5uYXZpZ2F0aW9uRW5kJC5waXBlKHRha2UoMSkpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIGlmICh0aGlzLmFsbFJvdXRlcyA9PT0gbnVsbCkge1xyXG4gICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgJ0FsbCByb3V0ZXMgbm90IHByb3ZpZGVkLiBNYWtlIHN1cmUgdG8gcHJvdmlkZSBSRFRfUk9VVEVTX1BST1ZJREVSIHdpdGggUmR0Um91dGVbXS4nXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuYWxsUm91dGVzID0gW107XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5uYXZpZ2F0aW9uRW5kJC5zdWJzY3JpYmUoKGUpID0+IHtcclxuICAgICAgdGhpcy5fcHJldmlvdXNVcmwgPSB0aGlzLl9jdXJyZW50VXJsO1xyXG4gICAgICB0aGlzLl9jdXJyZW50VXJsID0gZS51cmw7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEByZXR1cm5zIHdpbmRvdy5oaXN0b3J5LnN0YXRlIGV4dGVuZGVkIGJ5IHN0YXRlIHBhcmFtZXRlcnMgcGFzc2VkIGZyb20gcGFyZW50IHdpbmRvdy5cclxuICAgKi9cclxuICBnZXRIaXN0b3J5U3RhdGUoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgICdSZHRTdGF0ZVBhcmFtcycgaW4gd2luZG93ICYmXHJcbiAgICAgIHR5cGVvZiB3aW5kb3dbUkRUX1NUQVRFX1BBUkFNU19LRVldID09PSAnb2JqZWN0J1xyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiB7IC4uLndpbmRvd1tSRFRfU1RBVEVfUEFSQU1TX0tFWV0sIC4uLihoaXN0b3J5LnN0YXRlID8/IHt9KSB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGhpc3Rvcnkuc3RhdGUgPz8ge307XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOYXZpZ2F0ZXMgdG8gdGhlIHNwZWNpZmllZCByb3V0ZS5cclxuICAgKiBAcGFyYW0gbGluayBSb3V0ZSB0byBuYXZpZ2F0ZSB0by5cclxuICAgKiBAcGFyYW0gcGFyYW1zIFBhcmFtZXRlciBvZiByb3V0ZSBwYXNzZWQgYXMgZmlyc3QgYXJndW1lbnQgb3IgUmR0UGFyYW1ldGVycyBvYmplY3QuXHJcbiAgICogQHBhcmFtIGV4dHJhcyBBbGxvd3MgeW91IHRvIHNwZWNpZnkgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIGZvciBuYXZpZ2F0aW9uLiBUaGVzZSBleHRyYXMgaGF2ZSBoaWdoZXIgcHJpb3JpdHkgdGhhbiB0aG9zZSBkZWZpbmVkIGluIHRoZSByb3V0ZS5cclxuICAgKiBAcmV0dXJucyBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBuYXZpZ2F0aW9uIGlzIGNvbXBsZXRlLlxyXG4gICAqL1xyXG4gIG5hdmlnYXRlPFQgZXh0ZW5kcyBvYmplY3Q+KFxyXG4gICAgbGluazogUmR0Um91dGU8VD4sXHJcbiAgICBwYXJhbXM/OiBQYXJ0aWFsPFQ+IHwgUmR0UGFyYW1ldGVycyxcclxuICAgIGV4dHJhcz86IFJkdE5hdmlnYXRlRXh0cmFzXHJcbiAgKSB7XHJcbiAgICBsZXQgdXJsOiBzdHJpbmc7XHJcbiAgICBpZiAocGFyYW1zIGluc3RhbmNlb2YgUmR0UGFyYW1ldGVycykge1xyXG4gICAgICBsZXQgbGlua0NweSA9IGxpbms7XHJcbiAgICAgIGZvciAobGV0IHI6IFJkdFJvdXRlIHwgbnVsbCA9IGxpbmtDcHk7IHIgIT09IG51bGw7IHIgPSByLnBhcmVudCkge1xyXG4gICAgICAgIGNvbnN0IHAgPSBwYXJhbXMuZ2V0KHIgYXMgUmR0Um91dGUpO1xyXG4gICAgICAgIGlmIChwKSB7XHJcbiAgICAgICAgICBsaW5rQ3B5ID0gbGlua0NweS53aXRoU3RhdGljUGFyYW1zKHIsIHApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB1cmwgPSBsaW5rQ3B5LmNyZWF0ZUFic29sdXRlVXJsKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB1cmwgPSBwYXJhbXMgPyBsaW5rLmNyZWF0ZUFic29sdXRlVXJsKHBhcmFtcykgOiBsaW5rLmNyZWF0ZUFic29sdXRlVXJsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXh0cmFzPy50YXJnZXQgPz8gREVGQVVMVF9UQVJHRVQ7XHJcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IGV4dHJhcz8ucXVlcnkgPz8gbGluay5xdWVyeVBhcmFtcztcclxuICAgIGNvbnN0IHN0YXRlUGFyYW1zID0gZXh0cmFzPy5zdGF0ZSA/PyBsaW5rLnN0YXRlUGFyYW1zO1xyXG5cclxuICAgIGlmICh0YXJnZXQgPT09ICdfc2VsZicpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlKFt1cmxdLCB7XHJcbiAgICAgICAgcXVlcnlQYXJhbXM6IHF1ZXJ5UGFyYW1zLFxyXG4gICAgICAgIHN0YXRlOiBzdGF0ZVBhcmFtcyxcclxuICAgICAgICByZXBsYWNlVXJsOiBleHRyYXM/LnJlcGxhY2VVcmwsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFic29sdXRlUGF0aCA9IFJkdFN0cmluZ1V0aWxzLmNyZWF0ZUFic29sdXRlVXJsKHVybCwgdGhpcy5iYXNlSHJlZik7XHJcbiAgICBjb25zdCBwYXRoV2l0aFBhcmFtcyA9IFJkdFN0cmluZ1V0aWxzLmFwcGVuZFF1ZXJ5UGFyYW1zKFxyXG4gICAgICBhYnNvbHV0ZVBhdGgsXHJcbiAgICAgIHF1ZXJ5UGFyYW1zXHJcbiAgICApO1xyXG4gICAgY29uc3Qgd2luID0gd2luZG93Lm9wZW4ocGF0aFdpdGhQYXJhbXMsIHRhcmdldCk7XHJcbiAgICBpZiAod2luKSB7XHJcbiAgICAgICh3aW4gYXMgYW55KVtSRFRfU1RBVEVfUEFSQU1TX0tFWV0gPSBzdGF0ZVBhcmFtcztcclxuICAgIH1cclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZUhvbWUoZXh0cmFzPzogUmR0TmF2aWdhdGVFeHRyYXMpIHtcclxuICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFxyXG4gICAgICBSZHRTdHJpbmdVdGlscy5hcHBlbmRRdWVyeVBhcmFtcygnLycsIGV4dHJhcz8ucXVlcnkgPz8ge30pLFxyXG4gICAgICB7XHJcbiAgICAgICAgc3RhdGU6IGV4dHJhcz8uc3RhdGUsXHJcbiAgICAgICAgcmVwbGFjZVVybDogZXh0cmFzPy5yZXBsYWNlVXJsLFxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGVCYWNrKGV4dHJhcz86IFJkdE5hdmlnYXRlRXh0cmFzKSB7XHJcbiAgICBjb25zdCBwYXJzZWQgPSB0aGlzLnBhcnNlQWJzb2x1dGVVcmwoKTtcclxuICAgIGlmIChwYXJzZWQpIHtcclxuICAgICAgbGV0IHJvdXRlOiBSZHRSb3V0ZSB8IG51bGwgPSBwYXJzZWQucm91dGUud2l0aFN0YXRpY1BhcmFtcyhwYXJzZWQucGFyYW1zKTtcclxuICAgICAgZG8ge1xyXG4gICAgICAgIHJvdXRlID0gcm91dGUucGFyZW50O1xyXG4gICAgICB9IHdoaWxlIChyb3V0ZSAmJiByb3V0ZS5lbnRyeURpc2FibGVkKTtcclxuXHJcbiAgICAgIC8vIEluIGNhc2Ugcm91dGUgaGFzIG5vIGFuY2VzdG9yIHdpdGggYWxsb3dlZCBlbnRyeSxcclxuICAgICAgaWYgKCFyb3V0ZSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm5hdmlnYXRlSG9tZShleHRyYXMpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChleHRyYXMpIHtcclxuICAgICAgICBpZiAoZXh0cmFzLnF1ZXJ5KSB7XHJcbiAgICAgICAgICByb3V0ZSA9IHJvdXRlLndpdGhRdWVyeVBhcmFtcyhleHRyYXMucXVlcnkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZXh0cmFzLnN0YXRlKSB7XHJcbiAgICAgICAgICByb3V0ZSA9IHJvdXRlLndpdGhTdGF0ZVBhcmFtcyhleHRyYXMuc3RhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy5uYXZpZ2F0ZShyb3V0ZSwgZXh0cmFzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICBgQ2Fubm90IGdvIGJhY2sgZnJvbSAke3RoaXMubG9jYXRpb24ucGF0aCgpfSBiZWNhdXNlIG5vIHJvdXRlIG1hdGNoZXMgY3VycmVudCB1cmxgXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhpcyBtZXRob2Qgd2lsbCB0cnkgdG8gZmluZCBtYXRjaGluZyByb3V0ZSBmb3IgZ2l2ZW4gYWJzb2x1dGUgVVJMLCBleHRyYWN0IGl0cyBwYXJhbWV0ZXJzIGFuZCByZXR1cm4gdGhlbS5cclxuICAgKiBJZiBubyByb3V0ZSBtYXRjaGVzIHRoZSBVUkwsIGl0IHJldHVybnMgbnVsbC4gUGFyYW1ldGVycyBhcmUgZXh0cmFjdGVkIG9ubHkgZm9yIHRoZSBsYXN0IG1hdGNoaW5nIHJvdXRlLCBub3QgYW5jZXN0b3JzLlxyXG4gICAqIEBwYXJhbSB1cmwgQWJzb2x1dGUgVVJMIHRvIHBhcnNlIChlLmcuICcvaG9tZS9kZXRhaWxzLzEyMz9xdWVyeT1hYmMnKS5cclxuICAgKiBAcmV0dXJucyBPYmplY3QgY29udGFpbmluZyB0aGUgbWF0Y2hpbmcgcm91dGUgYW5kIGl0cyBwYXJhbWV0ZXJzLCBvciBudWxsIGlmIG5vIHJvdXRlIGlzIG1hdGNoaW5nLlxyXG4gICAqL1xyXG4gIHBhcnNlQWJzb2x1dGVVcmwodXJsID0gdGhpcy5sb2NhdGlvbi5wYXRoKCkpIHtcclxuICAgIGNvbnN0IHN0cmlwcGVkID0gUmR0U3RyaW5nVXRpbHMuc3RyaXBRdWVyeVBhcmFtcyh1cmwpO1xyXG4gICAgaWYgKHRoaXMuYWxsUm91dGVzKSB7XHJcbiAgICAgIGZvciAoY29uc3Qgcm91dGUgb2YgdGhpcy5hbGxSb3V0ZXMpIHtcclxuICAgICAgICBjb25zdCBwYXJhbXMgPSByb3V0ZS5wYXJzZUFic29sdXRlVXJsKHN0cmlwcGVkKTtcclxuICAgICAgICBpZiAocGFyYW1zKSB7XHJcbiAgICAgICAgICByZXR1cm4geyByb3V0ZSwgcGFyYW1zIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGV4dHJhY3RBbGxQYXJhbXMoXHJcbiAgICBjdXJyZW50Um91dGU/OiBSZHRSb3V0ZVxyXG4gICk6IFJkdENvbWJpbmVkUm91dGVQYXJhbXM8YW55PiB8IG51bGwge1xyXG4gICAgaWYgKCFjdXJyZW50Um91dGUpIHtcclxuICAgICAgY29uc3QgcGFyc2VkID0gdGhpcy5wYXJzZUFic29sdXRlVXJsKCk7XHJcbiAgICAgIGlmICghcGFyc2VkKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKCdObyByb3V0ZSBtYXRjaGVzIGN1cnJlbnQgdXJsLicpO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGN1cnJlbnRSb3V0ZSA9IHBhcnNlZC5yb3V0ZTtcclxuICAgIH1cclxuICAgIGNvbnN0IHVybCA9IHRoaXMubG9jYXRpb24ucGF0aCgpO1xyXG4gICAgcmV0dXJuIGN1cnJlbnRSb3V0ZS5wYXJzZUFic29sdXRlVXJsKHVybCk7XHJcbiAgfVxyXG5cclxuICBpc1BhcmVudE9mQ3VycmVudExvY2F0aW9uKHJvdXRlOiBSZHRSb3V0ZSkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICByZW1vdmVRdWVyeVBhcmFtcyguLi5wYXJhbU5hbWVzOiBzdHJpbmdbXSkge1xyXG4gICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGBbPyZdKCR7cGFyYW1OYW1lcy5qb2luKCd8Jyl9KT1bXiZdKmAsICdnJyk7XHJcblxyXG4gICAgcmV0dXJuIGhpc3RvcnkucmVwbGFjZVN0YXRlKFxyXG4gICAgICBoaXN0b3J5LnN0YXRlLFxyXG4gICAgICAnJyxcclxuICAgICAgbG9jYXRpb24ucGF0aG5hbWUgKyBsb2NhdGlvbi5zZWFyY2gucmVwbGFjZShyZWdleCwgJycpLnJlcGxhY2UoL14mLywgJz8nKVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl19","export var RdtNavigationSource;\n(function (RdtNavigationSource) {\n RdtNavigationSource[\"BREADCRUMB\"] = \"breadcrumb\";\n})(RdtNavigationSource || (RdtNavigationSource = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL3JkdC1yb3V0ZS9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksbUJBRVg7QUFGRCxXQUFZLG1CQUFtQjtJQUM3QixnREFBeUIsQ0FBQTtBQUMzQixDQUFDLEVBRlcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQUU5QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFJkdE5hdmlnYXRpb25Tb3VyY2Uge1xyXG4gIEJSRUFEQ1JVTUIgPSAnYnJlYWRjcnVtYicsXHJcbn1cclxuIl19","import { Location } from '@angular/common';\nimport { EnvironmentInjector, inject, runInInjectionContext, } from '@angular/core';\nimport { Router, } from '@angular/router';\nimport { RDT_CANNOT_BE_ENTERED_PROVIDER } from '../services/rdt-cannot-be-entered.token';\nimport { RdtRouterService } from '../services/rdt-router.service';\nimport { RdtNavigationSource } from './constants';\nimport { RdtParameters, } from './utils';\nexport class RdtAngularRoute {\n route;\n children = [];\n // Must be set from component declaration files\n loadComponent;\n loadChildren;\n component;\n providers = [];\n providersForChildren = [];\n resolvers = {};\n canActivate = [];\n canActivateChild = [];\n canDeactivate = [];\n runGuardsAndResolvers;\n data;\n constructor(route) {\n this.route = route;\n }\n provide(...provider) {\n this.providers.push(...provider);\n return this;\n }\n provideToChildren(...provider) {\n this.providersForChildren.push(...provider);\n this.providers.push(...provider);\n return this;\n }\n withLazyComponent(callback) {\n this.loadComponent = callback;\n return this;\n }\n withModule(callback) {\n this.loadChildren = callback;\n return this;\n }\n /**\n * @deprecated Use withModule() instead.\n */\n setModule(callback) {\n this.loadChildren = callback;\n return this;\n }\n withComponent(comp) {\n this.component = comp;\n return this;\n }\n /**\n * @deprecated Use withComponent() instead.\n */\n setComponent(comp) {\n return this.withComponent(comp);\n }\n withChildren(...routes) {\n this.children = routes;\n return this;\n }\n /**\n * @deprecated Use withChildren() instead.\n */\n setChildren(...routes) {\n return this.withChildren(...routes);\n }\n addResolve(paramName, resolver) {\n this.resolvers[paramName] = resolver;\n return this;\n }\n addCanActivate(...fns) {\n this.canActivate.push(...fns);\n return this;\n }\n addCanDeactivate(...fns) {\n this.canDeactivate.push(...fns);\n return this;\n }\n addCanActivateChild(...fns) {\n this.canActivateChild.push(...fns);\n return this;\n }\n withRunGuardsAndResolvers(value) {\n this.runGuardsAndResolvers = value;\n return this;\n }\n /**\n * @deprecated Use withRunGuardsAndResolvers() instead.\n */\n setRunGuardsAndResolvers(value) {\n return this.withRunGuardsAndResolvers(value);\n }\n build() {\n this.checkChildrenMatch();\n let res = {\n path: this.route.path,\n providers: this.providers,\n title: this.route.name,\n canMatch: this.getCanMatch(),\n };\n if (this.component) {\n res.component = this.component;\n }\n else if (this.loadChildren) {\n res.loadChildren = this.loadChildren;\n }\n else if (this.loadComponent) {\n res.loadComponent = this.loadComponent;\n }\n res.data = this.data ?? {\n breadcrumb: {\n label: this.route.name,\n disable: this.route.entryDisabled,\n staticStateParams: {\n src: RdtNavigationSource.BREADCRUMB,\n },\n },\n ...this.route.data,\n };\n const guard = (route, state) => {\n const injector = inject(EnvironmentInjector);\n const rdtRouter = inject(RdtRouterService);\n const parsed = rdtRouter.parseAbsoluteUrl(state.url);\n const combinedParams = parsed?.params ?? {\n params: {},\n query: {},\n state: {},\n route: new RdtParameters(),\n };\n combinedParams.query = route.queryParams;\n if (runInInjectionContext(injector, () => this.route.canBeEnteredFn(parsed?.route ?? this.route, combinedParams))) {\n return true;\n }\n else {\n const router = inject(Router);\n const location = inject(Location);\n let url = inject(RDT_CANNOT_BE_ENTERED_PROVIDER);\n if (typeof url === 'function') {\n url = runInInjectionContext(injector, url.bind(url, location.path(), state.url, parsed?.route ?? this.route));\n }\n if (typeof url === 'string') {\n return router.parseUrl(url);\n }\n else {\n return false;\n }\n }\n };\n this.canActivate.push(guard);\n res.canActivate = this.canActivate;\n res.canDeactivate = this.canDeactivate;\n if (this.providersForChildren.length > 0) {\n this.children.forEach((ch) => this.provideToChildrenRec(ch));\n }\n // If children exist, change\n // {\n // path: '/path',\n // component: FeatureComponent,\n // children: [...]\n // }\n // into\n // {\n // path: '/path',\n // children: [\n // {\n // path: '',\n // component: FeatureComponent\n // },\n // ...\n // ]\n // }\n if (this.children.length > 0) {\n if (this.loadChildren || this.component || this.loadComponent) {\n const path = res.path;\n res.path = '';\n res.pathMatch = 'full';\n res.canMatch = undefined;\n res = {\n path: path,\n pathMatch: 'prefix',\n children: [res, ...this.children],\n canActivateChild: this.canActivateChild,\n canMatch: this.getCanMatch(),\n data: res.data,\n providers: res.providers,\n canActivate: res.canActivate,\n canDeactivate: res.canDeactivate,\n };\n }\n else {\n res.children = this.children;\n }\n }\n if (Object.keys(this.resolvers).length > 0) {\n res.resolve = this.resolvers;\n }\n if (this.runGuardsAndResolvers) {\n res.runGuardsAndResolvers = this.runGuardsAndResolvers;\n }\n return res;\n }\n getCanMatch() {\n const paramMap = this.route.paramMap;\n const hasNumberParams = Object.keys(paramMap).some((p) => paramMap[p] === 'number');\n if (!hasNumberParams) {\n return undefined;\n }\n const routeSegmentLength = this.route.path.split('/').length;\n const regex = this.route.regex\n ? new RegExp(`^${this.route.regex.source}$`)\n : this.route.absoluteRegex;\n return [\n (route, segments) => {\n const path = segments\n .slice(0, routeSegmentLength)\n .map((s) => s.path)\n .join('/');\n return regex.test(path);\n },\n ];\n }\n provideToChildrenRec(child) {\n if (!child.providers) {\n child.providers = [];\n }\n this.providersForChildren.forEach((p) => {\n if (typeof p === 'object' && 'provide' in p) {\n const exists = child.providers.some((pr) => {\n if (typeof pr === 'object' && 'provide' in pr) {\n return pr.provide === p.provide;\n }\n return false;\n });\n if (!exists) {\n child.providers.unshift(p);\n }\n }\n else {\n child.providers.unshift(p);\n }\n });\n if (child.children) {\n child.children.forEach((ch) => this.provideToChildrenRec(ch));\n }\n }\n checkChildrenMatch() {\n // Check that all routes are present if route is not\n // lazy loaded module.\n if (!this.loadChildren &&\n (this.route.children.length > 0 || this.children.length > 0)) {\n if (this.children.length < this.route.children.length) {\n throw new Error(`RdtRoute ${this.route.name} has ${this.route.children.length} children, but RdtAngularRoute has ${this.children.length}. These numbers must match. Did you forget to call .setChildren() method in global routes definition? Routes with following names should be present: ${this.route.children\n .map((ch) => ch.name)\n .join(', ')}`);\n }\n else if (this.children.length > this.route.children.length) {\n throw new Error(`RdtRoute ${this.route.name} has ${this.route.children.length} children, but RdtAngularRoute has ${this.children.length}. These numbers must match. Did you forget to call .setChildren() method in feature shell routes definition? Routes with following paths should be present: ${this.children\n .map((ch) => ch.path)\n .join(', ')}`);\n }\n const n1 = this.children.map((ch) => ch.path);\n const n2 = this.route.children.map((ch) => ch.path);\n n1.sort();\n n2.sort();\n for (let i = 0; i < n1.length; i++) {\n if (n1[i] !== n2[i]) {\n throw new Error(`Paths of children provided in RdtRoute and\r\n RdtAngularRoute do not match. ${n1[i]} != ${n2[i]}`);\n }\n }\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWFuZ3VsYXItcm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvcmR0LXJvdXRlL3JkdC1hbmd1bGFyLXJvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsbUJBQW1CLEVBRW5CLE1BQU0sRUFFTixxQkFBcUIsR0FFdEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQVVMLE1BQU0sR0FJUCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVsRCxPQUFPLEVBR0wsYUFBYSxHQUNkLE1BQU0sU0FBUyxDQUFDO0FBRWpCLE1BQU0sT0FBTyxlQUFlO0lBQ2xCLEtBQUssQ0FBYztJQUNuQixRQUFRLEdBQVksRUFBRSxDQUFDO0lBRS9CLCtDQUErQztJQUN2QyxhQUFhLENBQXlCO0lBQ3RDLFlBQVksQ0FBd0I7SUFDcEMsU0FBUyxDQUFhO0lBQ3RCLFNBQVMsR0FBd0MsRUFBRSxDQUFDO0lBQ3BELG9CQUFvQixHQUF3QyxFQUFFLENBQUM7SUFDL0QsU0FBUyxHQUEwQyxFQUFFLENBQUM7SUFDdEQsV0FBVyxHQUFvQixFQUFFLENBQUM7SUFDbEMsZ0JBQWdCLEdBQXlCLEVBQUUsQ0FBQztJQUM1QyxhQUFhLEdBQXlCLEVBQUUsQ0FBQztJQUN6QyxxQkFBcUIsQ0FBeUI7SUFDOUMsSUFBSSxDQUFRO0lBRXBCLFlBQVksS0FBa0I7UUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELE9BQU8sQ0FBQyxH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Q0FBQyxLQUFLLENBQUMsSUFBSSxRQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUN0QixzQ0FDRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQ2hCLCtKQUErSixJQUFJLENBQUMsUUFBUTtxQkFDekssR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO3FCQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDaEIsQ0FBQztZQUNKLENBQUM7WUFDRCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUssQ0FBQyxDQUFDO1lBQy9DLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BELEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ25DLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNwQixNQUFNLElBQUksS0FBSyxDQUNiOzRDQUNnQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3BELENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIEVudmlyb25tZW50SW5qZWN0b3IsXHJcbiAgRW52aXJvbm1lbnRQcm92aWRlcnMsXHJcbiAgaW5qZWN0LFxyXG4gIFByb3ZpZGVyLFxyXG4gIHJ1bkluSW5qZWN0aW9uQ29udGV4dCxcclxuICBUeXBlLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgQ2FuQWN0aXZhdGVDaGlsZEZuLFxyXG4gIENhbkFjdGl2YXRlRm4sXHJcbiAgQ2FuRGVhY3RpdmF0ZUZuLFxyXG4gIENhbk1hdGNoRm4sXHJcbiAgRGF0YSxcclxuICBMb2FkQ2hpbGRyZW5DYWxsYmFjayxcclxuICBSZXNvbHZlRm4sXHJcbiAgUm91dGUsXHJcbiAgUm91dGVyLFxyXG4gIFJvdXRlclN0YXRlU25hcHNob3QsXHJcbiAgUnVuR3VhcmRzQW5kUmVzb2x2ZXJzLFxyXG4gIFVybFNlZ21lbnQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgUkRUX0NBTk5PVF9CRV9FTlRFUkVEX1BST1ZJREVSIH0gZnJvbSAnLi4vc2VydmljZXMvcmR0LWNhbm5vdC1iZS1lbnRlcmVkLnRva2VuJztcclxuaW1wb3J0IHsgUmR0Um91dGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3JkdC1yb3V0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFJkdE5hdmlnYXRpb25Tb3VyY2UgfSBmcm9tICcuL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IFJkdFJvdXRlIH0gZnJvbSAnLi9yZHQtcm91dGUnO1xyXG5pbXBvcnQge1xyXG4gIExvYWRDb21wb25lbnRDYWxsYmFjayxcclxuICBSZHRDb21iaW5lZFJvdXRlUGFyYW1zLFxyXG4gIFJkdFBhcmFtZXRlcnMsXHJcbn0gZnJvbSAnLi91dGlscyc7XHJcblxyXG5leHBvcnQgY2xhc3MgUmR0QW5ndWxhclJvdXRlPFQgZXh0ZW5kcyBvYmplY3Q+IHtcclxuICBwcml2YXRlIHJvdXRlOiBSZHRSb3V0ZTxUPjtcclxuICBwcml2YXRlIGNoaWxkcmVuOiBSb3V0ZVtdID0gW107XHJcblxyXG4gIC8vIE11c3QgYmUgc2V0IGZyb20gY29tcG9uZW50IGRlY2xhcmF0aW9uIGZpbGVzXHJcbiAgcHJpdmF0ZSBsb2FkQ29tcG9uZW50PzogTG9hZENvbXBvbmVudENhbGxiYWNrO1xyXG4gIHByaXZhdGUgbG9hZENoaWxkcmVuPzogTG9hZENoaWxkcmVuQ2FsbGJhY2s7XHJcbiAgcHJpdmF0ZSBjb21wb25lbnQ/OiBUeXBlPGFueT47XHJcbiAgcHJpdmF0ZSBwcm92aWRlcnM6IChQcm92aWRlciB8IEVudmlyb25tZW50UHJvdmlkZXJzKVtdID0gW107XHJcbiAgcHJpdmF0ZSBwcm92aWRlcnNGb3JDaGlsZHJlbjogKFByb3ZpZGVyIHwgRW52aXJvbm1lbnRQcm92aWRlcnMpW10gPSBbXTtcclxuICBwcml2YXRlIHJlc29sdmVyczogeyBba2V5OiBzdHJpbmddOiBSZXNvbHZlRm48dW5rbm93bj4gfSA9IHt9O1xyXG4gIHByaXZhdGUgY2FuQWN0aXZhdGU6IENhbkFjdGl2YXRlRm5bXSA9IFtdO1xyXG4gIHByaXZhdGUgY2FuQWN0aXZhdGVDaGlsZDogQ2FuQWN0aXZhdGVDaGlsZEZuW10gPSBbXTtcclxuICBwcml2YXRlIGNhbkRlYWN0aXZhdGU6IENhbkRlYWN0aXZhdGVGbjxUPltdID0gW107XHJcbiAgcHJpdmF0ZSBydW5HdWFyZHNBbmRSZXNvbHZlcnM/OiBSdW5HdWFyZHNBbmRSZXNvbHZlcnM7XHJcbiAgcHJpdmF0ZSBkYXRhPzogRGF0YTtcclxuXHJcbiAgY29uc3RydWN0b3Iocm91dGU6IFJkdFJvdXRlPFQ+KSB7XHJcbiAgICB0aGlzLnJvdXRlID0gcm91dGU7XHJcbiAgfVxyXG5cclxuICBwcm92aWRlKC4uLnByb3ZpZGVyOiAoUHJvdmlkZXIgfCBFbnZpcm9ubWVudFByb3ZpZGVycylbXSkge1xyXG4gICAgdGhpcy5wcm92aWRlcnMucHVzaCguLi5wcm92aWRlcik7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHByb3ZpZGVUb0NoaWxkcmVuKC4uLnByb3ZpZGVyOiAoUHJvdmlkZXIgfCBFbnZpcm9ubWVudFByb3ZpZGVycylbXSkge1xyXG4gICAgdGhpcy5wcm92aWRlcnNGb3JDaGlsZHJlbi5wdXNoKC4uLnByb3ZpZGVyKTtcclxuICAgIHRoaXMucHJvdmlkZXJzLnB1c2goLi4ucHJvdmlkZXIpO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICB3aXRoTGF6eUNvbXBvbmVudChjYWxsYmFjazogTG9hZENvbXBvbmVudENhbGxiYWNrKSB7XHJcbiAgICB0aGlzLmxvYWRDb21wb25lbnQgPSBjYWxsYmFjaztcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgd2l0aE1vZHVsZShjYWxsYmFjazogTG9hZENoaWxkcmVuQ2FsbGJhY2spIHtcclxuICAgIHRoaXMubG9hZENoaWxkcmVuID0gY2FsbGJhY2s7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHdpdGhNb2R1bGUoKSBpbnN0ZWFkLlxyXG4gICAqL1xyXG4gIHNldE1vZHVsZShjYWxsYmFjazogTG9hZENoaWxkcmVuQ2FsbGJhY2spIHtcclxuICAgIHRoaXMubG9hZENoaWxkcmVuID0gY2FsbGJhY2s7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHdpdGhDb21wb25lbnQoY29tcDogVHlwZTxhbnk+KSB7XHJcbiAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXA7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHdpdGhDb21wb25lbnQoKSBpbnN0ZWFkLlxyXG4gICAqL1xyXG4gIHNldENvbXBvbmVudChjb21wOiBUeXBlPGFueT4pIHtcclxuICAgIHJldHVybiB0aGlzLndpdGhDb21wb25lbnQoY29tcCk7XHJcbiAgfVxyXG5cclxuICB3aXRoQ2hpbGRyZW4oLi4ucm91dGVzOiBSb3V0ZVtdKSB7XHJcbiAgICB0aGlzLmNoaWxkcmVuID0gcm91dGVzO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoQ2hpbGRyZW4oKSBpbnN0ZWFkLlxyXG4gICAqL1xyXG4gIHNldENoaWxkcmVuKC4uLnJvdXRlczogUm91dGVbXSkge1xyXG4gICAgcmV0dXJuIHRoaXMud2l0aENoaWxkcmVuKC4uLnJvdXRlcyk7XHJcbiAgfVxyXG5cclxuICBhZGRSZXNvbHZlKHBhcmFtTmFtZTogc3RyaW5nLCByZXNvbHZlcjogUmVzb2x2ZUZuPHVua25vd24+KSB7XHJcbiAgICB0aGlzLnJlc29sdmVyc1twYXJhbU5hbWVdID0gcmVzb2x2ZXI7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIGFkZENhbkFjdGl2YXRlKC4uLmZuczogQ2FuQWN0aXZhdGVGbltdKSB7XHJcbiAgICB0aGlzLmNhbkFjdGl2YXRlLnB1c2goLi4uZm5zKTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgYWRkQ2FuRGVhY3RpdmF0ZSguLi5mbnM6IENhbkRlYWN0aXZhdGVGbjxhbnk+W10pIHtcclxuICAgIHRoaXMuY2FuRGVhY3RpdmF0ZS5wdXNoKC4uLmZucyk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIGFkZENhbkFjdGl2YXRlQ2hpbGQoLi4uZm5zOiBDYW5BY3RpdmF0ZUNoaWxkRm5bXSkge1xyXG4gICAgdGhpcy5jYW5BY3RpdmF0ZUNoaWxkLnB1c2goLi4uZm5zKTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgd2l0aFJ1bkd1YXJkc0FuZFJlc29sdmVycyh2YWx1ZTogUnVuR3VhcmRzQW5kUmVzb2x2ZXJzKSB7XHJcbiAgICB0aGlzLnJ1bkd1YXJkc0FuZFJlc29sdmVycyA9IHZhbHVlO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoUnVuR3VhcmRzQW5kUmVzb2x2ZXJzKCkgaW5zdGVhZC5cclxuICAgKi9cclxuICBzZXRSdW5HdWFyZHNBbmRSZXNvbHZlcnModmFsdWU6IFJ1bkd1YXJkc0FuZFJlc29sdmVycykge1xyXG4gICAgcmV0dXJuIHRoaXMud2l0aFJ1bkd1YXJkc0FuZFJlc29sdmVycyh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBidWlsZCgpOiBSb3V0ZSB7XHJcbiAgICB0aGlzLmNoZWNrQ2hpbGRyZW5NYXRjaCgpO1xyXG5cclxuICAgIGxldCByZXM6IFJvdXRlID0ge1xyXG4gICAgICBwYXRoOiB0aGlzLnJvdXRlLnBhdGgsXHJcbiAgICAgIHByb3ZpZGVyczogdGhpcy5wcm92aWRlcnMsXHJcbiAgICAgIHRpdGxlOiB0aGlzLnJvdXRlLm5hbWUsXHJcbiAgICAgIGNhbk1hdGNoOiB0aGlzLmdldENhbk1hdGNoKCksXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLmNvbXBvbmVudCkge1xyXG4gICAgICByZXMuY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMubG9hZENoaWxkcmVuKSB7XHJcbiAgICAgIHJlcy5sb2FkQ2hpbGRyZW4gPSB0aGlzLmxvYWRDaGlsZHJlbjtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5sb2FkQ29tcG9uZW50KSB7XHJcbiAgICAgIHJlcy5sb2FkQ29tcG9uZW50ID0gdGhpcy5sb2FkQ29tcG9uZW50O1xyXG4gICAgfVxyXG5cclxuICAgIHJlcy5kYXRhID0gdGhpcy5kYXRhID8/IHtcclxuICAgICAgYnJlYWRjcnVtYjoge1xyXG4gICAgICAgIGxhYmVsOiB0aGlzLnJvdXRlLm5hbWUsXHJcbiAgICAgICAgZGlzYWJsZTogdGhpcy5yb3V0ZS5lbnRyeURpc2FibGVkLFxyXG4gICAgICAgIHN0YXRpY1N0YXRlUGFyYW1zOiB7XHJcbiAgICAgICAgICBzcmM6IFJkdE5hdmlnYXRpb25Tb3VyY2UuQlJFQURDUlVNQixcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICAuLi50aGlzLnJvdXRlLmRhdGEsXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGd1YXJkOiBDYW5BY3RpdmF0ZUZuID0gKFxyXG4gICAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICAgICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcclxuICAgICkgPT4ge1xyXG4gICAgICBjb25zdCBpbmplY3RvciA9IGluamVjdChFbnZpcm9ubWVudEluamVjdG9yKTtcclxuICAgICAgY29uc3QgcmR0Um91dGVyID0gaW5qZWN0KFJkdFJvdXRlclNlcnZpY2UpO1xyXG4gICAgICBjb25zdCBwYXJzZWQgPSByZHRSb3V0ZXIucGFyc2VBYnNvbHV0ZVVybChzdGF0ZS51cmwpO1xyXG4gICAgICBjb25zdCBjb21iaW5lZFBhcmFtczogUmR0Q29tYmluZWRSb3V0ZVBhcmFtczxUPiA9IHBhcnNlZD8ucGFyYW1zID8/IHtcclxuICAgICAgICBwYXJhbXM6IHt9LFxyXG4gICAgICAgIHF1ZXJ5OiB7fSxcclxuICAgICAgICBzdGF0ZToge30sXHJcbiAgICAgICAgcm91dGU6IG5ldyBSZHRQYXJhbWV0ZXJzKCksXHJcbiAgICAgIH07XHJcbiAgICAgIGNvbWJpbmVkUGFyYW1zLnF1ZXJ5ID0gcm91dGUucXVlcnlQYXJhbXM7XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgcnVuSW5JbmplY3Rpb25Db250ZXh0KGluamVjdG9yLCAoKSA9PlxyXG4gICAgICAgICAgdGhpcy5yb3V0ZS5jYW5CZUVudGVyZWRGbihwYXJzZWQ/LnJvdXRlID8/IHRoaXMucm91dGUsIGNvbWJpbmVkUGFyYW1zKVxyXG4gICAgICAgIClcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcbiAgICAgICAgY29uc3QgbG9jYXRpb24gPSBpbmplY3QoTG9jYXRpb24pO1xyXG4gICAgICAgIGxldCB1cmwgPSBpbmplY3QoUkRUX0NBTk5PVF9CRV9FTlRFUkVEX1BST1ZJREVSKTtcclxuICAgICAgICBpZiAodHlwZW9mIHVybCA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgdXJsID0gcnVuSW5JbmplY3Rpb25Db250ZXh0KFxyXG4gICAgICAgICAgICBpbmplY3RvcixcclxuICAgICAgICAgICAgdXJsLmJpbmQoXHJcbiAgICAgICAgICAgICAgdXJsLFxyXG4gICAgICAgICAgICAgIGxvY2F0aW9uLnBhdGgoKSxcclxuICAgICAgICAgICAgICBzdGF0ZS51cmwsXHJcbiAgICAgICAgICAgICAgcGFyc2VkPy5yb3V0ZSA/PyB0aGlzLnJvdXRlXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlb2YgdXJsID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgcmV0dXJuIHJvdXRlci5wYXJzZVVybCh1cmwpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhpcy5jYW5BY3RpdmF0ZS5wdXNoKGd1YXJkKTtcclxuXHJcbiAgICByZXMuY2FuQWN0aXZhdGUgPSB0aGlzLmNhbkFjdGl2YXRlO1xyXG4gICAgcmVzLmNhbkRlYWN0aXZhdGUgPSB0aGlzLmNhbkRlYWN0aXZhdGU7XHJcblxyXG4gICAgaWYgKHRoaXMucHJvdmlkZXJzRm9yQ2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmNoaWxkcmVuLmZvckVhY2goKGNoKSA9PiB0aGlzLnByb3ZpZGVUb0NoaWxkcmVuUmVjKGNoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWYgY2hpbGRyZW4gZXhpc3QsIGNoYW5nZVxyXG4gICAgLy8ge1xyXG4gICAgLy8gICAgcGF0aDogJy9wYXRoJyxcclxuICAgIC8vICAgIGNvbXBvbmVudDogRmVhdHVyZUNvbXBvbmVudCxcclxuICAgIC8vICAgIGNoaWxkcmVuOiBbLi4uXVxyXG4gICAgLy8gfVxyXG4gICAgLy8gaW50b1xyXG4gICAgLy8ge1xyXG4gICAgLy8gICAgcGF0aDogJy9wYXRoJyxcclxuICAgIC8vICAgIGNoaWxkcmVuOiBbXHJcbiAgICAvLyAgICAgIHtcclxuICAgIC8vICAgICAgICBwYXRoOiAnJyxcclxuICAgIC8vICAgICAgICBjb21wb25lbnQ6IEZlYXR1cmVDb21wb25lbnRcclxuICAgIC8vICAgICAgfSxcclxuICAgIC8vICAgIC4uLlxyXG4gICAgLy8gICAgXVxyXG4gICAgLy8gICAgfVxyXG4gICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICBpZiAodGhpcy5sb2FkQ2hpbGRyZW4gfHwgdGhpcy5jb21wb25lbnQgfHwgdGhpcy5sb2FkQ29tcG9uZW50KSB7XHJcbiAgICAgICAgY29uc3QgcGF0aCA9IHJlcy5wYXRoO1xyXG4gICAgICAgIHJlcy5wYXRoID0gJyc7XHJcbiAgICAgICAgcmVzLnBhdGhNYXRjaCA9ICdmdWxsJztcclxuICAgICAgICByZXMuY2FuTWF0Y2ggPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgcmVzID0ge1xyXG4gICAgICAgICAgcGF0aDogcGF0aCxcclxuICAgICAgICAgIHBhdGhNYXRjaDogJ3ByZWZpeCcsXHJcbiAgICAgICAgICBjaGlsZHJlbjogW3JlcywgLi4udGhpcy5jaGlsZHJlbl0sXHJcbiAgICAgICAgICBjYW5BY3RpdmF0ZUNoaWxkOiB0aGlzLmNhbkFjdGl2YXRlQ2hpbGQsXHJcbiAgICAgICAgICBjYW5NYXRjaDogdGhpcy5nZXRDYW5NYXRjaCgpLFxyXG4gICAgICAgICAgZGF0YTogcmVzLmRhdGEsXHJcbiAgICAgICAgICBwcm92aWRlcnM6IHJlcy5wcm92aWRlcnMsXHJcbiAgICAgICAgICBjYW5BY3RpdmF0ZTogcmVzLmNhbkFjdGl2YXRlLFxyXG4gICAgICAgICAgY2FuRGVhY3RpdmF0ZTogcmVzLmNhbkRlYWN0aXZhdGUsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXMuY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKE9iamVjdC5rZXlzKHRoaXMucmVzb2x2ZXJzKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHJlcy5yZXNvbHZlID0gdGhpcy5yZXNvbHZlcnM7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucnVuR3VhcmRzQW5kUmVzb2x2ZXJzKSB7XHJcbiAgICAgIHJlcy5ydW5HdWFyZHNBbmRSZXNvbHZlcnMgPSB0aGlzLnJ1bkd1YXJkc0FuZFJlc29sdmVycztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDYW5NYXRjaCgpOiBDYW5NYXRjaEZuW10gfCB1bmRlZmluZWQge1xyXG4gICAgY29uc3QgcGFyYW1NYXAgPSB0aGlzLnJvdXRlLnBhcmFtTWFwO1xyXG4gICAgY29uc3QgaGFzTnVtYmVyUGFyYW1zID0gT2JqZWN0LmtleXMocGFyYW1NYXApLnNvbWUoXHJcbiAgICAgIChwKSA9PiBwYXJhbU1hcFtwIGFzIGtleW9mIFRdID09PSAnbnVtYmVyJ1xyXG4gICAgKTtcclxuICAgIGlmICghaGFzTnVtYmVyUGFyYW1zKSB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICBjb25zdCByb3V0ZVNlZ21lbnRMZW5ndGggPSB0aGlzLnJvdXRlLnBhdGguc3BsaXQoJy8nKS5sZW5ndGg7XHJcbiAgICBjb25zdCByZWdleCA9IHRoaXMucm91dGUucmVnZXhcclxuICAgICAgPyBuZXcgUmVnRXhwKGBeJHt0aGlzLnJvdXRlLnJlZ2V4LnNvdXJjZX0kYClcclxuICAgICAgOiB0aGlzLnJvdXRlLmFic29sdXRlUmVnZXg7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICAocm91dGU6IFJvdXRlLCBzZWdtZW50czogVXJsU2VnbWVudFtdKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcGF0aCA9IHNlZ21lbnRzXHJcbiAgICAgICAgICAuc2xpY2UoMCwgcm91dGVTZWdtZW50TGVuZ3RoKVxyXG4gICAgICAgICAgLm1hcCgocykgPT4gcy5wYXRoKVxyXG4gICAgICAgICAgLmpvaW4oJy8nKTtcclxuICAgICAgICByZXR1cm4gcmVnZXgudGVzdChwYXRoKTtcclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByb3ZpZGVUb0NoaWxkcmVuUmVjKGNoaWxkOiBSb3V0ZSkge1xyXG4gICAgaWYgKCFjaGlsZC5wcm92aWRlcnMpIHtcclxuICAgICAgY2hpbGQucHJvdmlkZXJzID0gW107XHJcbiAgICB9XHJcbiAgICB0aGlzLnByb3ZpZGVyc0ZvckNoaWxkcmVuLmZvckVhY2goKHApID0+IHtcclxuICAgICAgaWYgKHR5cGVvZiBwID09PSAnb2JqZWN0JyAmJiAncHJvdmlkZScgaW4gcCkge1xyXG4gICAgICAgIGNvbnN0IGV4aXN0cyA9IGNoaWxkLnByb3ZpZGVycyEuc29tZSgocHIpID0+IHtcclxuICAgICAgICAgIGlmICh0eXBlb2YgcHIgPT09ICdvYmplY3QnICYmICdwcm92aWRlJyBpbiBwcikge1xyXG4gICAgICAgICAgICByZXR1cm4gcHIucHJvdmlkZSA9PT0gcC5wcm92aWRlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICghZXhpc3RzKSB7XHJcbiAgICAgICAgICBjaGlsZC5wcm92aWRlcnMhLnVuc2hpZnQocCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNoaWxkLnByb3ZpZGVycyEudW5zaGlmdChwKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAoY2hpbGQuY2hpbGRyZW4pIHtcclxuICAgICAgY2hpbGQuY2hpbGRyZW4uZm9yRWFjaCgoY2gpID0+IHRoaXMucHJvdmlkZVRvQ2hpbGRyZW5SZWMoY2gpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tDaGlsZHJlbk1hdGNoKCkge1xyXG4gICAgLy8gQ2hlY2sgdGhhdCBhbGwgcm91dGVzIGFyZSBwcmVzZW50IGlmIHJvdXRlIGlzIG5vdFxyXG4gICAgLy8gbGF6eSBsb2FkZWQgbW9kdWxlLlxyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5sb2FkQ2hpbGRyZW4gJiZcclxuICAgICAgKHRoaXMucm91dGUuY2hpbGRyZW4ubGVuZ3RoID4gMCB8fCB0aGlzLmNoaWxkcmVuLmxlbmd0aCA+IDApXHJcbiAgICApIHtcclxuICAgICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3RoIDwgdGhpcy5yb3V0ZS5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgICBgUmR0Um91dGUgJHt0aGlzLnJvdXRlLm5hbWV9IGhhcyAke1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlLmNoaWxkcmVuLmxlbmd0aFxyXG4gICAgICAgICAgfSBjaGlsZHJlbiwgYnV0IFJkdEFuZ3VsYXJSb3V0ZSBoYXMgJHtcclxuICAgICAgICAgICAgdGhpcy5jaGlsZHJlbi5sZW5ndGhcclxuICAgICAgICAgIH0uIFRoZXNlIG51bWJlcnMgbXVzdCBtYXRjaC4gRGlkIHlvdSBmb3JnZXQgdG8gY2FsbCAuc2V0Q2hpbGRyZW4oKSBtZXRob2QgaW4gZ2xvYmFsIHJvdXRlcyBkZWZpbml0aW9uPyBSb3V0ZXMgd2l0aCBmb2xsb3dpbmcgbmFtZXMgc2hvdWxkIGJlIHByZXNlbnQ6ICR7dGhpcy5yb3V0ZS5jaGlsZHJlblxyXG4gICAgICAgICAgICAubWFwKChjaCkgPT4gY2gubmFtZSlcclxuICAgICAgICAgICAgLmpvaW4oJywgJyl9YFxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGggPiB0aGlzLnJvdXRlLmNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgIGBSZHRSb3V0ZSAke3RoaXMucm91dGUubmFtZX0gaGFzICR7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGUuY2hpbGRyZW4ubGVuZ3RoXHJcbiAgICAgICAgICB9IGNoaWxkcmVuLCBidXQgUmR0QW5ndWxhclJvdXRlIGhhcyAke1xyXG4gICAgICAgICAgICB0aGlzLmNoaWxkcmVuLmxlbmd0aFxyXG4gICAgICAgICAgfS4gVGhlc2UgbnVtYmVycyBtdXN0IG1hdGNoLiBEaWQgeW91IGZvcmdldCB0byBjYWxsIC5zZXRDaGlsZHJlbigpIG1ldGhvZCBpbiBmZWF0dXJlIHNoZWxsIHJvdXRlcyBkZWZpbml0aW9uPyBSb3V0ZXMgd2l0aCBmb2xsb3dpbmcgcGF0aHMgc2hvdWxkIGJlIHByZXNlbnQ6ICR7dGhpcy5jaGlsZHJlblxyXG4gICAgICAgICAgICAubWFwKChjaCkgPT4gY2gucGF0aClcclxuICAgICAgICAgICAgLmpvaW4oJywgJyl9YFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgbjEgPSB0aGlzLmNoaWxkcmVuLm1hcCgoY2gpID0+IGNoLnBhdGghKTtcclxuICAgICAgY29uc3QgbjIgPSB0aGlzLnJvdXRlLmNoaWxkcmVuLm1hcCgoY2gpID0+IGNoLnBhdGgpO1xyXG4gICAgICBuMS5zb3J0KCk7XHJcbiAgICAgIG4yLnNvcnQoKTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuMS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChuMVtpXSAhPT0gbjJbaV0pIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgICAgYFBhdGhzIG9mIGNoaWxkcmVuIHByb3ZpZGVkIGluIFJkdFJvdXRlIGFuZFxyXG4gICAgICAgICAgICBSZHRBbmd1bGFyUm91dGUgZG8gbm90IG1hdGNoLiAke24xW2ldfSAhPSAke24yW2ldfWBcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { ALWAYS_TRUE, } from './utils';\nexport class RdtRouteBase {\n _orderedParams = [];\n _paramMap = {};\n _regex = null;\n _paramMappings = [];\n _name;\n _path;\n _parent = null;\n _children = [];\n _entryDisabled = false;\n _canBeEntered = ALWAYS_TRUE;\n _data = {};\n /**\n * Data that is passed to Angular route definition.\n */\n get data() {\n return this._data;\n }\n /**\n * Regular expression route path relative to parent route.\n * Hostname excluded.\n */\n get regex() {\n return this._regex;\n }\n /**\n * Denotes disabled route entry.\n * If true, route should have no NgModule\n * or component and only serves as virtual module\n * for breadcrumb.\n */\n get entryDisabled() {\n return this._entryDisabled;\n }\n /**\n * Map of parameters and their types.\n */\n get paramMap() {\n return this._paramMap;\n }\n /**\n * Human readable name for display in breadcrumbs, title, etc.\n */\n get name() {\n return this._name;\n }\n /**\n * Path of the route relative to parent route.\n */\n get path() {\n return this._path;\n }\n /**\n * Parent route.\n */\n get parent() {\n return this._parent;\n }\n /**\n * Child routes.\n */\n get children() {\n return this._children;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvcmR0LXJvdXRlL3JkdC1yb3V0ZS1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFDTCxXQUFXLEdBSVosTUFBTSxTQUFTLENBQUM7QUFFakIsTUFBTSxPQUFPLFlBQVk7SUFDYixjQUFjLEdBQWEsRUFBRSxDQUFDO0lBQzlCLFNBQVMsR0FBb0IsRUFBRSxDQUFDO0lBQ2hDLE1BQU0sR0FBa0IsSUFBSSxDQUFDO0lBQzdCLGNBQWMsR0FBbUIsRUFBRSxDQUFDO0lBRXBDLEtBQUssQ0FBVTtJQUNmLEtBQUssQ0FBVTtJQUNmLE9BQU8sR0FBb0IsSUFBSSxDQUFDO0lBQ2hDLFNBQVMsR0FBZSxFQUFFLENBQUM7SUFDM0IsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUN2QixhQUFhLEdBQXlCLFdBQVcsQ0FBQztJQUNsRCxLQUFLLEdBQVMsRUFBRSxDQUFDO0lBRTNCOztPQUVHO0lBQ0gsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBSZHRSb3V0ZSB9IGZyb20gJy4vcmR0LXJvdXRlJztcbmltcG9ydCB7XG4gIEFMV0FZU19UUlVFLFxuICBQYXJhbU1hcHBpbmcsXG4gIFBhcmFtVHlwZU1hcCxcbiAgUmR0Q2FuQmVFbnRlcmVkRm4sXG59IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgUmR0Um91dGVCYXNlPFQgZXh0ZW5kcyBvYmplY3Q+IHtcbiAgcHJvdGVjdGVkIF9vcmRlcmVkUGFyYW1zOiBzdHJpbmdbXSA9IFtdO1xuICBwcm90ZWN0ZWQgX3BhcmFtTWFwOiBQYXJhbVR5cGVNYXA8VD4gPSB7fTtcbiAgcHJvdGVjdGVkIF9yZWdleDogUmVnRXhwIHwgbnVsbCA9IG51bGw7XG4gIHByb3RlY3RlZCBfcGFyYW1NYXBwaW5nczogUGFyYW1NYXBwaW5nW10gPSBbXTtcblxuICBwcm90ZWN0ZWQgX25hbWUhOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfcGF0aCE6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9wYXJlbnQ6IFJkdFJvdXRlIHwgbnVsbCA9IG51bGw7XG4gIHByb3RlY3RlZCBfY2hpbGRyZW46IFJkdFJvdXRlW10gPSBbXTtcbiAgcHJvdGVjdGVkIF9lbnRyeURpc2FibGVkID0gZmFsc2U7XG4gIHByb3RlY3RlZCBfY2FuQmVFbnRlcmVkOiBSZHRDYW5CZUVudGVyZWRGbjxUPiA9IEFMV0FZU19UUlVFO1xuICBwcm90ZWN0ZWQgX2RhdGE6IERhdGEgPSB7fTtcblxuICAvKipcbiAgICogRGF0YSB0aGF0IGlzIHBhc3NlZCB0byBBbmd1bGFyIHJvdXRlIGRlZmluaXRpb24uXG4gICAqL1xuICBnZXQgZGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWd1bGFyIGV4cHJlc3Npb24gcm91dGUgcGF0aCByZWxhdGl2ZSB0byBwYXJlbnQgcm91dGUuXG4gICAqIEhvc3RuYW1lIGV4Y2x1ZGVkLlxuICAgKi9cbiAgZ2V0IHJlZ2V4KCkge1xuICAgIHJldHVybiB0aGlzLl9yZWdleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZW5vdGVzIGRpc2FibGVkIHJvdXRlIGVudHJ5LlxuICAgKiBJZiB0cnVlLCByb3V0ZSBzaG91bGQgaGF2ZSBubyBOZ01vZHVsZVxuICAgKiBvciBjb21wb25lbnQgYW5kIG9ubHkgc2VydmVzIGFzIHZpcnR1YWwgbW9kdWxlXG4gICAqIGZvciBicmVhZGNydW1iLlxuICAgKi9cbiAgZ2V0IGVudHJ5RGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VudHJ5RGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogTWFwIG9mIHBhcmFtZXRlcnMgYW5kIHRoZWlyIHR5cGVzLlxuICAgKi9cbiAgZ2V0IHBhcmFtTWFwKCk6IFJlYWRvbmx5PFBhcmFtVHlwZU1hcDxUPj4ge1xuICAgIHJldHVybiB0aGlzLl9wYXJhbU1hcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBIdW1hbiByZWFkYWJsZSBuYW1lIGZvciBkaXNwbGF5IGluIGJyZWFkY3J1bWJzLCB0aXRsZSwgZXRjLlxuICAgKi9cbiAgZ2V0IG5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XG4gIH1cblxuICAvKipcbiAgICogUGF0aCBvZiB0aGUgcm91dGUgcmVsYXRpdmUgdG8gcGFyZW50IHJvdXRlLlxuICAgKi9cbiAgZ2V0IHBhdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhdGg7XG4gIH1cblxuICAvKipcbiAgICogUGFyZW50IHJvdXRlLlxuICAgKi9cbiAgZ2V0IHBhcmVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIENoaWxkIHJvdXRlcy5cbiAgICovXG4gIGdldCBjaGlsZHJlbigpIHtcbiAgICByZXR1cm4gdGhpcy5fY2hpbGRyZW47XG4gIH1cbn1cbiJdfQ==","import { runInInjectionContext } from '@angular/core';\nimport { RdtStringUtils } from '@ngrdt/utils';\nimport { RdtAngularRoute } from './rdt-angular-route';\nimport { RdtRouteBase } from './rdt-route-base';\nimport { ALWAYS_TRUE, RdtParameters, } from './utils';\nexport class RdtRoute extends RdtRouteBase {\n _absoluteRegex;\n _staticParams = {};\n _queryParams = {};\n _stateParams = {};\n /**\n * Absolute path of parent route or '/' if there is no parent.\n * Hostname excluded.\n */\n get basePath() {\n return this._parent ? this._parent.absolutePath : '/';\n }\n /**\n * Absolute path of the route. Hostname excluded.\n */\n get absolutePath() {\n return RdtStringUtils.joinPaths(this.basePath, this._path);\n }\n /**\n * Regular expression to match only this route (not children\n * or parent routes). Hostname excluded.\n */\n get absoluteRegex() {\n if (this._absoluteRegex) {\n return this._absoluteRegex;\n }\n if (!this._regex) {\n this._absoluteRegex = new RegExp('^/$');\n if (this._parent) {\n throw new Error('Nested route with empty path is not allowed.');\n }\n }\n else if (this._parent) {\n // Remove initial ^ and ending $\n const parent = this._parent.absoluteRegex.source.slice(1, -1);\n this._absoluteRegex = new RegExp('^' + RdtStringUtils.joinPaths(parent, this._regex.source) + '$');\n }\n else {\n this._absoluteRegex = new RegExp('^' + RdtStringUtils.joinPaths('/', this._regex.source) + '$');\n }\n return this._absoluteRegex;\n }\n /**\n * Statically set state params used when navigating to this instance.\n */\n get stateParams() {\n return this._stateParams;\n }\n /**\n * Statically set query params used when navigating to this instance.\n */\n get queryParams() {\n return this._queryParams;\n }\n /**\n * @param url Absolute path to test.\n * @returns True if url matches this route.\n */\n testUrl(url) {\n return this.absoluteRegex.test(url);\n }\n /**\n * Statically set parameters used when navigating to this instance.\n */\n get staticParams() {\n return { ...this._staticParams };\n }\n get hasCanBeEnteredGuard() {\n return this._canBeEntered !== ALWAYS_TRUE;\n }\n /**\n * Meta guard that is used by [rdtRouterLink] and RdtMenu\n * to determine if route can be entered.\n * @param injector Environment or custom injector.\n * @param params Optional parameters to pass to guard function.\n * @returns True if route can be entered.\n */\n canBeEntered(injector, combinedParams = {}) {\n const route = this.getStaticParams();\n let query = this._queryParams;\n let state = this._stateParams;\n if (combinedParams.params) {\n route.set(this, combinedParams.params);\n }\n if (combinedParams.route) {\n route.setAll(combinedParams.route);\n }\n if (combinedParams.query) {\n query = { ...query, ...combinedParams.query };\n }\n if (combinedParams.state) {\n state = { ...state, ...combinedParams.state };\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let current = this;\n while (current) {\n const combined = {\n params: route.get(current) ?? {},\n route: route,\n query: query,\n state: state,\n };\n if (injector) {\n const c = current;\n if (!runInInjectionContext(injector, () => c._canBeEntered(c, combined))) {\n return false;\n }\n }\n else if (!current._canBeEntered(current, combined)) {\n return false;\n }\n current = current._parent;\n }\n return true;\n }\n get canBeEnteredFn() {\n return this._canBeEntered;\n }\n /**\n * Extracts url parameters from absolute path for this path and each parent.\n */\n parseAbsoluteUrl(url) {\n const path = RdtStringUtils.stripQueryParams(url);\n const reg = this.absoluteRegex;\n const matches = reg.exec(path);\n if (matches) {\n const query = RdtStringUtils.parseQueryParams(url);\n const values = matches.slice(1).reverse();\n const obj = this.fill(values);\n const route = new RdtParameters(obj);\n const params = route.get(this) ?? {};\n return {\n params: params,\n route: route,\n query: query,\n state: {},\n };\n }\n else {\n return null;\n }\n }\n fill(values, res = {}) {\n const params = {};\n const reversedParams = this._orderedParams.slice().reverse();\n for (let i = 0; i < reversedParams.length && i < values.length; i++) {\n const key = reversedParams[i];\n const mappedKey = this._paramMappings.find((m) => m.urlName === key)?.tableName ?? key;\n let val = values[i];\n if (this._paramMap[key] === 'number') {\n val = parseInt(val);\n }\n params[mappedKey] = val;\n }\n res[this.absolutePath] = params;\n if (values.length > reversedParams.length && this._parent) {\n this._parent.fill(values.slice(reversedParams.length), res);\n }\n return res;\n }\n /**\n * Fills parameters in path with values from paramMap.\n * Use withStaticParams() beforehand in case parent paths contain parameters.\n * @param paramMap Must contain all parameters for this route.\n * @returns Absolute path.\n */\n createAbsoluteUrl(paramMap = this._staticParams) {\n if (!this._parent) {\n return this.createUrl(this.absolutePath, paramMap);\n }\n else {\n return RdtStringUtils.joinPaths(this._parent.createAbsoluteUrl(), this.createRelativeUrl(paramMap));\n }\n }\n createRelativeUrl(paramMap = this._staticParams) {\n return this.createUrl(this.path, paramMap);\n }\n createUrl(path, paramMap) {\n const paramNames = Object.keys(this._paramMap);\n paramNames.sort((a, b) => b.length - a.length);\n const extendedParamMap = { ...paramMap };\n this._paramMappings.forEach((mapping) => {\n if (mapping.tableName in paramMap) {\n extendedParamMap[mapping.urlName] = paramMap[mapping.tableName];\n }\n });\n paramNames.forEach((param) => {\n if (!(param in extendedParamMap)) {\n throw new Error(`Param ${param} is missing for route ${this.absolutePath}. Please pass object with required parameters.`);\n }\n const value = extendedParamMap[param];\n path = path.replace(`:${param}`, `${value}`);\n });\n return path;\n }\n toAngularRoute() {\n return new RdtAngularRoute(this);\n }\n /**\n * Provides static mapping for parameter names tableName -> urlName.\n * Returns new instance of RdtRoute<T> that is clone of\n * this route and its parents (NOT children).\n * @returns Clone of this route with mapped parameter names.\n */\n withParamMappings(mappings) {\n const clone = this.clone();\n clone._paramMappings = mappings;\n return clone;\n }\n /**\n * Sets parameters for itself or parents.\n * Returns new instance of RdtRoute<T> that is clone of\n * this route and its parents (NOT children).\n * @returns Clone of this route with static parameters set.\n */\n withStaticParams(param1, param2) {\n const clone = this.clone();\n if (param2) {\n const routeAbsPath = param1.absolutePath;\n let current = clone;\n while (current) {\n if (current.absolutePath === routeAbsPath) {\n current._staticParams = param2;\n }\n current = current._parent;\n }\n }\n else {\n clone._staticParams = param1;\n }\n return clone;\n }\n withQueryParams(queryParams) {\n const clone = this.clone();\n clone._queryParams = { ...queryParams };\n return clone;\n }\n withStateParams(stateParams) {\n const clone = this.clone();\n clone._stateParams = { ...stateParams };\n return clone;\n }\n /**\n * @returns Partial of object that only contains properties necessary to create this route.\n */\n extractRouteParams(row) {\n const res = {};\n this._orderedParams.forEach((param) => {\n const mapping = this._paramMappings.find((m) => m.urlName === param);\n const mappedParam = (mapping?.tableName ?? param);\n if (mappedParam in row) {\n res[mappedParam] = row[mappedParam];\n }\n });\n return res;\n }\n getStaticParams() {\n const res = new RdtParameters();\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let current = this;\n while (current) {\n res.set(current, current._staticParams);\n current = current._parent;\n }\n return res;\n }\n /**\n * @returns New instance of RdtRoute<T> that is clone of\n * this route and its parents (NOT children).\n */\n clone() {\n const clone = new RdtRoute();\n clone._name = this._name;\n clone._parent = this._parent?.clone() ?? null;\n clone._path = this.path;\n clone._entryDisabled = this._entryDisabled;\n clone._orderedParams = [...this._orderedParams];\n clone._paramMap = { ...this._paramMap };\n clone._regex = this._regex ? new RegExp(this._regex) : null;\n clone._paramMappings = this._paramMappings;\n clone._staticParams = { ...this._staticParams };\n clone._stateParams = { ...this._stateParams };\n return clone;\n }\n setRegex() {\n const params = Object.keys(this._paramMap);\n params.sort((a, b) => b.length - a.length);\n let substituted = this.path;\n params.forEach((p) => {\n const type = this._paramMap[p];\n if (!type) {\n throw new Error('Params is not set i');\n }\n substituted = substituted.replace(`:${p}`, RdtRoute.groups[type]);\n });\n if (substituted === '') {\n this._regex = null;\n }\n else {\n this._regex = new RegExp(substituted);\n }\n }\n static fromBuilder(builder) {\n const route = new RdtRoute();\n route._name = builder.name;\n route._path = builder.path;\n route._entryDisabled = builder.entryDisabled;\n route._orderedParams = builder.orderedParams;\n route._canBeEntered = builder.canBeEntered;\n route._paramMap = builder.paramMap;\n route._regex = builder.regex ? new RegExp(builder.regex) : null;\n route._paramMappings = builder.paramMappings;\n route._children = builder.children;\n route._data = builder.data;\n route._children.forEach((child) => (child._parent = route));\n route.setRegex();\n return route;\n }\n static groups = {\n string: '([\\\\w_\\\\-]+)',\n number: '(\\\\d+)',\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL3JkdC1yb3V0ZS9yZHQtcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFZLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQ0wsV0FBVyxFQUdYLGFBQWEsR0FDZCxNQUFNLFNBQVMsQ0FBQztBQUVqQixNQUFNLE9BQU8sUUFBaUMsU0FBUSxZQUFlO0lBQzNELGNBQWMsQ0FBVTtJQUN0QixhQUFhLEdBQWUsRUFBRSxDQUFDO0lBQy9CLFlBQVksR0FBVyxFQUFFLENBQUM7SUFDMUIsWUFBWSxHQUFXLEVBQUUsQ0FBQztJQUVwQzs7O09BR0c7SUFDSCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDeEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxZQUFZO1FBQ2QsT0FBTyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLGFBQWE7UUFDZixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDN0IsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLGNB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QUFNLEVBQUUsY0FBYztRQUN0QixNQUFNLEVBQUUsUUFBUTtLQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBSZHRTdHJpbmdVdGlscyB9IGZyb20gJ0BuZ3JkdC91dGlscyc7XHJcbmltcG9ydCB7IFJkdEFuZ3VsYXJSb3V0ZSB9IGZyb20gJy4vcmR0LWFuZ3VsYXItcm91dGUnO1xyXG5pbXBvcnQgeyBSZHRSb3V0ZUJhc2UgfSBmcm9tICcuL3JkdC1yb3V0ZS1iYXNlJztcclxuaW1wb3J0IHsgUmR0Um91dGVCdWlsZGVyIH0gZnJvbSAnLi9yZHQtcm91dGUtYnVpbGRlcic7XHJcbmltcG9ydCB7XHJcbiAgQUxXQVlTX1RSVUUsXHJcbiAgUGFyYW1NYXBwaW5nLFxyXG4gIFJkdENvbWJpbmVkUm91dGVQYXJhbXMsXHJcbiAgUmR0UGFyYW1ldGVycyxcclxufSBmcm9tICcuL3V0aWxzJztcclxuXHJcbmV4cG9ydCBjbGFzcyBSZHRSb3V0ZTxUIGV4dGVuZHMgb2JqZWN0ID0gYW55PiBleHRlbmRzIFJkdFJvdXRlQmFzZTxUPiB7XHJcbiAgcHJpdmF0ZSBfYWJzb2x1dGVSZWdleD86IFJlZ0V4cDtcclxuICBwcm90ZWN0ZWQgX3N0YXRpY1BhcmFtczogUGFydGlhbDxUPiA9IHt9O1xyXG4gIHByb3RlY3RlZCBfcXVlcnlQYXJhbXM6IFBhcmFtcyA9IHt9O1xyXG4gIHByb3RlY3RlZCBfc3RhdGVQYXJhbXM6IFBhcmFtcyA9IHt9O1xyXG5cclxuICAvKipcclxuICAgKiBBYnNvbHV0ZSBwYXRoIG9mIHBhcmVudCByb3V0ZSBvciAnLycgaWYgdGhlcmUgaXMgbm8gcGFyZW50LlxyXG4gICAqIEhvc3RuYW1lIGV4Y2x1ZGVkLlxyXG4gICAqL1xyXG4gIGdldCBiYXNlUGF0aCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BhcmVudCA/IHRoaXMuX3BhcmVudC5hYnNvbHV0ZVBhdGggOiAnLyc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBYnNvbHV0ZSBwYXRoIG9mIHRoZSByb3V0ZS4gSG9zdG5hbWUgZXhjbHVkZWQuXHJcbiAgICovXHJcbiAgZ2V0IGFic29sdXRlUGF0aCgpIHtcclxuICAgIHJldHVybiBSZHRTdHJpbmdVdGlscy5qb2luUGF0aHModGhpcy5iYXNlUGF0aCwgdGhpcy5fcGF0aCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWd1bGFyIGV4cHJlc3Npb24gdG8gbWF0Y2ggb25seSB0aGlzIHJvdXRlIChub3QgY2hpbGRyZW5cclxuICAgKiBvciBwYXJlbnQgcm91dGVzKS4gSG9zdG5hbWUgZXhjbHVkZWQuXHJcbiAgICovXHJcbiAgZ2V0IGFic29sdXRlUmVnZXgoKTogUmVnRXhwIHtcclxuICAgIGlmICh0aGlzLl9hYnNvbHV0ZVJlZ2V4KSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9hYnNvbHV0ZVJlZ2V4O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5fcmVnZXgpIHtcclxuICAgICAgdGhpcy5fYWJzb2x1dGVSZWdleCA9IG5ldyBSZWdFeHAoJ14vJCcpO1xyXG4gICAgICBpZiAodGhpcy5fcGFyZW50KSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOZXN0ZWQgcm91dGUgd2l0aCBlbXB0eSBwYXRoIGlzIG5vdCBhbGxvd2VkLicpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3BhcmVudCkge1xyXG4gICAgICAvLyBSZW1vdmUgaW5pdGlhbCBeIGFuZCBlbmRpbmcgJFxyXG4gICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLl9wYXJlbnQuYWJzb2x1dGVSZWdleC5zb3VyY2Uuc2xpY2UoMSwgLTEpO1xyXG4gICAgICB0aGlzLl9hYnNvbHV0ZVJlZ2V4ID0gbmV3IFJlZ0V4cChcclxuICAgICAgICAnXicgKyBSZHRTdHJpbmdVdGlscy5qb2luUGF0aHMocGFyZW50LCB0aGlzLl9yZWdleC5zb3VyY2UpICsgJyQnXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9hYnNvbHV0ZVJlZ2V4ID0gbmV3IFJlZ0V4cChcclxuICAgICAgICAnXicgKyBSZHRTdHJpbmdVdGlscy5qb2luUGF0aHMoJy8nLCB0aGlzLl9yZWdleC5zb3VyY2UpICsgJyQnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fYWJzb2x1dGVSZWdleDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0YXRpY2FsbHkgc2V0IHN0YXRlIHBhcmFtcyB1c2VkIHdoZW4gbmF2aWdhdGluZyB0byB0aGlzIGluc3RhbmNlLlxyXG4gICAqL1xyXG4gIGdldCBzdGF0ZVBhcmFtcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9zdGF0ZVBhcmFtcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0YXRpY2FsbHkgc2V0IHF1ZXJ5IHBhcmFtcyB1c2VkIHdoZW4gbmF2aWdhdGluZyB0byB0aGlzIGluc3RhbmNlLlxyXG4gICAqL1xyXG4gIGdldCBxdWVyeVBhcmFtcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9xdWVyeVBhcmFtcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBwYXJhbSB1cmwgQWJzb2x1dGUgcGF0aCB0byB0ZXN0LlxyXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdXJsIG1hdGNoZXMgdGhpcyByb3V0ZS5cclxuICAgKi9cclxuICB0ZXN0VXJsKHVybDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hYnNvbHV0ZVJlZ2V4LnRlc3QodXJsKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0YXRpY2FsbHkgc2V0IHBhcmFtZXRlcnMgdXNlZCB3aGVuIG5hdmlnYXRpbmcgdG8gdGhpcyBpbnN0YW5jZS5cclxuICAgKi9cclxuICBnZXQgc3RhdGljUGFyYW1zKCkge1xyXG4gICAgcmV0dXJuIHsgLi4udGhpcy5fc3RhdGljUGFyYW1zIH07XHJcbiAgfVxyXG5cclxuICBnZXQgaGFzQ2FuQmVFbnRlcmVkR3VhcmQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FuQmVFbnRlcmVkICE9PSBBTFdBWVNfVFJVRTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldGEgZ3VhcmQgdGhhdCBpcyB1c2VkIGJ5IFtyZHRSb3V0ZXJMaW5rXSBhbmQgUmR0TWVudVxyXG4gICAqIHRvIGRldGVybWluZSBpZiByb3V0ZSBjYW4gYmUgZW50ZXJlZC5cclxuICAgKiBAcGFyYW0gaW5qZWN0b3IgRW52aXJvbm1lbnQgb3IgY3VzdG9tIGluamVjdG9yLlxyXG4gICAqIEBwYXJhbSBwYXJhbXMgT3B0aW9uYWwgcGFyYW1ldGVycyB0byBwYXNzIHRvIGd1YXJkIGZ1bmN0aW9uLlxyXG4gICAqIEByZXR1cm5zIFRydWUgaWYgcm91dGUgY2FuIGJlIGVudGVyZWQuXHJcbiAgICovXHJcbiAgY2FuQmVFbnRlcmVkKFxyXG4gICAgaW5qZWN0b3I/OiBJbmplY3RvcixcclxuICAgIGNvbWJpbmVkUGFyYW1zOiBQYXJ0aWFsPFJkdENvbWJpbmVkUm91dGVQYXJhbXM8VD4+ID0ge31cclxuICApOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHJvdXRlID0gdGhpcy5nZXRTdGF0aWNQYXJhbXMoKTtcclxuICAgIGxldCBxdWVyeSA9IHRoaXMuX3F1ZXJ5UGFyYW1zO1xyXG4gICAgbGV0IHN0YXRlID0gdGhpcy5fc3RhdGVQYXJhbXM7XHJcbiAgICBpZiAoY29tYmluZWRQYXJhbXMucGFyYW1zKSB7XHJcbiAgICAgIHJvdXRlLnNldCh0aGlzLCBjb21iaW5lZFBhcmFtcy5wYXJhbXMpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNvbWJpbmVkUGFyYW1zLnJvdXRlKSB7XHJcbiAgICAgIHJvdXRlLnNldEFsbChjb21iaW5lZFBhcmFtcy5yb3V0ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoY29tYmluZWRQYXJhbXMucXVlcnkpIHtcclxuICAgICAgcXVlcnkgPSB7IC4uLnF1ZXJ5LCAuLi5jb21iaW5lZFBhcmFtcy5xdWVyeSB9O1xyXG4gICAgfVxyXG4gICAgaWYgKGNvbWJpbmVkUGFyYW1zLnN0YXRlKSB7XHJcbiAgICAgIHN0YXRlID0geyAuLi5zdGF0ZSwgLi4uY29tYmluZWRQYXJhbXMuc3RhdGUgfTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcclxuICAgIGxldCBjdXJyZW50OiBSZHRSb3V0ZSB8IG51bGwgPSB0aGlzO1xyXG5cclxuICAgIHdoaWxlIChjdXJyZW50KSB7XHJcbiAgICAgIGNvbnN0IGNvbWJpbmVkOiBSZHRDb21iaW5lZFJvdXRlUGFyYW1zPFQ+ID0ge1xyXG4gICAgICAgIHBhcmFtczogcm91dGUuZ2V0KGN1cnJlbnQpID8/IHt9LFxyXG4gICAgICAgIHJvdXRlOiByb3V0ZSxcclxuICAgICAgICBxdWVyeTogcXVlcnksXHJcbiAgICAgICAgc3RhdGU6IHN0YXRlLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgaWYgKGluamVjdG9yKSB7XHJcbiAgICAgICAgY29uc3QgYyA9IGN1cnJlbnQ7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgIXJ1bkluSW5qZWN0aW9uQ29udGV4dChpbmplY3RvciwgKCkgPT4gYy5fY2FuQmVFbnRlcmVkKGMsIGNvbWJpbmVkKSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoIWN1cnJlbnQuX2NhbkJlRW50ZXJlZChjdXJyZW50LCBjb21iaW5lZCkpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgY3VycmVudCA9IGN1cnJlbnQuX3BhcmVudDtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNhbkJlRW50ZXJlZEZuKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbkJlRW50ZXJlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4dHJhY3RzIHVybCBwYXJhbWV0ZXJzIGZyb20gYWJzb2x1dGUgcGF0aCBmb3IgdGhpcyBwYXRoIGFuZCBlYWNoIHBhcmVudC5cclxuICAgKi9cclxuICBwYXJzZUFic29sdXRlVXJsKHVybDogc3RyaW5nKTogUmR0Q29tYmluZWRSb3V0ZVBhcmFtczxUPiB8IG51bGwge1xyXG4gICAgY29uc3QgcGF0aCA9IFJkdFN0cmluZ1V0aWxzLnN0cmlwUXVlcnlQYXJhbXModXJsKTtcclxuICAgIGNvbnN0IHJlZyA9IHRoaXMuYWJzb2x1dGVSZWdleDtcclxuICAgIGNvbnN0IG1hdGNoZXMgPSByZWcuZXhlYyhwYXRoKTtcclxuICAgIGlmIChtYXRjaGVzKSB7XHJcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gUmR0U3RyaW5nVXRpbHMucGFyc2VRdWVyeVBhcmFtcyh1cmwpO1xyXG4gICAgICBjb25zdCB2YWx1ZXMgPSBtYXRjaGVzLnNsaWNlKDEpLnJldmVyc2UoKTtcclxuICAgICAgY29uc3Qgb2JqID0gdGhpcy5maWxsKHZhbHVlcyk7XHJcbiAgICAgIGNvbnN0IHJvdXRlID0gbmV3IFJkdFBhcmFtZXRlcnMob2JqKTtcclxuICAgICAgY29uc3QgcGFyYW1zID0gcm91dGUuZ2V0KHRoaXMpID8/IHt9O1xyXG5cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBwYXJhbXM6IHBhcmFtcyxcclxuICAgICAgICByb3V0ZTogcm91dGUsXHJcbiAgICAgICAgcXVlcnk6IHF1ZXJ5LFxyXG4gICAgICAgIHN0YXRlOiB7fSxcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWxsKHZhbHVlczogc3RyaW5nW10sIHJlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9KSB7XHJcbiAgICBjb25zdCBwYXJhbXM6IHsgW2tleSBpbiBrZXlvZiBUXT86IHN0cmluZyB8IG51bWJlciB9ID0ge307XHJcbiAgICBjb25zdCByZXZlcnNlZFBhcmFtcyA9IHRoaXMuX29yZGVyZWRQYXJhbXMuc2xpY2UoKS5yZXZlcnNlKCk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJldmVyc2VkUGFyYW1zLmxlbmd0aCAmJiBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGtleSA9IHJldmVyc2VkUGFyYW1zW2ldIGFzIGtleW9mIFQ7XHJcbiAgICAgIGNvbnN0IG1hcHBlZEtleSA9XHJcbiAgICAgICAgdGhpcy5fcGFyYW1NYXBwaW5ncy5maW5kKChtKSA9PiBtLnVybE5hbWUgPT09IGtleSk/LnRhYmxlTmFtZSA/PyBrZXk7XHJcbiAgICAgIGxldCB2YWw6IHN0cmluZyB8IG51bWJlciA9IHZhbHVlc1tpXTtcclxuXHJcbiAgICAgIGlmICh0aGlzLl9wYXJhbU1hcFtrZXldID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgIHZhbCA9IHBhcnNlSW50KHZhbCk7XHJcbiAgICAgIH1cclxuICAgICAgcGFyYW1zW21hcHBlZEtleSBhcyBrZXlvZiBUXSA9IHZhbDtcclxuICAgIH1cclxuICAgIHJlc1t0aGlzLmFic29sdXRlUGF0aF0gPSBwYXJhbXM7XHJcblxyXG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPiByZXZlcnNlZFBhcmFtcy5sZW5ndGggJiYgdGhpcy5fcGFyZW50KSB7XHJcbiAgICAgIHRoaXMuX3BhcmVudC5maWxsKHZhbHVlcy5zbGljZShyZXZlcnNlZFBhcmFtcy5sZW5ndGgpLCByZXMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbGxzIHBhcmFtZXRlcnMgaW4gcGF0aCB3aXRoIHZhbHVlcyBmcm9tIHBhcmFtTWFwLlxyXG4gICAqIFVzZSB3aXRoU3RhdGljUGFyYW1zKCkgYmVmb3JlaGFuZCBpbiBjYXNlIHBhcmVudCBwYXRocyBjb250YWluIHBhcmFtZXRlcnMuXHJcbiAgICogQHBhcmFtIHBhcmFtTWFwIE11c3QgY29udGFpbiBhbGwgcGFyYW1ldGVycyBmb3IgdGhpcyByb3V0ZS5cclxuICAgKiBAcmV0dXJucyBBYnNvbHV0ZSBwYXRoLlxyXG4gICAqL1xyXG4gIGNyZWF0ZUFic29sdXRlVXJsKHBhcmFtTWFwOiBQYXJ0aWFsPFQ+ID0gdGhpcy5fc3RhdGljUGFyYW1zKTogc3RyaW5nIHtcclxuICAgIGlmICghdGhpcy5fcGFyZW50KSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVVybCh0aGlzLmFic29sdXRlUGF0aCwgcGFyYW1NYXApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIFJkdFN0cmluZ1V0aWxzLmpvaW5QYXRocyhcclxuICAgICAgICB0aGlzLl9wYXJlbnQuY3JlYXRlQWJzb2x1dGVVcmwoKSxcclxuICAgICAgICB0aGlzLmNyZWF0ZVJlbGF0aXZlVXJsKHBhcmFtTWFwKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlUmVsYXRpdmVVcmwocGFyYW1NYXA6IFBhcnRpYWw8VD4gPSB0aGlzLl9zdGF0aWNQYXJhbXMpIHtcclxuICAgIHJldHVybiB0aGlzLmNyZWF0ZVVybCh0aGlzLnBhdGgsIHBhcmFtTWFwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlVXJsKHBhdGg6IHN0cmluZywgcGFyYW1NYXA6IFBhcnRpYWw8VD4pIHtcclxuICAgIGNvbnN0IHBhcmFtTmFtZXMgPSBPYmplY3Qua2V5cyh0aGlzLl9wYXJhbU1hcCk7XHJcbiAgICBwYXJhbU5hbWVzLnNvcnQoKGEsIGIpID0+IGIubGVuZ3RoIC0gYS5sZW5ndGgpO1xyXG4gICAgY29uc3QgZXh0ZW5kZWRQYXJhbU1hcDogYW55ID0geyAuLi5wYXJhbU1hcCB9O1xyXG5cclxuICAgIHRoaXMuX3BhcmFtTWFwcGluZ3MuZm9yRWFjaCgobWFwcGluZykgPT4ge1xyXG4gICAgICBpZiAobWFwcGluZy50YWJsZU5hbWUgaW4gcGFyYW1NYXApIHtcclxuICAgICAgICBleHRlbmRlZFBhcmFtTWFwW21hcHBpbmcudXJsTmFtZV0gPSAocGFyYW1NYXAgYXMgYW55KVtcclxuICAgICAgICAgIG1hcHBpbmcudGFibGVOYW1lXHJcbiAgICAgICAgXTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcGFyYW1OYW1lcy5mb3JFYWNoKChwYXJhbSkgPT4ge1xyXG4gICAgICBpZiAoIShwYXJhbSBpbiBleHRlbmRlZFBhcmFtTWFwKSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgIGBQYXJhbSAke3BhcmFtfSBpcyBtaXNzaW5nIGZvciByb3V0ZSAke3RoaXMuYWJzb2x1dGVQYXRofS4gUGxlYXNlIHBhc3Mgb2JqZWN0IHdpdGggcmVxdWlyZWQgcGFyYW1ldGVycy5gXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB2YWx1ZSA9IGV4dGVuZGVkUGFyYW1NYXBbcGFyYW0gYXMga2V5b2YgVF07XHJcbiAgICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoYDoke3BhcmFtfWAsIGAke3ZhbHVlfWApO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHBhdGg7XHJcbiAgfVxyXG5cclxuICB0b0FuZ3VsYXJSb3V0ZSgpIHtcclxuICAgIHJldHVybiBuZXcgUmR0QW5ndWxhclJvdXRlPFQ+KHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHJvdmlkZXMgc3RhdGljIG1hcHBpbmcgZm9yIHBhcmFtZXRlciBuYW1lcyB0YWJsZU5hbWUgLT4gdXJsTmFtZS5cclxuICAgKiBSZXR1cm5zIG5ldyBpbnN0YW5jZSBvZiBSZHRSb3V0ZTxUPiB0aGF0IGlzIGNsb25lIG9mXHJcbiAgICogdGhpcyByb3V0ZSBhbmQgaXRzIHBhcmVudHMgKE5PVCBjaGlsZHJlbikuXHJcbiAgICogQHJldHVybnMgQ2xvbmUgb2YgdGhpcyByb3V0ZSB3aXRoIG1hcHBlZCBwYXJhbWV0ZXIgbmFtZXMuXHJcbiAgICovXHJcbiAgd2l0aFBhcmFtTWFwcGluZ3MobWFwcGluZ3M6IFBhcmFtTWFwcGluZ1tdKSB7XHJcbiAgICBjb25zdCBjbG9uZSA9IHRoaXMuY2xvbmUoKTtcclxuICAgIGNsb25lLl9wYXJhbU1hcHBpbmdzID0gbWFwcGluZ3M7XHJcbiAgICByZXR1cm4gY2xvbmU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHN0YXRpYyBwYXJhbWV0ZXJzIGZvciB0aGlzIHJvdXRlLlxyXG4gICAqIEBwYXJhbSBwYXJhbXMgU3RhdGljIHBhcmFtZXRlcnMgZm9yIHRoaXMgcm91dGUuXHJcbiAgICogQHJldHVybnMgQ2xvbmUgb2YgdGhpcyB3aXRoIHN0YXRpYyBwYXJhbWV0ZXJzIHNldC5cclxuICAgKi9cclxuICB3aXRoU3RhdGljUGFyYW1zKHBhcmFtczogVCk6IFJkdFJvdXRlPFQ+O1xyXG4gIHdpdGhTdGF0aWNQYXJhbXM8VDIgZXh0ZW5kcyBvYmplY3Q+KFxyXG4gICAgcm91dGU6IFJkdFJvdXRlPFQyPixcclxuICAgIHBhcmFtczogVDJcclxuICApOiBSZHRSb3V0ZTxUPjtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyBwYXJhbWV0ZXJzIGZvciBpdHNlbGYgb3IgcGFyZW50cy5cclxuICAgKiBSZXR1cm5zIG5ldyBpbnN0YW5jZSBvZiBSZHRSb3V0ZTxUPiB0aGF0IGlzIGNsb25lIG9mXHJcbiAgICogdGhpcyByb3V0ZSBhbmQgaXRzIHBhcmVudHMgKE5PVCBjaGlsZHJlbikuXHJcbiAgICogQHJldHVybnMgQ2xvbmUgb2YgdGhpcyByb3V0ZSB3aXRoIHN0YXRpYyBwYXJhbWV0ZXJzIHNldC5cclxuICAgKi9cclxuICB3aXRoU3RhdGljUGFyYW1zPFQyIGV4dGVuZHMgb2JqZWN0PihwYXJhbTE6IFJkdFJvdXRlPFQyPiB8IFQsIHBhcmFtMj86IFQyKSB7XHJcbiAgICBjb25zdCBjbG9uZSA9IHRoaXMuY2xvbmUoKTtcclxuXHJcbiAgICBpZiAocGFyYW0yKSB7XHJcbiAgICAgIGNvbnN0IHJvdXRlQWJzUGF0aCA9IChwYXJhbTEgYXMgUmR0Um91dGU8VDI+KS5hYnNvbHV0ZVBhdGg7XHJcbiAgICAgIGxldCBjdXJyZW50OiBSZHRSb3V0ZSB8IG51bGwgPSBjbG9uZTtcclxuXHJcbiAgICAgIHdoaWxlIChjdXJyZW50KSB7XHJcbiAgICAgICAgaWYgKGN1cnJlbnQuYWJzb2x1dGVQYXRoID09PSByb3V0ZUFic1BhdGgpIHtcclxuICAgICAgICAgIGN1cnJlbnQuX3N0YXRpY1BhcmFtcyA9IHBhcmFtMjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY3VycmVudCA9IGN1cnJlbnQuX3BhcmVudDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY2xvbmUuX3N0YXRpY1BhcmFtcyA9IHBhcmFtMSBhcyBUO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNsb25lO1xyXG4gIH1cclxuXHJcbiAgd2l0aFF1ZXJ5UGFyYW1zKHF1ZXJ5UGFyYW1zOiBQYXJhbXMpIHtcclxuICAgIGNvbnN0IGNsb25lID0gdGhpcy5jbG9uZSgpO1xyXG4gICAgY2xvbmUuX3F1ZXJ5UGFyYW1zID0geyAuLi5xdWVyeVBhcmFtcyB9O1xyXG4gICAgcmV0dXJuIGNsb25lO1xyXG4gIH1cclxuXHJcbiAgd2l0aFN0YXRlUGFyYW1zKHN0YXRlUGFyYW1zOiBQYXJhbXMpIHtcclxuICAgIGNvbnN0IGNsb25lID0gdGhpcy5jbG9uZSgpO1xyXG4gICAgY2xvbmUuX3N0YXRlUGFyYW1zID0geyAuLi5zdGF0ZVBhcmFtcyB9O1xyXG4gICAgcmV0dXJuIGNsb25lO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHJldHVybnMgUGFydGlhbCBvZiBvYmplY3QgdGhhdCBvbmx5IGNvbnRhaW5zIHByb3BlcnRpZXMgbmVjZXNzYXJ5IHRvIGNyZWF0ZSB0aGlzIHJvdXRlLlxyXG4gICAqL1xyXG4gIGV4dHJhY3RSb3V0ZVBhcmFtcyhyb3c6IFQpOiBQYXJ0aWFsPFQ+IHtcclxuICAgIGNvbnN0IHJlczogUGFydGlhbDxUPiA9IHt9O1xyXG5cclxuICAgIHRoaXMuX29yZGVyZWRQYXJhbXMuZm9yRWFjaCgocGFyYW0pID0+IHtcclxuICAgICAgY29uc3QgbWFwcGluZyA9IHRoaXMuX3BhcmFtTWFwcGluZ3MuZmluZCgobSkgPT4gbS51cmxOYW1lID09PSBwYXJhbSk7XHJcbiAgICAgIGNvbnN0IG1hcHBlZFBhcmFtID0gKG1hcHBpbmc/LnRhYmxlTmFtZSA/PyBwYXJhbSkgYXMga2V5b2YgVDtcclxuICAgICAgaWYgKG1hcHBlZFBhcmFtIGluIHJvdykge1xyXG4gICAgICAgIHJlc1ttYXBwZWRQYXJhbV0gPSByb3dbbWFwcGVkUGFyYW1dO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RhdGljUGFyYW1zKCk6IFJkdFBhcmFtZXRlcnMge1xyXG4gICAgY29uc3QgcmVzID0gbmV3IFJkdFBhcmFtZXRlcnMoKTtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhc1xyXG4gICAgbGV0IGN1cnJlbnQ6IFJkdFJvdXRlIHwgbnVsbCA9IHRoaXM7XHJcbiAgICB3aGlsZSAoY3VycmVudCkge1xyXG4gICAgICByZXMuc2V0KGN1cnJlbnQsIGN1cnJlbnQuX3N0YXRpY1BhcmFtcyk7XHJcbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50Ll9wYXJlbnQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHJldHVybnMgTmV3IGluc3RhbmNlIG9mIFJkdFJvdXRlPFQ+IHRoYXQgaXMgY2xvbmUgb2ZcclxuICAgKiB0aGlzIHJvdXRlIGFuZCBpdHMgcGFyZW50cyAoTk9UIGNoaWxkcmVuKS5cclxuICAgKi9cclxuICBjbG9uZSgpIHtcclxuICAgIGNvbnN0IGNsb25lID0gbmV3IFJkdFJvdXRlPFQ+KCk7XHJcbiAgICBjbG9uZS5fbmFtZSA9IHRoaXMuX25hbWU7XHJcbiAgICBjbG9uZS5fcGFyZW50ID0gdGhpcy5fcGFyZW50Py5jbG9uZSgpID8/IG51bGw7XHJcbiAgICBjbG9uZS5fcGF0aCA9IHRoaXMucGF0aDtcclxuICAgIGNsb25lLl9lbnRyeURpc2FibGVkID0gdGhpcy5fZW50cnlEaXNhYmxlZDtcclxuICAgIGNsb25lLl9vcmRlcmVkUGFyYW1zID0gWy4uLnRoaXMuX29yZGVyZWRQYXJhbXNdO1xyXG4gICAgY2xvbmUuX3BhcmFtTWFwID0geyAuLi50aGlzLl9wYXJhbU1hcCB9O1xyXG4gICAgY2xvbmUuX3JlZ2V4ID0gdGhpcy5fcmVnZXggPyBuZXcgUmVnRXhwKHRoaXMuX3JlZ2V4KSA6IG51bGw7XHJcbiAgICBjbG9uZS5fcGFyYW1NYXBwaW5ncyA9IHRoaXMuX3BhcmFtTWFwcGluZ3M7XHJcbiAgICBjbG9uZS5fc3RhdGljUGFyYW1zID0geyAuLi50aGlzLl9zdGF0aWNQYXJhbXMgfTtcclxuICAgIGNsb25lLl9zdGF0ZVBhcmFtcyA9IHsgLi4udGhpcy5fc3RhdGVQYXJhbXMgfTtcclxuICAgIHJldHVybiBjbG9uZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0UmVnZXgoKSB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSBPYmplY3Qua2V5cyh0aGlzLl9wYXJhbU1hcCk7XHJcbiAgICBwYXJhbXMuc29ydCgoYSwgYikgPT4gYi5sZW5ndGggLSBhLmxlbmd0aCk7XHJcbiAgICBsZXQgc3Vic3RpdHV0ZWQgPSB0aGlzLnBhdGg7XHJcbiAgICBwYXJhbXMuZm9yRWFjaCgocCkgPT4ge1xyXG4gICAgICBjb25zdCB0eXBlID0gdGhpcy5fcGFyYW1NYXBbcCBhcyBrZXlvZiBUXTtcclxuICAgICAgaWYgKCF0eXBlKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYXJhbXMgaXMgbm90IHNldCBpJyk7XHJcbiAgICAgIH1cclxuICAgICAgc3Vic3RpdHV0ZWQgPSBzdWJzdGl0dXRlZC5yZXBsYWNlKGA6JHtwfWAsIFJkdFJvdXRlLmdyb3Vwc1t0eXBlXSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoc3Vic3RpdHV0ZWQgPT09ICcnKSB7XHJcbiAgICAgIHRoaXMuX3JlZ2V4ID0gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX3JlZ2V4ID0gbmV3IFJlZ0V4cChzdWJzdGl0dXRlZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZnJvbUJ1aWxkZXI8VCBleHRlbmRzIG9iamVjdD4oYnVpbGRlcjogUmR0Um91dGVCdWlsZGVyPFQ+KSB7XHJcbiAgICBjb25zdCByb3V0ZSA9IG5ldyBSZHRSb3V0ZTxUPigpO1xyXG4gICAgcm91dGUuX25hbWUgPSBidWlsZGVyLm5hbWU7XHJcbiAgICByb3V0ZS5fcGF0aCA9IGJ1aWxkZXIucGF0aDtcclxuICAgIHJvdXRlLl9lbnRyeURpc2FibGVkID0gYnVpbGRlci5lbnRyeURpc2FibGVkO1xyXG4gICAgcm91dGUuX29yZGVyZWRQYXJhbXMgPSBidWlsZGVyLm9yZGVyZWRQYXJhbXM7XHJcbiAgICByb3V0ZS5fY2FuQmVFbnRlcmVkID0gYnVpbGRlci5jYW5CZUVudGVyZWQ7XHJcbiAgICByb3V0ZS5fcGFyYW1NYXAgPSBidWlsZGVyLnBhcmFtTWFwO1xyXG4gICAgcm91dGUuX3JlZ2V4ID0gYnVpbGRlci5yZWdleCA/IG5ldyBSZWdFeHAoYnVpbGRlci5yZWdleCkgOiBudWxsO1xyXG4gICAgcm91dGUuX3BhcmFtTWFwcGluZ3MgPSBidWlsZGVyLnBhcmFtTWFwcGluZ3M7XHJcbiAgICByb3V0ZS5fY2hpbGRyZW4gPSBidWlsZGVyLmNoaWxkcmVuO1xyXG4gICAgcm91dGUuX2RhdGEgPSBidWlsZGVyLmRhdGE7XHJcbiAgICByb3V0ZS5fY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IChjaGlsZC5fcGFyZW50ID0gcm91dGUpKTtcclxuICAgIHJvdXRlLnNldFJlZ2V4KCk7XHJcbiAgICByZXR1cm4gcm91dGU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBncm91cHMgPSB7XHJcbiAgICBzdHJpbmc6ICcoW1xcXFx3X1xcXFwtXSspJyxcclxuICAgIG51bWJlcjogJyhcXFxcZCspJyxcclxuICB9O1xyXG59XHJcbiJdfQ==","import { RdtRoute } from './rdt-route';\nimport { RdtRouteBase } from './rdt-route-base';\nconst DEFAULT_PARAM_TYPE = 'number';\nexport class RdtRouteBuilder extends RdtRouteBase {\n get canBeEntered() {\n return this._canBeEntered;\n }\n get orderedParams() {\n return this._orderedParams;\n }\n get paramMappings() {\n return this._paramMappings;\n }\n /**\n * CanBeEntered function is synchronous function which\n * lets framework hide menu buttons and disable links.\n * Function is run in environment injection context, so\n * you can inject global services, tokens, etc.\n * @param fn\n */\n withCanBeEntered(fn) {\n this._canBeEntered = fn;\n return this;\n }\n /**\n * @deprecated Use withCanBeEntered() instead.\n */\n setCanBeEntered(fn) {\n return this.withCanBeEntered(fn);\n }\n /**\n * Entry disabled route will generate disabled breadcrumb.\n * It should not have any component nor module added to it.\n * @param value\n * @returns\n */\n withEntryDisabled(value = true) {\n this._entryDisabled = value;\n return this;\n }\n /**\n * @deprecated Use withEntryDisabled() instead.\n */\n setEntryDisabled(value = true) {\n return this.withEntryDisabled(value);\n }\n /**\n * Sets path relative to parent. It is defined the same way as Angular route path including parameters.\n * You need to call setParam() for each parameter you use in the path.\n */\n withPath(path) {\n this._path = path;\n const s = path.split('/');\n const params = [];\n s.forEach((part) => {\n if (part.includes(':')) {\n const param = part.split(':')[1];\n if (param) {\n params.push(param);\n if (!this._paramMap[param]) {\n this._paramMap[param] = DEFAULT_PARAM_TYPE;\n }\n }\n }\n });\n this._orderedParams = params;\n return this;\n }\n /**\n * @deprecated Use withPath() instead.\n */\n setPath(path) {\n return this.withPath(path);\n }\n /**\n * Sets Angular route data.\n * @param data Angular route data object. Breadcrumb key is merged into it.\n */\n withData(data) {\n this._data = data;\n return this;\n }\n /**\n * @deprecated Use withData() instead.\n */\n setData(data) {\n return this.withData(data);\n }\n /**\n * Defines parameter type and lets framework parse it.\n * @param paramName\n * @param type\n */\n withParam(paramName, type) {\n this._paramMap[paramName] = type;\n return this;\n }\n /**\n * @deprecated Use withParam() instead.\n */\n setParam(paramName, type) {\n return this.withParam(paramName, type);\n }\n /**\n * Sets name to display in breadcrumb, etc.\n */\n withName(name) {\n this._name = name;\n return this;\n }\n /**\n * @deprecated Use withName() instead.\n */\n setName(name) {\n return this.withName(name);\n }\n /**\n * Call .build() on children before you call this method!\n */\n withChildren(...children) {\n this._children = children;\n return this;\n }\n /**\n * @deprecated Use withChildren() instead.\n */\n setChildren(...children) {\n return this.withChildren(...children);\n }\n build() {\n if (typeof this._path !== 'string') {\n throw new Error('Please provide path for route. Empty string is acceptable.');\n }\n return RdtRoute.fromBuilder(this);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvcmR0LXJvdXRlL3JkdC1yb3V0ZS1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2hELE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFDO0FBRXBDLE1BQU0sT0FBTyxlQUF3QyxTQUFRLFlBQWU7SUFDMUUsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsZ0JBQWdCLENBQUMsRUFBd0I7UUFDdkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxlQUFlLENBQUMsRUFBd0I7UUFDdEMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsaUJBQWlCLENBQUMsS0FBSyxHQUFHLElBQUk7UUFDNUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcsSUFBSTtRQUMzQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUSxDQUFDLElBQVk7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2pCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBWSxDQUFDO2dCQUM1QyxJQUFJLEtBQUssRUFBRSxDQUFDO29CQUNWLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBZSxDQUFDLENBQUM7b0JBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsa0JBQWtCLENBQUM7b0JBQzdDLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNEOztPQUVHO0lBQ0gsT0FBTyxDQUFDLElBQVk7UUFDbEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRLENBQUMsSUFBVTtRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxJQUFVO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxTQUFrQixFQUFFLElBQXlCO1FBQ3JELElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNEOztPQUVHO0lBQ0gsUUFBUSxDQUFDLFNBQWtCLEVBQUUsSUFBeUI7UUFDcEQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRLENBQUMsSUFBWTtRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxJQUFZO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZLENBQUMsR0FBRyxRQUFvQjtRQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxHQUFHLFFBQW9CO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FDYiw0REFBNEQsQ0FDN0QsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFJkdFJvdXRlIH0gZnJvbSAnLi9yZHQtcm91dGUnO1xyXG5pbXBvcnQgeyBSZHRSb3V0ZUJhc2UgfSBmcm9tICcuL3JkdC1yb3V0ZS1iYXNlJztcclxuaW1wb3J0IHsgUmR0Q2FuQmVFbnRlcmVkRm4gfSBmcm9tICcuL3V0aWxzJztcclxuXHJcbmNvbnN0IERFRkFVTFRfUEFSQU1fVFlQRSA9ICdudW1iZXInO1xyXG5cclxuZXhwb3J0IGNsYXNzIFJkdFJvdXRlQnVpbGRlcjxUIGV4dGVuZHMgb2JqZWN0ID0gYW55PiBleHRlbmRzIFJkdFJvdXRlQmFzZTxUPiB7XHJcbiAgZ2V0IGNhbkJlRW50ZXJlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9jYW5CZUVudGVyZWQ7XHJcbiAgfVxyXG5cclxuICBnZXQgb3JkZXJlZFBhcmFtcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9vcmRlcmVkUGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBhcmFtTWFwcGluZ3MoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGFyYW1NYXBwaW5ncztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbkJlRW50ZXJlZCBmdW5jdGlvbiBpcyBzeW5jaHJvbm91cyBmdW5jdGlvbiB3aGljaFxyXG4gICAqIGxldHMgZnJhbWV3b3JrIGhpZGUgbWVudSBidXR0b25zIGFuZCBkaXNhYmxlIGxpbmtzLlxyXG4gICAqIEZ1bmN0aW9uIGlzIHJ1biBpbiBlbnZpcm9ubWVudCBpbmplY3Rpb24gY29udGV4dCwgc29cclxuICAgKiB5b3UgY2FuIGluamVjdCBnbG9iYWwgc2VydmljZXMsIHRva2VucywgZXRjLlxyXG4gICAqIEBwYXJhbSBmblxyXG4gICAqL1xyXG4gIHdpdGhDYW5CZUVudGVyZWQoZm46IFJkdENhbkJlRW50ZXJlZEZuPFQ+KSB7XHJcbiAgICB0aGlzLl9jYW5CZUVudGVyZWQgPSBmbjtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugd2l0aENhbkJlRW50ZXJlZCgpIGluc3RlYWQuXHJcbiAgICovXHJcbiAgc2V0Q2FuQmVFbnRlcmVkKGZuOiBSZHRDYW5CZUVudGVyZWRGbjxUPikge1xyXG4gICAgcmV0dXJuIHRoaXMud2l0aENhbkJlRW50ZXJlZChmbik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbnRyeSBkaXNhYmxlZCByb3V0ZSB3aWxsIGdlbmVyYXRlIGRpc2FibGVkIGJyZWFkY3J1bWIuXHJcbiAgICogSXQgc2hvdWxkIG5vdCBoYXZlIGFueSBjb21wb25lbnQgbm9yIG1vZHVsZSBhZGRlZCB0byBpdC5cclxuICAgKiBAcGFyYW0gdmFsdWVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIHdpdGhFbnRyeURpc2FibGVkKHZhbHVlID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5fZW50cnlEaXNhYmxlZCA9IHZhbHVlO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoRW50cnlEaXNhYmxlZCgpIGluc3RlYWQuXHJcbiAgICovXHJcbiAgc2V0RW50cnlEaXNhYmxlZCh2YWx1ZSA9IHRydWUpIHtcclxuICAgIHJldHVybiB0aGlzLndpdGhFbnRyeURpc2FibGVkKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgcGF0aCByZWxhdGl2ZSB0byBwYXJlbnQuIEl0IGlzIGRlZmluZWQgdGhlIHNhbWUgd2F5IGFzIEFuZ3VsYXIgcm91dGUgcGF0aCBpbmNsdWRpbmcgcGFyYW1ldGVycy5cclxuICAgKiBZb3UgbmVlZCB0byBjYWxsIHNldFBhcmFtKCkgZm9yIGVhY2ggcGFyYW1ldGVyIHlvdSB1c2UgaW4gdGhlIHBhdGguXHJcbiAgICovXHJcbiAgd2l0aFBhdGgocGF0aDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9wYXRoID0gcGF0aDtcclxuICAgIGNvbnN0IHMgPSBwYXRoLnNwbGl0KCcvJyk7XHJcbiAgICBjb25zdCBwYXJhbXM6IHN0cmluZ1tdID0gW107XHJcbiAgICBzLmZvckVhY2goKHBhcnQpID0+IHtcclxuICAgICAgaWYgKHBhcnQuaW5jbHVkZXMoJzonKSkge1xyXG4gICAgICAgIGNvbnN0IHBhcmFtID0gcGFydC5zcGxpdCgnOicpWzFdIGFzIGtleW9mIFQ7XHJcbiAgICAgICAgaWYgKHBhcmFtKSB7XHJcbiAgICAgICAgICBwYXJhbXMucHVzaChwYXJhbSBhcyBzdHJpbmcpO1xyXG4gICAgICAgICAgaWYgKCF0aGlzLl9wYXJhbU1hcFtwYXJhbV0pIHtcclxuICAgICAgICAgICAgdGhpcy5fcGFyYW1NYXBbcGFyYW1dID0gREVGQVVMVF9QQVJBTV9UWVBFO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9vcmRlcmVkUGFyYW1zID0gcGFyYW1zO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoUGF0aCgpIGluc3RlYWQuXHJcbiAgICovXHJcbiAgc2V0UGF0aChwYXRoOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLndpdGhQYXRoKHBhdGgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyBBbmd1bGFyIHJvdXRlIGRhdGEuXHJcbiAgICogQHBhcmFtIGRhdGEgQW5ndWxhciByb3V0ZSBkYXRhIG9iamVjdC4gQnJlYWRjcnVtYiBrZXkgaXMgbWVyZ2VkIGludG8gaXQuXHJcbiAgICovXHJcbiAgd2l0aERhdGEoZGF0YTogRGF0YSkge1xyXG4gICAgdGhpcy5fZGF0YSA9IGRhdGE7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHdpdGhEYXRhKCkgaW5zdGVhZC5cclxuICAgKi9cclxuICBzZXREYXRhKGRhdGE6IERhdGEpIHtcclxuICAgIHJldHVybiB0aGlzLndpdGhEYXRhKGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVmaW5lcyBwYXJhbWV0ZXIgdHlwZSBhbmQgbGV0cyBmcmFtZXdvcmsgcGFyc2UgaXQuXHJcbiAgICogQHBhcmFtIHBhcmFtTmFtZVxyXG4gICAqIEBwYXJhbSB0eXBlXHJcbiAgICovXHJcbiAgd2l0aFBhcmFtKHBhcmFtTmFtZToga2V5b2YgVCwgdHlwZTogJ3N0cmluZycgfCAnbnVtYmVyJykge1xyXG4gICAgdGhpcy5fcGFyYW1NYXBbcGFyYW1OYW1lXSA9IHR5cGU7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHdpdGhQYXJhbSgpIGluc3RlYWQuXHJcbiAgICovXHJcbiAgc2V0UGFyYW0ocGFyYW1OYW1lOiBrZXlvZiBULCB0eXBlOiAnc3RyaW5nJyB8ICdudW1iZXInKSB7XHJcbiAgICByZXR1cm4gdGhpcy53aXRoUGFyYW0ocGFyYW1OYW1lLCB0eXBlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgbmFtZSB0byBkaXNwbGF5IGluIGJyZWFkY3J1bWIsIGV0Yy5cclxuICAgKi9cclxuICB3aXRoTmFtZShuYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX25hbWUgPSBuYW1lO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoTmFtZSgpIGluc3RlYWQuXHJcbiAgICovXHJcbiAgc2V0TmFtZShuYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLndpdGhOYW1lKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2FsbCAuYnVpbGQoKSBvbiBjaGlsZHJlbiBiZWZvcmUgeW91IGNhbGwgdGhpcyBtZXRob2QhXHJcbiAgICovXHJcbiAgd2l0aENoaWxkcmVuKC4uLmNoaWxkcmVuOiBSZHRSb3V0ZVtdKSB7XHJcbiAgICB0aGlzLl9jaGlsZHJlbiA9IGNoaWxkcmVuO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoQ2hpbGRyZW4oKSBpbnN0ZWFkLlxyXG4gICAqL1xyXG4gIHNldENoaWxkcmVuKC4uLmNoaWxkcmVuOiBSZHRSb3V0ZVtdKSB7XHJcbiAgICByZXR1cm4gdGhpcy53aXRoQ2hpbGRyZW4oLi4uY2hpbGRyZW4pO1xyXG4gIH1cclxuXHJcbiAgYnVpbGQoKSB7XHJcbiAgICBpZiAodHlwZW9mIHRoaXMuX3BhdGggIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAnUGxlYXNlIHByb3ZpZGUgcGF0aCBmb3Igcm91dGUuIEVtcHR5IHN0cmluZyBpcyBhY2NlcHRhYmxlLidcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBSZHRSb3V0ZS5mcm9tQnVpbGRlcih0aGlzKTtcclxuICB9XHJcbn1cclxuIl19","import { DestroyRef, Directive, ElementRef, Input, Renderer2, inject, } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Router, RouterModule, } from '@angular/router';\nimport { filter } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nconst EXACT_TRUE_OPTS = {\n paths: 'exact',\n queryParams: 'exact',\n fragment: 'ignored',\n matrixParams: 'ignored',\n};\nconst EXACT_FALSE_OPTS = {\n paths: 'subset',\n queryParams: 'subset',\n fragment: 'ignored',\n matrixParams: 'ignored',\n};\n/**\n * Directive that appends class to host if any of the watched routes is active.\n */\nexport class RdtAnyRouteActiveDirective {\n destroyRef = inject(DestroyRef);\n router = inject(Router);\n renderer = inject(Renderer2);\n elRef = inject(ElementRef);\n set anyRouteActive(data) {\n this.classes = this.parseClasses(data);\n }\n watchedRoutes = [];\n set anyRouteActiveOptions(value) {\n this._anyRouteActiveOptions = this.parseOptions(value);\n }\n _anyRouteActiveOptions = EXACT_FALSE_OPTS;\n ariaCurrentWhenActive;\n get isActive() {\n return this._isActive;\n }\n _isActive = false;\n classes = [];\n ngOnInit() {\n this.update();\n this.listenRouterEvents();\n }\n ngOnChanges(changes) {\n if (changes['anyRouteActive']?.previousValue) {\n const prev = this.parseClasses(changes['anyRouteActive'].previousValue);\n prev.forEach((c) => this.removeClass(c));\n }\n this.update();\n }\n update() {\n this._isActive = this.watchedRoutes.some((route) => {\n const param = typeof route === 'string' ? route : this.router.createUrlTree(route);\n return this.router.isActive(param, this._anyRouteActiveOptions);\n });\n this.setClasses();\n this.setAriaCurrent();\n }\n setAriaCurrent() {\n const el = this.elRef.nativeElement;\n if (this._isActive && this.ariaCurrentWhenActive !== undefined) {\n const value = this.ariaCurrentWhenActive.toString();\n this.renderer.setAttribute(el, 'aria-current', value);\n }\n else {\n this.renderer.removeAttribute(el, 'aria-current');\n }\n }\n setClasses() {\n if (this._isActive) {\n this.classes.forEach((c) => this.addClass(c));\n }\n else {\n this.classes.forEach((c) => this.removeClass(c));\n }\n }\n addClass(className) {\n this.renderer.addClass(this.elRef.nativeElement, className);\n }\n removeClass(className) {\n this.renderer.removeClass(this.elRef.nativeElement, className);\n }\n listenRouterEvents() {\n this.router.events\n .pipe(filter((ev) => ev instanceof NavigationEnd), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.update());\n }\n parseClasses(data) {\n const classes = Array.isArray(data) ? data : data.split(' ');\n return classes.filter((c) => !!c);\n }\n parseOptions(input) {\n if ('exact' in input) {\n if (input.exact) {\n return EXACT_TRUE_OPTS;\n }\n else {\n return EXACT_FALSE_OPTS;\n }\n }\n else {\n return input;\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtAnyRouteActiveDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.0\", type: RdtAnyRouteActiveDirective, isStandalone: true, selector: \"[rdtAnyRouteActive]\", inputs: { anyRouteActive: [\"rdtAnyRouteActive\", \"anyRouteActive\"], watchedRoutes: \"watchedRoutes\", anyRouteActiveOptions: \"anyRouteActiveOptions\", ariaCurrentWhenActive: \"ariaCurrentWhenActive\" }, providers: [RouterModule], usesOnChanges: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtAnyRouteActiveDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[rdtAnyRouteActive]',\n standalone: true,\n providers: [RouterModule],\n }]\n }], propDecorators: { anyRouteActive: [{\n type: Input,\n args: [{ required: true, alias: 'rdtAnyRouteActive' }]\n }], watchedRoutes: [{\n type: Input,\n args: [{ required: true }]\n }], anyRouteActiveOptions: [{\n type: Input\n }], ariaCurrentWhenActive: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWFueS1yb3V0ZS1hY3RpdmUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL2RpcmVjdGl2ZXMvcmR0LWFueS1yb3V0ZS1hY3RpdmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsU0FBUyxFQUVULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBRUwsYUFBYSxFQUNiLE1BQU0sRUFDTixZQUFZLEdBQ2IsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUU5QixNQUFNLGVBQWUsR0FBeUI7SUFDNUMsS0FBSyxFQUFFLE9BQU87SUFDZCxXQUFXLEVBQUUsT0FBTztJQUNwQixRQUFRLEVBQUUsU0FBUztJQUNuQixZQUFZLEVBQUUsU0FBUztDQUN4QixDQUFDO0FBRUYsTUFBTSxnQkFBZ0IsR0FBeUI7SUFDN0MsS0FBSyxFQUFFLFFBQVE7SUFDZixXQUFXLEVBQUUsUUFBUTtJQUNyQixRQUFRLEVBQUUsU0FBUztJQUNuQixZQUFZLEVBQUUsU0FBUztDQUN4QixDQUFDO0FBRUY7O0dBRUc7QUFNSCxNQUFNLE9BQU8sMEJBQTBCO0lBQ3BCLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QixRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdCLEtBQUssR0FBNEIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXJFLElBQ0ksY0FBYyxDQUFDLElBQXVCO1FBQ3hDLElB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QUEwQix1UUFGMUIsQ0FBQyxZQUFZLENBQUM7OzJGQUVkLDBCQUEwQjtrQkFMdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUMxQjs4QkFRSyxjQUFjO3NCQURqQixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUU7Z0JBTXJELGFBQWE7c0JBRFosS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSXJCLHFCQUFxQjtzQkFEeEIsS0FBSztnQkFPTixxQkFBcUI7c0JBRHBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIERlc3Ryb3lSZWYsXHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBSZW5kZXJlcjIsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBpbmplY3QsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHtcclxuICBJc0FjdGl2ZU1hdGNoT3B0aW9ucyxcclxuICBOYXZpZ2F0aW9uRW5kLFxyXG4gIFJvdXRlcixcclxuICBSb3V0ZXJNb2R1bGUsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcyc7XHJcblxyXG5jb25zdCBFWEFDVF9UUlVFX09QVFM6IElzQWN0aXZlTWF0Y2hPcHRpb25zID0ge1xyXG4gIHBhdGhzOiAnZXhhY3QnLFxyXG4gIHF1ZXJ5UGFyYW1zOiAnZXhhY3QnLFxyXG4gIGZyYWdtZW50OiAnaWdub3JlZCcsXHJcbiAgbWF0cml4UGFyYW1zOiAnaWdub3JlZCcsXHJcbn07XHJcblxyXG5jb25zdCBFWEFDVF9GQUxTRV9PUFRTOiBJc0FjdGl2ZU1hdGNoT3B0aW9ucyA9IHtcclxuICBwYXRoczogJ3N1YnNldCcsXHJcbiAgcXVlcnlQYXJhbXM6ICdzdWJzZXQnLFxyXG4gIGZyYWdtZW50OiAnaWdub3JlZCcsXHJcbiAgbWF0cml4UGFyYW1zOiAnaWdub3JlZCcsXHJcbn07XHJcblxyXG4vKipcclxuICogRGlyZWN0aXZlIHRoYXQgYXBwZW5kcyBjbGFzcyB0byBob3N0IGlmIGFueSBvZiB0aGUgd2F0Y2hlZCByb3V0ZXMgaXMgYWN0aXZlLlxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbcmR0QW55Um91dGVBY3RpdmVdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHByb3ZpZGVyczogW1JvdXRlck1vZHVsZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZHRBbnlSb3V0ZUFjdGl2ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBlbFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gPSBpbmplY3QoRWxlbWVudFJlZik7XHJcblxyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlLCBhbGlhczogJ3JkdEFueVJvdXRlQWN0aXZlJyB9KVxyXG4gIHNldCBhbnlSb3V0ZUFjdGl2ZShkYXRhOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgdGhpcy5jbGFzc2VzID0gdGhpcy5wYXJzZUNsYXNzZXMoZGF0YSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxyXG4gIHdhdGNoZWRSb3V0ZXM6IChzdHJpbmcgfCBzdHJpbmdbXSlbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBhbnlSb3V0ZUFjdGl2ZU9wdGlvbnModmFsdWU6IHsgZXhhY3Q6IGJvb2xlYW4gfSB8IElzQWN0aXZlTWF0Y2hPcHRpb25zKSB7XHJcbiAgICB0aGlzLl9hbnlSb3V0ZUFjdGl2ZU9wdGlvbnMgPSB0aGlzLnBhcnNlT3B0aW9ucyh2YWx1ZSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2FueVJvdXRlQWN0aXZlT3B0aW9uczogSXNBY3RpdmVNYXRjaE9wdGlvbnMgPSBFWEFDVF9GQUxTRV9PUFRTO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGFyaWFDdXJyZW50V2hlbkFjdGl2ZT86XHJcbiAgICB8ICdwYWdlJ1xyXG4gICAgfCAnc3RlcCdcclxuICAgIHwgJ2xvY2F0aW9uJ1xyXG4gICAgfCAnZGF0ZSdcclxuICAgIHwgJ3RpbWUnXHJcbiAgICB8IHRydWVcclxuICAgIHwgZmFsc2U7XHJcblxyXG4gIGdldCBpc0FjdGl2ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9pc0FjdGl2ZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfaXNBY3RpdmUgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBjbGFzc2VzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMudXBkYXRlKCk7XHJcbiAgICB0aGlzLmxpc3RlblJvdXRlckV2ZW50cygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2FueVJvdXRlQWN0aXZlJ10/LnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgY29uc3QgcHJldiA9IHRoaXMucGFyc2VDbGFzc2VzKGNoYW5nZXNbJ2FueVJvdXRlQWN0aXZlJ10ucHJldmlvdXNWYWx1ZSk7XHJcbiAgICAgIHByZXYuZm9yRWFjaCgoYykgPT4gdGhpcy5yZW1vdmVDbGFzcyhjKSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51cGRhdGUoKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZSgpIHtcclxuICAgIHRoaXMuX2lzQWN0aXZlID0gdGhpcy53YXRjaGVkUm91dGVzLnNvbWUoKHJvdXRlKSA9PiB7XHJcbiAgICAgIGNvbnN0IHBhcmFtID1cclxuICAgICAgICB0eXBlb2Ygcm91dGUgPT09ICdzdHJpbmcnID8gcm91dGUgOiB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKHJvdXRlKTtcclxuICAgICAgcmV0dXJuIHRoaXMucm91dGVyLmlzQWN0aXZlKHBhcmFtLCB0aGlzLl9hbnlSb3V0ZUFjdGl2ZU9wdGlvbnMpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldENsYXNzZXMoKTtcclxuICAgIHRoaXMuc2V0QXJpYUN1cnJlbnQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0QXJpYUN1cnJlbnQoKSB7XHJcbiAgICBjb25zdCBlbCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICBpZiAodGhpcy5faXNBY3RpdmUgJiYgdGhpcy5hcmlhQ3VycmVudFdoZW5BY3RpdmUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuYXJpYUN1cnJlbnRXaGVuQWN0aXZlLnRvU3RyaW5nKCk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsLCAnYXJpYS1jdXJyZW50JywgdmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUoZWwsICdhcmlhLWN1cnJlbnQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Q2xhc3NlcygpIHtcclxuICAgIGlmICh0aGlzLl9pc0FjdGl2ZSkge1xyXG4gICAgICB0aGlzLmNsYXNzZXMuZm9yRWFjaCgoYykgPT4gdGhpcy5hZGRDbGFzcyhjKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNsYXNzZXMuZm9yRWFjaCgoYykgPT4gdGhpcy5yZW1vdmVDbGFzcyhjKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZENsYXNzKGNsYXNzTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgY2xhc3NOYW1lKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlQ2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCBjbGFzc05hbWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsaXN0ZW5Sb3V0ZXJFdmVudHMoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5ldmVudHNcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKChldikgPT4gZXYgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcclxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGUoKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBhcnNlQ2xhc3NlcyhkYXRhOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgY29uc3QgY2xhc3NlcyA9IEFycmF5LmlzQXJyYXkoZGF0YSkgPyBkYXRhIDogZGF0YS5zcGxpdCgnICcpO1xyXG4gICAgcmV0dXJuIGNsYXNzZXMuZmlsdGVyKChjKSA9PiAhIWMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYXJzZU9wdGlvbnMoaW5wdXQ6IHsgZXhhY3Q6IGJvb2xlYW4gfSB8IElzQWN0aXZlTWF0Y2hPcHRpb25zKSB7XHJcbiAgICBpZiAoJ2V4YWN0JyBpbiBpbnB1dCkge1xyXG4gICAgICBpZiAoaW5wdXQuZXhhY3QpIHtcclxuICAgICAgICByZXR1cm4gRVhBQ1RfVFJVRV9PUFRTO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBFWEFDVF9GQUxTRV9PUFRTO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gaW5wdXQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { Location } from '@angular/common';\nimport { afterNextRender, DestroyRef, Directive, ElementRef, inject, } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { RDT_BUTTON_BASE_PROVIDER } from '@ngrdt/button';\nimport { fromEvent } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class RdtBackLinkDirective {\n destroyRef = inject(DestroyRef);\n location = inject(Location);\n elRef = inject((ElementRef));\n buttonClass = inject(RDT_BUTTON_BASE_PROVIDER);\n buttonRef = inject(this.buttonClass, {\n optional: true,\n host: true,\n });\n constructor() {\n afterNextRender(() => {\n if (this.buttonRef) {\n this.buttonRef.click.subscribe(() => this.location.back());\n }\n else {\n fromEvent(this.elRef.nativeElement, 'click')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.location.back());\n }\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtBackLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.0\", type: RdtBackLinkDirective, isStandalone: true, selector: \"[rdtBackLink]\", ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtBackLinkDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[rdtBackLink]',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWJhY2stbGluay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvZGlyZWN0aXZlcy9yZHQtYmFjay1saW5rLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNMLGVBQWUsRUFDZixVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBS2pDLE1BQU0sT0FBTyxvQkFBb0I7SUFDdEIsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4QixRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVCLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQSxVQUF1QixDQUFBLENBQUMsQ0FBQztJQUN4QyxXQUFXLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDL0MsU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1FBQ3BELFFBQVEsRUFBRSxJQUFJO1FBQ2QsSUFBSSxFQUFFLElBQUk7S0FDWCxDQUFDLENBQUM7SUFFSDtRQUNFLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDbkIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDN0QsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUM7cUJBQ3pDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7cUJBQ3pDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDM0MsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt1R0FwQlUsb0JBQW9COzJGQUFwQixvQkFBb0I7OzJGQUFwQixvQkFBb0I7a0JBSGhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7aUJBQzFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBEZXN0cm95UmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBSRFRfQlVUVE9OX0JBU0VfUFJPVklERVIgfSBmcm9tICdAbmdyZHQvYnV0dG9uJztcbmltcG9ydCB7IGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbcmR0QmFja0xpbmtdJyxcbn0pXG5leHBvcnQgY2xhc3MgUmR0QmFja0xpbmtEaXJlY3RpdmUge1xuICByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uID0gaW5qZWN0KExvY2F0aW9uKTtcbiAgcHJpdmF0ZSByZWFkb25seSBlbFJlZiA9IGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik7XG4gIHByaXZhdGUgcmVhZG9ubHkgYnV0dG9uQ2xhc3MgPSBpbmplY3QoUkRUX0JVVFRPTl9CQVNFX1BST1ZJREVSKTtcbiAgcHJpdmF0ZSByZWFkb25seSBidXR0b25SZWYgPSBpbmplY3QodGhpcy5idXR0b25DbGFzcywge1xuICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIGhvc3Q6IHRydWUsXG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5idXR0b25SZWYpIHtcbiAgICAgICAgdGhpcy5idXR0b25SZWYuY2xpY2suc3Vic2NyaWJlKCgpID0+IHRoaXMubG9jYXRpb24uYmFjaygpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZyb21FdmVudCh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQsICdjbGljaycpXG4gICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmxvY2F0aW9uLmJhY2soKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { booleanAttribute, computed, Directive, effect, EnvironmentInjector, inject, input, linkedSignal, } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { RDT_BUTTON_BASE_PROVIDER } from '@ngrdt/button';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/router\";\nexport const PERMISSION_DISABLED_KEY = Symbol();\nexport class RdtRouterLinkDirective {\n buttonClass = inject(RDT_BUTTON_BASE_PROVIDER);\n buttonRef = inject(this.buttonClass, {\n host: true,\n optional: true,\n });\n routerLinkRef = inject(RouterLink, { self: true });\n envInjector = inject(EnvironmentInjector);\n routeInput = input.required({ alias: 'rdtRouterLink' });\n route = linkedSignal(() => this.routeInput());\n target = input('_self');\n params = input();\n queryParams = input();\n stateParams = input();\n disabled = input(false, {\n alias: 'rdtDisabled',\n transform: booleanAttribute,\n });\n canBeEntered = computed(() => {\n const route = this.route();\n const disabled = this.disabled();\n if (!route || disabled) {\n return false;\n }\n const combinedParams = {\n params: this.params(),\n query: this.queryParams(),\n state: this.stateParams(),\n };\n return route.canBeEntered(this.envInjector, combinedParams);\n });\n updateEffect = effect(() => {\n if (this.buttonRef) {\n this.updateButton();\n }\n else {\n this.updateRouterLink();\n }\n });\n updateButton() {\n const route = this.route();\n if (!route) {\n this.clearButtonLink();\n return;\n }\n if (this.canBeEntered()) {\n this.setButtonLink(route);\n }\n else {\n this.disableButtonLink();\n }\n }\n setButtonLink(route) {\n const button = this.buttonRef;\n try {\n const ngHref = this.getNgHref(route);\n button.ngHref.set(ngHref);\n button.stateParams.set(this.stateParams() ?? route.stateParams);\n button.queryParams.set(this.queryParams() ?? route.queryParams);\n button.setDisabledState(false, PERMISSION_DISABLED_KEY);\n }\n catch (err) {\n console.error(err);\n this.disableButtonLink();\n }\n }\n disableButtonLink() {\n const button = this.buttonRef;\n button.ngHref.set(null);\n button.setDisabledState(true, PERMISSION_DISABLED_KEY);\n }\n clearButtonLink() {\n const button = this.buttonRef;\n button.ngHref.set(null);\n button.stateParams.set(undefined);\n button.queryParams.set(undefined);\n button.setDisabledState(false, PERMISSION_DISABLED_KEY);\n }\n updateRouterLink() {\n const route = this.route();\n if (!route) {\n this.clearRouterLink();\n }\n else if (this.canBeEntered()) {\n this.setRouterLink(route);\n }\n else {\n this.disableRouterLink();\n }\n }\n setRouterLink(route) {\n try {\n const ngHref = this.getNgHref(route);\n this.routerLinkRef.routerLink = ngHref;\n this.routerLinkRef.state = this.stateParams() ?? route.stateParams;\n this.routerLinkRef.queryParams = this.queryParams() ?? route.queryParams;\n this.routerLinkRef.ngOnChanges({});\n }\n catch (err) {\n console.error(err);\n this.disableRouterLink();\n }\n }\n disableRouterLink() {\n this.routerLinkRef.routerLink = null;\n this.routerLinkRef.ngOnChanges({});\n }\n clearRouterLink() {\n this.routerLinkRef.routerLink = null;\n this.routerLinkRef.state = undefined;\n this.routerLinkRef.queryParams = undefined;\n this.routerLinkRef.ngOnChanges({});\n }\n getNgHref(route) {\n return route.createAbsoluteUrl(this.params());\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtRouterLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.0.0\", type: RdtRouterLinkDirective, isStandalone: true, selector: \"[rdtRouterLink]\", inputs: { routeInput: { classPropertyName: \"routeInput\", publicName: \"rdtRouterLink\", isSignal: true, isRequired: true, transformFunction: null }, target: { classPropertyName: \"target\", publicName: \"target\", isSignal: true, isRequired: false, transformFunction: null }, params: { classPropertyName: \"params\", publicName: \"params\", isSignal: true, isRequired: false, transformFunction: null }, queryParams: { classPropertyName: \"queryParams\", publicName: \"queryParams\", isSignal: true, isRequired: false, transformFunction: null }, stateParams: { classPropertyName: \"stateParams\", publicName: \"stateParams\", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"rdtDisabled\", isSignal: true, isRequired: false, transformFunction: null } }, hostDirectives: [{ directive: i1.RouterLink, inputs: [\"target\", \"target\", \"replaceUrl\", \"replaceUrl\"] }], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtRouterLinkDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[rdtRouterLink]',\n standalone: true,\n hostDirectives: [\n {\n directive: RouterLink,\n inputs: ['target', 'replaceUrl'],\n },\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlci1saW5rLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL0BuZ3JkdC9yb3V0ZXIvc3JjL2xpYi9kaXJlY3RpdmVzL3JkdC1yb3V0ZXItbGluay5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IsU0FBUyxFQUNULE1BQU0sRUFDTixtQkFBbUIsRUFDbkIsTUFBTSxFQUNOLEtBQUssRUFDTCxZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBR3pELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLE1BQU0sRUFBRSxDQUFDO0FBWWhELE1BQU0sT0FBTyxzQkFBc0I7SUFDaEIsV0FBVyxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQy9DLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtRQUNwRCxJQUFJLEVBQUUsSUFBSTtRQUNWLFFBQVEsRUFBRSxJQUFJO0tBQ2YsQ0FBQyxDQUFDO0lBQ2MsYUFBYSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNuRCxXQUFXLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFFbEQsVUFBVSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQWMsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztJQUNyRSxLQUFLLEdBQUcsWUFBWSxDQUFxQixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNsRSxNQUFNLEdBQUcsS0FBSyxDQUEwQyxPQUFPLENBQUMsQ0FB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RUFBRSxDQUFDLENBQUM7UUFDckMsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztRQUMzQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU8sU0FBUyxDQUFDLEtBQWtCO1FBQ2xDLE9BQU8sS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7dUdBMUhVLHNCQUFzQjsyRkFBdEIsc0JBQXNCOzsyRkFBdEIsc0JBQXNCO2tCQVZsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixjQUFjLEVBQUU7d0JBQ2Q7NEJBQ0UsU0FBUyxFQUFFLFVBQVU7NEJBQ3JCLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUM7eUJBQ2pDO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBib29sZWFuQXR0cmlidXRlLFxyXG4gIGNvbXB1dGVkLFxyXG4gIERpcmVjdGl2ZSxcclxuICBlZmZlY3QsXHJcbiAgRW52aXJvbm1lbnRJbmplY3RvcixcclxuICBpbmplY3QsXHJcbiAgaW5wdXQsXHJcbiAgbGlua2VkU2lnbmFsLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQYXJhbXMsIFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBSRFRfQlVUVE9OX0JBU0VfUFJPVklERVIgfSBmcm9tICdAbmdyZHQvYnV0dG9uJztcclxuaW1wb3J0IHsgUmR0Um91dGUgfSBmcm9tICcuLi9yZHQtcm91dGUvcmR0LXJvdXRlJztcclxuXHJcbmV4cG9ydCBjb25zdCBQRVJNSVNTSU9OX0RJU0FCTEVEX0tFWSA9IFN5bWJvbCgpO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbcmR0Um91dGVyTGlua10nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaG9zdERpcmVjdGl2ZXM6IFtcclxuICAgIHtcclxuICAgICAgZGlyZWN0aXZlOiBSb3V0ZXJMaW5rLFxyXG4gICAgICBpbnB1dHM6IFsndGFyZ2V0JywgJ3JlcGxhY2VVcmwnXSxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJkdFJvdXRlckxpbmtEaXJlY3RpdmU8VCBleHRlbmRzIG9iamVjdD4ge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgYnV0dG9uQ2xhc3MgPSBpbmplY3QoUkRUX0JVVFRPTl9CQVNFX1BST1ZJREVSKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGJ1dHRvblJlZiA9IGluamVjdCh0aGlzLmJ1dHRvbkNsYXNzLCB7XHJcbiAgICBob3N0OiB0cnVlLFxyXG4gICAgb3B0aW9uYWw6IHRydWUsXHJcbiAgfSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXJMaW5rUmVmID0gaW5qZWN0KFJvdXRlckxpbmssIHsgc2VsZjogdHJ1ZSB9KTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGVudkluamVjdG9yID0gaW5qZWN0KEVudmlyb25tZW50SW5qZWN0b3IpO1xyXG5cclxuICByZWFkb25seSByb3V0ZUlucHV0ID0gaW5wdXQucmVxdWlyZWQ8UmR0Um91dGU8VD4+KHsgYWxpYXM6ICdyZHRSb3V0ZXJMaW5rJyB9KTtcclxuICByZWFkb25seSByb3V0ZSA9IGxpbmtlZFNpZ25hbDxSZHRSb3V0ZTxUPiB8IG51bGw+KCgpID0+IHRoaXMucm91dGVJbnB1dCgpKTtcclxuICByZWFkb25seSB0YXJnZXQgPSBpbnB1dDwnX2JsYW5rJyB8ICdfc2VsZicgfCAnX3BhcmVudCcgfCAnX3RvcCc+KCdfc2VsZicpO1xyXG4gIHJlYWRvbmx5IHBhcmFtcyA9IGlucHV0PFBhcnRpYWw8VD4gfCB1bmRlZmluZWQ+KCk7XHJcbiAgcmVhZG9ubHkgcXVlcnlQYXJhbXMgPSBpbnB1dDxQYXJhbXMgfCB1bmRlZmluZWQ+KCk7XHJcbiAgcmVhZG9ubHkgc3RhdGVQYXJhbXMgPSBpbnB1dDxQYXJhbXMgfCB1bmRlZmluZWQ+KCk7XHJcbiAgcmVhZG9ubHkgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSwge1xyXG4gICAgYWxpYXM6ICdyZHREaXNhYmxlZCcsXHJcbiAgICB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUsXHJcbiAgfSk7XHJcblxyXG4gIHJlYWRvbmx5IGNhbkJlRW50ZXJlZCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGNvbnN0IHJvdXRlID0gdGhpcy5yb3V0ZSgpO1xyXG4gICAgY29uc3QgZGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkKCk7XHJcbiAgICBpZiAoIXJvdXRlIHx8IGRpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbWJpbmVkUGFyYW1zID0ge1xyXG4gICAgICBwYXJhbXM6IHRoaXMucGFyYW1zKCksXHJcbiAgICAgIHF1ZXJ5OiB0aGlzLnF1ZXJ5UGFyYW1zKCksXHJcbiAgICAgIHN0YXRlOiB0aGlzLnN0YXRlUGFyYW1zKCksXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiByb3V0ZS5jYW5CZUVudGVyZWQodGhpcy5lbnZJbmplY3RvciwgY29tYmluZWRQYXJhbXMpO1xyXG4gIH0pO1xyXG5cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdXBkYXRlRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcclxuICAgIGlmICh0aGlzLmJ1dHRvblJlZikge1xyXG4gICAgICB0aGlzLnVwZGF0ZUJ1dHRvbigpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy51cGRhdGVSb3V0ZXJMaW5rKCk7XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQnV0dG9uKCkge1xyXG4gICAgY29uc3Qgcm91dGUgPSB0aGlzLnJvdXRlKCk7XHJcbiAgICBpZiAoIXJvdXRlKSB7XHJcbiAgICAgIHRoaXMuY2xlYXJCdXR0b25MaW5rKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmNhbkJlRW50ZXJlZCgpKSB7XHJcbiAgICAgIHRoaXMuc2V0QnV0dG9uTGluayhyb3V0ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRpc2FibGVCdXR0b25MaW5rKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEJ1dHRvbkxpbmsocm91dGU6IFJkdFJvdXRlPFQ+KSB7XHJcbiAgICBjb25zdCBidXR0b24gPSB0aGlzLmJ1dHRvblJlZiE7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBuZ0hyZWYgPSB0aGlzLmdldE5nSHJlZihyb3V0ZSk7XHJcbiAgICAgIGJ1dHRvbi5uZ0hyZWYuc2V0KG5nSHJlZik7XHJcbiAgICAgIGJ1dHRvbi5zdGF0ZVBhcmFtcy5zZXQodGhpcy5zdGF0ZVBhcmFtcygpID8/IHJvdXRlLnN0YXRlUGFyYW1zKTtcclxuICAgICAgYnV0dG9uLnF1ZXJ5UGFyYW1zLnNldCh0aGlzLnF1ZXJ5UGFyYW1zKCkgPz8gcm91dGUucXVlcnlQYXJhbXMpO1xyXG4gICAgICBidXR0b24uc2V0RGlzYWJsZWRTdGF0ZShmYWxzZSwgUEVSTUlTU0lPTl9ESVNBQkxFRF9LRVkpO1xyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgdGhpcy5kaXNhYmxlQnV0dG9uTGluaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaXNhYmxlQnV0dG9uTGluaygpIHtcclxuICAgIGNvbnN0IGJ1dHRvbiA9IHRoaXMuYnV0dG9uUmVmITtcclxuICAgIGJ1dHRvbi5uZ0hyZWYuc2V0KG51bGwpO1xyXG4gICAgYnV0dG9uLnNldERpc2FibGVkU3RhdGUodHJ1ZSwgUEVSTUlTU0lPTl9ESVNBQkxFRF9LRVkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhckJ1dHRvbkxpbmsoKSB7XHJcbiAgICBjb25zdCBidXR0b24gPSB0aGlzLmJ1dHRvblJlZiE7XHJcbiAgICBidXR0b24ubmdIcmVmLnNldChudWxsKTtcclxuICAgIGJ1dHRvbi5zdGF0ZVBhcmFtcy5zZXQodW5kZWZpbmVkKTtcclxuICAgIGJ1dHRvbi5xdWVyeVBhcmFtcy5zZXQodW5kZWZpbmVkKTtcclxuICAgIGJ1dHRvbi5zZXREaXNhYmxlZFN0YXRlKGZhbHNlLCBQRVJNSVNTSU9OX0RJU0FCTEVEX0tFWSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVJvdXRlckxpbmsoKSB7XHJcbiAgICBjb25zdCByb3V0ZSA9IHRoaXMucm91dGUoKTtcclxuICAgIGlmICghcm91dGUpIHtcclxuICAgICAgdGhpcy5jbGVhclJvdXRlckxpbmsoKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jYW5CZUVudGVyZWQoKSkge1xyXG4gICAgICB0aGlzLnNldFJvdXRlckxpbmsocm91dGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kaXNhYmxlUm91dGVyTGluaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRSb3V0ZXJMaW5rKHJvdXRlOiBSZHRSb3V0ZTxUPikge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgbmdIcmVmID0gdGhpcy5nZXROZ0hyZWYocm91dGUpO1xyXG4gICAgICB0aGlzLnJvdXRlckxpbmtSZWYucm91dGVyTGluayA9IG5nSHJlZjtcclxuICAgICAgdGhpcy5yb3V0ZXJMaW5rUmVmLnN0YXRlID0gdGhpcy5zdGF0ZVBhcmFtcygpID8/IHJvdXRlLnN0YXRlUGFyYW1zO1xyXG4gICAgICB0aGlzLnJvdXRlckxpbmtSZWYucXVlcnlQYXJhbXMgPSB0aGlzLnF1ZXJ5UGFyYW1zKCkgPz8gcm91dGUucXVlcnlQYXJhbXM7XHJcbiAgICAgIHRoaXMucm91dGVyTGlua1JlZi5uZ09uQ2hhbmdlcyh7fSk7XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICB0aGlzLmRpc2FibGVSb3V0ZXJMaW5rKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRpc2FibGVSb3V0ZXJMaW5rKCkge1xyXG4gICAgdGhpcy5yb3V0ZXJMaW5rUmVmLnJvdXRlckxpbmsgPSBudWxsO1xyXG4gICAgdGhpcy5yb3V0ZXJMaW5rUmVmLm5nT25DaGFuZ2VzKHt9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYXJSb3V0ZXJMaW5rKCkge1xyXG4gICAgdGhpcy5yb3V0ZXJMaW5rUmVmLnJvdXRlckxpbmsgPSBudWxsO1xyXG4gICAgdGhpcy5yb3V0ZXJMaW5rUmVmLnN0YXRlID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5yb3V0ZXJMaW5rUmVmLnF1ZXJ5UGFyYW1zID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5yb3V0ZXJMaW5rUmVmLm5nT25DaGFuZ2VzKHt9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TmdIcmVmKHJvdXRlOiBSZHRSb3V0ZTxUPikge1xyXG4gICAgcmV0dXJuIHJvdXRlLmNyZWF0ZUFic29sdXRlVXJsKHRoaXMucGFyYW1zKCkpO1xyXG4gIH1cclxufVxyXG4iXX0=","import { inject } from '@angular/core';\nimport { RdtComponentGuardStoreService } from '@ngrdt/core';\nexport const preventDataLossGuardFn = () => {\n const guardStore = inject(RdtComponentGuardStoreService);\n return guardStore.checkCanLeaveGlobal$();\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmVudC1kYXRhLWxvc3MuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvZ3VhcmRzL3ByZXZlbnQtZGF0YS1sb3NzLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUF5QixHQUFHLEVBQUU7SUFDL0QsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDekQsT0FBTyxVQUFVLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztBQUMzQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2FuRGVhY3RpdmF0ZUZuIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgUmR0Q29tcG9uZW50R3VhcmRTdG9yZVNlcnZpY2UgfSBmcm9tICdAbmdyZHQvY29yZSc7XHJcblxyXG5leHBvcnQgY29uc3QgcHJldmVudERhdGFMb3NzR3VhcmRGbjogQ2FuRGVhY3RpdmF0ZUZuPGFueT4gPSAoKSA9PiB7XHJcbiAgY29uc3QgZ3VhcmRTdG9yZSA9IGluamVjdChSZHRDb21wb25lbnRHdWFyZFN0b3JlU2VydmljZSk7XHJcbiAgcmV0dXJuIGd1YXJkU3RvcmUuY2hlY2tDYW5MZWF2ZUdsb2JhbCQoKTtcclxufTtcclxuIl19","import { Injectable } from '@angular/core';\nimport { GuardsCheckStart, NavigationEnd, Router, } from '@angular/router';\nimport { preventDataLossGuardFn } from './prevent-data-loss.guard';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/router\";\nexport class GlobalRouteGuardService {\n router;\n constructor(router) {\n this.router = router;\n }\n // This will help ensure that routes are automatically protected by ensuring that global guards are applied to every route\n ensureGlobalGuards() {\n let lastUrl = '';\n this.router.events.subscribe((e) => {\n // Remember last url after successful navigation\n if (e instanceof NavigationEnd) {\n lastUrl = location.href;\n }\n if (e instanceof GuardsCheckStart) {\n let lastChild = e.state.root;\n while (lastChild?.firstChild) {\n lastChild = lastChild.firstChild;\n }\n // Native back button will immediately replace url on click\n // Replace it back to last url before guard check is finished.\n // Angular will set it to correct value afterwards.\n history.replaceState(window.history.state, '', lastUrl);\n if (lastChild?.routeConfig) {\n this.ensureCanDeactivateGuards(lastChild.routeConfig);\n }\n }\n });\n }\n ensureCanDeactivateGuards(routeConfig) {\n if (!routeConfig.canDeactivate) {\n routeConfig.canDeactivate = [];\n }\n const canDeactivateGuards = routeConfig.canDeactivate;\n // ensure that the \"MySpecialCanDeactivateGuard\" is in effect.\n if (!canDeactivateGuards.find((o) => o == preventDataLossGuardFn)) {\n canDeactivateGuards.push(preventDataLossGuardFn);\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: GlobalRouteGuardService, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: GlobalRouteGuardService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: GlobalRouteGuardService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i1.Router }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLXJvdXRlLWd1YXJkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvZ3VhcmRzL2dsb2JhbC1yb3V0ZS1ndWFyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixhQUFhLEVBRWIsTUFBTSxHQUNQLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQUduRSxNQUFNLE9BQU8sdUJBQXVCO0lBQ2Q7SUFBcEIsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7SUFBRyxDQUFDO0lBRXRDLDBIQUEwSDtJQUNuSCxrQkFBa0I7UUFDdkIsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBRWpCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2pDLGdEQUFnRDtZQUNoRCxJQUFJLENBQUMsWUFBWSxhQUFhLEVBQUUsQ0FBQztnQkFDL0IsT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDMUIsQ0FBQztZQUNELElBQUksQ0FBQyxZQUFZLGdCQUFnQixFQUFFLENBQUM7Z0JBQ2xDLElBQUksU0FBUyxHQUEyQixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztnQkFDckQsT0FBTyxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUM7b0JBQzdCLFNBQVMsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO2dCQUNuQyxDQUFDO2dCQUNELDJEQUEyRDtnQkFDM0QsOERBQThEO2dCQUM5RCxtREFBbUQ7Z0JBQ25ELE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUV4RCxJQUFJLFNBQVMsRUFBRSxXQUFXLEVBQUUsQ0FBQztvQkFDM0IsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDeEQsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxXQUFrQjtRQUNsRCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQy9CLFdBQVcsQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLENBQUM7UUFFRCxNQUFNLG1CQUFtQixHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUM7UUFFdEQsOERBQThEO1FBQzlELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxzQkFBc0IsQ0FBQyxFQUFFLENBQUM7WUFDbEUsbUJBQW1CLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUM7dUdBeENVLHVCQUF1QjsyR0FBdkIsdUJBQXVCLGNBRFYsTUFBTTs7MkZBQ25CLHVCQUF1QjtrQkFEbkMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICBHdWFyZHNDaGVja1N0YXJ0LFxyXG4gIE5hdmlnYXRpb25FbmQsXHJcbiAgUm91dGUsXHJcbiAgUm91dGVyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IHByZXZlbnREYXRhTG9zc0d1YXJkRm4gfSBmcm9tICcuL3ByZXZlbnQtZGF0YS1sb3NzLmd1YXJkJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBHbG9iYWxSb3V0ZUd1YXJkU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge31cclxuXHJcbiAgLy8gVGhpcyB3aWxsIGhlbHAgZW5zdXJlIHRoYXQgcm91dGVzIGFyZSBhdXRvbWF0aWNhbGx5IHByb3RlY3RlZCBieSBlbnN1cmluZyB0aGF0IGdsb2JhbCBndWFyZHMgYXJlIGFwcGxpZWQgdG8gZXZlcnkgcm91dGVcclxuICBwdWJsaWMgZW5zdXJlR2xvYmFsR3VhcmRzKCkge1xyXG4gICAgbGV0IGxhc3RVcmwgPSAnJztcclxuXHJcbiAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgIC8vIFJlbWVtYmVyIGxhc3QgdXJsIGFmdGVyIHN1Y2Nlc3NmdWwgbmF2aWdhdGlvblxyXG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcclxuICAgICAgICBsYXN0VXJsID0gbG9jYXRpb24uaHJlZjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIEd1YXJkc0NoZWNrU3RhcnQpIHtcclxuICAgICAgICBsZXQgbGFzdENoaWxkOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90ID0gZS5zdGF0ZS5yb290O1xyXG4gICAgICAgIHdoaWxlIChsYXN0Q2hpbGQ/LmZpcnN0Q2hpbGQpIHtcclxuICAgICAgICAgIGxhc3RDaGlsZCA9IGxhc3RDaGlsZC5maXJzdENoaWxkO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBOYXRpdmUgYmFjayBidXR0b24gd2lsbCBpbW1lZGlhdGVseSByZXBsYWNlIHVybCBvbiBjbGlja1xyXG4gICAgICAgIC8vIFJlcGxhY2UgaXQgYmFjayB0byBsYXN0IHVybCBiZWZvcmUgZ3VhcmQgY2hlY2sgaXMgZmluaXNoZWQuXHJcbiAgICAgICAgLy8gQW5ndWxhciB3aWxsIHNldCBpdCB0byBjb3JyZWN0IHZhbHVlIGFmdGVyd2FyZHMuXHJcbiAgICAgICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUod2luZG93Lmhpc3Rvcnkuc3RhdGUsICcnLCBsYXN0VXJsKTtcclxuXHJcbiAgICAgICAgaWYgKGxhc3RDaGlsZD8ucm91dGVDb25maWcpIHtcclxuICAgICAgICAgIHRoaXMuZW5zdXJlQ2FuRGVhY3RpdmF0ZUd1YXJkcyhsYXN0Q2hpbGQucm91dGVDb25maWcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVuc3VyZUNhbkRlYWN0aXZhdGVHdWFyZHMocm91dGVDb25maWc6IFJvdXRlKSB7XHJcbiAgICBpZiAoIXJvdXRlQ29uZmlnLmNhbkRlYWN0aXZhdGUpIHtcclxuICAgICAgcm91dGVDb25maWcuY2FuRGVhY3RpdmF0ZSA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNhbkRlYWN0aXZhdGVHdWFyZHMgPSByb3V0ZUNvbmZpZy5jYW5EZWFjdGl2YXRlO1xyXG5cclxuICAgIC8vIGVuc3VyZSB0aGF0IHRoZSBcIk15U3BlY2lhbENhbkRlYWN0aXZhdGVHdWFyZFwiIGlzIGluIGVmZmVjdC5cclxuICAgIGlmICghY2FuRGVhY3RpdmF0ZUd1YXJkcy5maW5kKChvKSA9PiBvID09IHByZXZlbnREYXRhTG9zc0d1YXJkRm4pKSB7XHJcbiAgICAgIGNhbkRlYWN0aXZhdGVHdWFyZHMucHVzaChwcmV2ZW50RGF0YUxvc3NHdWFyZEZuKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdyZHQtcm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbmdyZHQtcm91dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngrdt-router.mjs","sources":["../tmp-esm2022/lib/services/rdt-cannot-be-entered.token.js","../tmp-esm2022/lib/services/rdt-confirm-data-loss.service.js","../tmp-esm2022/lib/rdt-route/utils.js","../tmp-esm2022/lib/services/rdt-routes.token.js","../tmp-esm2022/lib/services/rdt-router.service.js","../tmp-esm2022/lib/rdt-route/constants.js","../tmp-esm2022/lib/rdt-route/rdt-angular-route.js","../tmp-esm2022/lib/rdt-route/rdt-route-base.js","../tmp-esm2022/lib/rdt-route/rdt-route.js","../tmp-esm2022/lib/rdt-route/rdt-route-builder.js","../tmp-esm2022/lib/directives/rdt-any-route-active.directive.js","../tmp-esm2022/lib/directives/rdt-back-link.directive.js","../tmp-esm2022/lib/directives/rdt-router-link.directive.js","../tmp-esm2022/lib/guards/prevent-data-loss.guard.js","../tmp-esm2022/lib/guards/global-route-guard.service.js","../tmp-esm2022/ngrdt-router.js"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n/**\n * Injection token that defines behavior when route cannot be entered (canBeEntered returns false).\n * If value is undefined, route will be redirected to ''.\n */\nexport const RDT_CANNOT_BE_ENTERED_PROVIDER = new InjectionToken('RDT_CANNOT_BE_ENTERED', { factory: () => undefined, providedIn: 'root' });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWNhbm5vdC1iZS1lbnRlcmVkLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL3NlcnZpY2VzL3JkdC1jYW5ub3QtYmUtZW50ZXJlZC50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLElBQUksY0FBYyxDQUU5RCx1QkFBdUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmR0UmVkaXJlY3RGbiwgUmR0UmVkaXJlY3RSZXR1cm5UeXBlIH0gZnJvbSAnLi4vcmR0LXJvdXRlL3V0aWxzJztcblxuLyoqXG4gKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBkZWZpbmVzIGJlaGF2aW9yIHdoZW4gcm91dGUgY2Fubm90IGJlIGVudGVyZWQgKGNhbkJlRW50ZXJlZCByZXR1cm5zIGZhbHNlKS5cbiAqIElmIHZhbHVlIGlzIHVuZGVmaW5lZCwgcm91dGUgd2lsbCBiZSByZWRpcmVjdGVkIHRvICcnLlxuICovXG5leHBvcnQgY29uc3QgUkRUX0NBTk5PVF9CRV9FTlRFUkVEX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPFxuICBSZHRSZWRpcmVjdEZuIHwgUmR0UmVkaXJlY3RSZXR1cm5UeXBlXG4+KCdSRFRfQ0FOTk9UX0JFX0VOVEVSRUQnLCB7IGZhY3Rvcnk6ICgpID0+IHVuZGVmaW5lZCwgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pO1xuIl19","import { InjectionToken } from '@angular/core';\nimport { defer, of } from 'rxjs';\nexport const RDT_CONFIRM_DATA_LOSS_SERVICE = new InjectionToken('RDT_CONFIRM_DATA_LOSS_SERVICE', { factory: () => new RdtConfirmDataLossServiceAlert() });\nexport class RdtConfirmDataLossService {\n}\nexport class RdtConfirmDataLossServiceAlert extends RdtConfirmDataLossService {\n confirmDataLoss() {\n return defer(() => of(confirm('Are you sure you want to leave this page?')));\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWNvbmZpcm0tZGF0YS1sb3NzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvc2VydmljZXMvcmR0LWNvbmZpcm0tZGF0YS1sb3NzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU3QyxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FDeEMsSUFBSSxjQUFjLENBQ2hCLCtCQUErQixFQUMvQixFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLDhCQUE4QixFQUFFLEVBQUUsQ0FDeEQsQ0FBQztBQUVKLE1BQU0sT0FBZ0IseUJBQXlCO0NBRTlDO0FBRUQsTUFBTSxPQUFPLDhCQUErQixTQUFRLHlCQUF5QjtJQUNsRSxlQUFlO1FBQ3RCLE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUNoQixFQUFFLENBQUMsT0FBTyxDQUFDLDJDQUEyQyxDQUFDLENBQUMsQ0FDekQsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGRlZmVyLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IFJEVF9DT05GSVJNX0RBVEFfTE9TU19TRVJWSUNFID1cclxuICBuZXcgSW5qZWN0aW9uVG9rZW48UmR0Q29uZmlybURhdGFMb3NzU2VydmljZT4oXHJcbiAgICAnUkRUX0NPTkZJUk1fREFUQV9MT1NTX1NFUlZJQ0UnLFxyXG4gICAgeyBmYWN0b3J5OiAoKSA9PiBuZXcgUmR0Q29uZmlybURhdGFMb3NzU2VydmljZUFsZXJ0KCkgfVxyXG4gICk7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmR0Q29uZmlybURhdGFMb3NzU2VydmljZSB7XHJcbiAgYWJzdHJhY3QgY29uZmlybURhdGFMb3NzKCk6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSZHRDb25maXJtRGF0YUxvc3NTZXJ2aWNlQWxlcnQgZXh0ZW5kcyBSZHRDb25maXJtRGF0YUxvc3NTZXJ2aWNlIHtcclxuICBvdmVycmlkZSBjb25maXJtRGF0YUxvc3MoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gZGVmZXIoKCkgPT5cclxuICAgICAgb2YoY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGxlYXZlIHRoaXMgcGFnZT8nKSlcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==","export class RdtParameters {\n params;\n constructor(params = {}) {\n this.params = params;\n }\n get(route) {\n return this.params[route.absolutePath] ?? null;\n }\n set(route, params) {\n this.params[route.absolutePath] = params;\n return this;\n }\n append(route, params) {\n const existing = this.get(route) ?? {};\n this.params[route.absolutePath] = { ...existing, ...params };\n return this;\n }\n setAll(params) {\n this.params = { ...this.params, ...params.params };\n return this;\n }\n *[Symbol.iterator]() {\n const keys = Object.keys(this.params);\n keys.sort((a, b) => a.length - b.length);\n for (const key of keys) {\n yield [key, this.params[key]];\n }\n }\n}\nexport function ALWAYS_TRUE() {\n return true;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvcmR0LXJvdXRlL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdCQSxNQUFNLE9BQU8sYUFBYTtJQUNKO0lBQXBCLFlBQW9CLFNBQTRCLEVBQUU7UUFBOUIsV0FBTSxHQUFOLE1BQU0sQ0FBd0I7SUFBRyxDQUFDO0lBRXRELEdBQUcsQ0FBbUIsS0FBa0I7UUFDdEMsT0FBUSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQWdCLElBQUksSUFBSSxDQUFDO0lBQ2pFLENBQUM7SUFFRCxHQUFHLENBQW1CLEtBQWtCLEVBQUUsTUFBa0I7UUFDMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQ3pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBbUIsS0FBa0IsRUFBRSxNQUFrQjtRQUM3RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLEdBQUcsUUFBUSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFDN0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQXFCO1FBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbkQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDaEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pDLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDdkIsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7Q0FDRjtBQUlELE1BQU0sVUFBVSxXQUFXO0lBQ3pCLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhcmFtcywgUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBSZHRSb3V0ZSB9IGZyb20gJy4vcmR0LXJvdXRlJztcclxuXHJcbmV4cG9ydCB0eXBlIFBhcmFtVHlwZU1hcDxUPiA9IHtcclxuICBba2V5IGluIGtleW9mIFRdPzogJ3N0cmluZycgfCAnbnVtYmVyJztcclxufTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW1NYXBwaW5nIHtcclxuICB1cmxOYW1lOiBzdHJpbmc7XHJcbiAgdGFibGVOYW1lOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGljUm91dGVQYXJhbXMge1xyXG4gIFthYnNvbHV0ZVBhdGg6IHN0cmluZ106IG9iamVjdDtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUmR0UmVkaXJlY3RSZXR1cm5UeXBlID0gc3RyaW5nIHwgdm9pZCB8IHVuZGVmaW5lZDtcclxuXHJcbmV4cG9ydCB0eXBlIFJkdFJlZGlyZWN0Rm4gPSAoXHJcbiAgY3VycmVudFBhdGg6IHN0cmluZyxcclxuICB0YXJnZXRQYXRoOiBzdHJpbmcsXHJcbiAgdGFyZ2V0Um91dGU6IFJkdFJvdXRlXHJcbikgPT4gUmR0UmVkaXJlY3RSZXR1cm5UeXBlO1xyXG5cclxuZXhwb3J0IGNsYXNzIFJkdFBhcmFtZXRlcnMge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFyYW1zOiBTdGF0aWNSb3V0ZVBhcmFtcyA9IHt9KSB7fVxyXG5cclxuICBnZXQ8VCBleHRlbmRzIG9iamVjdD4ocm91dGU6IFJkdFJvdXRlPFQ+KTogUGFydGlhbDxUPiB8IG51bGwge1xyXG4gICAgcmV0dXJuICh0aGlzLnBhcmFtc1tyb3V0ZS5hYnNvbHV0ZVBhdGhdIGFzIFBhcnRpYWw8VD4pID8/IG51bGw7XHJcbiAgfVxyXG5cclxuICBzZXQ8VCBleHRlbmRzIG9iamVjdD4ocm91dGU6IFJkdFJvdXRlPFQ+LCBwYXJhbXM6IFBhcnRpYWw8VD4pIHtcclxuICAgIHRoaXMucGFyYW1zW3JvdXRlLmFic29sdXRlUGF0aF0gPSBwYXJhbXM7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIGFwcGVuZDxUIGV4dGVuZHMgb2JqZWN0Pihyb3V0ZTogUmR0Um91dGU8VD4sIHBhcmFtczogUGFydGlhbDxUPikge1xyXG4gICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLmdldChyb3V0ZSkgPz8ge307XHJcbiAgICB0aGlzLnBhcmFtc1tyb3V0ZS5hYnNvbHV0ZVBhdGhdID0geyAuLi5leGlzdGluZywgLi4ucGFyYW1zIH07XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHNldEFsbChwYXJhbXM6IFJkdFBhcmFtZXRlcnMpIHtcclxuICAgIHRoaXMucGFyYW1zID0geyAuLi50aGlzLnBhcmFtcywgLi4ucGFyYW1zLnBhcmFtcyB9O1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAqW1N5bWJvbC5pdGVyYXRvcl0oKSB7XHJcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5wYXJhbXMpO1xyXG4gICAga2V5cy5zb3J0KChhLCBiKSA9PiBhLmxlbmd0aCAtIGIubGVuZ3RoKTtcclxuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcclxuICAgICAgeWllbGQgW2tleSwgdGhpcy5wYXJhbXNba2V5XV07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBMb2FkQ29tcG9uZW50Q2FsbGJhY2sgPSBSb3V0ZVsnbG9hZENvbXBvbmVudCddO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIEFMV0FZU19UUlVFKCkge1xyXG4gIHJldHVybiB0cnVlO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBSZHRDYW5CZUVudGVyZWRGbjxUIGV4dGVuZHMgb2JqZWN0PiA9IChcclxuICByb3V0ZTogUmR0Um91dGU8VD4sXHJcbiAgcGFyYW1zOiBSZHRDb21iaW5lZFJvdXRlUGFyYW1zPFQ+XHJcbikgPT4gYm9vbGVhbjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmR0Q29tYmluZWRSb3V0ZVBhcmFtczxUIGV4dGVuZHMgb2JqZWN0PiB7XHJcbiAgcGFyYW1zOiBQYXJ0aWFsPFQ+O1xyXG4gIHJvdXRlOiBSZHRQYXJhbWV0ZXJzO1xyXG4gIHF1ZXJ5OiBQYXJhbXM7XHJcbiAgc3RhdGU6IFBhcmFtcztcclxufVxyXG4iXX0=","import { InjectionToken } from '@angular/core';\nexport const RDT_ROUTES_PROVIDER = new InjectionToken('RDT_ROUTES_PROVIDER');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlcy50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL0BuZ3JkdC9yb3V0ZXIvc3JjL2xpYi9zZXJ2aWNlcy9yZHQtcm91dGVzLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxjQUFjLENBQ25ELHFCQUFxQixDQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmR0Um91dGUgfSBmcm9tICcuLi9yZHQtcm91dGUvcmR0LXJvdXRlJztcclxuXHJcbmV4cG9ydCBjb25zdCBSRFRfUk9VVEVTX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPFJkdFJvdXRlW10+KFxyXG4gICdSRFRfUk9VVEVTX1BST1ZJREVSJ1xyXG4pO1xyXG4iXX0=","import { Location, PlatformLocation } from '@angular/common';\nimport { inject, Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { RdtStringUtils } from '@ngrdt/utils';\nimport { filter, take } from 'rxjs';\nimport { RdtParameters } from '../rdt-route/utils';\nimport { RDT_ROUTES_PROVIDER } from './rdt-routes.token';\nimport * as i0 from \"@angular/core\";\nconst DEFAULT_TARGET = '_self';\nconst RDT_STATE_PARAMS_KEY = 'RdtStateParams';\nexport class RdtRouterService {\n allRoutes = inject(RDT_ROUTES_PROVIDER, { optional: true });\n baseHref = inject(PlatformLocation).getBaseHrefFromDOM();\n location = inject(Location);\n router = inject(Router);\n _previousUrl = null;\n _currentUrl = null;\n get previousUrl() {\n return this._previousUrl;\n }\n get currentUrl() {\n return this._currentUrl;\n }\n parsePreviousUrl() {\n return this._previousUrl ? this.parseAbsoluteUrl(this._previousUrl) : null;\n }\n parseCurrentUrl() {\n return this._currentUrl ? this.parseAbsoluteUrl(this._currentUrl) : null;\n }\n navigationEnd$ = this.router.events.pipe(filter((e) => e instanceof NavigationEnd));\n nextNavigationEnd$ = this.navigationEnd$.pipe(take(1));\n constructor() {\n if (this.allRoutes === null) {\n console.warn('All routes not provided. Make sure to provide RDT_ROUTES_PROVIDER with RdtRoute[].');\n this.allRoutes = [];\n }\n this.navigationEnd$.subscribe((e) => {\n this._previousUrl = this._currentUrl;\n this._currentUrl = e.url;\n });\n }\n /**\n * @returns window.history.state extended by state parameters passed from parent window.\n */\n getHistoryState() {\n if ('RdtStateParams' in window &&\n typeof window[RDT_STATE_PARAMS_KEY] === 'object') {\n return { ...window[RDT_STATE_PARAMS_KEY], ...(history.state ?? {}) };\n }\n else {\n return history.state ?? {};\n }\n }\n /**\n * Navigates to the specified route.\n * @param link Route to navigate to.\n * @param params Parameter of route passed as first argument or RdtParameters object.\n * @param extras Allows you to specify additional parameters for navigation. These extras have higher priority than those defined in the route.\n * @returns Promise that resolves when navigation is complete.\n */\n navigate(link, params, extras) {\n let url;\n if (params instanceof RdtParameters) {\n let linkCpy = link;\n for (let r = linkCpy; r !== null; r = r.parent) {\n const p = params.get(r);\n if (p) {\n linkCpy = linkCpy.withStaticParams(r, p);\n }\n }\n url = linkCpy.createAbsoluteUrl();\n }\n else {\n url = params ? link.createAbsoluteUrl(params) : link.createAbsoluteUrl();\n }\n const target = extras?.target ?? DEFAULT_TARGET;\n const queryParams = extras?.query ?? link.queryParams;\n const stateParams = extras?.state ?? link.stateParams;\n if (target === '_self') {\n return this.router.navigate([url], {\n queryParams: queryParams,\n state: stateParams,\n replaceUrl: extras?.replaceUrl,\n });\n }\n const absolutePath = RdtStringUtils.createAbsoluteUrl(url, this.baseHref);\n const pathWithParams = RdtStringUtils.appendQueryParams(absolutePath, queryParams);\n const win = window.open(pathWithParams, target);\n if (win) {\n win[RDT_STATE_PARAMS_KEY] = stateParams;\n }\n return Promise.resolve(true);\n }\n navigateHome(extras) {\n return this.router.navigateByUrl(RdtStringUtils.appendQueryParams('/', extras?.query ?? {}), {\n state: extras?.state,\n replaceUrl: extras?.replaceUrl,\n });\n }\n navigateBack(extras) {\n const parsed = this.parseAbsoluteUrl();\n if (parsed) {\n let route = parsed.route.withStaticParams(parsed.params);\n do {\n route = route.parent;\n } while (route && route.entryDisabled);\n // In case route has no ancestor with allowed entry,\n if (!route) {\n return this.navigateHome(extras);\n }\n if (extras) {\n if (extras.query) {\n route = route.withQueryParams(extras.query);\n }\n if (extras.state) {\n route = route.withStateParams(extras.state);\n }\n }\n return this.navigate(route, extras);\n }\n else {\n console.warn(`Cannot go back from ${this.location.path()} because no route matches current url`);\n return null;\n }\n }\n /**\n * This method will try to find matching route for given absolute URL, extract its parameters and return them.\n * If no route matches the URL, it returns null. Parameters are extracted only for the last matching route, not ancestors.\n * @param url Absolute URL to parse (e.g. '/home/details/123?query=abc').\n * @returns Object containing the matching route and its parameters, or null if no route is matching.\n */\n parseAbsoluteUrl(url = this.location.path()) {\n const stripped = RdtStringUtils.stripQueryParams(url);\n if (this.allRoutes) {\n for (const route of this.allRoutes) {\n const params = route.parseAbsoluteUrl(stripped);\n if (params) {\n return { route, params };\n }\n }\n }\n return null;\n }\n extractAllParams(currentRoute) {\n if (!currentRoute) {\n const parsed = this.parseAbsoluteUrl();\n if (!parsed) {\n console.warn('No route matches current url.');\n return null;\n }\n currentRoute = parsed.route;\n }\n const url = this.location.path();\n return currentRoute.parseAbsoluteUrl(url);\n }\n isParentOfCurrentLocation(route) {\n return true;\n }\n removeQueryParams(...paramNames) {\n const regex = new RegExp(`[?&](${paramNames.join('|')})=[^&]*`, 'g');\n return history.replaceState(history.state, '', location.pathname + location.search.replace(regex, '').replace(/^&/, '?'));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtRouterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtRouterService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtRouterService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL3NlcnZpY2VzL3JkdC1yb3V0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBVSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxNQUFNLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhELE9BQU8sRUFBMEIsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBU3pELE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQztBQUMvQixNQUFNLG9CQUFvQixHQUFHLGdCQUFnQixDQUFDO0FBSzlDLE1BQU0sT0FBTyxnQkFBZ0I7SUFDbEIsU0FBUyxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzVELFFBQVEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBRWpELFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVqQyxZQUFZLEdBQWtCLElBQUksQ0FBQztJQUNuQyxXQUFXLEdBQWtCLElBQUksQ0FBQztJQUUxQyxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FB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QVEsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQzFFLENBQUM7SUFDSixDQUFDO3VHQW5NVSxnQkFBZ0I7MkdBQWhCLGdCQUFnQixjQUZmLE1BQU07OzJGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiwgUGxhdGZvcm1Mb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBQYXJhbXMsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFJkdFN0cmluZ1V0aWxzIH0gZnJvbSAnQG5ncmR0L3V0aWxzJztcclxuaW1wb3J0IHsgZmlsdGVyLCBPYnNlcnZhYmxlLCB0YWtlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFJkdFJvdXRlIH0gZnJvbSAnLi4vcmR0LXJvdXRlL3JkdC1yb3V0ZSc7XHJcbmltcG9ydCB7IFJkdENvbWJpbmVkUm91dGVQYXJhbXMsIFJkdFBhcmFtZXRlcnMgfSBmcm9tICcuLi9yZHQtcm91dGUvdXRpbHMnO1xyXG5pbXBvcnQgeyBSRFRfUk9VVEVTX1BST1ZJREVSIH0gZnJvbSAnLi9yZHQtcm91dGVzLnRva2VuJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmR0TmF2aWdhdGVFeHRyYXMge1xyXG4gIHN0YXRlPzogUGFyYW1zO1xyXG4gIHF1ZXJ5PzogUGFyYW1zO1xyXG4gIHRhcmdldD86ICdfYmxhbmsnIHwgJ19zZWxmJyB8ICdfcGFyZW50JyB8ICdfdG9wJztcclxuICByZXBsYWNlVXJsPzogYm9vbGVhbjtcclxufVxyXG5cclxuY29uc3QgREVGQVVMVF9UQVJHRVQgPSAnX3NlbGYnO1xyXG5jb25zdCBSRFRfU1RBVEVfUEFSQU1TX0tFWSA9ICdSZHRTdGF0ZVBhcmFtcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmR0Um91dGVyU2VydmljZSB7XHJcbiAgcmVhZG9ubHkgYWxsUm91dGVzID0gaW5qZWN0KFJEVF9ST1VURVNfUFJPVklERVIsIHsgb3B0aW9uYWw6IHRydWUgfSk7XHJcbiAgcmVhZG9ubHkgYmFzZUhyZWYgPSBpbmplY3QoUGxhdGZvcm1Mb2NhdGlvbikuZ2V0QmFzZUhyZWZGcm9tRE9NKCk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9jYXRpb24gPSBpbmplY3QoTG9jYXRpb24pO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcblxyXG4gIHByaXZhdGUgX3ByZXZpb3VzVXJsOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIF9jdXJyZW50VXJsOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgZ2V0IHByZXZpb3VzVXJsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ByZXZpb3VzVXJsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGN1cnJlbnRVcmwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFVybDtcclxuICB9XHJcblxyXG4gIHBhcnNlUHJldmlvdXNVcmwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcHJldmlvdXNVcmwgPyB0aGlzLnBhcnNlQWJzb2x1dGVVcmwodGhpcy5fcHJldmlvdXNVcmwpIDogbnVsbDtcclxuICB9XHJcblxyXG4gIHBhcnNlQ3VycmVudFVybCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9jdXJyZW50VXJsID8gdGhpcy5wYXJzZUFic29sdXRlVXJsKHRoaXMuX2N1cnJlbnRVcmwpIDogbnVsbDtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IG5hdmlnYXRpb25FbmQkID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXHJcbiAgICBmaWx0ZXIoKGUpID0+IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKVxyXG4gICkgYXMgT2JzZXJ2YWJsZTxOYXZpZ2F0aW9uRW5kPjtcclxuXHJcbiAgcmVhZG9ubHkgbmV4dE5hdmlnYXRpb25FbmQkID0gdGhpcy5uYXZpZ2F0aW9uRW5kJC5waXBlKHRha2UoMSkpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIGlmICh0aGlzLmFsbFJvdXRlcyA9PT0gbnVsbCkge1xyXG4gICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgJ0FsbCByb3V0ZXMgbm90IHByb3ZpZGVkLiBNYWtlIHN1cmUgdG8gcHJvdmlkZSBSRFRfUk9VVEVTX1BST1ZJREVSIHdpdGggUmR0Um91dGVbXS4nXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuYWxsUm91dGVzID0gW107XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5uYXZpZ2F0aW9uRW5kJC5zdWJzY3JpYmUoKGUpID0+IHtcclxuICAgICAgdGhpcy5fcHJldmlvdXNVcmwgPSB0aGlzLl9jdXJyZW50VXJsO1xyXG4gICAgICB0aGlzLl9jdXJyZW50VXJsID0gZS51cmw7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEByZXR1cm5zIHdpbmRvdy5oaXN0b3J5LnN0YXRlIGV4dGVuZGVkIGJ5IHN0YXRlIHBhcmFtZXRlcnMgcGFzc2VkIGZyb20gcGFyZW50IHdpbmRvdy5cclxuICAgKi9cclxuICBnZXRIaXN0b3J5U3RhdGUoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgICdSZHRTdGF0ZVBhcmFtcycgaW4gd2luZG93ICYmXHJcbiAgICAgIHR5cGVvZiB3aW5kb3dbUkRUX1NUQVRFX1BBUkFNU19LRVldID09PSAnb2JqZWN0J1xyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiB7IC4uLndpbmRvd1tSRFRfU1RBVEVfUEFSQU1TX0tFWV0sIC4uLihoaXN0b3J5LnN0YXRlID8/IHt9KSB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGhpc3Rvcnkuc3RhdGUgPz8ge307XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOYXZpZ2F0ZXMgdG8gdGhlIHNwZWNpZmllZCByb3V0ZS5cclxuICAgKiBAcGFyYW0gbGluayBSb3V0ZSB0byBuYXZpZ2F0ZSB0by5cclxuICAgKiBAcGFyYW0gcGFyYW1zIFBhcmFtZXRlciBvZiByb3V0ZSBwYXNzZWQgYXMgZmlyc3QgYXJndW1lbnQgb3IgUmR0UGFyYW1ldGVycyBvYmplY3QuXHJcbiAgICogQHBhcmFtIGV4dHJhcyBBbGxvd3MgeW91IHRvIHNwZWNpZnkgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIGZvciBuYXZpZ2F0aW9uLiBUaGVzZSBleHRyYXMgaGF2ZSBoaWdoZXIgcHJpb3JpdHkgdGhhbiB0aG9zZSBkZWZpbmVkIGluIHRoZSByb3V0ZS5cclxuICAgKiBAcmV0dXJucyBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBuYXZpZ2F0aW9uIGlzIGNvbXBsZXRlLlxyXG4gICAqL1xyXG4gIG5hdmlnYXRlPFQgZXh0ZW5kcyBvYmplY3Q+KFxyXG4gICAgbGluazogUmR0Um91dGU8VD4sXHJcbiAgICBwYXJhbXM/OiBQYXJ0aWFsPFQ+IHwgUmR0UGFyYW1ldGVycyxcclxuICAgIGV4dHJhcz86IFJkdE5hdmlnYXRlRXh0cmFzXHJcbiAgKSB7XHJcbiAgICBsZXQgdXJsOiBzdHJpbmc7XHJcbiAgICBpZiAocGFyYW1zIGluc3RhbmNlb2YgUmR0UGFyYW1ldGVycykge1xyXG4gICAgICBsZXQgbGlua0NweSA9IGxpbms7XHJcbiAgICAgIGZvciAobGV0IHI6IFJkdFJvdXRlIHwgbnVsbCA9IGxpbmtDcHk7IHIgIT09IG51bGw7IHIgPSByLnBhcmVudCkge1xyXG4gICAgICAgIGNvbnN0IHAgPSBwYXJhbXMuZ2V0KHIgYXMgUmR0Um91dGUpO1xyXG4gICAgICAgIGlmIChwKSB7XHJcbiAgICAgICAgICBsaW5rQ3B5ID0gbGlua0NweS53aXRoU3RhdGljUGFyYW1zKHIsIHApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB1cmwgPSBsaW5rQ3B5LmNyZWF0ZUFic29sdXRlVXJsKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB1cmwgPSBwYXJhbXMgPyBsaW5rLmNyZWF0ZUFic29sdXRlVXJsKHBhcmFtcykgOiBsaW5rLmNyZWF0ZUFic29sdXRlVXJsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXh0cmFzPy50YXJnZXQgPz8gREVGQVVMVF9UQVJHRVQ7XHJcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IGV4dHJhcz8ucXVlcnkgPz8gbGluay5xdWVyeVBhcmFtcztcclxuICAgIGNvbnN0IHN0YXRlUGFyYW1zID0gZXh0cmFzPy5zdGF0ZSA/PyBsaW5rLnN0YXRlUGFyYW1zO1xyXG5cclxuICAgIGlmICh0YXJnZXQgPT09ICdfc2VsZicpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlKFt1cmxdLCB7XHJcbiAgICAgICAgcXVlcnlQYXJhbXM6IHF1ZXJ5UGFyYW1zLFxyXG4gICAgICAgIHN0YXRlOiBzdGF0ZVBhcmFtcyxcclxuICAgICAgICByZXBsYWNlVXJsOiBleHRyYXM/LnJlcGxhY2VVcmwsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFic29sdXRlUGF0aCA9IFJkdFN0cmluZ1V0aWxzLmNyZWF0ZUFic29sdXRlVXJsKHVybCwgdGhpcy5iYXNlSHJlZik7XHJcbiAgICBjb25zdCBwYXRoV2l0aFBhcmFtcyA9IFJkdFN0cmluZ1V0aWxzLmFwcGVuZFF1ZXJ5UGFyYW1zKFxyXG4gICAgICBhYnNvbHV0ZVBhdGgsXHJcbiAgICAgIHF1ZXJ5UGFyYW1zXHJcbiAgICApO1xyXG4gICAgY29uc3Qgd2luID0gd2luZG93Lm9wZW4ocGF0aFdpdGhQYXJhbXMsIHRhcmdldCk7XHJcbiAgICBpZiAod2luKSB7XHJcbiAgICAgICh3aW4gYXMgYW55KVtSRFRfU1RBVEVfUEFSQU1TX0tFWV0gPSBzdGF0ZVBhcmFtcztcclxuICAgIH1cclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZUhvbWUoZXh0cmFzPzogUmR0TmF2aWdhdGVFeHRyYXMpIHtcclxuICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFxyXG4gICAgICBSZHRTdHJpbmdVdGlscy5hcHBlbmRRdWVyeVBhcmFtcygnLycsIGV4dHJhcz8ucXVlcnkgPz8ge30pLFxyXG4gICAgICB7XHJcbiAgICAgICAgc3RhdGU6IGV4dHJhcz8uc3RhdGUsXHJcbiAgICAgICAgcmVwbGFjZVVybDogZXh0cmFzPy5yZXBsYWNlVXJsLFxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGVCYWNrKGV4dHJhcz86IFJkdE5hdmlnYXRlRXh0cmFzKSB7XHJcbiAgICBjb25zdCBwYXJzZWQgPSB0aGlzLnBhcnNlQWJzb2x1dGVVcmwoKTtcclxuICAgIGlmIChwYXJzZWQpIHtcclxuICAgICAgbGV0IHJvdXRlOiBSZHRSb3V0ZSB8IG51bGwgPSBwYXJzZWQucm91dGUud2l0aFN0YXRpY1BhcmFtcyhwYXJzZWQucGFyYW1zKTtcclxuICAgICAgZG8ge1xyXG4gICAgICAgIHJvdXRlID0gcm91dGUucGFyZW50O1xyXG4gICAgICB9IHdoaWxlIChyb3V0ZSAmJiByb3V0ZS5lbnRyeURpc2FibGVkKTtcclxuXHJcbiAgICAgIC8vIEluIGNhc2Ugcm91dGUgaGFzIG5vIGFuY2VzdG9yIHdpdGggYWxsb3dlZCBlbnRyeSxcclxuICAgICAgaWYgKCFyb3V0ZSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm5hdmlnYXRlSG9tZShleHRyYXMpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChleHRyYXMpIHtcclxuICAgICAgICBpZiAoZXh0cmFzLnF1ZXJ5KSB7XHJcbiAgICAgICAgICByb3V0ZSA9IHJvdXRlLndpdGhRdWVyeVBhcmFtcyhleHRyYXMucXVlcnkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZXh0cmFzLnN0YXRlKSB7XHJcbiAgICAgICAgICByb3V0ZSA9IHJvdXRlLndpdGhTdGF0ZVBhcmFtcyhleHRyYXMuc3RhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy5uYXZpZ2F0ZShyb3V0ZSwgZXh0cmFzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICBgQ2Fubm90IGdvIGJhY2sgZnJvbSAke3RoaXMubG9jYXRpb24ucGF0aCgpfSBiZWNhdXNlIG5vIHJvdXRlIG1hdGNoZXMgY3VycmVudCB1cmxgXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhpcyBtZXRob2Qgd2lsbCB0cnkgdG8gZmluZCBtYXRjaGluZyByb3V0ZSBmb3IgZ2l2ZW4gYWJzb2x1dGUgVVJMLCBleHRyYWN0IGl0cyBwYXJhbWV0ZXJzIGFuZCByZXR1cm4gdGhlbS5cclxuICAgKiBJZiBubyByb3V0ZSBtYXRjaGVzIHRoZSBVUkwsIGl0IHJldHVybnMgbnVsbC4gUGFyYW1ldGVycyBhcmUgZXh0cmFjdGVkIG9ubHkgZm9yIHRoZSBsYXN0IG1hdGNoaW5nIHJvdXRlLCBub3QgYW5jZXN0b3JzLlxyXG4gICAqIEBwYXJhbSB1cmwgQWJzb2x1dGUgVVJMIHRvIHBhcnNlIChlLmcuICcvaG9tZS9kZXRhaWxzLzEyMz9xdWVyeT1hYmMnKS5cclxuICAgKiBAcmV0dXJucyBPYmplY3QgY29udGFpbmluZyB0aGUgbWF0Y2hpbmcgcm91dGUgYW5kIGl0cyBwYXJhbWV0ZXJzLCBvciBudWxsIGlmIG5vIHJvdXRlIGlzIG1hdGNoaW5nLlxyXG4gICAqL1xyXG4gIHBhcnNlQWJzb2x1dGVVcmwodXJsID0gdGhpcy5sb2NhdGlvbi5wYXRoKCkpIHtcclxuICAgIGNvbnN0IHN0cmlwcGVkID0gUmR0U3RyaW5nVXRpbHMuc3RyaXBRdWVyeVBhcmFtcyh1cmwpO1xyXG4gICAgaWYgKHRoaXMuYWxsUm91dGVzKSB7XHJcbiAgICAgIGZvciAoY29uc3Qgcm91dGUgb2YgdGhpcy5hbGxSb3V0ZXMpIHtcclxuICAgICAgICBjb25zdCBwYXJhbXMgPSByb3V0ZS5wYXJzZUFic29sdXRlVXJsKHN0cmlwcGVkKTtcclxuICAgICAgICBpZiAocGFyYW1zKSB7XHJcbiAgICAgICAgICByZXR1cm4geyByb3V0ZSwgcGFyYW1zIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGV4dHJhY3RBbGxQYXJhbXMoXHJcbiAgICBjdXJyZW50Um91dGU/OiBSZHRSb3V0ZVxyXG4gICk6IFJkdENvbWJpbmVkUm91dGVQYXJhbXM8YW55PiB8IG51bGwge1xyXG4gICAgaWYgKCFjdXJyZW50Um91dGUpIHtcclxuICAgICAgY29uc3QgcGFyc2VkID0gdGhpcy5wYXJzZUFic29sdXRlVXJsKCk7XHJcbiAgICAgIGlmICghcGFyc2VkKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKCdObyByb3V0ZSBtYXRjaGVzIGN1cnJlbnQgdXJsLicpO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGN1cnJlbnRSb3V0ZSA9IHBhcnNlZC5yb3V0ZTtcclxuICAgIH1cclxuICAgIGNvbnN0IHVybCA9IHRoaXMubG9jYXRpb24ucGF0aCgpO1xyXG4gICAgcmV0dXJuIGN1cnJlbnRSb3V0ZS5wYXJzZUFic29sdXRlVXJsKHVybCk7XHJcbiAgfVxyXG5cclxuICBpc1BhcmVudE9mQ3VycmVudExvY2F0aW9uKHJvdXRlOiBSZHRSb3V0ZSkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICByZW1vdmVRdWVyeVBhcmFtcyguLi5wYXJhbU5hbWVzOiBzdHJpbmdbXSkge1xyXG4gICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGBbPyZdKCR7cGFyYW1OYW1lcy5qb2luKCd8Jyl9KT1bXiZdKmAsICdnJyk7XHJcblxyXG4gICAgcmV0dXJuIGhpc3RvcnkucmVwbGFjZVN0YXRlKFxyXG4gICAgICBoaXN0b3J5LnN0YXRlLFxyXG4gICAgICAnJyxcclxuICAgICAgbG9jYXRpb24ucGF0aG5hbWUgKyBsb2NhdGlvbi5zZWFyY2gucmVwbGFjZShyZWdleCwgJycpLnJlcGxhY2UoL14mLywgJz8nKVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl19","export var RdtNavigationSource;\n(function (RdtNavigationSource) {\n RdtNavigationSource[\"BREADCRUMB\"] = \"breadcrumb\";\n})(RdtNavigationSource || (RdtNavigationSource = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL3JkdC1yb3V0ZS9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksbUJBRVg7QUFGRCxXQUFZLG1CQUFtQjtJQUM3QixnREFBeUIsQ0FBQTtBQUMzQixDQUFDLEVBRlcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQUU5QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFJkdE5hdmlnYXRpb25Tb3VyY2Uge1xyXG4gIEJSRUFEQ1JVTUIgPSAnYnJlYWRjcnVtYicsXHJcbn1cclxuIl19","import { Location } from '@angular/common';\nimport { EnvironmentInjector, inject, runInInjectionContext, } from '@angular/core';\nimport { Router, } from '@angular/router';\nimport { RDT_CANNOT_BE_ENTERED_PROVIDER } from '../services/rdt-cannot-be-entered.token';\nimport { RdtRouterService } from '../services/rdt-router.service';\nimport { RdtNavigationSource } from './constants';\nimport { RdtParameters, } from './utils';\nexport class RdtAngularRoute {\n route;\n children = [];\n // Must be set from component declaration files\n loadComponent;\n loadChildren;\n component;\n providers = [];\n providersForChildren = [];\n resolvers = {};\n canActivate = [];\n canActivateChild = [];\n canDeactivate = [];\n runGuardsAndResolvers;\n data;\n constructor(route) {\n this.route = route;\n }\n provide(...provider) {\n this.providers.push(...provider);\n return this;\n }\n provideToChildren(...provider) {\n this.providersForChildren.push(...provider);\n this.providers.push(...provider);\n return this;\n }\n withLazyComponent(callback) {\n this.loadComponent = callback;\n return this;\n }\n withModule(callback) {\n this.loadChildren = callback;\n return this;\n }\n /**\n * @deprecated Use withModule() instead.\n */\n setModule(callback) {\n this.loadChildren = callback;\n return this;\n }\n withComponent(comp) {\n this.component = comp;\n return this;\n }\n /**\n * @deprecated Use withComponent() instead.\n */\n setComponent(comp) {\n return this.withComponent(comp);\n }\n withChildren(...routes) {\n this.children = routes;\n return this;\n }\n /**\n * @deprecated Use withChildren() instead.\n */\n setChildren(...routes) {\n return this.withChildren(...routes);\n }\n addResolve(paramName, resolver) {\n this.resolvers[paramName] = resolver;\n return this;\n }\n addCanActivate(...fns) {\n this.canActivate.push(...fns);\n return this;\n }\n addCanDeactivate(...fns) {\n this.canDeactivate.push(...fns);\n return this;\n }\n addCanActivateChild(...fns) {\n this.canActivateChild.push(...fns);\n return this;\n }\n withRunGuardsAndResolvers(value) {\n this.runGuardsAndResolvers = value;\n return this;\n }\n /**\n * @deprecated Use withRunGuardsAndResolvers() instead.\n */\n setRunGuardsAndResolvers(value) {\n return this.withRunGuardsAndResolvers(value);\n }\n build() {\n this.checkChildrenMatch();\n let res = {\n path: this.route.path,\n providers: this.providers,\n title: this.route.name,\n canMatch: this.getCanMatch(),\n };\n if (this.component) {\n res.component = this.component;\n }\n else if (this.loadChildren) {\n res.loadChildren = this.loadChildren;\n }\n else if (this.loadComponent) {\n res.loadComponent = this.loadComponent;\n }\n res.data = this.data ?? {\n breadcrumb: {\n label: this.route.name,\n disable: this.route.entryDisabled,\n staticStateParams: {\n src: RdtNavigationSource.BREADCRUMB,\n },\n },\n ...this.route.data,\n };\n const guard = (route, state) => {\n const injector = inject(EnvironmentInjector);\n const rdtRouter = inject(RdtRouterService);\n const parsed = rdtRouter.parseAbsoluteUrl(state.url);\n const combinedParams = parsed?.params ?? {\n params: {},\n query: {},\n state: {},\n route: new RdtParameters(),\n };\n combinedParams.query = route.queryParams;\n if (runInInjectionContext(injector, () => this.route.canBeEnteredFn(parsed?.route ?? this.route, combinedParams))) {\n return true;\n }\n else {\n const router = inject(Router);\n const location = inject(Location);\n let url = inject(RDT_CANNOT_BE_ENTERED_PROVIDER);\n if (typeof url === 'function') {\n url = runInInjectionContext(injector, url.bind(url, location.path(), state.url, parsed?.route ?? this.route));\n }\n if (typeof url === 'string') {\n return router.parseUrl(url);\n }\n else {\n return false;\n }\n }\n };\n this.canActivate.push(guard);\n res.canActivate = this.canActivate;\n res.canDeactivate = this.canDeactivate;\n if (this.providersForChildren.length > 0) {\n this.children.forEach((ch) => this.provideToChildrenRec(ch));\n }\n // If children exist, change\n // {\n // path: '/path',\n // component: FeatureComponent,\n // children: [...]\n // }\n // into\n // {\n // path: '/path',\n // children: [\n // {\n // path: '',\n // component: FeatureComponent\n // },\n // ...\n // ]\n // }\n if (this.children.length > 0) {\n if (this.loadChildren || this.component || this.loadComponent) {\n const path = res.path;\n res.path = '';\n res.pathMatch = 'full';\n res.canMatch = undefined;\n res = {\n path: path,\n pathMatch: 'prefix',\n children: [res, ...this.children],\n canActivateChild: this.canActivateChild,\n canMatch: this.getCanMatch(),\n data: res.data,\n providers: res.providers,\n canActivate: res.canActivate,\n canDeactivate: res.canDeactivate,\n };\n }\n else {\n res.children = this.children;\n }\n }\n if (Object.keys(this.resolvers).length > 0) {\n res.resolve = this.resolvers;\n }\n if (this.runGuardsAndResolvers) {\n res.runGuardsAndResolvers = this.runGuardsAndResolvers;\n }\n return res;\n }\n getCanMatch() {\n const paramMap = this.route.paramMap;\n const hasNumberParams = Object.keys(paramMap).some((p) => paramMap[p] === 'number');\n if (!hasNumberParams) {\n return undefined;\n }\n const routeSegmentLength = this.route.path.split('/').length;\n const regex = this.route.regex\n ? new RegExp(`^${this.route.regex.source}$`)\n : this.route.absoluteRegex;\n return [\n (route, segments) => {\n const path = segments\n .slice(0, routeSegmentLength)\n .map((s) => s.path)\n .join('/');\n return regex.test(path);\n },\n ];\n }\n provideToChildrenRec(child) {\n if (!child.providers) {\n child.providers = [];\n }\n this.providersForChildren.forEach((p) => {\n if (typeof p === 'object' && 'provide' in p) {\n const exists = child.providers.some((pr) => {\n if (typeof pr === 'object' && 'provide' in pr) {\n return pr.provide === p.provide;\n }\n return false;\n });\n if (!exists) {\n child.providers.unshift(p);\n }\n }\n else {\n child.providers.unshift(p);\n }\n });\n if (child.children) {\n child.children.forEach((ch) => this.provideToChildrenRec(ch));\n }\n }\n checkChildrenMatch() {\n // Check that all routes are present if route is not\n // lazy loaded module.\n if (!this.loadChildren &&\n (this.route.children.length > 0 || this.children.length > 0)) {\n if (this.children.length < this.route.children.length) {\n throw new Error(`RdtRoute ${this.route.name} has ${this.route.children.length} children, but RdtAngularRoute has ${this.children.length}. These numbers must match. Did you forget to call .setChildren() method in global routes definition? Routes with following names should be present: ${this.route.children\n .map((ch) => ch.name)\n .join(', ')}`);\n }\n else if (this.children.length > this.route.children.length) {\n throw new Error(`RdtRoute ${this.route.name} has ${this.route.children.length} children, but RdtAngularRoute has ${this.children.length}. These numbers must match. Did you forget to call .setChildren() method in feature shell routes definition? Routes with following paths should be present: ${this.children\n .map((ch) => ch.path)\n .join(', ')}`);\n }\n const n1 = this.children.map((ch) => ch.path);\n const n2 = this.route.children.map((ch) => ch.path);\n n1.sort();\n n2.sort();\n for (let i = 0; i < n1.length; i++) {\n if (n1[i] !== n2[i]) {\n throw new Error(`Paths of children provided in RdtRoute and\r\n RdtAngularRoute do not match. ${n1[i]} != ${n2[i]}`);\n }\n }\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWFuZ3VsYXItcm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvcmR0LXJvdXRlL3JkdC1hbmd1bGFyLXJvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsbUJBQW1CLEVBRW5CLE1BQU0sRUFFTixxQkFBcUIsR0FFdEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQVVMLE1BQU0sR0FJUCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVsRCxPQUFPLEVBR0wsYUFBYSxHQUNkLE1BQU0sU0FBUyxDQUFDO0FBRWpCLE1BQU0sT0FBTyxlQUFlO0lBQ2xCLEtBQUssQ0FBYztJQUNuQixRQUFRLEdBQVksRUFBRSxDQUFDO0lBRS9CLCtDQUErQztJQUN2QyxhQUFhLENBQXlCO0lBQ3RDLFlBQVksQ0FBd0I7SUFDcEMsU0FBUyxDQUFhO0lBQ3RCLFNBQVMsR0FBd0MsRUFBRSxDQUFDO0lBQ3BELG9CQUFvQixHQUF3QyxFQUFFLENBQUM7SUFDL0QsU0FBUyxHQUEwQyxFQUFFLENBQUM7SUFDdEQsV0FBVyxHQUFvQixFQUFFLENBQUM7SUFDbEMsZ0JBQWdCLEdBQXlCLEVBQUUsQ0FBQztJQUM1QyxhQUFhLEdBQXlCLEVBQUUsQ0FBQztJQUN6QyxxQkFBcUIsQ0FBeUI7SUFDOUMsSUFBSSxDQUFRO0lBRXBCLFlBQVksS0FBa0I7UUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELE9BQU8sQ0FBQyxH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Q0FBQyxLQUFLLENBQUMsSUFBSSxRQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUN0QixzQ0FDRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQ2hCLCtKQUErSixJQUFJLENBQUMsUUFBUTtxQkFDekssR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO3FCQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDaEIsQ0FBQztZQUNKLENBQUM7WUFDRCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUssQ0FBQyxDQUFDO1lBQy9DLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BELEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ25DLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNwQixNQUFNLElBQUksS0FBSyxDQUNiOzRDQUNnQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3BELENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIEVudmlyb25tZW50SW5qZWN0b3IsXHJcbiAgRW52aXJvbm1lbnRQcm92aWRlcnMsXHJcbiAgaW5qZWN0LFxyXG4gIFByb3ZpZGVyLFxyXG4gIHJ1bkluSW5qZWN0aW9uQ29udGV4dCxcclxuICBUeXBlLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgQ2FuQWN0aXZhdGVDaGlsZEZuLFxyXG4gIENhbkFjdGl2YXRlRm4sXHJcbiAgQ2FuRGVhY3RpdmF0ZUZuLFxyXG4gIENhbk1hdGNoRm4sXHJcbiAgRGF0YSxcclxuICBMb2FkQ2hpbGRyZW5DYWxsYmFjayxcclxuICBSZXNvbHZlRm4sXHJcbiAgUm91dGUsXHJcbiAgUm91dGVyLFxyXG4gIFJvdXRlclN0YXRlU25hcHNob3QsXHJcbiAgUnVuR3VhcmRzQW5kUmVzb2x2ZXJzLFxyXG4gIFVybFNlZ21lbnQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgUkRUX0NBTk5PVF9CRV9FTlRFUkVEX1BST1ZJREVSIH0gZnJvbSAnLi4vc2VydmljZXMvcmR0LWNhbm5vdC1iZS1lbnRlcmVkLnRva2VuJztcclxuaW1wb3J0IHsgUmR0Um91dGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3JkdC1yb3V0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFJkdE5hdmlnYXRpb25Tb3VyY2UgfSBmcm9tICcuL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IFJkdFJvdXRlIH0gZnJvbSAnLi9yZHQtcm91dGUnO1xyXG5pbXBvcnQge1xyXG4gIExvYWRDb21wb25lbnRDYWxsYmFjayxcclxuICBSZHRDb21iaW5lZFJvdXRlUGFyYW1zLFxyXG4gIFJkdFBhcmFtZXRlcnMsXHJcbn0gZnJvbSAnLi91dGlscyc7XHJcblxyXG5leHBvcnQgY2xhc3MgUmR0QW5ndWxhclJvdXRlPFQgZXh0ZW5kcyBvYmplY3Q+IHtcclxuICBwcml2YXRlIHJvdXRlOiBSZHRSb3V0ZTxUPjtcclxuICBwcml2YXRlIGNoaWxkcmVuOiBSb3V0ZVtdID0gW107XHJcblxyXG4gIC8vIE11c3QgYmUgc2V0IGZyb20gY29tcG9uZW50IGRlY2xhcmF0aW9uIGZpbGVzXHJcbiAgcHJpdmF0ZSBsb2FkQ29tcG9uZW50PzogTG9hZENvbXBvbmVudENhbGxiYWNrO1xyXG4gIHByaXZhdGUgbG9hZENoaWxkcmVuPzogTG9hZENoaWxkcmVuQ2FsbGJhY2s7XHJcbiAgcHJpdmF0ZSBjb21wb25lbnQ/OiBUeXBlPGFueT47XHJcbiAgcHJpdmF0ZSBwcm92aWRlcnM6IChQcm92aWRlciB8IEVudmlyb25tZW50UHJvdmlkZXJzKVtdID0gW107XHJcbiAgcHJpdmF0ZSBwcm92aWRlcnNGb3JDaGlsZHJlbjogKFByb3ZpZGVyIHwgRW52aXJvbm1lbnRQcm92aWRlcnMpW10gPSBbXTtcclxuICBwcml2YXRlIHJlc29sdmVyczogeyBba2V5OiBzdHJpbmddOiBSZXNvbHZlRm48dW5rbm93bj4gfSA9IHt9O1xyXG4gIHByaXZhdGUgY2FuQWN0aXZhdGU6IENhbkFjdGl2YXRlRm5bXSA9IFtdO1xyXG4gIHByaXZhdGUgY2FuQWN0aXZhdGVDaGlsZDogQ2FuQWN0aXZhdGVDaGlsZEZuW10gPSBbXTtcclxuICBwcml2YXRlIGNhbkRlYWN0aXZhdGU6IENhbkRlYWN0aXZhdGVGbjxUPltdID0gW107XHJcbiAgcHJpdmF0ZSBydW5HdWFyZHNBbmRSZXNvbHZlcnM/OiBSdW5HdWFyZHNBbmRSZXNvbHZlcnM7XHJcbiAgcHJpdmF0ZSBkYXRhPzogRGF0YTtcclxuXHJcbiAgY29uc3RydWN0b3Iocm91dGU6IFJkdFJvdXRlPFQ+KSB7XHJcbiAgICB0aGlzLnJvdXRlID0gcm91dGU7XHJcbiAgfVxyXG5cclxuICBwcm92aWRlKC4uLnByb3ZpZGVyOiAoUHJvdmlkZXIgfCBFbnZpcm9ubWVudFByb3ZpZGVycylbXSkge1xyXG4gICAgdGhpcy5wcm92aWRlcnMucHVzaCguLi5wcm92aWRlcik7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHByb3ZpZGVUb0NoaWxkcmVuKC4uLnByb3ZpZGVyOiAoUHJvdmlkZXIgfCBFbnZpcm9ubWVudFByb3ZpZGVycylbXSkge1xyXG4gICAgdGhpcy5wcm92aWRlcnNGb3JDaGlsZHJlbi5wdXNoKC4uLnByb3ZpZGVyKTtcclxuICAgIHRoaXMucHJvdmlkZXJzLnB1c2goLi4ucHJvdmlkZXIpO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICB3aXRoTGF6eUNvbXBvbmVudChjYWxsYmFjazogTG9hZENvbXBvbmVudENhbGxiYWNrKSB7XHJcbiAgICB0aGlzLmxvYWRDb21wb25lbnQgPSBjYWxsYmFjaztcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgd2l0aE1vZHVsZShjYWxsYmFjazogTG9hZENoaWxkcmVuQ2FsbGJhY2spIHtcclxuICAgIHRoaXMubG9hZENoaWxkcmVuID0gY2FsbGJhY2s7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHdpdGhNb2R1bGUoKSBpbnN0ZWFkLlxyXG4gICAqL1xyXG4gIHNldE1vZHVsZShjYWxsYmFjazogTG9hZENoaWxkcmVuQ2FsbGJhY2spIHtcclxuICAgIHRoaXMubG9hZENoaWxkcmVuID0gY2FsbGJhY2s7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHdpdGhDb21wb25lbnQoY29tcDogVHlwZTxhbnk+KSB7XHJcbiAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXA7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHdpdGhDb21wb25lbnQoKSBpbnN0ZWFkLlxyXG4gICAqL1xyXG4gIHNldENvbXBvbmVudChjb21wOiBUeXBlPGFueT4pIHtcclxuICAgIHJldHVybiB0aGlzLndpdGhDb21wb25lbnQoY29tcCk7XHJcbiAgfVxyXG5cclxuICB3aXRoQ2hpbGRyZW4oLi4ucm91dGVzOiBSb3V0ZVtdKSB7XHJcbiAgICB0aGlzLmNoaWxkcmVuID0gcm91dGVzO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoQ2hpbGRyZW4oKSBpbnN0ZWFkLlxyXG4gICAqL1xyXG4gIHNldENoaWxkcmVuKC4uLnJvdXRlczogUm91dGVbXSkge1xyXG4gICAgcmV0dXJuIHRoaXMud2l0aENoaWxkcmVuKC4uLnJvdXRlcyk7XHJcbiAgfVxyXG5cclxuICBhZGRSZXNvbHZlKHBhcmFtTmFtZTogc3RyaW5nLCByZXNvbHZlcjogUmVzb2x2ZUZuPHVua25vd24+KSB7XHJcbiAgICB0aGlzLnJlc29sdmVyc1twYXJhbU5hbWVdID0gcmVzb2x2ZXI7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIGFkZENhbkFjdGl2YXRlKC4uLmZuczogQ2FuQWN0aXZhdGVGbltdKSB7XHJcbiAgICB0aGlzLmNhbkFjdGl2YXRlLnB1c2goLi4uZm5zKTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgYWRkQ2FuRGVhY3RpdmF0ZSguLi5mbnM6IENhbkRlYWN0aXZhdGVGbjxhbnk+W10pIHtcclxuICAgIHRoaXMuY2FuRGVhY3RpdmF0ZS5wdXNoKC4uLmZucyk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIGFkZENhbkFjdGl2YXRlQ2hpbGQoLi4uZm5zOiBDYW5BY3RpdmF0ZUNoaWxkRm5bXSkge1xyXG4gICAgdGhpcy5jYW5BY3RpdmF0ZUNoaWxkLnB1c2goLi4uZm5zKTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgd2l0aFJ1bkd1YXJkc0FuZFJlc29sdmVycyh2YWx1ZTogUnVuR3VhcmRzQW5kUmVzb2x2ZXJzKSB7XHJcbiAgICB0aGlzLnJ1bkd1YXJkc0FuZFJlc29sdmVycyA9IHZhbHVlO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoUnVuR3VhcmRzQW5kUmVzb2x2ZXJzKCkgaW5zdGVhZC5cclxuICAgKi9cclxuICBzZXRSdW5HdWFyZHNBbmRSZXNvbHZlcnModmFsdWU6IFJ1bkd1YXJkc0FuZFJlc29sdmVycykge1xyXG4gICAgcmV0dXJuIHRoaXMud2l0aFJ1bkd1YXJkc0FuZFJlc29sdmVycyh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBidWlsZCgpOiBSb3V0ZSB7XHJcbiAgICB0aGlzLmNoZWNrQ2hpbGRyZW5NYXRjaCgpO1xyXG5cclxuICAgIGxldCByZXM6IFJvdXRlID0ge1xyXG4gICAgICBwYXRoOiB0aGlzLnJvdXRlLnBhdGgsXHJcbiAgICAgIHByb3ZpZGVyczogdGhpcy5wcm92aWRlcnMsXHJcbiAgICAgIHRpdGxlOiB0aGlzLnJvdXRlLm5hbWUsXHJcbiAgICAgIGNhbk1hdGNoOiB0aGlzLmdldENhbk1hdGNoKCksXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLmNvbXBvbmVudCkge1xyXG4gICAgICByZXMuY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMubG9hZENoaWxkcmVuKSB7XHJcbiAgICAgIHJlcy5sb2FkQ2hpbGRyZW4gPSB0aGlzLmxvYWRDaGlsZHJlbjtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5sb2FkQ29tcG9uZW50KSB7XHJcbiAgICAgIHJlcy5sb2FkQ29tcG9uZW50ID0gdGhpcy5sb2FkQ29tcG9uZW50O1xyXG4gICAgfVxyXG5cclxuICAgIHJlcy5kYXRhID0gdGhpcy5kYXRhID8/IHtcclxuICAgICAgYnJlYWRjcnVtYjoge1xyXG4gICAgICAgIGxhYmVsOiB0aGlzLnJvdXRlLm5hbWUsXHJcbiAgICAgICAgZGlzYWJsZTogdGhpcy5yb3V0ZS5lbnRyeURpc2FibGVkLFxyXG4gICAgICAgIHN0YXRpY1N0YXRlUGFyYW1zOiB7XHJcbiAgICAgICAgICBzcmM6IFJkdE5hdmlnYXRpb25Tb3VyY2UuQlJFQURDUlVNQixcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICAuLi50aGlzLnJvdXRlLmRhdGEsXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGd1YXJkOiBDYW5BY3RpdmF0ZUZuID0gKFxyXG4gICAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICAgICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcclxuICAgICkgPT4ge1xyXG4gICAgICBjb25zdCBpbmplY3RvciA9IGluamVjdChFbnZpcm9ubWVudEluamVjdG9yKTtcclxuICAgICAgY29uc3QgcmR0Um91dGVyID0gaW5qZWN0KFJkdFJvdXRlclNlcnZpY2UpO1xyXG4gICAgICBjb25zdCBwYXJzZWQgPSByZHRSb3V0ZXIucGFyc2VBYnNvbHV0ZVVybChzdGF0ZS51cmwpO1xyXG4gICAgICBjb25zdCBjb21iaW5lZFBhcmFtczogUmR0Q29tYmluZWRSb3V0ZVBhcmFtczxUPiA9IHBhcnNlZD8ucGFyYW1zID8/IHtcclxuICAgICAgICBwYXJhbXM6IHt9LFxyXG4gICAgICAgIHF1ZXJ5OiB7fSxcclxuICAgICAgICBzdGF0ZToge30sXHJcbiAgICAgICAgcm91dGU6IG5ldyBSZHRQYXJhbWV0ZXJzKCksXHJcbiAgICAgIH07XHJcbiAgICAgIGNvbWJpbmVkUGFyYW1zLnF1ZXJ5ID0gcm91dGUucXVlcnlQYXJhbXM7XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgcnVuSW5JbmplY3Rpb25Db250ZXh0KGluamVjdG9yLCAoKSA9PlxyXG4gICAgICAgICAgdGhpcy5yb3V0ZS5jYW5CZUVudGVyZWRGbihwYXJzZWQ/LnJvdXRlID8/IHRoaXMucm91dGUsIGNvbWJpbmVkUGFyYW1zKVxyXG4gICAgICAgIClcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcbiAgICAgICAgY29uc3QgbG9jYXRpb24gPSBpbmplY3QoTG9jYXRpb24pO1xyXG4gICAgICAgIGxldCB1cmwgPSBpbmplY3QoUkRUX0NBTk5PVF9CRV9FTlRFUkVEX1BST1ZJREVSKTtcclxuICAgICAgICBpZiAodHlwZW9mIHVybCA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgdXJsID0gcnVuSW5JbmplY3Rpb25Db250ZXh0KFxyXG4gICAgICAgICAgICBpbmplY3RvcixcclxuICAgICAgICAgICAgdXJsLmJpbmQoXHJcbiAgICAgICAgICAgICAgdXJsLFxyXG4gICAgICAgICAgICAgIGxvY2F0aW9uLnBhdGgoKSxcclxuICAgICAgICAgICAgICBzdGF0ZS51cmwsXHJcbiAgICAgICAgICAgICAgcGFyc2VkPy5yb3V0ZSA/PyB0aGlzLnJvdXRlXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlb2YgdXJsID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgcmV0dXJuIHJvdXRlci5wYXJzZVVybCh1cmwpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhpcy5jYW5BY3RpdmF0ZS5wdXNoKGd1YXJkKTtcclxuXHJcbiAgICByZXMuY2FuQWN0aXZhdGUgPSB0aGlzLmNhbkFjdGl2YXRlO1xyXG4gICAgcmVzLmNhbkRlYWN0aXZhdGUgPSB0aGlzLmNhbkRlYWN0aXZhdGU7XHJcblxyXG4gICAgaWYgKHRoaXMucHJvdmlkZXJzRm9yQ2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmNoaWxkcmVuLmZvckVhY2goKGNoKSA9PiB0aGlzLnByb3ZpZGVUb0NoaWxkcmVuUmVjKGNoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWYgY2hpbGRyZW4gZXhpc3QsIGNoYW5nZVxyXG4gICAgLy8ge1xyXG4gICAgLy8gICAgcGF0aDogJy9wYXRoJyxcclxuICAgIC8vICAgIGNvbXBvbmVudDogRmVhdHVyZUNvbXBvbmVudCxcclxuICAgIC8vICAgIGNoaWxkcmVuOiBbLi4uXVxyXG4gICAgLy8gfVxyXG4gICAgLy8gaW50b1xyXG4gICAgLy8ge1xyXG4gICAgLy8gICAgcGF0aDogJy9wYXRoJyxcclxuICAgIC8vICAgIGNoaWxkcmVuOiBbXHJcbiAgICAvLyAgICAgIHtcclxuICAgIC8vICAgICAgICBwYXRoOiAnJyxcclxuICAgIC8vICAgICAgICBjb21wb25lbnQ6IEZlYXR1cmVDb21wb25lbnRcclxuICAgIC8vICAgICAgfSxcclxuICAgIC8vICAgIC4uLlxyXG4gICAgLy8gICAgXVxyXG4gICAgLy8gICAgfVxyXG4gICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICBpZiAodGhpcy5sb2FkQ2hpbGRyZW4gfHwgdGhpcy5jb21wb25lbnQgfHwgdGhpcy5sb2FkQ29tcG9uZW50KSB7XHJcbiAgICAgICAgY29uc3QgcGF0aCA9IHJlcy5wYXRoO1xyXG4gICAgICAgIHJlcy5wYXRoID0gJyc7XHJcbiAgICAgICAgcmVzLnBhdGhNYXRjaCA9ICdmdWxsJztcclxuICAgICAgICByZXMuY2FuTWF0Y2ggPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgcmVzID0ge1xyXG4gICAgICAgICAgcGF0aDogcGF0aCxcclxuICAgICAgICAgIHBhdGhNYXRjaDogJ3ByZWZpeCcsXHJcbiAgICAgICAgICBjaGlsZHJlbjogW3JlcywgLi4udGhpcy5jaGlsZHJlbl0sXHJcbiAgICAgICAgICBjYW5BY3RpdmF0ZUNoaWxkOiB0aGlzLmNhbkFjdGl2YXRlQ2hpbGQsXHJcbiAgICAgICAgICBjYW5NYXRjaDogdGhpcy5nZXRDYW5NYXRjaCgpLFxyXG4gICAgICAgICAgZGF0YTogcmVzLmRhdGEsXHJcbiAgICAgICAgICBwcm92aWRlcnM6IHJlcy5wcm92aWRlcnMsXHJcbiAgICAgICAgICBjYW5BY3RpdmF0ZTogcmVzLmNhbkFjdGl2YXRlLFxyXG4gICAgICAgICAgY2FuRGVhY3RpdmF0ZTogcmVzLmNhbkRlYWN0aXZhdGUsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXMuY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKE9iamVjdC5rZXlzKHRoaXMucmVzb2x2ZXJzKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHJlcy5yZXNvbHZlID0gdGhpcy5yZXNvbHZlcnM7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucnVuR3VhcmRzQW5kUmVzb2x2ZXJzKSB7XHJcbiAgICAgIHJlcy5ydW5HdWFyZHNBbmRSZXNvbHZlcnMgPSB0aGlzLnJ1bkd1YXJkc0FuZFJlc29sdmVycztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDYW5NYXRjaCgpOiBDYW5NYXRjaEZuW10gfCB1bmRlZmluZWQge1xyXG4gICAgY29uc3QgcGFyYW1NYXAgPSB0aGlzLnJvdXRlLnBhcmFtTWFwO1xyXG4gICAgY29uc3QgaGFzTnVtYmVyUGFyYW1zID0gT2JqZWN0LmtleXMocGFyYW1NYXApLnNvbWUoXHJcbiAgICAgIChwKSA9PiBwYXJhbU1hcFtwIGFzIGtleW9mIFRdID09PSAnbnVtYmVyJ1xyXG4gICAgKTtcclxuICAgIGlmICghaGFzTnVtYmVyUGFyYW1zKSB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICBjb25zdCByb3V0ZVNlZ21lbnRMZW5ndGggPSB0aGlzLnJvdXRlLnBhdGguc3BsaXQoJy8nKS5sZW5ndGg7XHJcbiAgICBjb25zdCByZWdleCA9IHRoaXMucm91dGUucmVnZXhcclxuICAgICAgPyBuZXcgUmVnRXhwKGBeJHt0aGlzLnJvdXRlLnJlZ2V4LnNvdXJjZX0kYClcclxuICAgICAgOiB0aGlzLnJvdXRlLmFic29sdXRlUmVnZXg7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICAocm91dGU6IFJvdXRlLCBzZWdtZW50czogVXJsU2VnbWVudFtdKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcGF0aCA9IHNlZ21lbnRzXHJcbiAgICAgICAgICAuc2xpY2UoMCwgcm91dGVTZWdtZW50TGVuZ3RoKVxyXG4gICAgICAgICAgLm1hcCgocykgPT4gcy5wYXRoKVxyXG4gICAgICAgICAgLmpvaW4oJy8nKTtcclxuICAgICAgICByZXR1cm4gcmVnZXgudGVzdChwYXRoKTtcclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByb3ZpZGVUb0NoaWxkcmVuUmVjKGNoaWxkOiBSb3V0ZSkge1xyXG4gICAgaWYgKCFjaGlsZC5wcm92aWRlcnMpIHtcclxuICAgICAgY2hpbGQucHJvdmlkZXJzID0gW107XHJcbiAgICB9XHJcbiAgICB0aGlzLnByb3ZpZGVyc0ZvckNoaWxkcmVuLmZvckVhY2goKHApID0+IHtcclxuICAgICAgaWYgKHR5cGVvZiBwID09PSAnb2JqZWN0JyAmJiAncHJvdmlkZScgaW4gcCkge1xyXG4gICAgICAgIGNvbnN0IGV4aXN0cyA9IGNoaWxkLnByb3ZpZGVycyEuc29tZSgocHIpID0+IHtcclxuICAgICAgICAgIGlmICh0eXBlb2YgcHIgPT09ICdvYmplY3QnICYmICdwcm92aWRlJyBpbiBwcikge1xyXG4gICAgICAgICAgICByZXR1cm4gcHIucHJvdmlkZSA9PT0gcC5wcm92aWRlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICghZXhpc3RzKSB7XHJcbiAgICAgICAgICBjaGlsZC5wcm92aWRlcnMhLnVuc2hpZnQocCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNoaWxkLnByb3ZpZGVycyEudW5zaGlmdChwKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAoY2hpbGQuY2hpbGRyZW4pIHtcclxuICAgICAgY2hpbGQuY2hpbGRyZW4uZm9yRWFjaCgoY2gpID0+IHRoaXMucHJvdmlkZVRvQ2hpbGRyZW5SZWMoY2gpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tDaGlsZHJlbk1hdGNoKCkge1xyXG4gICAgLy8gQ2hlY2sgdGhhdCBhbGwgcm91dGVzIGFyZSBwcmVzZW50IGlmIHJvdXRlIGlzIG5vdFxyXG4gICAgLy8gbGF6eSBsb2FkZWQgbW9kdWxlLlxyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5sb2FkQ2hpbGRyZW4gJiZcclxuICAgICAgKHRoaXMucm91dGUuY2hpbGRyZW4ubGVuZ3RoID4gMCB8fCB0aGlzLmNoaWxkcmVuLmxlbmd0aCA+IDApXHJcbiAgICApIHtcclxuICAgICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3RoIDwgdGhpcy5yb3V0ZS5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgICBgUmR0Um91dGUgJHt0aGlzLnJvdXRlLm5hbWV9IGhhcyAke1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlLmNoaWxkcmVuLmxlbmd0aFxyXG4gICAgICAgICAgfSBjaGlsZHJlbiwgYnV0IFJkdEFuZ3VsYXJSb3V0ZSBoYXMgJHtcclxuICAgICAgICAgICAgdGhpcy5jaGlsZHJlbi5sZW5ndGhcclxuICAgICAgICAgIH0uIFRoZXNlIG51bWJlcnMgbXVzdCBtYXRjaC4gRGlkIHlvdSBmb3JnZXQgdG8gY2FsbCAuc2V0Q2hpbGRyZW4oKSBtZXRob2QgaW4gZ2xvYmFsIHJvdXRlcyBkZWZpbml0aW9uPyBSb3V0ZXMgd2l0aCBmb2xsb3dpbmcgbmFtZXMgc2hvdWxkIGJlIHByZXNlbnQ6ICR7dGhpcy5yb3V0ZS5jaGlsZHJlblxyXG4gICAgICAgICAgICAubWFwKChjaCkgPT4gY2gubmFtZSlcclxuICAgICAgICAgICAgLmpvaW4oJywgJyl9YFxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGggPiB0aGlzLnJvdXRlLmNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgIGBSZHRSb3V0ZSAke3RoaXMucm91dGUubmFtZX0gaGFzICR7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGUuY2hpbGRyZW4ubGVuZ3RoXHJcbiAgICAgICAgICB9IGNoaWxkcmVuLCBidXQgUmR0QW5ndWxhclJvdXRlIGhhcyAke1xyXG4gICAgICAgICAgICB0aGlzLmNoaWxkcmVuLmxlbmd0aFxyXG4gICAgICAgICAgfS4gVGhlc2UgbnVtYmVycyBtdXN0IG1hdGNoLiBEaWQgeW91IGZvcmdldCB0byBjYWxsIC5zZXRDaGlsZHJlbigpIG1ldGhvZCBpbiBmZWF0dXJlIHNoZWxsIHJvdXRlcyBkZWZpbml0aW9uPyBSb3V0ZXMgd2l0aCBmb2xsb3dpbmcgcGF0aHMgc2hvdWxkIGJlIHByZXNlbnQ6ICR7dGhpcy5jaGlsZHJlblxyXG4gICAgICAgICAgICAubWFwKChjaCkgPT4gY2gucGF0aClcclxuICAgICAgICAgICAgLmpvaW4oJywgJyl9YFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgbjEgPSB0aGlzLmNoaWxkcmVuLm1hcCgoY2gpID0+IGNoLnBhdGghKTtcclxuICAgICAgY29uc3QgbjIgPSB0aGlzLnJvdXRlLmNoaWxkcmVuLm1hcCgoY2gpID0+IGNoLnBhdGgpO1xyXG4gICAgICBuMS5zb3J0KCk7XHJcbiAgICAgIG4yLnNvcnQoKTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuMS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChuMVtpXSAhPT0gbjJbaV0pIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgICAgYFBhdGhzIG9mIGNoaWxkcmVuIHByb3ZpZGVkIGluIFJkdFJvdXRlIGFuZFxyXG4gICAgICAgICAgICBSZHRBbmd1bGFyUm91dGUgZG8gbm90IG1hdGNoLiAke24xW2ldfSAhPSAke24yW2ldfWBcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { ALWAYS_TRUE, } from './utils';\nexport class RdtRouteBase {\n _orderedParams = [];\n _paramMap = {};\n _regex = null;\n _paramMappings = [];\n _name;\n _path;\n _parent = null;\n _children = [];\n _entryDisabled = false;\n _canBeEntered = ALWAYS_TRUE;\n _data = {};\n /**\n * Data that is passed to Angular route definition.\n */\n get data() {\n return this._data;\n }\n /**\n * Regular expression route path relative to parent route.\n * Hostname excluded.\n */\n get regex() {\n return this._regex;\n }\n /**\n * Denotes disabled route entry.\n * If true, route should have no NgModule\n * or component and only serves as virtual module\n * for breadcrumb.\n */\n get entryDisabled() {\n return this._entryDisabled;\n }\n /**\n * Map of parameters and their types.\n */\n get paramMap() {\n return this._paramMap;\n }\n /**\n * Human readable name for display in breadcrumbs, title, etc.\n */\n get name() {\n return this._name;\n }\n /**\n * Path of the route relative to parent route.\n */\n get path() {\n return this._path;\n }\n /**\n * Parent route.\n */\n get parent() {\n return this._parent;\n }\n /**\n * Child routes.\n */\n get children() {\n return this._children;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvcmR0LXJvdXRlL3JkdC1yb3V0ZS1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFDTCxXQUFXLEdBSVosTUFBTSxTQUFTLENBQUM7QUFFakIsTUFBTSxPQUFPLFlBQVk7SUFDYixjQUFjLEdBQWEsRUFBRSxDQUFDO0lBQzlCLFNBQVMsR0FBb0IsRUFBRSxDQUFDO0lBQ2hDLE1BQU0sR0FBa0IsSUFBSSxDQUFDO0lBQzdCLGNBQWMsR0FBbUIsRUFBRSxDQUFDO0lBRXBDLEtBQUssQ0FBVTtJQUNmLEtBQUssQ0FBVTtJQUNmLE9BQU8sR0FBb0IsSUFBSSxDQUFDO0lBQ2hDLFNBQVMsR0FBZSxFQUFFLENBQUM7SUFDM0IsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUN2QixhQUFhLEdBQXlCLFdBQVcsQ0FBQztJQUNsRCxLQUFLLEdBQVMsRUFBRSxDQUFDO0lBRTNCOztPQUVHO0lBQ0gsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBSZHRSb3V0ZSB9IGZyb20gJy4vcmR0LXJvdXRlJztcbmltcG9ydCB7XG4gIEFMV0FZU19UUlVFLFxuICBQYXJhbU1hcHBpbmcsXG4gIFBhcmFtVHlwZU1hcCxcbiAgUmR0Q2FuQmVFbnRlcmVkRm4sXG59IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgUmR0Um91dGVCYXNlPFQgZXh0ZW5kcyBvYmplY3Q+IHtcbiAgcHJvdGVjdGVkIF9vcmRlcmVkUGFyYW1zOiBzdHJpbmdbXSA9IFtdO1xuICBwcm90ZWN0ZWQgX3BhcmFtTWFwOiBQYXJhbVR5cGVNYXA8VD4gPSB7fTtcbiAgcHJvdGVjdGVkIF9yZWdleDogUmVnRXhwIHwgbnVsbCA9IG51bGw7XG4gIHByb3RlY3RlZCBfcGFyYW1NYXBwaW5nczogUGFyYW1NYXBwaW5nW10gPSBbXTtcblxuICBwcm90ZWN0ZWQgX25hbWUhOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfcGF0aCE6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9wYXJlbnQ6IFJkdFJvdXRlIHwgbnVsbCA9IG51bGw7XG4gIHByb3RlY3RlZCBfY2hpbGRyZW46IFJkdFJvdXRlW10gPSBbXTtcbiAgcHJvdGVjdGVkIF9lbnRyeURpc2FibGVkID0gZmFsc2U7XG4gIHByb3RlY3RlZCBfY2FuQmVFbnRlcmVkOiBSZHRDYW5CZUVudGVyZWRGbjxUPiA9IEFMV0FZU19UUlVFO1xuICBwcm90ZWN0ZWQgX2RhdGE6IERhdGEgPSB7fTtcblxuICAvKipcbiAgICogRGF0YSB0aGF0IGlzIHBhc3NlZCB0byBBbmd1bGFyIHJvdXRlIGRlZmluaXRpb24uXG4gICAqL1xuICBnZXQgZGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWd1bGFyIGV4cHJlc3Npb24gcm91dGUgcGF0aCByZWxhdGl2ZSB0byBwYXJlbnQgcm91dGUuXG4gICAqIEhvc3RuYW1lIGV4Y2x1ZGVkLlxuICAgKi9cbiAgZ2V0IHJlZ2V4KCkge1xuICAgIHJldHVybiB0aGlzLl9yZWdleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZW5vdGVzIGRpc2FibGVkIHJvdXRlIGVudHJ5LlxuICAgKiBJZiB0cnVlLCByb3V0ZSBzaG91bGQgaGF2ZSBubyBOZ01vZHVsZVxuICAgKiBvciBjb21wb25lbnQgYW5kIG9ubHkgc2VydmVzIGFzIHZpcnR1YWwgbW9kdWxlXG4gICAqIGZvciBicmVhZGNydW1iLlxuICAgKi9cbiAgZ2V0IGVudHJ5RGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VudHJ5RGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogTWFwIG9mIHBhcmFtZXRlcnMgYW5kIHRoZWlyIHR5cGVzLlxuICAgKi9cbiAgZ2V0IHBhcmFtTWFwKCk6IFJlYWRvbmx5PFBhcmFtVHlwZU1hcDxUPj4ge1xuICAgIHJldHVybiB0aGlzLl9wYXJhbU1hcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBIdW1hbiByZWFkYWJsZSBuYW1lIGZvciBkaXNwbGF5IGluIGJyZWFkY3J1bWJzLCB0aXRsZSwgZXRjLlxuICAgKi9cbiAgZ2V0IG5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XG4gIH1cblxuICAvKipcbiAgICogUGF0aCBvZiB0aGUgcm91dGUgcmVsYXRpdmUgdG8gcGFyZW50IHJvdXRlLlxuICAgKi9cbiAgZ2V0IHBhdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhdGg7XG4gIH1cblxuICAvKipcbiAgICogUGFyZW50IHJvdXRlLlxuICAgKi9cbiAgZ2V0IHBhcmVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIENoaWxkIHJvdXRlcy5cbiAgICovXG4gIGdldCBjaGlsZHJlbigpIHtcbiAgICByZXR1cm4gdGhpcy5fY2hpbGRyZW47XG4gIH1cbn1cbiJdfQ==","import { runInInjectionContext } from '@angular/core';\nimport { RdtStringUtils } from '@ngrdt/utils';\nimport { RdtAngularRoute } from './rdt-angular-route';\nimport { RdtRouteBase } from './rdt-route-base';\nimport { ALWAYS_TRUE, RdtParameters, } from './utils';\nexport class RdtRoute extends RdtRouteBase {\n _absoluteRegex;\n _staticParams = {};\n _queryParams = {};\n _stateParams = {};\n /**\n * Absolute path of parent route or '/' if there is no parent.\n * Hostname excluded.\n */\n get basePath() {\n return this._parent ? this._parent.absolutePath : '/';\n }\n /**\n * Absolute path of the route. Hostname excluded.\n */\n get absolutePath() {\n return RdtStringUtils.joinPaths(this.basePath, this._path);\n }\n /**\n * Regular expression to match only this route (not children\n * or parent routes). Hostname excluded.\n */\n get absoluteRegex() {\n if (this._absoluteRegex) {\n return this._absoluteRegex;\n }\n if (!this._regex) {\n this._absoluteRegex = new RegExp('^/$');\n if (this._parent) {\n throw new Error('Nested route with empty path is not allowed.');\n }\n }\n else if (this._parent) {\n // Remove initial ^ and ending $\n const parent = this._parent.absoluteRegex.source.slice(1, -1);\n this._absoluteRegex = new RegExp('^' + RdtStringUtils.joinPaths(parent, this._regex.source) + '$');\n }\n else {\n this._absoluteRegex = new RegExp('^' + RdtStringUtils.joinPaths('/', this._regex.source) + '$');\n }\n return this._absoluteRegex;\n }\n /**\n * Statically set state params used when navigating to this instance.\n */\n get stateParams() {\n return this._stateParams;\n }\n /**\n * Statically set query params used when navigating to this instance.\n */\n get queryParams() {\n return this._queryParams;\n }\n /**\n * @param url Absolute path to test.\n * @returns True if url matches this route.\n */\n testUrl(url) {\n return this.absoluteRegex.test(url);\n }\n /**\n * Statically set parameters used when navigating to this instance.\n */\n get staticParams() {\n return { ...this._staticParams };\n }\n get hasCanBeEnteredGuard() {\n return this._canBeEntered !== ALWAYS_TRUE;\n }\n /**\n * Meta guard that is used by [rdtRouterLink] and RdtMenu\n * to determine if route can be entered.\n * @param injector Environment or custom injector.\n * @param params Optional parameters to pass to guard function.\n * @returns True if route can be entered.\n */\n canBeEntered(injector, combinedParams = {}) {\n const route = this.getStaticParams();\n let query = this._queryParams;\n let state = this._stateParams;\n if (combinedParams.params) {\n route.set(this, combinedParams.params);\n }\n if (combinedParams.route) {\n route.setAll(combinedParams.route);\n }\n if (combinedParams.query) {\n query = { ...query, ...combinedParams.query };\n }\n if (combinedParams.state) {\n state = { ...state, ...combinedParams.state };\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let current = this;\n while (current) {\n const combined = {\n params: route.get(current) ?? {},\n route: route,\n query: query,\n state: state,\n };\n if (injector) {\n const c = current;\n if (!runInInjectionContext(injector, () => c._canBeEntered(c, combined))) {\n return false;\n }\n }\n else if (!current._canBeEntered(current, combined)) {\n return false;\n }\n current = current._parent;\n }\n return true;\n }\n get canBeEnteredFn() {\n return this._canBeEntered;\n }\n /**\n * Extracts url parameters from absolute path for this path and each parent.\n */\n parseAbsoluteUrl(url) {\n const path = RdtStringUtils.stripQueryParams(url);\n const reg = this.absoluteRegex;\n const matches = reg.exec(path);\n if (matches) {\n const query = RdtStringUtils.parseQueryParams(url);\n const values = matches.slice(1).reverse();\n const obj = this.fill(values);\n const route = new RdtParameters(obj);\n const params = route.get(this) ?? {};\n return {\n params: params,\n route: route,\n query: query,\n state: {},\n };\n }\n else {\n return null;\n }\n }\n fill(values, res = {}) {\n const params = {};\n const reversedParams = this._orderedParams.slice().reverse();\n for (let i = 0; i < reversedParams.length && i < values.length; i++) {\n const key = reversedParams[i];\n const mappedKey = this._paramMappings.find((m) => m.urlName === key)?.tableName ?? key;\n let val = values[i];\n if (this._paramMap[key] === 'number') {\n val = parseInt(val);\n }\n params[mappedKey] = val;\n }\n res[this.absolutePath] = params;\n if (values.length > reversedParams.length && this._parent) {\n this._parent.fill(values.slice(reversedParams.length), res);\n }\n return res;\n }\n /**\n * Fills parameters in path with values from paramMap.\n * Use withStaticParams() beforehand in case parent paths contain parameters.\n * @param paramMap Must contain all parameters for this route.\n * @returns Absolute path.\n */\n createAbsoluteUrl(paramMap = this._staticParams) {\n if (!this._parent) {\n return this.createUrl(this.absolutePath, paramMap);\n }\n else {\n return RdtStringUtils.joinPaths(this._parent.createAbsoluteUrl(), this.createRelativeUrl(paramMap));\n }\n }\n createRelativeUrl(paramMap = this._staticParams) {\n return this.createUrl(this.path, paramMap);\n }\n createUrl(path, paramMap) {\n const paramNames = Object.keys(this._paramMap);\n paramNames.sort((a, b) => b.length - a.length);\n const extendedParamMap = { ...paramMap };\n this._paramMappings.forEach((mapping) => {\n if (mapping.tableName in paramMap) {\n extendedParamMap[mapping.urlName] = paramMap[mapping.tableName];\n }\n });\n paramNames.forEach((param) => {\n if (!(param in extendedParamMap)) {\n throw new Error(`Param ${param} is missing for route ${this.absolutePath}. Please pass object with required parameters.`);\n }\n const value = extendedParamMap[param];\n path = path.replace(`:${param}`, `${value}`);\n });\n return path;\n }\n toAngularRoute() {\n return new RdtAngularRoute(this);\n }\n /**\n * Provides static mapping for parameter names tableName -> urlName.\n * Returns new instance of RdtRoute<T> that is clone of\n * this route and its parents (NOT children).\n * @returns Clone of this route with mapped parameter names.\n */\n withParamMappings(mappings) {\n const clone = this.clone();\n clone._paramMappings = mappings;\n return clone;\n }\n /**\n * Sets parameters for itself or parents.\n * Returns new instance of RdtRoute<T> that is clone of\n * this route and its parents (NOT children).\n * @returns Clone of this route with static parameters set.\n */\n withStaticParams(param1, param2) {\n const clone = this.clone();\n if (param2) {\n const routeAbsPath = param1.absolutePath;\n let current = clone;\n while (current) {\n if (current.absolutePath === routeAbsPath) {\n current._staticParams = param2;\n }\n current = current._parent;\n }\n }\n else {\n clone._staticParams = param1;\n }\n return clone;\n }\n withQueryParams(queryParams) {\n const clone = this.clone();\n clone._queryParams = { ...queryParams };\n return clone;\n }\n withStateParams(stateParams) {\n const clone = this.clone();\n clone._stateParams = { ...stateParams };\n return clone;\n }\n /**\n * @returns Partial of object that only contains properties necessary to create this route.\n */\n extractRouteParams(row) {\n const res = {};\n this._orderedParams.forEach((param) => {\n const mapping = this._paramMappings.find((m) => m.urlName === param);\n const mappedParam = (mapping?.tableName ?? param);\n if (mappedParam in row) {\n res[mappedParam] = row[mappedParam];\n }\n });\n return res;\n }\n getStaticParams() {\n const res = new RdtParameters();\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let current = this;\n while (current) {\n res.set(current, current._staticParams);\n current = current._parent;\n }\n return res;\n }\n /**\n * @returns New instance of RdtRoute<T> that is clone of\n * this route and its parents (NOT children).\n */\n clone() {\n const clone = new RdtRoute();\n clone._name = this._name;\n clone._parent = this._parent?.clone() ?? null;\n clone._path = this.path;\n clone._entryDisabled = this._entryDisabled;\n clone._orderedParams = [...this._orderedParams];\n clone._paramMap = { ...this._paramMap };\n clone._regex = this._regex ? new RegExp(this._regex) : null;\n clone._paramMappings = this._paramMappings;\n clone._staticParams = { ...this._staticParams };\n clone._stateParams = { ...this._stateParams };\n clone._canBeEntered = this._canBeEntered;\n clone._queryParams = { ...this._queryParams };\n return clone;\n }\n setRegex() {\n const params = Object.keys(this._paramMap);\n params.sort((a, b) => b.length - a.length);\n let substituted = this.path;\n params.forEach((p) => {\n const type = this._paramMap[p];\n if (!type) {\n throw new Error('Params is not set i');\n }\n substituted = substituted.replace(`:${p}`, RdtRoute.groups[type]);\n });\n if (substituted === '') {\n this._regex = null;\n }\n else {\n this._regex = new RegExp(substituted);\n }\n }\n static fromBuilder(builder) {\n const route = new RdtRoute();\n route._name = builder.name;\n route._path = builder.path;\n route._entryDisabled = builder.entryDisabled;\n route._orderedParams = builder.orderedParams;\n route._canBeEntered = builder.canBeEntered;\n route._paramMap = builder.paramMap;\n route._regex = builder.regex ? new RegExp(builder.regex) : null;\n route._paramMappings = builder.paramMappings;\n route._children = builder.children;\n route._data = builder.data;\n route._children.forEach((child) => (child._parent = route));\n route.setRegex();\n return route;\n }\n static groups = {\n string: '([\\\\w_\\\\-]+)',\n number: '(\\\\d+)',\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL3JkdC1yb3V0ZS9yZHQtcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFZLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQ0wsV0FBVyxFQUdYLGFBQWEsR0FDZCxNQUFNLFNBQVMsQ0FBQztBQUVqQixNQUFNLE9BQU8sUUFBaUMsU0FBUSxZQUFlO0lBQzNELGNBQWMsQ0FBVTtJQUN0QixhQUFhLEdBQWUsRUFBRSxDQUFDO0lBQy9CLFlBQVksR0FBVyxFQUFFLENBQUM7SUFDMUIsWUFBWSxHQUFXLEVBQUUsQ0FBQztJQUVwQzs7O09BR0c7SUFDSCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDeEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxZQUFZO1FBQ2QsT0FBTyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLGFBQWE7UUFDZixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDN0IsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLGNB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QUMsQ0FBQyxDQUFDO1FBQzVELEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxNQUFNLENBQVUsTUFBTSxHQUFHO1FBQy9CLE1BQU0sRUFBRSxjQUFjO1FBQ3RCLE1BQU0sRUFBRSxRQUFRO0tBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciwgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFJkdFN0cmluZ1V0aWxzIH0gZnJvbSAnQG5ncmR0L3V0aWxzJztcclxuaW1wb3J0IHsgUmR0QW5ndWxhclJvdXRlIH0gZnJvbSAnLi9yZHQtYW5ndWxhci1yb3V0ZSc7XHJcbmltcG9ydCB7IFJkdFJvdXRlQmFzZSB9IGZyb20gJy4vcmR0LXJvdXRlLWJhc2UnO1xyXG5pbXBvcnQgeyBSZHRSb3V0ZUJ1aWxkZXIgfSBmcm9tICcuL3JkdC1yb3V0ZS1idWlsZGVyJztcclxuaW1wb3J0IHtcclxuICBBTFdBWVNfVFJVRSxcclxuICBQYXJhbU1hcHBpbmcsXHJcbiAgUmR0Q29tYmluZWRSb3V0ZVBhcmFtcyxcclxuICBSZHRQYXJhbWV0ZXJzLFxyXG59IGZyb20gJy4vdXRpbHMnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFJkdFJvdXRlPFQgZXh0ZW5kcyBvYmplY3QgPSBhbnk+IGV4dGVuZHMgUmR0Um91dGVCYXNlPFQ+IHtcclxuICBwcml2YXRlIF9hYnNvbHV0ZVJlZ2V4PzogUmVnRXhwO1xyXG4gIHByb3RlY3RlZCBfc3RhdGljUGFyYW1zOiBQYXJ0aWFsPFQ+ID0ge307XHJcbiAgcHJvdGVjdGVkIF9xdWVyeVBhcmFtczogUGFyYW1zID0ge307XHJcbiAgcHJvdGVjdGVkIF9zdGF0ZVBhcmFtczogUGFyYW1zID0ge307XHJcblxyXG4gIC8qKlxyXG4gICAqIEFic29sdXRlIHBhdGggb2YgcGFyZW50IHJvdXRlIG9yICcvJyBpZiB0aGVyZSBpcyBubyBwYXJlbnQuXHJcbiAgICogSG9zdG5hbWUgZXhjbHVkZWQuXHJcbiAgICovXHJcbiAgZ2V0IGJhc2VQYXRoKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGFyZW50ID8gdGhpcy5fcGFyZW50LmFic29sdXRlUGF0aCA6ICcvJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFic29sdXRlIHBhdGggb2YgdGhlIHJvdXRlLiBIb3N0bmFtZSBleGNsdWRlZC5cclxuICAgKi9cclxuICBnZXQgYWJzb2x1dGVQYXRoKCkge1xyXG4gICAgcmV0dXJuIFJkdFN0cmluZ1V0aWxzLmpvaW5QYXRocyh0aGlzLmJhc2VQYXRoLCB0aGlzLl9wYXRoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZ3VsYXIgZXhwcmVzc2lvbiB0byBtYXRjaCBvbmx5IHRoaXMgcm91dGUgKG5vdCBjaGlsZHJlblxyXG4gICAqIG9yIHBhcmVudCByb3V0ZXMpLiBIb3N0bmFtZSBleGNsdWRlZC5cclxuICAgKi9cclxuICBnZXQgYWJzb2x1dGVSZWdleCgpOiBSZWdFeHAge1xyXG4gICAgaWYgKHRoaXMuX2Fic29sdXRlUmVnZXgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2Fic29sdXRlUmVnZXg7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLl9yZWdleCkge1xyXG4gICAgICB0aGlzLl9hYnNvbHV0ZVJlZ2V4ID0gbmV3IFJlZ0V4cCgnXi8kJyk7XHJcbiAgICAgIGlmICh0aGlzLl9wYXJlbnQpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05lc3RlZCByb3V0ZSB3aXRoIGVtcHR5IHBhdGggaXMgbm90IGFsbG93ZWQuJyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5fcGFyZW50KSB7XHJcbiAgICAgIC8vIFJlbW92ZSBpbml0aWFsIF4gYW5kIGVuZGluZyAkXHJcbiAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuX3BhcmVudC5hYnNvbHV0ZVJlZ2V4LnNvdXJjZS5zbGljZSgxLCAtMSk7XHJcbiAgICAgIHRoaXMuX2Fic29sdXRlUmVnZXggPSBuZXcgUmVnRXhwKFxyXG4gICAgICAgICdeJyArIFJkdFN0cmluZ1V0aWxzLmpvaW5QYXRocyhwYXJlbnQsIHRoaXMuX3JlZ2V4LnNvdXJjZSkgKyAnJCdcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2Fic29sdXRlUmVnZXggPSBuZXcgUmVnRXhwKFxyXG4gICAgICAgICdeJyArIFJkdFN0cmluZ1V0aWxzLmpvaW5QYXRocygnLycsIHRoaXMuX3JlZ2V4LnNvdXJjZSkgKyAnJCdcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLl9hYnNvbHV0ZVJlZ2V4O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RhdGljYWxseSBzZXQgc3RhdGUgcGFyYW1zIHVzZWQgd2hlbiBuYXZpZ2F0aW5nIHRvIHRoaXMgaW5zdGFuY2UuXHJcbiAgICovXHJcbiAgZ2V0IHN0YXRlUGFyYW1zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlUGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RhdGljYWxseSBzZXQgcXVlcnkgcGFyYW1zIHVzZWQgd2hlbiBuYXZpZ2F0aW5nIHRvIHRoaXMgaW5zdGFuY2UuXHJcbiAgICovXHJcbiAgZ2V0IHF1ZXJ5UGFyYW1zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJ5UGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHBhcmFtIHVybCBBYnNvbHV0ZSBwYXRoIHRvIHRlc3QuXHJcbiAgICogQHJldHVybnMgVHJ1ZSBpZiB1cmwgbWF0Y2hlcyB0aGlzIHJvdXRlLlxyXG4gICAqL1xyXG4gIHRlc3RVcmwodXJsOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmFic29sdXRlUmVnZXgudGVzdCh1cmwpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RhdGljYWxseSBzZXQgcGFyYW1ldGVycyB1c2VkIHdoZW4gbmF2aWdhdGluZyB0byB0aGlzIGluc3RhbmNlLlxyXG4gICAqL1xyXG4gIGdldCBzdGF0aWNQYXJhbXMoKSB7XHJcbiAgICByZXR1cm4geyAuLi50aGlzLl9zdGF0aWNQYXJhbXMgfTtcclxuICB9XHJcblxyXG4gIGdldCBoYXNDYW5CZUVudGVyZWRHdWFyZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9jYW5CZUVudGVyZWQgIT09IEFMV0FZU19UUlVFO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0YSBndWFyZCB0aGF0IGlzIHVzZWQgYnkgW3JkdFJvdXRlckxpbmtdIGFuZCBSZHRNZW51XHJcbiAgICogdG8gZGV0ZXJtaW5lIGlmIHJvdXRlIGNhbiBiZSBlbnRlcmVkLlxyXG4gICAqIEBwYXJhbSBpbmplY3RvciBFbnZpcm9ubWVudCBvciBjdXN0b20gaW5qZWN0b3IuXHJcbiAgICogQHBhcmFtIHBhcmFtcyBPcHRpb25hbCBwYXJhbWV0ZXJzIHRvIHBhc3MgdG8gZ3VhcmQgZnVuY3Rpb24uXHJcbiAgICogQHJldHVybnMgVHJ1ZSBpZiByb3V0ZSBjYW4gYmUgZW50ZXJlZC5cclxuICAgKi9cclxuICBjYW5CZUVudGVyZWQoXHJcbiAgICBpbmplY3Rvcj86IEluamVjdG9yLFxyXG4gICAgY29tYmluZWRQYXJhbXM6IFBhcnRpYWw8UmR0Q29tYmluZWRSb3V0ZVBhcmFtczxUPj4gPSB7fVxyXG4gICk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgcm91dGUgPSB0aGlzLmdldFN0YXRpY1BhcmFtcygpO1xyXG4gICAgbGV0IHF1ZXJ5ID0gdGhpcy5fcXVlcnlQYXJhbXM7XHJcbiAgICBsZXQgc3RhdGUgPSB0aGlzLl9zdGF0ZVBhcmFtcztcclxuICAgIGlmIChjb21iaW5lZFBhcmFtcy5wYXJhbXMpIHtcclxuICAgICAgcm91dGUuc2V0KHRoaXMsIGNvbWJpbmVkUGFyYW1zLnBhcmFtcyk7XHJcbiAgICB9XHJcbiAgICBpZiAoY29tYmluZWRQYXJhbXMucm91dGUpIHtcclxuICAgICAgcm91dGUuc2V0QWxsKGNvbWJpbmVkUGFyYW1zLnJvdXRlKTtcclxuICAgIH1cclxuICAgIGlmIChjb21iaW5lZFBhcmFtcy5xdWVyeSkge1xyXG4gICAgICBxdWVyeSA9IHsgLi4ucXVlcnksIC4uLmNvbWJpbmVkUGFyYW1zLnF1ZXJ5IH07XHJcbiAgICB9XHJcbiAgICBpZiAoY29tYmluZWRQYXJhbXMuc3RhdGUpIHtcclxuICAgICAgc3RhdGUgPSB7IC4uLnN0YXRlLCAuLi5jb21iaW5lZFBhcmFtcy5zdGF0ZSB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhc1xyXG4gICAgbGV0IGN1cnJlbnQ6IFJkdFJvdXRlIHwgbnVsbCA9IHRoaXM7XHJcblxyXG4gICAgd2hpbGUgKGN1cnJlbnQpIHtcclxuICAgICAgY29uc3QgY29tYmluZWQ6IFJkdENvbWJpbmVkUm91dGVQYXJhbXM8VD4gPSB7XHJcbiAgICAgICAgcGFyYW1zOiByb3V0ZS5nZXQoY3VycmVudCkgPz8ge30sXHJcbiAgICAgICAgcm91dGU6IHJvdXRlLFxyXG4gICAgICAgIHF1ZXJ5OiBxdWVyeSxcclxuICAgICAgICBzdGF0ZTogc3RhdGUsXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBpZiAoaW5qZWN0b3IpIHtcclxuICAgICAgICBjb25zdCBjID0gY3VycmVudDtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAhcnVuSW5JbmplY3Rpb25Db250ZXh0KGluamVjdG9yLCAoKSA9PiBjLl9jYW5CZUVudGVyZWQoYywgY29tYmluZWQpKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICghY3VycmVudC5fY2FuQmVFbnRlcmVkKGN1cnJlbnQsIGNvbWJpbmVkKSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBjdXJyZW50ID0gY3VycmVudC5fcGFyZW50O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBnZXQgY2FuQmVFbnRlcmVkRm4oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FuQmVFbnRlcmVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXh0cmFjdHMgdXJsIHBhcmFtZXRlcnMgZnJvbSBhYnNvbHV0ZSBwYXRoIGZvciB0aGlzIHBhdGggYW5kIGVhY2ggcGFyZW50LlxyXG4gICAqL1xyXG4gIHBhcnNlQWJzb2x1dGVVcmwodXJsOiBzdHJpbmcpOiBSZHRDb21iaW5lZFJvdXRlUGFyYW1zPFQ+IHwgbnVsbCB7XHJcbiAgICBjb25zdCBwYXRoID0gUmR0U3RyaW5nVXRpbHMuc3RyaXBRdWVyeVBhcmFtcyh1cmwpO1xyXG4gICAgY29uc3QgcmVnID0gdGhpcy5hYnNvbHV0ZVJlZ2V4O1xyXG4gICAgY29uc3QgbWF0Y2hlcyA9IHJlZy5leGVjKHBhdGgpO1xyXG4gICAgaWYgKG1hdGNoZXMpIHtcclxuICAgICAgY29uc3QgcXVlcnkgPSBSZHRTdHJpbmdVdGlscy5wYXJzZVF1ZXJ5UGFyYW1zKHVybCk7XHJcbiAgICAgIGNvbnN0IHZhbHVlcyA9IG1hdGNoZXMuc2xpY2UoMSkucmV2ZXJzZSgpO1xyXG4gICAgICBjb25zdCBvYmogPSB0aGlzLmZpbGwodmFsdWVzKTtcclxuICAgICAgY29uc3Qgcm91dGUgPSBuZXcgUmR0UGFyYW1ldGVycyhvYmopO1xyXG4gICAgICBjb25zdCBwYXJhbXMgPSByb3V0ZS5nZXQodGhpcykgPz8ge307XHJcblxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHBhcmFtczogcGFyYW1zLFxyXG4gICAgICAgIHJvdXRlOiByb3V0ZSxcclxuICAgICAgICBxdWVyeTogcXVlcnksXHJcbiAgICAgICAgc3RhdGU6IHt9LFxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbGwodmFsdWVzOiBzdHJpbmdbXSwgcmVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30pIHtcclxuICAgIGNvbnN0IHBhcmFtczogeyBba2V5IGluIGtleW9mIFRdPzogc3RyaW5nIHwgbnVtYmVyIH0gPSB7fTtcclxuICAgIGNvbnN0IHJldmVyc2VkUGFyYW1zID0gdGhpcy5fb3JkZXJlZFBhcmFtcy5zbGljZSgpLnJldmVyc2UoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmV2ZXJzZWRQYXJhbXMubGVuZ3RoICYmIGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3Qga2V5ID0gcmV2ZXJzZWRQYXJhbXNbaV0gYXMga2V5b2YgVDtcclxuICAgICAgY29uc3QgbWFwcGVkS2V5ID1cclxuICAgICAgICB0aGlzLl9wYXJhbU1hcHBpbmdzLmZpbmQoKG0pID0+IG0udXJsTmFtZSA9PT0ga2V5KT8udGFibGVOYW1lID8/IGtleTtcclxuICAgICAgbGV0IHZhbDogc3RyaW5nIHwgbnVtYmVyID0gdmFsdWVzW2ldO1xyXG5cclxuICAgICAgaWYgKHRoaXMuX3BhcmFtTWFwW2tleV0gPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgdmFsID0gcGFyc2VJbnQodmFsKTtcclxuICAgICAgfVxyXG4gICAgICBwYXJhbXNbbWFwcGVkS2V5IGFzIGtleW9mIFRdID0gdmFsO1xyXG4gICAgfVxyXG4gICAgcmVzW3RoaXMuYWJzb2x1dGVQYXRoXSA9IHBhcmFtcztcclxuXHJcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IHJldmVyc2VkUGFyYW1zLmxlbmd0aCAmJiB0aGlzLl9wYXJlbnQpIHtcclxuICAgICAgdGhpcy5fcGFyZW50LmZpbGwodmFsdWVzLnNsaWNlKHJldmVyc2VkUGFyYW1zLmxlbmd0aCksIHJlcyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmlsbHMgcGFyYW1ldGVycyBpbiBwYXRoIHdpdGggdmFsdWVzIGZyb20gcGFyYW1NYXAuXHJcbiAgICogVXNlIHdpdGhTdGF0aWNQYXJhbXMoKSBiZWZvcmVoYW5kIGluIGNhc2UgcGFyZW50IHBhdGhzIGNvbnRhaW4gcGFyYW1ldGVycy5cclxuICAgKiBAcGFyYW0gcGFyYW1NYXAgTXVzdCBjb250YWluIGFsbCBwYXJhbWV0ZXJzIGZvciB0aGlzIHJvdXRlLlxyXG4gICAqIEByZXR1cm5zIEFic29sdXRlIHBhdGguXHJcbiAgICovXHJcbiAgY3JlYXRlQWJzb2x1dGVVcmwocGFyYW1NYXA6IFBhcnRpYWw8VD4gPSB0aGlzLl9zdGF0aWNQYXJhbXMpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF0aGlzLl9wYXJlbnQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVXJsKHRoaXMuYWJzb2x1dGVQYXRoLCBwYXJhbU1hcCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gUmR0U3RyaW5nVXRpbHMuam9pblBhdGhzKFxyXG4gICAgICAgIHRoaXMuX3BhcmVudC5jcmVhdGVBYnNvbHV0ZVVybCgpLFxyXG4gICAgICAgIHRoaXMuY3JlYXRlUmVsYXRpdmVVcmwocGFyYW1NYXApXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGVSZWxhdGl2ZVVybChwYXJhbU1hcDogUGFydGlhbDxUPiA9IHRoaXMuX3N0YXRpY1BhcmFtcykge1xyXG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlVXJsKHRoaXMucGF0aCwgcGFyYW1NYXApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVVcmwocGF0aDogc3RyaW5nLCBwYXJhbU1hcDogUGFydGlhbDxUPikge1xyXG4gICAgY29uc3QgcGFyYW1OYW1lcyA9IE9iamVjdC5rZXlzKHRoaXMuX3BhcmFtTWFwKTtcclxuICAgIHBhcmFtTmFtZXMuc29ydCgoYSwgYikgPT4gYi5sZW5ndGggLSBhLmxlbmd0aCk7XHJcbiAgICBjb25zdCBleHRlbmRlZFBhcmFtTWFwOiBhbnkgPSB7IC4uLnBhcmFtTWFwIH07XHJcblxyXG4gICAgdGhpcy5fcGFyYW1NYXBwaW5ncy5mb3JFYWNoKChtYXBwaW5nKSA9PiB7XHJcbiAgICAgIGlmIChtYXBwaW5nLnRhYmxlTmFtZSBpbiBwYXJhbU1hcCkge1xyXG4gICAgICAgIGV4dGVuZGVkUGFyYW1NYXBbbWFwcGluZy51cmxOYW1lXSA9IChwYXJhbU1hcCBhcyBhbnkpW1xyXG4gICAgICAgICAgbWFwcGluZy50YWJsZU5hbWVcclxuICAgICAgICBdO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBwYXJhbU5hbWVzLmZvckVhY2goKHBhcmFtKSA9PiB7XHJcbiAgICAgIGlmICghKHBhcmFtIGluIGV4dGVuZGVkUGFyYW1NYXApKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgYFBhcmFtICR7cGFyYW19IGlzIG1pc3NpbmcgZm9yIHJvdXRlICR7dGhpcy5hYnNvbHV0ZVBhdGh9LiBQbGVhc2UgcGFzcyBvYmplY3Qgd2l0aCByZXF1aXJlZCBwYXJhbWV0ZXJzLmBcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gZXh0ZW5kZWRQYXJhbU1hcFtwYXJhbSBhcyBrZXlvZiBUXTtcclxuICAgICAgcGF0aCA9IHBhdGgucmVwbGFjZShgOiR7cGFyYW19YCwgYCR7dmFsdWV9YCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gcGF0aDtcclxuICB9XHJcblxyXG4gIHRvQW5ndWxhclJvdXRlKCkge1xyXG4gICAgcmV0dXJuIG5ldyBSZHRBbmd1bGFyUm91dGU8VD4odGhpcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcm92aWRlcyBzdGF0aWMgbWFwcGluZyBmb3IgcGFyYW1ldGVyIG5hbWVzIHRhYmxlTmFtZSAtPiB1cmxOYW1lLlxyXG4gICAqIFJldHVybnMgbmV3IGluc3RhbmNlIG9mIFJkdFJvdXRlPFQ+IHRoYXQgaXMgY2xvbmUgb2ZcclxuICAgKiB0aGlzIHJvdXRlIGFuZCBpdHMgcGFyZW50cyAoTk9UIGNoaWxkcmVuKS5cclxuICAgKiBAcmV0dXJucyBDbG9uZSBvZiB0aGlzIHJvdXRlIHdpdGggbWFwcGVkIHBhcmFtZXRlciBuYW1lcy5cclxuICAgKi9cclxuICB3aXRoUGFyYW1NYXBwaW5ncyhtYXBwaW5nczogUGFyYW1NYXBwaW5nW10pIHtcclxuICAgIGNvbnN0IGNsb25lID0gdGhpcy5jbG9uZSgpO1xyXG4gICAgY2xvbmUuX3BhcmFtTWFwcGluZ3MgPSBtYXBwaW5ncztcclxuICAgIHJldHVybiBjbG9uZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgc3RhdGljIHBhcmFtZXRlcnMgZm9yIHRoaXMgcm91dGUuXHJcbiAgICogQHBhcmFtIHBhcmFtcyBTdGF0aWMgcGFyYW1ldGVycyBmb3IgdGhpcyByb3V0ZS5cclxuICAgKiBAcmV0dXJucyBDbG9uZSBvZiB0aGlzIHdpdGggc3RhdGljIHBhcmFtZXRlcnMgc2V0LlxyXG4gICAqL1xyXG4gIHdpdGhTdGF0aWNQYXJhbXMocGFyYW1zOiBUKTogUmR0Um91dGU8VD47XHJcbiAgd2l0aFN0YXRpY1BhcmFtczxUMiBleHRlbmRzIG9iamVjdD4oXHJcbiAgICByb3V0ZTogUmR0Um91dGU8VDI+LFxyXG4gICAgcGFyYW1zOiBUMlxyXG4gICk6IFJkdFJvdXRlPFQ+O1xyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHBhcmFtZXRlcnMgZm9yIGl0c2VsZiBvciBwYXJlbnRzLlxyXG4gICAqIFJldHVybnMgbmV3IGluc3RhbmNlIG9mIFJkdFJvdXRlPFQ+IHRoYXQgaXMgY2xvbmUgb2ZcclxuICAgKiB0aGlzIHJvdXRlIGFuZCBpdHMgcGFyZW50cyAoTk9UIGNoaWxkcmVuKS5cclxuICAgKiBAcmV0dXJucyBDbG9uZSBvZiB0aGlzIHJvdXRlIHdpdGggc3RhdGljIHBhcmFtZXRlcnMgc2V0LlxyXG4gICAqL1xyXG4gIHdpdGhTdGF0aWNQYXJhbXM8VDIgZXh0ZW5kcyBvYmplY3Q+KHBhcmFtMTogUmR0Um91dGU8VDI+IHwgVCwgcGFyYW0yPzogVDIpIHtcclxuICAgIGNvbnN0IGNsb25lID0gdGhpcy5jbG9uZSgpO1xyXG5cclxuICAgIGlmIChwYXJhbTIpIHtcclxuICAgICAgY29uc3Qgcm91dGVBYnNQYXRoID0gKHBhcmFtMSBhcyBSZHRSb3V0ZTxUMj4pLmFic29sdXRlUGF0aDtcclxuICAgICAgbGV0IGN1cnJlbnQ6IFJkdFJvdXRlIHwgbnVsbCA9IGNsb25lO1xyXG5cclxuICAgICAgd2hpbGUgKGN1cnJlbnQpIHtcclxuICAgICAgICBpZiAoY3VycmVudC5hYnNvbHV0ZVBhdGggPT09IHJvdXRlQWJzUGF0aCkge1xyXG4gICAgICAgICAgY3VycmVudC5fc3RhdGljUGFyYW1zID0gcGFyYW0yO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjdXJyZW50ID0gY3VycmVudC5fcGFyZW50O1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjbG9uZS5fc3RhdGljUGFyYW1zID0gcGFyYW0xIGFzIFQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2xvbmU7XHJcbiAgfVxyXG5cclxuICB3aXRoUXVlcnlQYXJhbXMocXVlcnlQYXJhbXM6IFBhcmFtcykge1xyXG4gICAgY29uc3QgY2xvbmUgPSB0aGlzLmNsb25lKCk7XHJcbiAgICBjbG9uZS5fcXVlcnlQYXJhbXMgPSB7IC4uLnF1ZXJ5UGFyYW1zIH07XHJcbiAgICByZXR1cm4gY2xvbmU7XHJcbiAgfVxyXG5cclxuICB3aXRoU3RhdGVQYXJhbXMoc3RhdGVQYXJhbXM6IFBhcmFtcykge1xyXG4gICAgY29uc3QgY2xvbmUgPSB0aGlzLmNsb25lKCk7XHJcbiAgICBjbG9uZS5fc3RhdGVQYXJhbXMgPSB7IC4uLnN0YXRlUGFyYW1zIH07XHJcbiAgICByZXR1cm4gY2xvbmU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcmV0dXJucyBQYXJ0aWFsIG9mIG9iamVjdCB0aGF0IG9ubHkgY29udGFpbnMgcHJvcGVydGllcyBuZWNlc3NhcnkgdG8gY3JlYXRlIHRoaXMgcm91dGUuXHJcbiAgICovXHJcbiAgZXh0cmFjdFJvdXRlUGFyYW1zKHJvdzogVCk6IFBhcnRpYWw8VD4ge1xyXG4gICAgY29uc3QgcmVzOiBQYXJ0aWFsPFQ+ID0ge307XHJcblxyXG4gICAgdGhpcy5fb3JkZXJlZFBhcmFtcy5mb3JFYWNoKChwYXJhbSkgPT4ge1xyXG4gICAgICBjb25zdCBtYXBwaW5nID0gdGhpcy5fcGFyYW1NYXBwaW5ncy5maW5kKChtKSA9PiBtLnVybE5hbWUgPT09IHBhcmFtKTtcclxuICAgICAgY29uc3QgbWFwcGVkUGFyYW0gPSAobWFwcGluZz8udGFibGVOYW1lID8/IHBhcmFtKSBhcyBrZXlvZiBUO1xyXG4gICAgICBpZiAobWFwcGVkUGFyYW0gaW4gcm93KSB7XHJcbiAgICAgICAgcmVzW21hcHBlZFBhcmFtXSA9IHJvd1ttYXBwZWRQYXJhbV07XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiByZXM7XHJcbiAgfVxyXG5cclxuICBnZXRTdGF0aWNQYXJhbXMoKTogUmR0UGFyYW1ldGVycyB7XHJcbiAgICBjb25zdCByZXMgPSBuZXcgUmR0UGFyYW1ldGVycygpO1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzXHJcbiAgICBsZXQgY3VycmVudDogUmR0Um91dGUgfCBudWxsID0gdGhpcztcclxuICAgIHdoaWxlIChjdXJyZW50KSB7XHJcbiAgICAgIHJlcy5zZXQoY3VycmVudCwgY3VycmVudC5fc3RhdGljUGFyYW1zKTtcclxuICAgICAgY3VycmVudCA9IGN1cnJlbnQuX3BhcmVudDtcclxuICAgIH1cclxuICAgIHJldHVybiByZXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcmV0dXJucyBOZXcgaW5zdGFuY2Ugb2YgUmR0Um91dGU8VD4gdGhhdCBpcyBjbG9uZSBvZlxyXG4gICAqIHRoaXMgcm91dGUgYW5kIGl0cyBwYXJlbnRzIChOT1QgY2hpbGRyZW4pLlxyXG4gICAqL1xyXG4gIGNsb25lKCkge1xyXG4gICAgY29uc3QgY2xvbmUgPSBuZXcgUmR0Um91dGU8VD4oKTtcclxuICAgIGNsb25lLl9uYW1lID0gdGhpcy5fbmFtZTtcclxuICAgIGNsb25lLl9wYXJlbnQgPSB0aGlzLl9wYXJlbnQ/LmNsb25lKCkgPz8gbnVsbDtcclxuICAgIGNsb25lLl9wYXRoID0gdGhpcy5wYXRoO1xyXG4gICAgY2xvbmUuX2VudHJ5RGlzYWJsZWQgPSB0aGlzLl9lbnRyeURpc2FibGVkO1xyXG4gICAgY2xvbmUuX29yZGVyZWRQYXJhbXMgPSBbLi4udGhpcy5fb3JkZXJlZFBhcmFtc107XHJcbiAgICBjbG9uZS5fcGFyYW1NYXAgPSB7IC4uLnRoaXMuX3BhcmFtTWFwIH07XHJcbiAgICBjbG9uZS5fcmVnZXggPSB0aGlzLl9yZWdleCA/IG5ldyBSZWdFeHAodGhpcy5fcmVnZXgpIDogbnVsbDtcclxuICAgIGNsb25lLl9wYXJhbU1hcHBpbmdzID0gdGhpcy5fcGFyYW1NYXBwaW5ncztcclxuICAgIGNsb25lLl9zdGF0aWNQYXJhbXMgPSB7IC4uLnRoaXMuX3N0YXRpY1BhcmFtcyB9O1xyXG4gICAgY2xvbmUuX3N0YXRlUGFyYW1zID0geyAuLi50aGlzLl9zdGF0ZVBhcmFtcyB9O1xyXG4gICAgY2xvbmUuX2NhbkJlRW50ZXJlZCA9IHRoaXMuX2NhbkJlRW50ZXJlZDtcclxuICAgIGNsb25lLl9xdWVyeVBhcmFtcyA9IHsgLi4udGhpcy5fcXVlcnlQYXJhbXMgfTtcclxuICAgIHJldHVybiBjbG9uZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0UmVnZXgoKSB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSBPYmplY3Qua2V5cyh0aGlzLl9wYXJhbU1hcCk7XHJcbiAgICBwYXJhbXMuc29ydCgoYSwgYikgPT4gYi5sZW5ndGggLSBhLmxlbmd0aCk7XHJcbiAgICBsZXQgc3Vic3RpdHV0ZWQgPSB0aGlzLnBhdGg7XHJcbiAgICBwYXJhbXMuZm9yRWFjaCgocCkgPT4ge1xyXG4gICAgICBjb25zdCB0eXBlID0gdGhpcy5fcGFyYW1NYXBbcCBhcyBrZXlvZiBUXTtcclxuICAgICAgaWYgKCF0eXBlKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYXJhbXMgaXMgbm90IHNldCBpJyk7XHJcbiAgICAgIH1cclxuICAgICAgc3Vic3RpdHV0ZWQgPSBzdWJzdGl0dXRlZC5yZXBsYWNlKGA6JHtwfWAsIFJkdFJvdXRlLmdyb3Vwc1t0eXBlXSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoc3Vic3RpdHV0ZWQgPT09ICcnKSB7XHJcbiAgICAgIHRoaXMuX3JlZ2V4ID0gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX3JlZ2V4ID0gbmV3IFJlZ0V4cChzdWJzdGl0dXRlZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZnJvbUJ1aWxkZXI8VCBleHRlbmRzIG9iamVjdD4oYnVpbGRlcjogUmR0Um91dGVCdWlsZGVyPFQ+KSB7XHJcbiAgICBjb25zdCByb3V0ZSA9IG5ldyBSZHRSb3V0ZTxUPigpO1xyXG4gICAgcm91dGUuX25hbWUgPSBidWlsZGVyLm5hbWU7XHJcbiAgICByb3V0ZS5fcGF0aCA9IGJ1aWxkZXIucGF0aDtcclxuICAgIHJvdXRlLl9lbnRyeURpc2FibGVkID0gYnVpbGRlci5lbnRyeURpc2FibGVkO1xyXG4gICAgcm91dGUuX29yZGVyZWRQYXJhbXMgPSBidWlsZGVyLm9yZGVyZWRQYXJhbXM7XHJcbiAgICByb3V0ZS5fY2FuQmVFbnRlcmVkID0gYnVpbGRlci5jYW5CZUVudGVyZWQ7XHJcbiAgICByb3V0ZS5fcGFyYW1NYXAgPSBidWlsZGVyLnBhcmFtTWFwO1xyXG4gICAgcm91dGUuX3JlZ2V4ID0gYnVpbGRlci5yZWdleCA/IG5ldyBSZWdFeHAoYnVpbGRlci5yZWdleCkgOiBudWxsO1xyXG4gICAgcm91dGUuX3BhcmFtTWFwcGluZ3MgPSBidWlsZGVyLnBhcmFtTWFwcGluZ3M7XHJcbiAgICByb3V0ZS5fY2hpbGRyZW4gPSBidWlsZGVyLmNoaWxkcmVuO1xyXG4gICAgcm91dGUuX2RhdGEgPSBidWlsZGVyLmRhdGE7XHJcbiAgICByb3V0ZS5fY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IChjaGlsZC5fcGFyZW50ID0gcm91dGUpKTtcclxuICAgIHJvdXRlLnNldFJlZ2V4KCk7XHJcbiAgICByZXR1cm4gcm91dGU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBncm91cHMgPSB7XHJcbiAgICBzdHJpbmc6ICcoW1xcXFx3X1xcXFwtXSspJyxcclxuICAgIG51bWJlcjogJyhcXFxcZCspJyxcclxuICB9O1xyXG59XHJcbiJdfQ==","import { RdtRoute } from './rdt-route';\nimport { RdtRouteBase } from './rdt-route-base';\nconst DEFAULT_PARAM_TYPE = 'number';\nexport class RdtRouteBuilder extends RdtRouteBase {\n get canBeEntered() {\n return this._canBeEntered;\n }\n get orderedParams() {\n return this._orderedParams;\n }\n get paramMappings() {\n return this._paramMappings;\n }\n /**\n * CanBeEntered function is synchronous function which\n * lets framework hide menu buttons and disable links.\n * Function is run in environment injection context, so\n * you can inject global services, tokens, etc.\n * @param fn\n */\n withCanBeEntered(fn) {\n this._canBeEntered = fn;\n return this;\n }\n /**\n * @deprecated Use withCanBeEntered() instead.\n */\n setCanBeEntered(fn) {\n return this.withCanBeEntered(fn);\n }\n /**\n * Entry disabled route will generate disabled breadcrumb.\n * It should not have any component nor module added to it.\n * @param value\n * @returns\n */\n withEntryDisabled(value = true) {\n this._entryDisabled = value;\n return this;\n }\n /**\n * @deprecated Use withEntryDisabled() instead.\n */\n setEntryDisabled(value = true) {\n return this.withEntryDisabled(value);\n }\n /**\n * Sets path relative to parent. It is defined the same way as Angular route path including parameters.\n * You need to call setParam() for each parameter you use in the path.\n */\n withPath(path) {\n this._path = path;\n const s = path.split('/');\n const params = [];\n s.forEach((part) => {\n if (part.includes(':')) {\n const param = part.split(':')[1];\n if (param) {\n params.push(param);\n if (!this._paramMap[param]) {\n this._paramMap[param] = DEFAULT_PARAM_TYPE;\n }\n }\n }\n });\n this._orderedParams = params;\n return this;\n }\n /**\n * @deprecated Use withPath() instead.\n */\n setPath(path) {\n return this.withPath(path);\n }\n /**\n * Sets Angular route data.\n * @param data Angular route data object. Breadcrumb key is merged into it.\n */\n withData(data) {\n this._data = data;\n return this;\n }\n /**\n * @deprecated Use withData() instead.\n */\n setData(data) {\n return this.withData(data);\n }\n /**\n * Defines parameter type and lets framework parse it.\n * @param paramName\n * @param type\n */\n withParam(paramName, type) {\n this._paramMap[paramName] = type;\n return this;\n }\n /**\n * @deprecated Use withParam() instead.\n */\n setParam(paramName, type) {\n return this.withParam(paramName, type);\n }\n /**\n * Sets name to display in breadcrumb, etc.\n */\n withName(name) {\n this._name = name;\n return this;\n }\n /**\n * @deprecated Use withName() instead.\n */\n setName(name) {\n return this.withName(name);\n }\n /**\n * Call .build() on children before you call this method!\n */\n withChildren(...children) {\n this._children = children;\n return this;\n }\n /**\n * @deprecated Use withChildren() instead.\n */\n setChildren(...children) {\n return this.withChildren(...children);\n }\n build() {\n if (typeof this._path !== 'string') {\n throw new Error('Please provide path for route. Empty string is acceptable.');\n }\n return RdtRoute.fromBuilder(this);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvcmR0LXJvdXRlL3JkdC1yb3V0ZS1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2hELE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFDO0FBRXBDLE1BQU0sT0FBTyxlQUF3QyxTQUFRLFlBQWU7SUFDMUUsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsZ0JBQWdCLENBQUMsRUFBd0I7UUFDdkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxlQUFlLENBQUMsRUFBd0I7UUFDdEMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsaUJBQWlCLENBQUMsS0FBSyxHQUFHLElBQUk7UUFDNUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcsSUFBSTtRQUMzQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUSxDQUFDLElBQVk7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2pCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBWSxDQUFDO2dCQUM1QyxJQUFJLEtBQUssRUFBRSxDQUFDO29CQUNWLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBZSxDQUFDLENBQUM7b0JBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsa0JBQWtCLENBQUM7b0JBQzdDLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNEOztPQUVHO0lBQ0gsT0FBTyxDQUFDLElBQVk7UUFDbEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRLENBQUMsSUFBVTtRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxJQUFVO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxTQUFrQixFQUFFLElBQXlCO1FBQ3JELElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNEOztPQUVHO0lBQ0gsUUFBUSxDQUFDLFNBQWtCLEVBQUUsSUFBeUI7UUFDcEQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRLENBQUMsSUFBWTtRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxJQUFZO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZLENBQUMsR0FBRyxRQUFvQjtRQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxHQUFHLFFBQW9CO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FDYiw0REFBNEQsQ0FDN0QsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFJkdFJvdXRlIH0gZnJvbSAnLi9yZHQtcm91dGUnO1xyXG5pbXBvcnQgeyBSZHRSb3V0ZUJhc2UgfSBmcm9tICcuL3JkdC1yb3V0ZS1iYXNlJztcclxuaW1wb3J0IHsgUmR0Q2FuQmVFbnRlcmVkRm4gfSBmcm9tICcuL3V0aWxzJztcclxuXHJcbmNvbnN0IERFRkFVTFRfUEFSQU1fVFlQRSA9ICdudW1iZXInO1xyXG5cclxuZXhwb3J0IGNsYXNzIFJkdFJvdXRlQnVpbGRlcjxUIGV4dGVuZHMgb2JqZWN0ID0gYW55PiBleHRlbmRzIFJkdFJvdXRlQmFzZTxUPiB7XHJcbiAgZ2V0IGNhbkJlRW50ZXJlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9jYW5CZUVudGVyZWQ7XHJcbiAgfVxyXG5cclxuICBnZXQgb3JkZXJlZFBhcmFtcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9vcmRlcmVkUGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBhcmFtTWFwcGluZ3MoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGFyYW1NYXBwaW5ncztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbkJlRW50ZXJlZCBmdW5jdGlvbiBpcyBzeW5jaHJvbm91cyBmdW5jdGlvbiB3aGljaFxyXG4gICAqIGxldHMgZnJhbWV3b3JrIGhpZGUgbWVudSBidXR0b25zIGFuZCBkaXNhYmxlIGxpbmtzLlxyXG4gICAqIEZ1bmN0aW9uIGlzIHJ1biBpbiBlbnZpcm9ubWVudCBpbmplY3Rpb24gY29udGV4dCwgc29cclxuICAgKiB5b3UgY2FuIGluamVjdCBnbG9iYWwgc2VydmljZXMsIHRva2VucywgZXRjLlxyXG4gICAqIEBwYXJhbSBmblxyXG4gICAqL1xyXG4gIHdpdGhDYW5CZUVudGVyZWQoZm46IFJkdENhbkJlRW50ZXJlZEZuPFQ+KSB7XHJcbiAgICB0aGlzLl9jYW5CZUVudGVyZWQgPSBmbjtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugd2l0aENhbkJlRW50ZXJlZCgpIGluc3RlYWQuXHJcbiAgICovXHJcbiAgc2V0Q2FuQmVFbnRlcmVkKGZuOiBSZHRDYW5CZUVudGVyZWRGbjxUPikge1xyXG4gICAgcmV0dXJuIHRoaXMud2l0aENhbkJlRW50ZXJlZChmbik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbnRyeSBkaXNhYmxlZCByb3V0ZSB3aWxsIGdlbmVyYXRlIGRpc2FibGVkIGJyZWFkY3J1bWIuXHJcbiAgICogSXQgc2hvdWxkIG5vdCBoYXZlIGFueSBjb21wb25lbnQgbm9yIG1vZHVsZSBhZGRlZCB0byBpdC5cclxuICAgKiBAcGFyYW0gdmFsdWVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIHdpdGhFbnRyeURpc2FibGVkKHZhbHVlID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5fZW50cnlEaXNhYmxlZCA9IHZhbHVlO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoRW50cnlEaXNhYmxlZCgpIGluc3RlYWQuXHJcbiAgICovXHJcbiAgc2V0RW50cnlEaXNhYmxlZCh2YWx1ZSA9IHRydWUpIHtcclxuICAgIHJldHVybiB0aGlzLndpdGhFbnRyeURpc2FibGVkKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgcGF0aCByZWxhdGl2ZSB0byBwYXJlbnQuIEl0IGlzIGRlZmluZWQgdGhlIHNhbWUgd2F5IGFzIEFuZ3VsYXIgcm91dGUgcGF0aCBpbmNsdWRpbmcgcGFyYW1ldGVycy5cclxuICAgKiBZb3UgbmVlZCB0byBjYWxsIHNldFBhcmFtKCkgZm9yIGVhY2ggcGFyYW1ldGVyIHlvdSB1c2UgaW4gdGhlIHBhdGguXHJcbiAgICovXHJcbiAgd2l0aFBhdGgocGF0aDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9wYXRoID0gcGF0aDtcclxuICAgIGNvbnN0IHMgPSBwYXRoLnNwbGl0KCcvJyk7XHJcbiAgICBjb25zdCBwYXJhbXM6IHN0cmluZ1tdID0gW107XHJcbiAgICBzLmZvckVhY2goKHBhcnQpID0+IHtcclxuICAgICAgaWYgKHBhcnQuaW5jbHVkZXMoJzonKSkge1xyXG4gICAgICAgIGNvbnN0IHBhcmFtID0gcGFydC5zcGxpdCgnOicpWzFdIGFzIGtleW9mIFQ7XHJcbiAgICAgICAgaWYgKHBhcmFtKSB7XHJcbiAgICAgICAgICBwYXJhbXMucHVzaChwYXJhbSBhcyBzdHJpbmcpO1xyXG4gICAgICAgICAgaWYgKCF0aGlzLl9wYXJhbU1hcFtwYXJhbV0pIHtcclxuICAgICAgICAgICAgdGhpcy5fcGFyYW1NYXBbcGFyYW1dID0gREVGQVVMVF9QQVJBTV9UWVBFO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9vcmRlcmVkUGFyYW1zID0gcGFyYW1zO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoUGF0aCgpIGluc3RlYWQuXHJcbiAgICovXHJcbiAgc2V0UGF0aChwYXRoOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLndpdGhQYXRoKHBhdGgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyBBbmd1bGFyIHJvdXRlIGRhdGEuXHJcbiAgICogQHBhcmFtIGRhdGEgQW5ndWxhciByb3V0ZSBkYXRhIG9iamVjdC4gQnJlYWRjcnVtYiBrZXkgaXMgbWVyZ2VkIGludG8gaXQuXHJcbiAgICovXHJcbiAgd2l0aERhdGEoZGF0YTogRGF0YSkge1xyXG4gICAgdGhpcy5fZGF0YSA9IGRhdGE7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHdpdGhEYXRhKCkgaW5zdGVhZC5cclxuICAgKi9cclxuICBzZXREYXRhKGRhdGE6IERhdGEpIHtcclxuICAgIHJldHVybiB0aGlzLndpdGhEYXRhKGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVmaW5lcyBwYXJhbWV0ZXIgdHlwZSBhbmQgbGV0cyBmcmFtZXdvcmsgcGFyc2UgaXQuXHJcbiAgICogQHBhcmFtIHBhcmFtTmFtZVxyXG4gICAqIEBwYXJhbSB0eXBlXHJcbiAgICovXHJcbiAgd2l0aFBhcmFtKHBhcmFtTmFtZToga2V5b2YgVCwgdHlwZTogJ3N0cmluZycgfCAnbnVtYmVyJykge1xyXG4gICAgdGhpcy5fcGFyYW1NYXBbcGFyYW1OYW1lXSA9IHR5cGU7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHdpdGhQYXJhbSgpIGluc3RlYWQuXHJcbiAgICovXHJcbiAgc2V0UGFyYW0ocGFyYW1OYW1lOiBrZXlvZiBULCB0eXBlOiAnc3RyaW5nJyB8ICdudW1iZXInKSB7XHJcbiAgICByZXR1cm4gdGhpcy53aXRoUGFyYW0ocGFyYW1OYW1lLCB0eXBlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgbmFtZSB0byBkaXNwbGF5IGluIGJyZWFkY3J1bWIsIGV0Yy5cclxuICAgKi9cclxuICB3aXRoTmFtZShuYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX25hbWUgPSBuYW1lO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoTmFtZSgpIGluc3RlYWQuXHJcbiAgICovXHJcbiAgc2V0TmFtZShuYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLndpdGhOYW1lKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2FsbCAuYnVpbGQoKSBvbiBjaGlsZHJlbiBiZWZvcmUgeW91IGNhbGwgdGhpcyBtZXRob2QhXHJcbiAgICovXHJcbiAgd2l0aENoaWxkcmVuKC4uLmNoaWxkcmVuOiBSZHRSb3V0ZVtdKSB7XHJcbiAgICB0aGlzLl9jaGlsZHJlbiA9IGNoaWxkcmVuO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoQ2hpbGRyZW4oKSBpbnN0ZWFkLlxyXG4gICAqL1xyXG4gIHNldENoaWxkcmVuKC4uLmNoaWxkcmVuOiBSZHRSb3V0ZVtdKSB7XHJcbiAgICByZXR1cm4gdGhpcy53aXRoQ2hpbGRyZW4oLi4uY2hpbGRyZW4pO1xyXG4gIH1cclxuXHJcbiAgYnVpbGQoKSB7XHJcbiAgICBpZiAodHlwZW9mIHRoaXMuX3BhdGggIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAnUGxlYXNlIHByb3ZpZGUgcGF0aCBmb3Igcm91dGUuIEVtcHR5IHN0cmluZyBpcyBhY2NlcHRhYmxlLidcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBSZHRSb3V0ZS5mcm9tQnVpbGRlcih0aGlzKTtcclxuICB9XHJcbn1cclxuIl19","import { DestroyRef, Directive, ElementRef, Input, Renderer2, inject, } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Router, RouterModule, } from '@angular/router';\nimport { filter } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nconst EXACT_TRUE_OPTS = {\n paths: 'exact',\n queryParams: 'exact',\n fragment: 'ignored',\n matrixParams: 'ignored',\n};\nconst EXACT_FALSE_OPTS = {\n paths: 'subset',\n queryParams: 'subset',\n fragment: 'ignored',\n matrixParams: 'ignored',\n};\n/**\n * Directive that appends class to host if any of the watched routes is active.\n */\nexport class RdtAnyRouteActiveDirective {\n destroyRef = inject(DestroyRef);\n router = inject(Router);\n renderer = inject(Renderer2);\n elRef = inject(ElementRef);\n set anyRouteActive(data) {\n this.classes = this.parseClasses(data);\n }\n watchedRoutes = [];\n set anyRouteActiveOptions(value) {\n this._anyRouteActiveOptions = this.parseOptions(value);\n }\n _anyRouteActiveOptions = EXACT_FALSE_OPTS;\n ariaCurrentWhenActive;\n get isActive() {\n return this._isActive;\n }\n _isActive = false;\n classes = [];\n ngOnInit() {\n this.update();\n this.listenRouterEvents();\n }\n ngOnChanges(changes) {\n if (changes['anyRouteActive']?.previousValue) {\n const prev = this.parseClasses(changes['anyRouteActive'].previousValue);\n prev.forEach((c) => this.removeClass(c));\n }\n this.update();\n }\n update() {\n this._isActive = this.watchedRoutes.some((route) => {\n const param = typeof route === 'string' ? route : this.router.createUrlTree(route);\n return this.router.isActive(param, this._anyRouteActiveOptions);\n });\n this.setClasses();\n this.setAriaCurrent();\n }\n setAriaCurrent() {\n const el = this.elRef.nativeElement;\n if (this._isActive && this.ariaCurrentWhenActive !== undefined) {\n const value = this.ariaCurrentWhenActive.toString();\n this.renderer.setAttribute(el, 'aria-current', value);\n }\n else {\n this.renderer.removeAttribute(el, 'aria-current');\n }\n }\n setClasses() {\n if (this._isActive) {\n this.classes.forEach((c) => this.addClass(c));\n }\n else {\n this.classes.forEach((c) => this.removeClass(c));\n }\n }\n addClass(className) {\n this.renderer.addClass(this.elRef.nativeElement, className);\n }\n removeClass(className) {\n this.renderer.removeClass(this.elRef.nativeElement, className);\n }\n listenRouterEvents() {\n this.router.events\n .pipe(filter((ev) => ev instanceof NavigationEnd), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.update());\n }\n parseClasses(data) {\n const classes = Array.isArray(data) ? data : data.split(' ');\n return classes.filter((c) => !!c);\n }\n parseOptions(input) {\n if ('exact' in input) {\n if (input.exact) {\n return EXACT_TRUE_OPTS;\n }\n else {\n return EXACT_FALSE_OPTS;\n }\n }\n else {\n return input;\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtAnyRouteActiveDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.0\", type: RdtAnyRouteActiveDirective, isStandalone: true, selector: \"[rdtAnyRouteActive]\", inputs: { anyRouteActive: [\"rdtAnyRouteActive\", \"anyRouteActive\"], watchedRoutes: \"watchedRoutes\", anyRouteActiveOptions: \"anyRouteActiveOptions\", ariaCurrentWhenActive: \"ariaCurrentWhenActive\" }, providers: [RouterModule], usesOnChanges: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtAnyRouteActiveDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[rdtAnyRouteActive]',\n standalone: true,\n providers: [RouterModule],\n }]\n }], propDecorators: { anyRouteActive: [{\n type: Input,\n args: [{ required: true, alias: 'rdtAnyRouteActive' }]\n }], watchedRoutes: [{\n type: Input,\n args: [{ required: true }]\n }], anyRouteActiveOptions: [{\n type: Input\n }], ariaCurrentWhenActive: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWFueS1yb3V0ZS1hY3RpdmUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL2RpcmVjdGl2ZXMvcmR0LWFueS1yb3V0ZS1hY3RpdmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsU0FBUyxFQUVULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBRUwsYUFBYSxFQUNiLE1BQU0sRUFDTixZQUFZLEdBQ2IsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUU5QixNQUFNLGVBQWUsR0FBeUI7SUFDNUMsS0FBSyxFQUFFLE9BQU87SUFDZCxXQUFXLEVBQUUsT0FBTztJQUNwQixRQUFRLEVBQUUsU0FBUztJQUNuQixZQUFZLEVBQUUsU0FBUztDQUN4QixDQUFDO0FBRUYsTUFBTSxnQkFBZ0IsR0FBeUI7SUFDN0MsS0FBSyxFQUFFLFFBQVE7SUFDZixXQUFXLEVBQUUsUUFBUTtJQUNyQixRQUFRLEVBQUUsU0FBUztJQUNuQixZQUFZLEVBQUUsU0FBUztDQUN4QixDQUFDO0FBRUY7O0dBRUc7QUFNSCxNQUFNLE9BQU8sMEJBQTBCO0lBQ3BCLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QixRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdCLEtBQUssR0FBNEIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXJFLElBQ0ksY0FBYyxDQUFDLElBQXVCO1FBQ3hDLElB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QUEwQix1UUFGMUIsQ0FBQyxZQUFZLENBQUM7OzJGQUVkLDBCQUEwQjtrQkFMdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUMxQjs4QkFRSyxjQUFjO3NCQURqQixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUU7Z0JBTXJELGFBQWE7c0JBRFosS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSXJCLHFCQUFxQjtzQkFEeEIsS0FBSztnQkFPTixxQkFBcUI7c0JBRHBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIERlc3Ryb3lSZWYsXHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBSZW5kZXJlcjIsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBpbmplY3QsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHtcclxuICBJc0FjdGl2ZU1hdGNoT3B0aW9ucyxcclxuICBOYXZpZ2F0aW9uRW5kLFxyXG4gIFJvdXRlcixcclxuICBSb3V0ZXJNb2R1bGUsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcyc7XHJcblxyXG5jb25zdCBFWEFDVF9UUlVFX09QVFM6IElzQWN0aXZlTWF0Y2hPcHRpb25zID0ge1xyXG4gIHBhdGhzOiAnZXhhY3QnLFxyXG4gIHF1ZXJ5UGFyYW1zOiAnZXhhY3QnLFxyXG4gIGZyYWdtZW50OiAnaWdub3JlZCcsXHJcbiAgbWF0cml4UGFyYW1zOiAnaWdub3JlZCcsXHJcbn07XHJcblxyXG5jb25zdCBFWEFDVF9GQUxTRV9PUFRTOiBJc0FjdGl2ZU1hdGNoT3B0aW9ucyA9IHtcclxuICBwYXRoczogJ3N1YnNldCcsXHJcbiAgcXVlcnlQYXJhbXM6ICdzdWJzZXQnLFxyXG4gIGZyYWdtZW50OiAnaWdub3JlZCcsXHJcbiAgbWF0cml4UGFyYW1zOiAnaWdub3JlZCcsXHJcbn07XHJcblxyXG4vKipcclxuICogRGlyZWN0aXZlIHRoYXQgYXBwZW5kcyBjbGFzcyB0byBob3N0IGlmIGFueSBvZiB0aGUgd2F0Y2hlZCByb3V0ZXMgaXMgYWN0aXZlLlxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbcmR0QW55Um91dGVBY3RpdmVdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHByb3ZpZGVyczogW1JvdXRlck1vZHVsZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZHRBbnlSb3V0ZUFjdGl2ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBlbFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gPSBpbmplY3QoRWxlbWVudFJlZik7XHJcblxyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlLCBhbGlhczogJ3JkdEFueVJvdXRlQWN0aXZlJyB9KVxyXG4gIHNldCBhbnlSb3V0ZUFjdGl2ZShkYXRhOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgdGhpcy5jbGFzc2VzID0gdGhpcy5wYXJzZUNsYXNzZXMoZGF0YSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxyXG4gIHdhdGNoZWRSb3V0ZXM6IChzdHJpbmcgfCBzdHJpbmdbXSlbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBhbnlSb3V0ZUFjdGl2ZU9wdGlvbnModmFsdWU6IHsgZXhhY3Q6IGJvb2xlYW4gfSB8IElzQWN0aXZlTWF0Y2hPcHRpb25zKSB7XHJcbiAgICB0aGlzLl9hbnlSb3V0ZUFjdGl2ZU9wdGlvbnMgPSB0aGlzLnBhcnNlT3B0aW9ucyh2YWx1ZSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2FueVJvdXRlQWN0aXZlT3B0aW9uczogSXNBY3RpdmVNYXRjaE9wdGlvbnMgPSBFWEFDVF9GQUxTRV9PUFRTO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGFyaWFDdXJyZW50V2hlbkFjdGl2ZT86XHJcbiAgICB8ICdwYWdlJ1xyXG4gICAgfCAnc3RlcCdcclxuICAgIHwgJ2xvY2F0aW9uJ1xyXG4gICAgfCAnZGF0ZSdcclxuICAgIHwgJ3RpbWUnXHJcbiAgICB8IHRydWVcclxuICAgIHwgZmFsc2U7XHJcblxyXG4gIGdldCBpc0FjdGl2ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9pc0FjdGl2ZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfaXNBY3RpdmUgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBjbGFzc2VzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMudXBkYXRlKCk7XHJcbiAgICB0aGlzLmxpc3RlblJvdXRlckV2ZW50cygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2FueVJvdXRlQWN0aXZlJ10/LnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgY29uc3QgcHJldiA9IHRoaXMucGFyc2VDbGFzc2VzKGNoYW5nZXNbJ2FueVJvdXRlQWN0aXZlJ10ucHJldmlvdXNWYWx1ZSk7XHJcbiAgICAgIHByZXYuZm9yRWFjaCgoYykgPT4gdGhpcy5yZW1vdmVDbGFzcyhjKSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51cGRhdGUoKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZSgpIHtcclxuICAgIHRoaXMuX2lzQWN0aXZlID0gdGhpcy53YXRjaGVkUm91dGVzLnNvbWUoKHJvdXRlKSA9PiB7XHJcbiAgICAgIGNvbnN0IHBhcmFtID1cclxuICAgICAgICB0eXBlb2Ygcm91dGUgPT09ICdzdHJpbmcnID8gcm91dGUgOiB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKHJvdXRlKTtcclxuICAgICAgcmV0dXJuIHRoaXMucm91dGVyLmlzQWN0aXZlKHBhcmFtLCB0aGlzLl9hbnlSb3V0ZUFjdGl2ZU9wdGlvbnMpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldENsYXNzZXMoKTtcclxuICAgIHRoaXMuc2V0QXJpYUN1cnJlbnQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0QXJpYUN1cnJlbnQoKSB7XHJcbiAgICBjb25zdCBlbCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICBpZiAodGhpcy5faXNBY3RpdmUgJiYgdGhpcy5hcmlhQ3VycmVudFdoZW5BY3RpdmUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuYXJpYUN1cnJlbnRXaGVuQWN0aXZlLnRvU3RyaW5nKCk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsLCAnYXJpYS1jdXJyZW50JywgdmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUoZWwsICdhcmlhLWN1cnJlbnQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Q2xhc3NlcygpIHtcclxuICAgIGlmICh0aGlzLl9pc0FjdGl2ZSkge1xyXG4gICAgICB0aGlzLmNsYXNzZXMuZm9yRWFjaCgoYykgPT4gdGhpcy5hZGRDbGFzcyhjKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNsYXNzZXMuZm9yRWFjaCgoYykgPT4gdGhpcy5yZW1vdmVDbGFzcyhjKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZENsYXNzKGNsYXNzTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgY2xhc3NOYW1lKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlQ2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCBjbGFzc05hbWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsaXN0ZW5Sb3V0ZXJFdmVudHMoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5ldmVudHNcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKChldikgPT4gZXYgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcclxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGUoKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBhcnNlQ2xhc3NlcyhkYXRhOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgY29uc3QgY2xhc3NlcyA9IEFycmF5LmlzQXJyYXkoZGF0YSkgPyBkYXRhIDogZGF0YS5zcGxpdCgnICcpO1xyXG4gICAgcmV0dXJuIGNsYXNzZXMuZmlsdGVyKChjKSA9PiAhIWMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYXJzZU9wdGlvbnMoaW5wdXQ6IHsgZXhhY3Q6IGJvb2xlYW4gfSB8IElzQWN0aXZlTWF0Y2hPcHRpb25zKSB7XHJcbiAgICBpZiAoJ2V4YWN0JyBpbiBpbnB1dCkge1xyXG4gICAgICBpZiAoaW5wdXQuZXhhY3QpIHtcclxuICAgICAgICByZXR1cm4gRVhBQ1RfVFJVRV9PUFRTO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBFWEFDVF9GQUxTRV9PUFRTO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gaW5wdXQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { Location } from '@angular/common';\nimport { afterNextRender, DestroyRef, Directive, ElementRef, inject, } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { RDT_BUTTON_BASE_PROVIDER } from '@ngrdt/button';\nimport { fromEvent } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class RdtBackLinkDirective {\n destroyRef = inject(DestroyRef);\n location = inject(Location);\n elRef = inject((ElementRef));\n buttonClass = inject(RDT_BUTTON_BASE_PROVIDER);\n buttonRef = inject(this.buttonClass, {\n optional: true,\n host: true,\n });\n constructor() {\n afterNextRender(() => {\n if (this.buttonRef) {\n this.buttonRef.click.subscribe(() => this.location.back());\n }\n else {\n fromEvent(this.elRef.nativeElement, 'click')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.location.back());\n }\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtBackLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.0\", type: RdtBackLinkDirective, isStandalone: true, selector: \"[rdtBackLink]\", ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtBackLinkDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[rdtBackLink]',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWJhY2stbGluay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvZGlyZWN0aXZlcy9yZHQtYmFjay1saW5rLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNMLGVBQWUsRUFDZixVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBS2pDLE1BQU0sT0FBTyxvQkFBb0I7SUFDdEIsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4QixRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVCLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQSxVQUF1QixDQUFBLENBQUMsQ0FBQztJQUN4QyxXQUFXLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDL0MsU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1FBQ3BELFFBQVEsRUFBRSxJQUFJO1FBQ2QsSUFBSSxFQUFFLElBQUk7S0FDWCxDQUFDLENBQUM7SUFFSDtRQUNFLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDbkIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDN0QsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUM7cUJBQ3pDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7cUJBQ3pDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDM0MsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt1R0FwQlUsb0JBQW9COzJGQUFwQixvQkFBb0I7OzJGQUFwQixvQkFBb0I7a0JBSGhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7aUJBQzFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBEZXN0cm95UmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBSRFRfQlVUVE9OX0JBU0VfUFJPVklERVIgfSBmcm9tICdAbmdyZHQvYnV0dG9uJztcbmltcG9ydCB7IGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbcmR0QmFja0xpbmtdJyxcbn0pXG5leHBvcnQgY2xhc3MgUmR0QmFja0xpbmtEaXJlY3RpdmUge1xuICByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uID0gaW5qZWN0KExvY2F0aW9uKTtcbiAgcHJpdmF0ZSByZWFkb25seSBlbFJlZiA9IGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik7XG4gIHByaXZhdGUgcmVhZG9ubHkgYnV0dG9uQ2xhc3MgPSBpbmplY3QoUkRUX0JVVFRPTl9CQVNFX1BST1ZJREVSKTtcbiAgcHJpdmF0ZSByZWFkb25seSBidXR0b25SZWYgPSBpbmplY3QodGhpcy5idXR0b25DbGFzcywge1xuICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIGhvc3Q6IHRydWUsXG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5idXR0b25SZWYpIHtcbiAgICAgICAgdGhpcy5idXR0b25SZWYuY2xpY2suc3Vic2NyaWJlKCgpID0+IHRoaXMubG9jYXRpb24uYmFjaygpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZyb21FdmVudCh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQsICdjbGljaycpXG4gICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmxvY2F0aW9uLmJhY2soKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { booleanAttribute, computed, Directive, effect, EnvironmentInjector, inject, input, linkedSignal, } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { RDT_BUTTON_BASE_PROVIDER } from '@ngrdt/button';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/router\";\nexport const PERMISSION_DISABLED_KEY = Symbol();\nexport class RdtRouterLinkDirective {\n buttonClass = inject(RDT_BUTTON_BASE_PROVIDER);\n buttonRef = inject(this.buttonClass, {\n host: true,\n optional: true,\n });\n routerLinkRef = inject(RouterLink, { self: true });\n envInjector = inject(EnvironmentInjector);\n routeInput = input.required({ alias: 'rdtRouterLink' });\n route = linkedSignal(() => this.routeInput());\n target = input('_self');\n params = input();\n queryParams = input();\n stateParams = input();\n disabled = input(false, {\n alias: 'rdtDisabled',\n transform: booleanAttribute,\n });\n canBeEntered = computed(() => {\n const route = this.route();\n const disabled = this.disabled();\n if (!route || disabled) {\n return false;\n }\n const combinedParams = {\n params: this.params(),\n query: this.queryParams(),\n state: this.stateParams(),\n };\n return route.canBeEntered(this.envInjector, combinedParams);\n });\n updateEffect = effect(() => {\n if (this.buttonRef) {\n this.updateButton();\n }\n else {\n this.updateRouterLink();\n }\n });\n updateButton() {\n const route = this.route();\n if (!route) {\n this.clearButtonLink();\n return;\n }\n if (this.canBeEntered()) {\n this.setButtonLink(route);\n }\n else {\n this.disableButtonLink();\n }\n }\n setButtonLink(route) {\n const button = this.buttonRef;\n try {\n const ngHref = this.getNgHref(route);\n button.ngHref.set(ngHref);\n button.stateParams.set(this.stateParams() ?? route.stateParams);\n button.queryParams.set(this.queryParams() ?? route.queryParams);\n button.setDisabledState(false, PERMISSION_DISABLED_KEY);\n }\n catch (err) {\n console.error(err);\n this.disableButtonLink();\n }\n }\n disableButtonLink() {\n const button = this.buttonRef;\n button.ngHref.set(null);\n button.setDisabledState(true, PERMISSION_DISABLED_KEY);\n }\n clearButtonLink() {\n const button = this.buttonRef;\n button.ngHref.set(null);\n button.stateParams.set(undefined);\n button.queryParams.set(undefined);\n button.setDisabledState(false, PERMISSION_DISABLED_KEY);\n }\n updateRouterLink() {\n const route = this.route();\n if (!route) {\n this.clearRouterLink();\n }\n else if (this.canBeEntered()) {\n this.setRouterLink(route);\n }\n else {\n this.disableRouterLink();\n }\n }\n setRouterLink(route) {\n try {\n const ngHref = this.getNgHref(route);\n this.routerLinkRef.routerLink = ngHref;\n this.routerLinkRef.state = this.stateParams() ?? route.stateParams;\n this.routerLinkRef.queryParams = this.queryParams() ?? route.queryParams;\n this.routerLinkRef.ngOnChanges({});\n }\n catch (err) {\n console.error(err);\n this.disableRouterLink();\n }\n }\n disableRouterLink() {\n this.routerLinkRef.routerLink = null;\n this.routerLinkRef.ngOnChanges({});\n }\n clearRouterLink() {\n this.routerLinkRef.routerLink = null;\n this.routerLinkRef.state = undefined;\n this.routerLinkRef.queryParams = undefined;\n this.routerLinkRef.ngOnChanges({});\n }\n getNgHref(route) {\n return route.createAbsoluteUrl(this.params());\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtRouterLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.0.0\", type: RdtRouterLinkDirective, isStandalone: true, selector: \"[rdtRouterLink]\", inputs: { routeInput: { classPropertyName: \"routeInput\", publicName: \"rdtRouterLink\", isSignal: true, isRequired: true, transformFunction: null }, target: { classPropertyName: \"target\", publicName: \"target\", isSignal: true, isRequired: false, transformFunction: null }, params: { classPropertyName: \"params\", publicName: \"params\", isSignal: true, isRequired: false, transformFunction: null }, queryParams: { classPropertyName: \"queryParams\", publicName: \"queryParams\", isSignal: true, isRequired: false, transformFunction: null }, stateParams: { classPropertyName: \"stateParams\", publicName: \"stateParams\", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"rdtDisabled\", isSignal: true, isRequired: false, transformFunction: null } }, hostDirectives: [{ directive: i1.RouterLink, inputs: [\"target\", \"target\", \"replaceUrl\", \"replaceUrl\"] }], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtRouterLinkDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[rdtRouterLink]',\n standalone: true,\n hostDirectives: [\n {\n directive: RouterLink,\n inputs: ['target', 'replaceUrl'],\n },\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlci1saW5rLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL0BuZ3JkdC9yb3V0ZXIvc3JjL2xpYi9kaXJlY3RpdmVzL3JkdC1yb3V0ZXItbGluay5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IsU0FBUyxFQUNULE1BQU0sRUFDTixtQkFBbUIsRUFDbkIsTUFBTSxFQUNOLEtBQUssRUFDTCxZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBR3pELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLE1BQU0sRUFBRSxDQUFDO0FBWWhELE1BQU0sT0FBTyxzQkFBc0I7SUFDaEIsV0FBVyxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQy9DLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtRQUNwRCxJQUFJLEVBQUUsSUFBSTtRQUNWLFFBQVEsRUFBRSxJQUFJO0tBQ2YsQ0FBQyxDQUFDO0lBQ2MsYUFBYSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNuRCxXQUFXLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFFbEQsVUFBVSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQWMsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztJQUNyRSxLQUFLLEdBQUcsWUFBWSxDQUFxQixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNsRSxNQUFNLEdBQUcsS0FBSyxDQUEwQyxPQUFPLENBQUMsQ0FB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RUFBRSxDQUFDLENBQUM7UUFDckMsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztRQUMzQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU8sU0FBUyxDQUFDLEtBQWtCO1FBQ2xDLE9BQU8sS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7dUdBMUhVLHNCQUFzQjsyRkFBdEIsc0JBQXNCOzsyRkFBdEIsc0JBQXNCO2tCQVZsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixjQUFjLEVBQUU7d0JBQ2Q7NEJBQ0UsU0FBUyxFQUFFLFVBQVU7NEJBQ3JCLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUM7eUJBQ2pDO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBib29sZWFuQXR0cmlidXRlLFxyXG4gIGNvbXB1dGVkLFxyXG4gIERpcmVjdGl2ZSxcclxuICBlZmZlY3QsXHJcbiAgRW52aXJvbm1lbnRJbmplY3RvcixcclxuICBpbmplY3QsXHJcbiAgaW5wdXQsXHJcbiAgbGlua2VkU2lnbmFsLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQYXJhbXMsIFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBSRFRfQlVUVE9OX0JBU0VfUFJPVklERVIgfSBmcm9tICdAbmdyZHQvYnV0dG9uJztcclxuaW1wb3J0IHsgUmR0Um91dGUgfSBmcm9tICcuLi9yZHQtcm91dGUvcmR0LXJvdXRlJztcclxuXHJcbmV4cG9ydCBjb25zdCBQRVJNSVNTSU9OX0RJU0FCTEVEX0tFWSA9IFN5bWJvbCgpO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbcmR0Um91dGVyTGlua10nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaG9zdERpcmVjdGl2ZXM6IFtcclxuICAgIHtcclxuICAgICAgZGlyZWN0aXZlOiBSb3V0ZXJMaW5rLFxyXG4gICAgICBpbnB1dHM6IFsndGFyZ2V0JywgJ3JlcGxhY2VVcmwnXSxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJkdFJvdXRlckxpbmtEaXJlY3RpdmU8VCBleHRlbmRzIG9iamVjdD4ge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgYnV0dG9uQ2xhc3MgPSBpbmplY3QoUkRUX0JVVFRPTl9CQVNFX1BST1ZJREVSKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGJ1dHRvblJlZiA9IGluamVjdCh0aGlzLmJ1dHRvbkNsYXNzLCB7XHJcbiAgICBob3N0OiB0cnVlLFxyXG4gICAgb3B0aW9uYWw6IHRydWUsXHJcbiAgfSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXJMaW5rUmVmID0gaW5qZWN0KFJvdXRlckxpbmssIHsgc2VsZjogdHJ1ZSB9KTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGVudkluamVjdG9yID0gaW5qZWN0KEVudmlyb25tZW50SW5qZWN0b3IpO1xyXG5cclxuICByZWFkb25seSByb3V0ZUlucHV0ID0gaW5wdXQucmVxdWlyZWQ8UmR0Um91dGU8VD4+KHsgYWxpYXM6ICdyZHRSb3V0ZXJMaW5rJyB9KTtcclxuICByZWFkb25seSByb3V0ZSA9IGxpbmtlZFNpZ25hbDxSZHRSb3V0ZTxUPiB8IG51bGw+KCgpID0+IHRoaXMucm91dGVJbnB1dCgpKTtcclxuICByZWFkb25seSB0YXJnZXQgPSBpbnB1dDwnX2JsYW5rJyB8ICdfc2VsZicgfCAnX3BhcmVudCcgfCAnX3RvcCc+KCdfc2VsZicpO1xyXG4gIHJlYWRvbmx5IHBhcmFtcyA9IGlucHV0PFBhcnRpYWw8VD4gfCB1bmRlZmluZWQ+KCk7XHJcbiAgcmVhZG9ubHkgcXVlcnlQYXJhbXMgPSBpbnB1dDxQYXJhbXMgfCB1bmRlZmluZWQ+KCk7XHJcbiAgcmVhZG9ubHkgc3RhdGVQYXJhbXMgPSBpbnB1dDxQYXJhbXMgfCB1bmRlZmluZWQ+KCk7XHJcbiAgcmVhZG9ubHkgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSwge1xyXG4gICAgYWxpYXM6ICdyZHREaXNhYmxlZCcsXHJcbiAgICB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUsXHJcbiAgfSk7XHJcblxyXG4gIHJlYWRvbmx5IGNhbkJlRW50ZXJlZCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGNvbnN0IHJvdXRlID0gdGhpcy5yb3V0ZSgpO1xyXG4gICAgY29uc3QgZGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkKCk7XHJcbiAgICBpZiAoIXJvdXRlIHx8IGRpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbWJpbmVkUGFyYW1zID0ge1xyXG4gICAgICBwYXJhbXM6IHRoaXMucGFyYW1zKCksXHJcbiAgICAgIHF1ZXJ5OiB0aGlzLnF1ZXJ5UGFyYW1zKCksXHJcbiAgICAgIHN0YXRlOiB0aGlzLnN0YXRlUGFyYW1zKCksXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiByb3V0ZS5jYW5CZUVudGVyZWQodGhpcy5lbnZJbmplY3RvciwgY29tYmluZWRQYXJhbXMpO1xyXG4gIH0pO1xyXG5cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdXBkYXRlRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcclxuICAgIGlmICh0aGlzLmJ1dHRvblJlZikge1xyXG4gICAgICB0aGlzLnVwZGF0ZUJ1dHRvbigpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy51cGRhdGVSb3V0ZXJMaW5rKCk7XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQnV0dG9uKCkge1xyXG4gICAgY29uc3Qgcm91dGUgPSB0aGlzLnJvdXRlKCk7XHJcbiAgICBpZiAoIXJvdXRlKSB7XHJcbiAgICAgIHRoaXMuY2xlYXJCdXR0b25MaW5rKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmNhbkJlRW50ZXJlZCgpKSB7XHJcbiAgICAgIHRoaXMuc2V0QnV0dG9uTGluayhyb3V0ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRpc2FibGVCdXR0b25MaW5rKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEJ1dHRvbkxpbmsocm91dGU6IFJkdFJvdXRlPFQ+KSB7XHJcbiAgICBjb25zdCBidXR0b24gPSB0aGlzLmJ1dHRvblJlZiE7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBuZ0hyZWYgPSB0aGlzLmdldE5nSHJlZihyb3V0ZSk7XHJcbiAgICAgIGJ1dHRvbi5uZ0hyZWYuc2V0KG5nSHJlZik7XHJcbiAgICAgIGJ1dHRvbi5zdGF0ZVBhcmFtcy5zZXQodGhpcy5zdGF0ZVBhcmFtcygpID8/IHJvdXRlLnN0YXRlUGFyYW1zKTtcclxuICAgICAgYnV0dG9uLnF1ZXJ5UGFyYW1zLnNldCh0aGlzLnF1ZXJ5UGFyYW1zKCkgPz8gcm91dGUucXVlcnlQYXJhbXMpO1xyXG4gICAgICBidXR0b24uc2V0RGlzYWJsZWRTdGF0ZShmYWxzZSwgUEVSTUlTU0lPTl9ESVNBQkxFRF9LRVkpO1xyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgdGhpcy5kaXNhYmxlQnV0dG9uTGluaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaXNhYmxlQnV0dG9uTGluaygpIHtcclxuICAgIGNvbnN0IGJ1dHRvbiA9IHRoaXMuYnV0dG9uUmVmITtcclxuICAgIGJ1dHRvbi5uZ0hyZWYuc2V0KG51bGwpO1xyXG4gICAgYnV0dG9uLnNldERpc2FibGVkU3RhdGUodHJ1ZSwgUEVSTUlTU0lPTl9ESVNBQkxFRF9LRVkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhckJ1dHRvbkxpbmsoKSB7XHJcbiAgICBjb25zdCBidXR0b24gPSB0aGlzLmJ1dHRvblJlZiE7XHJcbiAgICBidXR0b24ubmdIcmVmLnNldChudWxsKTtcclxuICAgIGJ1dHRvbi5zdGF0ZVBhcmFtcy5zZXQodW5kZWZpbmVkKTtcclxuICAgIGJ1dHRvbi5xdWVyeVBhcmFtcy5zZXQodW5kZWZpbmVkKTtcclxuICAgIGJ1dHRvbi5zZXREaXNhYmxlZFN0YXRlKGZhbHNlLCBQRVJNSVNTSU9OX0RJU0FCTEVEX0tFWSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVJvdXRlckxpbmsoKSB7XHJcbiAgICBjb25zdCByb3V0ZSA9IHRoaXMucm91dGUoKTtcclxuICAgIGlmICghcm91dGUpIHtcclxuICAgICAgdGhpcy5jbGVhclJvdXRlckxpbmsoKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jYW5CZUVudGVyZWQoKSkge1xyXG4gICAgICB0aGlzLnNldFJvdXRlckxpbmsocm91dGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kaXNhYmxlUm91dGVyTGluaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRSb3V0ZXJMaW5rKHJvdXRlOiBSZHRSb3V0ZTxUPikge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgbmdIcmVmID0gdGhpcy5nZXROZ0hyZWYocm91dGUpO1xyXG4gICAgICB0aGlzLnJvdXRlckxpbmtSZWYucm91dGVyTGluayA9IG5nSHJlZjtcclxuICAgICAgdGhpcy5yb3V0ZXJMaW5rUmVmLnN0YXRlID0gdGhpcy5zdGF0ZVBhcmFtcygpID8/IHJvdXRlLnN0YXRlUGFyYW1zO1xyXG4gICAgICB0aGlzLnJvdXRlckxpbmtSZWYucXVlcnlQYXJhbXMgPSB0aGlzLnF1ZXJ5UGFyYW1zKCkgPz8gcm91dGUucXVlcnlQYXJhbXM7XHJcbiAgICAgIHRoaXMucm91dGVyTGlua1JlZi5uZ09uQ2hhbmdlcyh7fSk7XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICB0aGlzLmRpc2FibGVSb3V0ZXJMaW5rKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRpc2FibGVSb3V0ZXJMaW5rKCkge1xyXG4gICAgdGhpcy5yb3V0ZXJMaW5rUmVmLnJvdXRlckxpbmsgPSBudWxsO1xyXG4gICAgdGhpcy5yb3V0ZXJMaW5rUmVmLm5nT25DaGFuZ2VzKHt9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYXJSb3V0ZXJMaW5rKCkge1xyXG4gICAgdGhpcy5yb3V0ZXJMaW5rUmVmLnJvdXRlckxpbmsgPSBudWxsO1xyXG4gICAgdGhpcy5yb3V0ZXJMaW5rUmVmLnN0YXRlID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5yb3V0ZXJMaW5rUmVmLnF1ZXJ5UGFyYW1zID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5yb3V0ZXJMaW5rUmVmLm5nT25DaGFuZ2VzKHt9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TmdIcmVmKHJvdXRlOiBSZHRSb3V0ZTxUPikge1xyXG4gICAgcmV0dXJuIHJvdXRlLmNyZWF0ZUFic29sdXRlVXJsKHRoaXMucGFyYW1zKCkpO1xyXG4gIH1cclxufVxyXG4iXX0=","import { inject } from '@angular/core';\nimport { RdtComponentGuardStoreService } from '@ngrdt/core';\nexport const preventDataLossGuardFn = () => {\n const guardStore = inject(RdtComponentGuardStoreService);\n return guardStore.checkCanLeaveGlobal$();\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmVudC1kYXRhLWxvc3MuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvZ3VhcmRzL3ByZXZlbnQtZGF0YS1sb3NzLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUF5QixHQUFHLEVBQUU7SUFDL0QsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDekQsT0FBTyxVQUFVLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztBQUMzQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2FuRGVhY3RpdmF0ZUZuIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgUmR0Q29tcG9uZW50R3VhcmRTdG9yZVNlcnZpY2UgfSBmcm9tICdAbmdyZHQvY29yZSc7XHJcblxyXG5leHBvcnQgY29uc3QgcHJldmVudERhdGFMb3NzR3VhcmRGbjogQ2FuRGVhY3RpdmF0ZUZuPGFueT4gPSAoKSA9PiB7XHJcbiAgY29uc3QgZ3VhcmRTdG9yZSA9IGluamVjdChSZHRDb21wb25lbnRHdWFyZFN0b3JlU2VydmljZSk7XHJcbiAgcmV0dXJuIGd1YXJkU3RvcmUuY2hlY2tDYW5MZWF2ZUdsb2JhbCQoKTtcclxufTtcclxuIl19","import { Injectable } from '@angular/core';\nimport { GuardsCheckStart, NavigationEnd, Router, } from '@angular/router';\nimport { preventDataLossGuardFn } from './prevent-data-loss.guard';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/router\";\nexport class GlobalRouteGuardService {\n router;\n constructor(router) {\n this.router = router;\n }\n // This will help ensure that routes are automatically protected by ensuring that global guards are applied to every route\n ensureGlobalGuards() {\n let lastUrl = '';\n this.router.events.subscribe((e) => {\n // Remember last url after successful navigation\n if (e instanceof NavigationEnd) {\n lastUrl = location.href;\n }\n if (e instanceof GuardsCheckStart) {\n let lastChild = e.state.root;\n while (lastChild?.firstChild) {\n lastChild = lastChild.firstChild;\n }\n // Native back button will immediately replace url on click\n // Replace it back to last url before guard check is finished.\n // Angular will set it to correct value afterwards.\n history.replaceState(window.history.state, '', lastUrl);\n if (lastChild?.routeConfig) {\n this.ensureCanDeactivateGuards(lastChild.routeConfig);\n }\n }\n });\n }\n ensureCanDeactivateGuards(routeConfig) {\n if (!routeConfig.canDeactivate) {\n routeConfig.canDeactivate = [];\n }\n const canDeactivateGuards = routeConfig.canDeactivate;\n // ensure that the \"MySpecialCanDeactivateGuard\" is in effect.\n if (!canDeactivateGuards.find((o) => o == preventDataLossGuardFn)) {\n canDeactivateGuards.push(preventDataLossGuardFn);\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: GlobalRouteGuardService, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: GlobalRouteGuardService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: GlobalRouteGuardService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i1.Router }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLXJvdXRlLWd1YXJkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvZ3VhcmRzL2dsb2JhbC1yb3V0ZS1ndWFyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixhQUFhLEVBRWIsTUFBTSxHQUNQLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQUduRSxNQUFNLE9BQU8sdUJBQXVCO0lBQ2Q7SUFBcEIsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7SUFBRyxDQUFDO0lBRXRDLDBIQUEwSDtJQUNuSCxrQkFBa0I7UUFDdkIsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBRWpCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2pDLGdEQUFnRDtZQUNoRCxJQUFJLENBQUMsWUFBWSxhQUFhLEVBQUUsQ0FBQztnQkFDL0IsT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDMUIsQ0FBQztZQUNELElBQUksQ0FBQyxZQUFZLGdCQUFnQixFQUFFLENBQUM7Z0JBQ2xDLElBQUksU0FBUyxHQUEyQixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztnQkFDckQsT0FBTyxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUM7b0JBQzdCLFNBQVMsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO2dCQUNuQyxDQUFDO2dCQUNELDJEQUEyRDtnQkFDM0QsOERBQThEO2dCQUM5RCxtREFBbUQ7Z0JBQ25ELE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUV4RCxJQUFJLFNBQVMsRUFBRSxXQUFXLEVBQUUsQ0FBQztvQkFDM0IsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDeEQsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxXQUFrQjtRQUNsRCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQy9CLFdBQVcsQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLENBQUM7UUFFRCxNQUFNLG1CQUFtQixHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUM7UUFFdEQsOERBQThEO1FBQzlELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxzQkFBc0IsQ0FBQyxFQUFFLENBQUM7WUFDbEUsbUJBQW1CLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUM7dUdBeENVLHVCQUF1QjsyR0FBdkIsdUJBQXVCLGNBRFYsTUFBTTs7MkZBQ25CLHVCQUF1QjtrQkFEbkMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICBHdWFyZHNDaGVja1N0YXJ0LFxyXG4gIE5hdmlnYXRpb25FbmQsXHJcbiAgUm91dGUsXHJcbiAgUm91dGVyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IHByZXZlbnREYXRhTG9zc0d1YXJkRm4gfSBmcm9tICcuL3ByZXZlbnQtZGF0YS1sb3NzLmd1YXJkJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBHbG9iYWxSb3V0ZUd1YXJkU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge31cclxuXHJcbiAgLy8gVGhpcyB3aWxsIGhlbHAgZW5zdXJlIHRoYXQgcm91dGVzIGFyZSBhdXRvbWF0aWNhbGx5IHByb3RlY3RlZCBieSBlbnN1cmluZyB0aGF0IGdsb2JhbCBndWFyZHMgYXJlIGFwcGxpZWQgdG8gZXZlcnkgcm91dGVcclxuICBwdWJsaWMgZW5zdXJlR2xvYmFsR3VhcmRzKCkge1xyXG4gICAgbGV0IGxhc3RVcmwgPSAnJztcclxuXHJcbiAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgIC8vIFJlbWVtYmVyIGxhc3QgdXJsIGFmdGVyIHN1Y2Nlc3NmdWwgbmF2aWdhdGlvblxyXG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcclxuICAgICAgICBsYXN0VXJsID0gbG9jYXRpb24uaHJlZjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIEd1YXJkc0NoZWNrU3RhcnQpIHtcclxuICAgICAgICBsZXQgbGFzdENoaWxkOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90ID0gZS5zdGF0ZS5yb290O1xyXG4gICAgICAgIHdoaWxlIChsYXN0Q2hpbGQ/LmZpcnN0Q2hpbGQpIHtcclxuICAgICAgICAgIGxhc3RDaGlsZCA9IGxhc3RDaGlsZC5maXJzdENoaWxkO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBOYXRpdmUgYmFjayBidXR0b24gd2lsbCBpbW1lZGlhdGVseSByZXBsYWNlIHVybCBvbiBjbGlja1xyXG4gICAgICAgIC8vIFJlcGxhY2UgaXQgYmFjayB0byBsYXN0IHVybCBiZWZvcmUgZ3VhcmQgY2hlY2sgaXMgZmluaXNoZWQuXHJcbiAgICAgICAgLy8gQW5ndWxhciB3aWxsIHNldCBpdCB0byBjb3JyZWN0IHZhbHVlIGFmdGVyd2FyZHMuXHJcbiAgICAgICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUod2luZG93Lmhpc3Rvcnkuc3RhdGUsICcnLCBsYXN0VXJsKTtcclxuXHJcbiAgICAgICAgaWYgKGxhc3RDaGlsZD8ucm91dGVDb25maWcpIHtcclxuICAgICAgICAgIHRoaXMuZW5zdXJlQ2FuRGVhY3RpdmF0ZUd1YXJkcyhsYXN0Q2hpbGQucm91dGVDb25maWcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVuc3VyZUNhbkRlYWN0aXZhdGVHdWFyZHMocm91dGVDb25maWc6IFJvdXRlKSB7XHJcbiAgICBpZiAoIXJvdXRlQ29uZmlnLmNhbkRlYWN0aXZhdGUpIHtcclxuICAgICAgcm91dGVDb25maWcuY2FuRGVhY3RpdmF0ZSA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNhbkRlYWN0aXZhdGVHdWFyZHMgPSByb3V0ZUNvbmZpZy5jYW5EZWFjdGl2YXRlO1xyXG5cclxuICAgIC8vIGVuc3VyZSB0aGF0IHRoZSBcIk15U3BlY2lhbENhbkRlYWN0aXZhdGVHdWFyZFwiIGlzIGluIGVmZmVjdC5cclxuICAgIGlmICghY2FuRGVhY3RpdmF0ZUd1YXJkcy5maW5kKChvKSA9PiBvID09IHByZXZlbnREYXRhTG9zc0d1YXJkRm4pKSB7XHJcbiAgICAgIGNhbkRlYWN0aXZhdGVHdWFyZHMucHVzaChwcmV2ZW50RGF0YUxvc3NHdWFyZEZuKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdyZHQtcm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbmdyZHQtcm91dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@ngrdt/router",
3
- "version": "0.0.97",
3
+ "version": "0.0.98",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=20.0.0",
6
6
  "@angular/core": ">=20.0.0",
7
7
  "@angular/router": ">=20.0.0",
8
8
  "rxjs": ">=7.0.0",
9
- "@ngrdt/utils": "^0.0.97",
10
- "@ngrdt/core": "^0.0.97",
11
- "@ngrdt/button": "^0.0.97"
9
+ "@ngrdt/utils": "^0.0.98",
10
+ "@ngrdt/core": "^0.0.98",
11
+ "@ngrdt/button": "^0.0.98"
12
12
  },
13
13
  "sideEffects": false,
14
14
  "module": "fesm2022/ngrdt-router.mjs",