@wavemaker/app-ng-runtime 11.11.4-rc.6172 → 11.11.5-rc.214

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.
Files changed (61) hide show
  1. package/components/base/bundles/index.umd.js +1 -1
  2. package/components/base/esm2022/widgets/common/base/base-field-validations.mjs +2 -2
  3. package/components/base/fesm2022/index.mjs +1 -1
  4. package/components/base/fesm2022/index.mjs.map +1 -1
  5. package/components/data/form/bundles/index.umd.js +20 -1
  6. package/components/data/form/esm2022/form-action/form-action.directive.mjs +5 -2
  7. package/components/data/form/esm2022/form-field/form-field.directive.mjs +2 -1
  8. package/components/data/form/esm2022/form.component.mjs +15 -1
  9. package/components/data/form/esm2022/form.props.mjs +2 -1
  10. package/components/data/form/fesm2022/index.mjs +20 -1
  11. package/components/data/form/fesm2022/index.mjs.map +1 -1
  12. package/components/data/form/form.component.d.ts +1 -0
  13. package/components/data/list/bundles/index.umd.js +53 -10
  14. package/components/data/list/esm2022/list.component.mjs +51 -10
  15. package/components/data/list/esm2022/list.props.mjs +4 -2
  16. package/components/data/list/fesm2022/index.mjs +53 -10
  17. package/components/data/list/fesm2022/index.mjs.map +1 -1
  18. package/components/data/list/list.component.d.ts +7 -0
  19. package/components/data/pagination/bundles/index.umd.js +502 -106
  20. package/components/data/pagination/esm2022/pagination.component.mjs +500 -105
  21. package/components/data/pagination/esm2022/pagination.props.mjs +4 -1
  22. package/components/data/pagination/fesm2022/index.mjs +502 -104
  23. package/components/data/pagination/fesm2022/index.mjs.map +1 -1
  24. package/components/data/pagination/pagination.component.d.ts +21 -1
  25. package/components/data/table/bundles/index.umd.js +89 -11
  26. package/components/data/table/esm2022/table-column/table-column.directive.mjs +3 -2
  27. package/components/data/table/esm2022/table-column/table-column.props.mjs +2 -1
  28. package/components/data/table/esm2022/table.component.mjs +82 -12
  29. package/components/data/table/esm2022/table.props.mjs +7 -1
  30. package/components/data/table/fesm2022/index.mjs +90 -12
  31. package/components/data/table/fesm2022/index.mjs.map +1 -1
  32. package/components/data/table/table-column/table-column.directive.d.ts +1 -0
  33. package/components/data/table/table.component.d.ts +17 -0
  34. package/components/input/epoch/base-date-time.component.d.ts +3 -1
  35. package/components/input/epoch/bundles/index.umd.js +123 -65
  36. package/components/input/epoch/esm2022/base-date-time.component.mjs +31 -20
  37. package/components/input/epoch/esm2022/date/date.component.mjs +5 -6
  38. package/components/input/epoch/esm2022/date-time/date-time.component.mjs +45 -22
  39. package/components/input/epoch/esm2022/date-time/date-time.props.mjs +3 -2
  40. package/components/input/epoch/esm2022/time/time.component.mjs +40 -14
  41. package/components/input/epoch/esm2022/time/time.props.mjs +3 -2
  42. package/components/input/epoch/fesm2022/index.mjs +118 -60
  43. package/components/input/epoch/fesm2022/index.mjs.map +1 -1
  44. package/components/input/slider/bundles/index.umd.js +107 -38
  45. package/components/input/slider/esm2022/slider.component.mjs +86 -18
  46. package/components/input/slider/esm2022/slider.props.mjs +5 -3
  47. package/components/input/slider/fesm2022/index.mjs +88 -19
  48. package/components/input/slider/fesm2022/index.mjs.map +1 -1
  49. package/components/input/slider/slider.component.d.ts +5 -0
  50. package/npm-shrinkwrap.json +2 -2
  51. package/oAuth/esm2022/oAuth.service.mjs +1 -1
  52. package/oAuth/fesm2022/index.mjs.map +1 -1
  53. package/package-lock.json +2 -2
  54. package/package.json +1 -1
  55. package/runtime/base/bundles/index.umd.js +84 -34
  56. package/runtime/base/components/app-component/app.component.d.ts +10 -3
  57. package/runtime/base/esm2022/components/app-component/app.component.mjs +85 -34
  58. package/runtime/base/esm2022/util/wm-route-reuse-strategy.mjs +2 -2
  59. package/runtime/base/fesm2022/index.mjs +85 -35
  60. package/runtime/base/fesm2022/index.mjs.map +1 -1
  61. package/scripts/datatable/datatable.js +56 -10
