@eui/core 15.0.0-rc.2 → 15.0.0-rc.21

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 (48) hide show
  1. package/docs/dependencies.html +35 -37
  2. package/docs/injectables/UxAppShellService.html +10 -10
  3. package/docs/interfaces/UIState.html +6 -6
  4. package/docs/js/search/search_index.js +2 -2
  5. package/docs/miscellaneous/variables.html +1 -1
  6. package/docs/properties.html +1 -1
  7. package/esm2020/lib/eui-core.module.mjs +5 -5
  8. package/esm2020/lib/interceptors/add-lang-param.interceptor.mjs +4 -4
  9. package/esm2020/lib/interceptors/cache-prevention.interceptor.mjs +4 -4
  10. package/esm2020/lib/interceptors/cors-security.interceptor.mjs +4 -4
  11. package/esm2020/lib/interceptors/csrf-prevention.interceptor.mjs +4 -4
  12. package/esm2020/lib/interceptors/eu-login-session-timeout-handling.interceptor.mjs +4 -4
  13. package/esm2020/lib/interceptors/openid/openid-connect.interceptor.mjs +4 -4
  14. package/esm2020/lib/interceptors/openid/openid-connect.service.mjs +4 -4
  15. package/esm2020/lib/interceptors/ux-request-error-model.interceptor.mjs +4 -4
  16. package/esm2020/lib/services/errors/global-error-handler.mjs +4 -4
  17. package/esm2020/lib/services/errors/http-error-handler.interceptor.mjs +4 -4
  18. package/esm2020/lib/services/i18n/i18n.loader.mjs +4 -4
  19. package/esm2020/lib/services/i18n/i18n.service.mjs +4 -4
  20. package/esm2020/lib/services/i18n/i18n.service.mock.mjs +4 -4
  21. package/esm2020/lib/services/locale/locale.service.mjs +5 -5
  22. package/esm2020/lib/services/locale/locale.service.mock.mjs +17 -6
  23. package/esm2020/lib/services/log/log.module.mjs +5 -5
  24. package/esm2020/lib/services/log/log.service.mjs +4 -4
  25. package/esm2020/lib/services/permission/permission.service.mjs +4 -4
  26. package/esm2020/lib/services/queue/api-queue.service.mjs +4 -4
  27. package/esm2020/lib/services/storage/local-forage.service.mjs +4 -4
  28. package/esm2020/lib/services/storage/local-storage.service.mjs +4 -4
  29. package/esm2020/lib/services/storage/session-storage.service.mjs +4 -4
  30. package/esm2020/lib/services/store/effects/app.effects.mjs +4 -4
  31. package/esm2020/lib/services/store/store.service.mjs +4 -4
  32. package/esm2020/lib/services/store/store.service.mock.mjs +4 -4
  33. package/esm2020/lib/services/user/user.service.mjs +4 -4
  34. package/esm2020/lib/services/user/user.service.mock.mjs +4 -4
  35. package/esm2020/lib/services/ux-app-shell.service.mjs +13 -13
  36. package/esm2020/lib/services/ux-dynamic-component/ux-dynamic-component.service.mjs +5 -6
  37. package/esm2020/lib/services/ux-dynamic-menu/ux-dynamic-menu.service.mjs +4 -4
  38. package/esm2020/lib/services/ux-error-feedback/ux-error-feedback.service.mjs +4 -4
  39. package/esm2020/lib/services/ux-timezone.service.mjs +4 -4
  40. package/fesm2015/eui-core.mjs +124 -115
  41. package/fesm2015/eui-core.mjs.map +1 -1
  42. package/fesm2020/eui-core.mjs +124 -115
  43. package/fesm2020/eui-core.mjs.map +1 -1
  44. package/lib/services/locale/locale.service.mock.d.ts +1 -0
  45. package/lib/services/locale/locale.service.mock.d.ts.map +1 -1
  46. package/lib/services/ux-app-shell.service.d.ts +3 -3
  47. package/lib/services/ux-app-shell.service.d.ts.map +1 -1
  48. package/package.json +1 -1
@@ -212,9 +212,9 @@ export class I18nService extends EuiLazyService {
212
212
  this.document.documentElement.lang = lang;
213
213
  }
214
214
  }
215
- /** @nocollapse */ I18nService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: I18nService, deps: [{ token: GLOBAL_CONFIG_TOKEN }, { token: i1.TranslateService }, { token: i2.LogService, optional: true }, { token: i3.StoreService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
216
- /** @nocollapse */ I18nService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: I18nService, providedIn: 'root' });
217
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: I18nService, decorators: [{
215
+ /** @nocollapse */ I18nService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: I18nService, deps: [{ token: GLOBAL_CONFIG_TOKEN }, { token: i1.TranslateService }, { token: i2.LogService, optional: true }, { token: i3.StoreService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
216
+ /** @nocollapse */ I18nService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: I18nService, providedIn: 'root' });
217
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: I18nService, decorators: [{
218
218
  type: Injectable,
219
219
  args: [{
220
220
  providedIn: 'root',
@@ -228,4 +228,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4",
228
228
  type: Inject,
229
229
  args: [DOCUMENT]
230
230
  }] }]; } });
