UNPKG

@linid-dm/directory-manager-client-core

Version:

Core package by providing a set of angular components for the Directory Manager app.

172 lines 22.4 kB
import { __decorate } from "tslib"; /** * Copyright (C) 2020-2024 Linagora * * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU Affero General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version, provided you comply with the Additional Terms applicable for * LinID Directory Manager software by LINAGORA pursuant to Section 7 of the GNU * Affero General Public License, subsections (b), (c), and (e), pursuant to * which these Appropriate Legal Notices must notably (i) retain the display of * the "LinID™" trademark/logo at the top of the interface window, the display * of the “You are using the Open Source and free version of LinID™, powered by * Linagora © 2009–2013. Contribute to LinID R&D by subscribing to an Enterprise * offer!” infobox and in the e-mails sent with the Program, notice appended to * any type of outbound messages (e.g. e-mail and meeting requests) as well as * in the LinID Directory Manager user interface, (ii) retain all hypertext * links between LinID Directory Manager and https://linid.org/, as well as * between LINAGORA and LINAGORA.com, and (iii) refrain from infringing LINAGORA * intellectual property rights over its trademarks and commercial brands. Other * Additional Terms apply, see <http://www.linagora.com/licenses/> for more * details. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more * details. * * You should have received a copy of the GNU Affero General Public License and * its applicable Additional Terms for LinID Directory Manager along with this * program. If not, see <http://www.gnu.org/licenses/> for the GNU Affero * General Public License version 3 and <http://www.linagora.com/licenses/> for * the Additional Terms applicable to the LinID Directory Manager software. */ import { Injectable } from '@angular/core'; import { Action, Selector, State } from '@ngxs/store'; import { tap } from 'rxjs'; import { emptyJsTable, mergeInto, toJsTable, } from '../../helpers/jstable.helper'; import * as Error from '../error/error.actions'; import * as ExternalLinks from '../external-links/external-links.actions'; import * as Header from '../header/header.actions'; import * as Home from '../home/home.actions'; import * as LogoutDialog from '../logout-dialog/logout-dialog.actions'; import * as Ui from '../ui/ui.actions'; import * as User from '../user/user.actions'; import * as Configs from './configs.actions'; import * as i0 from "@angular/core"; import * as i1 from "../../services/configs.service"; import * as i2 from "@ngxs/store"; export function initConfigStateDefaultValues() { return { ...emptyJsTable(), isFetchingConfigs: false, isFetchingConfigsError: false, isFetchingConfigsSuccess: false, }; } let ConfigsState = class ConfigsState { constructor(_configService, _store$) { this._configService = _configService; this._store$ = _store$; } static isFetchingConfigs(state) { return state.isFetchingConfigs; } static isFetchingConfigsSuccess(state) { return state.isFetchingConfigsSuccess; } static isFetchingConfigsError(state) { return state.isFetchingConfigsError; } static getConfigsById(state) { return state.byId; } static getConfigsAllIds(state) { return state.allIds; } static getConfigsJsTable(state) { return { byId: state.byId, allIds: state.allIds, }; } fetchConfigs(ctx) { ctx.setState({ ...ctx.getState(), isFetchingConfigs: true, isFetchingConfigsSuccess: false, isFetchingConfigsError: false, }); return this._configService.getConfigs().pipe(tap((config) => { let actions = []; if (!!config.externalLinks) { const externalLinksConfig = config.externalLinks; delete config.externalLinks; actions.push(new ExternalLinks.SetExternalLinksConfig(externalLinksConfig)); } const currentUserConfig = config.currentUser; delete config.currentUser; const homepageConfig = config.home; delete config.home; const headerConfig = config.header; delete config.header; const logoutDialogConfig = config.logoutDialog; delete config.logoutDialog; const genericErrorMessages = config.genericErrorMessages; delete config.genericErrorMessages; const genericAccessibility = config.genericAccessibility; delete config.genericAccessibility; actions.push(new User.SetCurrentUserConfig(currentUserConfig), new Home.SetHomepageConfig(homepageConfig), new Header.SetHeaderConfig(headerConfig), new LogoutDialog.SetLogoutDialogConfig(logoutDialogConfig), new Error.SetGenericErrorMessages(genericErrorMessages), new Ui.SetGenericAccessibility(genericAccessibility), new Configs.FetchConfigsSuccess({ configs: toJsTable(config), })); this._store$.dispatch(actions); })); } fetchConfigsSuccess(ctx, action) { ctx.setState({ ...ctx.getState(), ...mergeInto({ ...ctx.getState() }, action.payload.configs), isFetchingConfigs: false, isFetchingConfigsSuccess: true, }); } fetchConfigsError(ctx) { ctx.setState({ ...ctx.getState(), ...emptyJsTable(), isFetchingConfigs: false, isFetchingConfigsError: true, }); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ConfigsState, deps: [{ token: i1.ConfigsService }, { token: i2.Store }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ConfigsState }); } }; __decorate([ Action(Configs.FetchConfigs) ], ConfigsState.prototype, "fetchConfigs", null); __decorate([ Action(Configs.FetchConfigsSuccess) ], ConfigsState.prototype, "fetchConfigsSuccess", null); __decorate([ Action(Configs.FetchConfigsError) ], ConfigsState.prototype, "fetchConfigsError", null); __decorate([ Selector() ], ConfigsState, "isFetchingConfigs", null); __decorate([ Selector() ], ConfigsState, "isFetchingConfigsSuccess", null); __decorate([ Selector() ], ConfigsState, "isFetchingConfigsError", null); __decorate([ Selector() ], ConfigsState, "getConfigsById", null); __decorate([ Selector() ], ConfigsState, "getConfigsAllIds", null); __decorate([ Selector() ], ConfigsState, "getConfigsJsTable", null); ConfigsState = __decorate([ State({ name: 'configs', defaults: initConfigStateDefaultValues(), }) ], ConfigsState); export { ConfigsState }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ConfigsState, decorators: [{ type: Injectable }], ctorParameters: () => [{ type: i1.ConfigsService }, { type: i2.Store }], propDecorators: { fetchConfigs: [], fetchConfigsSuccess: [], fetchConfigsError: [] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlncy5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2xpYnMvY2xpZW50LWNvcmUvc3JjL2xpYi9zaGFyZWQvc3RhdGVzL2NvbmZpZ3MvY29uZmlncy5zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0NHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXVCLE1BQU0sYUFBYSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0IsT0FBTyxFQUVMLFlBQVksRUFDWixTQUFTLEVBQ1QsU0FBUyxHQUNWLE1BQU0sOEJBQThCLENBQUM7QUFhdEMsT0FBTyxLQUFLLEtBQUssTUFBTSx3QkFBd0IsQ0FBQztBQUNoRCxPQUFPLEtBQUssYUFBYSxNQUFNLDBDQUEwQyxDQUFDO0FBQzFFLE9BQU8sS0FBSyxNQUFNLE1BQU0sMEJBQTBCLENBQUM7QUFDbkQsT0FBTyxLQUFLLElBQUksTUFBTSxzQkFBc0IsQ0FBQztBQUM3QyxPQUFPLEtBQUssWUFBWSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkMsT0FBTyxLQUFLLElBQUksTUFBTSxzQkFBc0IsQ0FBQztBQUM3QyxPQUFPLEtBQUssT0FBTyxNQUFNLG1CQUFtQixDQUFDOzs7O0FBUTdDLE1BQU0sVUFBVSw0QkFBNEI7SUFDMUMsT0FBTztRQUNMLEdBQUcsWUFBWSxFQUFXO1FBQzFCLGlCQUFpQixFQUFFLEtBQUs7UUFDeEIsc0JBQXNCLEVBQUUsS0FBSztRQUM3Qix3QkFBd0IsRUFBRSxLQUFLO0tBQ2hDLENBQUM7QUFDSixDQUFDO0FBT00sSUFB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O2tEQUdWO0FBR007SUFETixRQUFRLEVBQUU7Z0RBR1Y7QUFHTTtJQUROLFFBQVEsRUFBRTt3Q0FLVjtBQUdNO0lBRE4sUUFBUSxFQUFFOzBDQUdWO0FBR007SUFETixRQUFRLEVBQUU7MkNBTVY7QUF0Q1UsWUFBWTtJQUx4QixLQUFLLENBQW9CO1FBQ3hCLElBQUksRUFBRSxTQUFTO1FBQ2YsUUFBUSxFQUFFLDRCQUE0QixFQUFFO0tBQ3pDLENBQUM7R0FFVyxZQUFZLENBK0d4Qjs7MkZBL0dZLFlBQVk7a0JBRHhCLFVBQVU7dUdBMENULFlBQVksTUFpRFosbUJBQW1CLE1BYW5CLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjQgTGluYWdvcmFcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlclxuICogdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlXG4gKiBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueVxuICogbGF0ZXIgdmVyc2lvbiwgcHJvdmlkZWQgeW91IGNvbXBseSB3aXRoIHRoZSBBZGRpdGlvbmFsIFRlcm1zIGFwcGxpY2FibGUgZm9yXG4gKiBMaW5JRCBEaXJlY3RvcnkgTWFuYWdlciBzb2Z0d2FyZSBieSBMSU5BR09SQSBwdXJzdWFudCB0byBTZWN0aW9uIDcgb2YgdGhlIEdOVVxuICogQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHN1YnNlY3Rpb25zIChiKSwgKGMpLCBhbmQgKGUpLCBwdXJzdWFudCB0b1xuICogd2hpY2ggdGhlc2UgQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlcyBtdXN0IG5vdGFibHkgKGkpIHJldGFpbiB0aGUgZGlzcGxheSBvZlxuICogdGhlIFwiTGluSUTihKJcIiB0cmFkZW1hcmsvbG9nbyBhdCB0aGUgdG9wIG9mIHRoZSBpbnRlcmZhY2Ugd2luZG93LCB0aGUgZGlzcGxheVxuICogb2YgdGhlIOKAnFlvdSBhcmUgdXNpbmcgdGhlIE9wZW4gU291cmNlIGFuZCBmcmVlIHZlcnNpb24gb2YgTGluSUTihKIsIHBvd2VyZWQgYnlcbiAqIExpbmFnb3JhIMKpIDIwMDnigJMyMDEzLiBDb250cmlidXRlIHRvIExpbklEIFImRCBieSBzdWJzY3JpYmluZyB0byBhbiBFbnRlcnByaXNlXG4gKiBvZmZlciHigJ0gaW5mb2JveCBhbmQgaW4gdGhlIGUtbWFpbHMgc2VudCB3aXRoIHRoZSBQcm9ncmFtLCBub3RpY2UgYXBwZW5kZWQgdG9cbiAqIGFueSB0eXBlIG9mIG91dGJvdW5kIG1lc3NhZ2VzIChlLmcuIGUtbWFpbCBhbmQgbWVldGluZyByZXF1ZXN0cykgYXMgd2VsbCBhc1xuICogaW4gdGhlIExpbklEIERpcmVjdG9yeSBNYW5hZ2VyIHVzZXIgaW50ZXJmYWNlLCAoaWkpIHJldGFpbiBhbGwgaHlwZXJ0ZXh0XG4gKiBsaW5rcyBiZXR3ZWVuIExpbklEIERpcmVjdG9yeSBNYW5hZ2VyIGFuZCBodHRwczovL2xpbmlkLm9yZy8sIGFzIHdlbGwgYXNcbiAqIGJldHdlZW4gTElOQUdPUkEgYW5kIExJTkFHT1JBLmNvbSwgYW5kIChpaWkpIHJlZnJhaW4gZnJvbSBpbmZyaW5naW5nIExJTkFHT1JBXG4gKiBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIG92ZXIgaXRzIHRyYWRlbWFya3MgYW5kIGNvbW1lcmNpYWwgYnJhbmRzLiBPdGhlclxuICogQWRkaXRpb25hbCBUZXJtcyBhcHBseSwgc2VlIDxodHRwOi8vd3d3LmxpbmFnb3JhLmNvbS9saWNlbnNlcy8+IGZvciBtb3JlXG4gKiBkZXRhaWxzLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1NcbiAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmVcbiAqIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFuZFxuICogaXRzIGFwcGxpY2FibGUgQWRkaXRpb25hbCBUZXJtcyBmb3IgTGluSUQgRGlyZWN0b3J5IE1hbmFnZXIgYWxvbmcgd2l0aCB0aGlzXG4gKiBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4gZm9yIHRoZSBHTlUgQWZmZXJvXG4gKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhbmQgPGh0dHA6Ly93d3cubGluYWdvcmEuY29tL2xpY2Vuc2VzLz4gZm9yXG4gKiB0aGUgQWRkaXRpb25hbCBUZXJtcyBhcHBsaWNhYmxlIHRvIHRoZSBMaW5JRCBEaXJlY3RvcnkgTWFuYWdlciBzb2Z0d2FyZS5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb24sIFNlbGVjdG9yLCBTdGF0ZSwgU3RhdGVDb250ZXh0LCBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgSnNUYWJsZSxcbiAgZW1wdHlKc1RhYmxlLFxuICBtZXJnZUludG8sXG4gIHRvSnNUYWJsZSxcbn0gZnJvbSAnLi4vLi4vaGVscGVycy9qc3RhYmxlLmhlbHBlcic7XG5pbXBvcnQge1xuICBJQ29uZmlnLFxuICBJQ29uZmlncyxcbiAgSUN1cnJlbnRVc2VyQ29uZmlnLFxuICBJRXh0ZXJuYWxMaW5rc0NvbmZpZyxcbiAgSUdlbmVyaWNBY2Nlc3NpYmlsaXR5Q29uZmlnLFxuICBJR2VuZXJpY0Vycm9yTWVzc2FnZXNDb25maWcsXG4gIElIZWFkZXJDb25maWcsXG4gIElIb21lcGFnZUNvbmZpZyxcbiAgSUxvZ291dERpYWxvZ0NvbmZpZyxcbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jb25maWdzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb25maWdzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbmZpZ3Muc2VydmljZSc7XG5pbXBvcnQgKiBhcyBFcnJvciBmcm9tICcuLi9lcnJvci9lcnJvci5hY3Rpb25zJztcbmltcG9ydCAqIGFzIEV4dGVybmFsTGlua3MgZnJvbSAnLi4vZXh0ZXJuYWwtbGlua3MvZXh0ZXJuYWwtbGlua3MuYWN0aW9ucyc7XG5pbXBvcnQgKiBhcyBIZWFkZXIgZnJvbSAnLi4vaGVhZGVyL2hlYWRlci5hY3Rpb25zJztcbmltcG9ydCAqIGFzIEhvbWUgZnJvbSAnLi4vaG9tZS9ob21lLmFjdGlvbnMnO1xuaW1wb3J0ICogYXMgTG9nb3V0RGlhbG9nIGZyb20gJy4uL2xvZ291dC1kaWFsb2cvbG9nb3V0LWRpYWxvZy5hY3Rpb25zJztcbmltcG9ydCAqIGFzIFVpIGZyb20gJy4uL3VpL3VpLmFjdGlvbnMnO1xuaW1wb3J0ICogYXMgVXNlciBmcm9tICcuLi91c2VyL3VzZXIuYWN0aW9ucyc7XG5pbXBvcnQgKiBhcyBDb25maWdzIGZyb20gJy4vY29uZmlncy5hY3Rpb25zJztcblxuZXhwb3J0IGludGVyZmFjZSBDb25maWdzU3RhdGVNb2RlbCBleHRlbmRzIEpzVGFibGU8SUNvbmZpZz4ge1xuICBpc0ZldGNoaW5nQ29uZmlnczogYm9vbGVhbjtcbiAgaXNGZXRjaGluZ0NvbmZpZ3NFcnJvcjogYm9vbGVhbjtcbiAgaXNGZXRjaGluZ0NvbmZpZ3NTdWNjZXNzOiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdENvbmZpZ1N0YXRlRGVmYXVsdFZhbHVlcygpOiBDb25maWdzU3RhdGVNb2RlbCB7XG4gIHJldHVybiB7XG4gICAgLi4uZW1wdHlKc1RhYmxlPElDb25maWc+KCksXG4gICAgaXNGZXRjaGluZ0NvbmZpZ3M6IGZhbHNlLFxuICAgIGlzRmV0Y2hpbmdDb25maWdzRXJyb3I6IGZhbHNlLFxuICAgIGlzRmV0Y2hpbmdDb25maWdzU3VjY2VzczogZmFsc2UsXG4gIH07XG59XG5cbkBTdGF0ZTxDb25maWdzU3RhdGVNb2RlbD4oe1xuICBuYW1lOiAnY29uZmlncycsXG4gIGRlZmF1bHRzOiBpbml0Q29uZmlnU3RhdGVEZWZhdWx0VmFsdWVzKCksXG59KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbmZpZ3NTdGF0ZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2NvbmZpZ1NlcnZpY2U6IENvbmZpZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3N0b3JlJDogU3RvcmVcbiAgKSB7fVxuICBAU2VsZWN0b3IoKVxuICBzdGF0aWMgaXNGZXRjaGluZ0NvbmZpZ3Moc3RhdGU6IENvbmZpZ3NTdGF0ZU1vZGVsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0YXRlLmlzRmV0Y2hpbmdDb25maWdzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIGlzRmV0Y2hpbmdDb25maWdzU3VjY2VzcyhzdGF0ZTogQ29uZmlnc1N0YXRlTW9kZWwpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3RhdGUuaXNGZXRjaGluZ0NvbmZpZ3NTdWNjZXNzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIGlzRmV0Y2hpbmdDb25maWdzRXJyb3Ioc3RhdGU6IENvbmZpZ3NTdGF0ZU1vZGVsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0YXRlLmlzRmV0Y2hpbmdDb25maWdzRXJyb3I7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBzdGF0aWMgZ2V0Q29uZmlnc0J5SWQoc3RhdGU6IENvbmZpZ3NTdGF0ZU1vZGVsKToge1xuICAgIHJlYWRvbmx5IFtpZDogc3RyaW5nXTogSUNvbmZpZztcbiAgfSB7XG4gICAgcmV0dXJuIHN0YXRlLmJ5SWQ7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBzdGF0aWMgZ2V0Q29uZmlnc0FsbElkcyhzdGF0ZTogQ29uZmlnc1N0YXRlTW9kZWwpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHN0YXRlLmFsbElkcztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyBnZXRDb25maWdzSnNUYWJsZShzdGF0ZTogQ29uZmlnc1N0YXRlTW9kZWwpOiBKc1RhYmxlPElDb25maWc+IHtcbiAgICByZXR1cm4ge1xuICAgICAgYnlJZDogc3RhdGUuYnlJZCxcbiAgICAgIGFsbElkczogc3RhdGUuYWxsSWRzLFxuICAgIH07XG4gIH1cblxuICBAQWN0aW9uKENvbmZpZ3MuRmV0Y2hDb25maWdzKVxuICBmZXRjaENvbmZpZ3MoY3R4OiBTdGF0ZUNvbnRleHQ8Q29uZmlnc1N0YXRlTW9kZWw+KTogYW55IHtcbiAgICBjdHguc2V0U3RhdGUoe1xuICAgICAgLi4uY3R4LmdldFN0YXRlKCksXG4gICAgICBpc0ZldGNoaW5nQ29uZmlnczogdHJ1ZSxcbiAgICAgIGlzRmV0Y2hpbmdDb25maWdzU3VjY2VzczogZmFsc2UsXG4gICAgICBpc0ZldGNoaW5nQ29uZmlnc0Vycm9yOiBmYWxzZSxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnU2VydmljZS5nZXRDb25maWdzKCkucGlwZShcbiAgICAgIHRhcCgoY29uZmlnOiBJQ29uZmlncykgPT4ge1xuICAgICAgICBsZXQgYWN0aW9uczogYW55W10gPSBbXTtcbiAgICAgICAgaWYgKCEhY29uZmlnLmV4dGVybmFsTGlua3MpIHtcbiAgICAgICAgICBjb25zdCBleHRlcm5hbExpbmtzQ29uZmlnOiBJRXh0ZXJuYWxMaW5rc0NvbmZpZyA9XG4gICAgICAgICAgICBjb25maWcuZXh0ZXJuYWxMaW5rcztcbiAgICAgICAgICBkZWxldGUgY29uZmlnLmV4dGVybmFsTGlua3M7XG4gICAgICAgICAgYWN0aW9ucy5wdXNoKFxuICAgICAgICAgICAgbmV3IEV4dGVybmFsTGlua3MuU2V0RXh0ZXJuYWxMaW5rc0NvbmZpZyhleHRlcm5hbExpbmtzQ29uZmlnKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VycmVudFVzZXJDb25maWc6IElDdXJyZW50VXNlckNvbmZpZyA9IGNvbmZpZy5jdXJyZW50VXNlcjtcbiAgICAgICAgZGVsZXRlIGNvbmZpZy5jdXJyZW50VXNlcjtcbiAgICAgICAgY29uc3QgaG9tZXBhZ2VDb25maWc6IElIb21lcGFnZUNvbmZpZyA9IGNvbmZpZy5ob21lO1xuICAgICAgICBkZWxldGUgY29uZmlnLmhvbWU7XG4gICAgICAgIGNvbnN0IGhlYWRlckNvbmZpZzogSUhlYWRlckNvbmZpZyA9IGNvbmZpZy5oZWFkZXI7XG4gICAgICAgIGRlbGV0ZSBjb25maWcuaGVhZGVyO1xuICAgICAgICBjb25zdCBsb2dvdXREaWFsb2dDb25maWc6IElMb2dvdXREaWFsb2dDb25maWcgPSBjb25maWcubG9nb3V0RGlhbG9nO1xuICAgICAgICBkZWxldGUgY29uZmlnLmxvZ291dERpYWxvZztcbiAgICAgICAgY29uc3QgZ2VuZXJpY0Vycm9yTWVzc2FnZXM6IElHZW5lcmljRXJyb3JNZXNzYWdlc0NvbmZpZyA9XG4gICAgICAgICAgY29uZmlnLmdlbmVyaWNFcnJvck1lc3NhZ2VzO1xuICAgICAgICBkZWxldGUgY29uZmlnLmdlbmVyaWNFcnJvck1lc3NhZ2VzO1xuICAgICAgICBjb25zdCBnZW5lcmljQWNjZXNzaWJpbGl0eTogSUdlbmVyaWNBY2Nlc3NpYmlsaXR5Q29uZmlnID1cbiAgICAgICAgICBjb25maWcuZ2VuZXJpY0FjY2Vzc2liaWxpdHk7XG4gICAgICAgIGRlbGV0ZSBjb25maWcuZ2VuZXJpY0FjY2Vzc2liaWxpdHk7XG4gICAgICAgIGFjdGlvbnMucHVzaChcbiAgICAgICAgICBuZXcgVXNlci5TZXRDdXJyZW50VXNlckNvbmZpZyhjdXJyZW50VXNlckNvbmZpZyksXG4gICAgICAgICAgbmV3IEhvbWUuU2V0SG9tZXBhZ2VDb25maWcoaG9tZXBhZ2VDb25maWcpLFxuICAgICAgICAgIG5ldyBIZWFkZXIuU2V0SGVhZGVyQ29uZmlnKGhlYWRlckNvbmZpZyksXG4gICAgICAgICAgbmV3IExvZ291dERpYWxvZy5TZXRMb2dvdXREaWFsb2dDb25maWcobG9nb3V0RGlhbG9nQ29uZmlnKSxcbiAgICAgICAgICBuZXcgRXJyb3IuU2V0R2VuZXJpY0Vycm9yTWVzc2FnZXMoZ2VuZXJpY0Vycm9yTWVzc2FnZXMpLFxuICAgICAgICAgIG5ldyBVaS5TZXRHZW5lcmljQWNjZXNzaWJpbGl0eShnZW5lcmljQWNjZXNzaWJpbGl0eSksXG4gICAgICAgICAgbmV3IENvbmZpZ3MuRmV0Y2hDb25maWdzU3VjY2Vzcyh7XG4gICAgICAgICAgICBjb25maWdzOiB0b0pzVGFibGU8SUNvbmZpZz4oY29uZmlnIGFzIHsgW2lkOiBzdHJpbmddOiBJQ29uZmlnIH0pLFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3N0b3JlJC5kaXNwYXRjaChhY3Rpb25zKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIEBBY3Rpb24oQ29uZmlncy5GZXRjaENvbmZpZ3NTdWNjZXNzKVxuICBmZXRjaENvbmZpZ3NTdWNjZXNzKFxuICAgIGN0eDogU3RhdGVDb250ZXh0PENvbmZpZ3NTdGF0ZU1vZGVsPixcbiAgICBhY3Rpb246IENvbmZpZ3MuRmV0Y2hDb25maWdzU3VjY2Vzc1xuICApOiB2b2lkIHtcbiAgICBjdHguc2V0U3RhdGUoe1xuICAgICAgLi4uY3R4LmdldFN0YXRlKCksXG4gICAgICAuLi5tZXJnZUludG8oeyAuLi5jdHguZ2V0U3RhdGUoKSB9LCBhY3Rpb24ucGF5bG9hZC5jb25maWdzKSxcbiAgICAgIGlzRmV0Y2hpbmdDb25maWdzOiBmYWxzZSxcbiAgICAgIGlzRmV0Y2hpbmdDb25maWdzU3VjY2VzczogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oQ29uZmlncy5GZXRjaENvbmZpZ3NFcnJvcilcbiAgZmV0Y2hDb25maWdzRXJyb3IoY3R4OiBTdGF0ZUNvbnRleHQ8Q29uZmlnc1N0YXRlTW9kZWw+KTogdm9pZCB7XG4gICAgY3R4LnNldFN0YXRlKHtcbiAgICAgIC4uLmN0eC5nZXRTdGF0ZSgpLFxuICAgICAgLi4uZW1wdHlKc1RhYmxlPElDb25maWc+KCksXG4gICAgICBpc0ZldGNoaW5nQ29uZmlnczogZmFsc2UsXG4gICAgICBpc0ZldGNoaW5nQ29uZmlnc0Vycm9yOiB0cnVlLFxuICAgIH0pO1xuICB9XG59XG4iXX0=