@@ -28,7 +28,7 @@ let WmDefaultRouteReuseStrategy = class WmDefaultRouteReuseStrategy {
28
28
  .map(k => k + '=' + route.queryParams[k])
29
29
  .sort().join('&');
30
30
  let pageName = route.params.pageName;
31
- if (route.data.pageName && route.routeConfig.path === '') {
31
+ if (route.data.pageName && route.routeConfig.path === route.data.pageName) {
32
32
  pageName = route.data.pageName;
33
33
  }
34
34
  return pageName && (pageName + (queryParams ? `?${queryParams}` : ''));
@@ -173,4 +173,4 @@ export class WmNgRouteReuseStrategy extends WmDefaultRouteReuseStrategy {
173
173
  return this.isSameRoute(future, current);
174
174
  }
175
175
  }
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid20tcm91dGUtcmV1c2Utc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ydW50aW1lLWJhc2Uvc3JjL3V0aWwvd20tcm91dGUtcmV1c2Utc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFvQnZDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNoQyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDO0FBQ3hDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxxQ0FBcUMsQ0FBQztBQUNwRSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsb0NBQW9DLENBQUM7QUFFbEUsZ0RBQWdEO0FBQ2hELElBQWEsMkJBQTJCLEdBQXhDLE1BQWEsMkJBQTJCO0lBUXBDLFlBQW9DLFlBQXFCLEVBQ3RCLFdBQW9CO1FBTi9DLG1CQUFjLEdBQUc7WUFDckIsVUFBVSxFQUFFLHFCQUFxQjtZQUNqQyxVQUFVLENBQUMsb0JBQW9CO1NBQ2xDLENBQUM7UUF5QlEsWUFBTyxHQUFHLENBQUMsR0FBa0IsRUFBVSxFQUFFLENBQy9DLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQXRCbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLFFBQVEsQ0FBc0IsWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN0RixJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENB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V0FBVyxFQUFFLENBQUM7WUFDN0MsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLFdBQVcsS0FBSyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDN0Msd0RBQXdEO1lBQ3hELElBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUcsQ0FBQztnQkFDcEQsT0FBUSxJQUFJLENBQUM7WUFDakIsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUNELGdCQUFnQixDQUNaLE1BQThCLEVBQzlCLE9BQStCO1FBRS9CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4vKlxuQ3VzdG9tIFJvdXRlIFJldXNlIFN0cmF0ZWdpZXM6XG4qIFdtRGVmYXVsdFJvdXRlUmV1c2VTdHJhdGVneTogQmFzZSBGdW5jdGlvbiAmIFV0aWxzXG4qIFdtUm91dGVSZXNlU3RyYXRlZ3kgOiBGb3IgUHJldmlldyAmIFdhdmVNYWtlciBEZXBsb3ltZW50c1xuKiBXbU5nUm91dGVSZXVzZVN0cmF0ZWd5IDogRm9yIEFuZ3VsYXIgRGVwbG95bWVudHNcblxuV2hlbiBhIHVzZXIgaW52b2tlcyBuYXZpZ2F0aW9uIGFjdGlvbiBmcm9tICdQYWdlMScgdG8gJ1BhZ2UyJ1xuUmV1c2UgUm91dGUgOiBUcnVlLFxuICAgICAgICAgICAgICAgICAgICBpZiB0aGUgUGFnZTEgJiBQYWdlMiBhcmUgc2FtZSB3aXRoIFNhbWUgUXVlcnkgUGFyYW1zXG5SZXVzZSBSb3V0ZSA6IEZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBpZiB0aGUgUGFnZTEgJiBQYWdlIDIgYXJlIGRpZmZlcmVudCxcbiAgICAgICAgICAgICAgICAgICAgaWYgdGhlIFBhZ2UxICYgUGFnZSAyIGFyZSBzYW1lLCBidXQgdGhlIHF1ZXJ5IHBhcmFtcyBhcmUgZGlmZmVyZW50XG4qL1xuaW1wb3J0IHtcbiAgICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgIERldGFjaGVkUm91dGVIYW5kbGUsXG4gICAgUm91dGVSZXVzZVN0cmF0ZWd5LFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBMUlVDYWNoZSB9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7aXNOaWx9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmV4cG9ydCBjb25zdCBDQUNIRV9QQUdFID0gJ19jYWNoZV9wYWdlJztcbmV4cG9ydCBjb25zdCBNQVhfQ0FDSEVfU0laRSA9ICdSRVVTRV9ST1VURV9TVFJBVEVHWS5NQVhfQ0FDSEVfU0laRSc7XG5leHBvcnQgY29uc3QgTUFYX0NBQ0hFX0FHRSA9ICdSRVVTRV9ST1VURV9TVFJBVEVHWS5NQVhfQ0FDSEVfQUdFJztcblxuLyogQmFzZSBTdHJhdGVneSB3aXRoIERlZmF1bHQgaW1wbGVtZW50YXRpb25zICovXG5leHBvcnQgY2xhc3MgV21EZWZhdWx0Um91dGVSZXVzZVN0cmF0ZWd5IHtcbiAgICBwcml2YXRlIGNhY2hlOiBMUlVDYWNoZTxEZXRhY2hlZFJvdXRlSGFuZGxlPjtcbiAgICBwcml2YXRlIGN1cnJlbnRSb3V0ZUtleTogc3RyaW5nO1xuICAgIHByaXZhdGUgcGFyYW1zVG9JZ25vcmUgPSBbXG4gICAgICAgICd3bV9zdGF0ZScsIC8vIHN0YXRlIHBlcnNpc3RlbmNlLFxuICAgICAgICBDQUNIRV9QQUdFIC8vIHRvIHVzZSBwYWdlIGNhY2hlXG4gICAgXTtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoTUFYX0NBQ0hFX1NJWkUpIG1heENhY2hlU2l6ZT86IG51bWJlcixcbiAgICAgICAgICAgICAgICBASW5qZWN0KE1BWF9DQUNIRV9BR0UpIG1heENhY2hlQWdlPzogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuY2FjaGUgPSBuZXcgTFJVQ2FjaGU8RGV0YWNoZWRSb3V0ZUhhbmRsZT4obWF4Q2FjaGVTaXplLCBtYXhDYWNoZUFnZSwgKGtleSwgaGFuZGxlKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50Um91dGVLZXkgPT09IGtleSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGUuc2V0KGtleSwgaGFuZGxlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgKGhhbmRsZSBhcyBhbnkpLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0S2V5KHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSB7XG4gICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gT2JqZWN0LmtleXMocm91dGUucXVlcnlQYXJhbXMpXG4gICAgICAgICAgICAuZmlsdGVyKGsgPT4gIXRoaXMucGFyYW1zVG9JZ25vcmUuaW5jbHVkZXMoaykpXG4gICAgICAgICAgICAubWFwKGsgPT4gayArICc9JyArIHJvdXRlLnF1ZXJ5UGFyYW1zW2tdKVxuICAgICAgICAgICAgLnNvcnQoKS5qb2luKCcmJyk7XG4gICAgICAgIGxldCBwYWdlTmFtZSA9IHJvdXRlLnBhcmFtcy5wYWdlTmFtZTtcbiAgICAgICAgaWYgKHJvdXRlLmRhdGEucGFnZU5hbWUgJiYgcm91dGUucm91dGVDb25maWcucGF0aCA9PT0gJycpIHtcbiAgICAgICAgICAgIHBhZ2VOYW1lID0gcm91dGUuZGF0YS5wYWdlTmFtZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFnZU5hbWUgJiYgKHBhZ2VOYW1lICsgKHF1ZXJ5UGFyYW1zID8gYD8ke3F1ZXJ5UGFyYW1zfWA6ICcnKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldFNpemUgPSAob2JqOiBvYmplY3QgfCBudWxsKTogbnVtYmVyID0+XG4gICAgICAgIG9iaiA/IE9iamVjdC5rZXlzKG9iaikubGVuZ3RoIDogMDtcblxuICAgIHByb3RlY3RlZCBpc1NhbWVRdWVyeVBhcmFtcyhmdXR1cmUsIGN1cnJlbnQpOiBib29sZWFuIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGZxUGFyYW1zID0gZnV0dXJlLnF1ZXJ5UGFyYW1zO1xuICAgICAgICAgICAgY29uc3QgY3FQYXJhbXMgPSBjdXJyZW50LnF1ZXJ5UGFyYW1zO1xuICAgICAgICAgICAgY29uc3QgZnFQYXJhbXNDb3VudCA9IGZxUGFyYW1zID8gdGhpcy5nZXRTaXplKGZxUGFyYW1zKSA6IDA7XG4gICAgICAgICAgICBjb25zdCBjcVBhcmFtc0NvdW50ID0gY3FQYXJhbXMgPyB0aGlzLmdldFNpemUoY3FQYXJhbXMpIDogMDtcblxuICAgICAgICAgICAgaWYgKGZxUGFyYW1zQ291bnQgPT09IDAgJiYgY3FQYXJhbXNDb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGZxUGFyYW1zQ291bnQgIT09IGNxUGFyYW1zQ291bnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZnFQYXJhbXMpID09PSBKU09OLnN0cmluZ2lmeShjcVBhcmFtcyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaXNDYWNoZUVuYWJsZWQocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIGRlZmF1bHRWYWx1ZTogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBjYW5SZXVzZSA9IHJvdXRlLnF1ZXJ5UGFyYW1zW0NBQ0hFX1BBR0VdO1xuICAgICAgICBpZiAoIWlzTmlsKGNhblJldXNlKSkge1xuICAgICAgICAgICAgcmV0dXJuIChjYW5SZXVzZSA9PT0gJ3RydWUnIHx8IGNhblJldXNlID09PSB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgIH1cblxuICAgIC8vIERlZmF1bHRSb3V0ZVJldXNlU3RyYXRlZ3kgOiBCZWdpblxuICAgIHNob3VsZERldGFjaChyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBrZXkgPSB0aGlzLmdldEtleShyb3V0ZSk7XG4gICAgICAgIGlmICh0aGlzLmlzQ2FjaGVFbmFibGVkKHJvdXRlLCAhIXJvdXRlLmRhdGFbQ0FDSEVfUEFHRV0pKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNhY2hlLmRlbGV0ZShrZXkpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc2hvdWxkQXR0YWNoKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0S2V5KHJvdXRlKTtcbiAgICAgICAgdGhpcy5jdXJyZW50Um91dGVLZXkgPSBrZXk7XG4gICAgICAgIGNvbnN0IGNhY2hlZEhhbmRsZSA9IHRoaXMuY2FjaGUuZ2V0KGtleSkgYXMgRGV0YWNoZWRSb3V0ZUhhbmRsZTtcbiAgICAgICAgaWYgKGNhY2hlZEhhbmRsZSAmJiB0aGlzLmlzQ2FjaGVFbmFibGVkKHJvdXRlLCAhIShjYWNoZWRIYW5kbGVbQ0FDSEVfUEFHRV0pKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jYWNoZS5kZWxldGUoa2V5KTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHN0b3JlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBoYW5kbGU6IERldGFjaGVkUm91dGVIYW5kbGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKGhhbmRsZSkge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5nZXRLZXkocm91dGUpO1xuICAgICAgICAgICAgaGFuZGxlW0NBQ0hFX1BBR0VdID0gISFyb3V0ZS5kYXRhW0NBQ0hFX1BBR0VdO1xuICAgICAgICAgICAgdGhpcy5jYWNoZS5zZXQoa2V5LCBoYW5kbGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0cmlldmUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBEZXRhY2hlZFJvdXRlSGFuZGxlIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0S2V5KHJvdXRlKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGUuZ2V0KGtleSk7XG4gICAgfVxuXG4gICAgcmVzZXQocGFnZU5hbWU/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHBhZ2VOYW1lKSB7XG4gICAgICAgICAgICB0aGlzLmNhY2hlLmRlbGV0ZShwYWdlTmFtZSk7XG4gICAgICAgICAgICBjb25zdCBwYWdlV2l0aFBhcmFtcyA9IHBhZ2VOYW1lICs9ICc/JztcbiAgICAgICAgICAgIGNvbnN0IGVudHJpZXNUb0RlbGV0ZSA9IFtdO1xuICAgICAgICAgICAgZm9yKGxldCBrIG9mIHRoaXMuY2FjaGUua2V5cygpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGsuc3RhcnRzV2l0aChwYWdlV2l0aFBhcmFtcykpIHtcbiAgICAgICAgICAgICAgICAgICAgZW50cmllc1RvRGVsZXRlLnB1c2goayk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZW50cmllc1RvRGVsZXRlLmZvckVhY2goayA9PiB0aGlzLmNhY2hlLmRlbGV0ZShrKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jYWNoZS5jbGVhcigpO1xuICAgICAgICB9XG4gICAgfVxufVxuLyogQ3VzdG9tIFN0cmF0ZWd5IHNwZWNpZmljYWxseSBmb3IgcHJldmlldyAmIFdhdmVNYWtlciBEZXBsb3ltZW50cyAqL1xuZXhwb3J0IGNsYXNzIFdtUm91dGVSZXVzZVN0cmF0ZWd5IGV4dGVuZHMgV21EZWZhdWx0Um91dGVSZXVzZVN0cmF0ZWd5XG4gICAgaW1wbGVtZW50cyBSb3V0ZVJldXNlU3RyYXRlZ3kge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cbiAgICBwcml2YXRlIGlzU2FtZVJvdXRlKGZ1dHVyZSwgY3VycmVudCk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBJbmNhc2Ugb2YgcHJlZmFiIHByb2plY3Qgd2UgaGF2ZSBvbmx5IG9uZSByb3V0ZSBTbyByZWxvYWRpbmcgdGhlIHJvdXRlIGV2ZXJ5dGltZVxuICAgICAgICBpZiAoZnV0dXJlLnJvdXRlQ29uZmlnICYmIGZ1dHVyZS5yb3V0ZUNvbmZpZy5wYXRoID09PSAncHJlZmFiLXByZXZpZXcnKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLypcbiAgICAgICAgSW4gV00gRGVwbG95bWVudCwgTmF2aWdhdGlvbiBpcyBoYW5kbGVkIGJ5IFBhZ2VXcmFwcGVyQ29tcG9uZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICYgUm91dGUgSW5mbyBpcyBwYXNzZWQgYXMgYSBwYXJhbWV0ZXJcbiAgICAgICAgKi9cbiAgICAgICAgY29uc3QgZlBhcmFtcyA9IGZ1dHVyZS5wYXJhbXM7XG4gICAgICAgIGNvbnN0IGNQYXJhbXMgPSBjdXJyZW50LnBhcmFtcztcbiAgICAgICAgY29uc3QgZlBhcmFtc0NvdW50ID0gdGhpcy5nZXRTaXplKGZQYXJhbXMpO1xuICAgICAgICBjb25zdCBjUGFyYW1zQ291bnQgPSB0aGlzLmdldFNpemUoY1BhcmFtcyk7XG4gICAgICAgIGlmIChmUGFyYW1zQ291bnQgPT09IDAgJiYgY1BhcmFtc0NvdW50ID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZlBhcmFtc0NvdW50ICE9PSBjUGFyYW1zQ291bnQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZlBhcmFtc1sncGFnZU5hbWUnXSA9PT0gY1BhcmFtc1sncGFnZU5hbWUnXSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNTYW1lUXVlcnlQYXJhbXMoZnV0dXJlLCBjdXJyZW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHNob3VsZFJldXNlUm91dGUoXG4gICAgICAgIGZ1dHVyZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICAgICAgY3VycmVudDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdFxuICAgICk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1NhbWVSb3V0ZShmdXR1cmUsIGN1cnJlbnQpO1xuICAgIH1cbn1cbi8qIEN1c3RvbSBTdHJhdGVneSBzcGVjaWZpY2FsbHkgZm9yIEFuZ3VsYXIgRGVwbG95bWVudHMgKi9cbmV4cG9ydCBjbGFzcyBXbU5nUm91dGVSZXVzZVN0cmF0ZWd5IGV4dGVuZHMgV21EZWZhdWx0Um91dGVSZXVzZVN0cmF0ZWd5XG4gICAgaW1wbGVtZW50cyBSb3V0ZVJldXNlU3RyYXRlZ3kge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cbiAgICBwcml2YXRlIGlzU2FtZVJvdXRlKGZ1dHVyZSwgY3VycmVudCk6IGJvb2xlYW4ge1xuICAgICAgICAvKlxuICAgICAgICBJbiBBbmd1bGFyIERlcGxveW1lbnQsIE5hdmlnYXRpb24gaXMgaGFuZGxlZCBieSBBbmd1bGFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiBSb3V0ZSBJbmZvIGlzIHBhc3NlZCBieSByb3V0ZUNvbmZpZ1xuICAgICAgICAqL1xuICAgICAgICBpZiAoIWZ1dHVyZS5yb3V0ZUNvbmZpZyAmJiAhY3VycmVudC5yb3V0ZUNvbmZpZykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZ1dHVyZS5yb3V0ZUNvbmZpZyAhPT0gY3VycmVudC5yb3V0ZUNvbmZpZykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmdXR1cmUucm91dGVDb25maWcgPT09IGN1cnJlbnQucm91dGVDb25maWcpIHtcbiAgICAgICAgICAgIC8vTm8gbmVlZCB0byBjb21wYXJlIHF1ZXJ5IHBhcmFtcyBmb3IgbGF5b3V0IHJvdXRlQ29uZmlnXG4gICAgICAgICAgICBpZihmdXR1cmUuZGF0YS5sYXlvdXROYW1lICYmIGN1cnJlbnQuZGF0YS5sYXlvdXROYW1lKSAge1xuICAgICAgICAgICAgICAgIHJldHVybiAgdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzU2FtZVF1ZXJ5UGFyYW1zKGZ1dHVyZSwgY3VycmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHNob3VsZFJldXNlUm91dGUoXG4gICAgICAgIGZ1dHVyZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICAgICAgY3VycmVudDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdFxuICAgICk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1NhbWVSb3V0ZShmdXR1cmUsIGN1cnJlbnQpO1xuICAgIH1cbn1cbiJdfQ==
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid20tcm91dGUtcmV1c2Utc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ydW50aW1lLWJhc2Uvc3JjL3V0aWwvd20tcm91dGUtcmV1c2Utc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFvQnZDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNoQyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDO0FBQ3hDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxxQ0FBcUMsQ0FBQztBQUNwRSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsb0NBQW9DLENBQUM7QUFFbEUsZ0RBQWdEO0FBQ2hELElBQWEsMkJBQTJCLEdBQXhDLE1BQWEsMkJBQTJCO0lBUXBDLFlBQW9DLFlBQXFCLEVBQ3RCLFdBQW9CO1FBTi9DLG1CQUFjLEdBQUc7WUFDckIsVUFBVSxFQUFFLHFCQUFxQjtZQUNqQyxVQUFVLENBQUMsb0JBQW9CO1NBQ2xDLENBQUM7UUF5QlEsWUFBTyxHQUFHLENBQUMsR0FBa0IsRUFBVSxFQUFFLENBQy9DLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQXRCbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLFFBQVEsQ0FBc0IsWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN0RixJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNoQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ0gsTUFBYyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMzQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sTUFBTSxDQUFDLEtBQTZCO1FBQ3hDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQzthQUM3QyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzdDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN4QyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEIsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDckMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hFLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNuQyxDQUFDO1FBQ0QsT0FBTyxRQUFRLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxFQUFFLENBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUtTLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxPQUFPO1FBQ3ZDLElBQUksQ0FBQztZQUNELE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7WUFDcEMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztZQUNyQyxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1RCxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUU1RCxJQUFJLGFBQWEsS0FBSyxDQUFDLElBQUksYUFBYSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM3QyxPQUFPLElBQUksQ0FBQztZQUNoQixDQUFDO1lBQ0QsSUFBSSxhQUFhLEtBQUssYUFBYSxFQUFFLENBQUM7Z0JBQ2xDLE9BQU8sS0FBSyxDQUFDO1lBQ2pCLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNULE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7SUFDTCxDQUFDO0lBRU8sY0FBYyxDQUFDLEtBQTZCLEVBQUUsWUFBcUI7UUFDdkUsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDbkIsT0FBTyxDQUFDLFFBQVEsS0FBSyxNQUFNLElBQUksUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFDRCxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBRUQsb0NBQW9DO0lBQ3BDLFlBQVksQ0FBQyxLQUE2QjtRQUN0QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3ZELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQTZCO1FBQ3RDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLENBQUM7UUFDM0IsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUF3QixDQUFDO1FBQ2hFLElBQUksWUFBWSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMzRSxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUE2QixFQUFFLE1BQTJCO1FBQzVELElBQUksTUFBTSxFQUFFLENBQUM7WUFDVCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9CLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBNkI7UUFDbEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBaUI7UUFDbkIsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVCLE1BQU0sY0FBYyxHQUFHLFFBQVEsSUFBSSxHQUFHLENBQUM7WUFDdkMsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDO1lBQzNCLEtBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztvQkFDL0IsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUIsQ0FBQztZQUNMLENBQUM7WUFDRCxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RCxDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM5QixDQUFDO0lBQ0wsQ0FBQztDQUNKLENBQUE7QUE5R1ksMkJBQTJCO0lBUXZCLFdBQUEsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ3RCLFdBQUEsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBOztHQVR6QiwyQkFBMkIsQ0E4R3ZDOztBQUNELHNFQUFzRTtBQUN0RSxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsMkJBQTJCO0lBRWpFO1FBQ0ksS0FBSyxFQUFFLENBQUM7SUFDWixDQUFDO0lBQ08sV0FBVyxDQUFDLE1BQU0sRUFBRSxPQUFPO1FBQy9CLG1GQUFtRjtRQUNuRixJQUFJLE1BQU0sQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztZQUNyRSxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO1FBQ0Q7OztVQUdFO1FBQ0YsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUM5QixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQy9CLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0MsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQyxJQUFJLFlBQVksS0FBSyxDQUFDLElBQUksWUFBWSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzNDLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxJQUFJLFlBQVksS0FBSyxZQUFZLEVBQUUsQ0FBQztZQUNoQyxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDOUMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBQ0QsZ0JBQWdCLENBQ1osTUFBOEIsRUFDOUIsT0FBK0I7UUFFL0IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0o7QUFDRCwwREFBMEQ7QUFDMUQsTUFBTSxPQUFPLHNCQUF1QixTQUFRLDJCQUEyQjtJQUVuRTtRQUNJLEtBQUssRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUNPLFdBQVcsQ0FBQyxNQUFNLEVBQUUsT0FBTztRQUMvQjs7O1VBR0U7UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM5QyxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsV0FBVyxLQUFLLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM3QyxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsV0FBVyxLQUFLLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM3Qyx3REFBd0Q7WUFDeEQsSUFBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRyxDQUFDO2dCQUNwRCxPQUFRLElBQUksQ0FBQztZQUNqQixDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0QsZ0JBQWdCLENBQ1osTUFBOEIsRUFDOUIsT0FBK0I7UUFFL0IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbi8qXG5DdXN0b20gUm91dGUgUmV1c2UgU3RyYXRlZ2llczpcbiogV21EZWZhdWx0Um91dGVSZXVzZVN0cmF0ZWd5OiBCYXNlIEZ1bmN0aW9uICYgVXRpbHNcbiogV21Sb3V0ZVJlc2VTdHJhdGVneSA6IEZvciBQcmV2aWV3ICYgV2F2ZU1ha2VyIERlcGxveW1lbnRzXG4qIFdtTmdSb3V0ZVJldXNlU3RyYXRlZ3kgOiBGb3IgQW5ndWxhciBEZXBsb3ltZW50c1xuXG5XaGVuIGEgdXNlciBpbnZva2VzIG5hdmlnYXRpb24gYWN0aW9uIGZyb20gJ1BhZ2UxJyB0byAnUGFnZTInXG5SZXVzZSBSb3V0ZSA6IFRydWUsXG4gICAgICAgICAgICAgICAgICAgIGlmIHRoZSBQYWdlMSAmIFBhZ2UyIGFyZSBzYW1lIHdpdGggU2FtZSBRdWVyeSBQYXJhbXNcblJldXNlIFJvdXRlIDogRmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGlmIHRoZSBQYWdlMSAmIFBhZ2UgMiBhcmUgZGlmZmVyZW50LFxuICAgICAgICAgICAgICAgICAgICBpZiB0aGUgUGFnZTEgJiBQYWdlIDIgYXJlIHNhbWUsIGJ1dCB0aGUgcXVlcnkgcGFyYW1zIGFyZSBkaWZmZXJlbnRcbiovXG5pbXBvcnQge1xuICAgIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgRGV0YWNoZWRSb3V0ZUhhbmRsZSxcbiAgICBSb3V0ZVJldXNlU3RyYXRlZ3ksXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IExSVUNhY2hlIH0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHtpc05pbH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuZXhwb3J0IGNvbnN0IENBQ0hFX1BBR0UgPSAnX2NhY2hlX3BhZ2UnO1xuZXhwb3J0IGNvbnN0IE1BWF9DQUNIRV9TSVpFID0gJ1JFVVNFX1JPVVRFX1NUUkFURUdZLk1BWF9DQUNIRV9TSVpFJztcbmV4cG9ydCBjb25zdCBNQVhfQ0FDSEVfQUdFID0gJ1JFVVNFX1JPVVRFX1NUUkFURUdZLk1BWF9DQUNIRV9BR0UnO1xuXG4vKiBCYXNlIFN0cmF0ZWd5IHdpdGggRGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgKi9cbmV4cG9ydCBjbGFzcyBXbURlZmF1bHRSb3V0ZVJldXNlU3RyYXRlZ3kge1xuICAgIHByaXZhdGUgY2FjaGU6IExSVUNhY2hlPERldGFjaGVkUm91dGVIYW5kbGU+O1xuICAgIHByaXZhdGUgY3VycmVudFJvdXRlS2V5OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBwYXJhbXNUb0lnbm9yZSA9IFtcbiAgICAgICAgJ3dtX3N0YXRlJywgLy8gc3RhdGUgcGVyc2lzdGVuY2UsXG4gICAgICAgIENBQ0hFX1BBR0UgLy8gdG8gdXNlIHBhZ2UgY2FjaGVcbiAgICBdO1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChNQVhfQ0FDSEVfU0laRSkgbWF4Q2FjaGVTaXplPzogbnVtYmVyLFxuICAgICAgICAgICAgICAgIEBJbmplY3QoTUFYX0NBQ0hFX0FHRSkgbWF4Q2FjaGVBZ2U/OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5jYWNoZSA9IG5ldyBMUlVDYWNoZTxEZXRhY2hlZFJvdXRlSGFuZGxlPihtYXhDYWNoZVNpemUsIG1heENhY2hlQWdlLCAoa2V5LCBoYW5kbGUpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRSb3V0ZUtleSA9PT0ga2V5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWNoZS5zZXQoa2V5LCBoYW5kbGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAoaGFuZGxlIGFzIGFueSkuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRLZXkocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpIHtcbiAgICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSBPYmplY3Qua2V5cyhyb3V0ZS5xdWVyeVBhcmFtcylcbiAgICAgICAgICAgIC5maWx0ZXIoayA9PiAhdGhpcy5wYXJhbXNUb0lnbm9yZS5pbmNsdWRlcyhrKSlcbiAgICAgICAgICAgIC5tYXAoayA9PiBrICsgJz0nICsgcm91dGUucXVlcnlQYXJhbXNba10pXG4gICAgICAgICAgICAuc29ydCgpLmpvaW4oJyYnKTtcbiAgICAgICAgbGV0IHBhZ2VOYW1lID0gcm91dGUucGFyYW1zLnBhZ2VOYW1lO1xuICAgICAgICBpZiAocm91dGUuZGF0YS5wYWdlTmFtZSAmJiByb3V0ZS5yb3V0ZUNvbmZpZy5wYXRoID09PSByb3V0ZS5kYXRhLnBhZ2VOYW1lKSB7XG4gICAgICAgICAgICBwYWdlTmFtZSA9IHJvdXRlLmRhdGEucGFnZU5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhZ2VOYW1lICYmIChwYWdlTmFtZSArIChxdWVyeVBhcmFtcyA/IGA/JHtxdWVyeVBhcmFtc31gOiAnJykpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRTaXplID0gKG9iajogb2JqZWN0IHwgbnVsbCk6IG51bWJlciA9PlxuICAgICAgICBvYmogPyBPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA6IDA7XG5cbiAgICBwcm90ZWN0ZWQgaXNTYW1lUXVlcnlQYXJhbXMoZnV0dXJlLCBjdXJyZW50KTogYm9vbGVhbiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBmcVBhcmFtcyA9IGZ1dHVyZS5xdWVyeVBhcmFtcztcbiAgICAgICAgICAgIGNvbnN0IGNxUGFyYW1zID0gY3VycmVudC5xdWVyeVBhcmFtcztcbiAgICAgICAgICAgIGNvbnN0IGZxUGFyYW1zQ291bnQgPSBmcVBhcmFtcyA/IHRoaXMuZ2V0U2l6ZShmcVBhcmFtcykgOiAwO1xuICAgICAgICAgICAgY29uc3QgY3FQYXJhbXNDb3VudCA9IGNxUGFyYW1zID8gdGhpcy5nZXRTaXplKGNxUGFyYW1zKSA6IDA7XG5cbiAgICAgICAgICAgIGlmIChmcVBhcmFtc0NvdW50ID09PSAwICYmIGNxUGFyYW1zQ291bnQgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmcVBhcmFtc0NvdW50ICE9PSBjcVBhcmFtc0NvdW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGZxUGFyYW1zKSA9PT0gSlNPTi5zdHJpbmdpZnkoY3FQYXJhbXMpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQ2FjaGVFbmFibGVkKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBkZWZhdWx0VmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgY29uc3QgY2FuUmV1c2UgPSByb3V0ZS5xdWVyeVBhcmFtc1tDQUNIRV9QQUdFXTtcbiAgICAgICAgaWYgKCFpc05pbChjYW5SZXVzZSkpIHtcbiAgICAgICAgICAgIHJldHVybiAoY2FuUmV1c2UgPT09ICd0cnVlJyB8fCBjYW5SZXVzZSA9PT0gdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICB9XG5cbiAgICAvLyBEZWZhdWx0Um91dGVSZXVzZVN0cmF0ZWd5IDogQmVnaW5cbiAgICBzaG91bGREZXRhY2gocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5nZXRLZXkocm91dGUpO1xuICAgICAgICBpZiAodGhpcy5pc0NhY2hlRW5hYmxlZChyb3V0ZSwgISFyb3V0ZS5kYXRhW0NBQ0hFX1BBR0VdKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jYWNoZS5kZWxldGUoa2V5KTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHNob3VsZEF0dGFjaChyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBrZXkgPSB0aGlzLmdldEtleShyb3V0ZSk7XG4gICAgICAgIHRoaXMuY3VycmVudFJvdXRlS2V5ID0ga2V5O1xuICAgICAgICBjb25zdCBjYWNoZWRIYW5kbGUgPSB0aGlzLmNhY2hlLmdldChrZXkpIGFzIERldGFjaGVkUm91dGVIYW5kbGU7XG4gICAgICAgIGlmIChjYWNoZWRIYW5kbGUgJiYgdGhpcy5pc0NhY2hlRW5hYmxlZChyb3V0ZSwgISEoY2FjaGVkSGFuZGxlW0NBQ0hFX1BBR0VdKSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2FjaGUuZGVsZXRlKGtleSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBzdG9yZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgaGFuZGxlOiBEZXRhY2hlZFJvdXRlSGFuZGxlKTogdm9pZCB7XG4gICAgICAgIGlmIChoYW5kbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0S2V5KHJvdXRlKTtcbiAgICAgICAgICAgIGhhbmRsZVtDQUNIRV9QQUdFXSA9ICEhcm91dGUuZGF0YVtDQUNIRV9QQUdFXTtcbiAgICAgICAgICAgIHRoaXMuY2FjaGUuc2V0KGtleSwgaGFuZGxlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHJpZXZlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogRGV0YWNoZWRSb3V0ZUhhbmRsZSB8IG51bGwge1xuICAgICAgICBjb25zdCBrZXkgPSB0aGlzLmdldEtleShyb3V0ZSk7XG4gICAgICAgIHJldHVybiB0aGlzLmNhY2hlLmdldChrZXkpO1xuICAgIH1cblxuICAgIHJlc2V0KHBhZ2VOYW1lPzogc3RyaW5nKSB7XG4gICAgICAgIGlmIChwYWdlTmFtZSkge1xuICAgICAgICAgICAgdGhpcy5jYWNoZS5kZWxldGUocGFnZU5hbWUpO1xuICAgICAgICAgICAgY29uc3QgcGFnZVdpdGhQYXJhbXMgPSBwYWdlTmFtZSArPSAnPyc7XG4gICAgICAgICAgICBjb25zdCBlbnRyaWVzVG9EZWxldGUgPSBbXTtcbiAgICAgICAgICAgIGZvcihsZXQgayBvZiB0aGlzLmNhY2hlLmtleXMoKSkge1xuICAgICAgICAgICAgICAgIGlmIChrLnN0YXJ0c1dpdGgocGFnZVdpdGhQYXJhbXMpKSB7XG4gICAgICAgICAgICAgICAgICAgIGVudHJpZXNUb0RlbGV0ZS5wdXNoKGspO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVudHJpZXNUb0RlbGV0ZS5mb3JFYWNoKGsgPT4gdGhpcy5jYWNoZS5kZWxldGUoaykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGUuY2xlYXIoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbi8qIEN1c3RvbSBTdHJhdGVneSBzcGVjaWZpY2FsbHkgZm9yIHByZXZpZXcgJiBXYXZlTWFrZXIgRGVwbG95bWVudHMgKi9cbmV4cG9ydCBjbGFzcyBXbVJvdXRlUmV1c2VTdHJhdGVneSBleHRlbmRzIFdtRGVmYXVsdFJvdXRlUmV1c2VTdHJhdGVneVxuICAgIGltcGxlbWVudHMgUm91dGVSZXVzZVN0cmF0ZWd5IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBpc1NhbWVSb3V0ZShmdXR1cmUsIGN1cnJlbnQpOiBib29sZWFuIHtcbiAgICAgICAgLy8gSW5jYXNlIG9mIHByZWZhYiBwcm9qZWN0IHdlIGhhdmUgb25seSBvbmUgcm91dGUgU28gcmVsb2FkaW5nIHRoZSByb3V0ZSBldmVyeXRpbWVcbiAgICAgICAgaWYgKGZ1dHVyZS5yb3V0ZUNvbmZpZyAmJiBmdXR1cmUucm91dGVDb25maWcucGF0aCA9PT0gJ3ByZWZhYi1wcmV2aWV3Jykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8qXG4gICAgICAgIEluIFdNIERlcGxveW1lbnQsIE5hdmlnYXRpb24gaXMgaGFuZGxlZCBieSBQYWdlV3JhcHBlckNvbXBvbmVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAmIFJvdXRlIEluZm8gaXMgcGFzc2VkIGFzIGEgcGFyYW1ldGVyXG4gICAgICAgICovXG4gICAgICAgIGNvbnN0IGZQYXJhbXMgPSBmdXR1cmUucGFyYW1zO1xuICAgICAgICBjb25zdCBjUGFyYW1zID0gY3VycmVudC5wYXJhbXM7XG4gICAgICAgIGNvbnN0IGZQYXJhbXNDb3VudCA9IHRoaXMuZ2V0U2l6ZShmUGFyYW1zKTtcbiAgICAgICAgY29uc3QgY1BhcmFtc0NvdW50ID0gdGhpcy5nZXRTaXplKGNQYXJhbXMpO1xuICAgICAgICBpZiAoZlBhcmFtc0NvdW50ID09PSAwICYmIGNQYXJhbXNDb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZQYXJhbXNDb3VudCAhPT0gY1BhcmFtc0NvdW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZQYXJhbXNbJ3BhZ2VOYW1lJ10gPT09IGNQYXJhbXNbJ3BhZ2VOYW1lJ10pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzU2FtZVF1ZXJ5UGFyYW1zKGZ1dHVyZSwgY3VycmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBzaG91bGRSZXVzZVJvdXRlKFxuICAgICAgICBmdXR1cmU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgICAgIGN1cnJlbnQ6IEFjdGl2YXRlZFJvdXRlU25hcHNob3RcbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNTYW1lUm91dGUoZnV0dXJlLCBjdXJyZW50KTtcbiAgICB9XG59XG4vKiBDdXN0b20gU3RyYXRlZ3kgc3BlY2lmaWNhbGx5IGZvciBBbmd1bGFyIERlcGxveW1lbnRzICovXG5leHBvcnQgY2xhc3MgV21OZ1JvdXRlUmV1c2VTdHJhdGVneSBleHRlbmRzIFdtRGVmYXVsdFJvdXRlUmV1c2VTdHJhdGVneVxuICAgIGltcGxlbWVudHMgUm91dGVSZXVzZVN0cmF0ZWd5IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBpc1NhbWVSb3V0ZShmdXR1cmUsIGN1cnJlbnQpOiBib29sZWFuIHtcbiAgICAgICAgLypcbiAgICAgICAgSW4gQW5ndWxhciBEZXBsb3ltZW50LCBOYXZpZ2F0aW9uIGlzIGhhbmRsZWQgYnkgQW5ndWxhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYgUm91dGUgSW5mbyBpcyBwYXNzZWQgYnkgcm91dGVDb25maWdcbiAgICAgICAgKi9cbiAgICAgICAgaWYgKCFmdXR1cmUucm91dGVDb25maWcgJiYgIWN1cnJlbnQucm91dGVDb25maWcpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmdXR1cmUucm91dGVDb25maWcgIT09IGN1cnJlbnQucm91dGVDb25maWcpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZnV0dXJlLnJvdXRlQ29uZmlnID09PSBjdXJyZW50LnJvdXRlQ29uZmlnKSB7XG4gICAgICAgICAgICAvL05vIG5lZWQgdG8gY29tcGFyZSBxdWVyeSBwYXJhbXMgZm9yIGxheW91dCByb3V0ZUNvbmZpZ1xuICAgICAgICAgICAgaWYoZnV0dXJlLmRhdGEubGF5b3V0TmFtZSAmJiBjdXJyZW50LmRhdGEubGF5b3V0TmFtZSkgIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc1NhbWVRdWVyeVBhcmFtcyhmdXR1cmUsIGN1cnJlbnQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBzaG91bGRSZXVzZVJvdXRlKFxuICAgICAgICBmdXR1cmU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgICAgIGN1cnJlbnQ6IEFjdGl2YXRlZFJvdXRlU25hcHNob3RcbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNTYW1lUm91dGUoZnV0dXJlLCBjdXJyZW50KTtcbiAgICB9XG59XG4iXX0=
@@ -37,7 +37,7 @@ import * as i2$1 from 'ngx-bootstrap/datepicker';
37
37
  import { BsDatepickerModule } from 'ngx-bootstrap/datepicker';
38
38
  import { AlertDialogComponent } from '@wm/components/dialogs/alert-dialog';
39
39
  import { setTheme } from 'ngx-bootstrap/utils';
40
- import { tap } from 'rxjs/operators';
40
+ import { filter as filter$1, tap } from 'rxjs/operators';
41
41
  import { transpile } from '@wm/transpiler';
42
42
  import { initComponentsBuildTask } from '@wm/build-task';
43
43
  import { FooterDirective } from '@wm/components/page/footer';
@@ -926,7 +926,7 @@ let WmDefaultRouteReuseStrategy = class WmDefaultRouteReuseStrategy {
926
926
  .map(k => k + '=' + route.queryParams[k])
927
927
  .sort().join('&');
928
928
  let pageName = route.params.pageName;
929
- if (route.data.pageName && route.routeConfig.path === '') {
929
+ if (route.data.pageName && route.routeConfig.path === route.data.pageName) {
930
930
  pageName = route.data.pageName;
931
931
  }
932
932
  return pageName && (pageName + (queryParams ? `?${queryParams}` : ''));
@@ -3936,56 +3936,70 @@ class I18nResolve {
3936
3936
  }], () => [{ type: i1.AbstractI18nService }], null); })();