231
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9pMThuL2kxOG4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBRUgsY0FBYyxFQUVkLDRCQUE0QixFQUM1QixZQUFZLEVBQ1osYUFBYSxFQUNiLGtCQUFrQixFQUtsQix5QkFBeUIsRUFDekIsYUFBYSxHQUNoQixNQUFNLFdBQVcsQ0FBQztBQUVuQixPQUFPLEVBQUUsVUFBVSxFQUFtQixNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUd2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7OztBQVc3QyxNQUFNLE9BQU8sV0FBNkMsU0FBUSxjQUE2QjtJQUszRixZQUMyQyxnQkFBOEIsRUFDM0QsZ0JBQWtDLEVBQ3RCLFVBQXNCLEVBQ2xDLEtBQW1CLEVBQ0gsUUFBa0I7UUFFNUMsS0FBSyxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFOVyxxQkFBZ0IsR0FB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QU1HO0lBQ0ssR0FBRyxDQUFDLElBQVk7UUFDcEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssaUJBQWlCLENBQUMsSUFBWTtRQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQzlDLENBQUM7O2tJQWhQUSxXQUFXLGtCQU1SLG1CQUFtQixtSEFJbkIsUUFBUTtzSUFWWCxXQUFXLGNBRlIsTUFBTTtrR0FFVCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBT1EsTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUUxQixRQUFROzswQkFFUixNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMYW5nQ2hhbmdlRXZlbnQsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgdGFrZSwgdGFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICAgIEdsb2JhbENvbmZpZyxcbiAgICBFdWlMYXp5U2VydmljZSxcbiAgICBFdWlTZXJ2aWNlU3RhdHVzLFxuICAgIGdldEkxOG5TZXJ2aWNlQ29uZmlnRnJvbUJhc2UsXG4gICAgZ2V0STE4blN0YXRlLFxuICAgIGdldEFjdGl2ZUxhbmcsXG4gICAgZ2V0TGFzdEFkZGVkTW9kdWxlLFxuICAgIEkxOG5Mb2FkZXJDb25maWcsXG4gICAgSTE4blNlcnZpY2VDb25maWcsXG4gICAgSTE4blN0YXRlLFxuICAgIE1vZHVsZUNvbmZpZyxcbiAgICBnZXRCcm93c2VyRGVmYXVsdExhbmd1YWdlLFxuICAgIFV4RXVMYW5ndWFnZXMsXG59IGZyb20gJ0BldWkvYmFzZSc7XG5cbmltcG9ydCB7IEkxOG5Mb2FkZXIsIExvYWRlZFJlc291cmNlcyB9IGZyb20gJy4vaTE4bi5sb2FkZXInO1xuaW1wb3J0IHsgR0xPQkFMX0NPTkZJR19UT0tFTiB9IGZyb20gJy4uL2NvbmZpZy90b2tlbnMnO1xuaW1wb3J0IHsgTG9nU2VydmljZSB9IGZyb20gJy4uL2xvZy9sb2cuc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yZVNlcnZpY2UgfSBmcm9tICcuLi9zdG9yZS9zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IFVwZGF0ZUkxOG5TdGF0ZUFjdGlvbiB9IGZyb20gJy4uL3N0b3JlL2FjdGlvbnMvaTE4bi5hY3Rpb25zJztcbmltcG9ydCB7IERFRkFVTFRfSTE4Tl9TRVJWSUNFX0NPTkZJRyB9IGZyb20gJy4uL2NvbmZpZy9kZWZhdWx0cyc7XG5pbXBvcnQgeyBjcmVhdGVTZWxlY3RvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuaW50ZXJmYWNlIE1vZHVsZUxvYWRFdmVudCB7XG4gICAgcmVhZHk6IGJvb2xlYW47XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGVycm9yPzogYW55O1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBJMThuU2VydmljZTxUIGV4dGVuZHMgSTE4blN0YXRlID0gSTE4blN0YXRlPiBleHRlbmRzIEV1aUxhenlTZXJ2aWNlPFQgfCBJMThuU3RhdGU+IHtcblxuICAgIHByb3RlY3RlZCBjb25maWc6IEkxOG5TZXJ2aWNlQ29uZmlnO1xuICAgIHByb3RlY3RlZCBvbk1vZHVsZUxvYWQ6IEJlaGF2aW9yU3ViamVjdDxNb2R1bGVMb2FkRXZlbnQ+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoR0xPQkFMX0NPTkZJR19UT0tFTikgcHJvdGVjdGVkIGJhc2VHbG9iYWxDb25maWc6IEdsb2JhbENvbmZpZyxcbiAgICAgICAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBsb2dTZXJ2aWNlOiBMb2dTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgc3RvcmU6IFN0b3JlU2VydmljZSxcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKHsgYWN0aXZlTGFuZzogJ2VuJyB9KTtcbiAgICAgICAgdGhpcy5jb25maWcgPSBnZXRJMThuU2VydmljZUNvbmZpZ0Zyb21CYXNlKHRoaXMuYmFzZUdsb2JhbENvbmZpZyk7XG4gICAgICAgIHRoaXMub25Nb2R1bGVMb2FkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNb2R1bGVMb2FkRXZlbnQ+KHsgcmVhZHk6IGZhbHNlLCBuYW1lOiBudWxsIH0pO1xuICAgIH1cblxuICAgIGdldFN0YXRlPEsgPSBUPihtYXBGbj86IChzdGF0ZTogVCkgPT4gSyk6IE9ic2VydmFibGU8Sz47XG4gICAgZ2V0U3RhdGU8YSBleHRlbmRzIGtleW9mIFQ+KGtleT86IGEpOiBPYnNlcnZhYmxlPFRbYV0+O1xuICAgIGdldFN0YXRlPEs+KGtleU9yTWFwRm4/OiAoKHN0YXRlOiBUKSA9PiBLKSB8IHN0cmluZyk6IE9ic2VydmFibGU8Sz4ge1xuICAgICAgICBsZXQgc2VsZWN0b3I6IGFueSA9IGdldEkxOG5TdGF0ZTtcblxuICAgICAgICBpZiAoa2V5T3JNYXBGbikge1xuICAgICAgICAgICAgc3dpdGNoICh0eXBlb2Yga2V5T3JNYXBGbikge1xuICAgICAgICAgICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgICAgICAgICAgIHNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoZ2V0STE4blN0YXRlLCBrZXlPck1hcEZuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICAgICAgc2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihnZXRJMThuU3RhdGUsIChzdGF0ZSkgPT4gc3RhdGVba2V5T3JNYXBGbl0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChzZWxlY3Rvcik7XG4gICAgfVxuXG4gICAgdXBkYXRlU3RhdGUobGFuZ1N0YXRlOiBUIHwgSTE4blN0YXRlKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlSFRNTERPTUxhbmcobGFuZ1N0YXRlLmFjdGl2ZUxhbmcpO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBVcGRhdGVJMThuU3RhdGVBY3Rpb24obGFuZ1N0YXRlKSk7XG4gICAgfVxuXG4gICAgaW5pdChsYW5nU3RhdGU/OiBUKTogT2JzZXJ2YWJsZTxFdWlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgICAgIGNvbnN0IGluaXRMYW5nID0gbGFuZ1N0YXRlICYmIGxhbmdTdGF0ZS5hY3RpdmVMYW5nID8gbGFuZ1N0YXRlLmFjdGl2ZUxhbmcgOiB0aGlzLnByZXBhcmVkRGVmYXVsdExhbmd1YWdlKCk7XG4gICAgICAgIGNvbnN0IGluaXRTdGF0ZSA9IHtcbiAgICAgICAgICAgIC4uLmxhbmdTdGF0ZSxcbiAgICAgICAgICAgIGFjdGl2ZUxhbmc6IGluaXRMYW5nLFxuICAgICAgICB9O1xuICAgICAgICBpZiAodHlwZW9mIGluaXRMYW5nID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgc3VwZXIuaW5pdEV1aVNlcnZpY2UodGhpcy5zdG9yZSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlKGluaXRTdGF0ZSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXR1cChpbml0TGFuZyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9mKHsgc3VjY2VzczogZmFsc2UsIGVycm9yOiAnSW5pdGlhbCBhY3RpdmUgbGFuZyBzaG91bGQgYmUgc3RyaW5nJyB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHBpcGUgZnVuY3Rpb24gdGhhdCBjb3VsZCBzZXJ2ZSBhcyBhIHdyYXBwZXIgb2YgYW5vdGhlciBvYnNlcnZhYmxlXG4gICAgICogZS5nLiBuZ3gtdHJhbnNsYXRlIGkxOG4ub25SZWFkeSgnbXlfbW9kdWxlJykucGlwZShzd2l0Y2hNYXAoKCk9PnRyYW5zbGF0ZS5nZXQoJ2V1aS5LRVknKSkpO1xuICAgICAqIFdBUk5JTkc6IG9uUmVhZHkgd2lsbCBlbWl0IG9ubHkgb25jZSBmb3IgYSBsb2FkZWQgTW9kdWxlLCBnb2luZyB0byBhbm90aGVyIGFuZCB0aGVuIGdvaW5nIGJhY2sgd2lsbCBub3QgcmVzdWx0XG4gICAgICogaW50byBhbm90aGVyIGVtaXNzaW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIG1vZHVsZU5hbWUgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGF0IGhhcyBiZWVuIGdpdmVuIHRocm91Z2ggdGhlIGVVSSBnbG9iYWxDb25maWcuIEluIGNhc2Ugbm9uIHByb3ZpZGVkXG4gICAgICogZmV0Y2ggbW9kdWxlIG5hbWUgZnJvbSB0aGUgc3RhdGUuXG4gICAgICovXG4gICAgb25SZWFkeShtb2R1bGVOYW1lPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMub25Nb2R1bGVMb2FkLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKGV2dDogTW9kdWxlTG9hZEV2ZW50KSA9PiBtb2R1bGVOYW1lID8gb2YoZXZ0KSA6XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoZ2V0TGFzdEFkZGVkTW9kdWxlKS5waXBlKHRhcChtID0+IG1vZHVsZU5hbWUgPSBtKSwgbWFwKCgpID0+IGV2dCkpKSxcbiAgICAgICAgICAgIC8vIGVtaXQgb25seSBpZiBldmVudCBlbWl0dGVkIG1hdGNoZXMgdGhlIG1vZHVsZSBuYW1lIGFuZCBpcyByZWFkeVxuICAgICAgICAgICAgZmlsdGVyKChldnQ6IE1vZHVsZUxvYWRFdmVudCkgPT4gZXZ0LnJlYWR5ID09PSB0cnVlICYmIGV2dC5uYW1lID09PSBtb2R1bGVOYW1lKSxcbiAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGF0IG9ic2VydmFibGUgY29tcGxldGVzXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBsYXp5TG9hZChjb25maWc6IEkxOG5Mb2FkZXJDb25maWcpOiBPYnNlcnZhYmxlPEV1aVNlcnZpY2VTdGF0dXM+IHtcbiAgICAgICAgY29uc3QgbW9kdWxlSWQgPSBNYXRoLmZsb29yKChNYXRoLnJhbmRvbSgpICogMTAwMDAwKSArIDEpLnRvTG9jYWxlU3RyaW5nKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZFJlc291cmNlcyhjb25maWcsIG1vZHVsZUlkKTtcbiAgICB9XG5cbiAgICBsYXp5TG9hZEluaXQobW9kdWxlQ29uZmlnOiBNb2R1bGVDb25maWcsIG1vZHVsZU5hbWU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEV1aVNlcnZpY2VTdGF0dXM+IHtcbiAgICAgICAgY29uc3QgaTE4bkxvYWRlckNvbmZpZyA9IG1vZHVsZUNvbmZpZyBhcyBJMThuTG9hZGVyQ29uZmlnO1xuICAgICAgICAvLyBhZGQgcmVzb3VyY2VzXG4gICAgICAgIHJldHVybiB0aGlzLmFkZFJlc291cmNlcyhpMThuTG9hZGVyQ29uZmlnLCBtb2R1bGVOYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgcmVzb3VyY2VzIGJhc2VkIG9mIGEgY29uZmlnIGxvYWRlclxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbmZpZyBJMThuTG9hZGVyQ29uZmlnXG4gICAgICogQHJldHVybiBQcm9taXNlPEV1aVNlcnZpY2VTdGF0dXM+IGFuIEV1aVNlcnZpY2VTdGF0dXMgd2hlbiB0cmFuc2xhdGlvbiBoYXMgZnVsbHkgbG9hZGVkXG4gICAgICovXG4gICAgcHVibGljIGFkZFJlc291cmNlcyhjb25maWc6IEkxOG5Mb2FkZXJDb25maWcsIG1vZHVsZU5hbWU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEV1aVNlcnZpY2VTdGF0dXM+IHtcblxuICAgICAgICAvLyBlbWl0IHRoYXQgbW9kdWxlIGlzIGxvYWRpbmdcbiAgICAgICAgdGhpcy5vbk1vZHVsZUxvYWQubmV4dCh7IHJlYWR5OiBmYWxzZSwgbmFtZTogbW9kdWxlTmFtZSB9KTtcblxuICAgICAgICBjb25zdCBsb2FkZXIgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExvYWRlcjtcbiAgICAgICAgaWYgKGxvYWRlciBpbnN0YW5jZW9mIEkxOG5Mb2FkZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhbmdTdWJzY3JpcHRpb246IE9ic2VydmFibGU8YW55PltdID0gW107XG4gICAgICAgICAgICBjb25zdCBpMThuTG9hZGVyID0gPEkxOG5Mb2FkZXI+bG9hZGVyO1xuXG4gICAgICAgICAgICAvLyBhZGQgdGhlIHJlc291cmNlcyB0byB0aGUgbG9hZGVyXG4gICAgICAgICAgICBjb25zdCByZXNvdXJjZXMgPSBpMThuTG9hZGVyLmFkZFJlc291cmNlcyhjb25maWcpO1xuXG4gICAgICAgICAgICAvLyBtYW51YWxseSBsb2FkIHRoZSByZXNvdXJjZXMgZm9yIHRoZSBDVVJSRU5UIGxhbmd1YWdlIGFuZCBhZGQgdGhlbSB0byB0aGUgdHJhbnNsYXRlIHNlcnZpY2VcbiAgICAgICAgICAgIGxhbmdTdWJzY3JpcHRpb24ucHVzaChpMThuTG9hZGVyLmxvYWRSZXNvdXJjZXMocmVzb3VyY2VzLCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcpXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgICAgIHRhcCgobG9hZGVkUmVzb3VyY2VzOiBMb2FkZWRSZXNvdXJjZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkZCB0aGUgbmV3IHNldCBvZiB0cmFuc2xhdGlvbnMgdG8gdGhlIGN1cnJlbnQgbGFuZ3VhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zZXRUcmFuc2xhdGlvbih0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcsIGxvYWRlZFJlc291cmNlcy50cmFuc2xhdGlvbnMsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICApKTtcblxuICAgICAgICAgICAgLy8gaWYgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UgaXMgZGlmZmVyZW50IHRoYW4gdGhlIERFRkFVTFQgbGFuZ3VhZ2VcbiAgICAgICAgICAgIGlmICh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcgIT09IHRoaXMudHJhbnNsYXRlU2VydmljZS5kZWZhdWx0TGFuZykge1xuICAgICAgICAgICAgICAgIC8vIG1hbnVhbGx5IGxvYWQgdGhlIHJlc291cmNlcyBmb3IgdGhlIGRlZmF1bHQgbGFuZ3VhZ2UgYW5kIGFkZCB0aGVtIHRvIHRoZSB0cmFuc2xhdGUgc2VydmljZVxuICAgICAgICAgICAgICAgIGxhbmdTdWJzY3JpcHRpb24ucHVzaChpMThuTG9hZGVyLmxvYWRSZXNvdXJjZXMocmVzb3VyY2VzLCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZGVmYXVsdExhbmcpXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcCgobG9hZGVkUmVzb3VyY2VzOiBMb2FkZWRSZXNvdXJjZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc2V0VHJhbnNsYXRpb24odGhpcy50cmFuc2xhdGVTZXJ2aWNlLmRlZmF1bHRMYW5nLCBsb2FkZWRSZXNvdXJjZXMudHJhbnNsYXRpb25zLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZvcmtKb2luKGxhbmdTdWJzY3JpcHRpb24pLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChsb2FkZWRSZXNvdXJjZXNBcnI6IExvYWRlZFJlc291cmNlc1tdKSA9PiAhbG9hZGVkUmVzb3VyY2VzQXJyWzBdLmhhc0Vycm9yID9cbiAgICAgICAgICAgICAgICAgICAgICAgIHsgc3VjY2VzczogdHJ1ZSB9IDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgc3VjY2VzczogZmFsc2UsIGVycm9yOiBsb2FkZWRSZXNvdXJjZXNBcnJbMF0uZXJyb3JzIH0pLFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGVtaXQgc3RhdHVzIG9mIG1vZHVsZSBsb2FkaW5nIHByb2dyZXNzXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25Nb2R1bGVMb2FkLm5leHQoeyByZWFkeTogdHJ1ZSwgbmFtZTogbW9kdWxlTmFtZSB9KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZW1pdCBzdGF0dXMgb2YgbW9kdWxlIGxvYWRpbmcgcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk1vZHVsZUxvYWQubmV4dCh7IHJlYWR5OiB0cnVlLCBuYW1lOiBtb2R1bGVOYW1lLCBlcnJvciB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHsgc3VjY2VzczogZmFsc2UsIGVycm9yIH0pO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBvZih7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcjogJ2N1cnJlbnRMb2FkZXIgaXMgbm90IGFuIEkxOG5Mb2FkZXIuJyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByZXBhcmVzIHRoZSBkZWZhdWx0IGxhbmd1YWdlXG4gICAgICovXG4gICAgcHJpdmF0ZSBwcmVwYXJlZERlZmF1bHRMYW5ndWFnZSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBicm93c2VyUHJlZiA9IGdldEJyb3dzZXJEZWZhdWx0TGFuZ3VhZ2UoKTtcbiAgICAgICAgLy8gSWYgdXNlciBoYXMgYnJvd3NlciBwcmVmZXJyZWQgbGFuZywgYW5kIHRoYXQgbGFuZ3VhZ2UgaXMgcGFydCBvZiB0aGUgbGFuZ3VhZ2VzIGFycmF5XG4gICAgICAgIGlmIChicm93c2VyUHJlZiAmJiB0aGlzLmNvbmZpZy5sYW5ndWFnZXMgJiYgVXhFdUxhbmd1YWdlcy5nZXRMYW5ndWFnZUNvZGVzKHRoaXMuY29uZmlnLmxhbmd1YWdlcykuaW5jbHVkZXMoYnJvd3NlclByZWYpKSB7XG4gICAgICAgICAgICByZXR1cm4gYnJvd3NlclByZWY7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmRlZmF1bHRMYW5ndWFnZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gZGVmYXVsdF9sYW5ndWFnZSBpZiBnaXZlbiBkZWZhdWx0IGxhbmd1YWdlIHRvIG92ZXJyaWRlIGRlZmF1bHQgbGFuZ3VhZ2UgY29taW5nIGZyb20gdGhlXG4gICAgICogY29uZmlndXJhdGlvbiB0b2tlbi5cbiAgICAgKi9cbiAgICBwcml2YXRlIHNldHVwKGluaXRMYW5ndWFnZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxFdWlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgICAgIC8vIHVzZSB0aGUgZGVmYXVsdCBjb25maWcgYXMgYSByZWZlcmVuY2UgYmFzZVxuICAgICAgICB0aGlzLmNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfSTE4Tl9TRVJWSUNFX0NPTkZJRywgdGhpcy5jb25maWcpO1xuICAgICAgICAvLyBjb25maWd1cmUgdGhlIHRyYW5zbGF0ZSBjb25maWcgc2VydmljZVxuICAgICAgICBpZiAodGhpcy5jb25maWcubGFuZ3VhZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuYWRkTGFuZ3MoVXhFdUxhbmd1YWdlcy5nZXRMYW5ndWFnZUNvZGVzKHRoaXMuY29uZmlnLmxhbmd1YWdlcykpO1xuICAgICAgICAgICAgaWYgKHRoaXMubG9nU2VydmljZSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nU2VydmljZS5pbmZvKGBJMThuIGFjY2VwdGVkIGxhbmd1YWdlcyBzZXQgdG8gJHtVeEV1TGFuZ3VhZ2VzLmdldExhbmd1YWdlQ29kZXModGhpcy5jb25maWcubGFuZ3VhZ2VzKX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBzZXQgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UsIGNhdXNpbmcgdG8gbG9hZCB0cmFuc2xhdGlvbnNcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZVxuICAgICAgICAgICAgLnVzZShpbml0TGFuZ3VhZ2UpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJpbmRBY3RpdmVMYW5nU3RhdGVUb1RyYW5zbGF0ZVNlcnZpY2UoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iaW5kVHJhbnNsYXRlU2VydmljZUxhbmdDaGFuZ2VUb1N0YXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5kZWZhdWx0TGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdExhbmd1YWdlKHRoaXMuY29uZmlnLmRlZmF1bHRMYW5ndWFnZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMb2FkZXIgaW5zdGFuY2VvZiBJMThuTG9hZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmYWlsZWRSZXNvdXJjZXMgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExvYWRlci5nZXRGYWlsZWRSZXNvdXJjZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWlsZWRSZXNvdXJjZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcjogZmFpbGVkUmVzb3VyY2VzIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiBvZih7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvciB9KSksXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmluZEFjdGl2ZUxhbmdTdGF0ZVRvVHJhbnNsYXRlU2VydmljZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoZ2V0QWN0aXZlTGFuZykuc3Vic2NyaWJlKChsYW5nOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGlmIChsYW5nICE9PSBudWxsICYmICh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcgIT09IGxhbmcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2UobGFuZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmluZFRyYW5zbGF0ZVNlcnZpY2VMYW5nQ2hhbmdlVG9TdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKGV2ZW50OiBMYW5nQ2hhbmdlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlSW5zdGFuY2UuYWN0aXZlTGFuZyAhPT0gZXZlbnQubGFuZykge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoeyBhY3RpdmVMYW5nOiBldmVudC5sYW5nIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMubG9nU2VydmljZSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nU2VydmljZS5pbmZvKGBJMThuIGN1cnJlbnQgbGFuZ3VhZ2Ugc2V0IHRvICR7ZXZlbnQubGFuZ31gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXREZWZhdWx0TGFuZ3VhZ2UoZGVmYXVsdExhbmd1YWdlOiBzdHJpbmcpIHtcbiAgICAgICAgLy8gcmVtb3ZlZCwgY3VycmVudCBsYW5ndWFnZSBpcyBhbHJlYWR5IGNhbGN1bGF0ZWQgaW4gaW5pdCwgc2V0dXAgZnVuY3Rpb24gZmlsbCB1c2UgaXQgZGlyZWN0bHksIG5vdCBkZWZhdWx0XG4gICAgICAgIC8vIHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZyA9IGRlZmF1bHRfbGFuZ3VhZ2UgfHwgdGhpcy5jb25maWcuZGVmYXVsdExhbmd1YWdlO1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc2V0RGVmYXVsdExhbmcoZGVmYXVsdExhbmd1YWdlKTtcbiAgICAgICAgaWYgKHRoaXMubG9nU2VydmljZSkge1xuICAgICAgICAgICAgdGhpcy5sb2dTZXJ2aWNlLmluZm8oYEkxOG4gZGVmYXVsdCBsYW5ndWFnZSBzZXQgdG8gJHtkZWZhdWx0TGFuZ3VhZ2V9YCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjaGFuZ2UgdGhlIGN1cnJlbnRseSB1c2VkIGxhbmd1YWdlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbGFuZyBpcyB0aGUgbGFuZ3VhZ2UgY29kZSBiYXNlZCBvbiB0aGUgY29udmVudGlvbiB5b3UgdXNlZCBlLmcuIChlbiBvciBlbi1FTilcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHRoYXQgcmV0dXJucyBhbiBvYmplY3QgY29udGFpbiB0aGUgb2JqZWN0IHRyYW5zbGF0aW9uIGZvciBnaXZlbiBsYW5ndWFnZSBhZnRlciBsYW5ndWFnZVxuICAgICAqIGZ1bGx5IGxvYWRlZC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHVzZShsYW5nOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnVzZShsYW5nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB1cGRhdGVzIHRoZSBIVE1MIGVsZW1lbnQgbGFuZyBhdHRyaWJ1dGVcbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSB1cGRhdGVIVE1MRE9NTGFuZyhsYW5nOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubGFuZyA9IGxhbmc7XG4gICAgfVxufVxuIl19
231
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9pMThuL2kxOG4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBRUgsY0FBYyxFQUVkLDRCQUE0QixFQUM1QixZQUFZLEVBQ1osYUFBYSxFQUNiLGtCQUFrQixFQUtsQix5QkFBeUIsRUFDekIsYUFBYSxHQUNoQixNQUFNLFdBQVcsQ0FBQztBQUVuQixPQUFPLEVBQUUsVUFBVSxFQUFtQixNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUd2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7OztBQVc3QyxNQUFNLE9BQU8sV0FBNkMsU0FBUSxjQUE2QjtJQUszRixZQUMyQyxnQkFBOEIsRUFDM0QsZ0JBQWtDLEVBQ3RCLFVBQXNCLEVBQ2xDLEtBQW1CLEVBQ0gsUUFBa0I7UUFFNUMsS0FBSyxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFOVyxxQkFBZ0IsR0FB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QU1HO0lBQ0ssR0FBRyxDQUFDLElBQVk7UUFDcEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssaUJBQWlCLENBQUMsSUFBWTtRQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQzlDLENBQUM7OzJIQWhQUSxXQUFXLGtCQU1SLG1CQUFtQixtSEFJbkIsUUFBUTsrSEFWWCxXQUFXLGNBRlIsTUFBTTsyRkFFVCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBT1EsTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUUxQixRQUFROzswQkFFUixNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMYW5nQ2hhbmdlRXZlbnQsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgdGFrZSwgdGFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICAgIEdsb2JhbENvbmZpZyxcbiAgICBFdWlMYXp5U2VydmljZSxcbiAgICBFdWlTZXJ2aWNlU3RhdHVzLFxuICAgIGdldEkxOG5TZXJ2aWNlQ29uZmlnRnJvbUJhc2UsXG4gICAgZ2V0STE4blN0YXRlLFxuICAgIGdldEFjdGl2ZUxhbmcsXG4gICAgZ2V0TGFzdEFkZGVkTW9kdWxlLFxuICAgIEkxOG5Mb2FkZXJDb25maWcsXG4gICAgSTE4blNlcnZpY2VDb25maWcsXG4gICAgSTE4blN0YXRlLFxuICAgIE1vZHVsZUNvbmZpZyxcbiAgICBnZXRCcm93c2VyRGVmYXVsdExhbmd1YWdlLFxuICAgIFV4RXVMYW5ndWFnZXMsXG59IGZyb20gJ0BldWkvYmFzZSc7XG5cbmltcG9ydCB7IEkxOG5Mb2FkZXIsIExvYWRlZFJlc291cmNlcyB9IGZyb20gJy4vaTE4bi5sb2FkZXInO1xuaW1wb3J0IHsgR0xPQkFMX0NPTkZJR19UT0tFTiB9IGZyb20gJy4uL2NvbmZpZy90b2tlbnMnO1xuaW1wb3J0IHsgTG9nU2VydmljZSB9IGZyb20gJy4uL2xvZy9sb2cuc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yZVNlcnZpY2UgfSBmcm9tICcuLi9zdG9yZS9zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IFVwZGF0ZUkxOG5TdGF0ZUFjdGlvbiB9IGZyb20gJy4uL3N0b3JlL2FjdGlvbnMvaTE4bi5hY3Rpb25zJztcbmltcG9ydCB7IERFRkFVTFRfSTE4Tl9TRVJWSUNFX0NPTkZJRyB9IGZyb20gJy4uL2NvbmZpZy9kZWZhdWx0cyc7XG5pbXBvcnQgeyBjcmVhdGVTZWxlY3RvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuaW50ZXJmYWNlIE1vZHVsZUxvYWRFdmVudCB7XG4gICAgcmVhZHk6IGJvb2xlYW47XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGVycm9yPzogYW55O1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBJMThuU2VydmljZTxUIGV4dGVuZHMgSTE4blN0YXRlID0gSTE4blN0YXRlPiBleHRlbmRzIEV1aUxhenlTZXJ2aWNlPFQgfCBJMThuU3RhdGU+IHtcblxuICAgIHByb3RlY3RlZCBjb25maWc6IEkxOG5TZXJ2aWNlQ29uZmlnO1xuICAgIHByb3RlY3RlZCBvbk1vZHVsZUxvYWQ6IEJlaGF2aW9yU3ViamVjdDxNb2R1bGVMb2FkRXZlbnQ+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoR0xPQkFMX0NPTkZJR19UT0tFTikgcHJvdGVjdGVkIGJhc2VHbG9iYWxDb25maWc6IEdsb2JhbENvbmZpZyxcbiAgICAgICAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBsb2dTZXJ2aWNlOiBMb2dTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgc3RvcmU6IFN0b3JlU2VydmljZSxcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKHsgYWN0aXZlTGFuZzogJ2VuJyB9KTtcbiAgICAgICAgdGhpcy5jb25maWcgPSBnZXRJMThuU2VydmljZUNvbmZpZ0Zyb21CYXNlKHRoaXMuYmFzZUdsb2JhbENvbmZpZyk7XG4gICAgICAgIHRoaXMub25Nb2R1bGVMb2FkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNb2R1bGVMb2FkRXZlbnQ+KHsgcmVhZHk6IGZhbHNlLCBuYW1lOiBudWxsIH0pO1xuICAgIH1cblxuICAgIGdldFN0YXRlPEsgPSBUPihtYXBGbj86IChzdGF0ZTogVCkgPT4gSyk6IE9ic2VydmFibGU8Sz47XG4gICAgZ2V0U3RhdGU8YSBleHRlbmRzIGtleW9mIFQ+KGtleT86IGEpOiBPYnNlcnZhYmxlPFRbYV0+O1xuICAgIGdldFN0YXRlPEs+KGtleU9yTWFwRm4/OiAoKHN0YXRlOiBUKSA9PiBLKSB8IHN0cmluZyk6IE9ic2VydmFibGU8Sz4ge1xuICAgICAgICBsZXQgc2VsZWN0b3I6IGFueSA9IGdldEkxOG5TdGF0ZTtcblxuICAgICAgICBpZiAoa2V5T3JNYXBGbikge1xuICAgICAgICAgICAgc3dpdGNoICh0eXBlb2Yga2V5T3JNYXBGbikge1xuICAgICAgICAgICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgICAgICAgICAgIHNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoZ2V0STE4blN0YXRlLCBrZXlPck1hcEZuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICAgICAgc2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihnZXRJMThuU3RhdGUsIChzdGF0ZSkgPT4gc3RhdGVba2V5T3JNYXBGbl0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChzZWxlY3Rvcik7XG4gICAgfVxuXG4gICAgdXBkYXRlU3RhdGUobGFuZ1N0YXRlOiBUIHwgSTE4blN0YXRlKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlSFRNTERPTUxhbmcobGFuZ1N0YXRlLmFjdGl2ZUxhbmcpO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBVcGRhdGVJMThuU3RhdGVBY3Rpb24obGFuZ1N0YXRlKSk7XG4gICAgfVxuXG4gICAgaW5pdChsYW5nU3RhdGU/OiBUKTogT2JzZXJ2YWJsZTxFdWlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgICAgIGNvbnN0IGluaXRMYW5nID0gbGFuZ1N0YXRlICYmIGxhbmdTdGF0ZS5hY3RpdmVMYW5nID8gbGFuZ1N0YXRlLmFjdGl2ZUxhbmcgOiB0aGlzLnByZXBhcmVkRGVmYXVsdExhbmd1YWdlKCk7XG4gICAgICAgIGNvbnN0IGluaXRTdGF0ZSA9IHtcbiAgICAgICAgICAgIC4uLmxhbmdTdGF0ZSxcbiAgICAgICAgICAgIGFjdGl2ZUxhbmc6IGluaXRMYW5nLFxuICAgICAgICB9O1xuICAgICAgICBpZiAodHlwZW9mIGluaXRMYW5nID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgc3VwZXIuaW5pdEV1aVNlcnZpY2UodGhpcy5zdG9yZSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlKGluaXRTdGF0ZSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXR1cChpbml0TGFuZyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9mKHsgc3VjY2VzczogZmFsc2UsIGVycm9yOiAnSW5pdGlhbCBhY3RpdmUgbGFuZyBzaG91bGQgYmUgc3RyaW5nJyB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHBpcGUgZnVuY3Rpb24gdGhhdCBjb3VsZCBzZXJ2ZSBhcyBhIHdyYXBwZXIgb2YgYW5vdGhlciBvYnNlcnZhYmxlXG4gICAgICogZS5nLiBuZ3gtdHJhbnNsYXRlIGkxOG4ub25SZWFkeSgnbXlfbW9kdWxlJykucGlwZShzd2l0Y2hNYXAoKCk9PnRyYW5zbGF0ZS5nZXQoJ2V1aS5LRVknKSkpO1xuICAgICAqIFdBUk5JTkc6IG9uUmVhZHkgd2lsbCBlbWl0IG9ubHkgb25jZSBmb3IgYSBsb2FkZWQgTW9kdWxlLCBnb2luZyB0byBhbm90aGVyIGFuZCB0aGVuIGdvaW5nIGJhY2sgd2lsbCBub3QgcmVzdWx0XG4gICAgICogaW50byBhbm90aGVyIGVtaXNzaW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIG1vZHVsZU5hbWUgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGF0IGhhcyBiZWVuIGdpdmVuIHRocm91Z2ggdGhlIGVVSSBnbG9iYWxDb25maWcuIEluIGNhc2Ugbm9uIHByb3ZpZGVkXG4gICAgICogZmV0Y2ggbW9kdWxlIG5hbWUgZnJvbSB0aGUgc3RhdGUuXG4gICAgICovXG4gICAgb25SZWFkeShtb2R1bGVOYW1lPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMub25Nb2R1bGVMb2FkLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKGV2dDogTW9kdWxlTG9hZEV2ZW50KSA9PiBtb2R1bGVOYW1lID8gb2YoZXZ0KSA6XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoZ2V0TGFzdEFkZGVkTW9kdWxlKS5waXBlKHRhcChtID0+IG1vZHVsZU5hbWUgPSBtKSwgbWFwKCgpID0+IGV2dCkpKSxcbiAgICAgICAgICAgIC8vIGVtaXQgb25seSBpZiBldmVudCBlbWl0dGVkIG1hdGNoZXMgdGhlIG1vZHVsZSBuYW1lIGFuZCBpcyByZWFkeVxuICAgICAgICAgICAgZmlsdGVyKChldnQ6IE1vZHVsZUxvYWRFdmVudCkgPT4gZXZ0LnJlYWR5ID09PSB0cnVlICYmIGV2dC5uYW1lID09PSBtb2R1bGVOYW1lKSxcbiAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGF0IG9ic2VydmFibGUgY29tcGxldGVzXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBsYXp5TG9hZChjb25maWc6IEkxOG5Mb2FkZXJDb25maWcpOiBPYnNlcnZhYmxlPEV1aVNlcnZpY2VTdGF0dXM+IHtcbiAgICAgICAgY29uc3QgbW9kdWxlSWQgPSBNYXRoLmZsb29yKChNYXRoLnJhbmRvbSgpICogMTAwMDAwKSArIDEpLnRvTG9jYWxlU3RyaW5nKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZFJlc291cmNlcyhjb25maWcsIG1vZHVsZUlkKTtcbiAgICB9XG5cbiAgICBsYXp5TG9hZEluaXQobW9kdWxlQ29uZmlnOiBNb2R1bGVDb25maWcsIG1vZHVsZU5hbWU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEV1aVNlcnZpY2VTdGF0dXM+IHtcbiAgICAgICAgY29uc3QgaTE4bkxvYWRlckNvbmZpZyA9IG1vZHVsZUNvbmZpZyBhcyBJMThuTG9hZGVyQ29uZmlnO1xuICAgICAgICAvLyBhZGQgcmVzb3VyY2VzXG4gICAgICAgIHJldHVybiB0aGlzLmFkZFJlc291cmNlcyhpMThuTG9hZGVyQ29uZmlnLCBtb2R1bGVOYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgcmVzb3VyY2VzIGJhc2VkIG9mIGEgY29uZmlnIGxvYWRlclxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbmZpZyBJMThuTG9hZGVyQ29uZmlnXG4gICAgICogQHJldHVybiBQcm9taXNlPEV1aVNlcnZpY2VTdGF0dXM+IGFuIEV1aVNlcnZpY2VTdGF0dXMgd2hlbiB0cmFuc2xhdGlvbiBoYXMgZnVsbHkgbG9hZGVkXG4gICAgICovXG4gICAgcHVibGljIGFkZFJlc291cmNlcyhjb25maWc6IEkxOG5Mb2FkZXJDb25maWcsIG1vZHVsZU5hbWU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEV1aVNlcnZpY2VTdGF0dXM+IHtcblxuICAgICAgICAvLyBlbWl0IHRoYXQgbW9kdWxlIGlzIGxvYWRpbmdcbiAgICAgICAgdGhpcy5vbk1vZHVsZUxvYWQubmV4dCh7IHJlYWR5OiBmYWxzZSwgbmFtZTogbW9kdWxlTmFtZSB9KTtcblxuICAgICAgICBjb25zdCBsb2FkZXIgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExvYWRlcjtcbiAgICAgICAgaWYgKGxvYWRlciBpbnN0YW5jZW9mIEkxOG5Mb2FkZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhbmdTdWJzY3JpcHRpb246IE9ic2VydmFibGU8YW55PltdID0gW107XG4gICAgICAgICAgICBjb25zdCBpMThuTG9hZGVyID0gPEkxOG5Mb2FkZXI+bG9hZGVyO1xuXG4gICAgICAgICAgICAvLyBhZGQgdGhlIHJlc291cmNlcyB0byB0aGUgbG9hZGVyXG4gICAgICAgICAgICBjb25zdCByZXNvdXJjZXMgPSBpMThuTG9hZGVyLmFkZFJlc291cmNlcyhjb25maWcpO1xuXG4gICAgICAgICAgICAvLyBtYW51YWxseSBsb2FkIHRoZSByZXNvdXJjZXMgZm9yIHRoZSBDVVJSRU5UIGxhbmd1YWdlIGFuZCBhZGQgdGhlbSB0byB0aGUgdHJhbnNsYXRlIHNlcnZpY2VcbiAgICAgICAgICAgIGxhbmdTdWJzY3JpcHRpb24ucHVzaChpMThuTG9hZGVyLmxvYWRSZXNvdXJjZXMocmVzb3VyY2VzLCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcpXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgICAgIHRhcCgobG9hZGVkUmVzb3VyY2VzOiBMb2FkZWRSZXNvdXJjZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkZCB0aGUgbmV3IHNldCBvZiB0cmFuc2xhdGlvbnMgdG8gdGhlIGN1cnJlbnQgbGFuZ3VhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zZXRUcmFuc2xhdGlvbih0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcsIGxvYWRlZFJlc291cmNlcy50cmFuc2xhdGlvbnMsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICApKTtcblxuICAgICAgICAgICAgLy8gaWYgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UgaXMgZGlmZmVyZW50IHRoYW4gdGhlIERFRkFVTFQgbGFuZ3VhZ2VcbiAgICAgICAgICAgIGlmICh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcgIT09IHRoaXMudHJhbnNsYXRlU2VydmljZS5kZWZhdWx0TGFuZykge1xuICAgICAgICAgICAgICAgIC8vIG1hbnVhbGx5IGxvYWQgdGhlIHJlc291cmNlcyBmb3IgdGhlIGRlZmF1bHQgbGFuZ3VhZ2UgYW5kIGFkZCB0aGVtIHRvIHRoZSB0cmFuc2xhdGUgc2VydmljZVxuICAgICAgICAgICAgICAgIGxhbmdTdWJzY3JpcHRpb24ucHVzaChpMThuTG9hZGVyLmxvYWRSZXNvdXJjZXMocmVzb3VyY2VzLCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZGVmYXVsdExhbmcpXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcCgobG9hZGVkUmVzb3VyY2VzOiBMb2FkZWRSZXNvdXJjZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc2V0VHJhbnNsYXRpb24odGhpcy50cmFuc2xhdGVTZXJ2aWNlLmRlZmF1bHRMYW5nLCBsb2FkZWRSZXNvdXJjZXMudHJhbnNsYXRpb25zLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZvcmtKb2luKGxhbmdTdWJzY3JpcHRpb24pLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChsb2FkZWRSZXNvdXJjZXNBcnI6IExvYWRlZFJlc291cmNlc1tdKSA9PiAhbG9hZGVkUmVzb3VyY2VzQXJyWzBdLmhhc0Vycm9yID9cbiAgICAgICAgICAgICAgICAgICAgICAgIHsgc3VjY2VzczogdHJ1ZSB9IDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgc3VjY2VzczogZmFsc2UsIGVycm9yOiBsb2FkZWRSZXNvdXJjZXNBcnJbMF0uZXJyb3JzIH0pLFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGVtaXQgc3RhdHVzIG9mIG1vZHVsZSBsb2FkaW5nIHByb2dyZXNzXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25Nb2R1bGVMb2FkLm5leHQoeyByZWFkeTogdHJ1ZSwgbmFtZTogbW9kdWxlTmFtZSB9KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZW1pdCBzdGF0dXMgb2YgbW9kdWxlIGxvYWRpbmcgcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk1vZHVsZUxvYWQubmV4dCh7IHJlYWR5OiB0cnVlLCBuYW1lOiBtb2R1bGVOYW1lLCBlcnJvciB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHsgc3VjY2VzczogZmFsc2UsIGVycm9yIH0pO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBvZih7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcjogJ2N1cnJlbnRMb2FkZXIgaXMgbm90IGFuIEkxOG5Mb2FkZXIuJyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByZXBhcmVzIHRoZSBkZWZhdWx0IGxhbmd1YWdlXG4gICAgICovXG4gICAgcHJpdmF0ZSBwcmVwYXJlZERlZmF1bHRMYW5ndWFnZSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBicm93c2VyUHJlZiA9IGdldEJyb3dzZXJEZWZhdWx0TGFuZ3VhZ2UoKTtcbiAgICAgICAgLy8gSWYgdXNlciBoYXMgYnJvd3NlciBwcmVmZXJyZWQgbGFuZywgYW5kIHRoYXQgbGFuZ3VhZ2UgaXMgcGFydCBvZiB0aGUgbGFuZ3VhZ2VzIGFycmF5XG4gICAgICAgIGlmIChicm93c2VyUHJlZiAmJiB0aGlzLmNvbmZpZy5sYW5ndWFnZXMgJiYgVXhFdUxhbmd1YWdlcy5nZXRMYW5ndWFnZUNvZGVzKHRoaXMuY29uZmlnLmxhbmd1YWdlcykuaW5jbHVkZXMoYnJvd3NlclByZWYpKSB7XG4gICAgICAgICAgICByZXR1cm4gYnJvd3NlclByZWY7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmRlZmF1bHRMYW5ndWFnZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gZGVmYXVsdF9sYW5ndWFnZSBpZiBnaXZlbiBkZWZhdWx0IGxhbmd1YWdlIHRvIG92ZXJyaWRlIGRlZmF1bHQgbGFuZ3VhZ2UgY29taW5nIGZyb20gdGhlXG4gICAgICogY29uZmlndXJhdGlvbiB0b2tlbi5cbiAgICAgKi9cbiAgICBwcml2YXRlIHNldHVwKGluaXRMYW5ndWFnZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxFdWlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgICAgIC8vIHVzZSB0aGUgZGVmYXVsdCBjb25maWcgYXMgYSByZWZlcmVuY2UgYmFzZVxuICAgICAgICB0aGlzLmNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfSTE4Tl9TRVJWSUNFX0NPTkZJRywgdGhpcy5jb25maWcpO1xuICAgICAgICAvLyBjb25maWd1cmUgdGhlIHRyYW5zbGF0ZSBjb25maWcgc2VydmljZVxuICAgICAgICBpZiAodGhpcy5jb25maWcubGFuZ3VhZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuYWRkTGFuZ3MoVXhFdUxhbmd1YWdlcy5nZXRMYW5ndWFnZUNvZGVzKHRoaXMuY29uZmlnLmxhbmd1YWdlcykpO1xuICAgICAgICAgICAgaWYgKHRoaXMubG9nU2VydmljZSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nU2VydmljZS5pbmZvKGBJMThuIGFjY2VwdGVkIGxhbmd1YWdlcyBzZXQgdG8gJHtVeEV1TGFuZ3VhZ2VzLmdldExhbmd1YWdlQ29kZXModGhpcy5jb25maWcubGFuZ3VhZ2VzKX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBzZXQgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UsIGNhdXNpbmcgdG8gbG9hZCB0cmFuc2xhdGlvbnNcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZVxuICAgICAgICAgICAgLnVzZShpbml0TGFuZ3VhZ2UpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJpbmRBY3RpdmVMYW5nU3RhdGVUb1RyYW5zbGF0ZVNlcnZpY2UoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iaW5kVHJhbnNsYXRlU2VydmljZUxhbmdDaGFuZ2VUb1N0YXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5kZWZhdWx0TGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdExhbmd1YWdlKHRoaXMuY29uZmlnLmRlZmF1bHRMYW5ndWFnZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMb2FkZXIgaW5zdGFuY2VvZiBJMThuTG9hZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmYWlsZWRSZXNvdXJjZXMgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExvYWRlci5nZXRGYWlsZWRSZXNvdXJjZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWlsZWRSZXNvdXJjZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcjogZmFpbGVkUmVzb3VyY2VzIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiBvZih7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvciB9KSksXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmluZEFjdGl2ZUxhbmdTdGF0ZVRvVHJhbnNsYXRlU2VydmljZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoZ2V0QWN0aXZlTGFuZykuc3Vic2NyaWJlKChsYW5nOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGlmIChsYW5nICE9PSBudWxsICYmICh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcgIT09IGxhbmcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2UobGFuZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmluZFRyYW5zbGF0ZVNlcnZpY2VMYW5nQ2hhbmdlVG9TdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKGV2ZW50OiBMYW5nQ2hhbmdlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlSW5zdGFuY2UuYWN0aXZlTGFuZyAhPT0gZXZlbnQubGFuZykge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoeyBhY3RpdmVMYW5nOiBldmVudC5sYW5nIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMubG9nU2VydmljZSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nU2VydmljZS5pbmZvKGBJMThuIGN1cnJlbnQgbGFuZ3VhZ2Ugc2V0IHRvICR7ZXZlbnQubGFuZ31gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXREZWZhdWx0TGFuZ3VhZ2UoZGVmYXVsdExhbmd1YWdlOiBzdHJpbmcpIHtcbiAgICAgICAgLy8gcmVtb3ZlZCwgY3VycmVudCBsYW5ndWFnZSBpcyBhbHJlYWR5IGNhbGN1bGF0ZWQgaW4gaW5pdCwgc2V0dXAgZnVuY3Rpb24gZmlsbCB1c2UgaXQgZGlyZWN0bHksIG5vdCBkZWZhdWx0XG4gICAgICAgIC8vIHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZyA9IGRlZmF1bHRfbGFuZ3VhZ2UgfHwgdGhpcy5jb25maWcuZGVmYXVsdExhbmd1YWdlO1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc2V0RGVmYXVsdExhbmcoZGVmYXVsdExhbmd1YWdlKTtcbiAgICAgICAgaWYgKHRoaXMubG9nU2VydmljZSkge1xuICAgICAgICAgICAgdGhpcy5sb2dTZXJ2aWNlLmluZm8oYEkxOG4gZGVmYXVsdCBsYW5ndWFnZSBzZXQgdG8gJHtkZWZhdWx0TGFuZ3VhZ2V9YCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjaGFuZ2UgdGhlIGN1cnJlbnRseSB1c2VkIGxhbmd1YWdlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbGFuZyBpcyB0aGUgbGFuZ3VhZ2UgY29kZSBiYXNlZCBvbiB0aGUgY29udmVudGlvbiB5b3UgdXNlZCBlLmcuIChlbiBvciBlbi1FTilcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHRoYXQgcmV0dXJucyBhbiBvYmplY3QgY29udGFpbiB0aGUgb2JqZWN0IHRyYW5zbGF0aW9uIGZvciBnaXZlbiBsYW5ndWFnZSBhZnRlciBsYW5ndWFnZVxuICAgICAqIGZ1bGx5IGxvYWRlZC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHVzZShsYW5nOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnVzZShsYW5nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB1cGRhdGVzIHRoZSBIVE1MIGVsZW1lbnQgbGFuZyBhdHRyaWJ1dGVcbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSB1cGRhdGVIVE1MRE9NTGFuZyhsYW5nOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubGFuZyA9IGxhbmc7XG4gICAgfVxufVxuIl19
@@ -30,9 +30,9 @@ export class I18nServiceMock extends I18nService {
30
30
  return of({ success: true });
31
31
  }
