@eo-sdk/client 8.5.0-rc.1 → 8.7.0-rc.1
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/app/eo-framework/settings/change-password/change-password-form/change-password-form.component.d.ts +4 -0
- package/assets/_default/i18n/de.json +4 -0
- package/assets/_default/i18n/en.json +4 -0
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js +19 -6
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js.map +1 -1
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js +2 -2
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js.map +1 -1
- package/bundles/eo-sdk-client.umd.js +18 -5
- package/bundles/eo-sdk-client.umd.js.map +1 -1
- package/bundles/eo-sdk-client.umd.min.js +1 -1
- package/bundles/eo-sdk-client.umd.min.js.map +1 -1
- package/eo-sdk-client.metadata.json +1 -1
- package/esm2015/app/eo-client/about-state/about-state.component.js +3 -3
- package/esm2015/app/eo-framework/inbox-details/inbox-details.component.js +9 -2
- package/esm2015/app/eo-framework/settings/change-password/change-password-form/change-password-form.component.js +9 -3
- package/esm2015/projects/eo-sdk/core/lib/model/eo-user.model.js +1 -1
- package/esm2015/projects/eo-sdk/core/lib/service/auth/auth.service.js +2 -2
- package/esm2015/projects/eo-sdk/core/lib/service/user/user.service.js +19 -6
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js +19 -6
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js.map +1 -1
- package/fesm2015/eo-sdk-client.js +18 -5
- package/fesm2015/eo-sdk-client.js.map +1 -1
- package/package.json +2 -2
- package/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.metadata.json +1 -1
- package/projects/eo-sdk/core/lib/model/eo-user.model.d.ts +4 -0
- package/projects/eo-sdk/core/lib/service/user/user.service.d.ts +7 -2
- package/projects/eo-sdk/core/package.json +1 -1
|
@@ -331,7 +331,7 @@ export class AuthService {
|
|
|
331
331
|
initApp(user, sso) {
|
|
332
332
|
const currUser = new EoUser(user);
|
|
333
333
|
this.backend.setAuthProfile(this.profile);
|
|
334
|
-
this.userService.setCurrentUser(
|
|
334
|
+
this.userService.setCurrentUser(user);
|
|
335
335
|
const capabilities = this.capabilitiesService.setCapabilities(user.capabilities, sso);
|
|
336
336
|
this.systemStatusService.init(this.config.getRaw('systemStatusUpdateInterval'));
|
|
337
337
|
// update states
|
|
@@ -372,4 +372,4 @@ AuthService.ctorParameters = () => [
|
|
|
372
372
|
{ type: LocalStorage },
|
|
373
373
|
{ type: LocalStorageService }
|
|
374
374
|
];
|
|
375
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL2F1dGgvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxlQUFlLEVBQUUsVUFBVSxFQUFFLFFBQVEsSUFBSSxrQkFBa0IsRUFDM0QsRUFBRSxJQUFJLFlBQVksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFDbEQsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzFFLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUMsVUFBVSxFQUFxQixXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFeEMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVB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SSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7U0FDakQsQ0FBQztRQUVGLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUNsQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQ3BCLENBQUM7SUFDSixDQUFDOzs7WUF2WEYsVUFBVTs7O1lBM0JILE1BQU07WUFvQk4sVUFBVSx1QkF5Q2IsTUFBTSxTQUFDLFdBQVc7WUE5RGYsZUFBZTtZQXVCZixrQkFBa0I7WUF4QmxCLFVBQVU7WUFnQlYsVUFBVTtZQWpCVSxNQUFNO1lBc0IxQixnQkFBZ0I7WUFWaEIsbUJBQW1CO1lBSm5CLE1BQU07WUFHTixZQUFZO1lBRFosY0FBYztZQUpkLGNBQWM7WUFEZCxhQUFhO1lBRWIsV0FBVztZQVFYLFlBQVk7WUFJWixtQkFBbUI7WUFObkIsWUFBWTtZQUNaLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBmb3JrSm9pbiBhcyBvYnNlcnZhYmxlRm9ya0pvaW4sXHJcbiAgb2YgYXMgb2JzZXJ2YWJsZU9mLCBTdWJqZWN0LCB0aHJvd0Vycm9yLCBpbnRlcnZhbFxyXG59IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge21hcCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCwgY2F0Y2hFcnJvcn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgTmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEhlYWRlcnN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtBcHBDYWNoZVNlcnZpY2V9IGZyb20gJy4uL2NhY2hlL2FwcC1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZy9jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7RW9Vc2VyfSBmcm9tICcuLi8uLi9tb2RlbC9lby11c2VyLm1vZGVsJztcclxuaW1wb3J0IHtTeXN0ZW1TZXJ2aWNlfSBmcm9tICcuLi9zeXN0ZW0vc3lzdGVtLnNlcnZpY2UnO1xyXG5pbXBvcnQge0JhY2tlbmRTZXJ2aWNlfSBmcm9tICcuLi9iYWNrZW5kL2JhY2tlbmQuc2VydmljZSc7XHJcbmltcG9ydCB7VXNlclNlcnZpY2V9IGZyb20gJy4uL3VzZXIvdXNlci5zZXJ2aWNlJztcclxuaW1wb3J0IHtMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9sb2dnZXInO1xyXG5pbXBvcnQge0F1dGhQcm9maWxlfSBmcm9tICcuL2F1dGgtcHJvZmlsZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge1ByZXBhcmVTZXJ2aWNlfSBmcm9tICcuLi9wcmVwYXJlL3ByZXBhcmUuc2VydmljZSc7XHJcbmltcG9ydCB7SW5ib3hTZXJ2aWNlfSBmcm9tICcuLi9pbmJveC9pbmJveC5zZXJ2aWNlJztcclxuaW1wb3J0IHtDYXBhYmlsaXRpZXNTZXJ2aWNlfSBmcm9tICcuLi9jYXBhYmlsaXRpZXMvY2FwYWJpbGl0aWVzLnNlcnZpY2UnO1xyXG5pbXBvcnQge0xvY2FsU3RvcmFnZX0gZnJvbSAnQG5neC1wd2EvbG9jYWwtc3RvcmFnZSc7XHJcbmltcG9ydCB7TG9jYWxTdG9yYWdlU2VydmljZX0gZnJvbSAnLi4vc3RvcmFnZS9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQge0V2ZW50U2VydmljZX0gZnJvbSAnLi4vZXZlbnRzL2V2ZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQge0VuYWlvRXZlbnR9IGZyb20gJy4uL2V2ZW50cy9ldmVudHMnO1xyXG5pbXBvcnQge0JwbVNlcnZpY2V9IGZyb20gJy4uL2JwbS9icG0uc2VydmljZSc7XHJcbmltcG9ydCB7R2F0ZXdheUluZm99IGZyb20gJy4vZ2F0ZXdheS1pbmZvLmludGVyZmFjZSc7XHJcbmltcG9ydCB7U3lzdGVtU3RhdHVzU2VydmljZX0gZnJvbSAnLi4vc3lzdGVtLXN0YXR1cy9zeXN0ZW0tc3RhdHVzLnNlcnZpY2UnO1xyXG5pbXBvcnQge0Vudmlyb25tZW50RW5haW99IGZyb20gJy4uLy4uL2Vudmlyb25tZW50LmVuYWlvJztcclxuaW1wb3J0IHtMb2dpbkRldmljZVJlc3VsdCwgU3RvcmVkVG9rZW59IGZyb20gJy4vYXV0aC5jbG91ZC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge1BsYXRmb3JtTG9jYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7Q29yZUNvbmZpZ30gZnJvbSAnLi4vLi4vY29uZmlnL2NvcmUtY29uZmlnJztcclxuaW1wb3J0IHtDT1JFX0NPTkZJR30gZnJvbSAnLi4vLi4vY29uZmlnL2NvcmUtaW5pdC50b2tlbnMnO1xyXG5pbXBvcnQge0Vudmlyb25tZW50U2VydmljZX0gZnJvbSAnLi4vZW52aXJvbm1lbnQvZW52aXJvbm1lbnQuc2VydmljZSc7XHJcblxyXG4vKipcclxuICogYEF1dGhTZXJ2aWNlYCBoYW5kbGVzIGF1dGhlbnRpY2F0aW9uIGFnYWluc3QgYW4geXV1dmlzPHN1cD4mcmVnOzwvc3VwPiBSQUQgYmFja2VuZC5cclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEF1dGhTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSBUT0tFTl9TVE9SQUdFX0tFWSA9ICdlby5hdXRoLmNsb3VkLmNyZWRlbnRpYWxzJztcclxuICBwcml2YXRlIHVzZXJQcm9maWxlVXJpID0gdGhpcy51c2VyU2VydmljZS5VU0VSX0ZFVENIX1VSSTtcclxuICBwcml2YXRlIGF1dGhTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcml2YXRlIGxvZ2dlZEluQ2FjaGVLZXkgPSAnZW8udXNlci5sb2dnZWRJbic7XHJcblxyXG4gIC8qKlxyXG4gICAqIE9ic2VydmFibGUgdG8gc3Vic2NyaWJlIHRvIGZvciBnZXR0aW5nIHRoZSBzdGF0ZSBvZiBiZWluZyBhdXRoZW50aWNhdGVkLiBXaWxsIGVtaXQgdHJ1ZSB3aGVuIGEgdXNlciBsb2dnZWQgaW4sXHJcbiAgICogZmFsc2Ugd2hlbiB0aGUgdXNlciBsb2dnZWQgb3V0IG9yIHRoZSBnYXRld2F5cyBzZXNzaW9uIHRpbWVkIG91dC5cclxuICAgKi9cclxuICBwdWJsaWMgYXV0aGVudGljYXRlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmF1dGhTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBwdWJsaWMgaG9zdHM6IHN0cmluZ1tdID0gW107XHJcbiAgcHJpdmF0ZSBnYXRld2F5SW5mbzogR2F0ZXdheUluZm87XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBwdWJsaWMgcHJvZmlsZTogQXV0aFByb2ZpbGUgPSB7XHJcbiAgICBob3N0OiAnJyxcclxuICAgIHVzZXI6IG51bGwsXHJcbiAgICBhdXRoOiBudWxsLFxyXG4gICAgYWN0aXZlOiBmYWxzZVxyXG4gIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpZzogQ29uZmlnLFxyXG4gICAgQEluamVjdChDT1JFX0NPTkZJRykgcHVibGljIGNvcmVDb25maWc6IENvcmVDb25maWcsXHJcbiAgICBwcml2YXRlIGFwcENhY2hlOiBBcHBDYWNoZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVudlNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgYnBtU2VydmljZTogQnBtU2VydmljZSxcclxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXHJcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBQbGF0Zm9ybUxvY2F0aW9uLFxyXG4gICAgcHJpdmF0ZSBjYXBhYmlsaXRpZXNTZXJ2aWNlOiBDYXBhYmlsaXRpZXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlcixcclxuICAgIHByaXZhdGUgaW5ib3hTZXJ2aWNlOiBJbmJveFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHByZXBhcmVTZXJ2aWNlOiBQcmVwYXJlU2VydmljZSxcclxuICAgIHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN5c3RlbVN0YXR1c1NlcnZpY2U6IFN5c3RlbVN0YXR1c1NlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgc3RvcmFnZTogTG9jYWxTdG9yYWdlLFxyXG4gICAgcHJvdGVjdGVkIGxvY2FsOiBMb2NhbFN0b3JhZ2VTZXJ2aWNlKSB7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc3RvcmFnZScsIGV2dCA9PiB7XHJcbiAgICAgIGlmIChldnQua2V5ID09PSB0aGlzLmxvZ2dlZEluQ2FjaGVLZXkpIHtcclxuICAgICAgICBjb25zdCBob3N0ID0gSlNPTi5wYXJzZShldnQubmV3VmFsdWUpLmhvc3Q7XHJcbiAgICAgICAgdGhpcy5pbml0VXNlcihob3N0KS5zdWJzY3JpYmUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2dpbiBhIHVzZXIgdXNpbmcgZm9ybSBiYXNlZCBsb2dpbi5cclxuICAgKiBAcGFyYW0gaG9zdCBUaGUgdGFyZ2V0IGhvc3QgKGNvdWxkIGJlIG51bGwgaWYgeW91IGFyZSBydW5uaW5nIGluIHdlYiBlbnZpcm9ubWVudClcclxuICAgKiBAcGFyYW0gdXNlcm5hbWUgVGhlIHVzZXJuYW1lXHJcbiAgICogQHBhcmFtIHBhc3N3b3JkIFRoZSBwYXNzd29yZFxyXG4gICAqIEByZXR1cm5zIFJlc29sdmVzIHdpdGggdGhlIGxvZ2dlZCBpbiB1c2VyXHJcbiAgICovXHJcbiAgcHVibGljIGxvZ2luKGhvc3Q6IHN0cmluZywgdXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyk6IE9ic2VydmFibGU8RW9Vc2VyPiB7XHJcblxyXG4gICAgaG9zdCA9IGhvc3QgfHwgJyc7XHJcbiAgICBjb25zdCBmZCA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgZmQuYXBwZW5kKCd1c2VybmFtZScsIGVuY29kZVVSSUNvbXBvbmVudCh1c2VybmFtZSkpO1xyXG4gICAgZmQuYXBwZW5kKCdwYXNzd29yZCcsIGVuY29kZVVSSUNvbXBvbmVudChwYXNzd29yZCkpO1xyXG5cclxuICAgIGNvbnN0IGxvZ2luSGVhZGVyID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChob3N0ICsgdGhpcy5jb25maWcuZ2V0TG9naW5CYXNlKCkgKyAnL2xvZ2luJyxcclxuICAgICAgYHVzZXJuYW1lPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHVzZXJuYW1lKX0mcGFzc3dvcmQ9JHtlbmNvZGVVUklDb21wb25lbnQocGFzc3dvcmQpfWAsIHtcclxuICAgICAgaGVhZGVyczogbG9naW5IZWFkZXIsXHJcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnXHJcbiAgICB9KS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5pbml0VXNlcihob3N0KSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2cgaW4gdG8gYSBjbG91ZCBiYWNrZW5kIHVzaW5nIGRldmljZSBmbG93LlxyXG4gICAqIEBwYXJhbSBob3N0IFRoZSB0YXJnZXQgaG9zdCAoY291bGQgYmUgbnVsbCBpZiB5b3UgYXJlIHJ1bm5pbmcgaW4gd2ViIGVudmlyb25tZW50KVxyXG4gICAqIEBwYXJhbSB0ZW5hbnQgVGhlIHRlbmFudFxyXG4gICAqIEByZXR1cm5zIFJlc29sdmVzIHdpdGggdGhlIGxvZ2dlZCBpbiB1c2VyXHJcbiAgICovXHJcbiAgcHVibGljIGNsb3VkTG9naW4oaG9zdDogc3RyaW5nLCB0ZW5hbnQ6IHN0cmluZyk6IE9ic2VydmFibGU8RW9Vc2VyPiB7XHJcbiAgICByZXR1cm4gT2JzZXJ2YWJsZS5jcmVhdGUobyA9PiB7XHJcbiAgICAgIGNvbnN0IHN0b3BUcmlnZ2VyJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICAgIC8vY29uc3QgdGFyZ2V0SG9zdCA9IHRoaXMubG9jYXRpb24ucGF0aG5hbWUuc3Vic3RyaW5nKDAsIHRoaXMubG9jYXRpb24ucGF0aG5hbWUuaW5kZXhPZignL2VudGVyJykpOyAvLyBob3N0IHx8ICcnO1xyXG4gICAgICBjb25zdCB0YXJnZXRIb3N0ID0gaG9zdCB8fCAnJztcclxuICAgICAgLy8gc3RhcnQgYXV0aCBmbG93XHJcbiAgICAgIHRoaXMuaHR0cC5nZXQoYCR7dGFyZ2V0SG9zdH0vdGVuYW50LyR7dGVuYW50fS9sb2dpbkRldmljZWApLnN1YnNjcmliZSgocmVzOiBMb2dpbkRldmljZVJlc3VsdCkgPT4ge1xyXG5cclxuICAgICAgICAvLyBvcGVuIG5ldyB3aW5kb3cgZm9yIHRoZSBhdXRoZW50aWNhdGlvbiBwcm9jZXNzIC4uLlxyXG4gICAgICAgIGNvbnN0IHRhcmdldFVyaSA9IGAke3RhcmdldEhvc3R9L29hdXRoLyR7dGVuYW50fT91c2VyX2NvZGU9JHtyZXMudXNlcl9jb2RlfWA7XHJcbiAgICAgICAgY29uc3Qgd2luID0gd2luZG93Lm9wZW4odGFyZ2V0VXJpLCAnYXV0aCcpO1xyXG4gICAgICAgIGlmICh3aW4pIHtcclxuICAgICAgICAgIC8vIEBzZWU6IGh0dHA6Ly9hdGFzaGJhaGFyLmNvbS9wb3N0LzIwMTAtMDQtMjctZGV0ZWN0LXdoZW4tYS1qYXZhc2NyaXB0LXBvcHVwLXdpbmRvdy1nZXRzLWNsb3NlZFxyXG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB3aW5UaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAgICAgICBpZiAod2luLmNsb3NlZCkge1xyXG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh3aW5UaW1lcik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBzdG9wVHJpZ2dlciQubmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgICBzdG9wVHJpZ2dlciQuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIC4uLiBhbmQgc3RhcnQgcG9sbGluZyBmb3IgYXV0aGVudGljYXRpb24gcmVzdWx0c1xyXG4gICAgICAgIHRoaXMuY2xvdWRMb2dpblBvbGxGb3JSZXN1bHQoYCR7dGFyZ2V0SG9zdH0vYXV0aC9pbmZvL3N0YXRlP2RldmljZV9jb2RlPSR7cmVzLmRldmljZV9jb2RlfWAsIDEwMDAsIHN0b3BUcmlnZ2VyJClcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICB0YXAoKGFjY2Vzc1Rva2VuOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoYWNjZXNzVG9rZW4pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2xvdWRMb2dpblNldEhlYWRlcnMoYWNjZXNzVG9rZW4sIHRlbmFudCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdG9yZVRva2VuOiBTdG9yZWRUb2tlbiA9IHtcclxuICAgICAgICAgICAgICAgICAgdGVuYW50OiB0ZW5hbnQsXHJcbiAgICAgICAgICAgICAgICAgIGFjY2Vzc1Rva2VuOiBhY2Nlc3NUb2tlblxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKHRoaXMuVE9LRU5fU1RPUkFHRV9LRVksIHN0b3JlVG9rZW4pLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoYXV0aFJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGF1dGhSZXMpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmluaXRVc2VyKHRhcmdldEhvc3QpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKCdub3QgYXV0aGVudGljYXRlZCcpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAodXNlcjogRW9Vc2VyKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgIHdpbi5jbG9zZSgpO1xyXG4gICAgICAgICAgICAgIG8ubmV4dCh1c2VyKTtcclxuICAgICAgICAgICAgICBvLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgIH0sIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgd2luLmNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgby5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgIG8uY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKVxyXG4gICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgIG8uZXJyb3IoJ3VuYWJsZSB0byBjYWxsIGRldmljZSBmbG93IGVuZHBvaW50JywgZXJyKTtcclxuICAgICAgICBvLmNvbXBsZXRlKCk7XHJcbiAgICAgIH0pXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0YXJ0cyBwb2xsaW5nIGZvciBsb2dpbiByZXN1bHRzIGluIGNhc2Ugb2YgbG9nZ2luZyBpbiB0byBhIGNsb3VkIGJhY2tlbmQuXHJcbiAgICogQHBhcmFtIHVyaSBVUkkgdG8gcG9sbFxyXG4gICAqIEBwYXJhbSBwb2xsaW5nSW50ZXJ2YWwgUG9sbGluZyBpbnRlcnZhbGwgaW4gbWlsbGlzZWNvbmRzXHJcbiAgICogQHBhcmFtIHN0b3BUcmlnZ2VyIFN1YmplY3QgYWN0aW5nIGFzIHN0b3AgdHJpZ2dlclxyXG4gICAqIEByZXR1cm5zIEFjY2VzcyBUb2tlbiBpZiBsb2dnZWQgaW4gc3VjY2Vzc2Z1bGx5IG9yIE5VTEwgb3RoZXJ3aXNlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjbG91ZExvZ2luUG9sbEZvclJlc3VsdCh1cmk6IHN0cmluZywgcG9sbGluZ0ludGVydmFsOiBudW1iZXIsIHN0b3BUcmlnZ2VyOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcblxyXG4gICAgcmV0dXJuIE9ic2VydmFibGUuY3JlYXRlKG8gPT4ge1xyXG4gICAgICBsZXQgYWNjZXNzR3JhbnRlZCA9IGZhbHNlO1xyXG4gICAgICBsZXQgYWNjZXNzRGVuaWVkID0gZmFsc2U7XHJcblxyXG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgaW50ZXJ2YWwocG9sbGluZ0ludGVydmFsKS5waXBlKFxyXG4gICAgICAgICAgdGFrZVVudGlsKHN0b3BUcmlnZ2VyKSxcclxuICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmh0dHAuZ2V0KHVyaSkucGlwZShcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgIC8vIE9BdXRoIHN0YW5kYXJkIHdlIGFyZSB1c2luZyBpcyByZXR1cm5pbmcgd2l0aCBhIHN0YXR1cyBvZiA0MDAgd2hpbGUgbG9nZ2luZyBpbiAobm8gaWRlYSB3aHk/Pz8pXHJcbiAgICAgICAgICAgICAgLy8gc28gd2UgZ290IHRvIGZldGNoIHRoYXQgdG8gbm90IGJyZWFrIHRoZSBwYXJlbnQgcGlwZVxyXG4gICAgICAgICAgICAgIGlmIChlcnIuc3RhdHVzID09PSA0MDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlT2YoZXJyLmVycm9yKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICkpXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgICBhY2Nlc3NHcmFudGVkID0gISFyZXMuYWNjZXNzX3Rva2VuO1xyXG4gICAgICAgICAgICAgIGFjY2Vzc0RlbmllZCA9IHJlcy5lcnJvciA9PT0gJ2FjY2Vzc19kZW5pZWQnO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoYWNjZXNzR3JhbnRlZCB8fCBhY2Nlc3NEZW5pZWQpIHtcclxuICAgICAgICAgICAgICAgIC8vIGxvZ2dlZCBpblxyXG4gICAgICAgICAgICAgICAgc3RvcFRyaWdnZXIubmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgc3RvcFRyaWdnZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgICAgIG8ubmV4dChhY2Nlc3NHcmFudGVkID8gcmVzLmFjY2Vzc190b2tlbiA6IG51bGwpO1xyXG4gICAgICAgICAgICAgICAgby5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzLmVycm9yID09PSAnZXhwaXJlZF90b2tlbicpIHtcclxuICAgICAgICAgICAgICAgIC8vIGV4cGlyZWQgc28gc2tpcCBwb2xsaW5nXHJcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKCdUb2tlbiBleHBpcmVkJyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0sIGVyciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgby5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgIG8uY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgby5uZXh0KGFjY2Vzc0dyYW50ZWQpO1xyXG4gICAgICAgICAgICAgIG8uY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xvdWRMb2dpblNldEhlYWRlcnMoYWNjZXNzVG9rZW46IHN0cmluZywgdGVuYW50OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuYmFja2VuZC5zZXRIZWFkZXIoJ0F1dGhvcml6YXRpb24nLCAnYmVhcmVyICcgKyBhY2Nlc3NUb2tlbik7XHJcbiAgICB0aGlzLmJhY2tlbmQuc2V0SGVhZGVyKCdYLUlELVRFTkFOVC1OQU1FJywgdGVuYW50KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgY2FsbGVkIHdoaWxlIGFwcCBpbml0XHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGluaXRVc2VyKGhvc3Q/OiBzdHJpbmcpIHtcclxuXHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0KGAke2hvc3QgfHwgJyd9JHt0aGlzLmNvbmZpZy5nZXRMb2dpbkJhc2UoKX0vYXV0aC9pbmZvYCwge2hlYWRlcnN9KVxyXG4gICAgICAucGlwZShzd2l0Y2hNYXAoKGluZm86IEdhdGV3YXlJbmZvKSA9PiB7XHJcbiAgICAgICAgdGhpcy5nYXRld2F5SW5mbyA9IGluZm87XHJcblxyXG4gICAgICAgIHRoaXMuZW52U2VydmljZS5jbG91ZEVudmlyb25tZW50ID0gKHRoaXMuZ2F0ZXdheUluZm8gJiYgdGhpcy5nYXRld2F5SW5mby5vYXV0aDIpO1xyXG4gICAgICAgIGlmICh0aGlzLmlzQ2xvdWRFbnZpcm9ubWVudCgpKSB7XHJcbiAgICAgICAgICAvLyBpbiBjYXNlIG9mIHJ1bm5pbmcgYWdhaW5zdCBjbG91ZCBiYWNrZW5kLCB3ZSB0cnkgdG8gZmV0Y2hcclxuICAgICAgICAgIC8vIGFjY2VzcyB0b2tlbiBhbmQgdGVuYW50IGZyb20gbG9jYWwgc3RvcmFnZVxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5nZXRJdGVtKHRoaXMuVE9LRU5fU1RPUkFHRV9LRVkpLnBpcGUoXHJcbiAgICAgICAgICAgIHN3aXRjaE1hcCgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3VkTG9naW5TZXRIZWFkZXJzKHJlcy5hY2Nlc3NUb2tlbiwgcmVzLnRlbmFudCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmZldGNoVXNlcihpbmZvLCBob3N0KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hVc2VyKGluZm8sIGhvc3QpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSBnYXRld2F5SW5mb1xyXG4gICAqIEBwYXJhbSBob3N0XHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxFb1VzZXI+XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBmZXRjaFVzZXIoZ2F0ZXdheUluZm86IGFueSwgaG9zdD86IHN0cmluZyk6IE9ic2VydmFibGU8RW9Vc2VyPiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQoYCR7aG9zdCB8fCAnJ30ke3RoaXMuY29uZmlnLmdldFVyaSgnc2VydmljZUJhc2UnKX0ke3RoaXMudXNlclByb2ZpbGVVcml9YCwge2hlYWRlcnN9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBzd2l0Y2hNYXAoKHVzZXI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wcm9maWxlID0ge1xyXG4gICAgICAgICAgICBob3N0OiBob3N0IHx8ICcnLFxyXG4gICAgICAgICAgICB1c2VyOiB1c2VyLnVzZXIubmFtZSxcclxuICAgICAgICAgICAgYXV0aDogbnVsbCxcclxuICAgICAgICAgICAgYWN0aXZlOiB0cnVlXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgaWYgKGhvc3QpIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRIb3N0Q29uZmlnKGhvc3QpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMubG9nZ2VkSW5DYWNoZUtleSwgSlNPTi5zdHJpbmdpZnkoe3VzZXJJZDogdXNlci51c2VyLmlkLCBob3N0OiBob3N0fSkpO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5pdEFwcCh1c2VyLCBnYXRld2F5SW5mby5udGxtKTtcclxuICAgICAgICB9KSxcclxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5hdXRoU291cmNlLm5leHQodGhpcy5pc0xvZ2dlZEluKCkpKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9ncyBvdXQgdGhlIGN1cnJlbnQgdXNlci5cclxuICAgKiBAcGFyYW0gZ2F0ZXdheUxvZ291dCBGbGFnIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdG8gcGVyZm9ybSBhIGdhdGV3YXkgbG9nb3V0IGFzIHdlbGxcclxuICAgKi9cclxuICBwdWJsaWMgbG9nb3V0KGdhdGV3YXlMb2dvdXQ/OiBib29sZWFuKSB7XHJcblxyXG4gICAgdGhpcy5hdXRoU291cmNlLm5leHQoZmFsc2UpO1xyXG4gICAgdGhpcy5zeXN0ZW1TdGF0dXNTZXJ2aWNlLnN0b3AoKTtcclxuXHJcbiAgICB0aGlzLnByb2ZpbGUgPSB7XHJcbiAgICAgIGhvc3Q6ICcnLFxyXG4gICAgICB1c2VyOiBudWxsLFxyXG4gICAgICBhdXRoOiBudWxsLFxyXG4gICAgICBhY3RpdmU6IGZhbHNlXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLmlzQ2xvdWRFbnZpcm9ubWVudCgpKSB7XHJcbiAgICAgIC8vIHJlbW92ZSBzdG9yZWQgYWNjZXNzIGRhdGFcclxuICAgICAgdGhpcy5zdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5UT0tFTl9TVE9SQUdFX0tFWSkuc3Vic2NyaWJlKCk7XHJcbiAgICAgIGlmICh0aGlzLmNvcmVDb25maWcuZW52aXJvbm1lbnQucHJvZHVjdGlvbiAmJiBFbnZpcm9ubWVudEVuYWlvLmlzV2ViRW52aXJvbm1lbnQoKSkge1xyXG4gICAgICAgICh3aW5kb3cgYXMgYW55KS5sb2NhdGlvbi5ocmVmID0gdGhpcy5jb25maWcuZ2V0TG9naW5CYXNlKCkgKyAnL2xvZ291dCc7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoZ2F0ZXdheUxvZ291dCkge1xyXG4gICAgICAvLyBieSBkZWZhdWx0IHdlIGFyZSBqdXN0IHJlc2V0dGluZyBpbnRlcm5hbCBzdGF0ZSB0byAnbG9nZ2VkIG91dCcgYW5kIGluXHJcbiAgICAgIC8vIHNvbWUgY2FzZXMgY2FsbCBnYXRld2F5cyBsb2dvdXQgZW5kcG9pbnQgdG8gZG8gbG9nb3V0IHN0dWZmIHRoZXJlIHNpbGVudGx5XHJcbiAgICAgIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5wcm9maWxlLmhvc3QgfHwgJyd9JHt0aGlzLmNvbmZpZy5nZXRMb2dpbkJhc2UoKX0vbG9nb3V0YCkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMuYmFja2VuZC5zZXRBdXRoUHJvZmlsZSh0aGlzLnByb2ZpbGUpO1xyXG4gICAgdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcihFbmFpb0V2ZW50LkxPR09VVCk7XHJcbiAgfVxyXG5cclxuICBpc0Nsb3VkRW52aXJvbm1lbnQoKTogYm9vbGVhbiB7XHJcbiAgICAvLyBvYXV0aDIgaW5kaWNhdGVzIHRoYXQgd2UgYXJlIHJ1bm5pbmcgaW4gYSBjbG91ZCBlbnZpcm9ubWVudFxyXG4gICAgcmV0dXJuIHRoaXMuZ2F0ZXdheUluZm8gJiYgdGhpcy5nYXRld2F5SW5mby5vYXV0aDI7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBmb3IgZGVza3RvcCBhbmQgbW9iaWxlIGRldmljZXMgd2UgcHJvdmlkZSBhIGxpc3Qgb2YgaG9zdHMgZm9yIHRoZSBsb2dpblxyXG4gICAqXHJcbiAgICogQHBhcmFtIHN0cmluZyBob3N0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhZGRIb3N0Q29uZmlnKGhvc3Q6IHN0cmluZykge1xyXG4gICAgY29uc3QgZXhpc3RpbmdIb3N0ID0gdGhpcy5ob3N0cy5maW5kKGggPT4gaCA9PT0gaG9zdCk7XHJcbiAgICBpZiAoIWV4aXN0aW5nSG9zdCkge1xyXG4gICAgICB0aGlzLmhvc3RzLnB1c2goaG9zdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIGN1cnJlbnQgc3RhdGUgb2YgYSB1c2VyIGJlaW5nIGxvZ2dlZCBpbi4gVGhpcyBpcyBraW5kIG9mIHRoZSBzeW5jaHJvbm91cyB2ZXJzaW9uIG9mIHN1YnNjcmliaW5nIHRvIGBhdXRoZW50aWNhdGVkJGAuXHJcbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGVyZSBpcyBhIGxvZ2dlZCBpbiB1c2VyLCBmYWxzZSBvdGhlcndpc2VcclxuICAgKi9cclxuICBwdWJsaWMgaXNMb2dnZWRJbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnByb2ZpbGUudXNlciAhPT0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHVzZXJcclxuICAgKiBAcGFyYW0gYm9vbGVhbiBzc29cclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEVvVXNlcj5cclxuICAgKi9cclxuICBwcml2YXRlIGluaXRBcHAodXNlcjogYW55LCBzc28/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxFb1VzZXI+IHtcclxuXHJcbiAgICBjb25zdCBjdXJyVXNlciA9IG5ldyBFb1VzZXIodXNlcik7XHJcbiAgICB0aGlzLmJhY2tlbmQuc2V0QXV0aFByb2ZpbGUodGhpcy5wcm9maWxlKTtcclxuICAgIHRoaXMudXNlclNlcnZpY2Uuc2V0Q3VycmVudFVzZXIoY3VyclVzZXIpO1xyXG4gICAgY29uc3QgY2FwYWJpbGl0aWVzID0gdGhpcy5jYXBhYmlsaXRpZXNTZXJ2aWNlLnNldENhcGFiaWxpdGllcyh1c2VyLmNhcGFiaWxpdGllcywgc3NvKTtcclxuXHJcbiAgICB0aGlzLnN5c3RlbVN0YXR1c1NlcnZpY2UuaW5pdCh0aGlzLmNvbmZpZy5nZXRSYXcoJ3N5c3RlbVN0YXR1c1VwZGF0ZUludGVydmFsJykpO1xyXG5cclxuICAgIC8vIHVwZGF0ZSBzdGF0ZXNcclxuICAgIGlmIChjYXBhYmlsaXRpZXMuaW5ib3gpIHtcclxuICAgICAgdGhpcy5pbmJveFNlcnZpY2UucmVmcmVzaEluYm94U3RhdGUoKTtcclxuICAgIH1cclxuICAgIGlmIChjYXBhYmlsaXRpZXMuaW50cmF5KSB7XHJcbiAgICAgIHRoaXMucHJlcGFyZVNlcnZpY2UucmVmcmVzaFByZXBhcmVkSXRlbXNDb3VudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHRvZG8gPSBbXHJcbiAgICAgIHRoaXMuYnBtU2VydmljZS5nZXRFeGVjdXRhYmxlUHJvY2Vzc2VzKCksXHJcbiAgICAgIHRoaXMuc3lzdGVtU2VydmljZS5nZXRTeXN0ZW1EZWZpbml0aW9uKGN1cnJVc2VyKVxyXG4gICAgXTtcclxuXHJcbiAgICByZXR1cm4gb2JzZXJ2YWJsZUZvcmtKb2luKHRvZG8pLnBpcGUoXHJcbiAgICAgIG1hcCgoKSA9PiBjdXJyVXNlcilcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
375
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL2F1dGgvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxlQUFlLEVBQUUsVUFBVSxFQUFFLFFBQVEsSUFBSSxrQkFBa0IsRUFDM0QsRUFBRSxJQUFJLFlBQVksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFDbEQsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzFFLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUMsVUFBVSxFQUFxQixXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFeEMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVB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SSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7U0FDakQsQ0FBQztRQUVGLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUNsQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQ3BCLENBQUM7SUFDSixDQUFDOzs7WUF2WEYsVUFBVTs7O1lBM0JILE1BQU07WUFvQk4sVUFBVSx1QkF5Q2IsTUFBTSxTQUFDLFdBQVc7WUE5RGYsZUFBZTtZQXVCZixrQkFBa0I7WUF4QmxCLFVBQVU7WUFnQlYsVUFBVTtZQWpCVSxNQUFNO1lBc0IxQixnQkFBZ0I7WUFWaEIsbUJBQW1CO1lBSm5CLE1BQU07WUFHTixZQUFZO1lBRFosY0FBYztZQUpkLGNBQWM7WUFEZCxhQUFhO1lBRWIsV0FBVztZQVFYLFlBQVk7WUFJWixtQkFBbUI7WUFObkIsWUFBWTtZQUNaLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBmb3JrSm9pbiBhcyBvYnNlcnZhYmxlRm9ya0pvaW4sXHJcbiAgb2YgYXMgb2JzZXJ2YWJsZU9mLCBTdWJqZWN0LCB0aHJvd0Vycm9yLCBpbnRlcnZhbFxyXG59IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge21hcCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCwgY2F0Y2hFcnJvcn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgTmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEhlYWRlcnN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtBcHBDYWNoZVNlcnZpY2V9IGZyb20gJy4uL2NhY2hlL2FwcC1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZy9jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7RW9Vc2VyfSBmcm9tICcuLi8uLi9tb2RlbC9lby11c2VyLm1vZGVsJztcclxuaW1wb3J0IHtTeXN0ZW1TZXJ2aWNlfSBmcm9tICcuLi9zeXN0ZW0vc3lzdGVtLnNlcnZpY2UnO1xyXG5pbXBvcnQge0JhY2tlbmRTZXJ2aWNlfSBmcm9tICcuLi9iYWNrZW5kL2JhY2tlbmQuc2VydmljZSc7XHJcbmltcG9ydCB7VXNlclNlcnZpY2V9IGZyb20gJy4uL3VzZXIvdXNlci5zZXJ2aWNlJztcclxuaW1wb3J0IHtMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9sb2dnZXInO1xyXG5pbXBvcnQge0F1dGhQcm9maWxlfSBmcm9tICcuL2F1dGgtcHJvZmlsZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge1ByZXBhcmVTZXJ2aWNlfSBmcm9tICcuLi9wcmVwYXJlL3ByZXBhcmUuc2VydmljZSc7XHJcbmltcG9ydCB7SW5ib3hTZXJ2aWNlfSBmcm9tICcuLi9pbmJveC9pbmJveC5zZXJ2aWNlJztcclxuaW1wb3J0IHtDYXBhYmlsaXRpZXNTZXJ2aWNlfSBmcm9tICcuLi9jYXBhYmlsaXRpZXMvY2FwYWJpbGl0aWVzLnNlcnZpY2UnO1xyXG5pbXBvcnQge0xvY2FsU3RvcmFnZX0gZnJvbSAnQG5neC1wd2EvbG9jYWwtc3RvcmFnZSc7XHJcbmltcG9ydCB7TG9jYWxTdG9yYWdlU2VydmljZX0gZnJvbSAnLi4vc3RvcmFnZS9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQge0V2ZW50U2VydmljZX0gZnJvbSAnLi4vZXZlbnRzL2V2ZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQge0VuYWlvRXZlbnR9IGZyb20gJy4uL2V2ZW50cy9ldmVudHMnO1xyXG5pbXBvcnQge0JwbVNlcnZpY2V9IGZyb20gJy4uL2JwbS9icG0uc2VydmljZSc7XHJcbmltcG9ydCB7R2F0ZXdheUluZm99IGZyb20gJy4vZ2F0ZXdheS1pbmZvLmludGVyZmFjZSc7XHJcbmltcG9ydCB7U3lzdGVtU3RhdHVzU2VydmljZX0gZnJvbSAnLi4vc3lzdGVtLXN0YXR1cy9zeXN0ZW0tc3RhdHVzLnNlcnZpY2UnO1xyXG5pbXBvcnQge0Vudmlyb25tZW50RW5haW99IGZyb20gJy4uLy4uL2Vudmlyb25tZW50LmVuYWlvJztcclxuaW1wb3J0IHtMb2dpbkRldmljZVJlc3VsdCwgU3RvcmVkVG9rZW59IGZyb20gJy4vYXV0aC5jbG91ZC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge1BsYXRmb3JtTG9jYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7Q29yZUNvbmZpZ30gZnJvbSAnLi4vLi4vY29uZmlnL2NvcmUtY29uZmlnJztcclxuaW1wb3J0IHtDT1JFX0NPTkZJR30gZnJvbSAnLi4vLi4vY29uZmlnL2NvcmUtaW5pdC50b2tlbnMnO1xyXG5pbXBvcnQge0Vudmlyb25tZW50U2VydmljZX0gZnJvbSAnLi4vZW52aXJvbm1lbnQvZW52aXJvbm1lbnQuc2VydmljZSc7XHJcblxyXG4vKipcclxuICogYEF1dGhTZXJ2aWNlYCBoYW5kbGVzIGF1dGhlbnRpY2F0aW9uIGFnYWluc3QgYW4geXV1dmlzPHN1cD4mcmVnOzwvc3VwPiBSQUQgYmFja2VuZC5cclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEF1dGhTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSBUT0tFTl9TVE9SQUdFX0tFWSA9ICdlby5hdXRoLmNsb3VkLmNyZWRlbnRpYWxzJztcclxuICBwcml2YXRlIHVzZXJQcm9maWxlVXJpID0gdGhpcy51c2VyU2VydmljZS5VU0VSX0ZFVENIX1VSSTtcclxuICBwcml2YXRlIGF1dGhTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcml2YXRlIGxvZ2dlZEluQ2FjaGVLZXkgPSAnZW8udXNlci5sb2dnZWRJbic7XHJcblxyXG4gIC8qKlxyXG4gICAqIE9ic2VydmFibGUgdG8gc3Vic2NyaWJlIHRvIGZvciBnZXR0aW5nIHRoZSBzdGF0ZSBvZiBiZWluZyBhdXRoZW50aWNhdGVkLiBXaWxsIGVtaXQgdHJ1ZSB3aGVuIGEgdXNlciBsb2dnZWQgaW4sXHJcbiAgICogZmFsc2Ugd2hlbiB0aGUgdXNlciBsb2dnZWQgb3V0IG9yIHRoZSBnYXRld2F5cyBzZXNzaW9uIHRpbWVkIG91dC5cclxuICAgKi9cclxuICBwdWJsaWMgYXV0aGVudGljYXRlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmF1dGhTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBwdWJsaWMgaG9zdHM6IHN0cmluZ1tdID0gW107XHJcbiAgcHJpdmF0ZSBnYXRld2F5SW5mbzogR2F0ZXdheUluZm87XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBwdWJsaWMgcHJvZmlsZTogQXV0aFByb2ZpbGUgPSB7XHJcbiAgICBob3N0OiAnJyxcclxuICAgIHVzZXI6IG51bGwsXHJcbiAgICBhdXRoOiBudWxsLFxyXG4gICAgYWN0aXZlOiBmYWxzZVxyXG4gIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpZzogQ29uZmlnLFxyXG4gICAgQEluamVjdChDT1JFX0NPTkZJRykgcHVibGljIGNvcmVDb25maWc6IENvcmVDb25maWcsXHJcbiAgICBwcml2YXRlIGFwcENhY2hlOiBBcHBDYWNoZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVudlNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgYnBtU2VydmljZTogQnBtU2VydmljZSxcclxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXHJcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBQbGF0Zm9ybUxvY2F0aW9uLFxyXG4gICAgcHJpdmF0ZSBjYXBhYmlsaXRpZXNTZXJ2aWNlOiBDYXBhYmlsaXRpZXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlcixcclxuICAgIHByaXZhdGUgaW5ib3hTZXJ2aWNlOiBJbmJveFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHByZXBhcmVTZXJ2aWNlOiBQcmVwYXJlU2VydmljZSxcclxuICAgIHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN5c3RlbVN0YXR1c1NlcnZpY2U6IFN5c3RlbVN0YXR1c1NlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgc3RvcmFnZTogTG9jYWxTdG9yYWdlLFxyXG4gICAgcHJvdGVjdGVkIGxvY2FsOiBMb2NhbFN0b3JhZ2VTZXJ2aWNlKSB7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc3RvcmFnZScsIGV2dCA9PiB7XHJcbiAgICAgIGlmIChldnQua2V5ID09PSB0aGlzLmxvZ2dlZEluQ2FjaGVLZXkpIHtcclxuICAgICAgICBjb25zdCBob3N0ID0gSlNPTi5wYXJzZShldnQubmV3VmFsdWUpLmhvc3Q7XHJcbiAgICAgICAgdGhpcy5pbml0VXNlcihob3N0KS5zdWJzY3JpYmUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2dpbiBhIHVzZXIgdXNpbmcgZm9ybSBiYXNlZCBsb2dpbi5cclxuICAgKiBAcGFyYW0gaG9zdCBUaGUgdGFyZ2V0IGhvc3QgKGNvdWxkIGJlIG51bGwgaWYgeW91IGFyZSBydW5uaW5nIGluIHdlYiBlbnZpcm9ubWVudClcclxuICAgKiBAcGFyYW0gdXNlcm5hbWUgVGhlIHVzZXJuYW1lXHJcbiAgICogQHBhcmFtIHBhc3N3b3JkIFRoZSBwYXNzd29yZFxyXG4gICAqIEByZXR1cm5zIFJlc29sdmVzIHdpdGggdGhlIGxvZ2dlZCBpbiB1c2VyXHJcbiAgICovXHJcbiAgcHVibGljIGxvZ2luKGhvc3Q6IHN0cmluZywgdXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyk6IE9ic2VydmFibGU8RW9Vc2VyPiB7XHJcblxyXG4gICAgaG9zdCA9IGhvc3QgfHwgJyc7XHJcbiAgICBjb25zdCBmZCA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgZmQuYXBwZW5kKCd1c2VybmFtZScsIGVuY29kZVVSSUNvbXBvbmVudCh1c2VybmFtZSkpO1xyXG4gICAgZmQuYXBwZW5kKCdwYXNzd29yZCcsIGVuY29kZVVSSUNvbXBvbmVudChwYXNzd29yZCkpO1xyXG5cclxuICAgIGNvbnN0IGxvZ2luSGVhZGVyID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChob3N0ICsgdGhpcy5jb25maWcuZ2V0TG9naW5CYXNlKCkgKyAnL2xvZ2luJyxcclxuICAgICAgYHVzZXJuYW1lPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHVzZXJuYW1lKX0mcGFzc3dvcmQ9JHtlbmNvZGVVUklDb21wb25lbnQocGFzc3dvcmQpfWAsIHtcclxuICAgICAgaGVhZGVyczogbG9naW5IZWFkZXIsXHJcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnXHJcbiAgICB9KS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5pbml0VXNlcihob3N0KSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2cgaW4gdG8gYSBjbG91ZCBiYWNrZW5kIHVzaW5nIGRldmljZSBmbG93LlxyXG4gICAqIEBwYXJhbSBob3N0IFRoZSB0YXJnZXQgaG9zdCAoY291bGQgYmUgbnVsbCBpZiB5b3UgYXJlIHJ1bm5pbmcgaW4gd2ViIGVudmlyb25tZW50KVxyXG4gICAqIEBwYXJhbSB0ZW5hbnQgVGhlIHRlbmFudFxyXG4gICAqIEByZXR1cm5zIFJlc29sdmVzIHdpdGggdGhlIGxvZ2dlZCBpbiB1c2VyXHJcbiAgICovXHJcbiAgcHVibGljIGNsb3VkTG9naW4oaG9zdDogc3RyaW5nLCB0ZW5hbnQ6IHN0cmluZyk6IE9ic2VydmFibGU8RW9Vc2VyPiB7XHJcbiAgICByZXR1cm4gT2JzZXJ2YWJsZS5jcmVhdGUobyA9PiB7XHJcbiAgICAgIGNvbnN0IHN0b3BUcmlnZ2VyJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICAgIC8vY29uc3QgdGFyZ2V0SG9zdCA9IHRoaXMubG9jYXRpb24ucGF0aG5hbWUuc3Vic3RyaW5nKDAsIHRoaXMubG9jYXRpb24ucGF0aG5hbWUuaW5kZXhPZignL2VudGVyJykpOyAvLyBob3N0IHx8ICcnO1xyXG4gICAgICBjb25zdCB0YXJnZXRIb3N0ID0gaG9zdCB8fCAnJztcclxuICAgICAgLy8gc3RhcnQgYXV0aCBmbG93XHJcbiAgICAgIHRoaXMuaHR0cC5nZXQoYCR7dGFyZ2V0SG9zdH0vdGVuYW50LyR7dGVuYW50fS9sb2dpbkRldmljZWApLnN1YnNjcmliZSgocmVzOiBMb2dpbkRldmljZVJlc3VsdCkgPT4ge1xyXG5cclxuICAgICAgICAvLyBvcGVuIG5ldyB3aW5kb3cgZm9yIHRoZSBhdXRoZW50aWNhdGlvbiBwcm9jZXNzIC4uLlxyXG4gICAgICAgIGNvbnN0IHRhcmdldFVyaSA9IGAke3RhcmdldEhvc3R9L29hdXRoLyR7dGVuYW50fT91c2VyX2NvZGU9JHtyZXMudXNlcl9jb2RlfWA7XHJcbiAgICAgICAgY29uc3Qgd2luID0gd2luZG93Lm9wZW4odGFyZ2V0VXJpLCAnYXV0aCcpO1xyXG4gICAgICAgIGlmICh3aW4pIHtcclxuICAgICAgICAgIC8vIEBzZWU6IGh0dHA6Ly9hdGFzaGJhaGFyLmNvbS9wb3N0LzIwMTAtMDQtMjctZGV0ZWN0LXdoZW4tYS1qYXZhc2NyaXB0LXBvcHVwLXdpbmRvdy1nZXRzLWNsb3NlZFxyXG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB3aW5UaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAgICAgICBpZiAod2luLmNsb3NlZCkge1xyXG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh3aW5UaW1lcik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBzdG9wVHJpZ2dlciQubmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgICBzdG9wVHJpZ2dlciQuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIC4uLiBhbmQgc3RhcnQgcG9sbGluZyBmb3IgYXV0aGVudGljYXRpb24gcmVzdWx0c1xyXG4gICAgICAgIHRoaXMuY2xvdWRMb2dpblBvbGxGb3JSZXN1bHQoYCR7dGFyZ2V0SG9zdH0vYXV0aC9pbmZvL3N0YXRlP2RldmljZV9jb2RlPSR7cmVzLmRldmljZV9jb2RlfWAsIDEwMDAsIHN0b3BUcmlnZ2VyJClcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICB0YXAoKGFjY2Vzc1Rva2VuOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoYWNjZXNzVG9rZW4pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2xvdWRMb2dpblNldEhlYWRlcnMoYWNjZXNzVG9rZW4sIHRlbmFudCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdG9yZVRva2VuOiBTdG9yZWRUb2tlbiA9IHtcclxuICAgICAgICAgICAgICAgICAgdGVuYW50OiB0ZW5hbnQsXHJcbiAgICAgICAgICAgICAgICAgIGFjY2Vzc1Rva2VuOiBhY2Nlc3NUb2tlblxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKHRoaXMuVE9LRU5fU1RPUkFHRV9LRVksIHN0b3JlVG9rZW4pLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoYXV0aFJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGF1dGhSZXMpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmluaXRVc2VyKHRhcmdldEhvc3QpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKCdub3QgYXV0aGVudGljYXRlZCcpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAodXNlcjogRW9Vc2VyKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgIHdpbi5jbG9zZSgpO1xyXG4gICAgICAgICAgICAgIG8ubmV4dCh1c2VyKTtcclxuICAgICAgICAgICAgICBvLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgIH0sIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgd2luLmNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgby5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgIG8uY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKVxyXG4gICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgIG8uZXJyb3IoJ3VuYWJsZSB0byBjYWxsIGRldmljZSBmbG93IGVuZHBvaW50JywgZXJyKTtcclxuICAgICAgICBvLmNvbXBsZXRlKCk7XHJcbiAgICAgIH0pXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0YXJ0cyBwb2xsaW5nIGZvciBsb2dpbiByZXN1bHRzIGluIGNhc2Ugb2YgbG9nZ2luZyBpbiB0byBhIGNsb3VkIGJhY2tlbmQuXHJcbiAgICogQHBhcmFtIHVyaSBVUkkgdG8gcG9sbFxyXG4gICAqIEBwYXJhbSBwb2xsaW5nSW50ZXJ2YWwgUG9sbGluZyBpbnRlcnZhbGwgaW4gbWlsbGlzZWNvbmRzXHJcbiAgICogQHBhcmFtIHN0b3BUcmlnZ2VyIFN1YmplY3QgYWN0aW5nIGFzIHN0b3AgdHJpZ2dlclxyXG4gICAqIEByZXR1cm5zIEFjY2VzcyBUb2tlbiBpZiBsb2dnZWQgaW4gc3VjY2Vzc2Z1bGx5IG9yIE5VTEwgb3RoZXJ3aXNlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjbG91ZExvZ2luUG9sbEZvclJlc3VsdCh1cmk6IHN0cmluZywgcG9sbGluZ0ludGVydmFsOiBudW1iZXIsIHN0b3BUcmlnZ2VyOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcblxyXG4gICAgcmV0dXJuIE9ic2VydmFibGUuY3JlYXRlKG8gPT4ge1xyXG4gICAgICBsZXQgYWNjZXNzR3JhbnRlZCA9IGZhbHNlO1xyXG4gICAgICBsZXQgYWNjZXNzRGVuaWVkID0gZmFsc2U7XHJcblxyXG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgaW50ZXJ2YWwocG9sbGluZ0ludGVydmFsKS5waXBlKFxyXG4gICAgICAgICAgdGFrZVVudGlsKHN0b3BUcmlnZ2VyKSxcclxuICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmh0dHAuZ2V0KHVyaSkucGlwZShcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgIC8vIE9BdXRoIHN0YW5kYXJkIHdlIGFyZSB1c2luZyBpcyByZXR1cm5pbmcgd2l0aCBhIHN0YXR1cyBvZiA0MDAgd2hpbGUgbG9nZ2luZyBpbiAobm8gaWRlYSB3aHk/Pz8pXHJcbiAgICAgICAgICAgICAgLy8gc28gd2UgZ290IHRvIGZldGNoIHRoYXQgdG8gbm90IGJyZWFrIHRoZSBwYXJlbnQgcGlwZVxyXG4gICAgICAgICAgICAgIGlmIChlcnIuc3RhdHVzID09PSA0MDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlT2YoZXJyLmVycm9yKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICkpXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgICBhY2Nlc3NHcmFudGVkID0gISFyZXMuYWNjZXNzX3Rva2VuO1xyXG4gICAgICAgICAgICAgIGFjY2Vzc0RlbmllZCA9IHJlcy5lcnJvciA9PT0gJ2FjY2Vzc19kZW5pZWQnO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoYWNjZXNzR3JhbnRlZCB8fCBhY2Nlc3NEZW5pZWQpIHtcclxuICAgICAgICAgICAgICAgIC8vIGxvZ2dlZCBpblxyXG4gICAgICAgICAgICAgICAgc3RvcFRyaWdnZXIubmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgc3RvcFRyaWdnZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgICAgIG8ubmV4dChhY2Nlc3NHcmFudGVkID8gcmVzLmFjY2Vzc190b2tlbiA6IG51bGwpO1xyXG4gICAgICAgICAgICAgICAgby5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzLmVycm9yID09PSAnZXhwaXJlZF90b2tlbicpIHtcclxuICAgICAgICAgICAgICAgIC8vIGV4cGlyZWQgc28gc2tpcCBwb2xsaW5nXHJcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKCdUb2tlbiBleHBpcmVkJyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0sIGVyciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgby5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgIG8uY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgby5uZXh0KGFjY2Vzc0dyYW50ZWQpO1xyXG4gICAgICAgICAgICAgIG8uY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xvdWRMb2dpblNldEhlYWRlcnMoYWNjZXNzVG9rZW46IHN0cmluZywgdGVuYW50OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuYmFja2VuZC5zZXRIZWFkZXIoJ0F1dGhvcml6YXRpb24nLCAnYmVhcmVyICcgKyBhY2Nlc3NUb2tlbik7XHJcbiAgICB0aGlzLmJhY2tlbmQuc2V0SGVhZGVyKCdYLUlELVRFTkFOVC1OQU1FJywgdGVuYW50KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgY2FsbGVkIHdoaWxlIGFwcCBpbml0XHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGluaXRVc2VyKGhvc3Q/OiBzdHJpbmcpIHtcclxuXHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0KGAke2hvc3QgfHwgJyd9JHt0aGlzLmNvbmZpZy5nZXRMb2dpbkJhc2UoKX0vYXV0aC9pbmZvYCwge2hlYWRlcnN9KVxyXG4gICAgICAucGlwZShzd2l0Y2hNYXAoKGluZm86IEdhdGV3YXlJbmZvKSA9PiB7XHJcbiAgICAgICAgdGhpcy5nYXRld2F5SW5mbyA9IGluZm87XHJcblxyXG4gICAgICAgIHRoaXMuZW52U2VydmljZS5jbG91ZEVudmlyb25tZW50ID0gKHRoaXMuZ2F0ZXdheUluZm8gJiYgdGhpcy5nYXRld2F5SW5mby5vYXV0aDIpO1xyXG4gICAgICAgIGlmICh0aGlzLmlzQ2xvdWRFbnZpcm9ubWVudCgpKSB7XHJcbiAgICAgICAgICAvLyBpbiBjYXNlIG9mIHJ1bm5pbmcgYWdhaW5zdCBjbG91ZCBiYWNrZW5kLCB3ZSB0cnkgdG8gZmV0Y2hcclxuICAgICAgICAgIC8vIGFjY2VzcyB0b2tlbiBhbmQgdGVuYW50IGZyb20gbG9jYWwgc3RvcmFnZVxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5nZXRJdGVtKHRoaXMuVE9LRU5fU1RPUkFHRV9LRVkpLnBpcGUoXHJcbiAgICAgICAgICAgIHN3aXRjaE1hcCgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3VkTG9naW5TZXRIZWFkZXJzKHJlcy5hY2Nlc3NUb2tlbiwgcmVzLnRlbmFudCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmZldGNoVXNlcihpbmZvLCBob3N0KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hVc2VyKGluZm8sIGhvc3QpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSBnYXRld2F5SW5mb1xyXG4gICAqIEBwYXJhbSBob3N0XHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxFb1VzZXI+XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBmZXRjaFVzZXIoZ2F0ZXdheUluZm86IGFueSwgaG9zdD86IHN0cmluZyk6IE9ic2VydmFibGU8RW9Vc2VyPiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQoYCR7aG9zdCB8fCAnJ30ke3RoaXMuY29uZmlnLmdldFVyaSgnc2VydmljZUJhc2UnKX0ke3RoaXMudXNlclByb2ZpbGVVcml9YCwge2hlYWRlcnN9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBzd2l0Y2hNYXAoKHVzZXI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wcm9maWxlID0ge1xyXG4gICAgICAgICAgICBob3N0OiBob3N0IHx8ICcnLFxyXG4gICAgICAgICAgICB1c2VyOiB1c2VyLnVzZXIubmFtZSxcclxuICAgICAgICAgICAgYXV0aDogbnVsbCxcclxuICAgICAgICAgICAgYWN0aXZlOiB0cnVlXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgaWYgKGhvc3QpIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRIb3N0Q29uZmlnKGhvc3QpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMubG9nZ2VkSW5DYWNoZUtleSwgSlNPTi5zdHJpbmdpZnkoe3VzZXJJZDogdXNlci51c2VyLmlkLCBob3N0OiBob3N0fSkpO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5pdEFwcCh1c2VyLCBnYXRld2F5SW5mby5udGxtKTtcclxuICAgICAgICB9KSxcclxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5hdXRoU291cmNlLm5leHQodGhpcy5pc0xvZ2dlZEluKCkpKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9ncyBvdXQgdGhlIGN1cnJlbnQgdXNlci5cclxuICAgKiBAcGFyYW0gZ2F0ZXdheUxvZ291dCBGbGFnIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdG8gcGVyZm9ybSBhIGdhdGV3YXkgbG9nb3V0IGFzIHdlbGxcclxuICAgKi9cclxuICBwdWJsaWMgbG9nb3V0KGdhdGV3YXlMb2dvdXQ/OiBib29sZWFuKSB7XHJcblxyXG4gICAgdGhpcy5hdXRoU291cmNlLm5leHQoZmFsc2UpO1xyXG4gICAgdGhpcy5zeXN0ZW1TdGF0dXNTZXJ2aWNlLnN0b3AoKTtcclxuXHJcbiAgICB0aGlzLnByb2ZpbGUgPSB7XHJcbiAgICAgIGhvc3Q6ICcnLFxyXG4gICAgICB1c2VyOiBudWxsLFxyXG4gICAgICBhdXRoOiBudWxsLFxyXG4gICAgICBhY3RpdmU6IGZhbHNlXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLmlzQ2xvdWRFbnZpcm9ubWVudCgpKSB7XHJcbiAgICAgIC8vIHJlbW92ZSBzdG9yZWQgYWNjZXNzIGRhdGFcclxuICAgICAgdGhpcy5zdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5UT0tFTl9TVE9SQUdFX0tFWSkuc3Vic2NyaWJlKCk7XHJcbiAgICAgIGlmICh0aGlzLmNvcmVDb25maWcuZW52aXJvbm1lbnQucHJvZHVjdGlvbiAmJiBFbnZpcm9ubWVudEVuYWlvLmlzV2ViRW52aXJvbm1lbnQoKSkge1xyXG4gICAgICAgICh3aW5kb3cgYXMgYW55KS5sb2NhdGlvbi5ocmVmID0gdGhpcy5jb25maWcuZ2V0TG9naW5CYXNlKCkgKyAnL2xvZ291dCc7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoZ2F0ZXdheUxvZ291dCkge1xyXG4gICAgICAvLyBieSBkZWZhdWx0IHdlIGFyZSBqdXN0IHJlc2V0dGluZyBpbnRlcm5hbCBzdGF0ZSB0byAnbG9nZ2VkIG91dCcgYW5kIGluXHJcbiAgICAgIC8vIHNvbWUgY2FzZXMgY2FsbCBnYXRld2F5cyBsb2dvdXQgZW5kcG9pbnQgdG8gZG8gbG9nb3V0IHN0dWZmIHRoZXJlIHNpbGVudGx5XHJcbiAgICAgIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5wcm9maWxlLmhvc3QgfHwgJyd9JHt0aGlzLmNvbmZpZy5nZXRMb2dpbkJhc2UoKX0vbG9nb3V0YCkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMuYmFja2VuZC5zZXRBdXRoUHJvZmlsZSh0aGlzLnByb2ZpbGUpO1xyXG4gICAgdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcihFbmFpb0V2ZW50LkxPR09VVCk7XHJcbiAgfVxyXG5cclxuICBpc0Nsb3VkRW52aXJvbm1lbnQoKTogYm9vbGVhbiB7XHJcbiAgICAvLyBvYXV0aDIgaW5kaWNhdGVzIHRoYXQgd2UgYXJlIHJ1bm5pbmcgaW4gYSBjbG91ZCBlbnZpcm9ubWVudFxyXG4gICAgcmV0dXJuIHRoaXMuZ2F0ZXdheUluZm8gJiYgdGhpcy5nYXRld2F5SW5mby5vYXV0aDI7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBmb3IgZGVza3RvcCBhbmQgbW9iaWxlIGRldmljZXMgd2UgcHJvdmlkZSBhIGxpc3Qgb2YgaG9zdHMgZm9yIHRoZSBsb2dpblxyXG4gICAqXHJcbiAgICogQHBhcmFtIHN0cmluZyBob3N0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhZGRIb3N0Q29uZmlnKGhvc3Q6IHN0cmluZykge1xyXG4gICAgY29uc3QgZXhpc3RpbmdIb3N0ID0gdGhpcy5ob3N0cy5maW5kKGggPT4gaCA9PT0gaG9zdCk7XHJcbiAgICBpZiAoIWV4aXN0aW5nSG9zdCkge1xyXG4gICAgICB0aGlzLmhvc3RzLnB1c2goaG9zdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIGN1cnJlbnQgc3RhdGUgb2YgYSB1c2VyIGJlaW5nIGxvZ2dlZCBpbi4gVGhpcyBpcyBraW5kIG9mIHRoZSBzeW5jaHJvbm91cyB2ZXJzaW9uIG9mIHN1YnNjcmliaW5nIHRvIGBhdXRoZW50aWNhdGVkJGAuXHJcbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGVyZSBpcyBhIGxvZ2dlZCBpbiB1c2VyLCBmYWxzZSBvdGhlcndpc2VcclxuICAgKi9cclxuICBwdWJsaWMgaXNMb2dnZWRJbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnByb2ZpbGUudXNlciAhPT0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHVzZXJcclxuICAgKiBAcGFyYW0gYm9vbGVhbiBzc29cclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEVvVXNlcj5cclxuICAgKi9cclxuICBwcml2YXRlIGluaXRBcHAodXNlcjogYW55LCBzc28/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxFb1VzZXI+IHtcclxuXHJcbiAgICBjb25zdCBjdXJyVXNlciA9IG5ldyBFb1VzZXIodXNlcik7XHJcbiAgICB0aGlzLmJhY2tlbmQuc2V0QXV0aFByb2ZpbGUodGhpcy5wcm9maWxlKTtcclxuICAgIHRoaXMudXNlclNlcnZpY2Uuc2V0Q3VycmVudFVzZXIodXNlcik7XHJcbiAgICBjb25zdCBjYXBhYmlsaXRpZXMgPSB0aGlzLmNhcGFiaWxpdGllc1NlcnZpY2Uuc2V0Q2FwYWJpbGl0aWVzKHVzZXIuY2FwYWJpbGl0aWVzLCBzc28pO1xyXG5cclxuICAgIHRoaXMuc3lzdGVtU3RhdHVzU2VydmljZS5pbml0KHRoaXMuY29uZmlnLmdldFJhdygnc3lzdGVtU3RhdHVzVXBkYXRlSW50ZXJ2YWwnKSk7XHJcblxyXG4gICAgLy8gdXBkYXRlIHN0YXRlc1xyXG4gICAgaWYgKGNhcGFiaWxpdGllcy5pbmJveCkge1xyXG4gICAgICB0aGlzLmluYm94U2VydmljZS5yZWZyZXNoSW5ib3hTdGF0ZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNhcGFiaWxpdGllcy5pbnRyYXkpIHtcclxuICAgICAgdGhpcy5wcmVwYXJlU2VydmljZS5yZWZyZXNoUHJlcGFyZWRJdGVtc0NvdW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdG9kbyA9IFtcclxuICAgICAgdGhpcy5icG1TZXJ2aWNlLmdldEV4ZWN1dGFibGVQcm9jZXNzZXMoKSxcclxuICAgICAgdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldFN5c3RlbURlZmluaXRpb24oY3VyclVzZXIpXHJcbiAgICBdO1xyXG5cclxuICAgIHJldHVybiBvYnNlcnZhYmxlRm9ya0pvaW4odG9kbykucGlwZShcclxuICAgICAgbWFwKCgpID0+IGN1cnJVc2VyKVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -120,14 +120,15 @@ export class UserService {
|
|
|
120
120
|
}
|
|
121
121
|
/**
|
|
122
122
|
* Set a new current user
|
|
123
|
-
* @param
|
|
123
|
+
* @param res The user to be set as current user
|
|
124
124
|
*/
|
|
125
|
-
setCurrentUser(
|
|
126
|
-
this.user =
|
|
125
|
+
setCurrentUser(res) {
|
|
126
|
+
this.user = new EoUser(res);
|
|
127
|
+
this.passwordValidationSettings = res.passwortvalidation;
|
|
127
128
|
this.user.setImageBase(this.backend.getServiceBase());
|
|
128
129
|
this.backend.setHeader('Accept-Language', this.user.getSchemaLocale());
|
|
129
130
|
const languages = this.config.getClientLocales().map(lang => lang.iso);
|
|
130
|
-
let userLang = user.getClientLocale();
|
|
131
|
+
let userLang = this.user.getClientLocale();
|
|
131
132
|
if (languages.indexOf(userLang) === -1) {
|
|
132
133
|
userLang = this.config.getDefaultClientLocale();
|
|
133
134
|
}
|
|
@@ -286,7 +287,19 @@ export class UserService {
|
|
|
286
287
|
* Fetches the settings for the current user and stores the new User object on the session
|
|
287
288
|
*/
|
|
288
289
|
refreshCurrentUser() {
|
|
289
|
-
return this.backend.get(this.USER_FETCH_URI).pipe(map(res => this.setCurrentUser(
|
|
290
|
+
return this.backend.get(this.USER_FETCH_URI).pipe(map(res => this.setCurrentUser(res)));
|
|
291
|
+
}
|
|
292
|
+
validatePassword(password) {
|
|
293
|
+
if (password.length < this.passwordValidationSettings.minlength) {
|
|
294
|
+
return { type: 'short', amount: this.passwordValidationSettings.minlength };
|
|
295
|
+
}
|
|
296
|
+
if (password.replace(/[^0-9]/g, '').length < this.passwordValidationSettings.minnumber) {
|
|
297
|
+
return { type: 'number', amount: this.passwordValidationSettings.minnumber };
|
|
298
|
+
}
|
|
299
|
+
if (password.replace(/[a-zA-Z0-9ß ]/g, '').length < this.passwordValidationSettings.minspecialchars) {
|
|
300
|
+
return { type: 'specialchars', amount: this.passwordValidationSettings.minspecialchars };
|
|
301
|
+
}
|
|
302
|
+
return { type: 'valid', amount: null };
|
|
290
303
|
}
|
|
291
304
|
}
|
|
292
305
|
UserService.decorators = [
|
|
@@ -300,4 +313,4 @@ UserService.ctorParameters = () => [
|
|
|
300
313
|
{ type: SystemService },
|
|
301
314
|
{ type: Config }
|
|
302
315
|
];
|
|
303
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL3VzZXIvdXNlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFhLGVBQWUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDeEMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN2QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUVoRDs7Ozs7Ozs7OztHQVVHO0FBRUgsTUFBTSxPQUFPLFdBQVc7SUEyQnRCOztPQUVHO0lBQ0gsWUFBb0IsT0FBdUIsRUFDdkIsU0FBMkIsRUFDM0IsTUFBYyxFQUNkLFlBQTBCLEVBQzFCLE1BQXFC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QUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNoRixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVNLFlBQVksQ0FBQyxTQUFpQjtRQUNuQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFHRDs7T0FFRztJQUNILGNBQWMsQ0FBQyxPQUFnQztRQUM3QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNLLGtCQUFrQjtRQUN4QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RyxDQUFDOzs7WUFyVEYsVUFBVTs7O1lBckJILGNBQWM7WUFGZCxnQkFBZ0I7WUFLaEIsTUFBTTtZQUlOLFlBQVk7WUFIWixhQUFhO1lBRmIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZSwgQmVoYXZpb3JTdWJqZWN0LCBmb3JrSm9pbiwgb2Z9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge21hcCwgdGFwLCBkZWJvdW5jZVRpbWUsIGZpbHRlcn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQge0NoYW5nZVBhc3N3b3JkSW50ZXJmYWNlfSBmcm9tICcuLi8uLi9pbnRlcmZhY2UvY2hhbmdlLXBhc3N3b3JkLmludGVyZmFjZSc7XHJcbmltcG9ydCB7QmFja2VuZFNlcnZpY2V9IGZyb20gJy4uL2JhY2tlbmQvYmFja2VuZC5zZXJ2aWNlJztcclxuaW1wb3J0IHtFb1VzZXJ9IGZyb20gJy4uLy4uL21vZGVsL2VvLXVzZXIubW9kZWwnO1xyXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnL2NvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHtMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9sb2dnZXInO1xyXG5pbXBvcnQge1N5c3RlbVNlcnZpY2V9IGZyb20gJy4uL3N5c3RlbS9zeXN0ZW0uc2VydmljZSc7XHJcbmltcG9ydCB7VXRpbHN9IGZyb20gJy4uLy4uL3V0aWwvdXRpbHMnO1xyXG5pbXBvcnQge0VuYWlvRXZlbnR9IGZyb20gJy4uL2V2ZW50cy9ldmVudHMnO1xyXG5pbXBvcnQge0V2ZW50U2VydmljZX0gZnJvbSAnLi4vZXZlbnRzL2V2ZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQge0RpcmVjdGlvbn0gZnJvbSAnLi4vY29uZmlnL2NvbmZpZy5lbnVtJztcclxuXHJcbi8qKlxyXG4gKiBBcHBsaWNhdGlvbnMgdXNlciBzZXJ2aWNlLlxyXG4gKiBUbyBnZXQgdGhlIGN1cnJlbnQgdXNlciB5b3UgaGF2ZSB0byBzdWJzY3JpYmUgdG8gdGhlIHNlcnZpY2VzIGB1c2VyJGAgb2JzZXJ2YWJsZS5cclxuICpcclxuICogYGBgamF2YXNjcmlwdFxyXG4gKiB1c2VyU2VydmljZS51c2VyJC5zdWJzY3JpYmUoKHVzZXIpID0+IHRoaXMudXNlciA9IHVzZXIpO1xyXG4gKiBgYGBcclxuICpcclxuICogVGhpcyB3YXkgeW91ciBjb21wb25lbnQgd2lsbCBiZSBwcm92aWRlZCB3aXRoIGFuIHVwLXRvLWRhdGUgdXNlciBvYmplY3Qgbm8gbWF0dGVyXHJcbiAqIHdoaWNoIGNvbXBvbmVudCBjaGFuZ2VzIG9uIG9mIHRoZSB1c2VycyBwcm9wZXJ0aWVzLlxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVXNlclNlcnZpY2Uge1xyXG5cclxuICBVU0VSX0ZFVENIX1VSSSA9ICcvdXNlcj9mYXZvcml0ZXM9dHJ1ZSZwcml2aWxlZ2VzPXRydWUmcm9sZXM9dHJ1ZSZkZXB1dGllcz10cnVlJnN1YnN0aXR1dGVzT2Y9dHJ1ZSc7XHJcblxyXG4gIHByaXZhdGUgdXNlcjogRW9Vc2VyID0gbnVsbDtcclxuICBwcml2YXRlIHVzZXJTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEVvVXNlcj4odGhpcy51c2VyKTtcclxuICAvKipcclxuICAgKiBPYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSBjdXJyZW50IHVzZXJcclxuICAgKi9cclxuICBwdWJsaWMgdXNlciQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMudXNlclNvdXJjZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBmYXZvcml0ZXMgPSBudWxsO1xyXG4gIHByaXZhdGUgZmF2b3JpdGVzU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KHRoaXMuZmF2b3JpdGVzKTtcclxuICAvKipcclxuICAgKiBPYnNlcnZhYmxlIGVtaXR0aW5nIGN1cnJlbnQgdXNlcnMgZmF2b3JpdGVzXHJcbiAgICovXHJcbiAgcHVibGljIGZhdm9yaXRlc0dyaWREYXRhJDogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5mYXZvcml0ZXNTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZShkZWJvdW5jZVRpbWUoMTAwKSwgZmlsdGVyKHYgPT4gdikpO1xyXG4gIHB1YmxpYyBmYXZvcml0ZXMkOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLmZhdm9yaXRlc0dyaWREYXRhJC5waXBlKHRoaXMuYmFja2VuZC5ncmlkRGF0YUZpbHRlcik7XHJcblxyXG4gIHByaXZhdGUgbm90aWZpY2F0aW9ucyA9IG51bGw7XHJcbiAgcHJpdmF0ZSBub3RpZmljYXRpb25zU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KHRoaXMubm90aWZpY2F0aW9ucyk7XHJcbiAgLyoqXHJcbiAgICogT2JzZXJ2YWJsZSBlbWl0dGluZyBjdXJyZW50IHVzZXJzIG5vdGlmaWNhdGlvbnNcclxuICAgKi9cclxuICBwdWJsaWMgbm90aWZpY2F0aW9uc0dyaWREYXRhJDogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5ub3RpZmljYXRpb25zU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGVib3VuY2VUaW1lKDEwMCksIGZpbHRlcih2ID0+IHYpKTtcclxuICBwdWJsaWMgbm90aWZpY2F0aW9ucyQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMubm90aWZpY2F0aW9uc0dyaWREYXRhJC5waXBlKHRoaXMuYmFja2VuZC5ncmlkRGF0YUZpbHRlcik7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXIsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIHN5c3RlbTogU3lzdGVtU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGNvbmZpZzogQ29uZmlnKSB7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBjdXJyZW50IHVzZXIuXHJcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgdXNlciBvciBOVUxMIGlmIG5vIHVzZXIgaXMgbG9nZ2VkIGluXHJcbiAgICovXHJcbiAgcHVibGljIGdldEN1cnJlbnRVc2VyKCk6IEVvVXNlciB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBwcmVzZW5jZSBvZiB0aGUgY3VycmVudCB1c2VyXHJcbiAgICogQHBhcmFtIHByZXNlbnQgVmFsdWUgdG8gc2V0IHRoZSB1c2VycyBwcmVzZW5jZSB0b1xyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRQcmVzZW5jZShwcmVzZW50OiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHJcbiAgICBpZiAocHJlc2VudCAhPT0gdGhpcy51c2VyLnByZXNlbnQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wdXQoJy91c2VyP3ByZXNlbmNlPScgKyBwcmVzZW50KVxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgdGFwKF8gPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnVzZXIucHJlc2VudCA9IHByZXNlbnQ7XHJcbiAgICAgICAgICAgIHRoaXMudXNlclNvdXJjZS5uZXh0KHRoaXMudXNlcik7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRlcHV0aWVzIGZvciB0aGUgY3VycmVudCB1c2VyXHJcbiAgICogQHBhcmFtIGRlcHV0aWVzTmFtZXMgTmFtZXMgb2YgdGhlIHVzZXJzIHRvIGJlIHNldCBhcyBkZXB1dGllc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXREZXB1dGllcyhkZXB1dGllc05hbWVzOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnB1dChgL3VzZXIvZGVwdXR5P3VzZXI9JHtkZXB1dGllc05hbWVzLmpvaW4oJyZ1c2VyPScpfWApLnBpcGUoXHJcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnJlZnJlc2hDdXJyZW50VXNlcigpLnN1YnNjcmliZSgpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoYW5nZSB0aGUgdXNlcnMgY2xpZW50IGxvY2FsZVxyXG4gICAqIEBwYXJhbSBpc28gSVNPIGxvY2FsZSBzdHJpbmcgdG8gYmUgc2V0IGFzIG5ldyBjbGllbnQgbG9jYWxlXHJcbiAgICovXHJcbiAgcHVibGljIGNoYW5nZUNsaWVudExvY2FsZShpc286IHN0cmluZykge1xyXG4gICAgdGhpcy51c2VyLnVzZXJTZXR0aW5nc1snY2xpZW50bG9jYWxlJ10gPSBpc287XHJcbiAgICB0aGlzLmJhY2tlbmRcclxuICAgICAgLnB1dCgnL3VzZXIvY29uZmlnL3dlYicsIHRoaXMudXNlci51c2VyU2V0dGluZ3MpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdDaGFuZ2VkIGNsaWVudCBsb2NhbGUgdG8gXFwnJyArIGlzbyArICdcXCcnKTtcclxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS51c2UoaXNvKTtcclxuICAgICAgICB0aGlzLnVzZXIudWlEaXJlY3Rpb24gPSAodGhpcy5jb25maWcuZ2V0Q2xpZW50TG9jYWxlcygpLmZpbmQobCA9PiBsLmlzbyA9PT0gaXNvKSB8fCB7fSkuZGlyIHx8IERpcmVjdGlvbi5MVFI7XHJcbiAgICAgICAgdGhpcy51c2VyU291cmNlLm5leHQodGhpcy51c2VyKTtcclxuICAgICAgICB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKEVuYWlvRXZlbnQuQ0xJRU5UX0xPQ0FMRV9DSEFOR0VELCBpc28pO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoYW5nZSB0aGUgdXNlcnMgc2NoZW1hIGxvY2FsZVxyXG4gICAqIEBwYXJhbSBpc28gSVNPIGxvY2FsZSBzdHJpbmcgdG8gYmUgc2V0IGFzIG5ldyBzY2hlbWEgbG9jYWxlXHJcbiAgICovXHJcbiAgcHVibGljIGNoYW5nZVNjaGVtYUxvY2FsZShpc286IHN0cmluZykge1xyXG4gICAgdGhpcy51c2VyLnNjaGVtYUxvY2FsZSA9IGlzbztcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcclxuICAgICAgLnB1dCgnL3VzZXIvbG9jYWxlLycgKyB0aGlzLnVzZXIuc2NoZW1hTG9jYWxlKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0NoYW5nZWQgc2NoZW1hIGxvY2FsZSB0byBcXCcnICsgaXNvICsgJ1xcJycpO1xyXG4gICAgICAgICAgdGhpcy51c2VyU291cmNlLm5leHQodGhpcy51c2VyKTtcclxuICAgICAgICAgIHRoaXMuYmFja2VuZC5zZXRIZWFkZXIoJ0FjY2VwdC1MYW5ndWFnZScsIHRoaXMudXNlci5nZXRTY2hlbWFMb2NhbGUoKSk7XHJcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnTG9hZGluZyBzeXN0ZW0gZGVmaW5pdGlvbiBmb3IgbmV3IGxvY2FsZS4nKTtcclxuICAgICAgICAgIHRoaXMuc3lzdGVtLmdldFN5c3RlbURlZmluaXRpb24odGhpcy51c2VyKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5TQ0hFTUFfTE9DQUxFX0NIQU5HRUQsIGlzbyk7XHJcbiAgICAgICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IGEgbmV3IGN1cnJlbnQgdXNlclxyXG4gICAqIEBwYXJhbSB1c2VyIFRoZSB1c2VyIHRvIGJlIHNldCBhcyBjdXJyZW50IHVzZXJcclxuICAgKi9cclxuICBwdWJsaWMgc2V0Q3VycmVudFVzZXIodXNlcjogRW9Vc2VyKSB7XHJcbiAgICB0aGlzLnVzZXIgPSB1c2VyO1xyXG4gICAgdGhpcy51c2VyLnNldEltYWdlQmFzZSh0aGlzLmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKSk7XHJcbiAgICB0aGlzLmJhY2tlbmQuc2V0SGVhZGVyKCdBY2NlcHQtTGFuZ3VhZ2UnLCB0aGlzLnVzZXIuZ2V0U2NoZW1hTG9jYWxlKCkpO1xyXG5cclxuICAgIGNvbnN0IGxhbmd1YWdlcyA9IHRoaXMuY29uZmlnLmdldENsaWVudExvY2FsZXMoKS5tYXAobGFuZyA9PiBsYW5nLmlzbyk7XHJcbiAgICBsZXQgdXNlckxhbmcgPSB1c2VyLmdldENsaWVudExvY2FsZSgpO1xyXG4gICAgaWYgKGxhbmd1YWdlcy5pbmRleE9mKHVzZXJMYW5nKSA9PT0gLTEpIHtcclxuICAgICAgdXNlckxhbmcgPSB0aGlzLmNvbmZpZy5nZXREZWZhdWx0Q2xpZW50TG9jYWxlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnU2V0dGluZyBjbGllbnQgbG9jYWxlIHRvIFxcJycgKyB1c2VyTGFuZyArICdcXCcnKTtcclxuICAgIHRoaXMudHJhbnNsYXRlLnVzZSh1c2VyTGFuZyk7XHJcbiAgICB0aGlzLnVzZXIudWlEaXJlY3Rpb24gPSAodGhpcy5jb25maWcuZ2V0Q2xpZW50TG9jYWxlcygpLmZpbmQobCA9PiBsLmlzbyA9PT0gdXNlckxhbmcpIHx8IHt9KS5kaXIgfHwgRGlyZWN0aW9uLkxUUjtcclxuICAgIFxyXG4gICAgdGhpcy51c2VyU291cmNlLm5leHQodGhpcy51c2VyKTtcclxuXHJcbiAgICB0aGlzLmZhdm9yaXRlcyA9IG51bGw7XHJcbiAgICB0aGlzLmZhdm9yaXRlc1NvdXJjZS5uZXh0KHRoaXMuZmF2b3JpdGVzKTtcclxuXHJcbiAgICB0aGlzLm5vdGlmaWNhdGlvbnMgPSBudWxsO1xyXG4gICAgdGhpcy5ub3RpZmljYXRpb25zU291cmNlLm5leHQodGhpcy5ub3RpZmljYXRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgdGhlIGN1cnJlbnQgdXNlcnMgZmF2b3JpdGVzXHJcbiAgICovXHJcbiAgcHVibGljIGdldEZhdm9yaXRlcygpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cclxuICAgIC8vIG9ubHkgZmF2b3JpdGUgb2JqZWN0cyBvZiB0eXBlICdETVNfT0JKRUNUJywgYXJlIGFjY2VwdGVkXHJcbiAgICAvLyByZWFkIG1vcmU6IGh0dHA6Ly9qaXJhLm9wdGltYWwtc3lzdGVtcy5kZS9icm93c2UvQ09PTC0yMzE2XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5nZXRKc29uKCcvdXNlci9mYXZvcml0ZXMnKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAocmVzID0+IHJlcyAmJiByZXMuZmlsdGVyKHIgPT4gci5mYXZvcml0ZXR5cGUgPT09ICdETVNfT0JKRUNUJykpLFxyXG4gICAgICAgIHRhcChyZXMgPT4ge1xyXG4gICAgICAgICAgdGhpcy5mYXZvcml0ZXMgPSByZXM7XHJcbiAgICAgICAgICB0aGlzLmZhdm9yaXRlc1NvdXJjZS5uZXh0KHRoaXMuZmF2b3JpdGVzKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgLy8gLm1hcChyZXMgPT4ge1xyXG4gICAgLy8gICBsZXQgZG1zT2JqZWN0ID0gdGhpcy5yZXNvbHZlT2JqZWN0VHlwZXMobmV3IERtc09iamVjdChyZXMpKTtcclxuICAgIC8vICAgcmV0dXJuIGRtc09iamVjdDtcclxuICAgIC8vIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU29mdCB1cGRhdGUgZm9yIHRoZSB1c2VycyBmYXZvcml0ZXNcclxuICAgKiBAcGFyYW0gaWQgSUQgb2YgdGhlIGZhdm9yaXRlIHRvIGJlIHVwZGF0ZWRcclxuICAgKiBAcGFyYW0gaXRlbSBUaGUgbmV3IGZhdm9yaXRlIGl0ZW1cclxuICAgKiBAcGFyYW0gbXVsdGkgV2hldGhlciBvciBub3QgdG8gdXBkYXRlIG11bHRpcGxlIGl0ZW1zXHJcbiAgICovXHJcbiAgcHVibGljIHVwZGF0ZUZhdm9yaXRlcyhpZD86IHN0cmluZywgaXRlbT86IGFueSwgbXVsdGk/OiBhbnlbXSkge1xyXG4gICAgaWYgKHRoaXMuYmFja2VuZC51cGRhdGUodGhpcy5mYXZvcml0ZXMsIG11bHRpIHx8IFt7aWQsIGl0ZW19XSkpIHtcclxuICAgICAgdGhpcy5mYXZvcml0ZXNTb3VyY2UubmV4dCh0aGlzLmZhdm9yaXRlcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSB1c2VycyBub3RpZmljYXRpb25zIChyZXN1Ym1pc3Npb25zIGFuZCBzdWJzY3JpcHRpb25zKVxyXG4gICAqIEByZXR1cm5zIFJlc29sdmVkIGJ5IGxpc3Qgb2YgdGhlIHVzZXJzIG5vdGlmaWNhdGlvbnNcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0Tm90aWZpY2F0aW9ucygpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3Qgbm90aWZpY2F0aW9uRGF0YSA9IFtcclxuICAgICAgdGhpcy5nZXRTdWJzY3JpcHRpb24oKSxcclxuICAgICAgdGhpcy5nZXRSZXN1Ym1pc3Npb24oKVxyXG4gICAgXTtcclxuICAgIHJldHVybiBmb3JrSm9pbihub3RpZmljYXRpb25EYXRhKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHVzZXJzIHJlc3VibWlzc2lvbnNcclxuICAgKiBAcmV0dXJucyBDb2xsZWN0aW9uIG9mIHVzZXJzIHJlc3VibWlzc2lvbnNcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0UmVzdWJtaXNzaW9uKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldEpzb24oJy9tZXNzYWdlcHJvdmlkZXIvcmVzdWJtaXNzaW9uL2xpc3QnKS5waXBlKFxyXG4gICAgICB0YXAocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9ucyA9IHJlc3BvbnNlO1xyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uc1NvdXJjZS5uZXh0KHRoaXMubm90aWZpY2F0aW9ucyk7XHJcbiAgICAgIH0pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHVzZXJzIHN1YnNjcmlwdGlvbnNcclxuICAgKiBAcmV0dXJucyBDb2xsZWN0aW9uIG9mIHVzZXJzIHN1YnNjcmlwdGlvbnNcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0U3Vic2NyaXB0aW9uKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5nZXRKc29uKCcvbWVzc2FnZXByb3ZpZGVyL3N1YnNjcmlwdGlvbi9saXN0JykucGlwZShcclxuICAgICAgICB0YXAocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zID0gcmVzcG9uc2U7XHJcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTb3VyY2UubmV4dCh0aGlzLm5vdGlmaWNhdGlvbnMpO1xyXG4gICAgICAgIH0pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZXMgYSBub3RpZmljYXRpb25cclxuICAgKiBAcGFyYW0gaWQgSUQgb2YgdGhlIG5vdGlmaWNhdGlvbiB0byBiZSByZW1vdmVkXHJcbiAgICogQHBhcmFtIHR5cGUgVGhlIG5vdGlmaWNhdGlvbnMgdHlwZSAoJ1NVQlNDUklQVElPTicsICdSRVNVQk1JU1NJT04nKVxyXG4gICAqL1xyXG4gIHB1YmxpYyByZW1vdmVOb3RpZmljYXRpb25zKGlkOiBzdHJpbmcsIHR5cGU6IHN0cmluZykge1xyXG4gICAgbGV0IG1lc3NhZ2V0eXBlOiBzdHJpbmc7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAnU1VCU0NSSVBUSU9OJzpcclxuICAgICAgICBtZXNzYWdldHlwZSA9ICdzdWJzY3JpcHRpb24nO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdSRVNVQk1JU1NJT04nOlxyXG4gICAgICAgIG1lc3NhZ2V0eXBlID0gJ3Jlc3VibWlzc2lvbic7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5kZWwoYC9tZXNzYWdlcHJvdmlkZXIvJHttZXNzYWdldHlwZX0vYCArIGlkKS5waXBlKHRhcChyZXMgPT4gdGhpcy51cGRhdGVOb3RpZmljYXRpb25zKCcnKSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU29mdCB1cGRhdGUgZm9yIHVzZXJzIG5vdGlmaWNhdGlvbnNcclxuICAgKi9cclxuICBwdWJsaWMgdXBkYXRlTm90aWZpY2F0aW9ucyhpZD86IHN0cmluZywgaXRlbT86IGFueSwgbXVsdGk/OiBhbnlbXSkge1xyXG4gICAgaWYgKHRoaXMuYmFja2VuZC51cGRhdGUodGhpcy5ub3RpZmljYXRpb25zLCBtdWx0aSB8fCBbe2lkLCBpdGVtfV0pKSB7XHJcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uc1NvdXJjZS5uZXh0KHRoaXMubm90aWZpY2F0aW9ucyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBVUkkgdG8gYSB1c2VycyBhdmF0YXIgaW1hZ2VcclxuICAgKiBAcGFyYW0gdXNlcklkIFRoZSB1c2VycyBJRFxyXG4gICAqIEByZXR1cm5zIFVSSSB0byB0aGUgdXNlciBpbWFnZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRVc2VySW1hZ2VVcmkodXNlcklkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBgJHt0aGlzLmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKX0vb3JnYW5pemF0aW9uL2ltYWdlLyR7dXNlcklkfWA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmVzIGEgZmF2b3JpdGUgaXRlbVxyXG4gICAqIEBwYXJhbSBmYXZvcml0ZUlkIElEIG9mIHRoZSBmYXZvcml0ZSBpdGVtIHRvIGJlIHJlbW92ZWRcclxuICAgKi9cclxuICBwdWJsaWMgcmVtb3ZlRmF2b3JpdGUoZmF2b3JpdGVJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmRlbCgnL3VzZXIvZmF2b3JpdGUvJyArIGZhdm9yaXRlSWQpLnBpcGUodGFwKHJlcyA9PiB0aGlzLnVwZGF0ZUZhdm9yaXRlcyhmYXZvcml0ZUlkKSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGEgbmV3IGZhdm9yaXRlIGl0ZW0gZm9yIHRoZSBjdXJyZW50IHVzZXJcclxuICAgKiBAcGFyYW0gaWQgSUQgb2YgdGhlIGRtcyBvYmplY3QgdG8gYmUgc2V0IHVwIGFzIGZhdm9yaXRlXHJcbiAgICogQHBhcmFtIHR5cGUgVGhlIG9iamVjdCB0eXBlIG9mIHRoZSBkbXMgb2JqZWN0XHJcbiAgICogQHBhcmFtIHRpdGxlIFRoZSBmYXZvcml0ZXMgdGl0bGVcclxuICAgKi9cclxuICBwdWJsaWMgY3JlYXRlRmF2b3JpdGUoaWQ6IHN0cmluZywgdHlwZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB1cmkgPSBVdGlscy5idWlsZFVyaSgnL2Rtcy9mYXZvcml0ZS8nICsgaWQsIHt0eXBlLCB0aXRsZX0pO1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wb3N0KHVyaSwge30pLnBpcGUodGFwKHJlcyA9PiB0aGlzLmdldEZhdm9yaXRlcygpLnN1YnNjcmliZSgpKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgcHVibGljIHJlbW92ZUZhdm9yaXRlc0ZvclRhcmdldChpZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmRlbCgnL2Rtcy9mYXZvcml0ZS8nICsgaWQpLnBpcGUodGFwKFxyXG4gICAgICByZXMgPT4ge1xyXG4gICAgICAgIGNvbnN0IHRvUmVtb3ZlID0gdGhpcy5mYXZvcml0ZXMuZmlsdGVyKGkgPT4gaS50YXJnZXQuaWQgPT09IGlkKS5tYXAoaSA9PiBPYmplY3QuYXNzaWduKHtcclxuICAgICAgICAgIGlkOiBpLmlkXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRmF2b3JpdGVzKG51bGwsIG51bGwsIHRvUmVtb3ZlKTtcclxuICAgICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hhbmdlcyB0aGUgdXNlcnMgcHJlZmVycmVkIGxvY2sgbW9kZSBhbmQgcGVyc2lzdHMgaXQgb24gdGhlIHNlcnZlclxyXG4gICAqIEBwYXJhbSBsb2NrIFRoZSB2YWx1ZSB0byBzZXQgdGhlIGxvY2sgc2V0dGluZ3MgdG9cclxuICAgKi9cclxuICBwdWJsaWMgY2hhbmdlTG9ja1NldHRpbmcobG9jazogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnVzZXIudXNlclNldHRpbmdzLmFsd2F5c2xvY2sgPSBsb2NrO1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wdXQoJy91c2VyL2NvbmZpZy93ZWInLCB0aGlzLnVzZXIudXNlclNldHRpbmdzKS5waXBlKG1hcCgoKSA9PiB7XHJcbiAgICAgIHRoaXMucmVmcmVzaEN1cnJlbnRVc2VyKCkuc3Vic2NyaWJlKCk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFzUHJpdmlsZWdlKHByaXZpbGVnZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLnVzZXIucHJpdmlsZWdlcy5maW5kKHByaXYgPT4gcHJpdi5uYW1lID09PSBwcml2aWxlZ2UpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIENoYW5nZXMgdGhlIHVzZXJzIHBhc3N3b3JkIGFuZCBwZXJzaXN0cyBpdCBvbiB0aGUgc2VydmVyXHJcbiAgICovXHJcbiAgY2hhbmdlUGFzc3dvcmQocGF5bG9hZDogQ2hhbmdlUGFzc3dvcmRJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wdXQoYC91c2VyL3Bhc3N3b3JkYCwgcGF5bG9hZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSBzZXR0aW5ncyBmb3IgdGhlIGN1cnJlbnQgdXNlciBhbmQgc3RvcmVzIHRoZSBuZXcgVXNlciBvYmplY3Qgb24gdGhlIHNlc3Npb25cclxuICAgKi9cclxuICBwcml2YXRlIHJlZnJlc2hDdXJyZW50VXNlcigpIHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZ2V0KHRoaXMuVVNFUl9GRVRDSF9VUkkpLnBpcGUobWFwKHJlcyA9PiB0aGlzLnNldEN1cnJlbnRVc2VyKG5ldyBFb1VzZXIocmVzKSkpKTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
316
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL3VzZXIvdXNlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFhLGVBQWUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDeEMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN2QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUVoRDs7Ozs7Ozs7OztHQVVHO0FBRUgsTUFBTSxPQUFPLFdBQVc7SUE2QnRCOztPQUVHO0lBQ0gsWUFBb0IsT0FBdUIsRUFDdkIsU0FBMkIsRUFDM0IsTUFBYyxFQUNkLFlBQTBCLEVBQzFCLE1BQXFC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TSxFQUFFLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxTQUFTLEVBQUMsQ0FBQztTQUMzRTtRQUVELElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxTQUFTLEVBQUU7WUFDdEYsT0FBTyxFQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxTQUFTLEVBQUMsQ0FBQztTQUM1RTtRQUVELElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGVBQWUsRUFBRTtZQUNuRyxPQUFPLEVBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGVBQWUsRUFBQyxDQUFDO1NBQ3hGO1FBRUQsT0FBUSxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQyxDQUFDO0lBQ3hDLENBQUM7OztZQXhVRixVQUFVOzs7WUFyQkgsY0FBYztZQUZkLGdCQUFnQjtZQUtoQixNQUFNO1lBSU4sWUFBWTtZQUhaLGFBQWE7WUFGYixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtPYnNlcnZhYmxlLCBCZWhhdmlvclN1YmplY3QsIGZvcmtKb2luLCBvZn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7bWFwLCB0YXAsIGRlYm91bmNlVGltZSwgZmlsdGVyfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7Q2hhbmdlUGFzc3dvcmRJbnRlcmZhY2V9IGZyb20gJy4uLy4uL2ludGVyZmFjZS9jaGFuZ2UtcGFzc3dvcmQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtCYWNrZW5kU2VydmljZX0gZnJvbSAnLi4vYmFja2VuZC9iYWNrZW5kLnNlcnZpY2UnO1xyXG5pbXBvcnQge0VvVXNlcn0gZnJvbSAnLi4vLi4vbW9kZWwvZW8tdXNlci5tb2RlbCc7XHJcbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcvY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQge0xvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL2xvZ2dlcic7XHJcbmltcG9ydCB7U3lzdGVtU2VydmljZX0gZnJvbSAnLi4vc3lzdGVtL3N5c3RlbS5zZXJ2aWNlJztcclxuaW1wb3J0IHtVdGlsc30gZnJvbSAnLi4vLi4vdXRpbC91dGlscyc7XHJcbmltcG9ydCB7RW5haW9FdmVudH0gZnJvbSAnLi4vZXZlbnRzL2V2ZW50cyc7XHJcbmltcG9ydCB7RXZlbnRTZXJ2aWNlfSBmcm9tICcuLi9ldmVudHMvZXZlbnQuc2VydmljZSc7XHJcbmltcG9ydCB7RGlyZWN0aW9ufSBmcm9tICcuLi9jb25maWcvY29uZmlnLmVudW0nO1xyXG5cclxuLyoqXHJcbiAqIEFwcGxpY2F0aW9ucyB1c2VyIHNlcnZpY2UuXHJcbiAqIFRvIGdldCB0aGUgY3VycmVudCB1c2VyIHlvdSBoYXZlIHRvIHN1YnNjcmliZSB0byB0aGUgc2VydmljZXMgYHVzZXIkYCBvYnNlcnZhYmxlLlxyXG4gKlxyXG4gKiBgYGBqYXZhc2NyaXB0XHJcbiAqIHVzZXJTZXJ2aWNlLnVzZXIkLnN1YnNjcmliZSgodXNlcikgPT4gdGhpcy51c2VyID0gdXNlcik7XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBUaGlzIHdheSB5b3VyIGNvbXBvbmVudCB3aWxsIGJlIHByb3ZpZGVkIHdpdGggYW4gdXAtdG8tZGF0ZSB1c2VyIG9iamVjdCBubyBtYXR0ZXJcclxuICogd2hpY2ggY29tcG9uZW50IGNoYW5nZXMgb24gb2YgdGhlIHVzZXJzIHByb3BlcnRpZXMuXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBVc2VyU2VydmljZSB7XHJcblxyXG4gIFVTRVJfRkVUQ0hfVVJJID0gJy91c2VyP2Zhdm9yaXRlcz10cnVlJnByaXZpbGVnZXM9dHJ1ZSZyb2xlcz10cnVlJmRlcHV0aWVzPXRydWUmc3Vic3RpdHV0ZXNPZj10cnVlJztcclxuXHJcbiAgcHJpdmF0ZSB1c2VyOiBFb1VzZXIgPSBudWxsO1xyXG4gIHByaXZhdGUgdXNlclNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RW9Vc2VyPih0aGlzLnVzZXIpO1xyXG4gIC8qKlxyXG4gICAqIE9ic2VydmFibGUgZW1pdHRpbmcgdGhlIGN1cnJlbnQgdXNlclxyXG4gICAqL1xyXG4gIHB1YmxpYyB1c2VyJDogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy51c2VyU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIGZhdm9yaXRlcyA9IG51bGw7XHJcbiAgcHJpdmF0ZSBmYXZvcml0ZXNTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4odGhpcy5mYXZvcml0ZXMpO1xyXG4gIC8qKlxyXG4gICAqIE9ic2VydmFibGUgZW1pdHRpbmcgY3VycmVudCB1c2VycyBmYXZvcml0ZXNcclxuICAgKi9cclxuICBwdWJsaWMgZmF2b3JpdGVzR3JpZERhdGEkOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLmZhdm9yaXRlc1NvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKGRlYm91bmNlVGltZSgxMDApLCBmaWx0ZXIodiA9PiB2KSk7XHJcbiAgcHVibGljIGZhdm9yaXRlcyQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuZmF2b3JpdGVzR3JpZERhdGEkLnBpcGUodGhpcy5iYWNrZW5kLmdyaWREYXRhRmlsdGVyKTtcclxuXHJcbiAgcHJpdmF0ZSBub3RpZmljYXRpb25zID0gbnVsbDtcclxuICBwcml2YXRlIG5vdGlmaWNhdGlvbnNTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4odGhpcy5ub3RpZmljYXRpb25zKTtcclxuICAvKipcclxuICAgKiBPYnNlcnZhYmxlIGVtaXR0aW5nIGN1cnJlbnQgdXNlcnMgbm90aWZpY2F0aW9uc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBub3RpZmljYXRpb25zR3JpZERhdGEkOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLm5vdGlmaWNhdGlvbnNTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZShkZWJvdW5jZVRpbWUoMTAwKSwgZmlsdGVyKHYgPT4gdikpO1xyXG4gIHB1YmxpYyBub3RpZmljYXRpb25zJDogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5ub3RpZmljYXRpb25zR3JpZERhdGEkLnBpcGUodGhpcy5iYWNrZW5kLmdyaWREYXRhRmlsdGVyKTtcclxuXHJcbiAgcHVibGljIHBhc3N3b3JkVmFsaWRhdGlvblNldHRpbmdzOiBhbnk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXIsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIHN5c3RlbTogU3lzdGVtU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGNvbmZpZzogQ29uZmlnKSB7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBjdXJyZW50IHVzZXIuXHJcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgdXNlciBvciBOVUxMIGlmIG5vIHVzZXIgaXMgbG9nZ2VkIGluXHJcbiAgICovXHJcbiAgcHVibGljIGdldEN1cnJlbnRVc2VyKCk6IEVvVXNlciB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBwcmVzZW5jZSBvZiB0aGUgY3VycmVudCB1c2VyXHJcbiAgICogQHBhcmFtIHByZXNlbnQgVmFsdWUgdG8gc2V0IHRoZSB1c2VycyBwcmVzZW5jZSB0b1xyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRQcmVzZW5jZShwcmVzZW50OiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHJcbiAgICBpZiAocHJlc2VudCAhPT0gdGhpcy51c2VyLnByZXNlbnQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wdXQoJy91c2VyP3ByZXNlbmNlPScgKyBwcmVzZW50KVxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgdGFwKF8gPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnVzZXIucHJlc2VudCA9IHByZXNlbnQ7XHJcbiAgICAgICAgICAgIHRoaXMudXNlclNvdXJjZS5uZXh0KHRoaXMudXNlcik7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRlcHV0aWVzIGZvciB0aGUgY3VycmVudCB1c2VyXHJcbiAgICogQHBhcmFtIGRlcHV0aWVzTmFtZXMgTmFtZXMgb2YgdGhlIHVzZXJzIHRvIGJlIHNldCBhcyBkZXB1dGllc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXREZXB1dGllcyhkZXB1dGllc05hbWVzOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnB1dChgL3VzZXIvZGVwdXR5P3VzZXI9JHtkZXB1dGllc05hbWVzLmpvaW4oJyZ1c2VyPScpfWApLnBpcGUoXHJcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnJlZnJlc2hDdXJyZW50VXNlcigpLnN1YnNjcmliZSgpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoYW5nZSB0aGUgdXNlcnMgY2xpZW50IGxvY2FsZVxyXG4gICAqIEBwYXJhbSBpc28gSVNPIGxvY2FsZSBzdHJpbmcgdG8gYmUgc2V0IGFzIG5ldyBjbGllbnQgbG9jYWxlXHJcbiAgICovXHJcbiAgcHVibGljIGNoYW5nZUNsaWVudExvY2FsZShpc286IHN0cmluZykge1xyXG4gICAgdGhpcy51c2VyLnVzZXJTZXR0aW5nc1snY2xpZW50bG9jYWxlJ10gPSBpc287XHJcbiAgICB0aGlzLmJhY2tlbmRcclxuICAgICAgLnB1dCgnL3VzZXIvY29uZmlnL3dlYicsIHRoaXMudXNlci51c2VyU2V0dGluZ3MpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdDaGFuZ2VkIGNsaWVudCBsb2NhbGUgdG8gXFwnJyArIGlzbyArICdcXCcnKTtcclxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS51c2UoaXNvKTtcclxuICAgICAgICB0aGlzLnVzZXIudWlEaXJlY3Rpb24gPSAodGhpcy5jb25maWcuZ2V0Q2xpZW50TG9jYWxlcygpLmZpbmQobCA9PiBsLmlzbyA9PT0gaXNvKSB8fCB7fSkuZGlyIHx8IERpcmVjdGlvbi5MVFI7XHJcbiAgICAgICAgdGhpcy51c2VyU291cmNlLm5leHQodGhpcy51c2VyKTtcclxuICAgICAgICB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKEVuYWlvRXZlbnQuQ0xJRU5UX0xPQ0FMRV9DSEFOR0VELCBpc28pO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoYW5nZSB0aGUgdXNlcnMgc2NoZW1hIGxvY2FsZVxyXG4gICAqIEBwYXJhbSBpc28gSVNPIGxvY2FsZSBzdHJpbmcgdG8gYmUgc2V0IGFzIG5ldyBzY2hlbWEgbG9jYWxlXHJcbiAgICovXHJcbiAgcHVibGljIGNoYW5nZVNjaGVtYUxvY2FsZShpc286IHN0cmluZykge1xyXG4gICAgdGhpcy51c2VyLnNjaGVtYUxvY2FsZSA9IGlzbztcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcclxuICAgICAgLnB1dCgnL3VzZXIvbG9jYWxlLycgKyB0aGlzLnVzZXIuc2NoZW1hTG9jYWxlKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0NoYW5nZWQgc2NoZW1hIGxvY2FsZSB0byBcXCcnICsgaXNvICsgJ1xcJycpO1xyXG4gICAgICAgICAgdGhpcy51c2VyU291cmNlLm5leHQodGhpcy51c2VyKTtcclxuICAgICAgICAgIHRoaXMuYmFja2VuZC5zZXRIZWFkZXIoJ0FjY2VwdC1MYW5ndWFnZScsIHRoaXMudXNlci5nZXRTY2hlbWFMb2NhbGUoKSk7XHJcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnTG9hZGluZyBzeXN0ZW0gZGVmaW5pdGlvbiBmb3IgbmV3IGxvY2FsZS4nKTtcclxuICAgICAgICAgIHRoaXMuc3lzdGVtLmdldFN5c3RlbURlZmluaXRpb24odGhpcy51c2VyKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5TQ0hFTUFfTE9DQUxFX0NIQU5HRUQsIGlzbyk7XHJcbiAgICAgICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IGEgbmV3IGN1cnJlbnQgdXNlclxyXG4gICAqIEBwYXJhbSByZXMgVGhlIHVzZXIgdG8gYmUgc2V0IGFzIGN1cnJlbnQgdXNlclxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRDdXJyZW50VXNlcihyZXM6IGFueSkge1xyXG4gICAgdGhpcy51c2VyID0gbmV3IEVvVXNlcihyZXMpO1xyXG4gICAgdGhpcy5wYXNzd29yZFZhbGlkYXRpb25TZXR0aW5ncyA9IHJlcy5wYXNzd29ydHZhbGlkYXRpb247XHJcbiAgICB0aGlzLnVzZXIuc2V0SW1hZ2VCYXNlKHRoaXMuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpKTtcclxuICAgIHRoaXMuYmFja2VuZC5zZXRIZWFkZXIoJ0FjY2VwdC1MYW5ndWFnZScsIHRoaXMudXNlci5nZXRTY2hlbWFMb2NhbGUoKSk7XHJcblxyXG4gICAgY29uc3QgbGFuZ3VhZ2VzID0gdGhpcy5jb25maWcuZ2V0Q2xpZW50TG9jYWxlcygpLm1hcChsYW5nID0+IGxhbmcuaXNvKTtcclxuICAgIGxldCB1c2VyTGFuZyA9IHRoaXMudXNlci5nZXRDbGllbnRMb2NhbGUoKTtcclxuICAgIGlmIChsYW5ndWFnZXMuaW5kZXhPZih1c2VyTGFuZykgPT09IC0xKSB7XHJcbiAgICAgIHVzZXJMYW5nID0gdGhpcy5jb25maWcuZ2V0RGVmYXVsdENsaWVudExvY2FsZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ1NldHRpbmcgY2xpZW50IGxvY2FsZSB0byBcXCcnICsgdXNlckxhbmcgKyAnXFwnJyk7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS51c2UodXNlckxhbmcpO1xyXG4gICAgdGhpcy51c2VyLnVpRGlyZWN0aW9uID0gKHRoaXMuY29uZmlnLmdldENsaWVudExvY2FsZXMoKS5maW5kKGwgPT4gbC5pc28gPT09IHVzZXJMYW5nKSB8fCB7fSkuZGlyIHx8IERpcmVjdGlvbi5MVFI7XHJcblxyXG4gICAgdGhpcy51c2VyU291cmNlLm5leHQodGhpcy51c2VyKTtcclxuXHJcbiAgICB0aGlzLmZhdm9yaXRlcyA9IG51bGw7XHJcbiAgICB0aGlzLmZhdm9yaXRlc1NvdXJjZS5uZXh0KHRoaXMuZmF2b3JpdGVzKTtcclxuXHJcbiAgICB0aGlzLm5vdGlmaWNhdGlvbnMgPSBudWxsO1xyXG4gICAgdGhpcy5ub3RpZmljYXRpb25zU291cmNlLm5leHQodGhpcy5ub3RpZmljYXRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgdGhlIGN1cnJlbnQgdXNlcnMgZmF2b3JpdGVzXHJcbiAgICovXHJcbiAgcHVibGljIGdldEZhdm9yaXRlcygpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cclxuICAgIC8vIG9ubHkgZmF2b3JpdGUgb2JqZWN0cyBvZiB0eXBlICdETVNfT0JKRUNUJywgYXJlIGFjY2VwdGVkXHJcbiAgICAvLyByZWFkIG1vcmU6IGh0dHA6Ly9qaXJhLm9wdGltYWwtc3lzdGVtcy5kZS9icm93c2UvQ09PTC0yMzE2XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5nZXRKc29uKCcvdXNlci9mYXZvcml0ZXMnKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAocmVzID0+IHJlcyAmJiByZXMuZmlsdGVyKHIgPT4gci5mYXZvcml0ZXR5cGUgPT09ICdETVNfT0JKRUNUJykpLFxyXG4gICAgICAgIHRhcChyZXMgPT4ge1xyXG4gICAgICAgICAgdGhpcy5mYXZvcml0ZXMgPSByZXM7XHJcbiAgICAgICAgICB0aGlzLmZhdm9yaXRlc1NvdXJjZS5uZXh0KHRoaXMuZmF2b3JpdGVzKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgLy8gLm1hcChyZXMgPT4ge1xyXG4gICAgLy8gICBsZXQgZG1zT2JqZWN0ID0gdGhpcy5yZXNvbHZlT2JqZWN0VHlwZXMobmV3IERtc09iamVjdChyZXMpKTtcclxuICAgIC8vICAgcmV0dXJuIGRtc09iamVjdDtcclxuICAgIC8vIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU29mdCB1cGRhdGUgZm9yIHRoZSB1c2VycyBmYXZvcml0ZXNcclxuICAgKiBAcGFyYW0gaWQgSUQgb2YgdGhlIGZhdm9yaXRlIHRvIGJlIHVwZGF0ZWRcclxuICAgKiBAcGFyYW0gaXRlbSBUaGUgbmV3IGZhdm9yaXRlIGl0ZW1cclxuICAgKiBAcGFyYW0gbXVsdGkgV2hldGhlciBvciBub3QgdG8gdXBkYXRlIG11bHRpcGxlIGl0ZW1zXHJcbiAgICovXHJcbiAgcHVibGljIHVwZGF0ZUZhdm9yaXRlcyhpZD86IHN0cmluZywgaXRlbT86IGFueSwgbXVsdGk/OiBhbnlbXSkge1xyXG4gICAgaWYgKHRoaXMuYmFja2VuZC51cGRhdGUodGhpcy5mYXZvcml0ZXMsIG11bHRpIHx8IFt7aWQsIGl0ZW19XSkpIHtcclxuICAgICAgdGhpcy5mYXZvcml0ZXNTb3VyY2UubmV4dCh0aGlzLmZhdm9yaXRlcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSB1c2VycyBub3RpZmljYXRpb25zIChyZXN1Ym1pc3Npb25zIGFuZCBzdWJzY3JpcHRpb25zKVxyXG4gICAqIEByZXR1cm5zIFJlc29sdmVkIGJ5IGxpc3Qgb2YgdGhlIHVzZXJzIG5vdGlmaWNhdGlvbnNcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0Tm90aWZpY2F0aW9ucygpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3Qgbm90aWZpY2F0aW9uRGF0YSA9IFtcclxuICAgICAgdGhpcy5nZXRTdWJzY3JpcHRpb24oKSxcclxuICAgICAgdGhpcy5nZXRSZXN1Ym1pc3Npb24oKVxyXG4gICAgXTtcclxuICAgIHJldHVybiBmb3JrSm9pbihub3RpZmljYXRpb25EYXRhKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHVzZXJzIHJlc3VibWlzc2lvbnNcclxuICAgKiBAcmV0dXJucyBDb2xsZWN0aW9uIG9mIHVzZXJzIHJlc3VibWlzc2lvbnNcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0UmVzdWJtaXNzaW9uKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldEpzb24oJy9tZXNzYWdlcHJvdmlkZXIvcmVzdWJtaXNzaW9uL2xpc3QnKS5waXBlKFxyXG4gICAgICB0YXAocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9ucyA9IHJlc3BvbnNlO1xyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uc1NvdXJjZS5uZXh0KHRoaXMubm90aWZpY2F0aW9ucyk7XHJcbiAgICAgIH0pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHVzZXJzIHN1YnNjcmlwdGlvbnNcclxuICAgKiBAcmV0dXJucyBDb2xsZWN0aW9uIG9mIHVzZXJzIHN1YnNjcmlwdGlvbnNcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0U3Vic2NyaXB0aW9uKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5nZXRKc29uKCcvbWVzc2FnZXByb3ZpZGVyL3N1YnNjcmlwdGlvbi9saXN0JykucGlwZShcclxuICAgICAgICB0YXAocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zID0gcmVzcG9uc2U7XHJcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTb3VyY2UubmV4dCh0aGlzLm5vdGlmaWNhdGlvbnMpO1xyXG4gICAgICAgIH0pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZXMgYSBub3RpZmljYXRpb25cclxuICAgKiBAcGFyYW0gaWQgSUQgb2YgdGhlIG5vdGlmaWNhdGlvbiB0byBiZSByZW1vdmVkXHJcbiAgICogQHBhcmFtIHR5cGUgVGhlIG5vdGlmaWNhdGlvbnMgdHlwZSAoJ1NVQlNDUklQVElPTicsICdSRVNVQk1JU1NJT04nKVxyXG4gICAqL1xyXG4gIHB1YmxpYyByZW1vdmVOb3RpZmljYXRpb25zKGlkOiBzdHJpbmcsIHR5cGU6IHN0cmluZykge1xyXG4gICAgbGV0IG1lc3NhZ2V0eXBlOiBzdHJpbmc7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAnU1VCU0NSSVBUSU9OJzpcclxuICAgICAgICBtZXNzYWdldHlwZSA9ICdzdWJzY3JpcHRpb24nO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdSRVNVQk1JU1NJT04nOlxyXG4gICAgICAgIG1lc3NhZ2V0eXBlID0gJ3Jlc3VibWlzc2lvbic7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5kZWwoYC9tZXNzYWdlcHJvdmlkZXIvJHttZXNzYWdldHlwZX0vYCArIGlkKS5waXBlKHRhcChyZXMgPT4gdGhpcy51cGRhdGVOb3RpZmljYXRpb25zKCcnKSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU29mdCB1cGRhdGUgZm9yIHVzZXJzIG5vdGlmaWNhdGlvbnNcclxuICAgKi9cclxuICBwdWJsaWMgdXBkYXRlTm90aWZpY2F0aW9ucyhpZD86IHN0cmluZywgaXRlbT86IGFueSwgbXVsdGk/OiBhbnlbXSkge1xyXG4gICAgaWYgKHRoaXMuYmFja2VuZC51cGRhdGUodGhpcy5ub3RpZmljYXRpb25zLCBtdWx0aSB8fCBbe2lkLCBpdGVtfV0pKSB7XHJcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uc1NvdXJjZS5uZXh0KHRoaXMubm90aWZpY2F0aW9ucyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBVUkkgdG8gYSB1c2VycyBhdmF0YXIgaW1hZ2VcclxuICAgKiBAcGFyYW0gdXNlcklkIFRoZSB1c2VycyBJRFxyXG4gICAqIEByZXR1cm5zIFVSSSB0byB0aGUgdXNlciBpbWFnZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRVc2VySW1hZ2VVcmkodXNlcklkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBgJHt0aGlzLmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKX0vb3JnYW5pemF0aW9uL2ltYWdlLyR7dXNlcklkfWA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmVzIGEgZmF2b3JpdGUgaXRlbVxyXG4gICAqIEBwYXJhbSBmYXZvcml0ZUlkIElEIG9mIHRoZSBmYXZvcml0ZSBpdGVtIHRvIGJlIHJlbW92ZWRcclxuICAgKi9cclxuICBwdWJsaWMgcmVtb3ZlRmF2b3JpdGUoZmF2b3JpdGVJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmRlbCgnL3VzZXIvZmF2b3JpdGUvJyArIGZhdm9yaXRlSWQpLnBpcGUodGFwKHJlcyA9PiB0aGlzLnVwZGF0ZUZhdm9yaXRlcyhmYXZvcml0ZUlkKSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGEgbmV3IGZhdm9yaXRlIGl0ZW0gZm9yIHRoZSBjdXJyZW50IHVzZXJcclxuICAgKiBAcGFyYW0gaWQgSUQgb2YgdGhlIGRtcyBvYmplY3QgdG8gYmUgc2V0IHVwIGFzIGZhdm9yaXRlXHJcbiAgICogQHBhcmFtIHR5cGUgVGhlIG9iamVjdCB0eXBlIG9mIHRoZSBkbXMgb2JqZWN0XHJcbiAgICogQHBhcmFtIHRpdGxlIFRoZSBmYXZvcml0ZXMgdGl0bGVcclxuICAgKi9cclxuICBwdWJsaWMgY3JlYXRlRmF2b3JpdGUoaWQ6IHN0cmluZywgdHlwZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB1cmkgPSBVdGlscy5idWlsZFVyaSgnL2Rtcy9mYXZvcml0ZS8nICsgaWQsIHt0eXBlLCB0aXRsZX0pO1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wb3N0KHVyaSwge30pLnBpcGUodGFwKHJlcyA9PiB0aGlzLmdldEZhdm9yaXRlcygpLnN1YnNjcmliZSgpKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgcHVibGljIHJlbW92ZUZhdm9yaXRlc0ZvclRhcmdldChpZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmRlbCgnL2Rtcy9mYXZvcml0ZS8nICsgaWQpLnBpcGUodGFwKFxyXG4gICAgICByZXMgPT4ge1xyXG4gICAgICAgIGNvbnN0IHRvUmVtb3ZlID0gdGhpcy5mYXZvcml0ZXMuZmlsdGVyKGkgPT4gaS50YXJnZXQuaWQgPT09IGlkKS5tYXAoaSA9PiBPYmplY3QuYXNzaWduKHtcclxuICAgICAgICAgIGlkOiBpLmlkXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRmF2b3JpdGVzKG51bGwsIG51bGwsIHRvUmVtb3ZlKTtcclxuICAgICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hhbmdlcyB0aGUgdXNlcnMgcHJlZmVycmVkIGxvY2sgbW9kZSBhbmQgcGVyc2lzdHMgaXQgb24gdGhlIHNlcnZlclxyXG4gICAqIEBwYXJhbSBsb2NrIFRoZSB2YWx1ZSB0byBzZXQgdGhlIGxvY2sgc2V0dGluZ3MgdG9cclxuICAgKi9cclxuICBwdWJsaWMgY2hhbmdlTG9ja1NldHRpbmcobG9jazogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnVzZXIudXNlclNldHRpbmdzLmFsd2F5c2xvY2sgPSBsb2NrO1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wdXQoJy91c2VyL2NvbmZpZy93ZWInLCB0aGlzLnVzZXIudXNlclNldHRpbmdzKS5waXBlKG1hcCgoKSA9PiB7XHJcbiAgICAgIHRoaXMucmVmcmVzaEN1cnJlbnRVc2VyKCkuc3Vic2NyaWJlKCk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFzUHJpdmlsZWdlKHByaXZpbGVnZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLnVzZXIucHJpdmlsZWdlcy5maW5kKHByaXYgPT4gcHJpdi5uYW1lID09PSBwcml2aWxlZ2UpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIENoYW5nZXMgdGhlIHVzZXJzIHBhc3N3b3JkIGFuZCBwZXJzaXN0cyBpdCBvbiB0aGUgc2VydmVyXHJcbiAgICovXHJcbiAgY2hhbmdlUGFzc3dvcmQocGF5bG9hZDogQ2hhbmdlUGFzc3dvcmRJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wdXQoYC91c2VyL3Bhc3N3b3JkYCwgcGF5bG9hZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSBzZXR0aW5ncyBmb3IgdGhlIGN1cnJlbnQgdXNlciBhbmQgc3RvcmVzIHRoZSBuZXcgVXNlciBvYmplY3Qgb24gdGhlIHNlc3Npb25cclxuICAgKi9cclxuICBwcml2YXRlIHJlZnJlc2hDdXJyZW50VXNlcigpIHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZ2V0KHRoaXMuVVNFUl9GRVRDSF9VUkkpLnBpcGUobWFwKHJlcyA9PiB0aGlzLnNldEN1cnJlbnRVc2VyKHJlcykpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB2YWxpZGF0ZVBhc3N3b3JkKHBhc3N3b3JkOiBzdHJpbmcpOiB7dHlwZTogc3RyaW5nLCBhbW91bnQ6IG51bWJlcn0ge1xyXG4gICAgaWYgKHBhc3N3b3JkLmxlbmd0aCA8IHRoaXMucGFzc3dvcmRWYWxpZGF0aW9uU2V0dGluZ3MubWlubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiB7dHlwZTogJ3Nob3J0JywgYW1vdW50OiB0aGlzLnBhc3N3b3JkVmFsaWRhdGlvblNldHRpbmdzLm1pbmxlbmd0aH07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHBhc3N3b3JkLnJlcGxhY2UoL1teMC05XS9nLCAnJykubGVuZ3RoIDwgdGhpcy5wYXNzd29yZFZhbGlkYXRpb25TZXR0aW5ncy5taW5udW1iZXIpIHtcclxuICAgICAgcmV0dXJuIHt0eXBlOiAnbnVtYmVyJywgYW1vdW50OiB0aGlzLnBhc3N3b3JkVmFsaWRhdGlvblNldHRpbmdzLm1pbm51bWJlcn07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHBhc3N3b3JkLnJlcGxhY2UoL1thLXpBLVowLTnDnyBdL2csICcnKS5sZW5ndGggPCB0aGlzLnBhc3N3b3JkVmFsaWRhdGlvblNldHRpbmdzLm1pbnNwZWNpYWxjaGFycykge1xyXG4gICAgICByZXR1cm4ge3R5cGU6ICdzcGVjaWFsY2hhcnMnLCBhbW91bnQ6IHRoaXMucGFzc3dvcmRWYWxpZGF0aW9uU2V0dGluZ3MubWluc3BlY2lhbGNoYXJzfTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gIHt0eXBlOiAndmFsaWQnLCBhbW91bnQ6IG51bGx9O1xyXG4gIH1cclxuXHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -1664,14 +1664,15 @@ class UserService {
|
|
|
1664
1664
|
}
|
|
1665
1665
|
/**
|
|
1666
1666
|
* Set a new current user
|
|
1667
|
-
* @param
|
|
1667
|
+
* @param res The user to be set as current user
|
|
1668
1668
|
*/
|
|
1669
|
-
setCurrentUser(
|
|
1670
|
-
this.user =
|
|
1669
|
+
setCurrentUser(res) {
|
|
1670
|
+
this.user = new EoUser(res);
|
|
1671
|
+
this.passwordValidationSettings = res.passwortvalidation;
|
|
1671
1672
|
this.user.setImageBase(this.backend.getServiceBase());
|
|
1672
1673
|
this.backend.setHeader('Accept-Language', this.user.getSchemaLocale());
|
|
1673
1674
|
const languages = this.config.getClientLocales().map(lang => lang.iso);
|
|
1674
|
-
let userLang = user.getClientLocale();
|
|
1675
|
+
let userLang = this.user.getClientLocale();
|
|
1675
1676
|
if (languages.indexOf(userLang) === -1) {
|
|
1676
1677
|
userLang = this.config.getDefaultClientLocale();
|
|
1677
1678
|
}
|
|
@@ -1830,7 +1831,19 @@ class UserService {
|
|
|
1830
1831
|
* Fetches the settings for the current user and stores the new User object on the session
|
|
1831
1832
|
*/
|
|
1832
1833
|
refreshCurrentUser() {
|
|
1833
|
-
return this.backend.get(this.USER_FETCH_URI).pipe(map(res => this.setCurrentUser(
|
|
1834
|
+
return this.backend.get(this.USER_FETCH_URI).pipe(map(res => this.setCurrentUser(res)));
|
|
1835
|
+
}
|
|
1836
|
+
validatePassword(password) {
|
|
1837
|
+
if (password.length < this.passwordValidationSettings.minlength) {
|
|
1838
|
+
return { type: 'short', amount: this.passwordValidationSettings.minlength };
|
|
1839
|
+
}
|
|
1840
|
+
if (password.replace(/[^0-9]/g, '').length < this.passwordValidationSettings.minnumber) {
|
|
1841
|
+
return { type: 'number', amount: this.passwordValidationSettings.minnumber };
|
|
1842
|
+
}
|
|
1843
|
+
if (password.replace(/[a-zA-Z0-9ß ]/g, '').length < this.passwordValidationSettings.minspecialchars) {
|
|
1844
|
+
return { type: 'specialchars', amount: this.passwordValidationSettings.minspecialchars };
|
|
1845
|
+
}
|
|
1846
|
+
return { type: 'valid', amount: null };
|
|
1834
1847
|
}
|
|
1835
1848
|
}
|
|
1836
1849
|
UserService.decorators = [
|
|
@@ -3359,7 +3372,7 @@ class AuthService {
|
|
|
3359
3372
|
initApp(user, sso) {
|
|
3360
3373
|
const currUser = new EoUser(user);
|
|
3361
3374
|
this.backend.setAuthProfile(this.profile);
|
|
3362
|
-
this.userService.setCurrentUser(
|
|
3375
|
+
this.userService.setCurrentUser(user);
|
|
3363
3376
|
const capabilities = this.capabilitiesService.setCapabilities(user.capabilities, sso);
|
|
3364
3377
|
this.systemStatusService.init(this.config.getRaw('systemStatusUpdateInterval'));
|
|
3365
3378
|
// update states
|