@eui/core 17.0.0-next.12 → 17.0.0-next.14
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.
- package/docs/classes/ApiQueueServiceMock.html +1 -5
- package/docs/classes/I18nResourceImpl.html +2 -0
- package/docs/classes/LogServiceMock.html +1 -1
- package/docs/classes/RouterMock.html +1 -14
- package/docs/classes/StorageServiceMock.html +0 -9
- package/docs/classes/StoreMock.html +4 -17
- package/docs/dependencies.html +22 -20
- package/docs/injectables/ApiQueueService.html +2 -10
- package/docs/injectables/EuiAppShellService.html +476 -0
- package/docs/injectables/EuiDynamicComponentService.html +1 -1
- package/docs/injectables/EuiDynamicMenuService.html +2 -2
- package/docs/injectables/I18nService.html +64 -0
- package/docs/injectables/LogService.html +1 -2
- package/docs/injectables/StoreService.html +8 -8
- package/docs/injectables/StoreServiceMock.html +5 -5
- package/docs/injectables/UserService.html +2 -2
- package/docs/injectables/UserServiceMock.html +218 -145
- package/docs/interceptors/AddLangParamInterceptor.html +11 -3
- package/docs/interceptors/CachePreventionInterceptor.html +11 -3
- package/docs/interceptors/CorsSecurityInterceptor.html +11 -3
- package/docs/interceptors/CsrfPreventionInterceptor.html +11 -3
- package/docs/interceptors/EuLoginSessionTimeoutHandlingInterceptor.html +11 -3
- package/docs/interfaces/UIState.html +6 -6
- package/docs/js/menu-wc.js +6 -6
- package/docs/js/menu-wc_es5.js +1 -1
- package/docs/js/search/search_index.js +2 -2
- package/docs/miscellaneous/functions.html +42 -0
- package/docs/miscellaneous/variables.html +51 -51
- package/docs/modules/I18nModule.html +1 -1
- package/esm2022/lib/eui-core.module.mjs +7 -7
- package/esm2022/lib/helpers/date-helpers.mjs +1 -1
- package/esm2022/lib/helpers/dom-helpers.mjs +10 -8
- package/esm2022/lib/helpers/event-helpers.mjs +1 -1
- package/esm2022/lib/helpers/form-helpers.mjs +1 -1
- package/esm2022/lib/helpers/format-helpers.mjs +6 -5
- package/esm2022/lib/helpers/http-helpers.mjs +3 -5
- package/esm2022/lib/interceptors/add-lang-param.interceptor.mjs +4 -4
- package/esm2022/lib/interceptors/cache-prevention.interceptor.mjs +4 -4
- package/esm2022/lib/interceptors/cors-security.interceptor.mjs +4 -4
- package/esm2022/lib/interceptors/csrf-prevention.interceptor.mjs +4 -4
- package/esm2022/lib/interceptors/eu-login-session-timeout-handling.interceptor.mjs +13 -6
- package/esm2022/lib/interceptors/openid/openid-connect.interceptor.mjs +37 -8
- package/esm2022/lib/interceptors/openid/openid-connect.service.mjs +6 -4
- package/esm2022/lib/interceptors/ux-request-error-model.interceptor.mjs +10 -5
- package/esm2022/lib/services/app/eui-init-app.mjs +2 -2
- package/esm2022/lib/services/app/eui-pre-init-app.mjs +1 -1
- package/esm2022/lib/services/app/factories/log.mjs +1 -1
- package/esm2022/lib/services/config/tokens.mjs +3 -1
- package/esm2022/lib/services/dynamic-component/dynamic-component.service.mjs +9 -4
- package/esm2022/lib/services/dynamic-menu/dynamic-menu.service.mjs +8 -5
- package/esm2022/lib/services/errors/eui.error.mjs +5 -1
- package/esm2022/lib/services/errors/global-error-handler.mjs +7 -5
- package/esm2022/lib/services/errors/http-error-handler-callback-functions.mjs +2 -2
- package/esm2022/lib/services/errors/http-error-handler.interceptor.mjs +24 -17
- package/esm2022/lib/services/eui-app-shell.service.mjs +123 -12
- package/esm2022/lib/services/eui-timezone.service.mjs +3 -3
- package/esm2022/lib/services/growl/eui-growl.service.mjs +4 -4
- package/esm2022/lib/services/i18n/i18n.loader.mjs +16 -5
- package/esm2022/lib/services/i18n/i18n.resource.mjs +8 -3
- package/esm2022/lib/services/i18n/i18n.service.mjs +17 -19
- package/esm2022/lib/services/i18n/index.mjs +2 -2
- package/esm2022/lib/services/locale/locale.service.mjs +7 -5
- package/esm2022/lib/services/locale/locale.service.mock.mjs +3 -3
- package/esm2022/lib/services/log/log.module.mjs +4 -4
- package/esm2022/lib/services/log/log.service.mjs +4 -4
- package/esm2022/lib/services/log/log.service.mock.mjs +1 -1
- package/esm2022/lib/services/permission/permission.service.mjs +5 -5
- package/esm2022/lib/services/queue/api-queue.service.mjs +20 -8
- package/esm2022/lib/services/queue/api-queue.service.mock.mjs +5 -1
- package/esm2022/lib/services/storage/async-storage.service.mjs +1 -1
- package/esm2022/lib/services/storage/async-storage.service.mock.mjs +9 -1
- package/esm2022/lib/services/storage/local-forage.service.mjs +43 -18
- package/esm2022/lib/services/storage/local-storage.service.mjs +8 -4
- package/esm2022/lib/services/storage/session-storage.service.mjs +8 -4
- package/esm2022/lib/services/storage/storage.service.mjs +1 -1
- package/esm2022/lib/services/storage/storage.service.mock.mjs +1 -1
- package/esm2022/lib/services/store/actions/app.actions.mjs +3 -1
- package/esm2022/lib/services/store/actions/notifications.actions.mjs +3 -1
- package/esm2022/lib/services/store/actions/user.actions.mjs +3 -1
- package/esm2022/lib/services/store/effects/app.effects.mjs +3 -3
- package/esm2022/lib/services/store/reducers/app.reducers.mjs +2 -3
- package/esm2022/lib/services/store/reducers/core.reducers.mjs +3 -1
- package/esm2022/lib/services/store/reducers/i18n.reducers.mjs +2 -2
- package/esm2022/lib/services/store/reducers/locale.reducers.mjs +1 -1
- package/esm2022/lib/services/store/reducers/meta.reducers.mjs +4 -2
- package/esm2022/lib/services/store/reducers/notifications.reducers.mjs +2 -2
- package/esm2022/lib/services/store/reducers/user.reducers.mjs +2 -2
- package/esm2022/lib/services/store/store.service.mjs +14 -6
- package/esm2022/lib/services/store/store.service.mock.mjs +4 -4
- package/esm2022/lib/services/user/user.service.mjs +13 -7
- package/esm2022/lib/services/user/user.service.mock.mjs +11 -17
- package/fesm2022/eui-core.mjs +825 -588
- package/fesm2022/eui-core.mjs.map +1 -1
- package/lib/eui-core.module.d.ts +1 -1
- package/lib/eui-core.module.d.ts.map +1 -1
- package/lib/helpers/date-helpers.d.ts.map +1 -1
- package/lib/helpers/dom-helpers.d.ts +9 -7
- package/lib/helpers/dom-helpers.d.ts.map +1 -1
- package/lib/helpers/event-helpers.d.ts.map +1 -1
- package/lib/helpers/form-helpers.d.ts.map +1 -1
- package/lib/helpers/format-helpers.d.ts.map +1 -1
- package/lib/helpers/http-helpers.d.ts +2 -1
- package/lib/helpers/http-helpers.d.ts.map +1 -1
- package/lib/interceptors/add-lang-param.interceptor.d.ts +1 -1
- package/lib/interceptors/add-lang-param.interceptor.d.ts.map +1 -1
- package/lib/interceptors/cache-prevention.interceptor.d.ts +1 -1
- package/lib/interceptors/cache-prevention.interceptor.d.ts.map +1 -1
- package/lib/interceptors/cors-security.interceptor.d.ts +1 -1
- package/lib/interceptors/cors-security.interceptor.d.ts.map +1 -1
- package/lib/interceptors/csrf-prevention.interceptor.d.ts +1 -1
- package/lib/interceptors/csrf-prevention.interceptor.d.ts.map +1 -1
- package/lib/interceptors/eu-login-session-timeout-handling.interceptor.d.ts +1 -1
- package/lib/interceptors/eu-login-session-timeout-handling.interceptor.d.ts.map +1 -1
- package/lib/interceptors/openid/openid-connect.interceptor.d.ts.map +1 -1
- package/lib/interceptors/openid/openid-connect.service.d.ts.map +1 -1
- package/lib/interceptors/ux-request-error-model.interceptor.d.ts.map +1 -1
- package/lib/services/app/eui-init-app.d.ts +1 -1
- package/lib/services/app/eui-init-app.d.ts.map +1 -1
- package/lib/services/config/tokens.d.ts +2 -2
- package/lib/services/config/tokens.d.ts.map +1 -1
- package/lib/services/dynamic-component/dynamic-component.service.d.ts +3 -7
- package/lib/services/dynamic-component/dynamic-component.service.d.ts.map +1 -1
- package/lib/services/dynamic-menu/dynamic-menu.service.d.ts +6 -6
- package/lib/services/dynamic-menu/dynamic-menu.service.d.ts.map +1 -1
- package/lib/services/errors/eui.error.d.ts.map +1 -1
- package/lib/services/errors/global-error-handler.d.ts +1 -1
- package/lib/services/errors/global-error-handler.d.ts.map +1 -1
- package/lib/services/errors/http-error-handler-callback-functions.d.ts.map +1 -1
- package/lib/services/errors/http-error-handler.interceptor.d.ts.map +1 -1
- package/lib/services/eui-app-shell.service.d.ts +39 -7
- package/lib/services/eui-app-shell.service.d.ts.map +1 -1
- package/lib/services/i18n/i18n.loader.d.ts.map +1 -1
- package/lib/services/i18n/i18n.resource.d.ts +1 -1
- package/lib/services/i18n/i18n.resource.d.ts.map +1 -1
- package/lib/services/i18n/i18n.service.d.ts +4 -4
- package/lib/services/i18n/i18n.service.d.ts.map +1 -1
- package/lib/services/i18n/index.d.ts +0 -1
- package/lib/services/i18n/index.d.ts.map +1 -1
- package/lib/services/locale/locale.service.d.ts.map +1 -1
- package/lib/services/log/log.service.d.ts.map +1 -1
- package/lib/services/log/log.service.mock.d.ts.map +1 -1
- package/lib/services/permission/permission.service.d.ts.map +1 -1
- package/lib/services/queue/api-queue.service.d.ts +2 -2
- package/lib/services/queue/api-queue.service.d.ts.map +1 -1
- package/lib/services/queue/api-queue.service.mock.d.ts.map +1 -1
- package/lib/services/storage/async-storage.service.d.ts.map +1 -1
- package/lib/services/storage/async-storage.service.mock.d.ts.map +1 -1
- package/lib/services/storage/local-forage.service.d.ts +1 -1
- package/lib/services/storage/local-forage.service.d.ts.map +1 -1
- package/lib/services/storage/local-storage.service.d.ts.map +1 -1
- package/lib/services/storage/session-storage.service.d.ts.map +1 -1
- package/lib/services/storage/storage.service.d.ts.map +1 -1
- package/lib/services/storage/storage.service.mock.d.ts +1 -1
- package/lib/services/storage/storage.service.mock.d.ts.map +1 -1
- package/lib/services/store/actions/app.actions.d.ts.map +1 -1
- package/lib/services/store/actions/notifications.actions.d.ts.map +1 -1
- package/lib/services/store/actions/user.actions.d.ts.map +1 -1
- package/lib/services/store/reducers/app.reducers.d.ts.map +1 -1
- package/lib/services/store/reducers/core.reducers.d.ts.map +1 -1
- package/lib/services/store/reducers/meta.reducers.d.ts +2 -2
- package/lib/services/store/reducers/meta.reducers.d.ts.map +1 -1
- package/lib/services/store/reducers/user.reducers.d.ts.map +1 -1
- package/lib/services/store/store.service.d.ts +8 -8
- package/lib/services/store/store.service.d.ts.map +1 -1
- package/lib/services/store/store.service.mock.d.ts +2 -1
- package/lib/services/store/store.service.mock.d.ts.map +1 -1
- package/lib/services/user/user.service.d.ts +3 -3
- package/lib/services/user/user.service.d.ts.map +1 -1
- package/lib/services/user/user.service.mock.d.ts +10 -12
- package/lib/services/user/user.service.mock.d.ts.map +1 -1
- package/package.json +1 -1
- package/esm2022/lib/services/i18n/i18n.service.mock.mjs +0 -38
- package/lib/services/i18n/i18n.service.mock.d.ts +0 -20
- package/lib/services/i18n/i18n.service.mock.d.ts.map +0 -1
|
@@ -5,13 +5,13 @@ import { catchError, filter, map, take, tap, switchMap } from 'rxjs/operators';
|
|
|
5
5
|
import { EuiLazyService, getI18nServiceConfigFromBase, getI18nState, getActiveLang, getLastAddedModule, getBrowserDefaultLanguage, EuiEuLanguages, } from '@eui/base';
|
|
6
6
|
import { I18nLoader } from './i18n.loader';
|
|
7
7
|
import { GLOBAL_CONFIG_TOKEN } from '../config/tokens';
|
|
8
|
-
import { UpdateI18nStateAction } from '../store
|
|
8
|
+
import { UpdateI18nStateAction } from '../store';
|
|
9
9
|
import { DEFAULT_I18N_SERVICE_CONFIG } from '../config/defaults';
|
|
10
10
|
import { createSelector } from '@ngrx/store';
|
|
11
11
|
import * as i0 from "@angular/core";
|
|
12
12
|
import * as i1 from "@ngx-translate/core";
|
|
13
|
-
import * as i2 from "../log
|
|
14
|
-
import * as i3 from "../store
|
|
13
|
+
import * as i2 from "../log";
|
|
14
|
+
import * as i3 from "../store";
|
|
15
15
|
export class I18nService extends EuiLazyService {
|
|
16
16
|
constructor(baseGlobalConfig, translateService, logService, store, document) {
|
|
17
17
|
super({ activeLang: 'en' });
|
|
@@ -25,7 +25,9 @@ export class I18nService extends EuiLazyService {
|
|
|
25
25
|
}
|
|
26
26
|
getState(keyOrMapFn) {
|
|
27
27
|
let selector = getI18nState;
|
|
28
|
-
|
|
28
|
+
// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
30
|
+
const dotNotationToObject = (obj, key) => key.split('.').reduce((slice, i) => slice[i], obj);
|
|
29
31
|
if (keyOrMapFn) {
|
|
30
32
|
switch (typeof keyOrMapFn) {
|
|
31
33
|
case 'function':
|
|
@@ -55,15 +57,6 @@ export class I18nService extends EuiLazyService {
|
|
|
55
57
|
}
|
|
56
58
|
return of({ success: false, error: 'Initial active lang should be string' });
|
|
57
59
|
}
|
|
58
|
-
/**
|
|
59
|
-
* A pipe function that could serve as a wrapper of another observable
|
|
60
|
-
* e.g. ngx-translate i18n.onReady('my_module').pipe(switchMap(()=>translate.get('eui.KEY')));
|
|
61
|
-
* WARNING: onReady will emit only once for a loaded Module, going to another and then going back will not result
|
|
62
|
-
* into another emission.
|
|
63
|
-
*
|
|
64
|
-
* @param moduleName the name of the module that has been given through the eUI globalConfig. In case non provided
|
|
65
|
-
* fetch module name from the state.
|
|
66
|
-
*/
|
|
67
60
|
onReady(moduleName) {
|
|
68
61
|
return this.onModuleLoad.pipe(switchMap((evt) => moduleName
|
|
69
62
|
? of(evt)
|
|
@@ -86,6 +79,7 @@ export class I18nService extends EuiLazyService {
|
|
|
86
79
|
* Add resources based of a config loader
|
|
87
80
|
*
|
|
88
81
|
* @param config I18nLoaderConfig
|
|
82
|
+
* @param moduleName
|
|
89
83
|
* @return Promise<EuiServiceStatus> an EuiServiceStatus when translation has fully loaded
|
|
90
84
|
*/
|
|
91
85
|
addResources(config, moduleName) {
|
|
@@ -93,6 +87,8 @@ export class I18nService extends EuiLazyService {
|
|
|
93
87
|
this.onModuleLoad.next({ ready: false, name: moduleName });
|
|
94
88
|
const loader = this.translateService.currentLoader;
|
|
95
89
|
if (loader instanceof I18nLoader) {
|
|
90
|
+
// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
|
|
91
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
96
92
|
const langSubscription = [];
|
|
97
93
|
const i18nLoader = loader;
|
|
98
94
|
// add the resources to the loader
|
|
@@ -102,10 +98,10 @@ export class I18nService extends EuiLazyService {
|
|
|
102
98
|
// add the new set of translations to the current language
|
|
103
99
|
this.translateService.setTranslation(this.translateService.currentLang, loadedResources.translations, true);
|
|
104
100
|
})));
|
|
105
|
-
// if the current language is different
|
|
101
|
+
// if the current language is different from the DEFAULT language
|
|
106
102
|
const defaultLang = this.config.defaultLanguage || this.translateService.defaultLang;
|
|
107
103
|
if (this.translateService.currentLang !== defaultLang) {
|
|
108
|
-
// manually load the resources for the default language and add them to the
|
|
104
|
+
// manually load the resources for the default language and add them to the translation service
|
|
109
105
|
langSubscription.push(i18nLoader.loadResources(resources, defaultLang).pipe(take(1), tap((loadedResources) => {
|
|
110
106
|
this.translateService.setTranslation(defaultLang, loadedResources.translations, true);
|
|
111
107
|
})));
|
|
@@ -197,6 +193,8 @@ export class I18nService extends EuiLazyService {
|
|
|
197
193
|
* @returns Observable that returns an object contain the object translation for given language after language
|
|
198
194
|
* fully loaded.
|
|
199
195
|
*/
|
|
196
|
+
// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
|
|
197
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
200
198
|
use(lang) {
|
|
201
199
|
return this.translateService.use(lang);
|
|
202
200
|
}
|
|
@@ -208,10 +206,10 @@ export class I18nService extends EuiLazyService {
|
|
|
208
206
|
updateHTMLDOMLang(lang) {
|
|
209
207
|
this.document.documentElement.lang = lang;
|
|
210
208
|
}
|
|
211
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
212
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
209
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.1", 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 }); }
|
|
210
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: I18nService, providedIn: 'root' }); }
|
|
213
211
|
}
|
|
214
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
212
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: I18nService, decorators: [{
|
|
215
213
|
type: Injectable,
|
|
216
214
|
args: [{
|
|
217
215
|
providedIn: 'root',
|
|
@@ -225,4 +223,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ng
|
|
|
225
223
|
type: Inject,
|
|
226
224
|
args: [DOCUMENT]
|
|
227
225
|
}] }] });
|
|
228
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9pMThuL2kxOG4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBRUgsY0FBYyxFQUVkLDRCQUE0QixFQUM1QixZQUFZLEVBQ1osYUFBYSxFQUNiLGtCQUFrQixFQUtsQix5QkFBeUIsRUFDekIsY0FBYyxHQUNqQixNQUFNLFdBQVcsQ0FBQztBQUVuQixPQUFPLEVBQUUsVUFBVSxFQUFtQixNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUd2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7OztBQVc3QyxNQUFNLE9BQU8sV0FBNkMsU0FBUSxjQUE2QjtJQUkzRixZQUMyQyxnQkFBOEIsRUFDM0QsZ0JBQWtDLEVBQ3RCLFVBQXNCLEVBQ2xDLEtBQW1CLEVBQ0gsUUFBa0I7UUFFNUMsS0FBSyxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFOVyxxQkFBZ0IsR0FB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ZUFBdUI7UUFDOUMsNEdBQTRHO1FBQzVHLHVGQUF1RjtRQUN2RixJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3RELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNqQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsZUFBZSxFQUFFLENBQUMsQ0FBQztTQUMzRTtJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxHQUFHLENBQUMsSUFBWTtRQUNwQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxpQkFBaUIsQ0FBQyxJQUFZO1FBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDOUMsQ0FBQztzSUF2UFEsV0FBVyxrQkFLUixtQkFBbUIsbUhBSW5CLFFBQVE7MElBVFgsV0FBVyxjQUZSLE1BQU07O2dHQUVULFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFNUSxNQUFNOzJCQUFDLG1CQUFtQjs7MEJBRTFCLFFBQVE7OzBCQUVSLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExhbmdDaGFuZ2VFdmVudCwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCB0YWtlLCB0YXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgR2xvYmFsQ29uZmlnLFxuICAgIEV1aUxhenlTZXJ2aWNlLFxuICAgIEV1aVNlcnZpY2VTdGF0dXMsXG4gICAgZ2V0STE4blNlcnZpY2VDb25maWdGcm9tQmFzZSxcbiAgICBnZXRJMThuU3RhdGUsXG4gICAgZ2V0QWN0aXZlTGFuZyxcbiAgICBnZXRMYXN0QWRkZWRNb2R1bGUsXG4gICAgSTE4bkxvYWRlckNvbmZpZyxcbiAgICBJMThuU2VydmljZUNvbmZpZyxcbiAgICBJMThuU3RhdGUsXG4gICAgTW9kdWxlQ29uZmlnLFxuICAgIGdldEJyb3dzZXJEZWZhdWx0TGFuZ3VhZ2UsXG4gICAgRXVpRXVMYW5ndWFnZXMsXG59IGZyb20gJ0BldWkvYmFzZSc7XG5cbmltcG9ydCB7IEkxOG5Mb2FkZXIsIExvYWRlZFJlc291cmNlcyB9IGZyb20gJy4vaTE4bi5sb2FkZXInO1xuaW1wb3J0IHsgR0xPQkFMX0NPTkZJR19UT0tFTiB9IGZyb20gJy4uL2NvbmZpZy90b2tlbnMnO1xuaW1wb3J0IHsgTG9nU2VydmljZSB9IGZyb20gJy4uL2xvZy9sb2cuc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yZVNlcnZpY2UgfSBmcm9tICcuLi9zdG9yZS9zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IFVwZGF0ZUkxOG5TdGF0ZUFjdGlvbiB9IGZyb20gJy4uL3N0b3JlL2FjdGlvbnMvaTE4bi5hY3Rpb25zJztcbmltcG9ydCB7IERFRkFVTFRfSTE4Tl9TRVJWSUNFX0NPTkZJRyB9IGZyb20gJy4uL2NvbmZpZy9kZWZhdWx0cyc7XG5pbXBvcnQgeyBjcmVhdGVTZWxlY3RvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuaW50ZXJmYWNlIE1vZHVsZUxvYWRFdmVudCB7XG4gICAgcmVhZHk6IGJvb2xlYW47XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGVycm9yPzogYW55O1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBJMThuU2VydmljZTxUIGV4dGVuZHMgSTE4blN0YXRlID0gSTE4blN0YXRlPiBleHRlbmRzIEV1aUxhenlTZXJ2aWNlPFQgfCBJMThuU3RhdGU+IHtcbiAgICBwcm90ZWN0ZWQgY29uZmlnOiBJMThuU2VydmljZUNvbmZpZztcbiAgICBwcm90ZWN0ZWQgb25Nb2R1bGVMb2FkOiBCZWhhdmlvclN1YmplY3Q8TW9kdWxlTG9hZEV2ZW50PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KEdMT0JBTF9DT05GSUdfVE9LRU4pIHByb3RlY3RlZCBiYXNlR2xvYmFsQ29uZmlnOiBHbG9iYWxDb25maWcsXG4gICAgICAgIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgbG9nU2VydmljZTogTG9nU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIHN0b3JlOiBTdG9yZVNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKHsgYWN0aXZlTGFuZzogJ2VuJyB9KTtcbiAgICAgICAgdGhpcy5jb25maWcgPSBnZXRJMThuU2VydmljZUNvbmZpZ0Zyb21CYXNlKHRoaXMuYmFzZUdsb2JhbENvbmZpZyk7XG4gICAgICAgIHRoaXMub25Nb2R1bGVMb2FkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNb2R1bGVMb2FkRXZlbnQ+KHsgcmVhZHk6IGZhbHNlLCBuYW1lOiBudWxsIH0pO1xuICAgIH1cblxuICAgIGdldFN0YXRlPEsgPSBUPihtYXBGbj86IChzdGF0ZTogVCkgPT4gSyk6IE9ic2VydmFibGU8Sz47XG4gICAgZ2V0U3RhdGU8YSBleHRlbmRzIGtleW9mIFQ+KGtleT86IGEpOiBPYnNlcnZhYmxlPFRbYV0+O1xuICAgIGdldFN0YXRlPEs+KGtleU9yTWFwRm4/OiAoKHN0YXRlOiBUKSA9PiBLKSB8IHN0cmluZyk6IE9ic2VydmFibGU8Sz4ge1xuICAgICAgICBsZXQgc2VsZWN0b3I6IGFueSA9IGdldEkxOG5TdGF0ZTtcbiAgICAgICAgbGV0IGRvdE5vdGF0aW9uVG9PYmplY3QgPSAob2JqLCBrZXkpID0+IGtleS5zcGxpdCgnLicpLnJlZHVjZSgoc2xpY2UsIGkpID0+IHNsaWNlW2ldLCBvYmopO1xuXG4gICAgICAgIGlmIChrZXlPck1hcEZuKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGVvZiBrZXlPck1hcEZuKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKGdldEkxOG5TdGF0ZSwga2V5T3JNYXBGbik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoZ2V0STE4blN0YXRlLCAoc3RhdGUpID0+IGRvdE5vdGF0aW9uVG9PYmplY3Qoc3RhdGUsIGtleU9yTWFwRm4pKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KHNlbGVjdG9yKTtcbiAgICB9XG5cbiAgICB1cGRhdGVTdGF0ZShsYW5nU3RhdGU6IFQgfCBJMThuU3RhdGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVIVE1MRE9NTGFuZyhsYW5nU3RhdGUuYWN0aXZlTGFuZyk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFVwZGF0ZUkxOG5TdGF0ZUFjdGlvbihsYW5nU3RhdGUpKTtcbiAgICB9XG5cbiAgICBpbml0KGxhbmdTdGF0ZT86IFQpOiBPYnNlcnZhYmxlPEV1aVNlcnZpY2VTdGF0dXM+IHtcbiAgICAgICAgY29uc3QgaW5pdExhbmcgPSBsYW5nU3RhdGUgJiYgbGFuZ1N0YXRlLmFjdGl2ZUxhbmcgPyBsYW5nU3RhdGUuYWN0aXZlTGFuZyA6IHRoaXMucHJlcGFyZWREZWZhdWx0TGFuZ3VhZ2UoKTtcbiAgICAgICAgY29uc3QgaW5pdFN0YXRlID0ge1xuICAgICAgICAgICAgLi4ubGFuZ1N0YXRlLFxuICAgICAgICAgICAgYWN0aXZlTGFuZzogaW5pdExhbmcsXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0eXBlb2YgaW5pdExhbmcgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBzdXBlci5pbml0RXVpU2VydmljZSh0aGlzLnN0b3JlKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoaW5pdFN0YXRlKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNldHVwKGluaXRMYW5nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2YoeyBzdWNjZXNzOiBmYWxzZSwgZXJyb3I6ICdJbml0aWFsIGFjdGl2ZSBsYW5nIHNob3VsZCBiZSBzdHJpbmcnIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgcGlwZSBmdW5jdGlvbiB0aGF0IGNvdWxkIHNlcnZlIGFzIGEgd3JhcHBlciBvZiBhbm90aGVyIG9ic2VydmFibGVcbiAgICAgKiBlLmcuIG5neC10cmFuc2xhdGUgaTE4bi5vblJlYWR5KCdteV9tb2R1bGUnKS5waXBlKHN3aXRjaE1hcCgoKT0+dHJhbnNsYXRlLmdldCgnZXVpLktFWScpKSk7XG4gICAgICogV0FSTklORzogb25SZWFkeSB3aWxsIGVtaXQgb25seSBvbmNlIGZvciBhIGxvYWRlZCBNb2R1bGUsIGdvaW5nIHRvIGFub3RoZXIgYW5kIHRoZW4gZ29pbmcgYmFjayB3aWxsIG5vdCByZXN1bHRcbiAgICAgKiBpbnRvIGFub3RoZXIgZW1pc3Npb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbW9kdWxlTmFtZSB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoYXQgaGFzIGJlZW4gZ2l2ZW4gdGhyb3VnaCB0aGUgZVVJIGdsb2JhbENvbmZpZy4gSW4gY2FzZSBub24gcHJvdmlkZWRcbiAgICAgKiBmZXRjaCBtb2R1bGUgbmFtZSBmcm9tIHRoZSBzdGF0ZS5cbiAgICAgKi9cbiAgICBvblJlYWR5KG1vZHVsZU5hbWU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbk1vZHVsZUxvYWQucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoZXZ0OiBNb2R1bGVMb2FkRXZlbnQpID0+XG4gICAgICAgICAgICAgICAgbW9kdWxlTmFtZVxuICAgICAgICAgICAgICAgICAgICA/IG9mKGV2dClcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnN0b3JlLnNlbGVjdChnZXRMYXN0QWRkZWRNb2R1bGUpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhcCgobSkgPT4gKG1vZHVsZU5hbWUgPSBtKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoKSA9PiBldnQpXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIC8vIGVtaXQgb25seSBpZiBldmVudCBlbWl0dGVkIG1hdGNoZXMgdGhlIG1vZHVsZSBuYW1lIGFuZCBpcyByZWFkeVxuICAgICAgICAgICAgZmlsdGVyKChldnQ6IE1vZHVsZUxvYWRFdmVudCkgPT4gZXZ0LnJlYWR5ID09PSB0cnVlICYmIGV2dC5uYW1lID09PSBtb2R1bGVOYW1lKSxcbiAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGF0IG9ic2VydmFibGUgY29tcGxldGVzXG4gICAgICAgICAgICB0YWtlKDEpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGxhenlMb2FkKGNvbmZpZzogSTE4bkxvYWRlckNvbmZpZyk6IE9ic2VydmFibGU8RXVpU2VydmljZVN0YXR1cz4ge1xuICAgICAgICBjb25zdCBtb2R1bGVJZCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwMDAwMCArIDEpLnRvTG9jYWxlU3RyaW5nKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZFJlc291cmNlcyhjb25maWcsIG1vZHVsZUlkKTtcbiAgICB9XG5cbiAgICBsYXp5TG9hZEluaXQobW9kdWxlQ29uZmlnOiBNb2R1bGVDb25maWcsIG1vZHVsZU5hbWU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEV1aVNlcnZpY2VTdGF0dXM+IHtcbiAgICAgICAgY29uc3QgaTE4bkxvYWRlckNvbmZpZyA9IG1vZHVsZUNvbmZpZyBhcyBJMThuTG9hZGVyQ29uZmlnO1xuICAgICAgICAvLyBhZGQgcmVzb3VyY2VzXG4gICAgICAgIHJldHVybiB0aGlzLmFkZFJlc291cmNlcyhpMThuTG9hZGVyQ29uZmlnLCBtb2R1bGVOYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgcmVzb3VyY2VzIGJhc2VkIG9mIGEgY29uZmlnIGxvYWRlclxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbmZpZyBJMThuTG9hZGVyQ29uZmlnXG4gICAgICogQHJldHVybiBQcm9taXNlPEV1aVNlcnZpY2VTdGF0dXM+IGFuIEV1aVNlcnZpY2VTdGF0dXMgd2hlbiB0cmFuc2xhdGlvbiBoYXMgZnVsbHkgbG9hZGVkXG4gICAgICovXG4gICAgcHVibGljIGFkZFJlc291cmNlcyhjb25maWc6IEkxOG5Mb2FkZXJDb25maWcsIG1vZHVsZU5hbWU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEV1aVNlcnZpY2VTdGF0dXM+IHtcbiAgICAgICAgLy8gZW1pdCB0aGF0IG1vZHVsZSBpcyBsb2FkaW5nXG4gICAgICAgIHRoaXMub25Nb2R1bGVMb2FkLm5leHQoeyByZWFkeTogZmFsc2UsIG5hbWU6IG1vZHVsZU5hbWUgfSk7XG5cbiAgICAgICAgY29uc3QgbG9hZGVyID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMb2FkZXI7XG4gICAgICAgIGlmIChsb2FkZXIgaW5zdGFuY2VvZiBJMThuTG9hZGVyKSB7XG4gICAgICAgICAgICBjb25zdCBsYW5nU3Vic2NyaXB0aW9uOiBPYnNlcnZhYmxlPGFueT5bXSA9IFtdO1xuICAgICAgICAgICAgY29uc3QgaTE4bkxvYWRlciA9IDxJMThuTG9hZGVyPmxvYWRlcjtcblxuICAgICAgICAgICAgLy8gYWRkIHRoZSByZXNvdXJjZXMgdG8gdGhlIGxvYWRlclxuICAgICAgICAgICAgY29uc3QgcmVzb3VyY2VzID0gaTE4bkxvYWRlci5hZGRSZXNvdXJjZXMoY29uZmlnKTtcblxuICAgICAgICAgICAgLy8gbWFudWFsbHkgbG9hZCB0aGUgcmVzb3VyY2VzIGZvciB0aGUgQ1VSUkVOVCBsYW5ndWFnZSBhbmQgYWRkIHRoZW0gdG8gdGhlIHRyYW5zbGF0ZSBzZXJ2aWNlXG4gICAgICAgICAgICBsYW5nU3Vic2NyaXB0aW9uLnB1c2goXG4gICAgICAgICAgICAgICAgaTE4bkxvYWRlci5sb2FkUmVzb3VyY2VzKHJlc291cmNlcywgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgICAgICB0YXAoKGxvYWRlZFJlc291cmNlczogTG9hZGVkUmVzb3VyY2VzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhZGQgdGhlIG5ldyBzZXQgb2YgdHJhbnNsYXRpb25zIHRvIHRoZSBjdXJyZW50IGxhbmd1YWdlXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc2V0VHJhbnNsYXRpb24odGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nLCBsb2FkZWRSZXNvdXJjZXMudHJhbnNsYXRpb25zLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAvLyBpZiB0aGUgY3VycmVudCBsYW5ndWFnZSBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgREVGQVVMVCBsYW5ndWFnZVxuICAgICAgICAgICAgY29uc3QgZGVmYXVsdExhbmcgPSB0aGlzLmNvbmZpZy5kZWZhdWx0TGFuZ3VhZ2UgfHwgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmRlZmF1bHRMYW5nO1xuICAgICAgICAgICAgaWYgKHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZyAhPT0gZGVmYXVsdExhbmcpIHtcbiAgICAgICAgICAgICAgICAvLyBtYW51YWxseSBsb2FkIHRoZSByZXNvdXJjZXMgZm9yIHRoZSBkZWZhdWx0IGxhbmd1YWdlIGFuZCBhZGQgdGhlbSB0byB0aGUgdHJhbnNsYXRlIHNlcnZpY2VcbiAgICAgICAgICAgICAgICBsYW5nU3Vic2NyaXB0aW9uLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIGkxOG5Mb2FkZXIubG9hZFJlc291cmNlcyhyZXNvdXJjZXMsIGRlZmF1bHRMYW5nKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcCgobG9hZGVkUmVzb3VyY2VzOiBMb2FkZWRSZXNvdXJjZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc2V0VHJhbnNsYXRpb24oZGVmYXVsdExhbmcsIGxvYWRlZFJlc291cmNlcy50cmFuc2xhdGlvbnMsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmb3JrSm9pbihsYW5nU3Vic2NyaXB0aW9uKS5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgobG9hZGVkUmVzb3VyY2VzQXJyOiBMb2FkZWRSZXNvdXJjZXNbXSkgPT5cbiAgICAgICAgICAgICAgICAgICAgIWxvYWRlZFJlc291cmNlc0FyclswXS5oYXNFcnJvciA/IHsgc3VjY2VzczogdHJ1ZSB9IDogeyBzdWNjZXNzOiBmYWxzZSwgZXJyb3I6IGxvYWRlZFJlc291cmNlc0FyclswXS5lcnJvcnMgfVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZW1pdCBzdGF0dXMgb2YgbW9kdWxlIGxvYWRpbmcgcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk1vZHVsZUxvYWQubmV4dCh7IHJlYWR5OiB0cnVlLCBuYW1lOiBtb2R1bGVOYW1lIH0pO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGVtaXQgc3RhdHVzIG9mIG1vZHVsZSBsb2FkaW5nIHByb2dyZXNzXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25Nb2R1bGVMb2FkLm5leHQoeyByZWFkeTogdHJ1ZSwgbmFtZTogbW9kdWxlTmFtZSwgZXJyb3IgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvciB9KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBvZih7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcjogJ2N1cnJlbnRMb2FkZXIgaXMgbm90IGFuIEkxOG5Mb2FkZXIuJyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByZXBhcmVzIHRoZSBkZWZhdWx0IGxhbmd1YWdlXG4gICAgICovXG4gICAgcHJpdmF0ZSBwcmVwYXJlZERlZmF1bHRMYW5ndWFnZSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBicm93c2VyUHJlZiA9IGdldEJyb3dzZXJEZWZhdWx0TGFuZ3VhZ2UoKTtcbiAgICAgICAgLy8gSWYgdXNlciBoYXMgYnJvd3NlciBwcmVmZXJyZWQgbGFuZywgYW5kIHRoYXQgbGFuZ3VhZ2UgaXMgcGFydCBvZiB0aGUgbGFuZ3VhZ2VzIGFycmF5XG4gICAgICAgIGlmIChicm93c2VyUHJlZiAmJiB0aGlzLmNvbmZpZy5sYW5ndWFnZXMgJiYgRXVpRXVMYW5ndWFnZXMuZ2V0TGFuZ3VhZ2VDb2Rlcyh0aGlzLmNvbmZpZy5sYW5ndWFnZXMpLmluY2x1ZGVzKGJyb3dzZXJQcmVmKSkge1xuICAgICAgICAgICAgcmV0dXJuIGJyb3dzZXJQcmVmO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5kZWZhdWx0TGFuZ3VhZ2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGRlZmF1bHRfbGFuZ3VhZ2UgaWYgZ2l2ZW4gZGVmYXVsdCBsYW5ndWFnZSB0byBvdmVycmlkZSBkZWZhdWx0IGxhbmd1YWdlIGNvbWluZyBmcm9tIHRoZVxuICAgICAqIGNvbmZpZ3VyYXRpb24gdG9rZW4uXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXR1cChpbml0TGFuZ3VhZ2U6IHN0cmluZyk6IE9ic2VydmFibGU8RXVpU2VydmljZVN0YXR1cz4ge1xuICAgICAgICAvLyB1c2UgdGhlIGRlZmF1bHQgY29uZmlnIGFzIGEgcmVmZXJlbmNlIGJhc2VcbiAgICAgICAgdGhpcy5jb25maWcgPSBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX0kxOE5fU0VSVklDRV9DT05GSUcsIHRoaXMuY29uZmlnKTtcbiAgICAgICAgLy8gY29uZmlndXJlIHRoZSB0cmFuc2xhdGUgY29uZmlnIHNlcnZpY2VcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmxhbmd1YWdlcykge1xuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmFkZExhbmdzKEV1aUV1TGFuZ3VhZ2VzLmdldExhbmd1YWdlQ29kZXModGhpcy5jb25maWcubGFuZ3VhZ2VzKSk7XG4gICAgICAgICAgICBpZiAodGhpcy5sb2dTZXJ2aWNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dTZXJ2aWNlLmluZm8oYEkxOG4gYWNjZXB0ZWQgbGFuZ3VhZ2VzIHNldCB0byAke0V1aUV1TGFuZ3VhZ2VzLmdldExhbmd1YWdlQ29kZXModGhpcy5jb25maWcubGFuZ3VhZ2VzKX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBzZXQgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UsIGNhdXNpbmcgdG8gbG9hZCB0cmFuc2xhdGlvbnNcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS51c2UoaW5pdExhbmd1YWdlKS5waXBlKFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJpbmRBY3RpdmVMYW5nU3RhdGVUb1RyYW5zbGF0ZVNlcnZpY2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJpbmRUcmFuc2xhdGVTZXJ2aWNlTGFuZ0NoYW5nZVRvU3RhdGUoKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25maWcuZGVmYXVsdExhbmd1YWdlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdExhbmd1YWdlKHRoaXMuY29uZmlnLmRlZmF1bHRMYW5ndWFnZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExvYWRlciBpbnN0YW5jZW9mIEkxOG5Mb2FkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmFpbGVkUmVzb3VyY2VzID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMb2FkZXIuZ2V0RmFpbGVkUmVzb3VyY2VzKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmYWlsZWRSZXNvdXJjZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIGVycm9yOiBmYWlsZWRSZXNvdXJjZXMgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlIH07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiBvZih7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvciB9KSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJpbmRBY3RpdmVMYW5nU3RhdGVUb1RyYW5zbGF0ZVNlcnZpY2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KGdldEFjdGl2ZUxhbmcpLnN1YnNjcmliZSgobGFuZzogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBpZiAobGFuZyAhPT0gbnVsbCAmJiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcgIT09IGxhbmcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZShsYW5nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiaW5kVHJhbnNsYXRlU2VydmljZUxhbmdDaGFuZ2VUb1N0YXRlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoZXZlbnQ6IExhbmdDaGFuZ2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGVJbnN0YW5jZS5hY3RpdmVMYW5nICE9PSBldmVudC5sYW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7IGFjdGl2ZUxhbmc6IGV2ZW50LmxhbmcgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5sb2dTZXJ2aWNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dTZXJ2aWNlLmluZm8oYEkxOG4gY3VycmVudCBsYW5ndWFnZSBzZXQgdG8gJHtldmVudC5sYW5nfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldERlZmF1bHRMYW5ndWFnZShkZWZhdWx0TGFuZ3VhZ2U6IHN0cmluZykge1xuICAgICAgICAvLyByZW1vdmVkLCBjdXJyZW50IGxhbmd1YWdlIGlzIGFscmVhZHkgY2FsY3VsYXRlZCBpbiBpbml0LCBzZXR1cCBmdW5jdGlvbiBmaWxsIHVzZSBpdCBkaXJlY3RseSwgbm90IGRlZmF1bHRcbiAgICAgICAgLy8gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nID0gZGVmYXVsdF9sYW5ndWFnZSB8fCB0aGlzLmNvbmZpZy5kZWZhdWx0TGFuZ3VhZ2U7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zZXREZWZhdWx0TGFuZyhkZWZhdWx0TGFuZ3VhZ2UpO1xuICAgICAgICBpZiAodGhpcy5sb2dTZXJ2aWNlKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ1NlcnZpY2UuaW5mbyhgSTE4biBkZWZhdWx0IGxhbmd1YWdlIHNldCB0byAke2RlZmF1bHRMYW5ndWFnZX1gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNoYW5nZSB0aGUgY3VycmVudGx5IHVzZWQgbGFuZ3VhZ2VcbiAgICAgKlxuICAgICAqIEBwYXJhbSBsYW5nIGlzIHRoZSBsYW5ndWFnZSBjb2RlIGJhc2VkIG9uIHRoZSBjb252ZW50aW9uIHlvdSB1c2VkIGUuZy4gKGVuIG9yIGVuLUVOKVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGUgdGhhdCByZXR1cm5zIGFuIG9iamVjdCBjb250YWluIHRoZSBvYmplY3QgdHJhbnNsYXRpb24gZm9yIGdpdmVuIGxhbmd1YWdlIGFmdGVyIGxhbmd1YWdlXG4gICAgICogZnVsbHkgbG9hZGVkLlxuICAgICAqL1xuICAgIHByaXZhdGUgdXNlKGxhbmc6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudXNlKGxhbmcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHVwZGF0ZXMgdGhlIEhUTUwgZWxlbWVudCBsYW5nIGF0dHJpYnV0ZVxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHVwZGF0ZUhUTUxET01MYW5nKGxhbmc6IHN0cmluZykge1xuICAgICAgICB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5sYW5nID0gbGFuZztcbiAgICB9XG59XG4iXX0=
|
|
226
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9pMThuL2kxOG4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBRUgsY0FBYyxFQUVkLDRCQUE0QixFQUM1QixZQUFZLEVBQ1osYUFBYSxFQUNiLGtCQUFrQixFQUtsQix5QkFBeUIsRUFDekIsY0FBYyxHQUNqQixNQUFNLFdBQVcsQ0FBQztBQUVuQixPQUFPLEVBQUUsVUFBVSxFQUFtQixNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV2RCxPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQy9ELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7O0FBYTdDLE1BQU0sT0FBTyxXQUE2QyxTQUFRLGNBQTZCO0lBSTNGLFlBQzJDLGdCQUE4QixFQUMzRCxnQkFBa0MsRUFDdEIsVUFBc0IsRUFDbEMsS0FBbUIsRUFDSCxRQUFrQjtRQUU1QyxLQUFLLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQU5XLHFCQUFnQixHQUFo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QUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsZUFBdUI7UUFDOUMsNEdBQTRHO1FBQzVHLHVGQUF1RjtRQUN2RixJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3RELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNqQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsZUFBZSxFQUFFLENBQUMsQ0FBQztTQUMzRTtJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxtSEFBbUg7SUFDbkgsOERBQThEO0lBQ3RELEdBQUcsQ0FBQyxJQUFZO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGlCQUFpQixDQUFDLElBQVk7UUFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUM5QyxDQUFDO3NJQWpRUSxXQUFXLGtCQUtSLG1CQUFtQixtSEFJbkIsUUFBUTswSUFUWCxXQUFXLGNBRlIsTUFBTTs7Z0dBRVQsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQU1RLE1BQU07MkJBQUMsbUJBQW1COzswQkFFMUIsUUFBUTs7MEJBRVIsTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGFuZ0NoYW5nZUV2ZW50LCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAsIHRha2UsIHRhcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgICBHbG9iYWxDb25maWcsXG4gICAgRXVpTGF6eVNlcnZpY2UsXG4gICAgRXVpU2VydmljZVN0YXR1cyxcbiAgICBnZXRJMThuU2VydmljZUNvbmZpZ0Zyb21CYXNlLFxuICAgIGdldEkxOG5TdGF0ZSxcbiAgICBnZXRBY3RpdmVMYW5nLFxuICAgIGdldExhc3RBZGRlZE1vZHVsZSxcbiAgICBJMThuTG9hZGVyQ29uZmlnLFxuICAgIEkxOG5TZXJ2aWNlQ29uZmlnLFxuICAgIEkxOG5TdGF0ZSxcbiAgICBNb2R1bGVDb25maWcsXG4gICAgZ2V0QnJvd3NlckRlZmF1bHRMYW5ndWFnZSxcbiAgICBFdWlFdUxhbmd1YWdlcyxcbn0gZnJvbSAnQGV1aS9iYXNlJztcblxuaW1wb3J0IHsgSTE4bkxvYWRlciwgTG9hZGVkUmVzb3VyY2VzIH0gZnJvbSAnLi9pMThuLmxvYWRlcic7XG5pbXBvcnQgeyBHTE9CQUxfQ09ORklHX1RPS0VOIH0gZnJvbSAnLi4vY29uZmlnL3Rva2Vucyc7XG5pbXBvcnQgeyBMb2dTZXJ2aWNlIH0gZnJvbSAnLi4vbG9nJztcbmltcG9ydCB7IFN0b3JlU2VydmljZSwgVXBkYXRlSTE4blN0YXRlQWN0aW9uIH0gZnJvbSAnLi4vc3RvcmUnO1xuaW1wb3J0IHsgREVGQVVMVF9JMThOX1NFUlZJQ0VfQ09ORklHIH0gZnJvbSAnLi4vY29uZmlnL2RlZmF1bHRzJztcbmltcG9ydCB7IGNyZWF0ZVNlbGVjdG9yIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1vZHVsZUxvYWRFdmVudCB7XG4gICAgcmVhZHk6IGJvb2xlYW47XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGVycm9yPzogYW55O1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBJMThuU2VydmljZTxUIGV4dGVuZHMgSTE4blN0YXRlID0gSTE4blN0YXRlPiBleHRlbmRzIEV1aUxhenlTZXJ2aWNlPFQgfCBJMThuU3RhdGU+IHtcbiAgICBwcm90ZWN0ZWQgY29uZmlnOiBJMThuU2VydmljZUNvbmZpZztcbiAgICBwcm90ZWN0ZWQgb25Nb2R1bGVMb2FkOiBCZWhhdmlvclN1YmplY3Q8TW9kdWxlTG9hZEV2ZW50PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KEdMT0JBTF9DT05GSUdfVE9LRU4pIHByb3RlY3RlZCBiYXNlR2xvYmFsQ29uZmlnOiBHbG9iYWxDb25maWcsXG4gICAgICAgIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgbG9nU2VydmljZTogTG9nU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIHN0b3JlOiBTdG9yZVNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgICkge1xuICAgICAgICBzdXBlcih7IGFjdGl2ZUxhbmc6ICdlbicgfSk7XG4gICAgICAgIHRoaXMuY29uZmlnID0gZ2V0STE4blNlcnZpY2VDb25maWdGcm9tQmFzZSh0aGlzLmJhc2VHbG9iYWxDb25maWcpO1xuICAgICAgICB0aGlzLm9uTW9kdWxlTG9hZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TW9kdWxlTG9hZEV2ZW50Pih7IHJlYWR5OiBmYWxzZSwgbmFtZTogbnVsbCB9KTtcbiAgICB9XG5cbiAgICBnZXRTdGF0ZTxLID0gVD4obWFwRm4/OiAoc3RhdGU6IFQpID0+IEspOiBPYnNlcnZhYmxlPEs+O1xuICAgIGdldFN0YXRlPGEgZXh0ZW5kcyBrZXlvZiBUPihrZXk/OiBhKTogT2JzZXJ2YWJsZTxUW2FdPjtcbiAgICBnZXRTdGF0ZTxLPihrZXlPck1hcEZuPzogKChzdGF0ZTogVCkgPT4gSykgfCBzdHJpbmcpOiBPYnNlcnZhYmxlPEs+IHtcbiAgICAgICAgbGV0IHNlbGVjdG9yOiAoczpUKSA9PiBLIHwgSTE4blN0YXRlID0gZ2V0STE4blN0YXRlO1xuICAgICAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIGNvbnN0IGRvdE5vdGF0aW9uVG9PYmplY3QgPSAob2JqLCBrZXkpOiBhbnkgPT4ga2V5LnNwbGl0KCcuJykucmVkdWNlKChzbGljZSwgaSkgPT4gc2xpY2VbaV0sIG9iaik7XG5cbiAgICAgICAgaWYgKGtleU9yTWFwRm4pIHtcbiAgICAgICAgICAgIHN3aXRjaCAodHlwZW9mIGtleU9yTWFwRm4pIHtcbiAgICAgICAgICAgICAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoZ2V0STE4blN0YXRlLCBrZXlPck1hcEZuKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihnZXRJMThuU3RhdGUsIChzdGF0ZSkgPT4gZG90Tm90YXRpb25Ub09iamVjdChzdGF0ZSwga2V5T3JNYXBGbikpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3Qoc2VsZWN0b3IpO1xuICAgIH1cblxuICAgIHVwZGF0ZVN0YXRlKGxhbmdTdGF0ZTogVCB8IEkxOG5TdGF0ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZUhUTUxET01MYW5nKGxhbmdTdGF0ZS5hY3RpdmVMYW5nKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgVXBkYXRlSTE4blN0YXRlQWN0aW9uKGxhbmdTdGF0ZSkpO1xuICAgIH1cblxuICAgIGluaXQobGFuZ1N0YXRlPzogVCk6IE9ic2VydmFibGU8RXVpU2VydmljZVN0YXR1cz4ge1xuICAgICAgICBjb25zdCBpbml0TGFuZyA9IGxhbmdTdGF0ZSAmJiBsYW5nU3RhdGUuYWN0aXZlTGFuZyA/IGxhbmdTdGF0ZS5hY3RpdmVMYW5nIDogdGhpcy5wcmVwYXJlZERlZmF1bHRMYW5ndWFnZSgpO1xuICAgICAgICBjb25zdCBpbml0U3RhdGUgPSB7XG4gICAgICAgICAgICAuLi5sYW5nU3RhdGUsXG4gICAgICAgICAgICBhY3RpdmVMYW5nOiBpbml0TGFuZyxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHR5cGVvZiBpbml0TGFuZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHN1cGVyLmluaXRFdWlTZXJ2aWNlKHRoaXMuc3RvcmUpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZShpbml0U3RhdGUpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0dXAoaW5pdExhbmcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZih7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcjogJ0luaXRpYWwgYWN0aXZlIGxhbmcgc2hvdWxkIGJlIHN0cmluZycgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBwaXBlIGZ1bmN0aW9uIHRoYXQgY291bGQgc2VydmUgYXMgYSB3cmFwcGVyIG9mIGFub3RoZXIgb2JzZXJ2YWJsZVxuICAgICAqIGUuZy4gbmd4LXRyYW5zbGF0ZSBpMThuLm9uUmVhZHkoJ215X21vZHVsZScpLnBpcGUoc3dpdGNoTWFwKCgpPT50cmFuc2xhdGUuZ2V0KCdldWkuS0VZJykpKTtcbiAgICAgKiBXQVJOSU5HOiBvblJlYWR5IHdpbGwgZW1pdCBvbmx5IG9uY2UgZm9yIGEgbG9hZGVkIE1vZHVsZSwgZ29pbmcgdG8gYW5vdGhlciBhbmQgdGhlbiBnb2luZyBiYWNrIHdpbGwgbm90IHJlc3VsdFxuICAgICAqIGludG8gYW5vdGhlciBlbWlzc2lvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBtb2R1bGVOYW1lIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhhdCBoYXMgYmVlbiBnaXZlbiB0aHJvdWdoIHRoZSBlVUkgZ2xvYmFsQ29uZmlnLiBJbiBjYXNlIG5vbiBwcm92aWRlZFxuICAgICAqIGZldGNoIG1vZHVsZSBuYW1lIGZyb20gdGhlIHN0YXRlLlxuICAgICAqL1xuICAgIC8vIEBkZXByZWNhdGVkIGV4cGVjdCByZXR1cm4gdHlwZSB0byBiZSBPYnNlcnZhYmxlPE1vZHVsZUxvYWRFdmVudD4gaW5zdGVhZCBvZiBPYnNlcnZhYmxlPGFueT4gb24gdjE3IGl0IHdpbGwgYmUgcmVtb3ZlZFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgb25SZWFkeShtb2R1bGVOYW1lPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+O1xuICAgIG9uUmVhZHkobW9kdWxlTmFtZT86IHN0cmluZyk6IE9ic2VydmFibGU8TW9kdWxlTG9hZEV2ZW50PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9uTW9kdWxlTG9hZC5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKChldnQ6IE1vZHVsZUxvYWRFdmVudCkgPT5cbiAgICAgICAgICAgICAgICBtb2R1bGVOYW1lXG4gICAgICAgICAgICAgICAgICAgID8gb2YoZXZ0KVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuc3RvcmUuc2VsZWN0KGdldExhc3RBZGRlZE1vZHVsZSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFwKChtKSA9PiAobW9kdWxlTmFtZSA9IG0pKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKCgpID0+IGV2dCksXG4gICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAvLyBlbWl0IG9ubHkgaWYgZXZlbnQgZW1pdHRlZCBtYXRjaGVzIHRoZSBtb2R1bGUgbmFtZSBhbmQgaXMgcmVhZHlcbiAgICAgICAgICAgIGZpbHRlcigoZXZ0OiBNb2R1bGVMb2FkRXZlbnQpID0+IGV2dC5yZWFkeSA9PT0gdHJ1ZSAmJiBldnQubmFtZSA9PT0gbW9kdWxlTmFtZSksXG4gICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhhdCBvYnNlcnZhYmxlIGNvbXBsZXRlc1xuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbGF6eUxvYWQoY29uZmlnOiBJMThuTG9hZGVyQ29uZmlnKTogT2JzZXJ2YWJsZTxFdWlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgICAgIGNvbnN0IG1vZHVsZUlkID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwMDAwICsgMSkudG9Mb2NhbGVTdHJpbmcoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkUmVzb3VyY2VzKGNvbmZpZywgbW9kdWxlSWQpO1xuICAgIH1cblxuICAgIGxhenlMb2FkSW5pdChtb2R1bGVDb25maWc6IE1vZHVsZUNvbmZpZywgbW9kdWxlTmFtZT86IHN0cmluZyk6IE9ic2VydmFibGU8RXVpU2VydmljZVN0YXR1cz4ge1xuICAgICAgICBjb25zdCBpMThuTG9hZGVyQ29uZmlnID0gbW9kdWxlQ29uZmlnIGFzIEkxOG5Mb2FkZXJDb25maWc7XG4gICAgICAgIC8vIGFkZCByZXNvdXJjZXNcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkUmVzb3VyY2VzKGkxOG5Mb2FkZXJDb25maWcsIG1vZHVsZU5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCByZXNvdXJjZXMgYmFzZWQgb2YgYSBjb25maWcgbG9hZGVyXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29uZmlnIEkxOG5Mb2FkZXJDb25maWdcbiAgICAgKiBAcGFyYW0gbW9kdWxlTmFtZVxuICAgICAqIEByZXR1cm4gUHJvbWlzZTxFdWlTZXJ2aWNlU3RhdHVzPiBhbiBFdWlTZXJ2aWNlU3RhdHVzIHdoZW4gdHJhbnNsYXRpb24gaGFzIGZ1bGx5IGxvYWRlZFxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRSZXNvdXJjZXMoY29uZmlnOiBJMThuTG9hZGVyQ29uZmlnLCBtb2R1bGVOYW1lPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxFdWlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgICAgIC8vIGVtaXQgdGhhdCBtb2R1bGUgaXMgbG9hZGluZ1xuICAgICAgICB0aGlzLm9uTW9kdWxlTG9hZC5uZXh0KHsgcmVhZHk6IGZhbHNlLCBuYW1lOiBtb2R1bGVOYW1lIH0pO1xuXG4gICAgICAgIGNvbnN0IGxvYWRlciA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TG9hZGVyO1xuICAgICAgICBpZiAobG9hZGVyIGluc3RhbmNlb2YgSTE4bkxvYWRlcikge1xuICAgICAgICAgICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAgIGNvbnN0IGxhbmdTdWJzY3JpcHRpb246IE9ic2VydmFibGU8YW55PltdID0gW107XG4gICAgICAgICAgICBjb25zdCBpMThuTG9hZGVyID0gPEkxOG5Mb2FkZXI+bG9hZGVyO1xuXG4gICAgICAgICAgICAvLyBhZGQgdGhlIHJlc291cmNlcyB0byB0aGUgbG9hZGVyXG4gICAgICAgICAgICBjb25zdCByZXNvdXJjZXMgPSBpMThuTG9hZGVyLmFkZFJlc291cmNlcyhjb25maWcpO1xuXG4gICAgICAgICAgICAvLyBtYW51YWxseSBsb2FkIHRoZSByZXNvdXJjZXMgZm9yIHRoZSBDVVJSRU5UIGxhbmd1YWdlIGFuZCBhZGQgdGhlbSB0byB0aGUgdHJhbnNsYXRlIHNlcnZpY2VcbiAgICAgICAgICAgIGxhbmdTdWJzY3JpcHRpb24ucHVzaChcbiAgICAgICAgICAgICAgICBpMThuTG9hZGVyLmxvYWRSZXNvdXJjZXMocmVzb3VyY2VzLCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgICAgIHRhcCgobG9hZGVkUmVzb3VyY2VzOiBMb2FkZWRSZXNvdXJjZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkZCB0aGUgbmV3IHNldCBvZiB0cmFuc2xhdGlvbnMgdG8gdGhlIGN1cnJlbnQgbGFuZ3VhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zZXRUcmFuc2xhdGlvbih0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcsIGxvYWRlZFJlc291cmNlcy50cmFuc2xhdGlvbnMsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgLy8gaWYgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UgaXMgZGlmZmVyZW50IGZyb20gdGhlIERFRkFVTFQgbGFuZ3VhZ2VcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRMYW5nID0gdGhpcy5jb25maWcuZGVmYXVsdExhbmd1YWdlIHx8IHRoaXMudHJhbnNsYXRlU2VydmljZS5kZWZhdWx0TGFuZztcbiAgICAgICAgICAgIGlmICh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcgIT09IGRlZmF1bHRMYW5nKSB7XG4gICAgICAgICAgICAgICAgLy8gbWFudWFsbHkgbG9hZCB0aGUgcmVzb3VyY2VzIGZvciB0aGUgZGVmYXVsdCBsYW5ndWFnZSBhbmQgYWRkIHRoZW0gdG8gdGhlIHRyYW5zbGF0aW9uIHNlcnZpY2VcbiAgICAgICAgICAgICAgICBsYW5nU3Vic2NyaXB0aW9uLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIGkxOG5Mb2FkZXIubG9hZFJlc291cmNlcyhyZXNvdXJjZXMsIGRlZmF1bHRMYW5nKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcCgobG9hZGVkUmVzb3VyY2VzOiBMb2FkZWRSZXNvdXJjZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc2V0VHJhbnNsYXRpb24oZGVmYXVsdExhbmcsIGxvYWRlZFJlc291cmNlcy50cmFuc2xhdGlvbnMsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZvcmtKb2luKGxhbmdTdWJzY3JpcHRpb24pLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChsb2FkZWRSZXNvdXJjZXNBcnI6IExvYWRlZFJlc291cmNlc1tdKSA9PlxuICAgICAgICAgICAgICAgICAgICAhbG9hZGVkUmVzb3VyY2VzQXJyWzBdLmhhc0Vycm9yID8geyBzdWNjZXNzOiB0cnVlIH0gOiB7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcjogbG9hZGVkUmVzb3VyY2VzQXJyWzBdLmVycm9ycyB9LFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZW1pdCBzdGF0dXMgb2YgbW9kdWxlIGxvYWRpbmcgcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk1vZHVsZUxvYWQubmV4dCh7IHJlYWR5OiB0cnVlLCBuYW1lOiBtb2R1bGVOYW1lIH0pO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGVtaXQgc3RhdHVzIG9mIG1vZHVsZSBsb2FkaW5nIHByb2dyZXNzXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25Nb2R1bGVMb2FkLm5leHQoeyByZWFkeTogdHJ1ZSwgbmFtZTogbW9kdWxlTmFtZSwgZXJyb3IgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvciB9KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoeyBzdWNjZXNzOiBmYWxzZSwgZXJyb3I6ICdjdXJyZW50TG9hZGVyIGlzIG5vdCBhbiBJMThuTG9hZGVyLicgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcmVwYXJlcyB0aGUgZGVmYXVsdCBsYW5ndWFnZVxuICAgICAqL1xuICAgIHByaXZhdGUgcHJlcGFyZWREZWZhdWx0TGFuZ3VhZ2UoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgYnJvd3NlclByZWYgPSBnZXRCcm93c2VyRGVmYXVsdExhbmd1YWdlKCk7XG4gICAgICAgIC8vIElmIHVzZXIgaGFzIGJyb3dzZXIgcHJlZmVycmVkIGxhbmcsIGFuZCB0aGF0IGxhbmd1YWdlIGlzIHBhcnQgb2YgdGhlIGxhbmd1YWdlcyBhcnJheVxuICAgICAgICBpZiAoYnJvd3NlclByZWYgJiYgdGhpcy5jb25maWcubGFuZ3VhZ2VzICYmIEV1aUV1TGFuZ3VhZ2VzLmdldExhbmd1YWdlQ29kZXModGhpcy5jb25maWcubGFuZ3VhZ2VzKS5pbmNsdWRlcyhicm93c2VyUHJlZikpIHtcbiAgICAgICAgICAgIHJldHVybiBicm93c2VyUHJlZjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcuZGVmYXVsdExhbmd1YWdlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBkZWZhdWx0X2xhbmd1YWdlIGlmIGdpdmVuIGRlZmF1bHQgbGFuZ3VhZ2UgdG8gb3ZlcnJpZGUgZGVmYXVsdCBsYW5ndWFnZSBjb21pbmcgZnJvbSB0aGVcbiAgICAgKiBjb25maWd1cmF0aW9uIHRva2VuLlxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0dXAoaW5pdExhbmd1YWdlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEV1aVNlcnZpY2VTdGF0dXM+IHtcbiAgICAgICAgLy8gdXNlIHRoZSBkZWZhdWx0IGNvbmZpZyBhcyBhIHJlZmVyZW5jZSBiYXNlXG4gICAgICAgIHRoaXMuY29uZmlnID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9JMThOX1NFUlZJQ0VfQ09ORklHLCB0aGlzLmNvbmZpZyk7XG4gICAgICAgIC8vIGNvbmZpZ3VyZSB0aGUgdHJhbnNsYXRlIGNvbmZpZyBzZXJ2aWNlXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5sYW5ndWFnZXMpIHtcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5hZGRMYW5ncyhFdWlFdUxhbmd1YWdlcy5nZXRMYW5ndWFnZUNvZGVzKHRoaXMuY29uZmlnLmxhbmd1YWdlcykpO1xuICAgICAgICAgICAgaWYgKHRoaXMubG9nU2VydmljZSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nU2VydmljZS5pbmZvKGBJMThuIGFjY2VwdGVkIGxhbmd1YWdlcyBzZXQgdG8gJHtFdWlFdUxhbmd1YWdlcy5nZXRMYW5ndWFnZUNvZGVzKHRoaXMuY29uZmlnLmxhbmd1YWdlcyl9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gc2V0IHRoZSBjdXJyZW50IGxhbmd1YWdlLCBjYXVzaW5nIHRvIGxvYWQgdHJhbnNsYXRpb25zXG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudXNlKGluaXRMYW5ndWFnZSkucGlwZShcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5iaW5kQWN0aXZlTGFuZ1N0YXRlVG9UcmFuc2xhdGVTZXJ2aWNlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5iaW5kVHJhbnNsYXRlU2VydmljZUxhbmdDaGFuZ2VUb1N0YXRlKCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLmRlZmF1bHRMYW5ndWFnZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldERlZmF1bHRMYW5ndWFnZSh0aGlzLmNvbmZpZy5kZWZhdWx0TGFuZ3VhZ2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMb2FkZXIgaW5zdGFuY2VvZiBJMThuTG9hZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZhaWxlZFJlc291cmNlcyA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TG9hZGVyLmdldEZhaWxlZFJlc291cmNlcygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmFpbGVkUmVzb3VyY2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcjogZmFpbGVkUmVzb3VyY2VzIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSB9O1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4gb2YoeyBzdWNjZXNzOiBmYWxzZSwgZXJyb3IgfSkpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmluZEFjdGl2ZUxhbmdTdGF0ZVRvVHJhbnNsYXRlU2VydmljZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoZ2V0QWN0aXZlTGFuZykuc3Vic2NyaWJlKChsYW5nOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGlmIChsYW5nICE9PSBudWxsICYmIHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZyAhPT0gbGFuZykge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlKGxhbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJpbmRUcmFuc2xhdGVTZXJ2aWNlTGFuZ0NoYW5nZVRvU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudDogTGFuZ0NoYW5nZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0ZUluc3RhbmNlLmFjdGl2ZUxhbmcgIT09IGV2ZW50LmxhbmcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlKHsgYWN0aXZlTGFuZzogZXZlbnQubGFuZyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmxvZ1NlcnZpY2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ1NlcnZpY2UuaW5mbyhgSTE4biBjdXJyZW50IGxhbmd1YWdlIHNldCB0byAke2V2ZW50Lmxhbmd9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RGVmYXVsdExhbmd1YWdlKGRlZmF1bHRMYW5ndWFnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIC8vIHJlbW92ZWQsIGN1cnJlbnQgbGFuZ3VhZ2UgaXMgYWxyZWFkeSBjYWxjdWxhdGVkIGluIGluaXQsIHNldHVwIGZ1bmN0aW9uIGZpbGwgdXNlIGl0IGRpcmVjdGx5LCBub3QgZGVmYXVsdFxuICAgICAgICAvLyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcgPSBkZWZhdWx0X2xhbmd1YWdlIHx8IHRoaXMuY29uZmlnLmRlZmF1bHRMYW5ndWFnZTtcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnNldERlZmF1bHRMYW5nKGRlZmF1bHRMYW5ndWFnZSk7XG4gICAgICAgIGlmICh0aGlzLmxvZ1NlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMubG9nU2VydmljZS5pbmZvKGBJMThuIGRlZmF1bHQgbGFuZ3VhZ2Ugc2V0IHRvICR7ZGVmYXVsdExhbmd1YWdlfWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY2hhbmdlIHRoZSBjdXJyZW50bHkgdXNlZCBsYW5ndWFnZVxuICAgICAqXG4gICAgICogQHBhcmFtIGxhbmcgaXMgdGhlIGxhbmd1YWdlIGNvZGUgYmFzZWQgb24gdGhlIGNvbnZlbnRpb24geW91IHVzZWQgZS5nLiAoZW4gb3IgZW4tRU4pXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZSB0aGF0IHJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW4gdGhlIG9iamVjdCB0cmFuc2xhdGlvbiBmb3IgZ2l2ZW4gbGFuZ3VhZ2UgYWZ0ZXIgbGFuZ3VhZ2VcbiAgICAgKiBmdWxseSBsb2FkZWQuXG4gICAgICovXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSB1c2UobGFuZzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS51c2UobGFuZyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogdXBkYXRlcyB0aGUgSFRNTCBlbGVtZW50IGxhbmcgYXR0cmlidXRlXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgdXBkYXRlSFRNTERPTUxhbmcobGFuZzogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmxhbmcgPSBsYW5nO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -2,5 +2,5 @@ export * from './i18n.resource';
|
|
|
2
2
|
export * from './i18n.loader';
|
|
3
3
|
// export * from './i18n.module';
|
|
4
4
|
export * from './i18n.service';
|
|
5
|
-
export * from './i18n.service.mock';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
// export * from './i18n.service.mock';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2kxOG4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixpQ0FBaUM7QUFDakMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQix1Q0FBdUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2kxOG4ucmVzb3VyY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9pMThuLmxvYWRlcic7XG4vLyBleHBvcnQgKiBmcm9tICcuL2kxOG4ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vaTE4bi5zZXJ2aWNlJztcbi8vIGV4cG9ydCAqIGZyb20gJy4vaTE4bi5zZXJ2aWNlLm1vY2snO1xuIl19
|
|
@@ -47,7 +47,9 @@ export class LocaleService extends EuiService {
|
|
|
47
47
|
}
|
|
48
48
|
getState(keyOrMapFn) {
|
|
49
49
|
let selector = getLocaleState;
|
|
50
|
-
|
|
50
|
+
// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
|
|
51
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
52
|
+
const dotNotationToObject = (obj, key) => key.split('.').reduce((slice, i) => slice[i], obj);
|
|
51
53
|
if (keyOrMapFn) {
|
|
52
54
|
switch (typeof keyOrMapFn) {
|
|
53
55
|
case 'function':
|
|
@@ -206,10 +208,10 @@ export class LocaleService extends EuiService {
|
|
|
206
208
|
}
|
|
207
209
|
});
|
|
208
210
|
}
|
|
209
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
210
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
211
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.1", 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 }); }
|
|
212
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: LocaleService, providedIn: 'root' }); }
|
|
211
213
|
}
|
|
212
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
214
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: LocaleService, decorators: [{
|
|
213
215
|
type: Injectable,
|
|
214
216
|
args: [{
|
|
215
217
|
providedIn: 'root',
|
|
@@ -230,4 +232,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ng
|
|
|
230
232
|
}] }, { type: i3.LogService, decorators: [{
|
|
231
233
|
type: Optional
|
|
232
234
|
}] }] });
|
|
233
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2xvY2FsZS9sb2NhbGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBRUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBYSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFDSCxVQUFVLEVBRVYsY0FBYyxFQUNkLDhCQUE4QixHQUtqQyxNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFGLE9BQU8sRUFBZ0IsdUJBQXVCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7QUFHN0MsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQWUsZ0JBQWdCLENBQUMsQ0FBQztBQUtuRixNQUFNLE9BQU8sYUFBbUQsU0FBUSxVQUEyQjtJQUsvRixZQUNjLEtBQW1CLEVBQ1UsZ0JBQThCLEVBQ3hDLFNBQWlCLEVBQ0EsWUFBMEIsRUFDcEQsSUFBaUIsRUFDakIsR0FBZTtRQUVuQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQVA1QixV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QUMsQ0FBQztJQUNQLENBQUM7c0lBaE9RLGFBQWEsOENBT1YsbUJBQW1CLGFBQ25CLFNBQVMsYUFDRyxnQkFBZ0I7MElBVC9CLGFBQWEsY0FGVixNQUFNOztnR0FFVCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBUVEsTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUMxQixNQUFNOzJCQUFDLFNBQVM7OzBCQUNoQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGdCQUFnQjs7MEJBQ25DLFFBQVE7OzBCQUNSLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFuZ3VsYXIgaXMgdXNpbmcgYSBndWxwIHRhc2sgdG8gZ2VuZXJhdGUgdGhlIGxvY2FsZXMgdGhhdCB3ZSBkeW5hbWljYWxseSBpbXBvcnQuIFRoaXMgdGFzayBjYW4gYmUgZm91bmQgaGVyZVxuICogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iL21hc3Rlci90b29scy9ndWxwLXRhc2tzL2NsZHIvY2xkci1kYXRhLmpzXG4gKiBUaGF0IHRhc2sgaXMgdXRpbGl6aW5nIHRoZSBDTERSIGxpYnJhcnkgdG8gbG9hZCBhbmQgY29uc3RydWN0IHRoZSBsb2NhbGUgZm9yIGVhY2ggcmVnaW9uLiBUaGlzIHNlcnZpY2UgaXMgcmVzcG9uc2libGVcbiAqIHRvIGxvYWQgdGhvc2UgbG9jYWxlIGR5bmFtaWNhbGx5IHVwb24gcmVxdWVzdCBhbmQgdG8gdXBkYXRlIHRoZSBzdGF0ZSBvZiB0aGUgZVVJIGFwcC5cbiAqXG4gKiBQYXJ0cyB0aGF0IGFyZSBoYW5kbGVzIHRocm91Z2ggY29uZmlndXJhdGlvbjpcbiAqICAtIHVwZGF0ZSBvZiB0aGUgTE9DQUxFX0lEIHRva2VuXG4gKiAgLSBpbml0aWFsIGR5bmFtaWNhbCBsb2FkIG9mIGxvY2FsZXNcbiAqICAtIGJpbmQgdG8gdHJhbnNsYXRpb24gc2VydmljZSBmb3IgbG9jYWxlIGNoYW5nZXNcbiAqL1xuXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBMT0NBTEVfSUQsIE9uRGVzdHJveSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldExvY2FsZUlkIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgRXVpU2VydmljZSxcbiAgICBFdWlTZXJ2aWNlU3RhdHVzLFxuICAgIGdldExvY2FsZVN0YXRlLFxuICAgIGdldExvY2FsZVNlcnZpY2VDb25maWdGcm9tQmFzZSxcbiAgICBHbG9iYWxDb25maWcsXG4gICAgTG9jYWxlU2VydmljZUNvbmZpZyxcbiAgICBMb2NhbGVTdGF0ZSxcbiAgICBMb2dnZXIsXG59IGZyb20gJ0BldWkvYmFzZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFrZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdG9yZVNlcnZpY2UsIFVwZGF0ZUxvY2FsZVN0YXRlQWN0aW9uIH0gZnJvbSAnLi4vc3RvcmUnO1xuaW1wb3J0IHsgTG9nU2VydmljZSB9IGZyb20gJy4uL2xvZyc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uL2kxOG4nO1xuaW1wb3J0IHsgR0xPQkFMX0NPTkZJR19UT0tFTiB9IGZyb20gJy4uL2NvbmZpZy90b2tlbnMnO1xuaW1wb3J0IHsgY3JlYXRlU2VsZWN0b3IgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5cbmV4cG9ydCB0eXBlIExvY2FsZU1hcHBlciA9IChsb2NhbGU6IHN0cmluZykgPT4gYW55O1xuZXhwb3J0IGNvbnN0IExPQ0FMRV9JRF9NQVBQRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48TG9jYWxlTWFwcGVyPignbG9jYWxlSWRNYXBwZXInKTtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTG9jYWxlU2VydmljZTxUIGV4dGVuZHMgTG9jYWxlU3RhdGUgPSBMb2NhbGVTdGF0ZT4gZXh0ZW5kcyBFdWlTZXJ2aWNlPFQgfCBMb2NhbGVTdGF0ZT4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXI7XG4gICAgcHJpdmF0ZSBzdWJOb3RpZmllcjogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcbiAgICBwcm90ZWN0ZWQgY29uZmlnOiBMb2NhbGVTZXJ2aWNlQ29uZmlnO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBzdG9yZTogU3RvcmVTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KEdMT0JBTF9DT05GSUdfVE9LRU4pIHByb3RlY3RlZCBiYXNlR2xvYmFsQ29uZmlnOiBHbG9iYWxDb25maWcsXG4gICAgICAgIEBJbmplY3QoTE9DQUxFX0lEKSBwcm90ZWN0ZWQgbG9jYWxlX2lkOiBzdHJpbmcsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTE9DQUxFX0lEX01BUFBFUikgcHJpdmF0ZSBsb2NhbGVNYXBwZXI6IExvY2FsZU1hcHBlcixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBpMThuOiBJMThuU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBsb2c6IExvZ1NlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoeyBpZDogZ2V0TG9jYWxlSWQobG9jYWxlX2lkKSB9KTtcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIgPSBsb2cuZ2V0TG9nZ2VyKCdjb3JlLkxvY2FsZVNlcnZpY2UnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnID0gZ2V0TG9jYWxlU2VydmljZUNvbmZpZ0Zyb21CYXNlKHRoaXMuYmFzZUdsb2JhbENvbmZpZyk7XG4gICAgICAgIC8vIGluIGNhc2Ugbm8gbG9jYWxlTWFwcGVyIHByb3ZpZGVkLCBzZXQgdGhlIGFuZ3VsYXIgZ2V0TG9jYWxlSWQgYXMgZGVmYXVsdFxuICAgICAgICBpZiAoIXRoaXMubG9jYWxlTWFwcGVyKSB7XG4gICAgICAgICAgICB0aGlzLmxvY2FsZU1hcHBlciA9IGdldExvY2FsZUlkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3ViTm90aWZpZXIubmV4dCh2b2lkIDApO1xuICAgICAgICB0aGlzLnN1Yk5vdGlmaWVyLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgZ2V0U3RhdGU8SyA9IFQ+KG1hcEZuPzogKHN0YXRlOiBUKSA9PiBLKTogT2JzZXJ2YWJsZTxLPjtcbiAgICBnZXRTdGF0ZTxhIGV4dGVuZHMga2V5b2YgVD4oa2V5PzogYSk6IE9ic2VydmFibGU8VFthXT47XG4gICAgZ2V0U3RhdGU8Sz4oa2V5T3JNYXBGbj86ICgoc3RhdGU6IFQpID0+IEspIHwgc3RyaW5nKTogT2JzZXJ2YWJsZTxLPiB7XG4gICAgICAgIGxldCBzZWxlY3RvcjogYW55ID0gZ2V0TG9jYWxlU3RhdGU7XG4gICAgICAgIGxldCBkb3ROb3RhdGlvblRvT2JqZWN0ID0gKG9iaiwga2V5KSA9PiBrZXkuc3BsaXQoJy4nKS5yZWR1Y2UoKHNsaWNlLCBpKSA9PiBzbGljZVtpXSwgb2JqKTtcblxuICAgICAgICBpZiAoa2V5T3JNYXBGbikge1xuICAgICAgICAgICAgc3dpdGNoICh0eXBlb2Yga2V5T3JNYXBGbikge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihnZXRMb2NhbGVTdGF0ZSwga2V5T3JNYXBGbik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoZ2V0TG9jYWxlU3RhdGUsIChzdGF0ZSkgPT4gZG90Tm90YXRpb25Ub09iamVjdChzdGF0ZSwga2V5T3JNYXBGbikpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3Qoc2VsZWN0b3IpLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5zdWJOb3RpZmllciksXG4gICAgICAgICAgICAvLyBpbiBjYXNlIHNlcnZpY2UgZGlkbid0IGluaXQgZmFsbGJhY2sgdG8gTE9DQUxFX0lEIHRva2VuIHZhbHVlXG4gICAgICAgICAgICBtYXAoKHN0YXRlKSA9PiAoc3RhdGUgPyBzdGF0ZSA6IHRoaXMuc3RhdGVJbnN0YW5jZSA/IHRoaXMuc3RhdGVJbnN0YW5jZSA6IHRoaXMubG9jYWxlX2lkKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpbml0KHN0YXRlPzogTG9jYWxlU3RhdGUgfCB1bmRlZmluZWQpOiBPYnNlcnZhYmxlPEV1aVNlcnZpY2VTdGF0dXM+IHtcbiAgICAgICAgc3VwZXIuaW5pdEV1aVNlcnZpY2UoKTtcblxuICAgICAgICAvLyBiaW5kIGxhbmd1YWdlIGNoYW5nZXMgdG8gbG9jYWxlIGNoYW5nZXNcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnPy5iaW5kV2l0aFRyYW5zbGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5iaW5kVHJhbnNsYXRlU2VydmljZUxhbmdDaGFuZ2VUb1N0YXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBkeW5hbWljYWxseSBsb2FkIGxvY2FsZSBiYXNlZCBvbiBwcm92aWRlZCBjb25maWd1cmF0aW9uXG4gICAgICAgIGNvbnN0IGF2YWlsYWJsZUxvY2FsZXMgPSBzdGF0ZT8uYXZhaWxhYmxlIHx8IHRoaXMuY29uZmlnPy5hdmFpbGFibGUgfHwgdGhpcy5nZXRCcm93c2VyTG9jYWxlcygpIHx8IFt0aGlzLmN1cnJlbnRMb2NhbGVdO1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkTG9jYWxlKGF2YWlsYWJsZUxvY2FsZXMpLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5zdWJOb3RpZmllciksXG4gICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy51cGRhdGVTdGF0ZShzdGF0ZSB8fCB7IGlkOiB0aGlzLmN1cnJlbnRMb2NhbGUgfSkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZHluYW1pY2FsbHkgbG9hZCBsb2NhbGUgYW5kIHVwZGF0ZSB0aGUgc3RhdGVcbiAgICAgKi9cbiAgICB1cGRhdGVTdGF0ZShzdGF0ZTogTG9jYWxlU3RhdGUpOiB2b2lkIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGlkID0gdGhpcy5sb2NhbGVNYXBwZXIoc3RhdGUuaWQpO1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgVXBkYXRlTG9jYWxlU3RhdGVBY3Rpb24oeyAuLi5zdGF0ZSwgaWQgfSkpO1xuICAgICAgICAgICAgLy8gdXBkYXRlIGdsb2JhbCBUT0tFTiBJRCBiYXNlZCBvbiBjb25maWd1cmF0aW9uXG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWcuYWZmZWN0R2xvYmFsTG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbGVfaWQgPSBpZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBMb2NhbGUgZm9yICcke3N0YXRlLmlkfScgaXMgbm90IGF2YWlsYWJsZS5cbiAgICAgICAgICAgICAgICAgUGxlYXNlIHVzZSBhZGRMb2NhbGUoJyR7c3RhdGUuaWR9JykgZmlyc3RgO1xuICAgICAgICAgICAgaWYgKHRoaXMubG9nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhtZXNzYWdlLCBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFkZExvY2FsZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxFdWlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRMb2NhbGUoaWQpO1xuICAgIH1cblxuICAgIGdldCBwcmV2aW91c0xvY2FsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5wcmV2U3RhdGVJbnN0YW5jZT8uaWQgfHwgdGhpcy5jdXJyZW50TG9jYWxlO1xuICAgIH1cblxuICAgIGdldCBjdXJyZW50TG9jYWxlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlSW5zdGFuY2U/LmlkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGxvYWQgYW5kIHJlZ2lzdGVyIGxvY2FsZSBkYXRhIGR5bmFtaWNhbGx5XG4gICAgICpcbiAgICAgKiBAcGFyYW0gbG9jYWxlIGFycmF5IG9mIGxvY2FsZSB0byBsb2FkXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIHByaXZhdGUgbG9hZExvY2FsZShsb2NhbGU6IHN0cmluZ1tdIHwgc3RyaW5nKTogT2JzZXJ2YWJsZTxFdWlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgICAgIC8vIGxvY2FsZSA9IEFycmF5LmlzQXJyYXkobG9jYWxlKSA/IGxvY2FsZSA6IFtsb2NhbGVdO1xuICAgICAgICAvLyBjb25zdCBsb2NhbGVJbXBvcnRzOiBPYnNlcnZhYmxlPHsgZGF0YTogYW55LCBsb2NhbGVJZDogc3RyaW5nLCBleHRyYURhdGE6IGFueSB9PltdXG4gICAgICAgIC8vICAgICA9IHRoaXMuZmlsdGVyUmVnaXN0ZXJlZExvY2FsZXMobG9jYWxlKS5tYXAodGhpcy5pbXBvcnREYXRhQW5kRXh0cmFMb2NhbGUuYmluZCh0aGlzKSk7XG4gICAgICAgIC8vXG4gICAgICAgIC8vIC8vIGluIGNhc2UgbG9jYWxlSW1wb3J0cyBhcnJheSBpcyBlbXB0eSBiZWNhdXNlIGxvY2FsZSBleGlzdHMsIE9ic2VydmFibGUgc3RpbGwgbmVlZHMgdG8gY29tcGxldGVcbiAgICAgICAgLy8gaWYgKGxvY2FsZUltcG9ydHMubGVuZ3RoIDwgMSkge1xuICAgICAgICAvLyAgICAgcmV0dXJuIG9mKHsgc3VjY2VzczogdHJ1ZSB9KTtcbiAgICAgICAgLy8gfVxuICAgICAgICAvL1xuICAgICAgICAvLyByZXR1cm4gZm9ya0pvaW4oLi4ubG9jYWxlSW1wb3J0cykucGlwZShcbiAgICAgICAgLy8gICAgIHRha2VVbnRpbCh0aGlzLnN1Yk5vdGlmaWVyKSxcbiAgICAgICAgLy8gICAgIG1hcChsb2NhbGVEYXRhID0+IHtcbiAgICAgICAgLy8gICAgICAgICAvLyBmaWx0ZXIgb3V0IG51bGwgcmVzdWx0cyBhbmQgcmVnaXN0ZXJMb2NhbGVEYXRhIGluY2x1ZGluZyBleHRyYVxuICAgICAgICAvLyAgICAgICAgIGxvY2FsZURhdGEuZmlsdGVyKCh7IGRhdGEgfSkgPT4gZGF0YSlcbiAgICAgICAgLy8gICAgICAgICAgICAgLmZvckVhY2goKHsgZGF0YSwgbG9jYWxlSWQsIGV4dHJhRGF0YSB9KSA9PiByZWdpc3RlckxvY2FsZURhdGEoZGF0YSwgbG9jYWxlSWQsIGV4dHJhRGF0YSkpO1xuICAgICAgICAvLyAgICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUgfTtcbiAgICAgICAgLy8gICAgIH0pLFxuICAgICAgICAvLyAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgIC8vICAgICAgICAgaWYgKHRoaXMubG9nKSB7XG4gICAgICAgIC8vICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBMb2NhbGUgbG9hZCBlcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsIGVycm9yKTtcbiAgICAgICAgLy8gICAgICAgICB9XG4gICAgICAgIC8vICAgICAgICAgcmV0dXJuIG9mKHsgc3VjY2VzczogZmFsc2UsIGVycm9yOiBlcnJvciB9KTtcbiAgICAgICAgLy8gICAgIH0pXG4gICAgICAgIC8vICk7XG4gICAgICAgIHJldHVybiBvZih7IHN1Y2Nlc3M6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbGlzdGVuIGZvciBsYW5ndWFnZSBjaGFuZ2VzIGFuZCBkeW5hbWljYWxseSBzZXQgbG9jYWxlIGFjY29yZGluZ2x5LiBJbiBjYXNlIG9mIG5vbiByZWdpc3RlcmVkIGxvY2FsZSByZWdpc3RlciBpdFxuICAgICAqIGR5bmFtaWNhbGx5LlxuICAgICAqL1xuICAgIHByaXZhdGUgYmluZFRyYW5zbGF0ZVNlcnZpY2VMYW5nQ2hhbmdlVG9TdGF0ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaTE4bikge1xuICAgICAgICAgICAgdGhpcy5pMThuLm9uU3RhdGVDaGFuZ2VcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuc3ViTm90aWZpZXIpLFxuICAgICAgICAgICAgICAgICAgICAvLyBmaWx0ZXIgb3V0IG51bGwgdmFsdWVzXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcigoc3RhdGUpID0+IHN0YXRlPy5hY3RpdmVMYW5nICE9PSBudWxsICYmIHN0YXRlPy5hY3RpdmVMYW5nICE9PSB1bmRlZmluZWQpLFxuICAgICAgICAgICAgICAgICAgICAvLyBCRVdBUkU6IGZpbHRlciBpcyBiYXNlZCBvbiBjb252ZW50aW9uIHRoYXQgbG9jYWxlIGlkIHNsaWNlZCgyKSB3aWxsIG1hdGNoIGFjdGl2ZUxhbmcgZS5nLiBlbi1VUyA9PiBlblxuICAgICAgICAgICAgICAgICAgICAvLyBBbHNvLCBpZiBhY3RpdmVMYW5nIGlzICdlbicgYW5kIGxvY2FsZSBpcyAnZW4tR0InIGl0IHdpbGwgbm90IHRyaWdnZXIgbG9jYWxlIGNoYW5nZVxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKHN0YXRlKSA9PiBzdGF0ZS5hY3RpdmVMYW5nLnRvTG93ZXJDYXNlKCkgIT09IHRoaXMuc3RhdGVJbnN0YW5jZT8uaWQuc2xpY2UoMCwgMikudG9Mb3dlckNhc2UoKSksXG4gICAgICAgICAgICAgICAgICAgIC8vIHRvIGNoZWNrIGlmIHJlZ2lzdHJhdGlvbiBvZiBsb2NhbGUgb3RoZXJ3aXNlIHJlZ2lzdGVyIGl0XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgodmFsdWUpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBvZih2YWx1ZSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRMb2NhbGVJZCBtYXkgdGhyb3cgRXJyb3IoYE1pc3NpbmcgbG9jYWxlIGRhdGEgZm9yIHRoZSBsb2NhbGUgXCIke2xvY2FsZX1cIi5gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKGkxOHN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoZWNrIGlmIGFjdGl2ZUxhbmcgaXMgbnVsbCBvciB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpMThzdGF0ZS5hY3RpdmVMYW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcignSGFzIGkxOG5TZXJ2aWNlIGluaXRpYWxpemVkPyBJZiBub3QgbWFrZSBzdXJlIGkxOG5TZXJ2aWNlLmluaXQoKS5zdWJzY3JpYmUoLi4pJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMubG9jYWxlTWFwcGVyKGkxOHN0YXRlLmFjdGl2ZUxhbmcpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2cpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkTG9jYWxlKHZhbHVlPy5hY3RpdmVMYW5nKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKChzOiBFdWlTZXJ2aWNlU3RhdHVzKSA9PiBzLnN1Y2Nlc3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKCgpID0+IHRoaXMubG9jYWxlTWFwcGVyKHZhbHVlPy5hY3RpdmVMYW5nKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdTb21ldGhpbmcgd2VudCB0ZXJyaWJseSByZWFsbHkgd3JvbmcgZHVyaW5nIGxvY2FsZSBsb2FkaW5nJywgZS5lcnIubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgLy8gdXBkYXRlIHRoZSBcImF2YWlsYWJsZVwiIGFycmF5IGF0dHJpYnV0ZSB3aXRoIG5ld2x5IHJlZ2lzdGVyZWRcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKChpZCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3RhdGUoKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChzdGF0ZTogTG9jYWxlU3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXZhaWxhYmxlID0gc3RhdGU/LmF2YWlsYWJsZSA/IHN0YXRlLmF2YWlsYWJsZSA6IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgaWQsIGF2YWlsYWJsZTogQXJyYXkuZnJvbShuZXcgU2V0KFsuLi5hdmFpbGFibGUsIGlkXSkpIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChzdGF0ZTogTG9jYWxlU3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZShzdGF0ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXRyaWV2ZSBsb2NhbGVzIGZyb20gYnJvd3NlclxuICAgICAqXG4gICAgICogQHBhcmFtIG9wdGlvbnNcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldEJyb3dzZXJMb2NhbGVzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgYnJvd3NlckxvY2FsZXMgPSBuYXZpZ2F0b3IubGFuZ3VhZ2VzID09PSB1bmRlZmluZWQgPyBbbmF2aWdhdG9yLmxhbmd1YWdlXSA6IG5hdmlnYXRvci5sYW5ndWFnZXM7XG5cbiAgICAgICAgaWYgKCFicm93c2VyTG9jYWxlcykge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBicm93c2VyTG9jYWxlcy5tYXAoKGxvY2FsZSkgPT4gbG9jYWxlLnRyaW0oKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaWYgbG9jYWxlIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCBmaWx0ZXJlZCBvdXQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbG9jYWxlcyBBIHN0cmluZyBhcnJheSBjb250YWlucyBhbGwgbG9jYWxlIGlkIGUuZy4gW1wiZWxcIiwgXCJlbC1DWVwiXVxuICAgICAqL1xuICAgIHByaXZhdGUgZmlsdGVyUmVnaXN0ZXJlZExvY2FsZXMobG9jYWxlczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBsb2NhbGVzLmZpbHRlcigobG9jOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZ2V0TG9jYWxlSWQobG9jKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybnMgYW4gT2JzZXJ2YWJsZSB3aGljaCBsb2FkcyB0aGUgbG9jYWxlIGJhc2VkIG9uIHByb3ZpZGVkIElEXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaWQgdGhlIGxvY2FsZSBpZCBlLmcuIGVuLCBlbC1DWVxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgLy8gcHJpdmF0ZSBpbXBvcnRMb2NhbGUoaWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgLy8gICAgIC8vIGluIGNhc2Ugb2YgYW4gZXJyb3IsIGNhdGNoIGl0IGFuZCByZXR1cm4gbnVsbFxuICAgIC8vICAgICByZXR1cm4gaW1wb3J0KFxuICAgIC8vICAgICAgICAgLyogd2VicGFja0V4Y2x1ZGU6IC9cXC5kXFwudHMkLyAqL1xuICAgIC8vICAgICAgICAgLyogd2VicGFja01vZGU6IFwibGF6eS1vbmNlXCIgKi9cbiAgICAvLyAgICAgICAgIC8qIHdlYnBhY2tDaHVua05hbWU6IFwiaTE4bi1iYXNlXCIgKi9cbiAgICAvLyAgICAgICAgIGBALy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9jb21tb24vbG9jYWxlcy8ke2lkfWApXG4gICAgLy8gICAgICAgICAudGhlbihtID0+IG0uZGVmYXVsdClcbiAgICAvLyAgICAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgLy8gICAgICAgICAgICAgaWYgKHRoaXMubG9nKSB7XG4gICAgLy8gICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBMb2NhbGUgd2l0aCBJRDogXCIke2lkfVwiIGZhaWxlZCB0byBsb2FkLiBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsIGVycm9yKTtcbiAgICAvLyAgICAgICAgICAgICB9XG4gICAgLy8gICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgLy8gICAgICAgICB9KTtcbiAgICAvLyB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm5zIGEgUHJvbWlzZSB3aGljaCBsb2FkcyB0aGUgbG9jYWxlIGJhc2VkIG9uIHByb3ZpZGVkIElEXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaWQgdGhlIGxvY2FsZSBpZCBlLmcuIGVuLCBlbC1DWVxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgLy8gcHJpdmF0ZSBpbXBvcnRFeHRyYUxvY2FsZShpZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICAvLyAgICAgLy8gaW4gY2FzZSBvZiBhbiBlcnJvciwgY2F0Y2ggaXQgYW5kIHJldHVybiBudWxsXG4gICAgLy8gICAgIHJldHVybiBpbXBvcnQoXG4gICAgLy8gICAgICAgICAvKiB3ZWJwYWNrRXhjbHVkZTogL1xcLmRcXC50cyQvICovXG4gICAgLy8gICAgICAgICAvKiB3ZWJwYWNrTW9kZTogXCJsYXp5LW9uY2VcIiAqL1xuICAgIC8vICAgICAgICAgLyogd2VicGFja0NodW5rTmFtZTogXCJpMThuLWV4dHJhXCIgKi9cbiAgICAvLyAgICAgICAgIGBALy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS8ke2lkfWApXG4gICAgLy8gICAgICAgICAudGhlbihtID0+IG0uZGVmYXVsdClcbiAgICAvLyAgICAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgLy8gICAgICAgICAgICAgaWYgKHRoaXMubG9nKSB7XG4gICAgLy8gICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBFeHRyYSBMb2NhbGUgd2l0aCBJRDogXCIke2lkfVwiIGZhaWxlZCB0byBsb2FkLiBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsIGVycm9yKTtcbiAgICAvLyAgICAgICAgICAgICB9XG4gICAgLy8gICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgLy8gICAgICAgICB9KTtcbiAgICAvLyB9XG5cbiAgICAvKipcbiAgICAgKiBJbXBvcnRzIExvY2FsZSBhbmQgdGhlbiBFeHRyYS4gSXQgcmV0dXJucyB0aGUgT2JqZWN0IHdoaWNoIHJlZ2lzdGVyTG9jYWxlKC4uLikgZnVuY3Rpb24gbmVlZHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbG9jYWxlSWQgVGhlIGlkIG9mIHRoZSBsb2NhbGVcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIC8vIHByaXZhdGUgaW1wb3J0RGF0YUFuZEV4dHJhTG9jYWxlKGxvY2FsZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHsgZGF0YTogYW55LCBsb2NhbGVJZDogc3RyaW5nLCBleHRyYURhdGE6IGFueSB9PiB7XG4gICAgLy8gICAgIHJldHVybiBmcm9tKHRoaXMuaW1wb3J0TG9jYWxlKGxvY2FsZUlkKSkucGlwZShcbiAgICAvLyAgICAgICAgIG1lcmdlTWFwKChkYXRhKSA9PiBmcm9tKHRoaXMuaW1wb3J0RXh0cmFMb2NhbGUobG9jYWxlSWQpKS5waXBlKG1hcCgoZXh0cmFEYXRhKSA9PlxuICAgIC8vICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHt9LCB7IGRhdGEsIGxvY2FsZUlkLCBleHRyYURhdGEgfSkpKSxcbiAgICAvLyAgICAgICAgICAgICAxXG4gICAgLy8gICAgICAgICApKTtcbiAgICAvLyB9XG59XG4iXX0=
|
|
235
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2xvY2FsZS9sb2NhbGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBRUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBYSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFDSCxVQUFVLEVBRVYsY0FBYyxFQUNkLDhCQUE4QixHQUtqQyxNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFGLE9BQU8sRUFBZ0IsdUJBQXVCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7QUFLN0MsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQWUsZ0JBQWdCLENBQUMsQ0FBQztBQUtuRixNQUFNLE9BQU8sYUFBbUQsU0FBUSxVQUEyQjtJQUsvRixZQUNjLEtBQW1CLEVBQ1UsZ0JBQThCLEVBQ3hDLFNBQWlCLEVBQ0EsWUFBMEIsRUFDcEQsSUFBaUIsRUFDakIsR0FBZTtRQUVuQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQVA1QixV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SUFBSSxDQUFDO2FBQ2Y7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7c0lBbE9RLGFBQWEsOENBT1YsbUJBQW1CLGFBQ25CLFNBQVMsYUFDRyxnQkFBZ0I7MElBVC9CLGFBQWEsY0FGVixNQUFNOztnR0FFVCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBUVEsTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUMxQixNQUFNOzJCQUFDLFNBQVM7OzBCQUNoQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGdCQUFnQjs7MEJBQ25DLFFBQVE7OzBCQUNSLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFuZ3VsYXIgaXMgdXNpbmcgYSBndWxwIHRhc2sgdG8gZ2VuZXJhdGUgdGhlIGxvY2FsZXMgdGhhdCB3ZSBkeW5hbWljYWxseSBpbXBvcnQuIFRoaXMgdGFzayBjYW4gYmUgZm91bmQgaGVyZVxuICogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iL21hc3Rlci90b29scy9ndWxwLXRhc2tzL2NsZHIvY2xkci1kYXRhLmpzXG4gKiBUaGF0IHRhc2sgaXMgdXRpbGl6aW5nIHRoZSBDTERSIGxpYnJhcnkgdG8gbG9hZCBhbmQgY29uc3RydWN0IHRoZSBsb2NhbGUgZm9yIGVhY2ggcmVnaW9uLiBUaGlzIHNlcnZpY2UgaXMgcmVzcG9uc2libGVcbiAqIHRvIGxvYWQgdGhvc2UgbG9jYWxlIGR5bmFtaWNhbGx5IHVwb24gcmVxdWVzdCBhbmQgdG8gdXBkYXRlIHRoZSBzdGF0ZSBvZiB0aGUgZVVJIGFwcC5cbiAqXG4gKiBQYXJ0cyB0aGF0IGFyZSBoYW5kbGVzIHRocm91Z2ggY29uZmlndXJhdGlvbjpcbiAqICAtIHVwZGF0ZSBvZiB0aGUgTE9DQUxFX0lEIHRva2VuXG4gKiAgLSBpbml0aWFsIGR5bmFtaWNhbCBsb2FkIG9mIGxvY2FsZXNcbiAqICAtIGJpbmQgdG8gdHJhbnNsYXRpb24gc2VydmljZSBmb3IgbG9jYWxlIGNoYW5nZXNcbiAqL1xuXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBMT0NBTEVfSUQsIE9uRGVzdHJveSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldExvY2FsZUlkIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgRXVpU2VydmljZSxcbiAgICBFdWlTZXJ2aWNlU3RhdHVzLFxuICAgIGdldExvY2FsZVN0YXRlLFxuICAgIGdldExvY2FsZVNlcnZpY2VDb25maWdGcm9tQmFzZSxcbiAgICBHbG9iYWxDb25maWcsXG4gICAgTG9jYWxlU2VydmljZUNvbmZpZyxcbiAgICBMb2NhbGVTdGF0ZSxcbiAgICBMb2dnZXIsIENvcmVTdGF0ZSxcbn0gZnJvbSAnQGV1aS9iYXNlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCB0YWtlLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN0b3JlU2VydmljZSwgVXBkYXRlTG9jYWxlU3RhdGVBY3Rpb24gfSBmcm9tICcuLi9zdG9yZSc7XG5pbXBvcnQgeyBMb2dTZXJ2aWNlIH0gZnJvbSAnLi4vbG9nJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vaTE4bic7XG5pbXBvcnQgeyBHTE9CQUxfQ09ORklHX1RPS0VOIH0gZnJvbSAnLi4vY29uZmlnL3Rva2Vucyc7XG5pbXBvcnQgeyBjcmVhdGVTZWxlY3RvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCB0eXBlIExvY2FsZU1hcHBlciA9IChsb2NhbGU6IHN0cmluZykgPT4gYW55O1xuZXhwb3J0IGNvbnN0IExPQ0FMRV9JRF9NQVBQRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48TG9jYWxlTWFwcGVyPignbG9jYWxlSWRNYXBwZXInKTtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTG9jYWxlU2VydmljZTxUIGV4dGVuZHMgTG9jYWxlU3RhdGUgPSBMb2NhbGVTdGF0ZT4gZXh0ZW5kcyBFdWlTZXJ2aWNlPFQgfCBMb2NhbGVTdGF0ZT4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXI7XG4gICAgcHJpdmF0ZSBzdWJOb3RpZmllcjogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gICAgcHJvdGVjdGVkIGNvbmZpZzogTG9jYWxlU2VydmljZUNvbmZpZztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgc3RvcmU6IFN0b3JlU2VydmljZSxcbiAgICAgICAgQEluamVjdChHTE9CQUxfQ09ORklHX1RPS0VOKSBwcm90ZWN0ZWQgYmFzZUdsb2JhbENvbmZpZzogR2xvYmFsQ29uZmlnLFxuICAgICAgICBASW5qZWN0KExPQ0FMRV9JRCkgcHJvdGVjdGVkIGxvY2FsZV9pZDogc3RyaW5nLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KExPQ0FMRV9JRF9NQVBQRVIpIHByaXZhdGUgbG9jYWxlTWFwcGVyOiBMb2NhbGVNYXBwZXIsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgaTE4bjogSTE4blNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgbG9nOiBMb2dTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICBzdXBlcih7IGlkOiBnZXRMb2NhbGVJZChsb2NhbGVfaWQpIH0pO1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlciA9IGxvZy5nZXRMb2dnZXIoJ2NvcmUuTG9jYWxlU2VydmljZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcgPSBnZXRMb2NhbGVTZXJ2aWNlQ29uZmlnRnJvbUJhc2UodGhpcy5iYXNlR2xvYmFsQ29uZmlnKTtcbiAgICAgICAgLy8gaW4gY2FzZSBubyBsb2NhbGVNYXBwZXIgcHJvdmlkZWQsIHNldCB0aGUgYW5ndWxhciBnZXRMb2NhbGVJZCBhcyBkZWZhdWx0XG4gICAgICAgIGlmICghdGhpcy5sb2NhbGVNYXBwZXIpIHtcbiAgICAgICAgICAgIHRoaXMubG9jYWxlTWFwcGVyID0gZ2V0TG9jYWxlSWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdWJOb3RpZmllci5uZXh0KHZvaWQgMCk7XG4gICAgICAgIHRoaXMuc3ViTm90aWZpZXIuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBnZXRTdGF0ZTxLID0gVD4obWFwRm4/OiAoc3RhdGU6IFQpID0+IEspOiBPYnNlcnZhYmxlPEs+O1xuICAgIGdldFN0YXRlPGEgZXh0ZW5kcyBrZXlvZiBUPihrZXk/OiBhKTogT2JzZXJ2YWJsZTxUW2FdPjtcbiAgICBnZXRTdGF0ZTxLPihrZXlPck1hcEZuPzogKChzdGF0ZTogVCkgPT4gSykgfCBzdHJpbmcpOiBPYnNlcnZhYmxlPEs+IHtcbiAgICAgICAgbGV0IHNlbGVjdG9yOiAoczogVCkgPT4gSyB8IExvY2FsZVN0YXRlID0gZ2V0TG9jYWxlU3RhdGU7XG4gICAgICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgY29uc3QgZG90Tm90YXRpb25Ub09iamVjdCA9IDxPPihvYmo6IE8sIGtleTogc3RyaW5nKTogYW55ID0+IGtleS5zcGxpdCgnLicpLnJlZHVjZSgoc2xpY2UsIGkpID0+IHNsaWNlW2ldLCBvYmopO1xuXG4gICAgICAgIGlmIChrZXlPck1hcEZuKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGVvZiBrZXlPck1hcEZuKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKGdldExvY2FsZVN0YXRlLCBrZXlPck1hcEZuKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihnZXRMb2NhbGVTdGF0ZSwgKHN0YXRlKSA9PiBkb3ROb3RhdGlvblRvT2JqZWN0KHN0YXRlLCBrZXlPck1hcEZuKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChzZWxlY3RvcikucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLnN1Yk5vdGlmaWVyKSxcbiAgICAgICAgICAgIC8vIGluIGNhc2Ugc2VydmljZSBkaWRuJ3QgaW5pdCBmYWxsYmFjayB0byBMT0NBTEVfSUQgdG9rZW4gdmFsdWVcbiAgICAgICAgICAgIG1hcCgoc3RhdGUpID0+IChzdGF0ZSA/IHN0YXRlIDogdGhpcy5zdGF0ZUluc3RhbmNlID8gdGhpcy5zdGF0ZUluc3RhbmNlIDogdGhpcy5sb2NhbGVfaWQpKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpbml0KHN0YXRlPzogTG9jYWxlU3RhdGUgfCB1bmRlZmluZWQpOiBPYnNlcnZhYmxlPEV1aVNlcnZpY2VTdGF0dXM+IHtcbiAgICAgICAgc3VwZXIuaW5pdEV1aVNlcnZpY2UoKTtcblxuICAgICAgICAvLyBiaW5kIGxhbmd1YWdlIGNoYW5nZXMgdG8gbG9jYWxlIGNoYW5nZXNcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnPy5iaW5kV2l0aFRyYW5zbGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5iaW5kVHJhbnNsYXRlU2VydmljZUxhbmdDaGFuZ2VUb1N0YXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBkeW5hbWljYWxseSBsb2FkIGxvY2FsZSBiYXNlZCBvbiBwcm92aWRlZCBjb25maWd1cmF0aW9uXG4gICAgICAgIGNvbnN0IGF2YWlsYWJsZUxvY2FsZXMgPSBzdGF0ZT8uYXZhaWxhYmxlIHx8IHRoaXMuY29uZmlnPy5hdmFpbGFibGUgfHwgdGhpcy5nZXRCcm93c2VyTG9jYWxlcygpIHx8IFt0aGlzLmN1cnJlbnRMb2NhbGVdO1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkTG9jYWxlKGF2YWlsYWJsZUxvY2FsZXMpLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5zdWJOb3RpZmllciksXG4gICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy51cGRhdGVTdGF0ZShzdGF0ZSB8fCB7IGlkOiB0aGlzLmN1cnJlbnRMb2NhbGUgfSkpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGR5bmFtaWNhbGx5IGxvYWQgbG9jYWxlIGFuZCB1cGRhdGUgdGhlIHN0YXRlXG4gICAgICovXG4gICAgdXBkYXRlU3RhdGUoc3RhdGU6IExvY2FsZVN0YXRlKTogdm9pZCB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBpZCA9IHRoaXMubG9jYWxlTWFwcGVyKHN0YXRlLmlkKTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFVwZGF0ZUxvY2FsZVN0YXRlQWN0aW9uKHsgLi4uc3RhdGUsIGlkIH0pKTtcbiAgICAgICAgICAgIC8vIHVwZGF0ZSBnbG9iYWwgVE9LRU4gSUQgYmFzZWQgb24gY29uZmlndXJhdGlvblxuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLmFmZmVjdEdsb2JhbExvY2FsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxlX2lkID0gaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgTG9jYWxlIGZvciAnJHtzdGF0ZS5pZH0nIGlzIG5vdCBhdmFpbGFibGUuXG4gICAgICAgICAgICAgICAgIFBsZWFzZSB1c2UgYWRkTG9jYWxlKCcke3N0YXRlLmlkfScpIGZpcnN0YDtcbiAgICAgICAgICAgIGlmICh0aGlzLmxvZykge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmluZm8obWVzc2FnZSwgZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGRMb2NhbGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8RXVpU2VydmljZVN0YXR1cz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkTG9jYWxlKGlkKTtcbiAgICB9XG5cbiAgICBnZXQgcHJldmlvdXNMb2NhbGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJldlN0YXRlSW5zdGFuY2U/LmlkIHx8IHRoaXMuY3VycmVudExvY2FsZTtcbiAgICB9XG5cbiAgICBnZXQgY3VycmVudExvY2FsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZUluc3RhbmNlPy5pZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBsb2FkIGFuZCByZWdpc3RlciBsb2NhbGUgZGF0YSBkeW5hbWljYWxseVxuICAgICAqXG4gICAgICogQHBhcmFtIGxvY2FsZSBhcnJheSBvZiBsb2NhbGUgdG8gbG9hZFxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBwcml2YXRlIGxvYWRMb2NhbGUobG9jYWxlOiBzdHJpbmdbXSB8IHN0cmluZyk6IE9ic2VydmFibGU8RXVpU2VydmljZVN0YXR1cz4ge1xuICAgICAgICAvLyBsb2NhbGUgPSBBcnJheS5pc0FycmF5KGxvY2FsZSkgPyBsb2NhbGUgOiBbbG9jYWxlXTtcbiAgICAgICAgLy8gY29uc3QgbG9jYWxlSW1wb3J0czogT2JzZXJ2YWJsZTx7IGRhdGE6IGFueSwgbG9jYWxlSWQ6IHN0cmluZywgZXh0cmFEYXRhOiBhbnkgfT5bXVxuICAgICAgICAvLyAgICAgPSB0aGlzLmZpbHRlclJlZ2lzdGVyZWRMb2NhbGVzKGxvY2FsZSkubWFwKHRoaXMuaW1wb3J0RGF0YUFuZEV4dHJhTG9jYWxlLmJpbmQodGhpcykpO1xuICAgICAgICAvL1xuICAgICAgICAvLyAvLyBpbiBjYXNlIGxvY2FsZUltcG9ydHMgYXJyYXkgaXMgZW1wdHkgYmVjYXVzZSBsb2NhbGUgZXhpc3RzLCBPYnNlcnZhYmxlIHN0aWxsIG5lZWRzIHRvIGNvbXBsZXRlXG4gICAgICAgIC8vIGlmIChsb2NhbGVJbXBvcnRzLmxlbmd0aCA8IDEpIHtcbiAgICAgICAgLy8gICAgIHJldHVybiBvZih7IHN1Y2Nlc3M6IHRydWUgfSk7XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy9cbiAgICAgICAgLy8gcmV0dXJuIGZvcmtKb2luKC4uLmxvY2FsZUltcG9ydHMpLnBpcGUoXG4gICAgICAgIC8vICAgICB0YWtlVW50aWwodGhpcy5zdWJOb3RpZmllciksXG4gICAgICAgIC8vICAgICBtYXAobG9jYWxlRGF0YSA9PiB7XG4gICAgICAgIC8vICAgICAgICAgLy8gZmlsdGVyIG91dCBudWxsIHJlc3VsdHMgYW5kIHJlZ2lzdGVyTG9jYWxlRGF0YSBpbmNsdWRpbmcgZXh0cmFcbiAgICAgICAgLy8gICAgICAgICBsb2NhbGVEYXRhLmZpbHRlcigoeyBkYXRhIH0pID0+IGRhdGEpXG4gICAgICAgIC8vICAgICAgICAgICAgIC5mb3JFYWNoKCh7IGRhdGEsIGxvY2FsZUlkLCBleHRyYURhdGEgfSkgPT4gcmVnaXN0ZXJMb2NhbGVEYXRhKGRhdGEsIGxvY2FsZUlkLCBleHRyYURhdGEpKTtcbiAgICAgICAgLy8gICAgICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlIH07XG4gICAgICAgIC8vICAgICB9KSxcbiAgICAgICAgLy8gICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAvLyAgICAgICAgIGlmICh0aGlzLmxvZykge1xuICAgICAgICAvLyAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgTG9jYWxlIGxvYWQgZXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCBlcnJvcik7XG4gICAgICAgIC8vICAgICAgICAgfVxuICAgICAgICAvLyAgICAgICAgIHJldHVybiBvZih7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcjogZXJyb3IgfSk7XG4gICAgICAgIC8vICAgICB9KVxuICAgICAgICAvLyApO1xuICAgICAgICByZXR1cm4gb2YoeyBzdWNjZXNzOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGxpc3RlbiBmb3IgbGFuZ3VhZ2UgY2hhbmdlcyBhbmQgZHluYW1pY2FsbHkgc2V0IGxvY2FsZSBhY2NvcmRpbmdseS4gSW4gY2FzZSBvZiBub24gcmVnaXN0ZXJlZCBsb2NhbGUgcmVnaXN0ZXIgaXRcbiAgICAgKiBkeW5hbWljYWxseS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGJpbmRUcmFuc2xhdGVTZXJ2aWNlTGFuZ0NoYW5nZVRvU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmkxOG4pIHtcbiAgICAgICAgICAgIHRoaXMuaTE4bi5vblN0YXRlQ2hhbmdlXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLnN1Yk5vdGlmaWVyKSxcbiAgICAgICAgICAgICAgICAgICAgLy8gZmlsdGVyIG91dCBudWxsIHZhbHVlc1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKHN0YXRlKSA9PiBzdGF0ZT8uYWN0aXZlTGFuZyAhPT0gbnVsbCAmJiBzdGF0ZT8uYWN0aXZlTGFuZyAhPT0gdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICAgICAgLy8gQkVXQVJFOiBmaWx0ZXIgaXMgYmFzZWQgb24gY29udmVudGlvbiB0aGF0IGxvY2FsZSBpZCBzbGljZWQoMikgd2lsbCBtYXRjaCBhY3RpdmVMYW5nIGUuZy4gZW4tVVMgPT4gZW5cbiAgICAgICAgICAgICAgICAgICAgLy8gQWxzbywgaWYgYWN0aXZlTGFuZyBpcyAnZW4nIGFuZCBsb2NhbGUgaXMgJ2VuLUdCJyBpdCB3aWxsIG5vdCB0cmlnZ2VyIGxvY2FsZSBjaGFuZ2VcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyKChzdGF0ZSkgPT4gc3RhdGUuYWN0aXZlTGFuZy50b0xvd2VyQ2FzZSgpICE9PSB0aGlzLnN0YXRlSW5zdGFuY2U/LmlkLnNsaWNlKDAsIDIpLnRvTG93ZXJDYXNlKCkpLFxuICAgICAgICAgICAgICAgICAgICAvLyB0byBjaGVjayBpZiByZWdpc3RyYXRpb24gb2YgbG9jYWxlIG90aGVyd2lzZSByZWdpc3RlciBpdFxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgb2YodmFsdWUpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0TG9jYWxlSWQgbWF5IHRocm93IEVycm9yKGBNaXNzaW5nIGxvY2FsZSBkYXRhIGZvciB0aGUgbG9jYWxlIFwiJHtsb2NhbGV9XCIuYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKChpMThzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiBhY3RpdmVMYW5nIGlzIG51bGwgb3IgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaTE4c3RhdGUuYWN0aXZlTGFuZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoJ0hhcyBpMThuU2VydmljZSBpbml0aWFsaXplZD8gSWYgbm90IG1ha2Ugc3VyZSBpMThuU2VydmljZS5pbml0KCkuc3Vic2NyaWJlKC4uKScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih0aGlzLmxvY2FsZU1hcHBlcihpMThzdGF0ZS5hY3RpdmVMYW5nKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9hZExvY2FsZSh2YWx1ZT8uYWN0aXZlTGFuZykucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcigoczogRXVpU2VydmljZVN0YXR1cykgPT4gcy5zdWNjZXNzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLmxvY2FsZU1hcHBlcih2YWx1ZT8uYWN0aXZlTGFuZykpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnU29tZXRoaW5nIHdlbnQgdGVycmlibHkgcmVhbGx5IHdyb25nIGR1cmluZyBsb2NhbGUgbG9hZGluZycsIGUuZXJyLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgXCJhdmFpbGFibGVcIiBhcnJheSBhdHRyaWJ1dGUgd2l0aCBuZXdseSByZWdpc3RlcmVkXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoaWQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFN0YXRlKCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoc3RhdGU6IExvY2FsZVN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF2YWlsYWJsZSA9IHN0YXRlPy5hdmFpbGFibGUgPyBzdGF0ZS5hdmFpbGFibGUgOiBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGlkLCBhdmFpbGFibGU6IEFycmF5LmZyb20obmV3IFNldChbLi4uYXZhaWxhYmxlLCBpZF0pKSB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoc3RhdGU6IExvY2FsZVN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoc3RhdGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0cmlldmUgbG9jYWxlcyBmcm9tIGJyb3dzZXJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRCcm93c2VyTG9jYWxlcygpOiBzdHJpbmdbXSB7XG4gICAgICAgIGNvbnN0IGJyb3dzZXJMb2NhbGVzID0gbmF2aWdhdG9yLmxhbmd1YWdlcyA9PT0gdW5kZWZpbmVkID8gW25hdmlnYXRvci5sYW5ndWFnZV0gOiBuYXZpZ2F0b3IubGFuZ3VhZ2VzO1xuXG4gICAgICAgIGlmICghYnJvd3NlckxvY2FsZXMpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYnJvd3NlckxvY2FsZXMubWFwKChsb2NhbGUpID0+IGxvY2FsZS50cmltKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGlmIGxvY2FsZSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQgZmlsdGVyZWQgb3V0LlxuICAgICAqXG4gICAgICogQHBhcmFtIGxvY2FsZXMgQSBzdHJpbmcgYXJyYXkgY29udGFpbnMgYWxsIGxvY2FsZSBpZCBlLmcuIFtcImVsXCIsIFwiZWwtQ1lcIl1cbiAgICAgKi9cbiAgICBwcml2YXRlIGZpbHRlclJlZ2lzdGVyZWRMb2NhbGVzKGxvY2FsZXM6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gbG9jYWxlcy5maWx0ZXIoKGxvYzogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGdldExvY2FsZUlkKGxvYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm5zIGFuIE9ic2VydmFibGUgd2hpY2ggbG9hZHMgdGhlIGxvY2FsZSBiYXNlZCBvbiBwcm92aWRlZCBJRFxuICAgICAqXG4gICAgICogQHBhcmFtIGlkIHRoZSBsb2NhbGUgaWQgZS5nLiBlbiwgZWwtQ1lcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIC8vIHByaXZhdGUgaW1wb3J0TG9jYWxlKGlkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIC8vICAgICAvLyBpbiBjYXNlIG9mIGFuIGVycm9yLCBjYXRjaCBpdCBhbmQgcmV0dXJuIG51bGxcbiAgICAvLyAgICAgcmV0dXJuIGltcG9ydChcbiAgICAvLyAgICAgICAgIC8qIHdlYnBhY2tFeGNsdWRlOiAvXFwuZFxcLnRzJC8gKi9cbiAgICAvLyAgICAgICAgIC8qIHdlYnBhY2tNb2RlOiBcImxhenktb25jZVwiICovXG4gICAgLy8gICAgICAgICAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImkxOG4tYmFzZVwiICovXG4gICAgLy8gICAgICAgICBgQC8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvJHtpZH1gKVxuICAgIC8vICAgICAgICAgLnRoZW4obSA9PiBtLmRlZmF1bHQpXG4gICAgLy8gICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgIC8vICAgICAgICAgICAgIGlmICh0aGlzLmxvZykge1xuICAgIC8vICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgTG9jYWxlIHdpdGggSUQ6IFwiJHtpZH1cIiBmYWlsZWQgdG8gbG9hZC4gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCBlcnJvcik7XG4gICAgLy8gICAgICAgICAgICAgfVxuICAgIC8vICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgIC8vICAgICAgICAgfSk7XG4gICAgLy8gfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJucyBhIFByb21pc2Ugd2hpY2ggbG9hZHMgdGhlIGxvY2FsZSBiYXNlZCBvbiBwcm92aWRlZCBJRFxuICAgICAqXG4gICAgICogQHBhcmFtIGlkIHRoZSBsb2NhbGUgaWQgZS5nLiBlbiwgZWwtQ1lcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIC8vIHByaXZhdGUgaW1wb3J0RXh0cmFMb2NhbGUoaWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgLy8gICAgIC8vIGluIGNhc2Ugb2YgYW4gZXJyb3IsIGNhdGNoIGl0IGFuZCByZXR1cm4gbnVsbFxuICAgIC8vICAgICByZXR1cm4gaW1wb3J0KFxuICAgIC8vICAgICAgICAgLyogd2VicGFja0V4Y2x1ZGU6IC9cXC5kXFwudHMkLyAqL1xuICAgIC8vICAgICAgICAgLyogd2VicGFja01vZGU6IFwibGF6eS1vbmNlXCIgKi9cbiAgICAvLyAgICAgICAgIC8qIHdlYnBhY2tDaHVua05hbWU6IFwiaTE4bi1leHRyYVwiICovXG4gICAgLy8gICAgICAgICBgQC8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZXh0cmEvJHtpZH1gKVxuICAgIC8vICAgICAgICAgLnRoZW4obSA9PiBtLmRlZmF1bHQpXG4gICAgLy8gICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgIC8vICAgICAgICAgICAgIGlmICh0aGlzLmxvZykge1xuICAgIC8vICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgRXh0cmEgTG9jYWxlIHdpdGggSUQ6IFwiJHtpZH1cIiBmYWlsZWQgdG8gbG9hZC4gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCBlcnJvcik7XG4gICAgLy8gICAgICAgICAgICAgfVxuICAgIC8vICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgIC8vICAgICAgICAgfSk7XG4gICAgLy8gfVxuXG4gICAgLyoqXG4gICAgICogSW1wb3J0cyBMb2NhbGUgYW5kIHRoZW4gRXh0cmEuIEl0IHJldHVybnMgdGhlIE9iamVjdCB3aGljaCByZWdpc3RlckxvY2FsZSguLi4pIGZ1bmN0aW9uIG5lZWRzLlxuICAgICAqXG4gICAgICogQHBhcmFtIGxvY2FsZUlkIFRoZSBpZCBvZiB0aGUgbG9jYWxlXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICAvLyBwcml2YXRlIGltcG9ydERhdGFBbmRFeHRyYUxvY2FsZShsb2NhbGVJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx7IGRhdGE6IGFueSwgbG9jYWxlSWQ6IHN0cmluZywgZXh0cmFEYXRhOiBhbnkgfT4ge1xuICAgIC8vICAgICByZXR1cm4gZnJvbSh0aGlzLmltcG9ydExvY2FsZShsb2NhbGVJZCkpLnBpcGUoXG4gICAgLy8gICAgICAgICBtZXJnZU1hcCgoZGF0YSkgPT4gZnJvbSh0aGlzLmltcG9ydEV4dHJhTG9jYWxlKGxvY2FsZUlkKSkucGlwZShtYXAoKGV4dHJhRGF0YSkgPT5cbiAgICAvLyAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih7fSwgeyBkYXRhLCBsb2NhbGVJZCwgZXh0cmFEYXRhIH0pKSksXG4gICAgLy8gICAgICAgICAgICAgMVxuICAgIC8vICAgICAgICAgKSk7XG4gICAgLy8gfVxufVxuIl19
|
|
@@ -29,10 +29,10 @@ export class LocaleServiceMock extends LocaleService {
|
|
|
29
29
|
this.DEFAULT_LOCALE = state.id || 'en';
|
|
30
30
|
return of({ success: true });
|
|
31
31
|
}
|
|
32
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
33
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
32
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: LocaleServiceMock, deps: [{ token: LOCALE_ID, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
33
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: LocaleServiceMock }); }
|
|
34
34
|
}
|
|
35
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: LocaleServiceMock, decorators: [{
|
|
36
36
|
type: Injectable
|
|
37
37
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
38
38
|
type: Optional
|
|
@@ -28,11 +28,11 @@ export class LogModule {
|
|
|
28
28
|
],
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
32
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.0-rc.
|
|
33
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
31
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: LogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
32
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.0-rc.1", ngImport: i0, type: LogModule }); }
|
|
33
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: LogModule }); }
|
|
34
34
|
}
|
|
35
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: LogModule, decorators: [{
|
|
36
36
|
type: NgModule
|
|
37
37
|
}] });
|
|
38
38
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvbG9nL2xvZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd4RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQUV6RCxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUFZLFlBQVksQ0FBQyxDQUFDO0FBRTVFOztHQUVHO0FBRUgsTUFBTSxPQUFPLFNBQVM7SUFDbEIsa0VBQWtFO0lBQ2xFLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBb0Isa0JBQWtCO1FBQ2pELE9BQU87WUFDSCxRQUFRLEVBQUUsU0FBUztZQUNuQixTQUFTLEVBQUU7Z0JBQ1AsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRTtnQkFDdEQsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSxRQUFRLENBQUMsRUFBRTthQUNwRztTQUNKLENBQUM7SUFDTixDQUFDO0lBRUQsK0dBQStHO0lBQy9HLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBb0Isa0JBQWtCO1FBQ2xELE9BQU87WUFDSCxRQUFRLEVBQUUsU0FBUztZQUNuQixTQUFTLEVBQUU7Z0JBQ1AsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRTtnQkFDdEQsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSxRQUFRLENBQUMsRUFBRTthQUNwRztTQUNKLENBQUM7SUFDTixDQUFDO3NJQXJCUSxTQUFTO3VJQUFULFNBQVM7dUlBQVQsU0FBUzs7Z0dBQVQsU0FBUztrQkFEckIsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBJbmplY3RvciwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvZ0NvbmZpZyB9IGZyb20gJ0BldWkvYmFzZSc7XG5cbmltcG9ydCB7IExvZ1NlcnZpY2UgfSBmcm9tICcuL2xvZy5zZXJ2aWNlJztcbmltcG9ydCB7IERFRkFVTFRfTE9HX0NPTkZJRyB9IGZyb20gJy4uL2NvbmZpZy9kZWZhdWx0cyc7XG5pbXBvcnQgeyBsb2dTZXJ2aWNlRmFjdG9yeSB9IGZyb20gJy4uL2FwcC9mYWN0b3JpZXMvbG9nJztcblxuY29uc3QgTE9HX01PRFVMRV9DT05GSUdfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48TG9nQ29uZmlnPignTE9HX0NPTkZJRycpO1xuXG4vKipcbiAqIExvZyBNb2R1bGVcbiAqL1xuQE5nTW9kdWxlKClcbmV4cG9ydCBjbGFzcyBMb2dNb2R1bGUge1xuICAgIC8qKiBtZXRob2QgY2FsbGVkIGluIHlvdXIgcm9vdCBtb2R1bGUgdG8gcHJvdmlkZSB0aGUgTG9nU2VydmljZSAqL1xuICAgIHN0YXRpYyBmb3JSb290KGNvbmZpZzogTG9nQ29uZmlnID0gREVGQVVMVF9MT0dfQ09ORklHKTogTW9kdWxlV2l0aFByb3ZpZGVyczxMb2dNb2R1bGU+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5nTW9kdWxlOiBMb2dNb2R1bGUsXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IExPR19NT0RVTEVfQ09ORklHX1RPS0VOLCB1c2VWYWx1ZTogY29uZmlnIH0sXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBMb2dTZXJ2aWNlLCB1c2VGYWN0b3J5OiBsb2dTZXJ2aWNlRmFjdG9yeSwgZGVwczogW0xPR19NT0RVTEVfQ09ORklHX1RPS0VOLCBJbmplY3Rvcl0gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqIG1ldGhvZCBjYWxsZWQgaW4geW91ciBvdGhlciAobm9uIHJvb3QsIGxhenkgbG9hZGVkKSBtb2R1bGVzIHRvIGltcG9ydCBhIGRpZmZlcmVudCBpbnN0YW5jZSBvZiBMb2dTZXJ2aWNlICovXG4gICAgc3RhdGljIGZvckNoaWxkKGNvbmZpZzogTG9nQ29uZmlnID0gREVGQVVMVF9MT0dfQ09ORklHKTogTW9kdWxlV2l0aFByb3ZpZGVyczxMb2dNb2R1bGU+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5nTW9kdWxlOiBMb2dNb2R1bGUsXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IExPR19NT0RVTEVfQ09ORklHX1RPS0VOLCB1c2VWYWx1ZTogY29uZmlnIH0sXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBMb2dTZXJ2aWNlLCB1c2VGYWN0b3J5OiBsb2dTZXJ2aWNlRmFjdG9yeSwgZGVwczogW0xPR19NT0RVTEVfQ09ORklHX1RPS0VOLCBJbmplY3Rvcl0gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgfVxufVxuIl19
|
|
@@ -33,10 +33,10 @@ export class LogService extends Logger {
|
|
|
33
33
|
}
|
|
34
34
|
return logger;
|
|
35
35
|
}
|
|
36
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
37
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
36
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: LogService, deps: [{ token: BASE_LOGGER_NAME_TOKEN }, { token: LOG_LEVEL_TOKEN }, { token: LOG_APPENDERS_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
37
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: LogService }); }
|
|
38
38
|
}
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: LogService, decorators: [{
|
|
40
40
|
type: Injectable
|
|
41
41
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
42
42
|
type: Inject,
|
|
@@ -48,4 +48,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ng
|
|
|
48
48
|
type: Inject,
|
|
49
49
|
args: [LOG_APPENDERS_TOKEN]
|
|
50
50
|
}] }] });
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2xvZy9sb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFlLE1BQU0sRUFBWSxNQUFNLFdBQVcsQ0FBQzs7O0FBRTFELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksY0FBYyxDQUFTLGtCQUFrQixDQUFDLENBQUM7QUFDckYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUFXLFdBQVcsQ0FBQyxDQUFDO0FBQ3pFLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksY0FBYyxDQUFnQixlQUFlLENBQUMsQ0FBQztBQUV0Rjs7R0FFRztBQUVILE1BQU0sT0FBTyxVQUFXLFNBQVEsTUFBTTtJQUlsQyxZQUM4QyxJQUFZLEVBQ25CLEtBQWUsRUFDWCxTQUF3QjtRQUUvRCxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztRQUpZLFNBQUksR0FBSixJQUFJLENBQVE7UUFDbkIsVUFBSyxHQUFMLEtBQUssQ0FBVTtRQUNYLGNBQVMsR0FBVCxTQUFTLENBQWU7UUFObkUscUNBQXFDO1FBQzNCLFlBQU8sR0FBRyxFQUFFLENBQUM7SUFRdkIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFNBQVMsQ0FBQyxVQUFrQixFQUFFLE9BQU8sR0FBRyxLQUFLO1FBQ3pDLGtDQUFrQztRQUNsQyxNQUFNLE1BQU0sR0FBRyxDQUFDLE9BQU8sSUFBWSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRW5ILHdFQUF3RTtRQUN4RSxJQUFJLE9BQU8sRUFBRTtZQUNULElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsTUFBTSxDQUFDO1NBQ3JDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztzSUE3QlEsVUFBVSxrQkFLUCxzQkFBc0IsYUFDdEIsZUFBZSxhQUNmLG1CQUFtQjswSUFQdEIsVUFBVTs7Z0dBQVYsVUFBVTtrQkFEdEIsVUFBVTs7MEJBTUYsTUFBTTsyQkFBQyxzQkFBc0I7OzBCQUM3QixNQUFNOzJCQUFDLGVBQWU7OzBCQUN0QixNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvZ0FwcGVuZGVyLCBMb2dnZXIsIExvZ0xldmVsIH0gZnJvbSAnQGV1aS9iYXNlJztcblxuZXhwb3J0IGNvbnN0IEJBU0VfTE9HR0VSX05BTUVfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignQkFTRV9MT0dHRVJfTkFNRScpO1xuZXhwb3J0IGNvbnN0IExPR19MRVZFTF9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxMb2dMZXZlbD4oJ0xPR19MRVZFTCcpO1xuZXhwb3J0IGNvbnN0IExPR19BUFBFTkRFUlNfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48TG9nQXBwZW5kZXJbXT4oJ0xPR19BUFBFTkRFUlMnKTtcblxuLyoqXG4gKiBMb2cgc2VydmljZSwgcmVzcG9uc2libGUgZm9yIGdldHRpbmcgb3IgY3JlYXRpbmcgbG9nZ2Vycy4gSXQgaXRzZWxmIGFjdHMgYXMgYSBiYXNlIGxvZ2dlclxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTG9nU2VydmljZSBleHRlbmRzIExvZ2dlciB7XG4gICAgLyoqIHRoZSBsaXN0IG9mIHBlcnNpc3RlbnQgbG9nZ2VycyAqL1xuICAgIHByb3RlY3RlZCBsb2dnZXJzID0ge307XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChCQVNFX0xPR0dFUl9OQU1FX1RPS0VOKSBwcm90ZWN0ZWQgbmFtZTogc3RyaW5nLFxuICAgICAgICBASW5qZWN0KExPR19MRVZFTF9UT0tFTikgcHJvdGVjdGVkIGxldmVsOiBMb2dMZXZlbCxcbiAgICAgICAgQEluamVjdChMT0dfQVBQRU5ERVJTX1RPS0VOKSBwcm90ZWN0ZWQgYXBwZW5kZXJzOiBMb2dBcHBlbmRlcltdLFxuICAgICkge1xuICAgICAgICBzdXBlcihuYW1lLCBsZXZlbCwgYXBwZW5kZXJzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgbG9nZ2VyIGJ5IG5hbWUuIElmIHRoZSBsb2dnZXIgZG9lcyBub3QgZXhpc3QsIGl0IGlzIGNyZWF0ZWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBsb2dnZXJOYW1lIGxvZ2dlciBuYW1lXG4gICAgICogQHBhcmFtIHBlcnNpc3Qgb3B0aW9uYWwgcGFyYW1ldGVyLiBTZXQgaXQgdG8gdHJ1ZSBpZiB5b3Ugd2FudCB0byByZXVzZSB0aGUgbG9nZ2VyLiBCeSBkZWZhdWx0LCBpdCBpcyBzZXQgdG8gZmFsc2VcbiAgICAgKiBAcmV0dXJucyB0aGUgbG9nZ2VyXG4gICAgICovXG4gICAgZ2V0TG9nZ2VyKGxvZ2dlck5hbWU6IHN0cmluZywgcGVyc2lzdCA9IGZhbHNlKTogTG9nZ2VyIHtcbiAgICAgICAgLy8gY3JlYXRlIHRoZSBsb2dnZXIsIGlmIG5lY2Vzc2FyeVxuICAgICAgICBjb25zdCBsb2dnZXIgPSAocGVyc2lzdCAmJiA8TG9nZ2VyPnRoaXMubG9nZ2Vyc1tsb2dnZXJOYW1lXSkgfHwgbmV3IExvZ2dlcihsb2dnZXJOYW1lLCB0aGlzLmxldmVsLCB0aGlzLmFwcGVuZGVycyk7XG5cbiAgICAgICAgLy8gaWYgdGhlIGxvZ2dlciBpcyBwZXJzaXN0ZW50LCBhZGQgaXQgdG8gdGhlIGxpc3Qgb2YgcGVyc2lzdGVudCBsb2dnZXJzXG4gICAgICAgIGlmIChwZXJzaXN0KSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlcnNbbG9nZ2VyTmFtZV0gPSBsb2dnZXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbG9nZ2VyO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -4,4 +4,4 @@ export class LogServiceMock extends LoggerMock {
|
|
|
4
4
|
return new LoggerMock();
|
|
5
5
|
}
|
|
6
6
|
}
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLnNlcnZpY2UubW9jay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvbG9nL2xvZy5zZXJ2aWNlLm1vY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV2QyxNQUFNLE9BQU8sY0FBZSxTQUFRLFVBQVU7SUFDMUMsU0FBUztRQUNMLE9BQU8sSUFBSSxVQUFVLEVBQUUsQ0FBQztJQUM1QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dnZXJNb2NrIH0gZnJvbSAnQGV1aS9iYXNlJztcblxuZXhwb3J0IGNsYXNzIExvZ1NlcnZpY2VNb2NrIGV4dGVuZHMgTG9nZ2VyTW9jayB7XG4gICAgZ2V0TG9nZ2VyKCk6IExvZ2dlck1vY2sge1xuICAgICAgICByZXR1cm4gbmV3IExvZ2dlck1vY2soKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -92,14 +92,14 @@ export class EuiPermissionService extends EuiService {
|
|
|
92
92
|
*/
|
|
93
93
|
haveAllRights(rights) {
|
|
94
94
|
if (!isDefined(rights)) {
|
|
95
|
-
throw Error(
|
|
95
|
+
throw Error('The rights should be an array but instead it\'s not defined!');
|
|
96
96
|
}
|
|
97
97
|
return rights.every((right) => this.userRights.find((uRight) => uRight.id === right.id));
|
|
98
98
|
}
|
|
99
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
100
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
99
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: EuiPermissionService, deps: [{ token: i1.LogService, optional: true }, { token: i2.StoreService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
100
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: EuiPermissionService, providedIn: 'root' }); }
|
|
101
101
|
}
|
|
102
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
102
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: EuiPermissionService, decorators: [{
|
|
103
103
|
type: Injectable,
|
|
104
104
|
args: [{
|
|
105
105
|
providedIn: 'root',
|
|
@@ -107,4 +107,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ng
|
|
|
107
107
|
}], ctorParameters: () => [{ type: i1.LogService, decorators: [{
|
|
108
108
|
type: Optional
|
|
109
109
|
}] }, { type: i2.StoreService }] });
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9wZXJtaXNzaW9uL3Blcm1pc3Npb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFvQixhQUFhLEVBQXdCLE1BQU0sV0FBVyxDQUFDO0FBQzlGLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHdEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQUsxQyxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsVUFBMEI7SUFHaEUsWUFDd0IsR0FBZSxFQUN6QixLQUFtQjtRQUU3QixLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFIVSxRQUFHLEdBQUgsR0FBRyxDQUFZO1FBQ3pCLFVBQUssR0FBTCxLQUFLLENBQWM7UUFHN0IsSUFBSSxHQUFHLEVBQUU7WUFDTCxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQUMsQ0FBQztTQUN6RDtJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLENBQUMsTUFBc0I7UUFDdkIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3pCLE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7U0FDaEM7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDYixJQUFJLENBQUMsTUFB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b3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEV1aVNlcnZpY2UsIEV1aVNlcnZpY2VTdGF0dXMsIGdldFVzZXJSaWdodHMsIEV1aVVzZXJSaWdodCwgTG9nZ2VyIH0gZnJvbSAnQGV1aS9iYXNlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMb2dTZXJ2aWNlIH0gZnJvbSAnLi4vbG9nL2xvZy5zZXJ2aWNlJztcbmltcG9ydCB7IFN0b3JlU2VydmljZSB9IGZyb20gJy4uL3N0b3JlL3N0b3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXBkYXRlVXNlclJpZ2h0c0FjdGlvbiB9IGZyb20gJy4uL3N0b3JlL2FjdGlvbnMvdXNlci5hY3Rpb25zJztcbmltcG9ydCB7IGlzRGVmaW5lZCB9IGZyb20gJy4uLy4uL2hlbHBlcnMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBFdWlQZXJtaXNzaW9uU2VydmljZSBleHRlbmRzIEV1aVNlcnZpY2U8RXVpVXNlclJpZ2h0W10+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogTG9nZ2VyO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgbG9nOiBMb2dTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgc3RvcmU6IFN0b3JlU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoW10pO1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlciA9IGxvZy5nZXRMb2dnZXIoJ2NvcmUuUGVybWlzc2lvblNlcnZpY2UnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGluaXRpYWxpemUgdGhlIHNlcnZpY2UgYnkgcHJvdmlkaW5nIGEgc3RhdGVcbiAgICAgKiBAcGFyYW0gcmlnaHRzXG4gICAgICovXG4gICAgaW5pdChyaWdodHM6IEV1aVVzZXJSaWdodFtdKTogT2JzZXJ2YWJsZTxFdWlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgICAgIHN1cGVyLmluaXRFdWlTZXJ2aWNlKCk7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJpZ2h0cykpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUocmlnaHRzKTtcbiAgICAgICAgICAgIHJldHVybiBvZih7IHN1Y2Nlc3M6IHRydWUgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5sb2dnZXIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdJbml0IG9iamVjdCBzaG91bGQgYmUgaW5zdGFuY2Ugb2YgQmFzZVVzZXJTdGF0ZScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZih7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcjogJ0luaXQgb2JqZWN0IHNob3VsZCBiZSBpbnN0YW5jZSBvZiBCYXNlVXNlclN0YXRlJyB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IHVzZXJSaWdodHMoKTogRXVpVXNlclJpZ2h0W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZUluc3RhbmNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdldCB0aGUgdXNlcidzIFJpZ2h0cyBmcm9tIHRoZSBzdGF0ZVxuICAgICAqL1xuICAgIGdldFN0YXRlPEsgPSBFdWlVc2VyUmlnaHRbXT4oKTogT2JzZXJ2YWJsZTxLPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChnZXRVc2VyUmlnaHRzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB1cGRhdGUgdGhlIHN0YXRlIHdpdGggdGhlIGdpdmVuIHVzZXIncyByaWdodHNcbiAgICAgKiBAcGFyYW0gcmlnaHRzXG4gICAgICovXG4gICAgdXBkYXRlU3RhdGUocmlnaHRzOiBFdWlVc2VyUmlnaHRbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBVcGRhdGVVc2VyUmlnaHRzQWN0aW9uKHJpZ2h0cyB8fCBbXSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGFjY2VwdHMgYSBzdHJpbmcgb2YgcmlnaHQgYW5kIG9yIGEgcGVybWlzc2lvbi4gSW4gc3RyaW5nIGZpcnN0IGNvbWVzIHRoZSByaWdodCBhbmQgb3IgZm9sbG93ZWQgYnkgcGVybWlzc2lvbiBpblxuICAgICAqIGEgZG90IHNlcGFyYXRlZCB3YXkgZS5nLiAnUklHSFQuUEVSTUlTU0lPTicgb3IgJ1JJR0hUJy4gVGhlIHN0cmluZyBjYW4gY29udGFpbiBtb3JlIHRoYXQgMiBzZXBhcmF0ZWQgZmllbGRzLlxuICAgICAqIEluIHRoYXQgY2FzZSB0aGUgbGFzdCBmaWVsZCBzaG91bGQgYmUgdGhlIHBlcm1pc3Npb24gYW5kIGFsbCB0aGUgb3RoZXJzIGEgUmlnaHQuIGUuZy4gJ1JJR0hUMS5SSUdIVDIuUEVSTUlTU0lPTidcbiAgICAgKiBUaGUgbGFzdCBwYXJ0IGlzIHVzZWZ1bCB3aGVyZSB5b3Ugd2FudCBhIHVzZXIgdG8gaGF2ZSBtdWx0aXBsZSByaWdodHMgYW5kIHRoZSBwZXJtaXNzaW9uIG9mIHRoZSBsYXN0IHJpZ2h0LlxuICAgICAqIEBwYXJhbSByaWdodHNBbmRQZXJtaXNzaW9uXG4gICAgICovXG4gICAgY2hlY2tBdHRyaWJ1dGVQZXJtaXNzaW9uKHJpZ2h0c0FuZFBlcm1pc3Npb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBwZXJtUHJvcHMgPSByaWdodHNBbmRQZXJtaXNzaW9uLnNwbGl0KCcuJyk7XG4gICAgICAgIGNvbnN0IHJpZ2h0SWQgPSBwZXJtUHJvcHNbMF07XG4gICAgICAgIGNvbnN0IGhhc1JpZ2h0ID0gdGhpcy5jaGVja1JpZ2h0KHJpZ2h0SWQpO1xuXG4gICAgICAgIGlmIChoYXNSaWdodCkge1xuICAgICAgICAgICAgaWYgKHBlcm1Qcm9wcy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICAvLyBpbiBjYXNlIG9mICdSSUdIVC5QRVJNSVNTSU9OJ1xuICAgICAgICAgICAgICAgIGNvbnN0IHBlcm1pc3Npb24gPSBwZXJtUHJvcHNbMV07XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tQZXJtaXNzaW9uKHJpZ2h0SWQsIHBlcm1pc3Npb24pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwZXJtUHJvcHMubGVuZ3RoID4gMikge1xuICAgICAgICAgICAgICAgIC8vIGluIGNhc2Ugb2YgJ1JJR0hUMS5SSUdIVDIuLi4uLlBFUk1JU1NJT04nIHN0cmluZyBjYWxsIHJlY3Vyc2l2ZWx5XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tBdHRyaWJ1dGVQZXJtaXNzaW9uKHJpZ2h0c0FuZFBlcm1pc3Npb24uc2xpY2UocmlnaHRJZC5sZW5ndGggKyAxKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaGFzUmlnaHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY2hlY2sgaWYgYSB1c2VyIGhhcyB0aGUgcmlnaHQuXG4gICAgICogQHBhcmFtIHJpZ2h0SWQgdGhlIGlkIG9mIFJpZ2h0XG4gICAgICovXG4gICAgY2hlY2tSaWdodChyaWdodElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXNlclJpZ2h0cy5zb21lKChyaWdodCkgPT4gcmlnaHQgJiYgcmlnaHQuaWQgPT09IHJpZ2h0SWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNoZWNrIGlmIGEgdXNlciBoYXMgdGhhdCByaWdodCBhbmQgdGhhdCByaWdodCBoYXMgdGhlIHBlcm1pc3Npb24gZ2l2ZW4uXG4gICAgICogQHBhcmFtIHJpZ2h0SWQgdGhlIHJpZ2h0IG9mIHRoZSB1c2VyXG4gICAgICogQHBhcmFtIHBlcm1pc3Npb24gdGhlIHBlcm1pc3Npb24gb2YgdGhlIHJpZ2h0XG4gICAgICovXG4gICAgY2hlY2tQZXJtaXNzaW9uKHJpZ2h0SWQ6IHN0cmluZywgcGVybWlzc2lvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIC8vIHRoZSB1c2VyIGhhcyB0byBoYXZlIHRoYXQgcmlnaHQgYW5kIHRoYXQgcmlnaHQgaGFzIHRvIGhhdmUgdGhlIGdpdmVuIHBlcm1pc3Npb25cbiAgICAgICAgcmV0dXJuIHRoaXMudXNlclJpZ2h0cy5zb21lKFxuICAgICAgICAgICAgKHJpZ2h0KSA9PiByaWdodCAmJiByaWdodC5pZCA9PT0gcmlnaHRJZCAmJiByaWdodC5wZXJtaXNzaW9ucyAmJiByaWdodC5wZXJtaXNzaW9ucy5pbmNsdWRlcyhwZXJtaXNzaW9uKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjaGVja3Mgd2hldGhlciBhIHVzZXIgaGF2ZSBhbGwgcmlnaHRzIHBhc3NlZCBhcyBhbiBhcmd1bWVudFxuICAgICAqIEBwYXJhbSByaWdodHMgYW4gYXJyYXkgb2YgRXVpVXNlclJpZ2h0XG4gICAgICovXG4gICAgcHJpdmF0ZSBoYXZlQWxsUmlnaHRzKHJpZ2h0czogRXVpVXNlclJpZ2h0W10pOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCFpc0RlZmluZWQocmlnaHRzKSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1RoZSByaWdodHMgc2hvdWxkIGJlIGFuIGFycmF5IGJ1dCBpbnN0ZWFkIGl0XFwncyBub3QgZGVmaW5lZCEnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByaWdodHMuZXZlcnkoKHJpZ2h0OiBFdWlVc2VyUmlnaHQpID0+IHRoaXMudXNlclJpZ2h0cy5maW5kKCh1UmlnaHQ6IEV1aVVzZXJSaWdodCkgPT4gdVJpZ2h0LmlkID09PSByaWdodC5pZCkpO1xuICAgIH1cbn1cbiJdfQ==
|