32
32
  }
33
- /** @nocollapse */ I18nServiceMock.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: I18nServiceMock, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
34
- /** @nocollapse */ I18nServiceMock.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: I18nServiceMock });
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: I18nServiceMock, decorators: [{
33
+ /** @nocollapse */ I18nServiceMock.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: I18nServiceMock, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
34
+ /** @nocollapse */ I18nServiceMock.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: I18nServiceMock });
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: I18nServiceMock, decorators: [{
36
36
  type: Injectable
37
37
  }], ctorParameters: function () { return []; } });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5zZXJ2aWNlLm1vY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2kxOG4vaTE4bi5zZXJ2aWNlLm1vY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekQsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRzdDLE1BQU0sT0FBTyxlQUFnQixTQUFRLFdBQVc7SUFHNUM7UUFDSSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBSGhDLHFCQUFnQixHQUFXLElBQUksQ0FBQztJQUl4QyxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ1osT0FBTyxJQUFJLFlBQVksRUFBbUIsQ0FBQztJQUMvQyxDQUFDO0lBRUQsWUFBWTtRQUNSLE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksZUFBZTtRQUNmLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQ2pDLENBQUM7SUFFRCxRQUFRO1FBQ0osT0FBTyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsV0FBVyxDQUFDLFNBQW9CO1FBQzVCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQztJQUN6RCxDQUFDO0lBRUQsSUFBSSxDQUFDLFNBQXFCO1FBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQztRQUNyRCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxZQUFZO1FBQ1IsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDOztzSUFsQ1EsZUFBZTswSUFBZixlQUFlO2tHQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExhbmdDaGFuZ2VFdmVudCB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEV1aVNlcnZpY2VTdGF0dXMsIEkxOG5TdGF0ZSB9IGZyb20gJ0BldWkvYmFzZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4vaTE4bi5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEkxOG5TZXJ2aWNlTW9jayBleHRlbmRzIEkxOG5TZXJ2aWNlIHtcbiAgICBwcml2YXRlIERFRkFVTFRfTEFOR1VBR0U6IHN0cmluZyA9ICdlbic7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIobnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCk7XG4gICAgfVxuXG4gICAgZ2V0IG9uTGFuZ0NoYW5nZSgpOiBFdmVudEVtaXR0ZXI8TGFuZ0NoYW5nZUV2ZW50PiB7XG4gICAgICAgIHJldHVybiBuZXcgRXZlbnRFbWl0dGVyPExhbmdDaGFuZ2VFdmVudD4oKTtcbiAgICB9XG5cbiAgICBhZGRSZXNvdXJjZXMoKTogT2JzZXJ2YWJsZTxFdWlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgICAgIHJldHVybiBvZih7IHN1Y2Nlc3M6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgZ2V0IGN1cnJlbnRMYW5ndWFnZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5ERUZBVUxUX0xBTkdVQUdFO1xuICAgIH1cblxuICAgIGdldFN0YXRlKCk6IE9ic2VydmFibGU8STE4blN0YXRlPiB7XG4gICAgICAgIHJldHVybiBvZih7IGFjdGl2ZUxhbmc6IHRoaXMuREVGQVVMVF9MQU5HVUFHRSB9KTtcbiAgICB9XG5cbiAgICB1cGRhdGVTdGF0ZShpMThuU3RhdGU6IEkxOG5TdGF0ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLkRFRkFVTFRfTEFOR1VBR0UgPSBpMThuU3RhdGUuYWN0aXZlTGFuZyB8fCAnZW4nO1xuICAgIH1cblxuICAgIGluaXQoaTE4blN0YXRlPzogSTE4blN0YXRlKTogT2JzZXJ2YWJsZTxFdWlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgICAgIHRoaXMuREVGQVVMVF9MQU5HVUFHRSA9IGkxOG5TdGF0ZS5hY3RpdmVMYW5nIHx8ICdlbic7XG4gICAgICAgIHJldHVybiBvZih7IHN1Y2Nlc3M6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgbGF6eUxvYWRJbml0KCk6IE9ic2VydmFibGU8RXVpU2VydmljZVN0YXR1cz4ge1xuICAgICAgICByZXR1cm4gb2YoeyBzdWNjZXNzOiB0cnVlIH0pO1xuICAgIH1cblxufVxuIl19
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5zZXJ2aWNlLm1vY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2kxOG4vaTE4bi5zZXJ2aWNlLm1vY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekQsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRzdDLE1BQU0sT0FBTyxlQUFnQixTQUFRLFdBQVc7SUFHNUM7UUFDSSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBSGhDLHFCQUFnQixHQUFXLElBQUksQ0FBQztJQUl4QyxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ1osT0FBTyxJQUFJLFlBQVksRUFBbUIsQ0FBQztJQUMvQyxDQUFDO0lBRUQsWUFBWTtRQUNSLE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksZUFBZTtRQUNmLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQ2pDLENBQUM7SUFFRCxRQUFRO1FBQ0osT0FBTyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsV0FBVyxDQUFDLFNBQW9CO1FBQzVCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQztJQUN6RCxDQUFDO0lBRUQsSUFBSSxDQUFDLFNBQXFCO1FBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQztRQUNyRCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxZQUFZO1FBQ1IsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDOzsrSEFsQ1EsZUFBZTttSUFBZixlQUFlOzJGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExhbmdDaGFuZ2VFdmVudCB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEV1aVNlcnZpY2VTdGF0dXMsIEkxOG5TdGF0ZSB9IGZyb20gJ0BldWkvYmFzZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4vaTE4bi5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEkxOG5TZXJ2aWNlTW9jayBleHRlbmRzIEkxOG5TZXJ2aWNlIHtcbiAgICBwcml2YXRlIERFRkFVTFRfTEFOR1VBR0U6IHN0cmluZyA9ICdlbic7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIobnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCk7XG4gICAgfVxuXG4gICAgZ2V0IG9uTGFuZ0NoYW5nZSgpOiBFdmVudEVtaXR0ZXI8TGFuZ0NoYW5nZUV2ZW50PiB7XG4gICAgICAgIHJldHVybiBuZXcgRXZlbnRFbWl0dGVyPExhbmdDaGFuZ2VFdmVudD4oKTtcbiAgICB9XG5cbiAgICBhZGRSZXNvdXJjZXMoKTogT2JzZXJ2YWJsZTxFdWlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgICAgIHJldHVybiBvZih7IHN1Y2Nlc3M6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgZ2V0IGN1cnJlbnRMYW5ndWFnZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5ERUZBVUxUX0xBTkdVQUdFO1xuICAgIH1cblxuICAgIGdldFN0YXRlKCk6IE9ic2VydmFibGU8STE4blN0YXRlPiB7XG4gICAgICAgIHJldHVybiBvZih7IGFjdGl2ZUxhbmc6IHRoaXMuREVGQVVMVF9MQU5HVUFHRSB9KTtcbiAgICB9XG5cbiAgICB1cGRhdGVTdGF0ZShpMThuU3RhdGU6IEkxOG5TdGF0ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLkRFRkFVTFRfTEFOR1VBR0UgPSBpMThuU3RhdGUuYWN0aXZlTGFuZyB8fCAnZW4nO1xuICAgIH1cblxuICAgIGluaXQoaTE4blN0YXRlPzogSTE4blN0YXRlKTogT2JzZXJ2YWJsZTxFdWlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgICAgIHRoaXMuREVGQVVMVF9MQU5HVUFHRSA9IGkxOG5TdGF0ZS5hY3RpdmVMYW5nIHx8ICdlbic7XG4gICAgICAgIHJldHVybiBvZih7IHN1Y2Nlc3M6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgbGF6eUxvYWRJbml0KCk6IE9ic2VydmFibGU8RXVpU2VydmljZVN0YXR1cz4ge1xuICAgICAgICByZXR1cm4gb2YoeyBzdWNjZXNzOiB0cnVlIH0pO1xuICAgIH1cblxufVxuIl19
@@ -67,7 +67,7 @@ export class LocaleService extends EuiService {
67
67
  */
68
68
  updateState(state) {
69
69
  try {
70
- const id = getLocaleId(state.id);
70
+ const id = this.localeMapper(state.id);
71
71
  this.store.dispatch(new UpdateLocaleStateAction({ ...state, id }));
72
72
  // update global TOKEN ID based on configuration
73
73
  if (this.config.affectGlobalLocale) {
@@ -194,9 +194,9 @@ export class LocaleService extends EuiService {
194
194
  });
195
195
  }
196
196
  }
197
- /** @nocollapse */ LocaleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: LocaleService, deps: [{ token: i1.StoreService }, { token: GLOBAL_CONFIG_TOKEN }, { token: LOCALE_ID }, { token: LOCALE_ID_MAPPER, optional: true }, { token: i2.I18nService, optional: true }, { token: i3.LogService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
198
- /** @nocollapse */ LocaleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: LocaleService, providedIn: 'root' });
199
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: LocaleService, decorators: [{
197
+ /** @nocollapse */ LocaleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: LocaleService, deps: [{ token: i1.StoreService }, { token: GLOBAL_CONFIG_TOKEN }, { token: LOCALE_ID }, { token: LOCALE_ID_MAPPER, optional: true }, { token: i2.I18nService, optional: true }, { token: i3.LogService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
198
+ /** @nocollapse */ LocaleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: LocaleService, providedIn: 'root' });
199
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: LocaleService, decorators: [{
200
200
  type: Injectable,
201
201
  args: [{
202
202
  providedIn: 'root'
@@ -217,4 +217,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4",
217
217
  }] }, { type: i3.LogService, decorators: [{
218
218
  type: Optional
219
219
  }] }]; } });
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2xvY2FsZS9sb2NhbGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBRUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBYSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLFdBQVcsRUFBc0IsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRSxPQUFPLEVBQ0gsVUFBVSxFQUVWLGNBQWMsRUFDZCw4QkFBOEIsR0FLakMsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUF3QixFQUFFLEVBQUUsT0FBTyxFQUFRLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQVksU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEcsT0FBTyxFQUFnQix1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUdqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7QUFHdkQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQWUsZ0JBQWdCLENBQUMsQ0FBQztBQUtuRixNQUFNLE9BQU8sYUFBYyxTQUFRLFVBQXVCO0lBS3RELFlBQXNCLEtBQW1CLEVBQ1UsZ0JBQThCLEVBQ3hDLFNBQWlCLEVBQ0EsWUFBMEIsRUFDcEQsSUFBaUIsRUFDakIsR0FBZTtRQUMzQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQU5wQixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ1UscUJBQWdCLEdBQWhCLGdC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QyxjQUFjLEVBQUU7WUFDakIsT0FBTyxTQUFTLENBQUM7U0FDcEI7UUFFRCxPQUFPLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLHVCQUF1QixDQUFDLE9BQWlCO1FBQzdDLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFO1lBQ2xDLElBQUk7Z0JBQ0EsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNqQixPQUFPLEtBQUssQ0FBQzthQUNoQjtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNSLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O29JQS9NUSxhQUFhLDhDQU1GLG1CQUFtQixhQUNuQixTQUFTLGFBQ0csZ0JBQWdCO3dJQVJ2QyxhQUFhLGNBRlYsTUFBTTtrR0FFVCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBT2dCLE1BQU07MkJBQUMsbUJBQW1COzswQkFDMUIsTUFBTTsyQkFBQyxTQUFTOzswQkFDaEIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUNuQyxRQUFROzswQkFDUixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBbmd1bGFyIGlzIHVzaW5nIGEgZ3VscCB0YXNrIHRvIGdlbmVyYXRlIHRoZSBsb2NhbGVzIHRoYXQgd2UgZHluYW1pY2FsbHkgaW1wb3J0LiBUaGlzIHRhc2sgY2FuIGJlIGZvdW5kIGhlcmVcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi9tYXN0ZXIvdG9vbHMvZ3VscC10YXNrcy9jbGRyL2NsZHItZGF0YS5qc1xuICogVGhhdCB0YXNrIGlzIHV0aWxpemluZyB0aGUgQ0xEUiBsaWJyYXJ5IHRvIGxvYWQgYW5kIGNvbnN0cnVjdCB0aGUgbG9jYWxlIGZvciBlYWNoIHJlZ2lvbi4gVGhpcyBzZXJ2aWNlIGlzIHJlc3BvbnNpYmxlXG4gKiB0byBsb2FkIHRob3NlIGxvY2FsZSBkeW5hbWljYWxseSB1cG9uIHJlcXVlc3QgYW5kIHRvIHVwZGF0ZSB0aGUgc3RhdGUgb2YgdGhlIGVVSSBhcHAuXG4gKlxuICogUGFydHMgdGhhdCBhcmUgaGFuZGxlcyB0aHJvdWdoIGNvbmZpZ3VyYXRpb246XG4gKiAgLSB1cGRhdGUgb2YgdGhlIExPQ0FMRV9JRCB0b2tlblxuICogIC0gaW5pdGlhbCBkeW5hbWljYWwgbG9hZCBvZiBsb2NhbGVzXG4gKiAgLSBiaW5kIHRvIHRyYW5zbGF0aW9uIHNlcnZpY2UgZm9yIGxvY2FsZSBjaGFuZ2VzXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgTE9DQUxFX0lELCBPbkRlc3Ryb3ksIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXRMb2NhbGVJZCwgcmVnaXN0ZXJMb2NhbGVEYXRhIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgRXVpU2VydmljZSxcbiAgICBFdWlTZXJ2aWNlU3RhdHVzLFxuICAgIGdldExvY2FsZVN0YXRlLFxuICAgIGdldExvY2FsZVNlcnZpY2VDb25maWdGcm9tQmFzZSxcbiAgICBHbG9iYWxDb25maWcsXG4gICAgTG9jYWxlU2VydmljZUNvbmZpZyxcbiAgICBMb2NhbGVTdGF0ZSxcbiAgICBMb2dnZXIsXG59IGZyb20gJ0BldWkvYmFzZSc7XG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIGZyb20sIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBtZXJnZU1hcCwgc3dpdGNoTWFwLCB0YWtlLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN0b3JlU2VydmljZSwgVXBkYXRlTG9jYWxlU3RhdGVBY3Rpb24gfSBmcm9tICcuLi9zdG9yZSc7XG5pbXBvcnQgeyBMb2dTZXJ2aWNlIH0gZnJvbSAnLi4vbG9nJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vaTE4bic7XG5pbXBvcnQgeyBHTE9CQUxfQ09ORklHX1RPS0VOIH0gZnJvbSAnLi4vY29uZmlnL3Rva2Vucyc7XG5cbmV4cG9ydCB0eXBlIExvY2FsZU1hcHBlciA9IChsb2NhbGU6IHN0cmluZykgPT4gYW55O1xuZXhwb3J0IGNvbnN0IExPQ0FMRV9JRF9NQVBQRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48TG9jYWxlTWFwcGVyPignbG9jYWxlSWRNYXBwZXInKTtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBMb2NhbGVTZXJ2aWNlIGV4dGVuZHMgRXVpU2VydmljZTxMb2NhbGVTdGF0ZT4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXI7XG4gICAgcHJpdmF0ZSBzdWJOb3RpZmllcjogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcbiAgICBwcm90ZWN0ZWQgY29uZmlnOiBMb2NhbGVTZXJ2aWNlQ29uZmlnO1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIHN0b3JlOiBTdG9yZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgQEluamVjdChHTE9CQUxfQ09ORklHX1RPS0VOKSBwcm90ZWN0ZWQgYmFzZUdsb2JhbENvbmZpZzogR2xvYmFsQ29uZmlnLFxuICAgICAgICAgICAgICAgIEBJbmplY3QoTE9DQUxFX0lEKSBwcm90ZWN0ZWQgbG9jYWxlX2lkOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChMT0NBTEVfSURfTUFQUEVSKSBwcml2YXRlIGxvY2FsZU1hcHBlcjogTG9jYWxlTWFwcGVyLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgaTE4bjogSTE4blNlcnZpY2UsXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBsb2c6IExvZ1NlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoeyBpZDogZ2V0TG9jYWxlSWQobG9jYWxlX2lkKSB9KTtcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIgPSBsb2cuZ2V0TG9nZ2VyKCdjb3JlLkxvY2FsZVNlcnZpY2UnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnID0gZ2V0TG9jYWxlU2VydmljZUNvbmZpZ0Zyb21CYXNlKHRoaXMuYmFzZUdsb2JhbENvbmZpZyk7XG4gICAgICAgIC8vIGluIGNhc2Ugbm8gbG9jYWxlTWFwcGVyIHByb3ZpZGVkLCBzZXQgdGhlIGFuZ3VsYXIgZ2V0TG9jYWxlSWQgYXMgZGVmYXVsdFxuICAgICAgICBpZiAoIXRoaXMubG9jYWxlTWFwcGVyKSB7XG4gICAgICAgICAgICB0aGlzLmxvY2FsZU1hcHBlciA9IGdldExvY2FsZUlkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3ViTm90aWZpZXIubmV4dCh2b2lkIDApO1xuICAgICAgICB0aGlzLnN1Yk5vdGlmaWVyLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgZ2V0U3RhdGUoKTogT2JzZXJ2YWJsZTxMb2NhbGVTdGF0ZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoZ2V0TG9jYWxlU3RhdGUpLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5zdWJOb3RpZmllciksXG4gICAgICAgICAgICAvLyBpbiBjYXNlIHNlcnZpY2UgZGlkbid0IGluaXQgZmFsbGJhY2sgdG8gTE9DQUxFX0lEIHRva2VuIHZhbHVlXG4gICAgICAgICAgICBtYXAoc3RhdGUgPT4gc3RhdGUgPyBzdGF0ZSA6IHRoaXMuc3RhdGVJbnN0YW5jZSA/IHRoaXMuc3RhdGVJbnN0YW5jZSA6IHRoaXMubG9jYWxlX2lkKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGluaXQoc3RhdGU/OiBMb2NhbGVTdGF0ZSB8IHVuZGVmaW5lZCk6IE9ic2VydmFibGU8RXVpU2VydmljZVN0YXR1cz4ge1xuICAgICAgICBzdXBlci5pbml0RXVpU2VydmljZSgpO1xuXG4gICAgICAgIGlmIChzdGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUluc3RhbmNlID0gc3RhdGU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBiaW5kIGxhbmd1YWdlIGNoYW5nZXMgdG8gbG9jYWxlIGNoYW5nZXNcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnPy5iaW5kV2l0aFRyYW5zbGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5iaW5kVHJhbnNsYXRlU2VydmljZUxhbmdDaGFuZ2VUb1N0YXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBkeW5hbWljYWxseSBsb2FkIGxvY2FsZSBiYXNlZCBvbiBwcm92aWRlZCBjb25maWd1cmF0aW9uXG4gICAgICAgIGNvbnN0IGF2YWlsYWJsZUxvY2FsZXMgPSBzdGF0ZT8uYXZhaWxhYmxlIHx8IHRoaXMuY29uZmlnPy5hdmFpbGFibGUgfHwgdGhpcy5nZXRCcm93c2VyTG9jYWxlcygpIHx8IFt0aGlzLmN1cnJlbnRMb2NhbGVdO1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkTG9jYWxlKGF2YWlsYWJsZUxvY2FsZXMpLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5zdWJOb3RpZmllciksXG4gICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy51cGRhdGVTdGF0ZSh7IGlkOiB0aGlzLmN1cnJlbnRMb2NhbGUgfSkpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGR5bmFtaWNhbGx5IGxvYWQgbG9jYWxlIGFuZCB1cGRhdGUgdGhlIHN0YXRlXG4gICAgICovXG4gICAgdXBkYXRlU3RhdGUoc3RhdGU6IExvY2FsZVN0YXRlKTogdm9pZCB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBpZCA9IGdldExvY2FsZUlkKHN0YXRlLmlkKTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFVwZGF0ZUxvY2FsZVN0YXRlQWN0aW9uKHsgLi4uc3RhdGUsIGlkIH0pKTtcbiAgICAgICAgICAgIC8vIHVwZGF0ZSBnbG9iYWwgVE9LRU4gSUQgYmFzZWQgb24gY29uZmlndXJhdGlvblxuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLmFmZmVjdEdsb2JhbExvY2FsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxlX2lkID0gaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgTG9jYWxlIGZvciAnJHtzdGF0ZS5pZH0nIGlzIG5vdCBhdmFpbGFibGUuXG4gICAgICAgICAgICAgICAgIFBsZWFzZSB1c2UgYWRkTG9jYWxlKCcke3N0YXRlLmlkfScpIGZpcnN0YDtcbiAgICAgICAgICAgIGlmICh0aGlzLmxvZykge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmluZm8obWVzc2FnZSwgZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGRMb2NhbGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8RXVpU2VydmljZVN0YXR1cz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkTG9jYWxlKGlkKTtcbiAgICB9XG5cbiAgICBnZXQgcHJldmlvdXNMb2NhbGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJldlN0YXRlSW5zdGFuY2U/LmlkIHx8IHRoaXMuY3VycmVudExvY2FsZTtcbiAgICB9XG5cbiAgICBnZXQgY3VycmVudExvY2FsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZUluc3RhbmNlPy5pZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBsb2FkIGFuZCByZWdpc3RlciBsb2NhbGUgZGF0YSBkeW5hbWljYWxseVxuICAgICAqXG4gICAgICogQHBhcmFtIGxvY2FsZSBhcnJheSBvZiBsb2NhbGUgdG8gbG9hZFxuICAgICAqL1xuICAgIHByaXZhdGUgbG9hZExvY2FsZShsb2NhbGU6IHN0cmluZ1tdIHwgc3RyaW5nKTogT2JzZXJ2YWJsZTxFdWlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgICAgIC8vIGxvY2FsZSA9IEFycmF5LmlzQXJyYXkobG9jYWxlKSA/IGxvY2FsZSA6IFtsb2NhbGVdO1xuICAgICAgICAvLyBjb25zdCBsb2NhbGVJbXBvcnRzOiBPYnNlcnZhYmxlPHsgZGF0YTogYW55LCBsb2NhbGVJZDogc3RyaW5nLCBleHRyYURhdGE6IGFueSB9PltdXG4gICAgICAgIC8vICAgICA9IHRoaXMuZmlsdGVyUmVnaXN0ZXJlZExvY2FsZXMobG9jYWxlKS5tYXAodGhpcy5pbXBvcnREYXRhQW5kRXh0cmFMb2NhbGUuYmluZCh0aGlzKSk7XG4gICAgICAgIC8vXG4gICAgICAgIC8vIC8vIGluIGNhc2UgbG9jYWxlSW1wb3J0cyBhcnJheSBpcyBlbXB0eSBiZWNhdXNlIGxvY2FsZSBleGlzdHMsIE9ic2VydmFibGUgc3RpbGwgbmVlZHMgdG8gY29tcGxldGVcbiAgICAgICAgLy8gaWYgKGxvY2FsZUltcG9ydHMubGVuZ3RoIDwgMSkge1xuICAgICAgICAvLyAgICAgcmV0dXJuIG9mKHsgc3VjY2VzczogdHJ1ZSB9KTtcbiAgICAgICAgLy8gfVxuICAgICAgICAvL1xuICAgICAgICAvLyByZXR1cm4gZm9ya0pvaW4oLi4ubG9jYWxlSW1wb3J0cykucGlwZShcbiAgICAgICAgLy8gICAgIHRha2VVbnRpbCh0aGlzLnN1Yk5vdGlmaWVyKSxcbiAgICAgICAgLy8gICAgIG1hcChsb2NhbGVEYXRhID0+IHtcbiAgICAgICAgLy8gICAgICAgICAvLyBmaWx0ZXIgb3V0IG51bGwgcmVzdWx0cyBhbmQgcmVnaXN0ZXJMb2NhbGVEYXRhIGluY2x1ZGluZyBleHRyYVxuICAgICAgICAvLyAgICAgICAgIGxvY2FsZURhdGEuZmlsdGVyKCh7IGRhdGEgfSkgPT4gZGF0YSlcbiAgICAgICAgLy8gICAgICAgICAgICAgLmZvckVhY2goKHsgZGF0YSwgbG9jYWxlSWQsIGV4dHJhRGF0YSB9KSA9PiByZWdpc3RlckxvY2FsZURhdGEoZGF0YSwgbG9jYWxlSWQsIGV4dHJhRGF0YSkpO1xuICAgICAgICAvLyAgICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUgfTtcbiAgICAgICAgLy8gICAgIH0pLFxuICAgICAgICAvLyAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgIC8vICAgICAgICAgaWYgKHRoaXMubG9nKSB7XG4gICAgICAgIC8vICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBMb2NhbGUgbG9hZCBlcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsIGVycm9yKTtcbiAgICAgICAgLy8gICAgICAgICB9XG4gICAgICAgIC8vICAgICAgICAgcmV0dXJuIG9mKHsgc3VjY2VzczogZmFsc2UsIGVycm9yOiBlcnJvciB9KTtcbiAgICAgICAgLy8gICAgIH0pXG4gICAgICAgIC8vICk7XG4gICAgICAgIHJldHVybiBvZih7IHN1Y2Nlc3M6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbGlzdGVuIGZvciBsYW5ndWFnZSBjaGFuZ2VzIGFuZCBkeW5hbWljYWxseSBzZXQgbG9jYWxlIGFjY29yZGluZ2x5LiBJbiBjYXNlIG9mIG5vbiByZWdpc3RlcmVkIGxvY2FsZSByZWdpc3RlciBpdFxuICAgICAqIGR5bmFtaWNhbGx5LlxuICAgICAqL1xuICAgIHByaXZhdGUgYmluZFRyYW5zbGF0ZVNlcnZpY2VMYW5nQ2hhbmdlVG9TdGF0ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaTE4bikge1xuICAgICAgICAgICAgdGhpcy5pMThuLm9uU3RhdGVDaGFuZ2UucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5zdWJOb3RpZmllciksXG4gICAgICAgICAgICAgICAgLy8gZmlsdGVyIG91dCBudWxsIHZhbHVlc1xuICAgICAgICAgICAgICAgIGZpbHRlcihzdGF0ZSA9PiBzdGF0ZT8uYWN0aXZlTGFuZyAhPT0gbnVsbCAmJiBzdGF0ZT8uYWN0aXZlTGFuZyAhPT0gdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICAvLyBCRVdBUkU6IGZpbHRlciBpcyBiYXNlZCBvbiBjb252ZW50aW9uIHRoYXQgbG9jYWxlIGlkIHNsaWNlZCgyKSB3aWxsIG1hdGNoIGFjdGl2ZUxhbmcgZS5nLiBlbi1VUyA9PiBlblxuICAgICAgICAgICAgICAgIC8vIEFsc28sIGlmIGFjdGl2ZUxhbmcgaXMgJ2VuJyBhbmQgbG9jYWxlIGlzICdlbi1HQicgaXQgd2lsbCBub3QgdHJpZ2dlciBsb2NhbGUgY2hhbmdlXG4gICAgICAgICAgICAgICAgZmlsdGVyKHN0YXRlID0+IHN0YXRlLmFjdGl2ZUxhbmcudG9Mb3dlckNhc2UoKSAhPT0gdGhpcy5zdGF0ZUluc3RhbmNlPy5pZC5zbGljZSgwLCAyKS50b0xvd2VyQ2FzZSgpKSxcbiAgICAgICAgICAgICAgICAvLyB0byBjaGVjayBpZiByZWdpc3RyYXRpb24gb2YgbG9jYWxlIG90aGVyd2lzZSByZWdpc3RlciBpdFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCh2YWx1ZSA9PiBvZih2YWx1ZSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgLy8gZ2V0TG9jYWxlSWQgbWF5IHRocm93IEVycm9yKGBNaXNzaW5nIGxvY2FsZSBkYXRhIGZvciB0aGUgbG9jYWxlIFwiJHtsb2NhbGV9XCIuYCk7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcChpMThzdGF0ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiBhY3RpdmVMYW5nIGlzIG51bGwgb3IgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWkxOHN0YXRlLmFjdGl2ZUxhbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcignSGFzIGkxOG5TZXJ2aWNlIGluaXRpYWxpemVkPyBJZiBub3QgbWFrZSBzdXJlIGkxOG5TZXJ2aWNlLmluaXQoKS5zdWJzY3JpYmUoLi4pJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YodGhpcy5sb2NhbGVNYXBwZXIoaTE4c3RhdGUuYWN0aXZlTGFuZykpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2cpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkTG9jYWxlKHZhbHVlPy5hY3RpdmVMYW5nKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcigoczogRXVpU2VydmljZVN0YXR1cykgPT4gcy5zdWNjZXNzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAoKCkgPT4gdGhpcy5sb2NhbGVNYXBwZXIodmFsdWU/LmFjdGl2ZUxhbmcpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2cpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTb21ldGhpbmcgd2VudCB0ZXJyaWJseSByZWFsbHkgd3JvbmcgZHVyaW5nIGxvY2FsZSBsb2FkaW5nJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmVyci5tZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgKSksXG4gICAgICAgICAgICAgICAgLy8gdXBkYXRlIHRoZSBcImF2YWlsYWJsZVwiIGFycmF5IGF0dHJpYnV0ZSB3aXRoIG5ld2x5IHJlZ2lzdGVyZWRcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoaWQgPT4gdGhpcy5nZXRTdGF0ZSgpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgICAgIG1hcCgoc3RhdGU6IExvY2FsZVN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhdmFpbGFibGUgPSBzdGF0ZT8uYXZhaWxhYmxlID8gc3RhdGUuYXZhaWxhYmxlIDogW107XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgaWQsIGF2YWlsYWJsZTogQXJyYXkuZnJvbShuZXcgU2V0KFsuLi5hdmFpbGFibGUsIGlkXSkpIH07XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICkuc3Vic2NyaWJlKChzdGF0ZTogTG9jYWxlU3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlKHN0YXRlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0cmlldmUgbG9jYWxlcyBmcm9tIGJyb3dzZXJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRCcm93c2VyTG9jYWxlcygpOiBzdHJpbmdbXSB7XG4gICAgICAgIGNvbnN0IGJyb3dzZXJMb2NhbGVzID0gbmF2aWdhdG9yLmxhbmd1YWdlcyA9PT0gdW5kZWZpbmVkID8gW25hdmlnYXRvci5sYW5ndWFnZV0gOiBuYXZpZ2F0b3IubGFuZ3VhZ2VzO1xuXG4gICAgICAgIGlmICghYnJvd3NlckxvY2FsZXMpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYnJvd3NlckxvY2FsZXMubWFwKGxvY2FsZSA9PiBsb2NhbGUudHJpbSgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBpZiBsb2NhbGUgaXMgYWxyZWFkeSByZWdpc3RlcmVkIGZpbHRlcmVkIG91dC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBsb2NhbGVzIEEgc3RyaW5nIGFycmF5IGNvbnRhaW5zIGFsbCBsb2NhbGUgaWQgZS5nLiBbXCJlbFwiLCBcImVsLUNZXCJdXG4gICAgICovXG4gICAgcHJpdmF0ZSBmaWx0ZXJSZWdpc3RlcmVkTG9jYWxlcyhsb2NhbGVzOiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZXMuZmlsdGVyKChsb2M6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBnZXRMb2NhbGVJZChsb2MpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJucyBhbiBPYnNlcnZhYmxlIHdoaWNoIGxvYWRzIHRoZSBsb2NhbGUgYmFzZWQgb24gcHJvdmlkZWQgSURcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpZCB0aGUgbG9jYWxlIGlkIGUuZy4gZW4sIGVsLUNZXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICAvLyBwcml2YXRlIGltcG9ydExvY2FsZShpZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICAvLyAgICAgLy8gaW4gY2FzZSBvZiBhbiBlcnJvciwgY2F0Y2ggaXQgYW5kIHJldHVybiBudWxsXG4gICAgLy8gICAgIHJldHVybiBpbXBvcnQoXG4gICAgLy8gICAgICAgICAvKiB3ZWJwYWNrRXhjbHVkZTogL1xcLmRcXC50cyQvICovXG4gICAgLy8gICAgICAgICAvKiB3ZWJwYWNrTW9kZTogXCJsYXp5LW9uY2VcIiAqL1xuICAgIC8vICAgICAgICAgLyogd2VicGFja0NodW5rTmFtZTogXCJpMThuLWJhc2VcIiAqL1xuICAgIC8vICAgICAgICAgYEAvLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzLyR7aWR9YClcbiAgICAvLyAgICAgICAgIC50aGVuKG0gPT4gbS5kZWZhdWx0KVxuICAgIC8vICAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAvLyAgICAgICAgICAgICBpZiAodGhpcy5sb2cpIHtcbiAgICAvLyAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYExvY2FsZSB3aXRoIElEOiBcIiR7aWR9XCIgZmFpbGVkIHRvIGxvYWQuIEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgZXJyb3IpO1xuICAgIC8vICAgICAgICAgICAgIH1cbiAgICAvLyAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAvLyAgICAgICAgIH0pO1xuICAgIC8vIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybnMgYSBQcm9taXNlIHdoaWNoIGxvYWRzIHRoZSBsb2NhbGUgYmFzZWQgb24gcHJvdmlkZWQgSURcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpZCB0aGUgbG9jYWxlIGlkIGUuZy4gZW4sIGVsLUNZXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICAvLyBwcml2YXRlIGltcG9ydEV4dHJhTG9jYWxlKGlkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIC8vICAgICAvLyBpbiBjYXNlIG9mIGFuIGVycm9yLCBjYXRjaCBpdCBhbmQgcmV0dXJuIG51bGxcbiAgICAvLyAgICAgcmV0dXJuIGltcG9ydChcbiAgICAvLyAgICAgICAgIC8qIHdlYnBhY2tFeGNsdWRlOiAvXFwuZFxcLnRzJC8gKi9cbiAgICAvLyAgICAgICAgIC8qIHdlYnBhY2tNb2RlOiBcImxhenktb25jZVwiICovXG4gICAgLy8gICAgICAgICAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImkxOG4tZXh0cmFcIiAqL1xuICAgIC8vICAgICAgICAgYEAvLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2V4dHJhLyR7aWR9YClcbiAgICAvLyAgICAgICAgIC50aGVuKG0gPT4gbS5kZWZhdWx0KVxuICAgIC8vICAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAvLyAgICAgICAgICAgICBpZiAodGhpcy5sb2cpIHtcbiAgICAvLyAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYEV4dHJhIExvY2FsZSB3aXRoIElEOiBcIiR7aWR9XCIgZmFpbGVkIHRvIGxvYWQuIEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgZXJyb3IpO1xuICAgIC8vICAgICAgICAgICAgIH1cbiAgICAvLyAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAvLyAgICAgICAgIH0pO1xuICAgIC8vIH1cblxuICAgIC8qKlxuICAgICAqIEltcG9ydHMgTG9jYWxlIGFuZCB0aGVuIEV4dHJhLiBJdCByZXR1cm5zIHRoZSBPYmplY3Qgd2hpY2ggcmVnaXN0ZXJMb2NhbGUoLi4uKSBmdW5jdGlvbiBuZWVkcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBsb2NhbGVJZCBUaGUgaWQgb2YgdGhlIGxvY2FsZVxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgLy8gcHJpdmF0ZSBpbXBvcnREYXRhQW5kRXh0cmFMb2NhbGUobG9jYWxlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8eyBkYXRhOiBhbnksIGxvY2FsZUlkOiBzdHJpbmcsIGV4dHJhRGF0YTogYW55IH0+IHtcbiAgICAvLyAgICAgcmV0dXJuIGZyb20odGhpcy5pbXBvcnRMb2NhbGUobG9jYWxlSWQpKS5waXBlKFxuICAgIC8vICAgICAgICAgbWVyZ2VNYXAoKGRhdGEpID0+IGZyb20odGhpcy5pbXBvcnRFeHRyYUxvY2FsZShsb2NhbGVJZCkpLnBpcGUobWFwKChleHRyYURhdGEpID0+XG4gICAgLy8gICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oe30sIHsgZGF0YSwgbG9jYWxlSWQsIGV4dHJhRGF0YSB9KSkpLFxuICAgIC8vICAgICAgICAgICAgIDFcbiAgICAvLyAgICAgICAgICkpO1xuICAgIC8vIH1cbn1cbiJdfQ==
220
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2xvY2FsZS9sb2NhbGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBRUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBYSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLFdBQVcsRUFBc0IsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRSxPQUFPLEVBQ0gsVUFBVSxFQUVWLGNBQWMsRUFDZCw4QkFBOEIsR0FLakMsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUF3QixFQUFFLEVBQUUsT0FBTyxFQUFRLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQVksU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEcsT0FBTyxFQUFnQix1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUdqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7QUFHdkQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQWUsZ0JBQWdCLENBQUMsQ0FBQztBQUtuRixNQUFNLE9BQU8sYUFBYyxTQUFRLFVBQXVCO0lBS3RELFlBQXNCLEtBQW1CLEVBQ1UsZ0JBQThCLEVBQ3hDLFNBQWlCLEVBQ0EsWUFBMEIsRUFDcEQsSUFBaUIsRUFDakIsR0FBZTtRQUMzQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQU5wQixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ1UscUJBQWdCLEdBQWhCLGdC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RyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ2pCLE9BQU8sU0FBUyxDQUFDO1NBQ3BCO1FBRUQsT0FBTyxjQUFjLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyx1QkFBdUIsQ0FBQyxPQUFpQjtRQUM3QyxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRTtZQUNsQyxJQUFJO2dCQUNBLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDakIsT0FBTyxLQUFLLENBQUM7YUFDaEI7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDUixPQUFPLElBQUksQ0FBQzthQUNmO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzs2SEEvTVEsYUFBYSw4Q0FNRixtQkFBbUIsYUFDbkIsU0FBUyxhQUNHLGdCQUFnQjtpSUFSdkMsYUFBYSxjQUZWLE1BQU07MkZBRVQsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQU9nQixNQUFNOzJCQUFDLG1CQUFtQjs7MEJBQzFCLE1BQU07MkJBQUMsU0FBUzs7MEJBQ2hCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZ0JBQWdCOzswQkFDbkMsUUFBUTs7MEJBQ1IsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQW5ndWxhciBpcyB1c2luZyBhIGd1bHAgdGFzayB0byBnZW5lcmF0ZSB0aGUgbG9jYWxlcyB0aGF0IHdlIGR5bmFtaWNhbGx5IGltcG9ydC4gVGhpcyB0YXNrIGNhbiBiZSBmb3VuZCBoZXJlXG4gKiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvbWFzdGVyL3Rvb2xzL2d1bHAtdGFza3MvY2xkci9jbGRyLWRhdGEuanNcbiAqIFRoYXQgdGFzayBpcyB1dGlsaXppbmcgdGhlIENMRFIgbGlicmFyeSB0byBsb2FkIGFuZCBjb25zdHJ1Y3QgdGhlIGxvY2FsZSBmb3IgZWFjaCByZWdpb24uIFRoaXMgc2VydmljZSBpcyByZXNwb25zaWJsZVxuICogdG8gbG9hZCB0aG9zZSBsb2NhbGUgZHluYW1pY2FsbHkgdXBvbiByZXF1ZXN0IGFuZCB0byB1cGRhdGUgdGhlIHN0YXRlIG9mIHRoZSBlVUkgYXBwLlxuICpcbiAqIFBhcnRzIHRoYXQgYXJlIGhhbmRsZXMgdGhyb3VnaCBjb25maWd1cmF0aW9uOlxuICogIC0gdXBkYXRlIG9mIHRoZSBMT0NBTEVfSUQgdG9rZW5cbiAqICAtIGluaXRpYWwgZHluYW1pY2FsIGxvYWQgb2YgbG9jYWxlc1xuICogIC0gYmluZCB0byB0cmFuc2xhdGlvbiBzZXJ2aWNlIGZvciBsb2NhbGUgY2hhbmdlc1xuICovXG5cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIExPQ0FMRV9JRCwgT25EZXN0cm95LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0TG9jYWxlSWQsIHJlZ2lzdGVyTG9jYWxlRGF0YSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEV1aVNlcnZpY2UsXG4gICAgRXVpU2VydmljZVN0YXR1cyxcbiAgICBnZXRMb2NhbGVTdGF0ZSxcbiAgICBnZXRMb2NhbGVTZXJ2aWNlQ29uZmlnRnJvbUJhc2UsXG4gICAgR2xvYmFsQ29uZmlnLFxuICAgIExvY2FsZVNlcnZpY2VDb25maWcsXG4gICAgTG9jYWxlU3RhdGUsXG4gICAgTG9nZ2VyLFxufSBmcm9tICdAZXVpL2Jhc2UnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBmcm9tLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgbWVyZ2VNYXAsIHN3aXRjaE1hcCwgdGFrZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdG9yZVNlcnZpY2UsIFVwZGF0ZUxvY2FsZVN0YXRlQWN0aW9uIH0gZnJvbSAnLi4vc3RvcmUnO1xuaW1wb3J0IHsgTG9nU2VydmljZSB9IGZyb20gJy4uL2xvZyc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uL2kxOG4nO1xuaW1wb3J0IHsgR0xPQkFMX0NPTkZJR19UT0tFTiB9IGZyb20gJy4uL2NvbmZpZy90b2tlbnMnO1xuXG5leHBvcnQgdHlwZSBMb2NhbGVNYXBwZXIgPSAobG9jYWxlOiBzdHJpbmcpID0+IGFueTtcbmV4cG9ydCBjb25zdCBMT0NBTEVfSURfTUFQUEVSID0gbmV3IEluamVjdGlvblRva2VuPExvY2FsZU1hcHBlcj4oJ2xvY2FsZUlkTWFwcGVyJyk7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTG9jYWxlU2VydmljZSBleHRlbmRzIEV1aVNlcnZpY2U8TG9jYWxlU3RhdGU+IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogTG9nZ2VyO1xuICAgIHByaXZhdGUgc3ViTm90aWZpZXI6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XG4gICAgcHJvdGVjdGVkIGNvbmZpZzogTG9jYWxlU2VydmljZUNvbmZpZztcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzdG9yZTogU3RvcmVTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIEBJbmplY3QoR0xPQkFMX0NPTkZJR19UT0tFTikgcHJvdGVjdGVkIGJhc2VHbG9iYWxDb25maWc6IEdsb2JhbENvbmZpZyxcbiAgICAgICAgICAgICAgICBASW5qZWN0KExPQ0FMRV9JRCkgcHJvdGVjdGVkIGxvY2FsZV9pZDogc3RyaW5nLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTE9DQUxFX0lEX01BUFBFUikgcHJpdmF0ZSBsb2NhbGVNYXBwZXI6IExvY2FsZU1hcHBlcixcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGkxOG46IEkxOG5TZXJ2aWNlLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgbG9nOiBMb2dTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKHsgaWQ6IGdldExvY2FsZUlkKGxvY2FsZV9pZCkgfSk7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyID0gbG9nLmdldExvZ2dlcignY29yZS5Mb2NhbGVTZXJ2aWNlJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZyA9IGdldExvY2FsZVNlcnZpY2VDb25maWdGcm9tQmFzZSh0aGlzLmJhc2VHbG9iYWxDb25maWcpO1xuICAgICAgICAvLyBpbiBjYXNlIG5vIGxvY2FsZU1hcHBlciBwcm92aWRlZCwgc2V0IHRoZSBhbmd1bGFyIGdldExvY2FsZUlkIGFzIGRlZmF1bHRcbiAgICAgICAgaWYgKCF0aGlzLmxvY2FsZU1hcHBlcikge1xuICAgICAgICAgICAgdGhpcy5sb2NhbGVNYXBwZXIgPSBnZXRMb2NhbGVJZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN1Yk5vdGlmaWVyLm5leHQodm9pZCAwKTtcbiAgICAgICAgdGhpcy5zdWJOb3RpZmllci5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIGdldFN0YXRlKCk6IE9ic2VydmFibGU8TG9jYWxlU3RhdGU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KGdldExvY2FsZVN0YXRlKS5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuc3ViTm90aWZpZXIpLFxuICAgICAgICAgICAgLy8gaW4gY2FzZSBzZXJ2aWNlIGRpZG4ndCBpbml0IGZhbGxiYWNrIHRvIExPQ0FMRV9JRCB0b2tlbiB2YWx1ZVxuICAgICAgICAgICAgbWFwKHN0YXRlID0+IHN0YXRlID8gc3RhdGUgOiB0aGlzLnN0YXRlSW5zdGFuY2UgPyB0aGlzLnN0YXRlSW5zdGFuY2UgOiB0aGlzLmxvY2FsZV9pZClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpbml0KHN0YXRlPzogTG9jYWxlU3RhdGUgfCB1bmRlZmluZWQpOiBPYnNlcnZhYmxlPEV1aVNlcnZpY2VTdGF0dXM+IHtcbiAgICAgICAgc3VwZXIuaW5pdEV1aVNlcnZpY2UoKTtcblxuICAgICAgICBpZiAoc3RhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVJbnN0YW5jZSA9IHN0YXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gYmluZCBsYW5ndWFnZSBjaGFuZ2VzIHRvIGxvY2FsZSBjaGFuZ2VzXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZz8uYmluZFdpdGhUcmFuc2xhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuYmluZFRyYW5zbGF0ZVNlcnZpY2VMYW5nQ2hhbmdlVG9TdGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZHluYW1pY2FsbHkgbG9hZCBsb2NhbGUgYmFzZWQgb24gcHJvdmlkZWQgY29uZmlndXJhdGlvblxuICAgICAgICBjb25zdCBhdmFpbGFibGVMb2NhbGVzID0gc3RhdGU/LmF2YWlsYWJsZSB8fCB0aGlzLmNvbmZpZz8uYXZhaWxhYmxlIHx8IHRoaXMuZ2V0QnJvd3NlckxvY2FsZXMoKSB8fCBbdGhpcy5jdXJyZW50TG9jYWxlXTtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZExvY2FsZShhdmFpbGFibGVMb2NhbGVzKS5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuc3ViTm90aWZpZXIpLFxuICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMudXBkYXRlU3RhdGUoeyBpZDogdGhpcy5jdXJyZW50TG9jYWxlIH0pKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBkeW5hbWljYWxseSBsb2FkIGxvY2FsZSBhbmQgdXBkYXRlIHRoZSBzdGF0ZVxuICAgICAqL1xuICAgIHVwZGF0ZVN0YXRlKHN0YXRlOiBMb2NhbGVTdGF0ZSk6IHZvaWQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgaWQgPSB0aGlzLmxvY2FsZU1hcHBlcihzdGF0ZS5pZCk7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBVcGRhdGVMb2NhbGVTdGF0ZUFjdGlvbih7IC4uLnN0YXRlLCBpZCB9KSk7XG4gICAgICAgICAgICAvLyB1cGRhdGUgZ2xvYmFsIFRPS0VOIElEIGJhc2VkIG9uIGNvbmZpZ3VyYXRpb25cbiAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5hZmZlY3RHbG9iYWxMb2NhbGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsZV9pZCA9IGlkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYExvY2FsZSBmb3IgJyR7c3RhdGUuaWR9JyBpcyBub3QgYXZhaWxhYmxlLlxuICAgICAgICAgICAgICAgICBQbGVhc2UgdXNlIGFkZExvY2FsZSgnJHtzdGF0ZS5pZH0nKSBmaXJzdGA7XG4gICAgICAgICAgICBpZiAodGhpcy5sb2cpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKG1lc3NhZ2UsIGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWRkTG9jYWxlKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEV1aVNlcnZpY2VTdGF0dXM+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZExvY2FsZShpZCk7XG4gICAgfVxuXG4gICAgZ2V0IHByZXZpb3VzTG9jYWxlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZXZTdGF0ZUluc3RhbmNlPy5pZCB8fCB0aGlzLmN1cnJlbnRMb2NhbGU7XG4gICAgfVxuXG4gICAgZ2V0IGN1cnJlbnRMb2NhbGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGVJbnN0YW5jZT8uaWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbG9hZCBhbmQgcmVnaXN0ZXIgbG9jYWxlIGRhdGEgZHluYW1pY2FsbHlcbiAgICAgKlxuICAgICAqIEBwYXJhbSBsb2NhbGUgYXJyYXkgb2YgbG9jYWxlIHRvIGxvYWRcbiAgICAgKi9cbiAgICBwcml2YXRlIGxvYWRMb2NhbGUobG9jYWxlOiBzdHJpbmdbXSB8IHN0cmluZyk6IE9ic2VydmFibGU8RXVpU2VydmljZVN0YXR1cz4ge1xuICAgICAgICAvLyBsb2NhbGUgPSBBcnJheS5pc0FycmF5KGxvY2FsZSkgPyBsb2NhbGUgOiBbbG9jYWxlXTtcbiAgICAgICAgLy8gY29uc3QgbG9jYWxlSW1wb3J0czogT2JzZXJ2YWJsZTx7IGRhdGE6IGFueSwgbG9jYWxlSWQ6IHN0cmluZywgZXh0cmFEYXRhOiBhbnkgfT5bXVxuICAgICAgICAvLyAgICAgPSB0aGlzLmZpbHRlclJlZ2lzdGVyZWRMb2NhbGVzKGxvY2FsZSkubWFwKHRoaXMuaW1wb3J0RGF0YUFuZEV4dHJhTG9jYWxlLmJpbmQodGhpcykpO1xuICAgICAgICAvL1xuICAgICAgICAvLyAvLyBpbiBjYXNlIGxvY2FsZUltcG9ydHMgYXJyYXkgaXMgZW1wdHkgYmVjYXVzZSBsb2NhbGUgZXhpc3RzLCBPYnNlcnZhYmxlIHN0aWxsIG5lZWRzIHRvIGNvbXBsZXRlXG4gICAgICAgIC8vIGlmIChsb2NhbGVJbXBvcnRzLmxlbmd0aCA8IDEpIHtcbiAgICAgICAgLy8gICAgIHJldHVybiBvZih7IHN1Y2Nlc3M6IHRydWUgfSk7XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy9cbiAgICAgICAgLy8gcmV0dXJuIGZvcmtKb2luKC4uLmxvY2FsZUltcG9ydHMpLnBpcGUoXG4gICAgICAgIC8vICAgICB0YWtlVW50aWwodGhpcy5zdWJOb3RpZmllciksXG4gICAgICAgIC8vICAgICBtYXAobG9jYWxlRGF0YSA9PiB7XG4gICAgICAgIC8vICAgICAgICAgLy8gZmlsdGVyIG91dCBudWxsIHJlc3VsdHMgYW5kIHJlZ2lzdGVyTG9jYWxlRGF0YSBpbmNsdWRpbmcgZXh0cmFcbiAgICAgICAgLy8gICAgICAgICBsb2NhbGVEYXRhLmZpbHRlcigoeyBkYXRhIH0pID0+IGRhdGEpXG4gICAgICAgIC8vICAgICAgICAgICAgIC5mb3JFYWNoKCh7IGRhdGEsIGxvY2FsZUlkLCBleHRyYURhdGEgfSkgPT4gcmVnaXN0ZXJMb2NhbGVEYXRhKGRhdGEsIGxvY2FsZUlkLCBleHRyYURhdGEpKTtcbiAgICAgICAgLy8gICAgICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlIH07XG4gICAgICAgIC8vICAgICB9KSxcbiAgICAgICAgLy8gICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAvLyAgICAgICAgIGlmICh0aGlzLmxvZykge1xuICAgICAgICAvLyAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgTG9jYWxlIGxvYWQgZXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCBlcnJvcik7XG4gICAgICAgIC8vICAgICAgICAgfVxuICAgICAgICAvLyAgICAgICAgIHJldHVybiBvZih7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcjogZXJyb3IgfSk7XG4gICAgICAgIC8vICAgICB9KVxuICAgICAgICAvLyApO1xuICAgICAgICByZXR1cm4gb2YoeyBzdWNjZXNzOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGxpc3RlbiBmb3IgbGFuZ3VhZ2UgY2hhbmdlcyBhbmQgZHluYW1pY2FsbHkgc2V0IGxvY2FsZSBhY2NvcmRpbmdseS4gSW4gY2FzZSBvZiBub24gcmVnaXN0ZXJlZCBsb2NhbGUgcmVnaXN0ZXIgaXRcbiAgICAgKiBkeW5hbWljYWxseS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGJpbmRUcmFuc2xhdGVTZXJ2aWNlTGFuZ0NoYW5nZVRvU3RhdGUoKSB7XG4gICAgICAgIGlmICh0aGlzLmkxOG4pIHtcbiAgICAgICAgICAgIHRoaXMuaTE4bi5vblN0YXRlQ2hhbmdlLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuc3ViTm90aWZpZXIpLFxuICAgICAgICAgICAgICAgIC8vIGZpbHRlciBvdXQgbnVsbCB2YWx1ZXNcbiAgICAgICAgICAgICAgICBmaWx0ZXIoc3RhdGUgPT4gc3RhdGU/LmFjdGl2ZUxhbmcgIT09IG51bGwgJiYgc3RhdGU/LmFjdGl2ZUxhbmcgIT09IHVuZGVmaW5lZCksXG4gICAgICAgICAgICAgICAgLy8gQkVXQVJFOiBmaWx0ZXIgaXMgYmFzZWQgb24gY29udmVudGlvbiB0aGF0IGxvY2FsZSBpZCBzbGljZWQoMikgd2lsbCBtYXRjaCBhY3RpdmVMYW5nIGUuZy4gZW4tVVMgPT4gZW5cbiAgICAgICAgICAgICAgICAvLyBBbHNvLCBpZiBhY3RpdmVMYW5nIGlzICdlbicgYW5kIGxvY2FsZSBpcyAnZW4tR0InIGl0IHdpbGwgbm90IHRyaWdnZXIgbG9jYWxlIGNoYW5nZVxuICAgICAgICAgICAgICAgIGZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5hY3RpdmVMYW5nLnRvTG93ZXJDYXNlKCkgIT09IHRoaXMuc3RhdGVJbnN0YW5jZT8uaWQuc2xpY2UoMCwgMikudG9Mb3dlckNhc2UoKSksXG4gICAgICAgICAgICAgICAgLy8gdG8gY2hlY2sgaWYgcmVnaXN0cmF0aW9uIG9mIGxvY2FsZSBvdGhlcndpc2UgcmVnaXN0ZXIgaXRcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAodmFsdWUgPT4gb2YodmFsdWUpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIC8vIGdldExvY2FsZUlkIG1heSB0aHJvdyBFcnJvcihgTWlzc2luZyBsb2NhbGUgZGF0YSBmb3IgdGhlIGxvY2FsZSBcIiR7bG9jYWxlfVwiLmApO1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoaTE4c3RhdGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgYWN0aXZlTGFuZyBpcyBudWxsIG9yIHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpMThzdGF0ZS5hY3RpdmVMYW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoJ0hhcyBpMThuU2VydmljZSBpbml0aWFsaXplZD8gSWYgbm90IG1ha2Ugc3VyZSBpMThuU2VydmljZS5pbml0KCkuc3Vic2NyaWJlKC4uKScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMubG9jYWxlTWFwcGVyKGkxOHN0YXRlLmFjdGl2ZUxhbmcpKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9hZExvY2FsZSh2YWx1ZT8uYWN0aXZlTGFuZykucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKHM6IEV1aVNlcnZpY2VTdGF0dXMpID0+IHMuc3VjY2VzcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKCgpID0+IHRoaXMubG9jYWxlTWFwcGVyKHZhbHVlPy5hY3RpdmVMYW5nKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcihlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU29tZXRoaW5nIHdlbnQgdGVycmlibHkgcmVhbGx5IHdyb25nIGR1cmluZyBsb2NhbGUgbG9hZGluZycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5lcnIubWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICkpLFxuICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgXCJhdmFpbGFibGVcIiBhcnJheSBhdHRyaWJ1dGUgd2l0aCBuZXdseSByZWdpc3RlcmVkXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKGlkID0+IHRoaXMuZ2V0U3RhdGUoKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgICAgICBtYXAoKHN0YXRlOiBMb2NhbGVTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXZhaWxhYmxlID0gc3RhdGU/LmF2YWlsYWJsZSA/IHN0YXRlLmF2YWlsYWJsZSA6IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGlkLCBhdmFpbGFibGU6IEFycmF5LmZyb20obmV3IFNldChbLi4uYXZhaWxhYmxlLCBpZF0pKSB9O1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICApLnN1YnNjcmliZSgoc3RhdGU6IExvY2FsZVN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZShzdGF0ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHJpZXZlIGxvY2FsZXMgZnJvbSBicm93c2VyXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0QnJvd3NlckxvY2FsZXMoKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCBicm93c2VyTG9jYWxlcyA9IG5hdmlnYXRvci5sYW5ndWFnZXMgPT09IHVuZGVmaW5lZCA/IFtuYXZpZ2F0b3IubGFuZ3VhZ2VdIDogbmF2aWdhdG9yLmxhbmd1YWdlcztcblxuICAgICAgICBpZiAoIWJyb3dzZXJMb2NhbGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGJyb3dzZXJMb2NhbGVzLm1hcChsb2NhbGUgPT4gbG9jYWxlLnRyaW0oKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaWYgbG9jYWxlIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCBmaWx0ZXJlZCBvdXQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbG9jYWxlcyBBIHN0cmluZyBhcnJheSBjb250YWlucyBhbGwgbG9jYWxlIGlkIGUuZy4gW1wiZWxcIiwgXCJlbC1DWVwiXVxuICAgICAqL1xuICAgIHByaXZhdGUgZmlsdGVyUmVnaXN0ZXJlZExvY2FsZXMobG9jYWxlczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBsb2NhbGVzLmZpbHRlcigobG9jOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZ2V0TG9jYWxlSWQobG9jKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybnMgYW4gT2JzZXJ2YWJsZSB3aGljaCBsb2FkcyB0aGUgbG9jYWxlIGJhc2VkIG9uIHByb3ZpZGVkIElEXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaWQgdGhlIGxvY2FsZSBpZCBlLmcuIGVuLCBlbC1DWVxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgLy8gcHJpdmF0ZSBpbXBvcnRMb2NhbGUoaWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgLy8gICAgIC8vIGluIGNhc2Ugb2YgYW4gZXJyb3IsIGNhdGNoIGl0IGFuZCByZXR1cm4gbnVsbFxuICAgIC8vICAgICByZXR1cm4gaW1wb3J0KFxuICAgIC8vICAgICAgICAgLyogd2VicGFja0V4Y2x1ZGU6IC9cXC5kXFwudHMkLyAqL1xuICAgIC8vICAgICAgICAgLyogd2VicGFja01vZGU6IFwibGF6eS1vbmNlXCIgKi9cbiAgICAvLyAgICAgICAgIC8qIHdlYnBhY2tDaHVua05hbWU6IFwiaTE4bi1iYXNlXCIgKi9cbiAgICAvLyAgICAgICAgIGBALy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9jb21tb24vbG9jYWxlcy8ke2lkfWApXG4gICAgLy8gICAgICAgICAudGhlbihtID0+IG0uZGVmYXVsdClcbiAgICAvLyAgICAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgLy8gICAgICAgICAgICAgaWYgKHRoaXMubG9nKSB7XG4gICAgLy8gICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBMb2NhbGUgd2l0aCBJRDogXCIke2lkfVwiIGZhaWxlZCB0byBsb2FkLiBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsIGVycm9yKTtcbiAgICAvLyAgICAgICAgICAgICB9XG4gICAgLy8gICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgLy8gICAgICAgICB9KTtcbiAgICAvLyB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm5zIGEgUHJvbWlzZSB3aGljaCBsb2FkcyB0aGUgbG9jYWxlIGJhc2VkIG9uIHByb3ZpZGVkIElEXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaWQgdGhlIGxvY2FsZSBpZCBlLmcuIGVuLCBlbC1DWVxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgLy8gcHJpdmF0ZSBpbXBvcnRFeHRyYUxvY2FsZShpZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICAvLyAgICAgLy8gaW4gY2FzZSBvZiBhbiBlcnJvciwgY2F0Y2ggaXQgYW5kIHJldHVybiBudWxsXG4gICAgLy8gICAgIHJldHVybiBpbXBvcnQoXG4gICAgLy8gICAgICAgICAvKiB3ZWJwYWNrRXhjbHVkZTogL1xcLmRcXC50cyQvICovXG4gICAgLy8gICAgICAgICAvKiB3ZWJwYWNrTW9kZTogXCJsYXp5LW9uY2VcIiAqL1xuICAgIC8vICAgICAgICAgLyogd2VicGFja0NodW5rTmFtZTogXCJpMThuLWV4dHJhXCIgKi9cbiAgICAvLyAgICAgICAgIGBALy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS8ke2lkfWApXG4gICAgLy8gICAgICAgICAudGhlbihtID0+IG0uZGVmYXVsdClcbiAgICAvLyAgICAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgLy8gICAgICAgICAgICAgaWYgKHRoaXMubG9nKSB7XG4gICAgLy8gICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBFeHRyYSBMb2NhbGUgd2l0aCBJRDogXCIke2lkfVwiIGZhaWxlZCB0byBsb2FkLiBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsIGVycm9yKTtcbiAgICAvLyAgICAgICAgICAgICB9XG4gICAgLy8gICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgLy8gICAgICAgICB9KTtcbiAgICAvLyB9XG5cbiAgICAvKipcbiAgICAgKiBJbXBvcnRzIExvY2FsZSBhbmQgdGhlbiBFeHRyYS4gSXQgcmV0dXJucyB0aGUgT2JqZWN0IHdoaWNoIHJlZ2lzdGVyTG9jYWxlKC4uLikgZnVuY3Rpb24gbmVlZHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbG9jYWxlSWQgVGhlIGlkIG9mIHRoZSBsb2NhbGVcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIC8vIHByaXZhdGUgaW1wb3J0RGF0YUFuZEV4dHJhTG9jYWxlKGxvY2FsZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHsgZGF0YTogYW55LCBsb2NhbGVJZDogc3RyaW5nLCBleHRyYURhdGE6IGFueSB9PiB7XG4gICAgLy8gICAgIHJldHVybiBmcm9tKHRoaXMuaW1wb3J0TG9jYWxlKGxvY2FsZUlkKSkucGlwZShcbiAgICAvLyAgICAgICAgIG1lcmdlTWFwKChkYXRhKSA9PiBmcm9tKHRoaXMuaW1wb3J0RXh0cmFMb2NhbGUobG9jYWxlSWQpKS5waXBlKG1hcCgoZXh0cmFEYXRhKSA9PlxuICAgIC8vICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHt9LCB7IGRhdGEsIGxvY2FsZUlkLCBleHRyYURhdGEgfSkpKSxcbiAgICAvLyAgICAgICAgICAgICAxXG4gICAgLy8gICAgICAgICApKTtcbiAgICAvLyB9XG59XG4iXX0=
@@ -1,27 +1,38 @@
1
1
  import { Optional, Inject, Injectable, LOCALE_ID } from '@angular/core';
