@mediusinc/mng-commons 3.0.0-rc.7 → 3.0.0-rc.9

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 (71) hide show
  1. package/esm2022/lib/components/action/models/action-execution.model.mjs +1 -1
  2. package/esm2022/lib/components/form/autocomplete/autocomplete.component.mjs +13 -2
  3. package/esm2022/lib/components/form/dropdown/dropdown.component.mjs +16 -5
  4. package/esm2022/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +10 -3
  5. package/esm2022/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +7 -5
  6. package/esm2022/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +15 -6
  7. package/esm2022/lib/components/tableview/table/table.component.mjs +11 -6
  8. package/esm2022/lib/descriptors/action/action.descriptor.mjs +6 -6
  9. package/esm2022/lib/descriptors/editor/editor.descriptor.mjs +2 -2
  10. package/esm2022/lib/descriptors/filter/filter.descriptor.mjs +4 -4
  11. package/esm2022/lib/descriptors/table/column.descriptor.mjs +2 -2
  12. package/esm2022/lib/descriptors/table/table.descriptor.mjs +15 -5
  13. package/esm2022/lib/descriptors/tableview/tableview.descriptor.mjs +2 -2
  14. package/esm2022/lib/error/error.handler.mjs +7 -10
  15. package/esm2022/lib/models/error.model.mjs +44 -2
  16. package/esm2022/lib/models/index.mjs +1 -2
  17. package/esm2022/lib/models/log.model.mjs +1 -1
  18. package/esm2022/lib/provide-commons.mjs +8 -3
  19. package/esm2022/lib/router/route-builder.mjs +3 -3
  20. package/esm2022/lib/router/routes-builder.mjs +2 -2
  21. package/esm2022/lib/services/action-error-mapper.service.mjs +3 -2
  22. package/esm2022/lib/services/action-executor.service.mjs +40 -25
  23. package/esm2022/lib/services/configuration.service.mjs +7 -13
  24. package/esm2022/lib/services/index.mjs +2 -1
  25. package/esm2022/lib/services/internal/commons-init.service.mjs +4 -3
  26. package/esm2022/lib/services/log-publisher-console.service.mjs +40 -0
  27. package/esm2022/lib/services/logger.service.mjs +57 -50
  28. package/esm2022/lib/services/router.service.mjs +28 -33
  29. package/esm2022/lib/services/tokens/index.mjs +2 -1
  30. package/esm2022/lib/services/tokens/log-publisher.token.mjs +3 -0
  31. package/esm2022/lib/services/version.service.mjs +7 -2
  32. package/esm2022/lib/utils/action-data-provider.util.mjs +7 -7
  33. package/esm2022/lib/utils/error.util.mjs +247 -0
  34. package/esm2022/lib/utils/i18n.util.mjs +7 -9
  35. package/esm2022/lib/utils/index.mjs +2 -1
  36. package/esm2022/lib/utils/notification.util.mjs +1 -1
  37. package/esm2022/lib/utils/route.util.mjs +2 -2
  38. package/esm2022/lib/utils/string.util.mjs +32 -1
  39. package/esm2022/lib/utils/tableview.util.mjs +2 -2
  40. package/esm2022/lib/utils/type.util.mjs +2 -2
  41. package/fesm2022/mediusinc-mng-commons.mjs +700 -308
  42. package/fesm2022/mediusinc-mng-commons.mjs.map +1 -1
  43. package/lib/components/action/models/action-execution.model.d.ts +2 -2
  44. package/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +1 -0
  45. package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +1 -0
  46. package/lib/components/tableview/table/table.component.d.ts +1 -0
  47. package/lib/descriptors/editor/field.descriptor.d.ts +1 -1
  48. package/lib/descriptors/table/column.descriptor.d.ts +1 -1
  49. package/lib/descriptors/table/table.descriptor.d.ts +10 -3
  50. package/lib/models/error.model.d.ts +44 -9
  51. package/lib/models/index.d.ts +0 -1
  52. package/lib/models/log.model.d.ts +14 -8
  53. package/lib/services/action-error-mapper.service.d.ts +10 -3
  54. package/lib/services/action-executor.service.d.ts +3 -2
  55. package/lib/services/index.d.ts +1 -0
  56. package/lib/services/internal/commons-init.service.d.ts +1 -0
  57. package/lib/services/log-publisher-console.service.d.ts +4 -0
  58. package/lib/services/logger.service.d.ts +11 -8
  59. package/lib/services/router.service.d.ts +1 -2
  60. package/lib/services/tokens/index.d.ts +1 -0
  61. package/lib/services/tokens/log-publisher.token.d.ts +3 -0
  62. package/lib/services/version.service.d.ts +1 -0
  63. package/lib/utils/error.util.d.ts +116 -0
  64. package/lib/utils/i18n.util.d.ts +3 -3
  65. package/lib/utils/index.d.ts +1 -0
  66. package/lib/utils/notification.util.d.ts +2 -2
  67. package/lib/utils/string.util.d.ts +5 -0
  68. package/package.json +1 -1
  69. package/scss/mng-overrides/_theme_tableview.scss +4 -0
  70. package/esm2022/lib/models/internal-error.model.mjs +0 -30
  71. package/lib/models/internal-error.model.d.ts +0 -26
@@ -1,6 +1,5 @@
1
- import { combineLatest, of, tap, throwError } from 'rxjs';
1
+ import { combineLatest, of, tap } from 'rxjs';
2
2
  import { catchError, map } from 'rxjs/operators';
3
- import { MngInternalError } from '../models';
4
3
  import { ObjectUtil } from '../utils';