3937
3937
 
3938
3938
  const _c0 = ["dynamicComponent"];
3939
- function AppComponent_Conditional_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
3939
+ function AppComponent_Conditional_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
3940
+ const _r1 = i0.ɵɵgetCurrentView();
3941
+ i0.ɵɵelement(0, "div", 10);
3942
+ i0.ɵɵelementStart(1, "a", 11);
3943
+ i0.ɵɵlistener("click", function AppComponent_Conditional_0_Conditional_0_Template_a_click_1_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.skipToAppContent($event)); });
3944
+ i0.ɵɵtext(2);
3945
+ i0.ɵɵelementEnd();
3946
+ } if (rf & 2) {
3947
+ const ctx_r1 = i0.ɵɵnextContext(2);
3948
+ i0.ɵɵadvance(2);
3949
+ i0.ɵɵtextInterpolate(ctx_r1.appLocale.LABEL_SKIP_TO_MAIN_CONTENT || "Skip to main content");
3950
+ } }
3951
+ function AppComponent_Conditional_0_Conditional_2_Template(rf, ctx) { if (rf & 1) {
3940
3952
  i0.ɵɵelement(0, "div", 2);
3941
3953
  } }
3942
- function AppComponent_Conditional_0_ng_template_4_For_2_Template(rf, ctx) { if (rf & 1) {
3943
- const _r1 = i0.ɵɵgetCurrentView();
3944
- i0.ɵɵelementStart(0, "li", 11)(1, "button", 12);
3945
- i0.ɵɵlistener("click", function AppComponent_Conditional_0_ng_template_4_For_2_Template_button_click_1_listener() { const provider_r2 = i0.ɵɵrestoreView(_r1).$implicit; return i0.ɵɵresetView(provider_r2.invoke()); });
3954
+ function AppComponent_Conditional_0_ng_template_5_For_2_Template(rf, ctx) { if (rf & 1) {
3955
+ const _r3 = i0.ɵɵgetCurrentView();
3956
+ i0.ɵɵelementStart(0, "li", 13)(1, "button", 14);
3957
+ i0.ɵɵlistener("click", function AppComponent_Conditional_0_ng_template_5_For_2_Template_button_click_1_listener() { const provider_r4 = i0.ɵɵrestoreView(_r3).$implicit; return i0.ɵɵresetView(provider_r4.invoke()); });
3946
3958
  i0.ɵɵtext(2);
3947
3959
  i0.ɵɵelementEnd()();
3948
3960
  } if (rf & 2) {
3949
- const provider_r2 = ctx.$implicit;
3961
+ const provider_r4 = ctx.$implicit;
3950
3962
  i0.ɵɵadvance(2);
3951
- i0.ɵɵtextInterpolate(provider_r2.name);
3963
+ i0.ɵɵtextInterpolate(provider_r4.name);
3952
3964
  } }
3953
- function AppComponent_Conditional_0_ng_template_4_Template(rf, ctx) { if (rf & 1) {
3954
- i0.ɵɵelementStart(0, "ul", 10);
3955
- i0.ɵɵrepeaterCreate(1, AppComponent_Conditional_0_ng_template_4_For_2_Template, 3, 1, "li", 11, i0.ɵɵrepeaterTrackByIdentity);
3965
+ function AppComponent_Conditional_0_ng_template_5_Template(rf, ctx) { if (rf & 1) {
3966
+ i0.ɵɵelementStart(0, "ul", 12);
3967
+ i0.ɵɵrepeaterCreate(1, AppComponent_Conditional_0_ng_template_5_For_2_Template, 3, 1, "li", 13, i0.ɵɵrepeaterTrackByIdentity);
3956
3968
  i0.ɵɵelementEnd();
3957
3969
  } if (rf & 2) {
3958
- const ctx_r2 = i0.ɵɵnextContext(2);
3970
+ const ctx_r1 = i0.ɵɵnextContext(2);
3959
3971
  i0.ɵɵadvance();
3960
- i0.ɵɵrepeater(ctx_r2.providersConfig);
3972
+ i0.ɵɵrepeater(ctx_r1.providersConfig);
3961
3973
  } }
3962
- function AppComponent_Conditional_0_Conditional_7_Template(rf, ctx) { if (rf & 1) {
3974
+ function AppComponent_Conditional_0_Conditional_8_Template(rf, ctx) { if (rf & 1) {
3963
3975
  i0.ɵɵelement(0, "div", 6);
3964
3976
  } }
3965
- function AppComponent_Conditional_0_Conditional_8_Template(rf, ctx) { if (rf & 1) {
3977
+ function AppComponent_Conditional_0_Conditional_9_Template(rf, ctx) { if (rf & 1) {
3966
3978
  i0.ɵɵelement(0, "div", 7);
3967
3979
  } }
3968
3980
  function AppComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
3969
- i0.ɵɵelement(0, "router-outlet");
3970
- i0.ɵɵtemplate(1, AppComponent_Conditional_0_Conditional_1_Template, 1, 0, "div", 2);
3971
- i0.ɵɵelement(2, "app-spinner", 3);
3972
- i0.ɵɵelementStart(3, "div", 4);
3973
- i0.ɵɵtemplate(4, AppComponent_Conditional_0_ng_template_4_Template, 3, 0, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
3981
+ i0.ɵɵtemplate(0, AppComponent_Conditional_0_Conditional_0_Template, 3, 1);
3982
+ i0.ɵɵelement(1, "router-outlet");
3983
+ i0.ɵɵtemplate(2, AppComponent_Conditional_0_Conditional_2_Template, 1, 0, "div", 2);
3984
+ i0.ɵɵelement(3, "app-spinner", 3);
3985
+ i0.ɵɵelementStart(4, "div", 4);
3986
+ i0.ɵɵtemplate(5, AppComponent_Conditional_0_ng_template_5_Template, 3, 0, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
3974
3987
  i0.ɵɵelementEnd();
3975
- i0.ɵɵelement(6, "div", 5);
3976
- i0.ɵɵtemplate(7, AppComponent_Conditional_0_Conditional_7_Template, 1, 0, "div", 6)(8, AppComponent_Conditional_0_Conditional_8_Template, 1, 0, "div", 7);
3977
- i0.ɵɵelement(9, "div", 8)(10, "i", 9);
3988
+ i0.ɵɵelement(7, "div", 5);
3989
+ i0.ɵɵtemplate(8, AppComponent_Conditional_0_Conditional_8_Template, 1, 0, "div", 6)(9, AppComponent_Conditional_0_Conditional_9_Template, 1, 0, "div", 7);
3990
+ i0.ɵɵelement(10, "div", 8)(11, "i", 9);
3978
3991
  } if (rf & 2) {
3979
- const ctx_r2 = i0.ɵɵnextContext();
3980
- i0.ɵɵadvance();
3981
- i0.ɵɵconditional(ctx_r2.isApplicationType ? 1 : -1);
3992
+ const ctx_r1 = i0.ɵɵnextContext();
3993
+ i0.ɵɵconditional(ctx_r1.enableSkipToMainContent ? 0 : -1);
3994
+ i0.ɵɵadvance(2);
3995
+ i0.ɵɵconditional(ctx_r1.isApplicationType ? 2 : -1);
3982
3996
  i0.ɵɵadvance();
3983
- i0.ɵɵproperty("show", ctx_r2.spinner.show)("spinnermessages", ctx_r2.spinner.messages);
3984
- i0.ɵɵattribute("aria-label", ctx_r2.spinner.arialabel || "Loading");
3997
+ i0.ɵɵproperty("show", ctx_r1.spinner.show)("spinnermessages", ctx_r1.spinner.messages);
3998
+ i0.ɵɵattribute("aria-label", ctx_r1.spinner.arialabel || "Loading");
3985
3999
  i0.ɵɵadvance(5);
3986
- i0.ɵɵconditional(!ctx_r2.isApplicationType ? 7 : -1);
4000
+ i0.ɵɵconditional(!ctx_r1.isApplicationType ? 8 : -1);
3987
4001
  i0.ɵɵadvance();
3988
- i0.ɵɵconditional(!ctx_r2.isApplicationType ? 8 : -1);
4002
+ i0.ɵɵconditional(!ctx_r1.isApplicationType ? 9 : -1);
3989
4003
  } }
3990
4004
  class AppComponent {
3991
4005
  constructor(_pipeProvider, _appRef, elRef, oAuthService, dialogService, spinnerService, ngZone, router, app, appManager, customIconsLoaderService) {
@@ -3999,11 +4013,15 @@ class AppComponent {
3999
4013
  this.customIconsLoaderService = customIconsLoaderService;
4000
4014
  this.startApp = false;
4001
4015
  this.isApplicationType = false;
4016
+ this.enableSkipToMainContent = getWmProjectProperties().enableSkipToMainContent === 'true' || getWmProjectProperties().enableSkipToMainContent === true;
4017
+ this.retryCount = 0;
4018
+ this.appLocale = {};
4002
4019
  this.spinner = { show: false, messages: [], arialabel: '' };
4003
4020
  this.isOAuthDialogOpen = false;
4004
4021
  setPipeProvider(_pipeProvider);
4005
4022
  setNgZone(ngZone);
4006
4023
  setAppRef(_appRef);
4024
+ this.appLocale = app.appLocale;
4007
4025
  this.isApplicationType = getWmProjectProperties().type === 'APPLICATION';
4008
4026
  if (this.isApplicationType) {
4009
4027
  this.customIconsLoaderService.load();
@@ -4112,13 +4130,45 @@ class AppComponent {
4112
4130
  return componentRef;
4113
4131
  };
4114
4132
  }
4133
+ skipToAppContent(event) {
4134
+ event.preventDefault();
4135
+ this.retryCount = 0;
4136
+ this.tryFocusContent();
4137
+ }
4138
+ tryFocusContent() {
4139
+ const contentEl = document.querySelector('.app-page-content');
4140
+ if (contentEl) {
4141
+ contentEl.setAttribute('tabindex', '-1'); // Ensure it's focusable
4142
+ contentEl.focus({ preventScroll: false });
4143
+ contentEl.scrollIntoView({ behavior: 'smooth' });
4144
+ }
4145
+ else if (this.retryCount < 10) {
4146
+ this.retryCount++;
4147
+ setTimeout(() => this.tryFocusContent(), 100); // Retry every 100ms
4148
+ }
4149
+ }
4115
4150
  ngAfterViewInit() {
4116
4151
  document.documentElement.setAttribute('lang', getWmProjectProperties().defaultLanguage);
4117
4152
  this.start();
4153
+ if (this.enableSkipToMainContent) {
4154
+ this.navigationEndSubscription = this.router.events
4155
+ .pipe(filter$1((e) => e instanceof NavigationEnd))
4156
+ .subscribe(() => {
4157
+ const el = document.getElementById('app-focus-start');
4158
+ if (el) {
4159
+ el.focus();
4160
+ }
4161
+ });
4162
+ }
4118
4163
  }
4119
4164
  ngDoCheck() {
4120
4165
  $invokeWatchers();
4121
4166
  }
4167
+ ngOnDestroy() {
4168
+ if (this.navigationEndSubscription) {
4169
+ this.navigationEndSubscription.unsubscribe();
4170
+ }
4171
+ }
4122
4172
  static { this.ɵfac = function AppComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AppComponent)(i0.ɵɵdirectiveInject(PipeProvider), i0.ɵɵdirectiveInject(i0.ApplicationRef), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i2$2.OAuthService), i0.ɵɵdirectiveInject(i1.AbstractDialogService), i0.ɵɵdirectiveInject(i1.AbstractSpinnerService), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i1$1.Router), i0.ɵɵdirectiveInject(i1.App), i0.ɵɵdirectiveInject(AppManagerService), i0.ɵɵdirectiveInject(i1.CustomIconsLoaderService)); }; }
4123
4173
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AppComponent, selectors: [["app-root"]], viewQuery: function AppComponent_Query(rf, ctx) { if (rf & 1) {
4124
4174
  i0.ɵɵviewQuery(RouterOutlet, 5);
@@ -4127,8 +4177,8 @@ class AppComponent {
4127
4177
  let _t;
4128
4178
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.routerOutlet = _t.first);
4129
4179
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dynamicComponentContainerRef = _t.first);
4130
- } }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 3, vars: 1, consts: [["dynamicComponent", ""], ["dialogBody", ""], ["wmContainer", "", "partialContainer", "", "content", "Common", "hidden", "", 1, "ng-hide"], ["name", "globalspinner", "classname", "global-spinner", "role", "alert", "aria-live", "assertive", 3, "show", "spinnermessages"], ["wmDialog", "", "name", "oAuthLoginDialog", "title", "Application is requesting you to sign in with", "close.event", "closeOAuthDialog()"], ["wmConfirmDialog", "", "name", "_app-confirm-dialog", "title.bind", "title", "message.bind", "message", "oktext.bind", "oktext", "canceltext.bind", "canceltext", "closable", "false", "iconclass.bind", "iconclass", "escape.event", "onEscape()", "ok.event", "onOk()", "cancel.event", "onCancel()", "close.event", "onClose()", "opened.event", "onOpen()"], ["wmConfirmDialog", "", "name", "PrefabConfirmDialog", "title.bind", "title", "message.bind", "text", "oktext.bind", "okButtonText", "canceltext.bind", "cancelButtonText", "closable", "false", "iconclass.bind", "iconclass", "escape.event", "onEscape()", "ok.event", "onOk()", "cancel.event", "onCancel()", "close.event", "onClose()", "opened.event", "onOpen()"], ["wmAlertDialog", "", "name", "PrefabAlertDialog", "title.bind", "title", "message.bind", "text", "oktext.bind", "okButtonText", "canceltext.bind", "cancelButtonText", "closable", "false", "iconclass.bind", "iconclass", "escape.event", "onEscape()", "ok.event", "onOk()", "cancel.event", "onCancel()", "close.event", "onClose()", "opened.event", "onOpen()"], ["wmAppExt", ""], ["id", "wm-mobile-display"], [1, "list-items"], [1, "list-item"], [1, "btn", 3, "click"]], template: function AppComponent_Template(rf, ctx) { if (rf & 1) {
4131
- i0.ɵɵtemplate(0, AppComponent_Conditional_0_Template, 11, 6);
4180
+ } }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 3, vars: 1, consts: [["dynamicComponent", ""], ["dialogBody", ""], ["wmContainer", "", "partialContainer", "", "content", "Common", "hidden", "", 1, "ng-hide"], ["name", "globalspinner", "classname", "global-spinner", "role", "alert", "aria-live", "assertive", 3, "show", "spinnermessages"], ["wmDialog", "", "name", "oAuthLoginDialog", "title", "Application is requesting you to sign in with", "close.event", "closeOAuthDialog()"], ["wmConfirmDialog", "", "name", "_app-confirm-dialog", "title.bind", "title", "message.bind", "message", "oktext.bind", "oktext", "canceltext.bind", "canceltext", "closable", "false", "iconclass.bind", "iconclass", "escape.event", "onEscape()", "ok.event", "onOk()", "cancel.event", "onCancel()", "close.event", "onClose()", "opened.event", "onOpen()"], ["wmConfirmDialog", "", "name", "PrefabConfirmDialog", "title.bind", "title", "message.bind", "text", "oktext.bind", "okButtonText", "canceltext.bind", "cancelButtonText", "closable", "false", "iconclass.bind", "iconclass", "escape.event", "onEscape()", "ok.event", "onOk()", "cancel.event", "onCancel()", "close.event", "onClose()", "opened.event", "onOpen()"], ["wmAlertDialog", "", "name", "PrefabAlertDialog", "title.bind", "title", "message.bind", "text", "oktext.bind", "okButtonText", "canceltext.bind", "cancelButtonText", "closable", "false", "iconclass.bind", "iconclass", "escape.event", "onEscape()", "ok.event", "onOk()", "cancel.event", "onCancel()", "close.event", "onClose()", "opened.event", "onOpen()"], ["wmAppExt", ""], ["id", "wm-mobile-display"], ["id", "app-focus-start", "tabindex", "-1"], ["href", "javascript:void(0);", 1, "skip", 3, "click"], [1, "list-items"], [1, "list-item"], [1, "btn", 3, "click"]], template: function AppComponent_Template(rf, ctx) { if (rf & 1) {
4181
+ i0.ɵɵtemplate(0, AppComponent_Conditional_0_Template, 12, 7);
4132
4182
  i0.ɵɵelementContainer(1, null, 0);
4133
4183
  } if (rf & 2) {
4134
4184
  i0.ɵɵconditional(ctx.startApp ? 0 : -1);
@@ -4136,7 +4186,7 @@ class AppComponent {
4136
4186
  }
4137
4187
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AppComponent, [{
4138
4188
  type: Component,
4139
- args: [{ standalone: true, imports: [CommonModule, WmComponentsModule, RouterOutlet, AlertDialogComponent, ConfirmDialogComponent, DialogComponent, AppSpinnerComponent], selector: 'app-root', encapsulation: ViewEncapsulation.None, template: "@if (startApp) {\n <router-outlet></router-outlet>\n @if (isApplicationType) {\n <div wmContainer partialContainer content=\"Common\" hidden class=\"ng-hide\"></div>\n }\n <app-spinner name=\"globalspinner\" classname=\"global-spinner\" role=\"alert\" aria-live=\"assertive\" [attr.aria-label]=\"spinner.arialabel || 'Loading'\" [show]=\"spinner.show\" [spinnermessages]=\"spinner.messages\"></app-spinner>\n <div wmDialog name=\"oAuthLoginDialog\" title=\"Application is requesting you to sign in with\"\n close.event=\"closeOAuthDialog()\">\n <ng-template #dialogBody>\n <ul class=\"list-items\">\n @for (provider of providersConfig; track provider) {\n <li class=\"list-item\">\n <button class=\"btn\" (click)=\"provider.invoke()\">{{provider.name}}</button>\n </li>\n }\n </ul>\n </ng-template>\n </div>\n <div wmConfirmDialog name=\"_app-confirm-dialog\" title.bind=\"title\" message.bind=\"message\" oktext.bind=\"oktext\"\n canceltext.bind=\"canceltext\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n @if (!isApplicationType) {\n <div wmConfirmDialog name=\"PrefabConfirmDialog\" title.bind=\"title\" message.bind=\"text\" oktext.bind=\"okButtonText\"\n canceltext.bind=\"cancelButtonText\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n }\n @if (!isApplicationType) {\n <div wmAlertDialog name=\"PrefabAlertDialog\" title.bind=\"title\" message.bind=\"text\" oktext.bind=\"okButtonText\"\n canceltext.bind=\"cancelButtonText\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n }\n <div wmAppExt></div>\n <i id=\"wm-mobile-display\"></i>\n}\n<!--Dummy container to create the component dynamically-->\n<ng-container #dynamicComponent></ng-container>\n" }]
4189
+ args: [{ standalone: true, imports: [CommonModule, WmComponentsModule, RouterOutlet, AlertDialogComponent, ConfirmDialogComponent, DialogComponent, AppSpinnerComponent], selector: 'app-root', encapsulation: ViewEncapsulation.None, template: "@if (startApp) {\n @if(enableSkipToMainContent) {\n <div id=\"app-focus-start\" tabindex=\"-1\"></div>\n <a href=\"javascript:void(0);\" class=\"skip\" (click)=\"skipToAppContent($event)\">{{appLocale.LABEL_SKIP_TO_MAIN_CONTENT || 'Skip to main content'}}</a>\n }\n <router-outlet></router-outlet>\n @if (isApplicationType) {\n <div wmContainer partialContainer content=\"Common\" hidden class=\"ng-hide\"></div>\n }\n <app-spinner name=\"globalspinner\" classname=\"global-spinner\" role=\"alert\" aria-live=\"assertive\" [attr.aria-label]=\"spinner.arialabel || 'Loading'\" [show]=\"spinner.show\" [spinnermessages]=\"spinner.messages\"></app-spinner>\n <div wmDialog name=\"oAuthLoginDialog\" title=\"Application is requesting you to sign in with\"\n close.event=\"closeOAuthDialog()\">\n <ng-template #dialogBody>\n <ul class=\"list-items\">\n @for (provider of providersConfig; track provider) {\n <li class=\"list-item\">\n <button class=\"btn\" (click)=\"provider.invoke()\">{{provider.name}}</button>\n </li>\n }\n </ul>\n </ng-template>\n </div>\n <div wmConfirmDialog name=\"_app-confirm-dialog\" title.bind=\"title\" message.bind=\"message\" oktext.bind=\"oktext\"\n canceltext.bind=\"canceltext\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n @if (!isApplicationType) {\n <div wmConfirmDialog name=\"PrefabConfirmDialog\" title.bind=\"title\" message.bind=\"text\" oktext.bind=\"okButtonText\"\n canceltext.bind=\"cancelButtonText\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n }\n @if (!isApplicationType) {\n <div wmAlertDialog name=\"PrefabAlertDialog\" title.bind=\"title\" message.bind=\"text\" oktext.bind=\"okButtonText\"\n canceltext.bind=\"cancelButtonText\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n }\n <div wmAppExt></div>\n <i id=\"wm-mobile-display\"></i>\n}\n<!--Dummy container to create the component dynamically-->\n<ng-container #dynamicComponent></ng-container>\n" }]
4140
4190
  }], () => [{ type: PipeProvider }, { type: i0.ApplicationRef }, { type: i0.ElementRef }, { type: i2$2.OAuthService }, { type: i1.AbstractDialogService }, { type: i1.AbstractSpinnerService }, { type: i0.NgZone }, { type: i1$1.Router }, { type: i1.App }, { type: AppManagerService }, { type: i1.CustomIconsLoaderService }], { routerOutlet: [{
4141
4191
  type: ViewChild,
4142
4192
  args: [RouterOutlet]
@@ -4144,7 +4194,7 @@ class AppComponent {
4144
4194
  type: ViewChild,
4145
4195
  args: ['dynamicComponent', { read: ViewContainerRef }]
4146
4196
  }] }); })();
4147
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AppComponent, { className: "AppComponent", filePath: "components/app-component/app.component.ts", lineNumber: 61 }); })();
4197
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AppComponent, { className: "AppComponent", filePath: "components/app-component/app.component.ts", lineNumber: 64 }); })();
4148
4198
 
4149
4199
  /**
4150
4200
  * This Interceptor intercepts all network calls and if a network call fails