2
- import { of } from 'rxjs';
2
+ import { BehaviorSubject, of } from 'rxjs';
3
3
  import { LocaleService } from './locale.service';
4
+ import localeFr from '@angular/common/locales/fr';
5
+ import localeEl from '@angular/common/locales/el';
6
+ import { registerLocaleData } from '@angular/common';
4
7
  import * as i0 from "@angular/core";
5
8
  export class LocaleServiceMock extends LocaleService {
6
9
  constructor(locale_id) {
7
10
  super(null, { locale: { id: 'en', available: [] } }, locale_id, null, null, null);
8
11
  this.locale_id = locale_id;
9
12
  this.DEFAULT_LOCALE = 'en';
13
+ this.stateSubject = new BehaviorSubject({ id: this.DEFAULT_LOCALE });
10
14
  }
11
15
  getState() {
12
- return of({ id: this.DEFAULT_LOCALE });
16
+ return this.stateSubject.asObservable();
13
17
  }
14
18
  updateState(state) {
15
19
  this.DEFAULT_LOCALE = state.id || 'en';
20
+ if (state.id === 'fr') {
21
+ registerLocaleData(localeFr, 'fr');
22
+ }
23
+ else if (state.id === 'el') {
24
+ registerLocaleData(localeEl, 'fr');
25
+ }
26
+ this.stateSubject.next(state);
16
27
  }
17
28
  init(state) {
18
29
  this.DEFAULT_LOCALE = state.id || 'en';
19
30
  return of({ success: true });
20
31
  }
21
32
  }