5
4
  export class MngConfigurationService {
6
5
  static { this._instance = new MngConfigurationService(); }
@@ -108,18 +107,13 @@ export class MngConfigurationService {
108
107
  return httpClient.get(noEnvUrl);
109
108
  }
110
109
  else {
111
- const message = `Configuration file ${url} not loaded (${err.status}): ${err.message}.`;
112
- this.logger?.warn(message, err);
113
- return throwError(() => {
114
- return new MngInternalError(message, 'ConfigurationService', {
115
- cause: err,
116
- status: err.status,
117
- statusDescription: err.statusText,
118
- url: err.url ?? undefined
119
- });
120
- });
110
+ this.logger?.warn(`Configuration file ${url} not loaded`, err);
111
+ return of(false);
121
112
  }
122
113
  }), map(configuration => {
114
+ if (typeof configuration !== 'object') {
115
+ return false;
116
+ }
123
117
  sourceInfo.configuration = configuration;
124
118
  sourceInfo.isLoaded = true;
125
119
  return true;
@@ -177,4 +171,4 @@ export class MngConfigurationService {
177
171
  this.configuration = config;
178
172
  }
179
173
  }
180
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9jb25maWd1cmF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFhLGFBQWEsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwRSxPQUFPLEVBQUMsVUFBVSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRS9DLE9BQU8sRUFBb0IsZ0JBQWdCLEVBQWtCLE1BQU0sV0FBVyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFcEMsTUFBTSxPQUFPLHVCQUF1QjthQUNqQixjQUFTLEdBQTRCLElBQUksdUJBQXVCLEVBQUUsQUFBekQsQ0FBMEQ7SUFFM0UsTUFBTSxDQUFDLEdBQUc7UUFDYixPQUFPLHVCQUF1QixDQUFDLFNBQVMsQ0FBQztJQUM3QyxDQUFDO0lBWUQ7UUFMUSxnQkFBVyxHQUE4QixFQUFFLENBQUM7UUFDNUMsa0JBQWEsR0FBZSxFQUFFLENBQUM7UUFFL0Isa0JBQWEsR0FBRyxFQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFDLENBQUM7UUF1RXJEOztXQUVHO1FBQ0ssMkJBQXNCLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO1FBRWxHOzs7V0FHRztRQUNJLDJCQUFzQixHQUFHLEdBQXdCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBN0UzSCw0Q0FBNEM7SUFDaEQsQ0FB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bXBvcnQge0h0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7T2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgb2YsIHRhcCwgdGhyb3dFcnJvcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2NhdGNoRXJyb3IsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge0lNbmdMb2dnZXJTZXJ2aWNlLCBNbmdJbnRlcm5hbEVycm9yLCBNbmdNb2R1bGVDb25maWd9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQge09iamVjdFV0aWx9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIE1uZ0NvbmZpZ3VyYXRpb25TZXJ2aWNlIHtcbiAgICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IE1uZ0NvbmZpZ3VyYXRpb25TZXJ2aWNlID0gbmV3IE1uZ0NvbmZpZ3VyYXRpb25TZXJ2aWNlKCk7XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldCgpOiBNbmdDb25maWd1cmF0aW9uU2VydmljZSB7XG4gICAgICAgIHJldHVybiBNbmdDb25maWd1cmF0aW9uU2VydmljZS5faW5zdGFuY2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2dnZXI/OiBJTW5nTG9nZ2VyU2VydmljZTtcblxuICAgIHByaXZhdGUgaHR0cD86IEh0dHBDbGllbnQ7XG4gICAgcHJpdmF0ZSBtb2R1bGVDb25maWc/OiBNbmdNb2R1bGVDb25maWc7XG4gICAgcHJpdmF0ZSBwcm9qZWN0RW52aXJvbm1lbnQ/OiBhbnk7XG4gICAgcHJpdmF0ZSBqc29uU291cmNlczogQXJyYXk8SnNvblNvdXJjZUxvYWRJbmZvPiA9IFtdO1xuICAgIHByaXZhdGUgb2JqZWN0U291cmNlczogQXJyYXk8YW55PiA9IFtdO1xuXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uID0gey4uLnRoaXMucHJvamVjdEVudmlyb25tZW50fTtcblxuICAgIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIC8vIGVtcHR5LCBidXQgbmVlZGVkIGZvciBwcml2YXRlIGNvbnN0cnVjdG9yXG4gICAgfVxuXG4gICAgcHVibGljIGluaXQoaHR0cENsaWVudDogSHR0cENsaWVudCwgbG9nZ2VyPzogSU1uZ0xvZ2dlclNlcnZpY2UpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5odHRwID0gaHR0cENsaWVudDtcbiAgICAgICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI/LmNyZWF0ZSgnTW5nQ29uZmlndXJhdGlvblNlcnZpY2UnKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIG1uZyBjb21tb25zIG1vZHVsZSBjb25maWcuXG4gICAgICogQHBhcmFtIGNvbmZpZyBNb2R1bGUgY29uZmlnLlxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRNb2R1bGVDb25maWdTb3VyY2UoY29uZmlnPzogTW5nTW9kdWxlQ29uZmlnKTogdm9pZCB7XG4gICAgICAgIHRoaXMubW9kdWxlQ29uZmlnID0gY29uZmlnO1xuICAgICAgICB0aGlzLm1lcmdlQ29uZmlncygpO1xuICAgICAgICB0aGlzLmxvZ2dlcj8uZGVidWcoYE1vZHVsZSBjb25maWd1cmF0aW9uIHNvdXJjZSBhZGRlZC5gKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgcHJvamVjdCBlbnZpcm9ubWVudCBzb3VyY2UuXG4gICAgICogQHBhcmFtIGVudmlyb25tZW50IEVudmlyb25tZW50LlxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRFbnZpcm9ubWVudFNvdXJjZShlbnZpcm9ubWVudDogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvamVjdEVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gICAgICAgIHRoaXMubWVyZ2VDb25maWdzKCk7XG4gICAgICAgIHRoaXMubG9nZ2VyPy5kZWJ1ZyhgRW52aXJvbm1lbnQgY29uZmlndXJhdGlvbiBzb3VyY2UgYWRkZWQuYCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBuZXcgY29uZmlnIHNvdXJjZSBmcm9tIEpTT04gZmlsZSBsb2FkZWQgZnJvbSBIVFRQLlxuICAgICAqIEBwYXJhbSBjb25maWcgQ29uZmlnIGZvciBKU09OIGZpbGUuXG4gICAgICogQHBhcmFtIGxvYWRJbW1lZGlhdGVseSBMb2FkIGlzIGJ5IGRlZmF1bHQgdHJpZ2dlcmVkIG9uIGFwcCBpbml0aWFsaXphdGlvbi4gSWYgaW1tZWRpYXRlIGxvYWQgaXMgcmVxdWlyZWQsIHBhc3MgdHJ1ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkSnNvblNvdXJjZShjb25maWc6IHt1cmw/OiBzdHJpbmc7IGVuYWJsZUVudlByb2Q/OiBib29sZWFufSA9IHt9LCBsb2FkSW1tZWRpYXRlbHkgPSBmYWxzZSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICBpZiAoIWNvbmZpZykge1xuICAgICAgICAgICAgY29uZmlnID0ge307XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdXJsID0gY29uZmlnPy51cmwgPz8gJ2Fzc2V0cy9jb25maWcvZW52e3tlbnZpcm9ubWVudH19Lmpzb24nO1xuICAgICAgICBjb25zdCBlbmFibGVFbnZQcm9kUmVwbGFjZSA9IGNvbmZpZz8uZW5hYmxlRW52UHJvZCA/PyBmYWxzZTtcblxuICAgICAgICBjb25zdCBzb3VyY2VJbmZvOiBKc29uU291cmNlTG9hZEluZm8gPSB7XG4gICAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICAgIGlzRW52aXJvbm1lbnQ6IGZhbHNlLFxuICAgICAgICAgICAgZW52aXJvbm1lbnRFbmFibGVFbnZQcm9kOiBlbmFibGVFbnZQcm9kUmVwbGFjZSxcbiAgICAgICAgICAgIGlzTG9hZGVkOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmpzb25Tb3VyY2VzLnB1c2goc291cmNlSW5mbyk7XG5cbiAgICAgICAgdGhpcy5sb2dnZXI/LmRlYnVnKGBKU09OIGNvbmZpZ3VyYXRpb24gc291cmNlIGFkZGVkOiAke3VybH0uYCk7XG5cbiAgICAgICAgaWYgKGxvYWRJbW1lZGlhdGVseSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9hZEpzb25Db25maWd1cmF0aW9ucygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBuZXcgY29uZmlnIG9iamVjdCBmcm9tIGFueSBvYmplY3QuXG4gICAgICogQHBhcmFtIGNvbmZpZyBDb25maWcgb2JqZWN0LlxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRPYmplY3RTb3VyY2UoY29uZmlnOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vYmplY3RTb3VyY2VzLnB1c2goY29uZmlnKTtcbiAgICAgICAgdGhpcy5sb2dnZXI/LmRlYnVnKGBPYmplY3QgY29uZmlndXJhdGlvbiBzb3VyY2UgYWRkZWQuYCk7XG4gICAgICAgIHRoaXMubWVyZ2VDb25maWdzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJucyB0cnVlIGlmIHRoZXJlIGlzIG5vIGpzb25Tb3VyY2VzXG4gICAgICovXG4gICAgcHJpdmF0ZSBza2lwSnNvbkNvbmZpZ3NMb2FkaW5nID0gKCkgPT4gdGhpcy5qc29uU291cmNlcyA9PT0gbnVsbCB8fCB0aGlzLmpzb25Tb3VyY2VzLmxlbmd0aCA9PT0gMDtcblxuICAgIC8qKlxuICAgICAqIGxvYWRzIGpzb24gc291cmNlcyBvciBza2lwcyB0aGVtIHJldHVybmluZyB0cnVlIGluIGJvdGggY2FzZXNcbiAgICAgKiB1c2VkIGZvciBgc2tpcEpzb25Tb3VyY2VJbml0YCBjb25maWd1cmF0aW9uIHBhcmFtZXRlclxuICAgICAqL1xuICAgIHB1YmxpYyBsb2FkSnNvbkNvbmZpZ3VyYXRpb25zID0gKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4gPT4gKHRoaXMuc2tpcEpzb25Db25maWdzTG9hZGluZygpID8gb2YodHJ1ZSkgOiB0aGlzLmxvYWRKc29uU291cmNlcygpKTtcblxuICAgIHByaXZhdGUgbG9hZEpzb25Tb3VyY2VzKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICBpZiAoIXRoaXMuaHR0cCkge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXI/Lndhcm4oJ0hUVFAgY2xpZW50IHdhcyBub3QgaW5pdGlhbGl6ZWQuIEpzb24gc291cmNlIGNhbm5vdCBiZSBsb2FkZWQnKTtcbiAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBodHRwQ2xpZW50ID0gdGhpcy5odHRwO1xuXG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFxuICAgICAgICAgICAgdGhpcy5qc29uU291cmNlc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoc291cmNlID0+ICFzb3VyY2UuaXNMb2FkZWQpXG4gICAgICAgICAgICAgICAgLm1hcChzb3VyY2VJbmZvID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9IHNvdXJjZUluZm8udXJsO1xuICAgICAgICAgICAgICAgICAgICBzb3VyY2VJbmZvLmVudmlyb25tZW50ID0gdGhpcy5wcm9qZWN0RW52aXJvbm1lbnQubmFtZSB8fCAodGhpcy5wcm9qZWN0RW52aXJvbm1lbnQucHJvZHVjdGlvbiA/IChzb3VyY2VJbmZvLmVudmlyb25tZW50RW5hYmxlRW52UHJvZCA/ICdwcm9kJyA6IG51bGwpIDogJ2RldicpO1xuICAgICAgICAgICAgICAgICAgICBzb3VyY2VJbmZvLmlzRW52aXJvbm1lbnQgPSAhIXNvdXJjZUluZm8uZW52aXJvbm1lbnQ7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZUluZm8uaXNFbnZpcm9ubWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gdXJsLnJlcGxhY2UoJ3t7ZW52aXJvbm1lbnR9fScsICcuJyArIHNvdXJjZUluZm8uZW52aXJvbm1lbnQpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVwbGFjZSBwb3NzaWJsZSBlbnZpcm9ubWVudCBlbnRyeSBhbmQgY2hhbmdlIHNvdXJjZSBpbmZvIHVybFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gdXJsLnJlcGxhY2UoJ3t7ZW52aXJvbm1lbnR9fScsICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZUluZm8udXJsID0gdXJsO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXI/LmRlYnVnKGBMb2FkaW5nIEpTT04gY29uZmlndXJhdGlvbiBzb3VyY2UgZnJvbSAke3VybH0uYCk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGh0dHBDbGllbnQuZ2V0PG9iamVjdD4odXJsKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzb3VyY2VJbmZvLmlzRW52aXJvbm1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9FbnZVcmwgPSBzb3VyY2VJbmZvLnVybC5yZXBsYWNlKCd7e2Vudmlyb25tZW50fX0nLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZUluZm8uZW52aXJvbm1lbnQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaHR0cENsaWVudC5nZXQ8b2JqZWN0Pihub0VudlVybCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBDb25maWd1cmF0aW9uIGZpbGUgJHt1cmx9IG5vdCBsb2FkZWQgKCR7ZXJyLnN0YXR1c30pOiAke2Vyci5tZXNzYWdlfS5gO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlcj8ud2FybihtZXNzYWdlLCBlcnIpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTW5nSW50ZXJuYWxFcnJvcihtZXNzYWdlLCAnQ29uZmlndXJhdGlvblNlcnZpY2UnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F1c2U6IGVycixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IGVyci5zdGF0dXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzRGVzY3JpcHRpb246IGVyci5zdGF0dXNUZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogZXJyLnVybCA/PyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcChjb25maWd1cmF0aW9uID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VJbmZvLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZUluZm8uaXNMb2FkZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICkucGlwZShcbiAgICAgICAgICAgIG1hcChzb3VyY2VSZXN1bHRzID0+IHNvdXJjZVJlc3VsdHMuZXZlcnkoc3IgPT4gc3IpKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLm1lcmdlQ29uZmlncygpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBjb25maWd1cmF0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDb25maWcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGNvbmZpZ3VyYXRpb24gdmFsdWUgZm9yIGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IENvbmZpZ3VyYXRpb24ga2V5LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDb25maWdWYWx1ZTxUID0gYW55PihrZXk6IHN0cmluZyk6IFQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbltrZXldID8gdGhpcy5jb25maWd1cmF0aW9uW2tleV0gOiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhcyBjb25maWd1cmF0aW9uIGZvciBrZXkuXG4gICAgICogQHBhcmFtIGtleSBDb25maWd1cmF0aW9uIGtleS5cbiAgICAgKi9cbiAgICBwdWJsaWMgaGFzQ29uZmlnS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmNvbmZpZ3VyYXRpb24pLnNvbWUoayA9PiBrID09PSBrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1lcmdlcyBjb25maWd1cmF0aW9uIGZyb20gbXVsdGlwbGUgc291cmNlcyB3aXRoXG4gICAgICovXG4gICAgcHJpdmF0ZSBtZXJnZUNvbmZpZ3MoKSB7XG4gICAgICAgIGxldCBjb25maWcgPSB7fTtcblxuICAgICAgICAvLyAxLiBvYmplY3Qgc291cmNlcyBoYXZlIGhpZ2hlc3QgcHJpb3JpdHlcbiAgICAgICAgaWYgKHRoaXMub2JqZWN0U291cmNlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgb2JqQ29uZmlnIG9mIHRoaXMub2JqZWN0U291cmNlcykge1xuICAgICAgICAgICAgICAgIGNvbmZpZyA9IE9iamVjdFV0aWwuZGVlcE1lcmdlKGNvbmZpZywgb2JqQ29uZmlnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDIuIEpTT04gc291cmNlcyBjb21lIG5leHRcbiAgICAgICAgY29uc3QganNvbkNvbmZpZ3MgPSB0aGlzLmpzb25Tb3VyY2VzLmZpbHRlcihzb3VyY2UgPT4gc291cmNlLmlzTG9hZGVkICYmIHR5cGVvZiBzb3VyY2UuY29uZmlndXJhdGlvbiA9PT0gJ29iamVjdCcpLm1hcChzb3VyY2UgPT4gc291cmNlLmNvbmZpZ3VyYXRpb24pO1xuICAgICAgICBpZiAoanNvbkNvbmZpZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGpzb25Db25maWcgb2YganNvbkNvbmZpZ3MpIHtcbiAgICAgICAgICAgICAgICBpZiAoanNvbkNvbmZpZykge1xuICAgICAgICAgICAgICAgICAgICBjb25maWcgPSBPYmplY3RVdGlsLmRlZXBNZXJnZShjb25maWcsIGpzb25Db25maWcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDMuIHByb2plY3QgZW52IGhhcyB0aGUgbmV4dCBwcmlvcml0eVxuICAgICAgICBpZiAodGhpcy5wcm9qZWN0RW52aXJvbm1lbnQpIHtcbiAgICAgICAgICAgIGNvbmZpZyA9IE9iamVjdFV0aWwuZGVlcE1lcmdlKGNvbmZpZywgdGhpcy5wcm9qZWN0RW52aXJvbm1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gNC4gbW9kdWxlIGNvbmZpZyBoYXMgdGhlIGxvd2VzdCBwcmlvcml0eVxuICAgICAgICBpZiAodGhpcy5tb2R1bGVDb25maWcpIHtcbiAgICAgICAgICAgIGNvbmZpZyA9IE9iamVjdFV0aWwuZGVlcE1lcmdlKGNvbmZpZywgdGhpcy5tb2R1bGVDb25maWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlnO1xuICAgIH1cbn1cblxuaW50ZXJmYWNlIEpzb25Tb3VyY2VMb2FkSW5mbyB7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgaXNMb2FkZWQ6IGJvb2xlYW47XG4gICAgaXNFbnZpcm9ubWVudDogYm9vbGVhbjtcbiAgICBlbnZpcm9ubWVudD86IHN0cmluZyB8IG51bGw7XG4gICAgZW52aXJvbm1lbnRFbmFibGVFbnZQcm9kPzogYm9vbGVhbjtcbiAgICBjb25maWd1cmF0aW9uPzogb2JqZWN0O1xufVxuIl19
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9jb25maWd1cmF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFhLGFBQWEsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3hELE9BQU8sRUFBQyxVQUFVLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHL0MsT0FBTyxFQUFZLFVBQVUsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUUvQyxNQUFNLE9BQU8sdUJBQXVCO2FBQ2pCLGNBQVMsR0FBNEIsSUFBSSx1QkFBdUIsRUFBRSxBQUF6RCxDQUEwRDtJQUUzRSxNQUFNLENBQUMsR0FBRztRQUNiLE9BQU8sdUJBQXVCLENBQUMsU0FBUyxDQUFDO0lBQzdDLENBQUM7SUFZRDtRQUxRLGdCQUFXLEdBQThCLEVBQUUsQ0FBQztRQUM1QyxrQkFBYSxHQUFlLEVBQUUsQ0FBQztRQUUvQixrQkFBYSxHQUFHLEVBQUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUMsQ0FBQztRQXVFckQ7O1dBRUc7UUFDSywyQkFBc0IsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7UUFFbEc7OztXQUdHO1FBQ0ksMkJBQXNCLEdBQUcsR0FBd0IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7UUE3RTNILDRDQUE0QztJQUNoRCxDQUFDO0lBRU0sSUFBSSxDQUFDLFVBQXNCLEVBQUUsTUFBMEI7UUFDMUQsSUFBSSxDQUFDLElBQUks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LE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksT0FBTyxNQUFNLENBQUMsYUFBYSxLQUFLLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN2SixJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUU7WUFDcEIsS0FBSyxNQUFNLFVBQVUsSUFBSSxXQUFXLEVBQUU7Z0JBQ2xDLElBQUksVUFBVSxFQUFFO29CQUNaLE1BQU0sR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztpQkFDckQ7YUFDSjtTQUNKO1FBRUQsdUNBQXVDO1FBQ3ZDLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ3pCLE1BQU0sR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztTQUNsRTtRQUVELDJDQUEyQztRQUMzQyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsTUFBTSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUM1RDtRQUVELElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDO0lBQ2hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0h0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7T2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgb2YsIHRhcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2NhdGNoRXJyb3IsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge0lNbmdMb2dnZXJTZXJ2aWNlLCBNbmdNb2R1bGVDb25maWd9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQge0Vycm9yVXRpbCwgT2JqZWN0VXRpbH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgTW5nQ29uZmlndXJhdGlvblNlcnZpY2Uge1xuICAgIHByaXZhdGUgc3RhdGljIF9pbnN0YW5jZTogTW5nQ29uZmlndXJhdGlvblNlcnZpY2UgPSBuZXcgTW5nQ29uZmlndXJhdGlvblNlcnZpY2UoKTtcblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0KCk6IE1uZ0NvbmZpZ3VyYXRpb25TZXJ2aWNlIHtcbiAgICAgICAgcmV0dXJuIE1uZ0NvbmZpZ3VyYXRpb25TZXJ2aWNlLl9pbnN0YW5jZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvZ2dlcj86IElNbmdMb2dnZXJTZXJ2aWNlO1xuXG4gICAgcHJpdmF0ZSBodHRwPzogSHR0cENsaWVudDtcbiAgICBwcml2YXRlIG1vZHVsZUNvbmZpZz86IE1uZ01vZHVsZUNvbmZpZztcbiAgICBwcml2YXRlIHByb2plY3RFbnZpcm9ubWVudD86IGFueTtcbiAgICBwcml2YXRlIGpzb25Tb3VyY2VzOiBBcnJheTxKc29uU291cmNlTG9hZEluZm8+ID0gW107XG4gICAgcHJpdmF0ZSBvYmplY3RTb3VyY2VzOiBBcnJheTxhbnk+ID0gW107XG5cbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb24gPSB7Li4udGhpcy5wcm9qZWN0RW52aXJvbm1lbnR9O1xuXG4gICAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgLy8gZW1wdHksIGJ1dCBuZWVkZWQgZm9yIHByaXZhdGUgY29uc3RydWN0b3JcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5pdChodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBsb2dnZXI/OiBJTW5nTG9nZ2VyU2VydmljZSk6IHRoaXMge1xuICAgICAgICB0aGlzLmh0dHAgPSBodHRwQ2xpZW50O1xuICAgICAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlcj8uY3JlYXRlKCdNbmdDb25maWd1cmF0aW9uU2VydmljZScpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgbW5nIGNvbW1vbnMgbW9kdWxlIGNvbmZpZy5cbiAgICAgKiBAcGFyYW0gY29uZmlnIE1vZHVsZSBjb25maWcuXG4gICAgICovXG4gICAgcHVibGljIGFkZE1vZHVsZUNvbmZpZ1NvdXJjZShjb25maWc/OiBNbmdNb2R1bGVDb25maWcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb2R1bGVDb25maWcgPSBjb25maWc7XG4gICAgICAgIHRoaXMubWVyZ2VDb25maWdzKCk7XG4gICAgICAgIHRoaXMubG9nZ2VyPy5kZWJ1ZyhgTW9kdWxlIGNvbmZpZ3VyYXRpb24gc291cmNlIGFkZGVkLmApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCBwcm9qZWN0IGVudmlyb25tZW50IHNvdXJjZS5cbiAgICAgKiBAcGFyYW0gZW52aXJvbm1lbnQgRW52aXJvbm1lbnQuXG4gICAgICovXG4gICAgcHVibGljIGFkZEVudmlyb25tZW50U291cmNlKGVudmlyb25tZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9qZWN0RW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgICAgICAgdGhpcy5tZXJnZUNvbmZpZ3MoKTtcbiAgICAgICAgdGhpcy5sb2dnZXI/LmRlYnVnKGBFbnZpcm9ubWVudCBjb25maWd1cmF0aW9uIHNvdXJjZSBhZGRlZC5gKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIG5ldyBjb25maWcgc291cmNlIGZyb20gSlNPTiBmaWxlIGxvYWRlZCBmcm9tIEhUVFAuXG4gICAgICogQHBhcmFtIGNvbmZpZyBDb25maWcgZm9yIEpTT04gZmlsZS5cbiAgICAgKiBAcGFyYW0gbG9hZEltbWVkaWF0ZWx5IExvYWQgaXMgYnkgZGVmYXVsdCB0cmlnZ2VyZWQgb24gYXBwIGluaXRpYWxpemF0aW9uLiBJZiBpbW1lZGlhdGUgbG9hZCBpcyByZXF1aXJlZCwgcGFzcyB0cnVlLlxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRKc29uU291cmNlKGNvbmZpZzoge3VybD86IHN0cmluZzsgZW5hYmxlRW52UHJvZD86IGJvb2xlYW59ID0ge30sIGxvYWRJbW1lZGlhdGVseSA9IGZhbHNlKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIGlmICghY29uZmlnKSB7XG4gICAgICAgICAgICBjb25maWcgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1cmwgPSBjb25maWc/LnVybCA/PyAnYXNzZXRzL2NvbmZpZy9lbnZ7e2Vudmlyb25tZW50fX0uanNvbic7XG4gICAgICAgIGNvbnN0IGVuYWJsZUVudlByb2RSZXBsYWNlID0gY29uZmlnPy5lbmFibGVFbnZQcm9kID8/IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHNvdXJjZUluZm86IEpzb25Tb3VyY2VMb2FkSW5mbyA9IHtcbiAgICAgICAgICAgIHVybDogdXJsLFxuICAgICAgICAgICAgaXNFbnZpcm9ubWVudDogZmFsc2UsXG4gICAgICAgICAgICBlbnZpcm9ubWVudEVuYWJsZUVudlByb2Q6IGVuYWJsZUVudlByb2RSZXBsYWNlLFxuICAgICAgICAgICAgaXNMb2FkZWQ6IGZhbHNlXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuanNvblNvdXJjZXMucHVzaChzb3VyY2VJbmZvKTtcblxuICAgICAgICB0aGlzLmxvZ2dlcj8uZGVidWcoYEpTT04gY29uZmlndXJhdGlvbiBzb3VyY2UgYWRkZWQ6ICR7dXJsfS5gKTtcblxuICAgICAgICBpZiAobG9hZEltbWVkaWF0ZWx5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkSnNvbkNvbmZpZ3VyYXRpb25zKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIG5ldyBjb25maWcgb2JqZWN0IGZyb20gYW55IG9iamVjdC5cbiAgICAgKiBAcGFyYW0gY29uZmlnIENvbmZpZyBvYmplY3QuXG4gICAgICovXG4gICAgcHVibGljIGFkZE9iamVjdFNvdXJjZShjb25maWc6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9iamVjdFNvdXJjZXMucHVzaChjb25maWcpO1xuICAgICAgICB0aGlzLmxvZ2dlcj8uZGVidWcoYE9iamVjdCBjb25maWd1cmF0aW9uIHNvdXJjZSBhZGRlZC5gKTtcbiAgICAgICAgdGhpcy5tZXJnZUNvbmZpZ3MoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm5zIHRydWUgaWYgdGhlcmUgaXMgbm8ganNvblNvdXJjZXNcbiAgICAgKi9cbiAgICBwcml2YXRlIHNraXBKc29uQ29uZmlnc0xvYWRpbmcgPSAoKSA9PiB0aGlzLmpzb25Tb3VyY2VzID09PSBudWxsIHx8IHRoaXMuanNvblNvdXJjZXMubGVuZ3RoID09PSAwO1xuXG4gICAgLyoqXG4gICAgICogbG9hZHMganNvbiBzb3VyY2VzIG9yIHNraXBzIHRoZW0gcmV0dXJuaW5nIHRydWUgaW4gYm90aCBjYXNlc1xuICAgICAqIHVzZWQgZm9yIGBza2lwSnNvblNvdXJjZUluaXRgIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyXG4gICAgICovXG4gICAgcHVibGljIGxvYWRKc29uQ29uZmlndXJhdGlvbnMgPSAoKTogT2JzZXJ2YWJsZTxib29sZWFuPiA9PiAodGhpcy5za2lwSnNvbkNvbmZpZ3NMb2FkaW5nKCkgPyBvZih0cnVlKSA6IHRoaXMubG9hZEpzb25Tb3VyY2VzKCkpO1xuXG4gICAgcHJpdmF0ZSBsb2FkSnNvblNvdXJjZXMoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIGlmICghdGhpcy5odHRwKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlcj8ud2FybignSFRUUCBjbGllbnQgd2FzIG5vdCBpbml0aWFsaXplZC4gSnNvbiBzb3VyY2UgY2Fubm90IGJlIGxvYWRlZCcpO1xuICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGh0dHBDbGllbnQgPSB0aGlzLmh0dHA7XG5cbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoXG4gICAgICAgICAgICB0aGlzLmpzb25Tb3VyY2VzXG4gICAgICAgICAgICAgICAgLmZpbHRlcihzb3VyY2UgPT4gIXNvdXJjZS5pc0xvYWRlZClcbiAgICAgICAgICAgICAgICAubWFwKHNvdXJjZUluZm8gPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gc291cmNlSW5mby51cmw7XG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZUluZm8uZW52aXJvbm1lbnQgPSB0aGlzLnByb2plY3RFbnZpcm9ubWVudC5uYW1lIHx8ICh0aGlzLnByb2plY3RFbnZpcm9ubWVudC5wcm9kdWN0aW9uID8gKHNvdXJjZUluZm8uZW52aXJvbm1lbnRFbmFibGVFbnZQcm9kID8gJ3Byb2QnIDogbnVsbCkgOiAnZGV2Jyk7XG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZUluZm8uaXNFbnZpcm9ubWVudCA9ICEhc291cmNlSW5mby5lbnZpcm9ubWVudDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlSW5mby5pc0Vudmlyb25tZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSB1cmwucmVwbGFjZSgne3tlbnZpcm9ubWVudH19JywgJy4nICsgc291cmNlSW5mby5lbnZpcm9ubWVudCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyByZXBsYWNlIHBvc3NpYmxlIGVudmlyb25tZW50IGVudHJ5IGFuZCBjaGFuZ2Ugc291cmNlIGluZm8gdXJsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSB1cmwucmVwbGFjZSgne3tlbnZpcm9ubWVudH19JywgJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlSW5mby51cmwgPSB1cmw7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlcj8uZGVidWcoYExvYWRpbmcgSlNPTiBjb25maWd1cmF0aW9uIHNvdXJjZSBmcm9tICR7dXJsfS5gKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaHR0cENsaWVudC5nZXQ8b2JqZWN0Pih1cmwpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZUluZm8uaXNFbnZpcm9ubWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBub0VudlVybCA9IHNvdXJjZUluZm8udXJsLnJlcGxhY2UoJ3t7ZW52aXJvbm1lbnR9fScsICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlSW5mby5lbnZpcm9ubWVudCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBodHRwQ2xpZW50LmdldDxvYmplY3Q+KG5vRW52VXJsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlcj8ud2FybihgQ29uZmlndXJhdGlvbiBmaWxlICR7dXJsfSBub3QgbG9hZGVkYCwgZXJyKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKGNvbmZpZ3VyYXRpb24gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY29uZmlndXJhdGlvbiAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZUluZm8uY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlSW5mby5pc0xvYWRlZCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgKS5waXBlKFxuICAgICAgICAgICAgbWFwKHNvdXJjZVJlc3VsdHMgPT4gc291cmNlUmVzdWx0cy5ldmVyeShzciA9PiBzcikpLFxuICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMubWVyZ2VDb25maWdzKCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gICAgcHVibGljIGdldENvbmZpZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgY29uZmlndXJhdGlvbiB2YWx1ZSBmb3Iga2V5LlxuICAgICAqIEBwYXJhbSBrZXkgQ29uZmlndXJhdGlvbiBrZXkuXG4gICAgICovXG4gICAgcHVibGljIGdldENvbmZpZ1ZhbHVlPFQgPSBhbnk+KGtleTogc3RyaW5nKTogVCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uW2tleV0gPyB0aGlzLmNvbmZpZ3VyYXRpb25ba2V5XSA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFzIGNvbmZpZ3VyYXRpb24gZm9yIGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IENvbmZpZ3VyYXRpb24ga2V5LlxuICAgICAqL1xuICAgIHB1YmxpYyBoYXNDb25maWdLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY29uZmlndXJhdGlvbikuc29tZShrID0+IGsgPT09IGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWVyZ2VzIGNvbmZpZ3VyYXRpb24gZnJvbSBtdWx0aXBsZSBzb3VyY2VzIHdpdGhcbiAgICAgKi9cbiAgICBwcml2YXRlIG1lcmdlQ29uZmlncygpIHtcbiAgICAgICAgbGV0IGNvbmZpZyA9IHt9O1xuXG4gICAgICAgIC8vIDEuIG9iamVjdCBzb3VyY2VzIGhhdmUgaGlnaGVzdCBwcmlvcml0eVxuICAgICAgICBpZiAodGhpcy5vYmplY3RTb3VyY2VzLmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBvYmpDb25maWcgb2YgdGhpcy5vYmplY3RTb3VyY2VzKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnID0gT2JqZWN0VXRpbC5kZWVwTWVyZ2UoY29uZmlnLCBvYmpDb25maWcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gMi4gSlNPTiBzb3VyY2VzIGNvbWUgbmV4dFxuICAgICAgICBjb25zdCBqc29uQ29uZmlncyA9IHRoaXMuanNvblNvdXJjZXMuZmlsdGVyKHNvdXJjZSA9PiBzb3VyY2UuaXNMb2FkZWQgJiYgdHlwZW9mIHNvdXJjZS5jb25maWd1cmF0aW9uID09PSAnb2JqZWN0JykubWFwKHNvdXJjZSA9PiBzb3VyY2UuY29uZmlndXJhdGlvbik7XG4gICAgICAgIGlmIChqc29uQ29uZmlncy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QganNvbkNvbmZpZyBvZiBqc29uQ29uZmlncykge1xuICAgICAgICAgICAgICAgIGlmIChqc29uQ29uZmlnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZyA9IE9iamVjdFV0aWwuZGVlcE1lcmdlKGNvbmZpZywganNvbkNvbmZpZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gMy4gcHJvamVjdCBlbnYgaGFzIHRoZSBuZXh0IHByaW9yaXR5XG4gICAgICAgIGlmICh0aGlzLnByb2plY3RFbnZpcm9ubWVudCkge1xuICAgICAgICAgICAgY29uZmlnID0gT2JqZWN0VXRpbC5kZWVwTWVyZ2UoY29uZmlnLCB0aGlzLnByb2plY3RFbnZpcm9ubWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyA0LiBtb2R1bGUgY29uZmlnIGhhcyB0aGUgbG93ZXN0IHByaW9yaXR5XG4gICAgICAgIGlmICh0aGlzLm1vZHVsZUNvbmZpZykge1xuICAgICAgICAgICAgY29uZmlnID0gT2JqZWN0VXRpbC5kZWVwTWVyZ2UoY29uZmlnLCB0aGlzLm1vZHVsZUNvbmZpZyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWc7XG4gICAgfVxufVxuXG5pbnRlcmZhY2UgSnNvblNvdXJjZUxvYWRJbmZvIHtcbiAgICB1cmw6IHN0cmluZztcbiAgICBpc0xvYWRlZDogYm9vbGVhbjtcbiAgICBpc0Vudmlyb25tZW50OiBib29sZWFuO1xuICAgIGVudmlyb25tZW50Pzogc3RyaW5nIHwgbnVsbDtcbiAgICBlbnZpcm9ubWVudEVuYWJsZUVudlByb2Q/OiBib29sZWFuO1xuICAgIGNvbmZpZ3VyYXRpb24/OiBvYmplY3Q7XG59XG4iXX0=
@@ -7,5 +7,6 @@ export * from './router.service';
7
7
  export * from './version.service';
8
8
  export * from './view-container.component.service';
9
9
  export * from './mng-localstorage-config.service';
10
+ export * from './log-publisher-console.service';
10
11
  export * from './logger.service';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FjdGlvbi1leGVjdXRvci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uLWVycm9yLW1hcHBlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY29tbW9ucy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcm91dGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi92ZXJzaW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi92aWV3LWNvbnRhaW5lci5jb21wb25lbnQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL21uZy1sb2NhbHN0b3JhZ2UtY29uZmlnLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2dnZXIuc2VydmljZSc7XG4iXX0=
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYWN0aW9uLWV4ZWN1dG9yLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24tZXJyb3ItbWFwcGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21tb25zLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9yb3V0ZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3ZlcnNpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3ZpZXctY29udGFpbmVyLmNvbXBvbmVudC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbW5nLWxvY2Fsc3RvcmFnZS1jb25maWcuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xvZy1wdWJsaXNoZXItY29uc29sZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbG9nZ2VyLnNlcnZpY2UnO1xuIl19
@@ -3,12 +3,13 @@ import { Injectable, inject } from '@angular/core';
3
3
  import { combineLatest, mergeMap, of } from 'rxjs';
4
4
  import { map } from 'rxjs/operators';
5
5
  import { MngCommonsService, MngConfigurationService, MngLoggerService, MngRouterService } from '../';
6
- import { MNG_COMMONS_INITIALIZER_IT, MNG_MODULE_CONFIG_IT } from '../tokens';
6
+ import { MNG_COMMONS_INITIALIZER_IT, MNG_LOG_PUBLISHERS, MNG_MODULE_CONFIG_IT } from '../tokens';
7
7
  import * as i0 from "@angular/core";
8
8
  export class MngCommonsInitService {
9
9
  constructor() {
10
10
  this.httpClient = inject(HttpClient);
11
11
  this.logger = inject(MngLoggerService);
12
+ this.logPublishers = inject(MNG_LOG_PUBLISHERS, { optional: true });
12
13
  this.config = inject(MngConfigurationService);
13
14
  this.mngCommons = inject(MngCommonsService);
14
15
  this.mngRouter = inject(MngRouterService);
@@ -48,7 +49,7 @@ export class MngCommonsInitService {
48
49
  }
49
50
  return this.config.loadJsonConfigurations().pipe(mergeMap(() => {
50
51
  // init logger
51
- MngLoggerService.init(this.config);
52
+ MngLoggerService.init(this.config, this.logPublishers ?? []);
52
53
  if (this.commonsInitializers) {
53
54
  ctxLogger.debug('Project initializers are being initialized');
54
55
  return combineLatest(this.commonsInitializers.map(ci => ci())).pipe(map(res => res));
@@ -70,4 +71,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
70
71
  providedIn: 'root'
71
72
  }]
72
73
  }] });
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9ucy1pbml0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ludGVybmFsL2NvbW1vbnMtaW5pdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQWEsYUFBYSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0QsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRW5DLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLEtBQUssQ0FBQztBQUNuRyxPQUFPLEVBQUMsMEJBQTBCLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxXQUFXLENBQUM7O0FBSzNFLE1BQU0sT0FBTyxxQkFBcUI7SUFIbEM7UUFJcUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxXQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDbEMsV0FBTSxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3pDLGVBQVUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN2QyxjQUFTLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDckMsaUJBQVksR0FBRyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUM5RCx3QkFBbUIsR0FBRyxNQUFNLENBQUMsMEJBQTBCLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUVwRixrQkFBYSxH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QyxHQUFHLEVBQUU7WUFDTCxTQUFTLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7WUFDdEQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDOzhHQTlEUSxxQkFBcUI7a0hBQXJCLHFCQUFxQixjQUZsQixNQUFNOzsyRkFFVCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge0luamVjdGFibGUsIGluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7T2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgbWVyZ2VNYXAsIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7TW5nQ29tbW9uc1NlcnZpY2UsIE1uZ0NvbmZpZ3VyYXRpb25TZXJ2aWNlLCBNbmdMb2dnZXJTZXJ2aWNlLCBNbmdSb3V0ZXJTZXJ2aWNlfSBmcm9tICcuLi8nO1xuaW1wb3J0IHtNTkdfQ09NTU9OU19JTklUSUFMSVpFUl9JVCwgTU5HX01PRFVMRV9DT05GSUdfSVR9IGZyb20gJy4uL3Rva2Vucyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTW5nQ29tbW9uc0luaXRTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHBDbGllbnQgPSBpbmplY3QoSHR0cENsaWVudCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBpbmplY3QoTW5nTG9nZ2VyU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBpbmplY3QoTW5nQ29uZmlndXJhdGlvblNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbW5nQ29tbW9ucyA9IGluamVjdChNbmdDb21tb25zU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtbmdSb3V0ZXIgPSBpbmplY3QoTW5nUm91dGVyU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtb2R1bGVDb25maWcgPSBpbmplY3QoTU5HX01PRFVMRV9DT05GSUdfSVQsIHtvcHRpb25hbDogdHJ1ZX0pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29tbW9uc0luaXRpYWxpemVycyA9IGluamVjdChNTkdfQ09NTU9OU19JTklUSUFMSVpFUl9JVCwge29wdGlvbmFsOiB0cnVlfSk7XG5cbiAgICBwcml2YXRlIGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBpbml0aWFsaXplKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5pc0luaXRpYWxpemVkKSB7XG4gICAgICAgICAgICByZXR1cm4gb2Yodm9pZCAwKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgICAgIE1uZ0xvZ2dlclNlcnZpY2UuY29uZmlndXJlKHt0aW1lc3RhbXBGb3JtYXQ6IHRoaXMubW9kdWxlQ29uZmlnPy5sb2c/LnRpbWVzdGFtcEZvcm1hdH0pO1xuXG4gICAgICAgIGNvbnN0IGN0eExvZ2dlciA9IHRoaXMubG9nZ2VyLmNyZWF0ZSgnTW5nQ29tbW9uc0luaXRTZXJ2aWNlJyk7XG4gICAgICAgIGN0eExvZ2dlci5kZWJ1ZygnQ29tbW9ucyBpbml0aWFsaXphdGlvbiBpcyBzdGFydGluZycpO1xuXG4gICAgICAgIC8vIGluaXQgcm91dGVyXG4gICAgICAgIHRoaXMubW5nUm91dGVyLmluaXRpYWxpemUoKTtcblxuICAgICAgICAvLyBpbml0IGNvbmZpZ3VyYXRpb25zIHdpdGggc2V0dGluZ3MgZnJvbSBtb2R1bGUgY29uZmlnXG4gICAgICAgIHRoaXMuY29uZmlnLmluaXQodGhpcy5odHRwQ2xpZW50LCB0aGlzLmxvZ2dlcik7XG4gICAgICAgIHRoaXMuY29uZmlnLmFkZE1vZHVsZUNvbmZpZ1NvdXJjZSh0aGlzLm1vZHVsZUNvbmZpZyA/PyB1bmRlZmluZWQpO1xuICAgICAgICBpZiAodGhpcy5tb2R1bGVDb25maWc/LmNvbmZpZ3VyYXRpb24/LnByb2plY3RFbnZpcm9ubWVudCkge1xuICAgICAgICAgICAgdGhpcy5jb25maWcuYWRkRW52aXJvbm1lbnRTb3VyY2UodGhpcy5tb2R1bGVDb25maWcuY29uZmlndXJhdGlvbi5wcm9qZWN0RW52aXJvbm1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaW5pdCBjb25maWd1cmF0aW9ucyB3aXRoIHNldHRpbmdzIGZyb20gbW9kdWxlIGNvbmZpZyBmb3IganNvbiBzb3VyY2VcbiAgICAgICAgaWYgKCEodGhpcy5tb2R1bGVDb25maWc/LmNvbmZpZ3VyYXRpb24/LnNraXBKc29uU291cmNlSW5pdCA/PyBmYWxzZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGpzb25Tb3VyY2VFbmFibGVFbnZQcm9kID0gdGhpcy5tb2R1bGVDb25maWc/LmNvbmZpZ3VyYXRpb24/Lmpzb25Tb3VyY2VFbmFibGVFbnZQcm9kID8/IGZhbHNlO1xuICAgICAgICAgICAgY29uc3QganNvblNvdXJjZSA9IHRoaXMubW9kdWxlQ29uZmlnPy5jb25maWd1cmF0aW9uPy5qc29uU291cmNlO1xuICAgICAgICAgICAgaWYgKCFqc29uU291cmNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcuYWRkSnNvblNvdXJjZSh7ZW5hYmxlRW52UHJvZDoganNvblNvdXJjZUVuYWJsZUVudlByb2R9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShqc29uU291cmNlKSkge1xuICAgICAgICAgICAgICAgIGpzb25Tb3VyY2UuZm9yRWFjaChzb3VyY2UgPT4gdGhpcy5jb25maWcuYWRkSnNvblNvdXJjZSh7dXJsOiBzb3VyY2UsIGVuYWJsZUVudlByb2Q6IGpzb25Tb3VyY2VFbmFibGVFbnZQcm9kfSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5hZGRKc29uU291cmNlKHt1cmw6IGpzb25Tb3VyY2UsIGVuYWJsZUVudlByb2Q6IGpzb25Tb3VyY2VFbmFibGVFbnZQcm9kfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcubG9hZEpzb25Db25maWd1cmF0aW9ucygpLnBpcGUoXG4gICAgICAgICAgICBtZXJnZU1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gaW5pdCBsb2dnZXJcbiAgICAgICAgICAgICAgICBNbmdMb2dnZXJTZXJ2aWNlLmluaXQodGhpcy5jb25maWcpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uc0luaXRpYWxpemVycykge1xuICAgICAgICAgICAgICAgICAgICBjdHhMb2dnZXIuZGVidWcoJ1Byb2plY3QgaW5pdGlhbGl6ZXJzIGFyZSBiZWluZyBpbml0aWFsaXplZCcpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdCh0aGlzLmNvbW1vbnNJbml0aWFsaXplcnMubWFwKGNpID0+IGNpKCkpKS5waXBlKG1hcChyZXMgPT4gcmVzKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjdHhMb2dnZXIuZGVidWcoJ0NvbW1vbnMgaW5pdGlhbGl6YXRpb24gaXMgZmluaXNoZWQnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tbmdDb21tb25zLnJlc2V0KCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9ucy1pbml0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ludGVybmFsL2NvbW1vbnMtaW5pdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQWEsYUFBYSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0QsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRW5DLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLEtBQUssQ0FBQztBQUNuRyxPQUFPLEVBQUMsMEJBQTBCLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxXQUFXLENBQUM7O0FBSy9GLE1BQU0sT0FBTyxxQkFBcUI7SUFIbEM7UUFJcUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxXQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDbEMsa0JBQWEsR0FBRyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUM3RCxXQUFNLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDekMsZUFBVSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3ZDLGNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNyQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FB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QUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ3hGO2lCQUFNO2dCQUNILE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ25CO1FBQ0wsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNMLFNBQVMsQ0FBQyxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztZQUN0RCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7OEdBL0RRLHFCQUFxQjtrSEFBckIscUJBQXFCLGNBRmxCLE1BQU07OzJGQUVULHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0h0dHBDbGllbnR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7SW5qZWN0YWJsZSwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtPYnNlcnZhYmxlLCBjb21iaW5lTGF0ZXN0LCBtZXJnZU1hcCwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtNbmdDb21tb25zU2VydmljZSwgTW5nQ29uZmlndXJhdGlvblNlcnZpY2UsIE1uZ0xvZ2dlclNlcnZpY2UsIE1uZ1JvdXRlclNlcnZpY2V9IGZyb20gJy4uLyc7XG5pbXBvcnQge01OR19DT01NT05TX0lOSVRJQUxJWkVSX0lULCBNTkdfTE9HX1BVQkxJU0hFUlMsIE1OR19NT0RVTEVfQ09ORklHX0lUfSBmcm9tICcuLi90b2tlbnMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE1uZ0NvbW1vbnNJbml0U2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwQ2xpZW50ID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gaW5qZWN0KE1uZ0xvZ2dlclNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nUHVibGlzaGVycyA9IGluamVjdChNTkdfTE9HX1BVQkxJU0hFUlMsIHtvcHRpb25hbDogdHJ1ZX0pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0KE1uZ0NvbmZpZ3VyYXRpb25TZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1uZ0NvbW1vbnMgPSBpbmplY3QoTW5nQ29tbW9uc1NlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbW5nUm91dGVyID0gaW5qZWN0KE1uZ1JvdXRlclNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbW9kdWxlQ29uZmlnID0gaW5qZWN0KE1OR19NT0RVTEVfQ09ORklHX0lULCB7b3B0aW9uYWw6IHRydWV9KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbW1vbnNJbml0aWFsaXplcnMgPSBpbmplY3QoTU5HX0NPTU1PTlNfSU5JVElBTElaRVJfSVQsIHtvcHRpb25hbDogdHJ1ZX0pO1xuXG4gICAgcHJpdmF0ZSBpc0luaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgaW5pdGlhbGl6ZSgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNJbml0aWFsaXplZCkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHZvaWQgMCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcblxuICAgICAgICBNbmdMb2dnZXJTZXJ2aWNlLmNvbmZpZ3VyZSh7dGltZXN0YW1wRm9ybWF0OiB0aGlzLm1vZHVsZUNvbmZpZz8ubG9nPy50aW1lc3RhbXBGb3JtYXR9KTtcblxuICAgICAgICBjb25zdCBjdHhMb2dnZXIgPSB0aGlzLmxvZ2dlci5jcmVhdGUoJ01uZ0NvbW1vbnNJbml0U2VydmljZScpO1xuICAgICAgICBjdHhMb2dnZXIuZGVidWcoJ0NvbW1vbnMgaW5pdGlhbGl6YXRpb24gaXMgc3RhcnRpbmcnKTtcblxuICAgICAgICAvLyBpbml0IHJvdXRlclxuICAgICAgICB0aGlzLm1uZ1JvdXRlci5pbml0aWFsaXplKCk7XG5cbiAgICAgICAgLy8gaW5pdCBjb25maWd1cmF0aW9ucyB3aXRoIHNldHRpbmdzIGZyb20gbW9kdWxlIGNvbmZpZ1xuICAgICAgICB0aGlzLmNvbmZpZy5pbml0KHRoaXMuaHR0cENsaWVudCwgdGhpcy5sb2dnZXIpO1xuICAgICAgICB0aGlzLmNvbmZpZy5hZGRNb2R1bGVDb25maWdTb3VyY2UodGhpcy5tb2R1bGVDb25maWcgPz8gdW5kZWZpbmVkKTtcbiAgICAgICAgaWYgKHRoaXMubW9kdWxlQ29uZmlnPy5jb25maWd1cmF0aW9uPy5wcm9qZWN0RW52aXJvbm1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmFkZEVudmlyb25tZW50U291cmNlKHRoaXMubW9kdWxlQ29uZmlnLmNvbmZpZ3VyYXRpb24ucHJvamVjdEVudmlyb25tZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGluaXQgY29uZmlndXJhdGlvbnMgd2l0aCBzZXR0aW5ncyBmcm9tIG1vZHVsZSBjb25maWcgZm9yIGpzb24gc291cmNlXG4gICAgICAgIGlmICghKHRoaXMubW9kdWxlQ29uZmlnPy5jb25maWd1cmF0aW9uPy5za2lwSnNvblNvdXJjZUluaXQgPz8gZmFsc2UpKSB7XG4gICAgICAgICAgICBjb25zdCBqc29uU291cmNlRW5hYmxlRW52UHJvZCA9IHRoaXMubW9kdWxlQ29uZmlnPy5jb25maWd1cmF0aW9uPy5qc29uU291cmNlRW5hYmxlRW52UHJvZCA/PyBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGpzb25Tb3VyY2UgPSB0aGlzLm1vZHVsZUNvbmZpZz8uY29uZmlndXJhdGlvbj8uanNvblNvdXJjZTtcbiAgICAgICAgICAgIGlmICghanNvblNvdXJjZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmFkZEpzb25Tb3VyY2Uoe2VuYWJsZUVudlByb2Q6IGpzb25Tb3VyY2VFbmFibGVFbnZQcm9kfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoanNvblNvdXJjZSkpIHtcbiAgICAgICAgICAgICAgICBqc29uU291cmNlLmZvckVhY2goc291cmNlID0+IHRoaXMuY29uZmlnLmFkZEpzb25Tb3VyY2Uoe3VybDogc291cmNlLCBlbmFibGVFbnZQcm9kOiBqc29uU291cmNlRW5hYmxlRW52UHJvZH0pKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcuYWRkSnNvblNvdXJjZSh7dXJsOiBqc29uU291cmNlLCBlbmFibGVFbnZQcm9kOiBqc29uU291cmNlRW5hYmxlRW52UHJvZH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmxvYWRKc29uQ29uZmlndXJhdGlvbnMoKS5waXBlKFxuICAgICAgICAgICAgbWVyZ2VNYXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIGluaXQgbG9nZ2VyXG4gICAgICAgICAgICAgICAgTW5nTG9nZ2VyU2VydmljZS5pbml0KHRoaXMuY29uZmlnLCB0aGlzLmxvZ1B1Ymxpc2hlcnMgPz8gW10pO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uc0luaXRpYWxpemVycykge1xuICAgICAgICAgICAgICAgICAgICBjdHhMb2dnZXIuZGVidWcoJ1Byb2plY3QgaW5pdGlhbGl6ZXJzIGFyZSBiZWluZyBpbml0aWFsaXplZCcpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdCh0aGlzLmNvbW1vbnNJbml0aWFsaXplcnMubWFwKGNpID0+IGNpKCkpKS5waXBlKG1hcChyZXMgPT4gcmVzKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjdHhMb2dnZXIuZGVidWcoJ0NvbW1vbnMgaW5pdGlhbGl6YXRpb24gaXMgZmluaXNoZWQnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tbmdDb21tb25zLnJlc2V0KCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,40 @@
1
+ /* eslint-disable no-console */
2
+ import { LogLevelEnum } from '../models';
3
+ import { ErrorUtil } from '../utils';
4
+ export class MngLogPublisherConsoleService {
5
+ addEntry(entry) {
6
+ let prefix = `${entry.timestampFormatted}`;
7
+ if (entry.category)
8
+ prefix += ` [${entry.category}]`;
9
+ prefix += ':';
10
+ const message = `${entry.message}${entry.messageDetails ? `\n${entry.messageDetails}` : ''}`;
11
+ const logParams = [prefix, message];
12
+ if (entry.error) {
13
+ logParams.push(`\n${ErrorUtil.getErrorName(entry.error)}:`, entry.error);
14
+ }
15
+ if (entry.data?.length) {
16
+ logParams.push(`\nData:\n`, ...entry.data);
17
+ }
18
+ switch (entry.level) {
19
+ case LogLevelEnum.Trace:
20
+ console.trace(...logParams);
21
+ break;
22
+ case LogLevelEnum.Debug:
23
+ console.debug(...logParams);
24
+ break;
25
+ case LogLevelEnum.Log:
26
+ console.log(...logParams);
27
+ break;
28
+ case LogLevelEnum.Info:
29
+ console.info(...logParams);
30
+ break;
31
+ case LogLevelEnum.Warning:
32
+ console.warn(...logParams);
33
+ break;
34
+ case LogLevelEnum.Error:
35
+ console.error(...logParams);
36
+ break;
37
+ }
38
+ }
39
+ }
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLXB1Ymxpc2hlci1jb25zb2xlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2xvZy1wdWJsaXNoZXItY29uc29sZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQW1CLFlBQVksRUFBYyxNQUFNLFdBQVcsQ0FBQztBQUN0RSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRW5DLE1BQU0sT0FBTyw2QkFBNkI7SUFDdEMsUUFBUSxDQUFDLEtBQWtCO1FBQ3ZCLElBQUksTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDM0MsSUFBSSxLQUFLLENBQUMsUUFBUTtZQUFFLE1BQU0sSUFBSSxLQUFLLEtBQUssQ0FBQyxRQUFRLEdBQUcsQ0FBQztRQUNyRCxNQUFNLElBQUksR0FBRyxDQUFDO1FBRWQsTUFBTSxPQUFPLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUM3RixNQUFNLFNBQVMsR0FBVSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMzQyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFDYixTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUU7UUFDRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ3BCLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlDO1FBRUQsUUFBUSxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQ2pCLEtBQUssWUFBWSxDQUFDLEtBQUs7Z0JBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQztnQkFDNUIsTUFBTTtZQUNWLEtBQUssWUFBWSxDQUFDLEtBQUs7Z0JBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQztnQkFDNUIsTUFBTTtZQUNWLEtBQUssWUFBWSxDQUFDLEdBQUc7Z0JBQ2pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQztnQkFDMUIsTUFBTTtZQUNWLEtBQUssWUFBWSxDQUFDLElBQUk7Z0JBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQztnQkFDM0IsTUFBTTtZQUNWLEtBQUssWUFBWSxDQUFDLE9BQU87Z0JBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQztnQkFDM0IsTUFBTTtZQUNWLEtBQUssWUFBWSxDQUFDLEtBQUs7Z0JBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQztnQkFDNUIsTUFBTTtTQUNiO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHtJTW5nTG9nUHVibGlzaGVyLCBMb2dMZXZlbEVudW0sIE1uZ0xvZ0VudHJ5fSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtFcnJvclV0aWx9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIE1uZ0xvZ1B1Ymxpc2hlckNvbnNvbGVTZXJ2aWNlIGltcGxlbWVudHMgSU1uZ0xvZ1B1Ymxpc2hlciB7XG4gICAgYWRkRW50cnkoZW50cnk6IE1uZ0xvZ0VudHJ5KTogdm9pZCB7XG4gICAgICAgIGxldCBwcmVmaXggPSBgJHtlbnRyeS50aW1lc3RhbXBGb3JtYXR0ZWR9YDtcbiAgICAgICAgaWYgKGVudHJ5LmNhdGVnb3J5KSBwcmVmaXggKz0gYCBbJHtlbnRyeS5jYXRlZ29yeX1dYDtcbiAgICAgICAgcHJlZml4ICs9ICc6JztcblxuICAgICAgICBjb25zdCBtZXNzYWdlID0gYCR7ZW50cnkubWVzc2FnZX0ke2VudHJ5Lm1lc3NhZ2VEZXRhaWxzID8gYFxcbiR7ZW50cnkubWVzc2FnZURldGFpbHN9YCA6ICcnfWA7XG4gICAgICAgIGNvbnN0IGxvZ1BhcmFtczogYW55W10gPSBbcHJlZml4LCBtZXNzYWdlXTtcbiAgICAgICAgaWYgKGVudHJ5LmVycm9yKSB7XG4gICAgICAgICAgICBsb2dQYXJhbXMucHVzaChgXFxuJHtFcnJvclV0aWwuZ2V0RXJyb3JOYW1lKGVudHJ5LmVycm9yKX06YCwgZW50cnkuZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbnRyeS5kYXRhPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGxvZ1BhcmFtcy5wdXNoKGBcXG5EYXRhOlxcbmAsIC4uLmVudHJ5LmRhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoIChlbnRyeS5sZXZlbCkge1xuICAgICAgICAgICAgY2FzZSBMb2dMZXZlbEVudW0uVHJhY2U6XG4gICAgICAgICAgICAgICAgY29uc29sZS50cmFjZSguLi5sb2dQYXJhbXMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBMb2dMZXZlbEVudW0uRGVidWc6XG4gICAgICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyguLi5sb2dQYXJhbXMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBMb2dMZXZlbEVudW0uTG9nOlxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKC4uLmxvZ1BhcmFtcyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIExvZ0xldmVsRW51bS5JbmZvOlxuICAgICAgICAgICAgICAgIGNvbnNvbGUuaW5mbyguLi5sb2dQYXJhbXMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBMb2dMZXZlbEVudW0uV2FybmluZzpcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oLi4ubG9nUGFyYW1zKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTG9nTGV2ZWxFbnVtLkVycm9yOlxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoLi4ubG9nUGFyYW1zKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -1,9 +1,10 @@
1
- /* eslint-disable no-console */
2
1
  import { DatePipe } from '@angular/common';
3
2
  import { LogLevelEnum, MngInternalError } from '../models';
3
+ import { DateUtil } from '../utils';
4
4
  export class MngLoggerService {
5
5
  static { this._instance = new MngLoggerService(); }
6
6
  static { this._isInit = false; }
7
+ static { this._publishers = []; }
7
8
  static { this._entriesBuffer = []; }
8
9
  static { this._categoryInstances = {}; }
9
10
  static { this._timestampFormat = 'yyyy-MM-dd HH:mm:ss.SSS'; }
@@ -21,15 +22,19 @@ export class MngLoggerService {
21
22
  MngLoggerService._timestampFormat = config.timestampFormat;
22
23
  }
23
24
  }
24
- static init(configurationService) {
25
+ static init(configurationService, publishers) {
25
26
  if (MngLoggerService._isInit) {
26
27
  return;
27
28
  }
28
29
  MngLoggerService._configurationService = configurationService;
30
+ MngLoggerService._publishers = publishers;
29
31
  MngLoggerService._isInit = true;
30
32
  MngLoggerService._flushBuffer();
31
33
  }
32
34
  static _flushBuffer() {
35
+ if (!MngLoggerService._isInit) {
36
+ return;
37
+ }
33
38
  MngLoggerService._entriesBuffer.forEach(e => this._instance._log(e));
34
39
  MngLoggerService._entriesBuffer = [];
35
40
  }
@@ -48,26 +53,38 @@ export class MngLoggerService {
48
53
  MngLoggerService._categoryInstances[category] = logger;
49
54
  return logger;
50
55
  }
51
- _processLog(msg, logLevel, category = this.category, data) {
52
- const timestamp = new Date();
53
- const timestampFormatted = this.datePipe.transform(timestamp, MngLoggerService._timestampFormat);
54
- const log = {
56
+ _processLog(msgOrError, logLevel, category = undefined, data) {
57
+ const [timestamp, timestampFormatted] = [...this._getTimestamps()];
58
+ const logEntry = {
55
59
  level: logLevel,
56
- message: msg,
60
+ message: typeof msgOrError === 'string' ? msgOrError : msgOrError.message,
57
61
  data: data,
58
- category: category,
62
+ category: this.category ?? category,
59
63
  timestamp: timestamp,
60
64
  timestampFormatted: timestampFormatted ?? undefined
61
65
  };
62
- if (!MngLoggerService._isInit) {
63
- // add to buffer
64
- MngLoggerService._entriesBuffer.push(log);
66
+ if (msgOrError instanceof Error) {
67
+ // set error from message param
68
+ logEntry.error = msgOrError;
65
69
  }
66
- else {
67
- this._log(log);
70
+ else if (data?.length && data[0] instanceof Error) {
71
+ // if first data is error, also consider as error
72
+ logEntry.error = data[0];
73
+ data = data.splice(1);
68
74
  }
75
+ this._log(logEntry);
76
+ }
77
+ _getTimestamps() {
78
+ const timestamp = new Date();
79
+ const timestampFormatted = this.datePipe.transform(timestamp, MngLoggerService._timestampFormat) ?? DateUtil.toIsoString(timestamp, false, true, true);
80
+ return [timestamp, timestampFormatted];
69
81
  }
70
82
  _log(log) {
83
+ if (!MngLoggerService._isInit) {
84
+ // add to buffer
85
+ MngLoggerService._entriesBuffer.push(log);
86
+ return;
87
+ }
71
88
  const logConfig = (MngLoggerService._configurationService?.getConfigValue)?.('log');
72
89
  if ((this.category && log.level < (logConfig?.category?.[this.category]?.level ?? logConfig?.level ?? this.defaultLogLevel)) ||
73
90
  (!this.category && log.level < (logConfig?.level ?? this.defaultLogLevel))) {
@@ -76,48 +93,38 @@ export class MngLoggerService {
76
93
  if (logConfig?.timestampFormat) {
77
94
  log.timestampFormatted = this.datePipe.transform(log.timestamp, logConfig.timestampFormat) ?? undefined;
78
95
  }
79
- let prefix = `${log.timestampFormatted}`;
80
- if (log.category)
81
- prefix += ` [${log.category}]`;
82
- prefix += ':';
83
- switch (log.level) {
84
- case LogLevelEnum.Trace:
85
- console.trace(prefix, log.message, ...log.data);
86
- break;
87
- case LogLevelEnum.Debug:
88
- console.debug(prefix, log.message, ...log.data);
89
- break;
90
- case LogLevelEnum.Log:
91
- console.log(prefix, log.message, ...log.data);
92
- break;
93
- case LogLevelEnum.Info:
94
- console.info(prefix, log.message, ...log.data);
95
- break;
96
- case LogLevelEnum.Warning:
97
- console.warn(prefix, log.message, ...log.data);
98
- break;
99
- case LogLevelEnum.Error:
100
- console.error(prefix, log.message, ...log.data);
101
- break;
102
- }
96
+ MngLoggerService._publishers.forEach(p => p.addEntry(log));
97
+ }
98
+ trace(msgOrError, ...data) {
99
+ this._processLog(msgOrError, LogLevelEnum.Trace, undefined, data);
103
100
  }
104
- trace(msg, ...data) {
105
- this._processLog(msg, LogLevelEnum.Trace, undefined, data);
101
+ debug(msgOrError, ...data) {
102
+ this._processLog(msgOrError, LogLevelEnum.Debug, undefined, data);
106
103
  }
107
- debug(msg, ...data) {
108
- this._processLog(msg, LogLevelEnum.Debug, undefined, data);
104
+ log(msgOrError, logLevel = LogLevelEnum.Log, category = undefined, ...data) {
105
+ this._processLog(msgOrError, logLevel, category, data);
109
106
  }
110
- log(msg, logLevel = LogLevelEnum.Log, category = undefined, ...data) {
111
- this._processLog(msg, logLevel, category, data);
107
+ logEntry(logEntry) {
108
+ const [timestamp, timestampFormatted] = [...this._getTimestamps()];
109
+ const logEntryFinal = {
110
+ timestamp: timestamp,
111
+ timestampFormatted: timestampFormatted ?? undefined,
112
+ category: this.category ?? logEntry.category,
113
+ message: '',
114
+ messageDetails: logEntry.messageDetails,
115
+ level: LogLevelEnum.Log,
116
+ ...logEntry
117
+ };
118
+ this._log(logEntryFinal);
112
119
  }
113
- info(msg, ...data) {
114
- this._processLog(msg, LogLevelEnum.Info, undefined, data);
120
+ info(msgOrError, ...data) {
121
+ this._processLog(msgOrError, LogLevelEnum.Info, undefined, data);
115
122
  }
116
- warn(msg, ...data) {
117
- this._processLog(msg, LogLevelEnum.Warning, undefined, data);
123
+ warn(msgOrError, ...data) {
124
+ this._processLog(msgOrError, LogLevelEnum.Warning, undefined, data);
118
125
  }
119
- error(msg, ...data) {
120
- this._processLog(msg, LogLevelEnum.Error, undefined, data);
126
+ error(msgOrError, ...data) {
127
+ this._processLog(msgOrError, LogLevelEnum.Error, undefined, data);
121
128
  }
122
129
  }
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFekMsT0FBTyxFQUFvQixZQUFZLEVBQUUsZ0JBQWdCLEVBQTRCLE1BQU0sV0FBVyxDQUFDO0FBR3ZHLE1BQU0sT0FBTyxnQkFBZ0I7YUFDVixjQUFTLEdBQXFCLElBQUksZ0JBQWdCLEVBQUUsQUFBM0MsQ0FBNEM7YUFDckQsWUFBTyxHQUFHLEtBQUssQUFBUixDQUFTO2FBRWhCLG1CQUFjLEdBQWtCLEVBQUUsQUFBcEIsQ0FBcUI7YUFDbkMsdUJBQWtCLEdBQXFDLEVBQUUsQUFBdkMsQ0FBd0M7YUFDMUQscUJBQWdCLEdBQUcseUJBQXlCLEFBQTVCLENBQTZCO0lBUTVEO1FBSkEsb0VBQW9FO1FBQ25ELG9CQUFlLEdBQWlCLFlBQVksQ0FBQyxJQUFJLENBQUM7UUFDM0QsYUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBR3JDLFFBQVE7SUFDWixDQUFDO0lBRU0sTUFBTSxDQUFDLEdBQUc7UUFDYixPQUFPLGdCQUFnQixDQUFDLFNBQVMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFrQztRQUN0RCxJQUFJLE1BQU0sQ0FBQyxlQUFlLEVBQUU7WUFDeEIsZ0JBQWdCLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztTQUM5RDtJQUNMLENBQUM7SUFFTSxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUE2QztRQUM1RCxJQUFJLGdCQUFnQixDQUFDLE9BQU8sRUFBRTtZQUMxQixPQUFPO1NBQ1Y7UUFFRCxnQkFBZ0IsQ0FBQyxxQkFBcUIsR0FBRyxvQkFBb0IsQ0FBQztRQUU5RCxn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ZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQge0RhdGVQaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQge0lNbmdMb2dnZXJTZXJ2aWNlLCBMb2dMZXZlbEVudW0sIE1uZ0ludGVybmFsRXJyb3IsIE1uZ0xvZ0NvbmZpZywgTW5nTG9nRW50cnl9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQge01uZ0NvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tICcuL2NvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5cbmV4cG9ydCBjbGFzcyBNbmdMb2dnZXJTZXJ2aWNlIGltcGxlbWVudHMgSU1uZ0xvZ2dlclNlcnZpY2Uge1xuICAgIHByaXZhdGUgc3RhdGljIF9pbnN0YW5jZTogTW5nTG9nZ2VyU2VydmljZSA9IG5ldyBNbmdMb2dnZXJTZXJ2aWNlKCk7XG4gICAgcHJpdmF0ZSBzdGF0aWMgX2lzSW5pdCA9IGZhbHNlO1xuICAgIHByaXZhdGUgc3RhdGljIF9jb25maWd1cmF0aW9uU2VydmljZT86IE1uZ0NvbmZpZ3VyYXRpb25TZXJ2aWNlO1xuICAgIHByaXZhdGUgc3RhdGljIF9lbnRyaWVzQnVmZmVyOiBNbmdMb2dFbnRyeVtdID0gW107XG4gICAgcHJpdmF0ZSBzdGF0aWMgX2NhdGVnb3J5SW5zdGFuY2VzOiBSZWNvcmQ8c3RyaW5nLCBNbmdMb2dnZXJTZXJ2aWNlPiA9IHt9O1xuICAgIHByaXZhdGUgc3RhdGljIF90aW1lc3RhbXBGb3JtYXQgPSAneXl5eS1NTS1kZCBISDptbTpzcy5TU1MnO1xuXG4gICAgcHJpdmF0ZSBjYXRlZ29yeT86IHN0cmluZztcblxuICAgIC8vIFRlbXBvcmFyeSBzZXR0aW5ncyB0aGF0IGNvdmVyIGxvZ2dpbmcgY2FsbHMgYmVmb3JlIGluaXRpYWxpc2F0aW9uXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0TG9nTGV2ZWw6IExvZ0xldmVsRW51bSA9IExvZ0xldmVsRW51bS5JbmZvO1xuICAgIHByaXZhdGUgZGF0ZVBpcGUgPSBuZXcgRGF0ZVBpcGUoJ2VuLVVTJyk7XG5cbiAgICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAvLyBlbXB0eVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0KCkge1xuICAgICAgICByZXR1cm4gTW5nTG9nZ2VyU2VydmljZS5faW5zdGFuY2U7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjb25maWd1cmUoY29uZmlnOiB7dGltZXN0YW1wRm9ybWF0Pzogc3RyaW5nfSkge1xuICAgICAgICBpZiAoY29uZmlnLnRpbWVzdGFtcEZvcm1hdCkge1xuICAgICAgICAgICAgTW5nTG9nZ2VyU2VydmljZS5fdGltZXN0YW1wRm9ybWF0ID0gY29uZmlnLnRpbWVzdGFtcEZvcm1hdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaW5pdChjb25maWd1cmF0aW9uU2VydmljZTogTW5nQ29uZmlndXJhdGlvblNlcnZpY2UpIHtcbiAgICAgICAgaWYgKE1uZ0xvZ2dlclNlcnZpY2UuX2lzSW5pdCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgTW5nTG9nZ2VyU2VydmljZS5fY29uZmlndXJhdGlvblNlcnZpY2UgPSBjb25maWd1cmF0aW9uU2VydmljZTtcblxuICAgICAgICBNbmdMb2dnZXJTZXJ2aWNlLl9pc0luaXQgPSB0cnVlO1xuICAgICAgICBNbmdMb2dnZXJTZXJ2aWNlLl9mbHVzaEJ1ZmZlcigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9mbHVzaEJ1ZmZlcigpIHtcbiAgICAgICAgTW5nTG9nZ2VyU2VydmljZS5fZW50cmllc0J1ZmZlci5mb3JFYWNoKGUgPT4gdGhpcy5faW5zdGFuY2UuX2xvZyhlKSk7XG4gICAgICAgIE1uZ0xvZ2dlclNlcnZpY2UuX2VudHJpZXNCdWZmZXIgPSBbXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShjYXRlZ29yeTogc3RyaW5nKTogTW5nTG9nZ2VyU2VydmljZSB7XG4gICAgICAgIHJldHVybiBNbmdMb2dnZXJTZXJ2aWNlLl9pbnN0YW5jZS5jcmVhdGUoY2F0ZWdvcnkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGUoY2F0ZWdvcnk6IHN0cmluZyk6IE1uZ0xvZ2dlclNlcnZpY2Uge1xuICAgICAgICBpZiAodGhpcy5jYXRlZ29yeSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE1uZ0ludGVybmFsRXJyb3IoYENhbm5vdCBjcmVhdGUgbG9nZ2VyIHdpdGggY2F0ZWdvcnkgaW5zaWRlIGFub3RoZXIgY2F0ZWdvcnkgKCR7dGhpcy5jYXRlZ29yeX0pLiBNdXN0IGNyZWF0ZSBsb2dnZXIgb24gcm9vdC5gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoTW5nTG9nZ2VyU2VydmljZS5fY2F0ZWdvcnlJbnN0YW5jZXNbY2F0ZWdvcnldKSB7XG4gICAgICAgICAgICByZXR1cm4gTW5nTG9nZ2VyU2VydmljZS5fY2F0ZWdvcnlJbnN0YW5jZXNbY2F0ZWdvcnldO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbG9nZ2VyID0gbmV3IE1uZ0xvZ2dlclNlcnZpY2UoKTtcbiAgICAgICAgbG9nZ2VyLmNhdGVnb3J5ID0gY2F0ZWdvcnk7XG5cbiAgICAgICAgTW5nTG9nZ2VyU2VydmljZS5fY2F0ZWdvcnlJbnN0YW5jZXNbY2F0ZWdvcnldID0gbG9nZ2VyO1xuXG4gICAgICAgIHJldHVybiBsb2dnZXI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcHJvY2Vzc0xvZyhtc2c6IHN0cmluZywgbG9nTGV2ZWw6IExvZ0xldmVsRW51bSwgY2F0ZWdvcnkgPSB0aGlzLmNhdGVnb3J5LCBkYXRhOiBhbnlbXSkge1xuICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBjb25zdCB0aW1lc3RhbXBGb3JtYXR0ZWQgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aW1lc3RhbXAsIE1uZ0xvZ2dlclNlcnZpY2UuX3RpbWVzdGFtcEZvcm1hdCk7XG4gICAgICAgIGNvbnN0IGxvZyA9IDxNbmdMb2dFbnRyeT57XG4gICAgICAgICAgICBsZXZlbDogbG9nTGV2ZWwsXG4gICAgICAgICAgICBtZXNzYWdlOiBtc2csXG4gICAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IGNhdGVnb3J5LFxuICAgICAgICAgICAgdGltZXN0YW1wOiB0aW1lc3RhbXAsXG4gICAgICAgICAgICB0aW1lc3RhbXBGb3JtYXR0ZWQ6IHRpbWVzdGFtcEZvcm1hdHRlZCA/PyB1bmRlZmluZWRcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoIU1uZ0xvZ2dlclNlcnZpY2UuX2lzSW5pdCkge1xuICAgICAgICAgICAgLy8gYWRkIHRvIGJ1ZmZlclxuICAgICAgICAgICAgTW5nTG9nZ2VyU2VydmljZS5fZW50cmllc0J1ZmZlci5wdXNoKGxvZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9sb2cobG9nKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2xvZyhsb2c6IE1uZ0xvZ0VudHJ5KSB7XG4gICAgICAgIGNvbnN0IGxvZ0NvbmZpZyA9IE1uZ0xvZ2dlclNlcnZpY2UuX2NvbmZpZ3VyYXRpb25TZXJ2aWNlPy5nZXRDb25maWdWYWx1ZTxNbmdMb2dDb25maWc+Py4oJ2xvZycpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAodGhpcy5jYXRlZ29yeSAmJiBsb2cubGV2ZWwgPCAobG9nQ29uZmlnPy5jYXRlZ29yeT8uW3RoaXMuY2F0ZWdvcnldPy5sZXZlbCA/PyBsb2dDb25maWc/LmxldmVsID8/IHRoaXMuZGVmYXVsdExvZ0xldmVsKSkgfHxcbiAgICAgICAgICAgICghdGhpcy5jYXRlZ29yeSAmJiBsb2cubGV2ZWwgPCAobG9nQ29uZmlnPy5sZXZlbCA/PyB0aGlzLmRlZmF1bHRMb2dMZXZlbCkpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxvZ0NvbmZpZz8udGltZXN0YW1wRm9ybWF0KSB7XG4gICAgICAgICAgICBsb2cudGltZXN0YW1wRm9ybWF0dGVkID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0obG9nLnRpbWVzdGFtcCwgbG9nQ29uZmlnLnRpbWVzdGFtcEZvcm1hdCkgPz8gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHByZWZpeCA9IGAke2xvZy50aW1lc3RhbXBGb3JtYXR0ZWR9YDtcbiAgICAgICAgaWYgKGxvZy5jYXRlZ29yeSkgcHJlZml4ICs9IGAgWyR7bG9nLmNhdGVnb3J5fV1gO1xuICAgICAgICBwcmVmaXggKz0gJzonO1xuXG4gICAgICAgIHN3aXRjaCAobG9nLmxldmVsKSB7XG4gICAgICAgICAgICBjYXNlIExvZ0xldmVsRW51bS5UcmFjZTpcbiAgICAgICAgICAgICAgICBjb25zb2xlLnRyYWNlKHByZWZpeCwgbG9nLm1lc3NhZ2UsIC4uLmxvZy5kYXRhKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTG9nTGV2ZWxFbnVtLkRlYnVnOlxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcocHJlZml4LCBsb2cubWVzc2FnZSwgLi4ubG9nLmRhdGEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBMb2dMZXZlbEVudW0uTG9nOlxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHByZWZpeCwgbG9nLm1lc3NhZ2UsIC4uLmxvZy5kYXRhKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTG9nTGV2ZWxFbnVtLkluZm86XG4gICAgICAgICAgICAgICAgY29uc29sZS5pbmZvKHByZWZpeCwgbG9nLm1lc3NhZ2UsIC4uLmxvZy5kYXRhKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTG9nTGV2ZWxFbnVtLldhcm5pbmc6XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKHByZWZpeCwgbG9nLm1lc3NhZ2UsIC4uLmxvZy5kYXRhKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTG9nTGV2ZWxFbnVtLkVycm9yOlxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IocHJlZml4LCBsb2cubWVzc2FnZSwgLi4ubG9nLmRhdGEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHRyYWNlKG1zZzogc3RyaW5nLCAuLi5kYXRhOiBhbnlbXSkge1xuICAgICAgICB0aGlzLl9wcm9jZXNzTG9nKG1zZywgTG9nTGV2ZWxFbnVtLlRyYWNlLCB1bmRlZmluZWQsIGRhdGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZWJ1Zyhtc2c6IHN0cmluZywgLi4uZGF0YTogYW55W10pIHtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc0xvZyhtc2csIExvZ0xldmVsRW51bS5EZWJ1ZywgdW5kZWZpbmVkLCBkYXRhKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9nKG1zZzogc3RyaW5nLCBsb2dMZXZlbDogTG9nTGV2ZWxFbnVtID0gTG9nTGV2ZWxFbnVtLkxvZywgY2F0ZWdvcnk6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCwgLi4uZGF0YTogYW55W10pIHtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc0xvZyhtc2csIGxvZ0xldmVsLCBjYXRlZ29yeSwgZGF0YSk7XG4gICAgfVxuXG4gICAgcHVibGljIGluZm8obXNnOiBzdHJpbmcsIC4uLmRhdGE6IGFueVtdKSB7XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NMb2cobXNnLCBMb2dMZXZlbEVudW0uSW5mbywgdW5kZWZpbmVkLCBkYXRhKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2Fybihtc2c6IHN0cmluZywgLi4uZGF0YTogYW55W10pIHtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc0xvZyhtc2csIExvZ0xldmVsRW51bS5XYXJuaW5nLCB1bmRlZmluZWQsIGRhdGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBlcnJvcihtc2c6IHN0cmluZywgLi4uZGF0YTogYW55W10pIHtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc0xvZyhtc2csIExvZ0xldmVsRW51bS5FcnJvciwgdW5kZWZpbmVkLCBkYXRhKTtcbiAgICB9XG59XG4iXX0=
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxPQUFPLEVBQXNDLFlBQVksRUFBRSxnQkFBZ0IsRUFBNEIsTUFBTSxXQUFXLENBQUM7QUFDekgsT0FBTyxFQUFDLFFBQVEsRUFBWSxNQUFNLFVBQVUsQ0FBQztBQUc3QyxNQUFNLE9BQU8sZ0JBQWdCO2FBQ1YsY0FBUyxHQUFxQixJQUFJLGdCQUFnQixFQUFFLEFBQTNDLENBQTRDO2FBQ3JELFlBQU8sR0FBRyxLQUFLLEFBQVIsQ0FBUzthQUVoQixnQkFBVyxHQUF1QixFQUFFLEFBQXpCLENBQTBCO2FBQ3JDLG1CQUFjLEdBQWtCLEVBQUUsQUFBcEIsQ0FBcUI7YUFDbkMsdUJBQWtCLEdBQXFDLEVBQUUsQUFBdkMsQ0FBd0M7YUFDMUQscUJBQWdCLEdBQUcseUJBQXlCLEFBQTVCLENBQTZCO0lBUTVEO1FBSkEsb0VBQW9FO1FBQ25ELG9CQUFlLEdBQWlCLFlBQVksQ0FBQyxJQUFJLENBQUM7UUFDM0QsYUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBR3JDLFFBQVE7SUFDWixDQUFDO0lBRU0sTUFBTSxDQUFDLEdBQUc7UUFDYixPQUFPLGdCQUFnQixDQUFDLFNBQVMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFrQztRQUN0RCxJQUFJLE1BQU0sQ0FBQyxlQUFlLEVBQUU7WUFDeEIsZ0JBQWdCLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztTQUM5RDtJQUNMLENBQUM7SUFFTSxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUE2QyxFQUFFLFVBQThCO1FBQzVGLElBQUksZ0JBQWdCLENBQUMs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QUM7SUFFTSxJQUFJLENBQUMsVUFBMEIsRUFBRSxHQUFHLElBQVc7UUFDbEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVNLEtBQUssQ0FBQyxVQUEwQixFQUFFLEdBQUcsSUFBVztRQUNuRCxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEYXRlUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHtJTW5nTG9nUHVibGlzaGVyLCBJTW5nTG9nZ2VyU2VydmljZSwgTG9nTGV2ZWxFbnVtLCBNbmdJbnRlcm5hbEVycm9yLCBNbmdMb2dDb25maWcsIE1uZ0xvZ0VudHJ5fSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtEYXRlVXRpbCwgRXJyb3JVdGlsfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQge01uZ0NvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tICcuL2NvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5cbmV4cG9ydCBjbGFzcyBNbmdMb2dnZXJTZXJ2aWNlIGltcGxlbWVudHMgSU1uZ0xvZ2dlclNlcnZpY2Uge1xuICAgIHByaXZhdGUgc3RhdGljIF9pbnN0YW5jZTogTW5nTG9nZ2VyU2VydmljZSA9IG5ldyBNbmdMb2dnZXJTZXJ2aWNlKCk7XG4gICAgcHJpdmF0ZSBzdGF0aWMgX2lzSW5pdCA9IGZhbHNlO1xuICAgIHByaXZhdGUgc3RhdGljIF9jb25maWd1cmF0aW9uU2VydmljZT86IE1uZ0NvbmZpZ3VyYXRpb25TZXJ2aWNlO1xuICAgIHByaXZhdGUgc3RhdGljIF9wdWJsaXNoZXJzOiBJTW5nTG9nUHVibGlzaGVyW10gPSBbXTtcbiAgICBwcml2YXRlIHN0YXRpYyBfZW50cmllc0J1ZmZlcjogTW5nTG9nRW50cnlbXSA9IFtdO1xuICAgIHByaXZhdGUgc3RhdGljIF9jYXRlZ29yeUluc3RhbmNlczogUmVjb3JkPHN0cmluZywgTW5nTG9nZ2VyU2VydmljZT4gPSB7fTtcbiAgICBwcml2YXRlIHN0YXRpYyBfdGltZXN0YW1wRm9ybWF0ID0gJ3l5eXktTU0tZGQgSEg6bW06c3MuU1NTJztcblxuICAgIHByaXZhdGUgY2F0ZWdvcnk/OiBzdHJpbmc7XG5cbiAgICAvLyBUZW1wb3Jhcnkgc2V0dGluZ3MgdGhhdCBjb3ZlciBsb2dnaW5nIGNhbGxzIGJlZm9yZSBpbml0aWFsaXNhdGlvblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdExvZ0xldmVsOiBMb2dMZXZlbEVudW0gPSBMb2dMZXZlbEVudW0uSW5mbztcbiAgICBwcml2YXRlIGRhdGVQaXBlID0gbmV3IERhdGVQaXBlKCdlbi1VUycpO1xuXG4gICAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgLy8gZW1wdHlcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIE1uZ0xvZ2dlclNlcnZpY2UuX2luc3RhbmNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY29uZmlndXJlKGNvbmZpZzoge3RpbWVzdGFtcEZvcm1hdD86IHN0cmluZ30pIHtcbiAgICAgICAgaWYgKGNvbmZpZy50aW1lc3RhbXBGb3JtYXQpIHtcbiAgICAgICAgICAgIE1uZ0xvZ2dlclNlcnZpY2UuX3RpbWVzdGFtcEZvcm1hdCA9IGNvbmZpZy50aW1lc3RhbXBGb3JtYXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGluaXQoY29uZmlndXJhdGlvblNlcnZpY2U6IE1uZ0NvbmZpZ3VyYXRpb25TZXJ2aWNlLCBwdWJsaXNoZXJzOiBJTW5nTG9nUHVibGlzaGVyW10pIHtcbiAgICAgICAgaWYgKE1uZ0xvZ2dlclNlcnZpY2UuX2lzSW5pdCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgTW5nTG9nZ2VyU2VydmljZS5fY29uZmlndXJhdGlvblNlcnZpY2UgPSBjb25maWd1cmF0aW9uU2VydmljZTtcbiAgICAgICAgTW5nTG9nZ2VyU2VydmljZS5fcHVibGlzaGVycyA9IHB1Ymxpc2hlcnM7XG5cbiAgICAgICAgTW5nTG9nZ2VyU2VydmljZS5faXNJbml0ID0gdHJ1ZTtcbiAgICAgICAgTW5nTG9nZ2VyU2VydmljZS5fZmx1c2hCdWZmZXIoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfZmx1c2hCdWZmZXIoKSB7XG4gICAgICAgIGlmICghTW5nTG9nZ2VyU2VydmljZS5faXNJbml0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgTW5nTG9nZ2VyU2VydmljZS5fZW50cmllc0J1ZmZlci5mb3JFYWNoKGUgPT4gdGhpcy5faW5zdGFuY2UuX2xvZyhlKSk7XG4gICAgICAgIE1uZ0xvZ2dlclNlcnZpY2UuX2VudHJpZXNCdWZmZXIgPSBbXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShjYXRlZ29yeTogc3RyaW5nKTogTW5nTG9nZ2VyU2VydmljZSB7XG4gICAgICAgIHJldHVybiBNbmdMb2dnZXJTZXJ2aWNlLl9pbnN0YW5jZS5jcmVhdGUoY2F0ZWdvcnkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGUoY2F0ZWdvcnk6IHN0cmluZyk6IE1uZ0xvZ2dlclNlcnZpY2Uge1xuICAgICAgICBpZiAodGhpcy5jYXRlZ29yeSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE1uZ0ludGVybmFsRXJyb3IoYENhbm5vdCBjcmVhdGUgbG9nZ2VyIHdpdGggY2F0ZWdvcnkgaW5zaWRlIGFub3RoZXIgY2F0ZWdvcnkgKCR7dGhpcy5jYXRlZ29yeX0pLiBNdXN0IGNyZWF0ZSBsb2dnZXIgb24gcm9vdC5gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoTW5nTG9nZ2VyU2VydmljZS5fY2F0ZWdvcnlJbnN0YW5jZXNbY2F0ZWdvcnldKSB7XG4gICAgICAgICAgICByZXR1cm4gTW5nTG9nZ2VyU2VydmljZS5fY2F0ZWdvcnlJbnN0YW5jZXNbY2F0ZWdvcnldO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbG9nZ2VyID0gbmV3IE1uZ0xvZ2dlclNlcnZpY2UoKTtcbiAgICAgICAgbG9nZ2VyLmNhdGVnb3J5ID0gY2F0ZWdvcnk7XG5cbiAgICAgICAgTW5nTG9nZ2VyU2VydmljZS5fY2F0ZWdvcnlJbnN0YW5jZXNbY2F0ZWdvcnldID0gbG9nZ2VyO1xuXG4gICAgICAgIHJldHVybiBsb2dnZXI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcHJvY2Vzc0xvZyhtc2dPckVycm9yOiBzdHJpbmcgfCBFcnJvciwgbG9nTGV2ZWw6IExvZ0xldmVsRW51bSwgY2F0ZWdvcnk6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCwgZGF0YT86IGFueVtdKSB7XG4gICAgICAgIGNvbnN0IFt0aW1lc3RhbXAsIHRpbWVzdGFtcEZvcm1hdHRlZF0gPSBbLi4udGhpcy5fZ2V0VGltZXN0YW1wcygpXTtcblxuICAgICAgICBjb25zdCBsb2dFbnRyeSA9IDxNbmdMb2dFbnRyeT57XG4gICAgICAgICAgICBsZXZlbDogbG9nTGV2ZWwsXG4gICAgICAgICAgICBtZXNzYWdlOiB0eXBlb2YgbXNnT3JFcnJvciA9PT0gJ3N0cmluZycgPyBtc2dPckVycm9yIDogbXNnT3JFcnJvci5tZXNzYWdlLFxuICAgICAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgICAgIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3J5ID8/IGNhdGVnb3J5LFxuICAgICAgICAgICAgdGltZXN0YW1wOiB0aW1lc3RhbXAsXG4gICAgICAgICAgICB0aW1lc3RhbXBGb3JtYXR0ZWQ6IHRpbWVzdGFtcEZvcm1hdHRlZCA/PyB1bmRlZmluZWRcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAobXNnT3JFcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICAvLyBzZXQgZXJyb3IgZnJvbSBtZXNzYWdlIHBhcmFtXG4gICAgICAgICAgICBsb2dFbnRyeS5lcnJvciA9IG1zZ09yRXJyb3I7XG4gICAgICAgIH0gZWxzZSBpZiAoZGF0YT8ubGVuZ3RoICYmIGRhdGFbMF0gaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgLy8gaWYgZmlyc3QgZGF0YSBpcyBlcnJvciwgYWxzbyBjb25zaWRlciBhcyBlcnJvclxuICAgICAgICAgICAgbG9nRW50cnkuZXJyb3IgPSBkYXRhWzBdO1xuICAgICAgICAgICAgZGF0YSA9IGRhdGEuc3BsaWNlKDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbG9nKGxvZ0VudHJ5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXRUaW1lc3RhbXBzKCk6IFtEYXRlLCBzdHJpbmcgfCBudWxsXSB7XG4gICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGNvbnN0IHRpbWVzdGFtcEZvcm1hdHRlZCA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRpbWVzdGFtcCwgTW5nTG9nZ2VyU2VydmljZS5fdGltZXN0YW1wRm9ybWF0KSA/PyBEYXRlVXRpbC50b0lzb1N0cmluZyh0aW1lc3RhbXAsIGZhbHNlLCB0cnVlLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIFt0aW1lc3RhbXAsIHRpbWVzdGFtcEZvcm1hdHRlZF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbG9nKGxvZzogTW5nTG9nRW50cnkpIHtcbiAgICAgICAgaWYgKCFNbmdMb2dnZXJTZXJ2aWNlLl9pc0luaXQpIHtcbiAgICAgICAgICAgIC8vIGFkZCB0byBidWZmZXJcbiAgICAgICAgICAgIE1uZ0xvZ2dlclNlcnZpY2UuX2VudHJpZXNCdWZmZXIucHVzaChsb2cpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbG9nQ29uZmlnID0gTW5nTG9nZ2VyU2VydmljZS5fY29uZmlndXJhdGlvblNlcnZpY2U/LmdldENvbmZpZ1ZhbHVlPE1uZ0xvZ0NvbmZpZz4/LignbG9nJyk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICh0aGlzLmNhdGVnb3J5ICYmIGxvZy5sZXZlbCA8IChsb2dDb25maWc/LmNhdGVnb3J5Py5bdGhpcy5jYXRlZ29yeV0/LmxldmVsID8/IGxvZ0NvbmZpZz8ubGV2ZWwgPz8gdGhpcy5kZWZhdWx0TG9nTGV2ZWwpKSB8fFxuICAgICAgICAgICAgKCF0aGlzLmNhdGVnb3J5ICYmIGxvZy5sZXZlbCA8IChsb2dDb25maWc/LmxldmVsID8/IHRoaXMuZGVmYXVsdExvZ0xldmVsKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobG9nQ29uZmlnPy50aW1lc3RhbXBGb3JtYXQpIHtcbiAgICAgICAgICAgIGxvZy50aW1lc3RhbXBGb3JtYXR0ZWQgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShsb2cudGltZXN0YW1wLCBsb2dDb25maWcudGltZXN0YW1wRm9ybWF0KSA/PyB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBNbmdMb2dnZXJTZXJ2aWNlLl9wdWJsaXNoZXJzLmZvckVhY2gocCA9PiBwLmFkZEVudHJ5KGxvZykpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0cmFjZShtc2dPckVycm9yOiBzdHJpbmcgfCBFcnJvciwgLi4uZGF0YTogYW55W10pIHtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc0xvZyhtc2dPckVycm9yLCBMb2dMZXZlbEVudW0uVHJhY2UsIHVuZGVmaW5lZCwgZGF0YSk7XG4gICAgfVxuXG4gICAgcHVibGljIGRlYnVnKG1zZ09yRXJyb3I6IHN0cmluZyB8IEVycm9yLCAuLi5kYXRhOiBhbnlbXSkge1xuICAgICAgICB0aGlzLl9wcm9jZXNzTG9nKG1zZ09yRXJyb3IsIExvZ0xldmVsRW51bS5EZWJ1ZywgdW5kZWZpbmVkLCBkYXRhKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9nKG1zZ09yRXJyb3I6IHN0cmluZyB8IEVycm9yLCBsb2dMZXZlbDogTG9nTGV2ZWxFbnVtID0gTG9nTGV2ZWxFbnVtLkxvZywgY2F0ZWdvcnk6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCwgLi4uZGF0YTogYW55W10pIHtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc0xvZyhtc2dPckVycm9yLCBsb2dMZXZlbCwgY2F0ZWdvcnksIGRhdGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2dFbnRyeTxFIGV4dGVuZHMgUGFydGlhbDxNbmdMb2dFbnRyeT4+KGxvZ0VudHJ5OiBFKSB7XG4gICAgICAgIGNvbnN0IFt0aW1lc3RhbXAsIHRpbWVzdGFtcEZvcm1hdHRlZF0gPSBbLi4udGhpcy5fZ2V0VGltZXN0YW1wcygpXTtcbiAgICAgICAgY29uc3QgbG9nRW50cnlGaW5hbDogTW5nTG9nRW50cnkgPSB7XG4gICAgICAgICAgICB0aW1lc3RhbXA6IHRpbWVzdGFtcCxcbiAgICAgICAgICAgIHRpbWVzdGFtcEZvcm1hdHRlZDogdGltZXN0YW1wRm9ybWF0dGVkID8/IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3J5ID8/IGxvZ0VudHJ5LmNhdGVnb3J5LFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICBtZXNzYWdlRGV0YWlsczogbG9nRW50cnkubWVzc2FnZURldGFpbHMsXG4gICAgICAgICAgICBsZXZlbDogTG9nTGV2ZWxFbnVtLkxvZyxcbiAgICAgICAgICAgIC4uLmxvZ0VudHJ5XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX2xvZyhsb2dFbnRyeUZpbmFsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5mbyhtc2dPckVycm9yOiBzdHJpbmcgfCBFcnJvciwgLi4uZGF0YTogYW55W10pIHtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc0xvZyhtc2dPckVycm9yLCBMb2dMZXZlbEVudW0uSW5mbywgdW5kZWZpbmVkLCBkYXRhKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2Fybihtc2dPckVycm9yOiBzdHJpbmcgfCBFcnJvciwgLi4uZGF0YTogYW55W10pIHtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc0xvZyhtc2dPckVycm9yLCBMb2dMZXZlbEVudW0uV2FybmluZywgdW5kZWZpbmVkLCBkYXRhKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXJyb3IobXNnT3JFcnJvcjogc3RyaW5nIHwgRXJyb3IsIC4uLmRhdGE6IGFueVtdKSB7XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NMb2cobXNnT3JFcnJvciwgTG9nTGV2ZWxFbnVtLkVycm9yLCB1bmRlZmluZWQsIGRhdGEpO1xuICAgIH1cbn1cbiJdfQ==