22
- /** @nocollapse */ LocaleServiceMock.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: LocaleServiceMock, deps: [{ token: LOCALE_ID, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
23
- /** @nocollapse */ LocaleServiceMock.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: LocaleServiceMock });
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: LocaleServiceMock, decorators: [{
33
+ /** @nocollapse */ LocaleServiceMock.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: LocaleServiceMock, deps: [{ token: LOCALE_ID, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
34
+ /** @nocollapse */ LocaleServiceMock.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: LocaleServiceMock });
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: LocaleServiceMock, decorators: [{
25
36
  type: Injectable
26
37
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
27
38
  type: Optional
@@ -29,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4",
29
40
  type: Inject,
30
41
  args: [LOCALE_ID]
31
42
  }] }]; } });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLnNlcnZpY2UubW9jay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvbG9jYWxlL2xvY2FsZS5zZXJ2aWNlLm1vY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFHakQsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGFBQWE7SUFHaEQsWUFBcUQsU0FBaUI7UUFDbEUsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFDLE1BQU0sRUFBRSxFQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBQyxFQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFEN0IsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUY5RCxtQkFBYyxHQUFXLElBQUksQ0FBQztJQUl0QyxDQUFDO0lBRUQsUUFBUTtRQUNKLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBa0I7UUFDMUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQW1CO1FBQ3BCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUM7UUFDdkMsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDOzt3SUFsQlEsaUJBQWlCLGtCQUdNLFNBQVM7NElBSGhDLGlCQUFpQjtrR0FBakIsaUJBQWlCO2tCQUQ3QixVQUFVOzswQkFJTSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcHRpb25hbCwgSW5qZWN0LCBJbmplY3RhYmxlLCBMT0NBTEVfSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFdWlTZXJ2aWNlU3RhdHVzLCBMb2NhbGVTdGF0ZSB9IGZyb20gJ0BldWkvYmFzZSc7XG5pbXBvcnQgeyBMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnLi9sb2NhbGUuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBMb2NhbGVTZXJ2aWNlTW9jayBleHRlbmRzIExvY2FsZVNlcnZpY2Uge1xuICAgIHByaXZhdGUgREVGQVVMVF9MT0NBTEU6IHN0cmluZyA9ICdlbic7XG5cbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KExPQ0FMRV9JRCkgcHJvdGVjdGVkIGxvY2FsZV9pZDogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKG51bGwsIHtsb2NhbGU6IHtpZDogJ2VuJywgYXZhaWxhYmxlOiBbXX19LCBsb2NhbGVfaWQsIG51bGwsIG51bGwsIG51bGwpO1xuICAgIH1cblxuICAgIGdldFN0YXRlKCk6IE9ic2VydmFibGU8TG9jYWxlU3RhdGU+IHtcbiAgICAgICAgcmV0dXJuIG9mKHsgaWQ6IHRoaXMuREVGQVVMVF9MT0NBTEUgfSk7XG4gICAgfVxuXG4gICAgdXBkYXRlU3RhdGUoc3RhdGU6IExvY2FsZVN0YXRlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuREVGQVVMVF9MT0NBTEUgPSBzdGF0ZS5pZCB8fCAnZW4nO1xuICAgIH1cblxuICAgIGluaXQoc3RhdGU/OiBMb2NhbGVTdGF0ZSk6IE9ic2VydmFibGU8RXVpU2VydmljZVN0YXR1cz4ge1xuICAgICAgICB0aGlzLkRFRkFVTFRfTE9DQUxFID0gc3RhdGUuaWQgfHwgJ2VuJztcbiAgICAgICAgcmV0dXJuIG9mKHsgc3VjY2VzczogdHJ1ZSB9KTtcbiAgICB9XG5cbn1cbiJdfQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLnNlcnZpY2UubW9jay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvbG9jYWxlL2xvY2FsZS5zZXJ2aWNlLm1vY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUMsZUFBZSxFQUFjLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxRQUFRLE1BQU0sNEJBQTRCLENBQUM7QUFDbEQsT0FBTyxRQUFRLE1BQU0sNEJBQTRCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBR3JELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxhQUFhO0lBSWhELFlBQXFELFNBQWlCO1FBQ2xFLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBQyxNQUFNLEVBQUUsRUFBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUMsRUFBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRDdCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFIOUQsbUJBQWMsR0FBVyxJQUFJLENBQUM7UUFDOUIsaUJBQVksR0FBaUMsSUFBSSxlQUFlLENBQWMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFJbkgsQ0FBQztJQUVELFFBQVE7UUFDSixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFrQjtRQUMxQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDO1FBQ3ZDLElBQUcsS0FBSyxDQUFDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDbEIsa0JBQWtCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3RDO2FBQU0sSUFBSSxLQUFLLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUMxQixrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDdEM7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQW1CO1FBQ3BCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUM7UUFDdkMsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDOztpSUF6QlEsaUJBQWlCLGtCQUlNLFNBQVM7cUlBSmhDLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVOzswQkFLTSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcHRpb25hbCwgSW5qZWN0LCBJbmplY3RhYmxlLCBMT0NBTEVfSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFdWlTZXJ2aWNlU3RhdHVzLCBMb2NhbGVTdGF0ZSB9IGZyb20gJ0BldWkvYmFzZSc7XG5pbXBvcnQgeyBMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnLi9sb2NhbGUuc2VydmljZSc7XG5pbXBvcnQgbG9jYWxlRnIgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZnInO1xuaW1wb3J0IGxvY2FsZUVsIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2VsJztcbmltcG9ydCB7IHJlZ2lzdGVyTG9jYWxlRGF0YSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBMb2NhbGVTZXJ2aWNlTW9jayBleHRlbmRzIExvY2FsZVNlcnZpY2Uge1xuICAgIHByaXZhdGUgREVGQVVMVF9MT0NBTEU6IHN0cmluZyA9ICdlbic7XG4gICAgcHJpdmF0ZSBzdGF0ZVN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxMb2NhbGVTdGF0ZT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PExvY2FsZVN0YXRlPih7IGlkOiB0aGlzLkRFRkFVTFRfTE9DQUxFIH0pO1xuXG4gICAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChMT0NBTEVfSUQpIHByb3RlY3RlZCBsb2NhbGVfaWQ6IHN0cmluZykge1xuICAgICAgICBzdXBlcihudWxsLCB7bG9jYWxlOiB7aWQ6ICdlbicsIGF2YWlsYWJsZTogW119fSwgbG9jYWxlX2lkLCBudWxsLCBudWxsLCBudWxsKTtcbiAgICB9XG5cbiAgICBnZXRTdGF0ZSgpOiBPYnNlcnZhYmxlPExvY2FsZVN0YXRlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICB1cGRhdGVTdGF0ZShzdGF0ZTogTG9jYWxlU3RhdGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ERUZBVUxUX0xPQ0FMRSA9IHN0YXRlLmlkIHx8ICdlbic7XG4gICAgICAgIGlmKHN0YXRlLmlkID09PSAnZnInKSB7XG4gICAgICAgICAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlRnIsICdmcicpO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLmlkID09PSAnZWwnKSB7XG4gICAgICAgICAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlRWwsICdmcicpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgIH1cblxuICAgIGluaXQoc3RhdGU/OiBMb2NhbGVTdGF0ZSk6IE9ic2VydmFibGU8RXVpU2VydmljZVN0YXR1cz4ge1xuICAgICAgICB0aGlzLkRFRkFVTFRfTE9DQUxFID0gc3RhdGUuaWQgfHwgJ2VuJztcbiAgICAgICAgcmV0dXJuIG9mKHsgc3VjY2VzczogdHJ1ZSB9KTtcbiAgICB9XG5cbn1cbiJdfQ==
@@ -29,10 +29,10 @@ export class LogModule {
29
29
  };
30
30
  }
31
31
  }
32
- /** @nocollapse */ LogModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: LogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
33
- /** @nocollapse */ LogModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.0-next.4", ngImport: i0, type: LogModule });
34
- /** @nocollapse */ LogModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: LogModule });
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: LogModule, decorators: [{
32
+ /** @nocollapse */ LogModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: LogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
33
+ /** @nocollapse */ LogModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.0", ngImport: i0, type: LogModule });
34
+ /** @nocollapse */ LogModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: LogModule });
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: LogModule, decorators: [{
36
36
  type: NgModule
37
37
  }] });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvbG9nL2xvZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd4RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQUV6RCxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUFZLFlBQVksQ0FBQyxDQUFDO0FBRTVFOztHQUVHO0FBRUgsTUFBTSxPQUFPLFNBQVM7SUFDbEIsa0VBQWtFO0lBQ2xFLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBb0Isa0JBQWtCO1FBQ2pELE9BQU87WUFDSCxRQUFRLEVBQUUsU0FBUztZQUNuQixTQUFTLEVBQUU7Z0JBQ1AsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRTtnQkFDdEQsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSxRQUFRLENBQUMsRUFBRTthQUNwRztTQUNKLENBQUM7SUFDTixDQUFDO0lBRUQsK0dBQStHO0lBQy9HLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBb0Isa0JBQWtCO1FBQ2xELE9BQU87WUFDSCxRQUFRLEVBQUUsU0FBUztZQUNuQixTQUFTLEVBQUU7Z0JBQ1AsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRTtnQkFDdEQsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSxRQUFRLENBQUMsRUFBRTthQUNwRztTQUNKLENBQUM7SUFDTixDQUFDOztnSUFyQlEsU0FBUztpSUFBVCxTQUFTO2lJQUFULFNBQVM7a0dBQVQsU0FBUztrQkFEckIsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBJbmplY3RvciwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvZ0NvbmZpZyB9IGZyb20gJ0BldWkvYmFzZSc7XG5cbmltcG9ydCB7IExvZ1NlcnZpY2UgfSBmcm9tICcuL2xvZy5zZXJ2aWNlJztcbmltcG9ydCB7IERFRkFVTFRfTE9HX0NPTkZJRyB9IGZyb20gJy4uL2NvbmZpZy9kZWZhdWx0cyc7XG5pbXBvcnQgeyBsb2dTZXJ2aWNlRmFjdG9yeSB9IGZyb20gJy4uL2FwcC9mYWN0b3JpZXMvbG9nJztcblxuY29uc3QgTE9HX01PRFVMRV9DT05GSUdfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48TG9nQ29uZmlnPignTE9HX0NPTkZJRycpO1xuXG4vKipcbiAqIExvZyBNb2R1bGVcbiAqL1xuQE5nTW9kdWxlKClcbmV4cG9ydCBjbGFzcyBMb2dNb2R1bGUge1xuICAgIC8qKiBtZXRob2QgY2FsbGVkIGluIHlvdXIgcm9vdCBtb2R1bGUgdG8gcHJvdmlkZSB0aGUgTG9nU2VydmljZSAqL1xuICAgIHN0YXRpYyBmb3JSb290KGNvbmZpZzogTG9nQ29uZmlnID0gREVGQVVMVF9MT0dfQ09ORklHKTogTW9kdWxlV2l0aFByb3ZpZGVyczxMb2dNb2R1bGU+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5nTW9kdWxlOiBMb2dNb2R1bGUsXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IExPR19NT0RVTEVfQ09ORklHX1RPS0VOLCB1c2VWYWx1ZTogY29uZmlnIH0sXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBMb2dTZXJ2aWNlLCB1c2VGYWN0b3J5OiBsb2dTZXJ2aWNlRmFjdG9yeSwgZGVwczogW0xPR19NT0RVTEVfQ09ORklHX1RPS0VOLCBJbmplY3Rvcl0gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqIG1ldGhvZCBjYWxsZWQgaW4geW91ciBvdGhlciAobm9uIHJvb3QsIGxhenkgbG9hZGVkKSBtb2R1bGVzIHRvIGltcG9ydCBhIGRpZmZlcmVudCBpbnN0YW5jZSBvZiBMb2dTZXJ2aWNlICovXG4gICAgc3RhdGljIGZvckNoaWxkKGNvbmZpZzogTG9nQ29uZmlnID0gREVGQVVMVF9MT0dfQ09ORklHKTogTW9kdWxlV2l0aFByb3ZpZGVyczxMb2dNb2R1bGU+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5nTW9kdWxlOiBMb2dNb2R1bGUsXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IExPR19NT0RVTEVfQ09ORklHX1RPS0VOLCB1c2VWYWx1ZTogY29uZmlnIH0sXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBMb2dTZXJ2aWNlLCB1c2VGYWN0b3J5OiBsb2dTZXJ2aWNlRmFjdG9yeSwgZGVwczogW0xPR19NT0RVTEVfQ09ORklHX1RPS0VOLCBJbmplY3Rvcl0gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgfVxufVxuIl19
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvbG9nL2xvZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd4RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQUV6RCxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUFZLFlBQVksQ0FBQyxDQUFDO0FBRTVFOztHQUVHO0FBRUgsTUFBTSxPQUFPLFNBQVM7SUFDbEIsa0VBQWtFO0lBQ2xFLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBb0Isa0JBQWtCO1FBQ2pELE9BQU87WUFDSCxRQUFRLEVBQUUsU0FBUztZQUNuQixTQUFTLEVBQUU7Z0JBQ1AsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRTtnQkFDdEQsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSxRQUFRLENBQUMsRUFBRTthQUNwRztTQUNKLENBQUM7SUFDTixDQUFDO0lBRUQsK0dBQStHO0lBQy9HLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBb0Isa0JBQWtCO1FBQ2xELE9BQU87WUFDSCxRQUFRLEVBQUUsU0FBUztZQUNuQixTQUFTLEVBQUU7Z0JBQ1AsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRTtnQkFDdEQsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSxRQUFRLENBQUMsRUFBRTthQUNwRztTQUNKLENBQUM7SUFDTixDQUFDOzt5SEFyQlEsU0FBUzswSEFBVCxTQUFTOzBIQUFULFNBQVM7MkZBQVQsU0FBUztrQkFEckIsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBJbmplY3RvciwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvZ0NvbmZpZyB9IGZyb20gJ0BldWkvYmFzZSc7XG5cbmltcG9ydCB7IExvZ1NlcnZpY2UgfSBmcm9tICcuL2xvZy5zZXJ2aWNlJztcbmltcG9ydCB7IERFRkFVTFRfTE9HX0NPTkZJRyB9IGZyb20gJy4uL2NvbmZpZy9kZWZhdWx0cyc7XG5pbXBvcnQgeyBsb2dTZXJ2aWNlRmFjdG9yeSB9IGZyb20gJy4uL2FwcC9mYWN0b3JpZXMvbG9nJztcblxuY29uc3QgTE9HX01PRFVMRV9DT05GSUdfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48TG9nQ29uZmlnPignTE9HX0NPTkZJRycpO1xuXG4vKipcbiAqIExvZyBNb2R1bGVcbiAqL1xuQE5nTW9kdWxlKClcbmV4cG9ydCBjbGFzcyBMb2dNb2R1bGUge1xuICAgIC8qKiBtZXRob2QgY2FsbGVkIGluIHlvdXIgcm9vdCBtb2R1bGUgdG8gcHJvdmlkZSB0aGUgTG9nU2VydmljZSAqL1xuICAgIHN0YXRpYyBmb3JSb290KGNvbmZpZzogTG9nQ29uZmlnID0gREVGQVVMVF9MT0dfQ09ORklHKTogTW9kdWxlV2l0aFByb3ZpZGVyczxMb2dNb2R1bGU+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5nTW9kdWxlOiBMb2dNb2R1bGUsXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IExPR19NT0RVTEVfQ09ORklHX1RPS0VOLCB1c2VWYWx1ZTogY29uZmlnIH0sXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBMb2dTZXJ2aWNlLCB1c2VGYWN0b3J5OiBsb2dTZXJ2aWNlRmFjdG9yeSwgZGVwczogW0xPR19NT0RVTEVfQ09ORklHX1RPS0VOLCBJbmplY3Rvcl0gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqIG1ldGhvZCBjYWxsZWQgaW4geW91ciBvdGhlciAobm9uIHJvb3QsIGxhenkgbG9hZGVkKSBtb2R1bGVzIHRvIGltcG9ydCBhIGRpZmZlcmVudCBpbnN0YW5jZSBvZiBMb2dTZXJ2aWNlICovXG4gICAgc3RhdGljIGZvckNoaWxkKGNvbmZpZzogTG9nQ29uZmlnID0gREVGQVVMVF9MT0dfQ09ORklHKTogTW9kdWxlV2l0aFByb3ZpZGVyczxMb2dNb2R1bGU+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5nTW9kdWxlOiBMb2dNb2R1bGUsXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IExPR19NT0RVTEVfQ09ORklHX1RPS0VOLCB1c2VWYWx1ZTogY29uZmlnIH0sXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBMb2dTZXJ2aWNlLCB1c2VGYWN0b3J5OiBsb2dTZXJ2aWNlRmFjdG9yeSwgZGVwczogW0xPR19NT0RVTEVfQ09ORklHX1RPS0VOLCBJbmplY3Rvcl0gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgfVxufVxuIl19
@@ -34,9 +34,9 @@ export class LogService extends Logger {
34
34
  return logger;
35
35
  }
36
36
  }
37
- /** @nocollapse */ LogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: LogService, deps: [{ token: BASE_LOGGER_NAME_TOKEN }, { token: LOG_LEVEL_TOKEN }, { token: LOG_APPENDERS_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable });
38
- /** @nocollapse */ LogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: LogService });
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: LogService, decorators: [{
37
+ /** @nocollapse */ LogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: LogService, deps: [{ token: BASE_LOGGER_NAME_TOKEN }, { token: LOG_LEVEL_TOKEN }, { token: LOG_APPENDERS_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable });
38
+ /** @nocollapse */ LogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: LogService });
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: LogService, decorators: [{
40
40
  type: Injectable
41
41
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
42
42
  type: Inject,
@@ -48,4 +48,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4",
48
48
  type: Inject,
49
49
  args: [LOG_APPENDERS_TOKEN]
50
50
  }] }]; } });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2xvZy9sb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFlLE1BQU0sRUFBWSxNQUFNLFdBQVcsQ0FBQzs7O0FBRTFELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksY0FBYyxDQUFTLGtCQUFrQixDQUFDLENBQUM7QUFDckYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUFXLFdBQVcsQ0FBQyxDQUFDO0FBQ3pFLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksY0FBYyxDQUFnQixlQUFlLENBQUMsQ0FBQztBQUV0Rjs7R0FFRztBQUVILE1BQU0sT0FBTyxVQUFXLFNBQVEsTUFBTTtJQUtsQyxZQUM4QyxJQUFZLEVBQ25CLEtBQWUsRUFDWCxTQUF3QjtRQUUvRCxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztRQUpZLFNBQUksR0FBSixJQUFJLENBQVE7UUFDbkIsVUFBSyxHQUFMLEtBQUssQ0FBVTtRQUNYLGNBQVMsR0FBVCxTQUFTLENBQWU7UUFObkUscUNBQXFDO1FBQzNCLFlBQU8sR0FBRyxFQUFFLENBQUM7SUFRdkIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFNBQVMsQ0FBQyxVQUFrQixFQUFFLFVBQW1CLEtBQUs7UUFDbEQsa0NBQWtDO1FBQ2xDLE1BQU0sTUFBTSxHQUFHLE9BQU8sSUFBWSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVqSCx3RUFBd0U7UUFDeEUsSUFBSSxPQUFPLEVBQUU7WUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztTQUNyQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7O2lJQTlCUSxVQUFVLGtCQU1QLHNCQUFzQixhQUN0QixlQUFlLGFBQ2YsbUJBQW1CO3FJQVJ0QixVQUFVO2tHQUFWLFVBQVU7a0JBRHRCLFVBQVU7OzBCQU9GLE1BQU07MkJBQUMsc0JBQXNCOzswQkFDN0IsTUFBTTsyQkFBQyxlQUFlOzswQkFDdEIsTUFBTTsyQkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb2dBcHBlbmRlciwgTG9nZ2VyLCBMb2dMZXZlbCB9IGZyb20gJ0BldWkvYmFzZSc7XG5cbmV4cG9ydCBjb25zdCBCQVNFX0xPR0dFUl9OQU1FX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0JBU0VfTE9HR0VSX05BTUUnKTtcbmV4cG9ydCBjb25zdCBMT0dfTEVWRUxfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48TG9nTGV2ZWw+KCdMT0dfTEVWRUwnKTtcbmV4cG9ydCBjb25zdCBMT0dfQVBQRU5ERVJTX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPExvZ0FwcGVuZGVyW10+KCdMT0dfQVBQRU5ERVJTJyk7XG5cbi8qKlxuICogTG9nIHNlcnZpY2UsIHJlc3BvbnNpYmxlIGZvciBnZXR0aW5nIG9yIGNyZWF0aW5nIGxvZ2dlcnMuIEl0IGl0c2VsZiBhY3RzIGFzIGEgYmFzZSBsb2dnZXJcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIExvZ1NlcnZpY2UgZXh0ZW5kcyBMb2dnZXIge1xuXG4gICAgLyoqIHRoZSBsaXN0IG9mIHBlcnNpc3RlbnQgbG9nZ2VycyAqL1xuICAgIHByb3RlY3RlZCBsb2dnZXJzID0ge307XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChCQVNFX0xPR0dFUl9OQU1FX1RPS0VOKSBwcm90ZWN0ZWQgbmFtZTogc3RyaW5nLFxuICAgICAgICBASW5qZWN0KExPR19MRVZFTF9UT0tFTikgcHJvdGVjdGVkIGxldmVsOiBMb2dMZXZlbCxcbiAgICAgICAgQEluamVjdChMT0dfQVBQRU5ERVJTX1RPS0VOKSBwcm90ZWN0ZWQgYXBwZW5kZXJzOiBMb2dBcHBlbmRlcltdLFxuICAgICkge1xuICAgICAgICBzdXBlcihuYW1lLCBsZXZlbCwgYXBwZW5kZXJzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgbG9nZ2VyIGJ5IG5hbWUuIElmIHRoZSBsb2dnZXIgZG9lcyBub3QgZXhpc3QsIGl0IGlzIGNyZWF0ZWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBsb2dnZXJOYW1lIGxvZ2dlciBuYW1lXG4gICAgICogQHBhcmFtIHBlcnNpc3Qgb3B0aW9uYWwgcGFyYW1ldGVyLiBTZXQgaXQgdG8gdHJ1ZSBpZiB5b3Ugd2FudCB0byByZXVzZSB0aGUgbG9nZ2VyLiBCeSBkZWZhdWx0LCBpdCBpcyBzZXQgdG8gZmFsc2VcbiAgICAgKiBAcmV0dXJucyB0aGUgbG9nZ2VyXG4gICAgICovXG4gICAgZ2V0TG9nZ2VyKGxvZ2dlck5hbWU6IHN0cmluZywgcGVyc2lzdDogYm9vbGVhbiA9IGZhbHNlKTogTG9nZ2VyIHtcbiAgICAgICAgLy8gY3JlYXRlIHRoZSBsb2dnZXIsIGlmIG5lY2Vzc2FyeVxuICAgICAgICBjb25zdCBsb2dnZXIgPSBwZXJzaXN0ICYmIDxMb2dnZXI+dGhpcy5sb2dnZXJzW2xvZ2dlck5hbWVdIHx8IG5ldyBMb2dnZXIobG9nZ2VyTmFtZSwgdGhpcy5sZXZlbCwgdGhpcy5hcHBlbmRlcnMpO1xuXG4gICAgICAgIC8vIGlmIHRoZSBsb2dnZXIgaXMgcGVyc2lzdGVudCwgYWRkIGl0IHRvIHRoZSBsaXN0IG9mIHBlcnNpc3RlbnQgbG9nZ2Vyc1xuICAgICAgICBpZiAocGVyc2lzdCkge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXJzW2xvZ2dlck5hbWVdID0gbG9nZ2VyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxvZ2dlcjtcbiAgICB9XG59XG4iXX0=
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2xvZy9sb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFlLE1BQU0sRUFBWSxNQUFNLFdBQVcsQ0FBQzs7O0FBRTFELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksY0FBYyxDQUFTLGtCQUFrQixDQUFDLENBQUM7QUFDckYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUFXLFdBQVcsQ0FBQyxDQUFDO0FBQ3pFLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksY0FBYyxDQUFnQixlQUFlLENBQUMsQ0FBQztBQUV0Rjs7R0FFRztBQUVILE1BQU0sT0FBTyxVQUFXLFNBQVEsTUFBTTtJQUtsQyxZQUM4QyxJQUFZLEVBQ25CLEtBQWUsRUFDWCxTQUF3QjtRQUUvRCxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztRQUpZLFNBQUksR0FBSixJQUFJLENBQVE7UUFDbkIsVUFBSyxHQUFMLEtBQUssQ0FBVTtRQUNYLGNBQVMsR0FBVCxTQUFTLENBQWU7UUFObkUscUNBQXFDO1FBQzNCLFlBQU8sR0FBRyxFQUFFLENBQUM7SUFRdkIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFNBQVMsQ0FBQyxVQUFrQixFQUFFLFVBQW1CLEtBQUs7UUFDbEQsa0NBQWtDO1FBQ2xDLE1BQU0sTUFBTSxHQUFHLE9BQU8sSUFBWSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVqSCx3RUFBd0U7UUFDeEUsSUFBSSxPQUFPLEVBQUU7WUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztTQUNyQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7OzBIQTlCUSxVQUFVLGtCQU1QLHNCQUFzQixhQUN0QixlQUFlLGFBQ2YsbUJBQW1COzhIQVJ0QixVQUFVOzJGQUFWLFVBQVU7a0JBRHRCLFVBQVU7OzBCQU9GLE1BQU07MkJBQUMsc0JBQXNCOzswQkFDN0IsTUFBTTsyQkFBQyxlQUFlOzswQkFDdEIsTUFBTTsyQkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb2dBcHBlbmRlciwgTG9nZ2VyLCBMb2dMZXZlbCB9IGZyb20gJ0BldWkvYmFzZSc7XG5cbmV4cG9ydCBjb25zdCBCQVNFX0xPR0dFUl9OQU1FX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0JBU0VfTE9HR0VSX05BTUUnKTtcbmV4cG9ydCBjb25zdCBMT0dfTEVWRUxfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48TG9nTGV2ZWw+KCdMT0dfTEVWRUwnKTtcbmV4cG9ydCBjb25zdCBMT0dfQVBQRU5ERVJTX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPExvZ0FwcGVuZGVyW10+KCdMT0dfQVBQRU5ERVJTJyk7XG5cbi8qKlxuICogTG9nIHNlcnZpY2UsIHJlc3BvbnNpYmxlIGZvciBnZXR0aW5nIG9yIGNyZWF0aW5nIGxvZ2dlcnMuIEl0IGl0c2VsZiBhY3RzIGFzIGEgYmFzZSBsb2dnZXJcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIExvZ1NlcnZpY2UgZXh0ZW5kcyBMb2dnZXIge1xuXG4gICAgLyoqIHRoZSBsaXN0IG9mIHBlcnNpc3RlbnQgbG9nZ2VycyAqL1xuICAgIHByb3RlY3RlZCBsb2dnZXJzID0ge307XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChCQVNFX0xPR0dFUl9OQU1FX1RPS0VOKSBwcm90ZWN0ZWQgbmFtZTogc3RyaW5nLFxuICAgICAgICBASW5qZWN0KExPR19MRVZFTF9UT0tFTikgcHJvdGVjdGVkIGxldmVsOiBMb2dMZXZlbCxcbiAgICAgICAgQEluamVjdChMT0dfQVBQRU5ERVJTX1RPS0VOKSBwcm90ZWN0ZWQgYXBwZW5kZXJzOiBMb2dBcHBlbmRlcltdLFxuICAgICkge1xuICAgICAgICBzdXBlcihuYW1lLCBsZXZlbCwgYXBwZW5kZXJzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgbG9nZ2VyIGJ5IG5hbWUuIElmIHRoZSBsb2dnZXIgZG9lcyBub3QgZXhpc3QsIGl0IGlzIGNyZWF0ZWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBsb2dnZXJOYW1lIGxvZ2dlciBuYW1lXG4gICAgICogQHBhcmFtIHBlcnNpc3Qgb3B0aW9uYWwgcGFyYW1ldGVyLiBTZXQgaXQgdG8gdHJ1ZSBpZiB5b3Ugd2FudCB0byByZXVzZSB0aGUgbG9nZ2VyLiBCeSBkZWZhdWx0LCBpdCBpcyBzZXQgdG8gZmFsc2VcbiAgICAgKiBAcmV0dXJucyB0aGUgbG9nZ2VyXG4gICAgICovXG4gICAgZ2V0TG9nZ2VyKGxvZ2dlck5hbWU6IHN0cmluZywgcGVyc2lzdDogYm9vbGVhbiA9IGZhbHNlKTogTG9nZ2VyIHtcbiAgICAgICAgLy8gY3JlYXRlIHRoZSBsb2dnZXIsIGlmIG5lY2Vzc2FyeVxuICAgICAgICBjb25zdCBsb2dnZXIgPSBwZXJzaXN0ICYmIDxMb2dnZXI+dGhpcy5sb2dnZXJzW2xvZ2dlck5hbWVdIHx8IG5ldyBMb2dnZXIobG9nZ2VyTmFtZSwgdGhpcy5sZXZlbCwgdGhpcy5hcHBlbmRlcnMpO1xuXG4gICAgICAgIC8vIGlmIHRoZSBsb2dnZXIgaXMgcGVyc2lzdGVudCwgYWRkIGl0IHRvIHRoZSBsaXN0IG9mIHBlcnNpc3RlbnQgbG9nZ2Vyc1xuICAgICAgICBpZiAocGVyc2lzdCkge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXJzW2xvZ2dlck5hbWVdID0gbG9nZ2VyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxvZ2dlcjtcbiAgICB9XG59XG4iXX0=
@@ -100,9 +100,9 @@ export class EuiPermissionService extends EuiService {
100
100
  return rights.every((right) => this.userRights.find((uRight) => uRight.id === right.id));
101
101
  }
102
102
  }
103
- /** @nocollapse */ EuiPermissionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EuiPermissionService, deps: [{ token: i1.LogService, optional: true }, { token: i2.StoreService }], target: i0.ɵɵFactoryTarget.Injectable });
104
- /** @nocollapse */ EuiPermissionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EuiPermissionService, providedIn: 'root' });
105
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EuiPermissionService, decorators: [{
103
+ /** @nocollapse */ EuiPermissionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: EuiPermissionService, deps: [{ token: i1.LogService, optional: true }, { token: i2.StoreService }], target: i0.ɵɵFactoryTarget.Injectable });
104
+ /** @nocollapse */ EuiPermissionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: EuiPermissionService, providedIn: 'root' });
105
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: EuiPermissionService, decorators: [{
106
106
  type: Injectable,
107
107
  args: [{
108
108
  providedIn: 'root',
@@ -110,4 +110,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4",
110
110
  }], ctorParameters: function () { return [{ type: i1.LogService, decorators: [{
111
111
  type: Optional
112
112
  }] }, { type: i2.StoreService }]; } });
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9wZXJtaXNzaW9uL3Blcm1pc3Npb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQ0gsVUFBVSxFQUVWLGFBQWEsR0FHaEIsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUd0QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBSzFDLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxVQUF5QjtJQUcvRCxZQUFnQyxHQUFlLEVBQVksS0FBbUI7UUFDMUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRGtCLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFBWSxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBRTFFLElBQUksR0FBRyxFQUFFO1lBQ0wsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDLENBQUM7U0FDekQ7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLE1BQXFCO1FBQ3RCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN6QixPQUFPLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ2hDO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2IsSUFBSSxDQUFDLE1BQU0s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amVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEV1aVNlcnZpY2UsXG4gICAgRXVpU2VydmljZVN0YXR1cyxcbiAgICBnZXRVc2VyUmlnaHRzLFxuICAgIFV4VXNlclJpZ2h0LFxuICAgIExvZ2dlcixcbn0gZnJvbSAnQGV1aS9iYXNlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMb2dTZXJ2aWNlIH0gZnJvbSAnLi4vbG9nL2xvZy5zZXJ2aWNlJztcbmltcG9ydCB7IFN0b3JlU2VydmljZSB9IGZyb20gJy4uL3N0b3JlL3N0b3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXBkYXRlVXNlclJpZ2h0c0FjdGlvbiB9IGZyb20gJy4uL3N0b3JlL2FjdGlvbnMvdXNlci5hY3Rpb25zJztcbmltcG9ydCB7IGlzRGVmaW5lZCB9IGZyb20gJy4uLy4uL2hlbHBlcnMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBFdWlQZXJtaXNzaW9uU2VydmljZSBleHRlbmRzIEV1aVNlcnZpY2U8VXhVc2VyUmlnaHRbXT4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXI7XG5cbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBwcml2YXRlIGxvZzogTG9nU2VydmljZSwgcHJvdGVjdGVkIHN0b3JlOiBTdG9yZVNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoW10pO1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlciA9IGxvZy5nZXRMb2dnZXIoJ2NvcmUuUGVybWlzc2lvblNlcnZpY2UnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGluaXRpYWxpemUgdGhlIHNlcnZpY2UgYnkgcHJvdmlkaW5nIGEgc3RhdGVcbiAgICAgKiBAcGFyYW0gcmlnaHRzXG4gICAgICovXG4gICAgaW5pdChyaWdodHM6IFV4VXNlclJpZ2h0W10pOiBPYnNlcnZhYmxlPEV1aVNlcnZpY2VTdGF0dXM+IHtcbiAgICAgICAgc3VwZXIuaW5pdEV1aVNlcnZpY2UoKTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmlnaHRzKSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZShyaWdodHMpO1xuICAgICAgICAgICAgcmV0dXJuIG9mKHsgc3VjY2VzczogdHJ1ZSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0luaXQgb2JqZWN0IHNob3VsZCBiZSBpbnN0YW5jZSBvZiBCYXNlVXNlclN0YXRlJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9mKHsgc3VjY2VzczogZmFsc2UsIGVycm9yOiAnSW5pdCBvYmplY3Qgc2hvdWxkIGJlIGluc3RhbmNlIG9mIEJhc2VVc2VyU3RhdGUnIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgdXNlclJpZ2h0cygpOiBVeFVzZXJSaWdodFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGVJbnN0YW5jZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBnZXQgdGhlIHVzZXIncyBSaWdodHMgZnJvbSB0aGUgc3RhdGVcbiAgICAgKi9cbiAgICBnZXRTdGF0ZTxLID0gVXhVc2VyUmlnaHRbXT4oKTogT2JzZXJ2YWJsZTxLPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChnZXRVc2VyUmlnaHRzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB1cGRhdGUgdGhlIHN0YXRlIHdpdGggdGhlIGdpdmVuIHVzZXIncyByaWdodHNcbiAgICAgKiBAcGFyYW0gcmlnaHRzXG4gICAgICovXG4gICAgdXBkYXRlU3RhdGUocmlnaHRzOiBVeFVzZXJSaWdodFtdKSB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFVwZGF0ZVVzZXJSaWdodHNBY3Rpb24ocmlnaHRzIHx8IFtdKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogYWNjZXB0cyBhIHN0cmluZyBvZiByaWdodCBhbmQgb3IgYSBwZXJtaXNzaW9uLiBJbiBzdHJpbmcgZmlyc3QgY29tZXMgdGhlIHJpZ2h0IGFuZCBvciBmb2xsb3dlZCBieSBwZXJtaXNzaW9uIGluXG4gICAgICogYSBkb3Qgc2VwYXJhdGVkIHdheSBlLmcuICdSSUdIVC5QRVJNSVNTSU9OJyBvciAnUklHSFQnLiBUaGUgc3RyaW5nIGNhbiBjb250YWluIG1vcmUgdGhhdCAyIHNlcGFyYXRlZCBmaWVsZHMuXG4gICAgICogSW4gdGhhdCBjYXNlIHRoZSBsYXN0IGZpZWxkIHNob3VsZCBiZSB0aGUgcGVybWlzc2lvbiBhbmQgYWxsIHRoZSBvdGhlcnMgYSBSaWdodC4gZS5nLiAnUklHSFQxLlJJR0hUMi5QRVJNSVNTSU9OJ1xuICAgICAqIFRoZSBsYXN0IHBhcnQgaXMgdXNlZnVsIHdoZXJlIHlvdSB3YW50IGEgdXNlciB0byBoYXZlIG11bHRpcGxlIHJpZ2h0cyBhbmQgdGhlIHBlcm1pc3Npb24gb2YgdGhlIGxhc3QgcmlnaHQuXG4gICAgICogQHBhcmFtIHJpZ2h0c0FuZFBlcm1pc3Npb25cbiAgICAgKi9cbiAgICBjaGVja0F0dHJpYnV0ZVBlcm1pc3Npb24ocmlnaHRzQW5kUGVybWlzc2lvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHBlcm1Qcm9wcyA9IHJpZ2h0c0FuZFBlcm1pc3Npb24uc3BsaXQoJy4nKTtcbiAgICAgICAgY29uc3QgcmlnaHRJZCA9IHBlcm1Qcm9wc1swXTtcbiAgICAgICAgY29uc3QgaGFzUmlnaHQgPSB0aGlzLmNoZWNrUmlnaHQocmlnaHRJZCk7XG5cbiAgICAgICAgaWYgKGhhc1JpZ2h0KSB7XG4gICAgICAgICAgICBpZiAocGVybVByb3BzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgICAgIC8vIGluIGNhc2Ugb2YgJ1JJR0hULlBFUk1JU1NJT04nXG4gICAgICAgICAgICAgICAgY29uc3QgcGVybWlzc2lvbiA9IHBlcm1Qcm9wc1sxXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jaGVja1Blcm1pc3Npb24ocmlnaHRJZCwgcGVybWlzc2lvbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBlcm1Qcm9wcy5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgICAgICAgLy8gaW4gY2FzZSBvZiAnUklHSFQxLlJJR0hUMi4uLi4uUEVSTUlTU0lPTicgc3RyaW5nIGNhbGwgcmVjdXJzaXZlbHlcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jaGVja0F0dHJpYnV0ZVBlcm1pc3Npb24ocmlnaHRzQW5kUGVybWlzc2lvbi5zbGljZShyaWdodElkLmxlbmd0aCArIDEpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBoYXNSaWdodDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjaGVjayBpZiBhIHVzZXIgaGFzIHRoZSByaWdodC5cbiAgICAgKiBAcGFyYW0gcmlnaHRJZCB0aGUgaWQgb2YgUmlnaHRcbiAgICAgKi9cbiAgICBjaGVja1JpZ2h0KHJpZ2h0SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy51c2VyUmlnaHRzLnNvbWUocmlnaHQgPT4gcmlnaHQgJiYgcmlnaHQuaWQgPT09IHJpZ2h0SWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNoZWNrIGlmIGEgdXNlciBoYXMgdGhhdCByaWdodCBhbmQgdGhhdCByaWdodCBoYXMgdGhlIHBlcm1pc3Npb24gZ2l2ZW4uXG4gICAgICogQHBhcmFtIHJpZ2h0SWQgdGhlIHJpZ2h0IG9mIHRoZSB1c2VyXG4gICAgICogQHBhcmFtIHBlcm1pc3Npb24gdGhlIHBlcm1pc3Npb24gb2YgdGhlIHJpZ2h0XG4gICAgICovXG4gICAgY2hlY2tQZXJtaXNzaW9uKHJpZ2h0SWQ6IHN0cmluZywgcGVybWlzc2lvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIC8vIHRoZSB1c2VyIGhhcyB0byBoYXZlIHRoYXQgcmlnaHQgYW5kIHRoYXQgcmlnaHQgaGFzIHRvIGhhdmUgdGhlIGdpdmVuIHBlcm1pc3Npb25cbiAgICAgICAgcmV0dXJuIHRoaXMudXNlclJpZ2h0cy5zb21lKHJpZ2h0ID0+IHJpZ2h0ICYmXG4gICAgICAgICAgICByaWdodC5pZCA9PT0gcmlnaHRJZCAmJlxuICAgICAgICAgICAgcmlnaHQucGVybWlzc2lvbnMgJiZcbiAgICAgICAgICAgIHJpZ2h0LnBlcm1pc3Npb25zLmluY2x1ZGVzKHBlcm1pc3Npb24pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjaGVja3Mgd2hldGhlciBhIHVzZXIgaGF2ZSBhbGwgcmlnaHRzIHBhc3NlZCBhcyBhbiBhcmd1bWVudFxuICAgICAqIEBwYXJhbSByaWdodHMgYW4gYXJyYXkgb2YgVXhVc2VyUmlnaHRcbiAgICAgKi9cbiAgICBwcml2YXRlIGhhdmVBbGxSaWdodHMocmlnaHRzOiBVeFVzZXJSaWdodFtdKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghaXNEZWZpbmVkKHJpZ2h0cykpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBUaGUgcmlnaHRzIHNob3VsZCBiZSBhbiBhcnJheSBidXQgaW5zdGVhZCBpdCdzIG5vdCBkZWZpbmVkIWApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJpZ2h0cy5ldmVyeSgocmlnaHQ6IFV4VXNlclJpZ2h0KSA9PlxuICAgICAgICAgICAgdGhpcy51c2VyUmlnaHRzLmZpbmQoKHVSaWdodDogVXhVc2VyUmlnaHQpID0+IHVSaWdodC5pZCA9PT0gcmlnaHQuaWQpKTtcbiAgICB9XG5cbn1cbiJdfQ==
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9wZXJtaXNzaW9uL3Blcm1pc3Npb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQ0gsVUFBVSxFQUVWLGFBQWEsR0FHaEIsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUd0QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBSzFDLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxVQUF5QjtJQUcvRCxZQUFnQyxHQUFlLEVBQVksS0FBbUI7UUFDMUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRGtCLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFBWSxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBRTFFLElBQUksR0FBRyxFQUFFO1lBQ0wsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDLENBQUM7U0FDekQ7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLE1BQXFCO1FBQ3RCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN6QixPQUFPLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ2hDO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2IsSUFBSSxDQUFDLE1BQU0s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amVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEV1aVNlcnZpY2UsXG4gICAgRXVpU2VydmljZVN0YXR1cyxcbiAgICBnZXRVc2VyUmlnaHRzLFxuICAgIFV4VXNlclJpZ2h0LFxuICAgIExvZ2dlcixcbn0gZnJvbSAnQGV1aS9iYXNlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMb2dTZXJ2aWNlIH0gZnJvbSAnLi4vbG9nL2xvZy5zZXJ2aWNlJztcbmltcG9ydCB7IFN0b3JlU2VydmljZSB9IGZyb20gJy4uL3N0b3JlL3N0b3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXBkYXRlVXNlclJpZ2h0c0FjdGlvbiB9IGZyb20gJy4uL3N0b3JlL2FjdGlvbnMvdXNlci5hY3Rpb25zJztcbmltcG9ydCB7IGlzRGVmaW5lZCB9IGZyb20gJy4uLy4uL2hlbHBlcnMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBFdWlQZXJtaXNzaW9uU2VydmljZSBleHRlbmRzIEV1aVNlcnZpY2U8VXhVc2VyUmlnaHRbXT4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXI7XG5cbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBwcml2YXRlIGxvZzogTG9nU2VydmljZSwgcHJvdGVjdGVkIHN0b3JlOiBTdG9yZVNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoW10pO1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlciA9IGxvZy5nZXRMb2dnZXIoJ2NvcmUuUGVybWlzc2lvblNlcnZpY2UnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGluaXRpYWxpemUgdGhlIHNlcnZpY2UgYnkgcHJvdmlkaW5nIGEgc3RhdGVcbiAgICAgKiBAcGFyYW0gcmlnaHRzXG4gICAgICovXG4gICAgaW5pdChyaWdodHM6IFV4VXNlclJpZ2h0W10pOiBPYnNlcnZhYmxlPEV1aVNlcnZpY2VTdGF0dXM+IHtcbiAgICAgICAgc3VwZXIuaW5pdEV1aVNlcnZpY2UoKTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmlnaHRzKSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZShyaWdodHMpO1xuICAgICAgICAgICAgcmV0dXJuIG9mKHsgc3VjY2VzczogdHJ1ZSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0luaXQgb2JqZWN0IHNob3VsZCBiZSBpbnN0YW5jZSBvZiBCYXNlVXNlclN0YXRlJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9mKHsgc3VjY2VzczogZmFsc2UsIGVycm9yOiAnSW5pdCBvYmplY3Qgc2hvdWxkIGJlIGluc3RhbmNlIG9mIEJhc2VVc2VyU3RhdGUnIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgdXNlclJpZ2h0cygpOiBVeFVzZXJSaWdodFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGVJbnN0YW5jZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBnZXQgdGhlIHVzZXIncyBSaWdodHMgZnJvbSB0aGUgc3RhdGVcbiAgICAgKi9cbiAgICBnZXRTdGF0ZTxLID0gVXhVc2VyUmlnaHRbXT4oKTogT2JzZXJ2YWJsZTxLPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChnZXRVc2VyUmlnaHRzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB1cGRhdGUgdGhlIHN0YXRlIHdpdGggdGhlIGdpdmVuIHVzZXIncyByaWdodHNcbiAgICAgKiBAcGFyYW0gcmlnaHRzXG4gICAgICovXG4gICAgdXBkYXRlU3RhdGUocmlnaHRzOiBVeFVzZXJSaWdodFtdKSB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFVwZGF0ZVVzZXJSaWdodHNBY3Rpb24ocmlnaHRzIHx8IFtdKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogYWNjZXB0cyBhIHN0cmluZyBvZiByaWdodCBhbmQgb3IgYSBwZXJtaXNzaW9uLiBJbiBzdHJpbmcgZmlyc3QgY29tZXMgdGhlIHJpZ2h0IGFuZCBvciBmb2xsb3dlZCBieSBwZXJtaXNzaW9uIGluXG4gICAgICogYSBkb3Qgc2VwYXJhdGVkIHdheSBlLmcuICdSSUdIVC5QRVJNSVNTSU9OJyBvciAnUklHSFQnLiBUaGUgc3RyaW5nIGNhbiBjb250YWluIG1vcmUgdGhhdCAyIHNlcGFyYXRlZCBmaWVsZHMuXG4gICAgICogSW4gdGhhdCBjYXNlIHRoZSBsYXN0IGZpZWxkIHNob3VsZCBiZSB0aGUgcGVybWlzc2lvbiBhbmQgYWxsIHRoZSBvdGhlcnMgYSBSaWdodC4gZS5nLiAnUklHSFQxLlJJR0hUMi5QRVJNSVNTSU9OJ1xuICAgICAqIFRoZSBsYXN0IHBhcnQgaXMgdXNlZnVsIHdoZXJlIHlvdSB3YW50IGEgdXNlciB0byBoYXZlIG11bHRpcGxlIHJpZ2h0cyBhbmQgdGhlIHBlcm1pc3Npb24gb2YgdGhlIGxhc3QgcmlnaHQuXG4gICAgICogQHBhcmFtIHJpZ2h0c0FuZFBlcm1pc3Npb25cbiAgICAgKi9cbiAgICBjaGVja0F0dHJpYnV0ZVBlcm1pc3Npb24ocmlnaHRzQW5kUGVybWlzc2lvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHBlcm1Qcm9wcyA9IHJpZ2h0c0FuZFBlcm1pc3Npb24uc3BsaXQoJy4nKTtcbiAgICAgICAgY29uc3QgcmlnaHRJZCA9IHBlcm1Qcm9wc1swXTtcbiAgICAgICAgY29uc3QgaGFzUmlnaHQgPSB0aGlzLmNoZWNrUmlnaHQocmlnaHRJZCk7XG5cbiAgICAgICAgaWYgKGhhc1JpZ2h0KSB7XG4gICAgICAgICAgICBpZiAocGVybVByb3BzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgICAgIC8vIGluIGNhc2Ugb2YgJ1JJR0hULlBFUk1JU1NJT04nXG4gICAgICAgICAgICAgICAgY29uc3QgcGVybWlzc2lvbiA9IHBlcm1Qcm9wc1sxXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jaGVja1Blcm1pc3Npb24ocmlnaHRJZCwgcGVybWlzc2lvbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBlcm1Qcm9wcy5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgICAgICAgLy8gaW4gY2FzZSBvZiAnUklHSFQxLlJJR0hUMi4uLi4uUEVSTUlTU0lPTicgc3RyaW5nIGNhbGwgcmVjdXJzaXZlbHlcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jaGVja0F0dHJpYnV0ZVBlcm1pc3Npb24ocmlnaHRzQW5kUGVybWlzc2lvbi5zbGljZShyaWdodElkLmxlbmd0aCArIDEpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBoYXNSaWdodDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjaGVjayBpZiBhIHVzZXIgaGFzIHRoZSByaWdodC5cbiAgICAgKiBAcGFyYW0gcmlnaHRJZCB0aGUgaWQgb2YgUmlnaHRcbiAgICAgKi9cbiAgICBjaGVja1JpZ2h0KHJpZ2h0SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy51c2VyUmlnaHRzLnNvbWUocmlnaHQgPT4gcmlnaHQgJiYgcmlnaHQuaWQgPT09IHJpZ2h0SWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNoZWNrIGlmIGEgdXNlciBoYXMgdGhhdCByaWdodCBhbmQgdGhhdCByaWdodCBoYXMgdGhlIHBlcm1pc3Npb24gZ2l2ZW4uXG4gICAgICogQHBhcmFtIHJpZ2h0SWQgdGhlIHJpZ2h0IG9mIHRoZSB1c2VyXG4gICAgICogQHBhcmFtIHBlcm1pc3Npb24gdGhlIHBlcm1pc3Npb24gb2YgdGhlIHJpZ2h0XG4gICAgICovXG4gICAgY2hlY2tQZXJtaXNzaW9uKHJpZ2h0SWQ6IHN0cmluZywgcGVybWlzc2lvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIC8vIHRoZSB1c2VyIGhhcyB0byBoYXZlIHRoYXQgcmlnaHQgYW5kIHRoYXQgcmlnaHQgaGFzIHRvIGhhdmUgdGhlIGdpdmVuIHBlcm1pc3Npb25cbiAgICAgICAgcmV0dXJuIHRoaXMudXNlclJpZ2h0cy5zb21lKHJpZ2h0ID0+IHJpZ2h0ICYmXG4gICAgICAgICAgICByaWdodC5pZCA9PT0gcmlnaHRJZCAmJlxuICAgICAgICAgICAgcmlnaHQucGVybWlzc2lvbnMgJiZcbiAgICAgICAgICAgIHJpZ2h0LnBlcm1pc3Npb25zLmluY2x1ZGVzKHBlcm1pc3Npb24pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjaGVja3Mgd2hldGhlciBhIHVzZXIgaGF2ZSBhbGwgcmlnaHRzIHBhc3NlZCBhcyBhbiBhcmd1bWVudFxuICAgICAqIEBwYXJhbSByaWdodHMgYW4gYXJyYXkgb2YgVXhVc2VyUmlnaHRcbiAgICAgKi9cbiAgICBwcml2YXRlIGhhdmVBbGxSaWdodHMocmlnaHRzOiBVeFVzZXJSaWdodFtdKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghaXNEZWZpbmVkKHJpZ2h0cykpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBUaGUgcmlnaHRzIHNob3VsZCBiZSBhbiBhcnJheSBidXQgaW5zdGVhZCBpdCdzIG5vdCBkZWZpbmVkIWApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJpZ2h0cy5ldmVyeSgocmlnaHQ6IFV4VXNlclJpZ2h0KSA9PlxuICAgICAgICAgICAgdGhpcy51c2VyUmlnaHRzLmZpbmQoKHVSaWdodDogVXhVc2VyUmlnaHQpID0+IHVSaWdodC5pZCA9PT0gcmlnaHQuaWQpKTtcbiAgICB9XG5cbn1cbiJdfQ==
@@ -132,12 +132,12 @@ export class ApiQueueService {
132
132
  .pipe(tap(() => this.removeQueueItem(id)));
133
133
  }
134
134
  }
135
- /** @nocollapse */ ApiQueueService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: ApiQueueService, deps: [{ token: i1.StoreService }, { token: i2.HttpClient }, { token: i3.LogService }], target: i0.ɵɵFactoryTarget.Injectable });
136
- /** @nocollapse */ ApiQueueService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: ApiQueueService, providedIn: 'root' });
137
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: ApiQueueService, decorators: [{
135
+ /** @nocollapse */ ApiQueueService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: ApiQueueService, deps: [{ token: i1.StoreService }, { token: i2.HttpClient }, { token: i3.LogService }], target: i0.ɵɵFactoryTarget.Injectable });
136
+ /** @nocollapse */ ApiQueueService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: ApiQueueService, providedIn: 'root' });
137
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: ApiQueueService, decorators: [{
138
138
  type: Injectable,
139
139
  args: [{
140
140
  providedIn: 'root',
141
141
  }]
142
142
  }], ctorParameters: function () { return [{ type: i1.StoreService }, { type: i2.HttpClient }, { type: i3.LogService }]; } });
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXF1ZXVlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3F1ZXVlL2FwaS1xdWV1ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQTBCLE1BQU0sV0FBVyxDQUFDO0FBS2pGLE9BQU8sRUFDSCxxQkFBcUIsRUFDckIsd0JBQXdCLEVBQ3hCLG1CQUFtQixHQUN0QixNQUFNLGdCQUFnQixDQUFDOzs7OztBQUt4QixNQUFNLE9BQU8sZUFBZTtJQUV4QixZQUFzQixLQUFtQixFQUNuQixJQUFnQixFQUNoQixVQUFzQjtRQUZ0QixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUM1QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxZQUFZLENBQUMsRUFBVSxFQUFFLElBQWtCO1FBQ3ZDLE1BQU0sY0FBYyxHQUFHLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUU5QyxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN6QyxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixJQUFJLENBQUMsTUFBTSxrQkFBa0IsQ0FBQyxDQUFDO1NBQ3hFO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFB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QyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLGdCQUFnQixDQUFDLEVBQVUsRUFBRSxJQUFrQjtRQUNuRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUM5RCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7O3NJQTlKUSxlQUFlOzBJQUFmLGVBQWUsY0FGWixNQUFNO2tHQUVULGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBmb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwLCBzd2l0Y2hNYXAsIHRha2UsIG1hcCwgY2F0Y2hFcnJvciwgY29uY2F0TWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgZ2V0QXBpUXVldWUsIGdldEFwaVF1ZXVlSXRlbSwgQXBpUXVldWUsIEFwaVF1ZXVlSXRlbSB9IGZyb20gJ0BldWkvYmFzZSc7XG5cbmltcG9ydCB7IExvZ1NlcnZpY2UgfSBmcm9tICcuLi9sb2cvbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vc3RvcmUvc3RvcmUuc2VydmljZSc7XG5cbmltcG9ydCB7XG4gICAgQWRkQXBpUXVldWVJdGVtQWN0aW9uLFxuICAgIFJlbW92ZUFwaVF1ZXVlSXRlbUFjdGlvbixcbiAgICBFbXB0eUFwaVF1ZXVlQWN0aW9uLFxufSBmcm9tICcuLi9zdG9yZS9pbmRleCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFwaVF1ZXVlU2VydmljZSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgc3RvcmU6IFN0b3JlU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgbG9nU2VydmljZTogTG9nU2VydmljZSkge1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYW4gaXRlbSBpbiB0aGUgcXVldWUgYnkgZGlzcGF0Y2hpbmcgYW4gYWN0aW9uIHRvIHRoZSBzdG9yZS5cbiAgICAgKiBAcGFyYW0gaWQgLSBUaGUgaWQgb2YgdGhlIGl0ZW0gaW5zaWRlIHRoZSBxdWV1ZS5cbiAgICAgKiBXQVJOSU5HIGlmIG1hdGNoZXMgYW55IG90aGVyIHF1ZXVlIGl0ZW0gaWQgd2lsbCBvdmVyd3JpdGUgaXQuXG4gICAgICogQHBhcmFtIGl0ZW0gLSBhbiBpdGVtIGZvciBRdWV1ZVxuICAgICAqL1xuICAgIGFkZFF1ZXVlSXRlbShpZDogc3RyaW5nLCBpdGVtOiBBcGlRdWV1ZUl0ZW0pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWxsb3dlZE1ldGhvZHMgPSBbJ3Bvc3QnLCAncHV0JywgJ2dldCddO1xuXG4gICAgICAgIGlmIChhbGxvd2VkTWV0aG9kcy5pbmRleE9mKGl0ZW0ubWV0aG9kKSA8IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgW0FwaVF1ZXVlXSBtZXRob2QgXCIke2l0ZW0ubWV0aG9kfVwiIGlzIG5vdCBhbGxvd2VkYCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBBZGRBcGlRdWV1ZUl0ZW1BY3Rpb24oeyBpZCwgaXRlbSB9KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3Vic2NyaWJlcyB0byB0aGUgc3RvcmUgdG8gcmV0cmlldmUgcXVldWUgYW5kIHRoZW4gY29udmVydHMgdGhlIHF1ZXVlIG9iamVjdCB0byBhbiBhcnJheSBvZiBpdGVtcy5cbiAgICAgKiBAcmV0dXJuIEFuIE9ic2VydmFibGUgb2YgYXJyYXkgb2YgYWxsIGl0ZW1zIGluc2lkZSB0aGUgY3VycmVudCBxdWV1ZSAoQXBpUXVldWVJdGVtW10pXG4gICAgICovXG4gICAgZ2V0UXVldWUoKTogT2JzZXJ2YWJsZTxBcGlRdWV1ZUl0ZW1bXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoZ2V0QXBpUXVldWUpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgIG1hcCgocXVldWU6IEFwaVF1ZXVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHF1ZXVlQXJyYXkgPSBxdWV1ZSAmJiBPYmplY3QudmFsdWVzPEFwaVF1ZXVlSXRlbT4ocXVldWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXF1ZXVlQXJyYXkgfHwgcXVldWVBcnJheS5sZW5ndGggPCAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ1NlcnZpY2Uud2FybignTm8gaXRlbXMgaW4gdGhlIHF1ZXVlIGV4aXN0LicpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHF1ZXVlQXJyYXk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN1YnNjcmliZXMgdG8gdGhlIHN0b3JlIHRvIHJldHJpZXZlIGFuIGl0ZW0gZnJvbSB0aGUgcXVldWUuXG4gICAgICogQHBhcmFtIGlkIC0gaWQgb2YgdGhlIGl0ZW0gaW5zaWRlIHRoZSBxdWV1ZVxuICAgICAqIEByZXR1cm4gQW4gT2JzZXJ2YWJsZSBvZiBBcGlRdWV1ZUl0ZW0gdHlwZVxuICAgICAqL1xuICAgIGdldFF1ZXVlSXRlbShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxBcGlRdWV1ZUl0ZW0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KGdldEFwaVF1ZXVlSXRlbShpZCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgIG1hcCgocXVldWU6IEFwaVF1ZXVlSXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ1NlcnZpY2Uud2FybihgUXVldWUgaXRlbSB3aXRoIGlkIFwiJHtpZH1cIiBkb2VzIG5vdCBleGlzdGApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHF1ZXVlO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGEgZ2l2ZW4gaXRlbSBmcm9tIHRoZSBxdWV1ZS5cbiAgICAgKiBAcGFyYW0gaWQgLSBpZCBvZiB0aGUgaXRlbSBpbnNpZGUgdGhlIHF1ZXVlXG4gICAgICovXG4gICAgcmVtb3ZlUXVldWVJdGVtKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUmVtb3ZlQXBpUXVldWVJdGVtQWN0aW9uKGlkKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwgaXRlbXMgcGxhY2VkIGluIHRoZSBxdWV1ZS5cbiAgICAgKi9cbiAgICByZW1vdmVBbGxRdWV1ZUl0ZW0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IEVtcHR5QXBpUXVldWVBY3Rpb24obnVsbCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3MgYW4gaXRlbSBmcm9tIHRoZSBxdWV1ZS5cbiAgICAgKiBAcGFyYW0gaWQgLSBpZCBvZiB0aGUgaXRlbSBpbnNpZGUgdGhlIHF1ZXVlXG4gICAgICogQHJldHVybiBBbiBPYnNlcnZhYmxlIG9mIHR5cGUgYW55XG4gICAgICovXG4gICAgcHJvY2Vzc1F1ZXVlSXRlbShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KGdldEFwaVF1ZXVlSXRlbShpZCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgocXVldWU6IEFwaVF1ZXVlSXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ1NlcnZpY2Uud2FybihgUXVldWUgaXRlbSB3aXRoIGlkIFwiJHtpZH1cIiBkb2VzIG5vdCBleGlzdGApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRIdHRwUmVxdWVzdChpZCwgcXVldWUpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzIGFsbCB0aGUgaXRlbXMgaW5zaWRlIHRoZSBxdWV1ZS5cbiAgICAgKiBAcGFyYW0gW2NvbnRpbnVlT25FcnJvcj10cnVlXSAtIGluIGNhc2Ugb2YgYW4gaXRlbSByZXF1ZXN0IGZhaWxzIGNvbnRpbnVlIHdpdGggdGhlIHJlc3QgaW4gcXVldWVcbiAgICAgKiBAcmV0dXJuIEFuIE9ic2VydmFibGUgd2l0aCBhbiBhcnJheSB3aGljaCBjb250YWlucyBhbGwgcmVzcG9uc2VzIGZyb20gYWxsIGl0ZW1zIGluIHF1ZXVlLlxuICAgICAqL1xuICAgIHByb2Nlc3NBbGxRdWV1ZUl0ZW1zKGNvbnRpbnVlT25FcnJvcjogYm9vbGVhbiA9IHRydWUpOiBPYnNlcnZhYmxlPGFueVtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChnZXRBcGlRdWV1ZSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgocXVldWU6IEFwaVF1ZXVlKSA9PiBPYmplY3QuZW50cmllcyhxdWV1ZSlcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB0aGlzLmJ1aWxkSHR0cFJlcXVlc3Qoa2V5LCB2YWx1ZSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nU2VydmljZS5lcnJvcihgUXVldWUgSXRlbSB3aXRoIGlkICR7a2V5fSBmYWlsZWQuYCwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2spO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb250aW51ZU9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICApKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgob2JzUXVldWU6IE9ic2VydmFibGU8YW55PltdKSA9PiBmb3JrSm9pbihBcnJheS5mcm9tKG9ic1F1ZXVlKSkpLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzIGFsbCBpdGVtcyBpbiBxdWV1ZSBhZnRlciBpdCBvcmRlciB0aGVtIGJhc2VkIG9uIHRoZWlyIHRpbWVzdGFtcC4gQmV3YXJlIHRoYXQgb3JkZXJcbiAgICAgKiBtYXR0ZXIgaW4gZXhlY3V0aW9uIG9mIEh0dHAgUmVxdWVzdCBpbiBxdWV1ZS4gV2hlbiBhIHJlcXVlc3QgY29tcGxldGVzIG9ubHkgdGhlbiBuZXh0IHdpbGwgYmVnaW4uIEVtaXNzaW9uXG4gICAgICogb3IgSHR0cCByZXNwb25zZSBmb2xsb3dzIG9yZGVyLlxuICAgICAqIEBwYXJhbSBbYXNjZW5kaW5nPXRydWVdIC0gc2V0cyB0aGUgb3JkZXIgb2YgcXVldWUgaXRlbXMgYmFzZWQgb24gdGltZXN0YW1wXG4gICAgICovXG4gICAgcHJvY2Vzc0FsbFF1ZXVlSXRlbXNTZXF1ZW50aWFsKGFzY2VuZGluZzogYm9vbGVhbiA9IHRydWUpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoZ2V0QXBpUXVldWUpLnBpcGUoXG4gICAgICAgICAgICBjb25jYXRNYXAoKHF1ZXVlOiBBcGlRdWV1ZSkgPT4gT2JqZWN0LmVudHJpZXMocXVldWUpXG4gICAgICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+XG4gICAgICAgICAgICAgICAgICAgIGFzY2VuZGluZyA/IHRoaXMuc29ydE9uVGltZXN0YW1wKGEsIGIpIDogdGhpcy5zb3J0T25UaW1lc3RhbXAoYiwgYSkpXG4gICAgICAgICAgICAgICAgLm1hcCgoW2lkLCBpdGVtXSkgPT4gdGhpcy5idWlsZEh0dHBSZXF1ZXN0KGlkLCBpdGVtKSksXG4gICAgICAgICAgICApLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNob3J0IGRhdGVzIGFzY2VuZGluZyBiYXNlZCBvbiBpbnB1dFxuICAgICAqIEBwYXJhbSBhIC0gRGF0ZSBvbmVcbiAgICAgKiBAcGFyYW0gYiAtIERhdGUgdHdvXG4gICAgICpcbiAgICAgKiBAYmV0YVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzb3J0T25UaW1lc3RhbXAoYTogW3N0cmluZywgQXBpUXVldWVJdGVtXSwgYjogW3N0cmluZywgQXBpUXVldWVJdGVtXSkge1xuICAgICAgICByZXR1cm4gK25ldyBEYXRlKGFbMV0udGltZXN0YW1wKSAtICtuZXcgRGF0ZShiWzFdLnRpbWVzdGFtcCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogYnVpbGQgYW5kIEh0dHBSZXF1ZXN0IE9ic2VydmFibGUgYmFzZWQgb24gdGhlIGdpdmVuIHF1ZXVlLlxuICAgICAqIEFmdGVyIHN1Y2Nlc3NmdWwgcmVxdWVzdCBjb21wbGV0aW9uIHJlbW92ZXMgdGhlIGl0ZW0gZnJvbSB0aGUgcXVldWUuXG4gICAgICogQHBhcmFtIGlkIC0gaWQgb2YgdGhlIGl0ZW0gaW5zaWRlIHRoZSBxdWV1ZVxuICAgICAqIEBwYXJhbSBpdGVtIC0gdGhlIGl0ZW0gb2YgdGhlIHF1ZXVlIHRoYXQgbWF0Y2hlcyB0aGUgaWQuXG4gICAgICogQHJldHVybiBBbiBPYnNlcnZhYmxlIG9mIEh0dHBDbGllbnQgUmVxdWVzdFxuICAgICAqL1xuICAgIHByaXZhdGUgYnVpbGRIdHRwUmVxdWVzdChpZDogc3RyaW5nLCBpdGVtOiBBcGlRdWV1ZUl0ZW0pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwW2l0ZW0ubWV0aG9kLnRvTG93ZXJDYXNlKCldKGl0ZW0udXJpLCBpdGVtLnBheWxvYWQpXG4gICAgICAgICAgICAucGlwZSh0YXAoKCkgPT4gdGhpcy5yZW1vdmVRdWV1ZUl0ZW0oaWQpKSk7XG4gICAgfVxuXG59XG4iXX0=
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXF1ZXVlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3F1ZXVlL2FwaS1xdWV1ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQTBCLE1BQU0sV0FBVyxDQUFDO0FBS2pGLE9BQU8sRUFDSCxxQkFBcUIsRUFDckIsd0JBQXdCLEVBQ3hCLG1CQUFtQixHQUN0QixNQUFNLGdCQUFnQixDQUFDOzs7OztBQUt4QixNQUFNLE9BQU8sZUFBZTtJQUV4QixZQUFzQixLQUFtQixFQUNuQixJQUFnQixFQUNoQixVQUFzQjtRQUZ0QixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUM1QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxZQUFZLENBQUMsRUFBVSxFQUFFLElBQWtCO1FBQ3ZDLE1BQU0sY0FBYyxHQUFHLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUU5QyxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN6QyxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixJQUFJLENBQUMsTUFBTSxrQkFBa0IsQ0FBQyxDQUFDO1NBQ3hFO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFB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QyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLGdCQUFnQixDQUFDLEVBQVUsRUFBRSxJQUFrQjtRQUNuRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUM5RCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7OytIQTlKUSxlQUFlO21JQUFmLGVBQWUsY0FGWixNQUFNOzJGQUVULGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBmb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwLCBzd2l0Y2hNYXAsIHRha2UsIG1hcCwgY2F0Y2hFcnJvciwgY29uY2F0TWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgZ2V0QXBpUXVldWUsIGdldEFwaVF1ZXVlSXRlbSwgQXBpUXVldWUsIEFwaVF1ZXVlSXRlbSB9IGZyb20gJ0BldWkvYmFzZSc7XG5cbmltcG9ydCB7IExvZ1NlcnZpY2UgfSBmcm9tICcuLi9sb2cvbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vc3RvcmUvc3RvcmUuc2VydmljZSc7XG5cbmltcG9ydCB7XG4gICAgQWRkQXBpUXVldWVJdGVtQWN0aW9uLFxuICAgIFJlbW92ZUFwaVF1ZXVlSXRlbUFjdGlvbixcbiAgICBFbXB0eUFwaVF1ZXVlQWN0aW9uLFxufSBmcm9tICcuLi9zdG9yZS9pbmRleCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFwaVF1ZXVlU2VydmljZSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgc3RvcmU6IFN0b3JlU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgbG9nU2VydmljZTogTG9nU2VydmljZSkge1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYW4gaXRlbSBpbiB0aGUgcXVldWUgYnkgZGlzcGF0Y2hpbmcgYW4gYWN0aW9uIHRvIHRoZSBzdG9yZS5cbiAgICAgKiBAcGFyYW0gaWQgLSBUaGUgaWQgb2YgdGhlIGl0ZW0gaW5zaWRlIHRoZSBxdWV1ZS5cbiAgICAgKiBXQVJOSU5HIGlmIG1hdGNoZXMgYW55IG90aGVyIHF1ZXVlIGl0ZW0gaWQgd2lsbCBvdmVyd3JpdGUgaXQuXG4gICAgICogQHBhcmFtIGl0ZW0gLSBhbiBpdGVtIGZvciBRdWV1ZVxuICAgICAqL1xuICAgIGFkZFF1ZXVlSXRlbShpZDogc3RyaW5nLCBpdGVtOiBBcGlRdWV1ZUl0ZW0pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWxsb3dlZE1ldGhvZHMgPSBbJ3Bvc3QnLCAncHV0JywgJ2dldCddO1xuXG4gICAgICAgIGlmIChhbGxvd2VkTWV0aG9kcy5pbmRleE9mKGl0ZW0ubWV0aG9kKSA8IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgW0FwaVF1ZXVlXSBtZXRob2QgXCIke2l0ZW0ubWV0aG9kfVwiIGlzIG5vdCBhbGxvd2VkYCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBBZGRBcGlRdWV1ZUl0ZW1BY3Rpb24oeyBpZCwgaXRlbSB9KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3Vic2NyaWJlcyB0byB0aGUgc3RvcmUgdG8gcmV0cmlldmUgcXVldWUgYW5kIHRoZW4gY29udmVydHMgdGhlIHF1ZXVlIG9iamVjdCB0byBhbiBhcnJheSBvZiBpdGVtcy5cbiAgICAgKiBAcmV0dXJuIEFuIE9ic2VydmFibGUgb2YgYXJyYXkgb2YgYWxsIGl0ZW1zIGluc2lkZSB0aGUgY3VycmVudCBxdWV1ZSAoQXBpUXVldWVJdGVtW10pXG4gICAgICovXG4gICAgZ2V0UXVldWUoKTogT2JzZXJ2YWJsZTxBcGlRdWV1ZUl0ZW1bXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoZ2V0QXBpUXVldWUpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgIG1hcCgocXVldWU6IEFwaVF1ZXVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHF1ZXVlQXJyYXkgPSBxdWV1ZSAmJiBPYmplY3QudmFsdWVzPEFwaVF1ZXVlSXRlbT4ocXVldWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXF1ZXVlQXJyYXkgfHwgcXVldWVBcnJheS5sZW5ndGggPCAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ1NlcnZpY2Uud2FybignTm8gaXRlbXMgaW4gdGhlIHF1ZXVlIGV4aXN0LicpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHF1ZXVlQXJyYXk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN1YnNjcmliZXMgdG8gdGhlIHN0b3JlIHRvIHJldHJpZXZlIGFuIGl0ZW0gZnJvbSB0aGUgcXVldWUuXG4gICAgICogQHBhcmFtIGlkIC0gaWQgb2YgdGhlIGl0ZW0gaW5zaWRlIHRoZSBxdWV1ZVxuICAgICAqIEByZXR1cm4gQW4gT2JzZXJ2YWJsZSBvZiBBcGlRdWV1ZUl0ZW0gdHlwZVxuICAgICAqL1xuICAgIGdldFF1ZXVlSXRlbShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxBcGlRdWV1ZUl0ZW0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KGdldEFwaVF1ZXVlSXRlbShpZCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgIG1hcCgocXVldWU6IEFwaVF1ZXVlSXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ1NlcnZpY2Uud2FybihgUXVldWUgaXRlbSB3aXRoIGlkIFwiJHtpZH1cIiBkb2VzIG5vdCBleGlzdGApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHF1ZXVlO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGEgZ2l2ZW4gaXRlbSBmcm9tIHRoZSBxdWV1ZS5cbiAgICAgKiBAcGFyYW0gaWQgLSBpZCBvZiB0aGUgaXRlbSBpbnNpZGUgdGhlIHF1ZXVlXG4gICAgICovXG4gICAgcmVtb3ZlUXVldWVJdGVtKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUmVtb3ZlQXBpUXVldWVJdGVtQWN0aW9uKGlkKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwgaXRlbXMgcGxhY2VkIGluIHRoZSBxdWV1ZS5cbiAgICAgKi9cbiAgICByZW1vdmVBbGxRdWV1ZUl0ZW0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IEVtcHR5QXBpUXVldWVBY3Rpb24obnVsbCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3MgYW4gaXRlbSBmcm9tIHRoZSBxdWV1ZS5cbiAgICAgKiBAcGFyYW0gaWQgLSBpZCBvZiB0aGUgaXRlbSBpbnNpZGUgdGhlIHF1ZXVlXG4gICAgICogQHJldHVybiBBbiBPYnNlcnZhYmxlIG9mIHR5cGUgYW55XG4gICAgICovXG4gICAgcHJvY2Vzc1F1ZXVlSXRlbShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KGdldEFwaVF1ZXVlSXRlbShpZCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgocXVldWU6IEFwaVF1ZXVlSXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ1NlcnZpY2Uud2FybihgUXVldWUgaXRlbSB3aXRoIGlkIFwiJHtpZH1cIiBkb2VzIG5vdCBleGlzdGApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRIdHRwUmVxdWVzdChpZCwgcXVldWUpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzIGFsbCB0aGUgaXRlbXMgaW5zaWRlIHRoZSBxdWV1ZS5cbiAgICAgKiBAcGFyYW0gW2NvbnRpbnVlT25FcnJvcj10cnVlXSAtIGluIGNhc2Ugb2YgYW4gaXRlbSByZXF1ZXN0IGZhaWxzIGNvbnRpbnVlIHdpdGggdGhlIHJlc3QgaW4gcXVldWVcbiAgICAgKiBAcmV0dXJuIEFuIE9ic2VydmFibGUgd2l0aCBhbiBhcnJheSB3aGljaCBjb250YWlucyBhbGwgcmVzcG9uc2VzIGZyb20gYWxsIGl0ZW1zIGluIHF1ZXVlLlxuICAgICAqL1xuICAgIHByb2Nlc3NBbGxRdWV1ZUl0ZW1zKGNvbnRpbnVlT25FcnJvcjogYm9vbGVhbiA9IHRydWUpOiBPYnNlcnZhYmxlPGFueVtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChnZXRBcGlRdWV1ZSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgocXVldWU6IEFwaVF1ZXVlKSA9PiBPYmplY3QuZW50cmllcyhxdWV1ZSlcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB0aGlzLmJ1aWxkSHR0cFJlcXVlc3Qoa2V5LCB2YWx1ZSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nU2VydmljZS5lcnJvcihgUXVldWUgSXRlbSB3aXRoIGlkICR7a2V5fSBmYWlsZWQuYCwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2spO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb250aW51ZU9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICApKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgob2JzUXVldWU6IE9ic2VydmFibGU8YW55PltdKSA9PiBmb3JrSm9pbihBcnJheS5mcm9tKG9ic1F1ZXVlKSkpLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzIGFsbCBpdGVtcyBpbiBxdWV1ZSBhZnRlciBpdCBvcmRlciB0aGVtIGJhc2VkIG9uIHRoZWlyIHRpbWVzdGFtcC4gQmV3YXJlIHRoYXQgb3JkZXJcbiAgICAgKiBtYXR0ZXIgaW4gZXhlY3V0aW9uIG9mIEh0dHAgUmVxdWVzdCBpbiBxdWV1ZS4gV2hlbiBhIHJlcXVlc3QgY29tcGxldGVzIG9ubHkgdGhlbiBuZXh0IHdpbGwgYmVnaW4uIEVtaXNzaW9uXG4gICAgICogb3IgSHR0cCByZXNwb25zZSBmb2xsb3dzIG9yZGVyLlxuICAgICAqIEBwYXJhbSBbYXNjZW5kaW5nPXRydWVdIC0gc2V0cyB0aGUgb3JkZXIgb2YgcXVldWUgaXRlbXMgYmFzZWQgb24gdGltZXN0YW1wXG4gICAgICovXG4gICAgcHJvY2Vzc0FsbFF1ZXVlSXRlbXNTZXF1ZW50aWFsKGFzY2VuZGluZzogYm9vbGVhbiA9IHRydWUpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoZ2V0QXBpUXVldWUpLnBpcGUoXG4gICAgICAgICAgICBjb25jYXRNYXAoKHF1ZXVlOiBBcGlRdWV1ZSkgPT4gT2JqZWN0LmVudHJpZXMocXVldWUpXG4gICAgICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+XG4gICAgICAgICAgICAgICAgICAgIGFzY2VuZGluZyA/IHRoaXMuc29ydE9uVGltZXN0YW1wKGEsIGIpIDogdGhpcy5zb3J0T25UaW1lc3RhbXAoYiwgYSkpXG4gICAgICAgICAgICAgICAgLm1hcCgoW2lkLCBpdGVtXSkgPT4gdGhpcy5idWlsZEh0dHBSZXF1ZXN0KGlkLCBpdGVtKSksXG4gICAgICAgICAgICApLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNob3J0IGRhdGVzIGFzY2VuZGluZyBiYXNlZCBvbiBpbnB1dFxuICAgICAqIEBwYXJhbSBhIC0gRGF0ZSBvbmVcbiAgICAgKiBAcGFyYW0gYiAtIERhdGUgdHdvXG4gICAgICpcbiAgICAgKiBAYmV0YVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzb3J0T25UaW1lc3RhbXAoYTogW3N0cmluZywgQXBpUXVldWVJdGVtXSwgYjogW3N0cmluZywgQXBpUXVldWVJdGVtXSkge1xuICAgICAgICByZXR1cm4gK25ldyBEYXRlKGFbMV0udGltZXN0YW1wKSAtICtuZXcgRGF0ZShiWzFdLnRpbWVzdGFtcCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogYnVpbGQgYW5kIEh0dHBSZXF1ZXN0IE9ic2VydmFibGUgYmFzZWQgb24gdGhlIGdpdmVuIHF1ZXVlLlxuICAgICAqIEFmdGVyIHN1Y2Nlc3NmdWwgcmVxdWVzdCBjb21wbGV0aW9uIHJlbW92ZXMgdGhlIGl0ZW0gZnJvbSB0aGUgcXVldWUuXG4gICAgICogQHBhcmFtIGlkIC0gaWQgb2YgdGhlIGl0ZW0gaW5zaWRlIHRoZSBxdWV1ZVxuICAgICAqIEBwYXJhbSBpdGVtIC0gdGhlIGl0ZW0gb2YgdGhlIHF1ZXVlIHRoYXQgbWF0Y2hlcyB0aGUgaWQuXG4gICAgICogQHJldHVybiBBbiBPYnNlcnZhYmxlIG9mIEh0dHBDbGllbnQgUmVxdWVzdFxuICAgICAqL1xuICAgIHByaXZhdGUgYnVpbGRIdHRwUmVxdWVzdChpZDogc3RyaW5nLCBpdGVtOiBBcGlRdWV1ZUl0ZW0pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwW2l0ZW0ubWV0aG9kLnRvTG93ZXJDYXNlKCldKGl0ZW0udXJpLCBpdGVtLnBheWxvYWQpXG4gICAgICAgICAgICAucGlwZSh0YXAoKCkgPT4gdGhpcy5yZW1vdmVRdWV1ZUl0ZW0oaWQpKSk7XG4gICAgfVxuXG59XG4iXX0=