@eo-sdk/client 9.0.0-rc.8 → 9.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.d.ts +3 -2
  2. package/app/eo-framework/ui/user-avatar/user-avatar.component.d.ts +4 -2
  3. package/assets/_default/i18n/de.json +1 -1
  4. package/assets/_default/i18n/en.json +3 -3
  5. package/bundles/eo-sdk-client.umd.js +73 -34
  6. package/bundles/eo-sdk-client.umd.js.map +1 -1
  7. package/bundles/eo-sdk-client.umd.min.js +1 -1
  8. package/bundles/eo-sdk-client.umd.min.js.map +1 -1
  9. package/eo-sdk-client.metadata.json +1 -1
  10. package/esm2015/app/eo-client/about-state/about-state.component.js +3 -3
  11. package/esm2015/app/eo-client/inbox-state/inbox-state/inbox-state.component.js +4 -6
  12. package/esm2015/app/eo-client/settings/settings.component.js +3 -3
  13. package/esm2015/app/eo-framework/accordion/simple-accordion/simple-accordion.component.js +3 -3
  14. package/esm2015/app/eo-framework/actions/actions/share-object-action/share-object/share-object.component.js +2 -2
  15. package/esm2015/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.js +25 -6
  16. package/esm2015/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.js +2 -2
  17. package/esm2015/app/eo-framework/form-elements/string/string.component.js +2 -2
  18. package/esm2015/app/eo-framework/frame/frame.component.js +1 -1
  19. package/esm2015/app/eo-framework/result-list/result-list.component.js +2 -2
  20. package/esm2015/app/eo-framework/settings/change-password/change-password-form/change-password-form.component.js +3 -3
  21. package/esm2015/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.js +9 -4
  22. package/esm2015/app/eo-framework/tree/tree-node/tree-node.component.js +1 -1
  23. package/esm2015/app/eo-framework/tree/tree.component.js +2 -2
  24. package/esm2015/app/eo-framework/ui/user-avatar/user-avatar.component.js +15 -4
  25. package/fesm2015/eo-sdk-client.js +63 -30
  26. package/fesm2015/eo-sdk-client.js.map +1 -1
  27. package/package.json +2 -2
  28. package/projects/eo-sdk/core/package.json +1 -1
@@ -109,8 +109,8 @@ export class ChangePasswordFormComponent {
109
109
  ChangePasswordFormComponent.decorators = [
110
110
  { type: Component, args: [{
111
111
  selector: 'eo-change-password-form',
112
- template: "<section class=\"change-password\">\n <form #changePasswordFormElement [formGroup]=\"changePasswordForm\" (ngSubmit)=\"onSubmit()\" autocomplete=\"off\">\n <div class=\"form-item\">\n\n <eo-form-input [label]=\"('eo.password.reset.current-password' | translate)\" [required]=\"true\" [invalid]=\"passwordIsNew\">\n <eo-password [parent]=\"changePasswordForm\"\n [element]=\"'currentPassword'\"\n [canChangepasswordVisiblety]=\"false\"\n [passwordVisible]=\"passwordIsVisible\"\n [placeholder]=\"('eo.password.reset.current-password' | translate)\"></eo-password>\n </eo-form-input>\n\n <eo-form-input [label]=\"('eo.password.reset.new-password' | translate)\" [required]=\"true\" [invalid]=\"matchingPasswords || passwordIsNew\">\n <eo-password [parent]=\"changePasswordForm\"\n [element]=\"'password'\"\n [canChangepasswordVisiblety]=\"false\"\n [passwordVisible]=\"passwordIsVisible\"\n [placeholder]=\"('eo.password.reset.new-password' | translate)\"></eo-password>\n </eo-form-input>\n\n <eo-form-input [label]=\"('eo.password.reset.confirm-password' | translate)\" [required]=\"true\" [invalid]=\"matchingPasswords\">\n <eo-password [parent]=\"changePasswordForm\"\n [element]=\"'confirmPassword'\"\n [canChangepasswordVisiblety]=\"false\"\n [passwordVisible]=\"passwordIsVisible\"\n [placeholder]=\"('eo.password.reset.confirm-password' | translate)\"></eo-password>\n </eo-form-input>\n\n <div class=\"invalid error\" *ngIf=\"passwordIsNew\">\n {{'eo.password.reset.error.same.password' | translate}}\n </div>\n\n <div class=\"invalid error\" *ngIf=\"matchingPasswords\">\n {{'eo.password.reset.error.matiching.password' | translate}}\n </div>\n\n <div class=\"invalid error\" translate [translateParams]=\"{amount: passwordValidation.amount}\" *ngIf=\"passwordValidation.type === 'short'\">\n eo.password.reset.error.new.password.short\n </div>\n\n <div class=\"invalid error\" translate [translateParams]=\"{amount: passwordValidation.amount}\" *ngIf=\"passwordValidation.type === 'number'\">\n eo.password.reset.error.new.password.number\n </div>\n\n <div class=\"invalid error\" translate [translateParams]=\"{amount: passwordValidation.amount}\" *ngIf=\"passwordValidation.type === 'specialchars'\">\n eo.password.reset.error.new.password.specialchars\n </div>\n\n <section class=\"change-password__cta\">\n <button class=\"change-password__submit-button\" type=\"submit\"\n [disabled]=\"changePasswordForm.invalid || passwordValidation.type !== 'valid'\" translate>eo.password.reset.confirm-button</button>\n\n <a (click)=\"showPasswords()\">\n <eo-icon class=\"change-password__icon-show\"\n [iconSrc]=\"'assets/_default/svg/ic_eye.svg'\"\n [iconTitle]=\"('eo.password.reset.toogle.icon' | translate)\"\n [ngClass]=\"{'visible': passwordIsVisible}\"></eo-icon>\n </a>\n </section>\n </div>\n </form>\n\n</section>\n",
113
- styles: [".change-password .invalid.error{color:var(--color-error);padding:5px 0}.change-password__cta{align-items:center;display:flex;margin-top:10px}.change-password__submit-button{margin-right:10px}.change-password__icon-show{color:var(--text-color-caption);cursor:pointer}.change-password__icon-show.visible{color:var(--color-primary-3)}"]
112
+ template: "<section class=\"change-password\">\n <form #changePasswordFormElement [formGroup]=\"changePasswordForm\" (ngSubmit)=\"onSubmit()\" autocomplete=\"off\">\n <div class=\"form-item\">\n\n <eo-form-input [label]=\"('eo.password.reset.current-password' | translate)\" [required]=\"true\" [invalid]=\"passwordIsNew\">\n <eo-password [parent]=\"changePasswordForm\"\n [element]=\"'currentPassword'\"\n [canChangepasswordVisiblety]=\"false\"\n [passwordVisible]=\"passwordIsVisible\"\n [placeholder]=\"('eo.password.reset.current-password' | translate)\"></eo-password>\n </eo-form-input>\n\n <eo-form-input [label]=\"('eo.password.reset.new-password' | translate)\" [required]=\"true\" [invalid]=\"matchingPasswords || passwordIsNew\">\n <eo-password [parent]=\"changePasswordForm\"\n [element]=\"'password'\"\n [canChangepasswordVisiblety]=\"false\"\n [passwordVisible]=\"passwordIsVisible\"\n [placeholder]=\"('eo.password.reset.new-password' | translate)\"></eo-password>\n </eo-form-input>\n\n <eo-form-input [label]=\"('eo.password.reset.confirm-password' | translate)\" [required]=\"true\" [invalid]=\"matchingPasswords\">\n <eo-password [parent]=\"changePasswordForm\"\n [element]=\"'confirmPassword'\"\n [canChangepasswordVisiblety]=\"false\"\n [passwordVisible]=\"passwordIsVisible\"\n [placeholder]=\"('eo.password.reset.confirm-password' | translate)\"></eo-password>\n </eo-form-input>\n\n <div class=\"invalid error\" *ngIf=\"passwordIsNew\">\n {{'eo.password.reset.error.same.password' | translate}}\n </div>\n\n <div class=\"invalid error\" *ngIf=\"matchingPasswords\">\n {{'eo.password.reset.error.matiching.password' | translate}}\n </div>\n\n <div class=\"invalid error\" translate [translateParams]=\"{amount: passwordValidation.amount}\" *ngIf=\"passwordValidation.type === 'short'\">\n eo.password.reset.error.new.password.short\n </div>\n\n <div class=\"invalid error\" translate [translateParams]=\"{amount: passwordValidation.amount}\" *ngIf=\"passwordValidation.type === 'number'\">\n eo.password.reset.error.new.password.number\n </div>\n\n <div class=\"invalid error\" translate [translateParams]=\"{amount: passwordValidation.amount}\" *ngIf=\"passwordValidation.type === 'specialchars'\">\n eo.password.reset.error.new.password.specialchars\n </div>\n\n <section class=\"change-password__cta\">\n <button class=\"change-password__submit-button\" type=\"submit\"\n [disabled]=\"changePasswordForm.invalid || passwordValidation.type !== 'valid'\" translate>eo.password.reset.confirm-button</button>\n\n <a (click)=\"showPasswords()\" tabindex=\"0\" (keydown.enter)=\"showPasswords()\" >\n <eo-icon class=\"change-password__icon-show\"\n [iconSrc]=\"'assets/_default/svg/ic_eye.svg'\"\n [iconTitle]=\"('eo.password.reset.toogle.icon' | translate)\"\n [ngClass]=\"{'visible': passwordIsVisible}\"></eo-icon>\n </a>\n </section>\n </div>\n </form>\n\n</section>\n",
113
+ styles: [".change-password .invalid.error{color:var(--color-error);padding:5px 0}.change-password :focus{outline:2px solid var(--text-color-caption)}.change-password__cta{align-items:center;display:flex;margin-top:10px}.change-password__submit-button{margin-right:10px}.change-password__icon-show{color:var(--text-color-caption);cursor:pointer}.change-password__icon-show:hover{color:var(--color-accent)}.change-password__icon-show.visible{color:var(--color-primary-3)}"]
114
114
  },] }
115
115
  ];
116
116
  ChangePasswordFormComponent.ctorParameters = () => [
@@ -123,4 +123,4 @@ ChangePasswordFormComponent.propDecorators = {
123
123
  userRegex: [{ type: Input }],
124
124
  onFormSumbit: [{ type: Output }]
125
125
  };
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLXBhc3N3b3JkLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvc2V0dGluZ3MvY2hhbmdlLXBhc3N3b3JkL2NoYW5nZS1wYXNzd29yZC1mb3JtL2NoYW5nZS1wYXNzd29yZC1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBWSxXQUFXLEVBQUUsVUFBVSxFQUFjLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFDLG9CQUFvQixFQUFFLFdBQVcsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUMvRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFPOUMsTUFBTSxPQUFPLDJCQUEyQjtJQVV0QyxZQUFvQixFQUFlLEVBQ2YsV0FBd0IsRUFDeEIsU0FBMkIsRUFDM0IsT0FBNkI7UUFIN0IsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBVnhDLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZCxpQkFBWSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBR3BFLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQix1QkFBa0IsR0FBRyxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQyxDQUFDO1FBTWpELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsWUFBWTtRQUNWLE1BQU0sRUFBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBQyxHQUFHLFVB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LENBQUMsQ0FBQztTQUN4RzthQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssMkJBQTJCLEVBQUU7WUFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLDhDQUE4QyxDQUFDLENBQUMsQ0FBQztTQUN4RzthQUFNO1lBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sRUFBQyxlQUFlLEVBQUUsUUFBUSxFQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQztRQUNsRSxNQUFNLE9BQU8sR0FBRztZQUNkLEdBQUcsRUFBRSxlQUFlO1lBQ3BCLEdBQUcsRUFBRSxRQUFRO1NBQ2QsQ0FBQztRQUVGLElBQUksQ0FBQyxXQUFXO2FBQ2IsY0FBYyxDQUFDLE9BQU8sQ0FBQzthQUN2QixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ25HLENBQUM7OztZQTFIRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtnQkFDbkMsb3dHQUFvRDs7YUFFckQ7OztZQVJrQixXQUFXO1lBQ0EsV0FBVztZQUNqQyxnQkFBZ0I7WUFEaEIsb0JBQW9COzs7d0JBV3pCLEtBQUs7MkJBQ0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgRXZlbnRFbWl0dGVyLCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtR3JvdXAsIEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzLCBWYWxpZGF0b3JGbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtOb3RpZmljYXRpb25zU2VydmljZSwgVXNlclNlcnZpY2V9IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0Blby1zZGsvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLWNoYW5nZS1wYXNzd29yZC1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYW5nZS1wYXNzd29yZC1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hhbmdlLXBhc3N3b3JkLWZvcm0uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDaGFuZ2VQYXNzd29yZEZvcm1Db21wb25lbnQge1xuXG5cbiAgQElucHV0KCkgdXNlclJlZ2V4ID0gJyc7XG4gIEBPdXRwdXQoKSBvbkZvcm1TdW1iaXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgY2hhbmdlUGFzc3dvcmRGb3JtOiBGb3JtR3JvdXA7XG4gIHBhc3N3b3JkSXNWaXNpYmxlID0gZmFsc2U7XG4gIHBhc3N3b3JkVmFsaWRhdGlvbiA9IHt0eXBlOiAndmFsaWQnLCBhbW91bnQ6IG51bGx9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgdG9hc3RlcjogTm90aWZpY2F0aW9uc1NlcnZpY2UpIHtcbiAgICB0aGlzLmdlbmVyYXRlRm9ybSgpO1xuICB9XG5cbiAgZ2VuZXJhdGVGb3JtKCkge1xuICAgIGNvbnN0IHtjb21wb3NlLCByZXF1aXJlZCwgbWluTGVuZ3RofSA9IFZhbGlkYXRvcnM7XG4gICAgdGhpcy5jaGFuZ2VQYXNzd29yZEZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGN1cnJlbnRQYXNzd29yZDogWycnLCBjb21wb3NlKFtyZXF1aXJlZCwgbWluTGVuZ3RoKDEpXSldLFxuICAgICAgcGFzc3dvcmQ6IFsnJywgY29tcG9zZShbcmVxdWlyZWQsIG1pbkxlbmd0aCgxKV0pXSxcbiAgICAgIGNvbmZpcm1QYXNzd29yZDogWycnLCBjb21wb3NlKFtyZXF1aXJlZCwgbWluTGVuZ3RoKDEpXSldXG4gICAgfSwge1xuICAgICAgdmFsaWRhdG9yOiBjb21wb3NlKFtcbiAgICAgICAgdGhpcy5uZXdQYXNzd29yZFZhbGlkYXRvcignY3VycmVudFBhc3N3b3JkJywgJ3Bhc3N3b3JkJyksXG4gICAgICAgIHRoaXMubWF0Y2hpbmdQYXNzd29yZHNWYWxpZGF0b3IoJ3Bhc3N3b3JkJywgJ2NvbmZpcm1QYXNzd29yZCcpXG4gICAgICBdKVxuICAgIH0pO1xuXG4gICAgdGhpcy5vbkNoYW5nZXMoKTtcbiAgfVxuXG4gIG5ld1Bhc3N3b3JkVmFsaWRhdG9yKGN1cnJlbnQsIHBhc3N3b3JkKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoZ3JvdXA6IEZvcm1Hcm91cCkgPT4ge1xuICAgICAgaWYgKGdyb3VwLmNvbnRyb2xzW2N1cnJlbnRdLnZhbHVlICE9PSBncm91cC5jb250cm9sc1twYXNzd29yZF0udmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4geydTQU1FX1BBU1NXT1JEJzogdHJ1ZX07XG4gICAgfVxuICB9XG5cbiAgbWF0Y2hpbmdQYXNzd29yZHNWYWxpZGF0b3IocGFzc3dvcmQsIGNvbmZpcm0pOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChncm91cDogRm9ybUdyb3VwKSA9PiB7XG4gICAgICBpZiAoZ3JvdXAuY29udHJvbHNbcGFzc3dvcmRdLnZhbHVlID09PSBncm91cC5jb250cm9sc1tjb25maXJtXS52YWx1ZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7J21hdGNoaW5nUGFzc3dvcmRzJzogdHJ1ZX1cbiAgICB9XG4gIH1cblxuICBvbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5jaGFuZ2VQYXNzd29yZEZvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgaWYgKHZhbHVlLnBhc3N3b3JkKSB7XG4gICAgICAgICAgdGhpcy5wYXNzd29yZFZhbGlkYXRpb24gPSB0aGlzLnVzZXJTZXJ2aWNlLnZhbGlkYXRlUGFzc3dvcmQodmFsdWUucGFzc3dvcmQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm1hdGNoaW5nUGFzc3dvcmRzO1xuICAgICAgfSk7XG4gIH1cblxuICBzaG93UGFzc3dvcmRzKCkge1xuICAgIHRoaXMucGFzc3dvcmRJc1Zpc2libGUgPSAhdGhpcy5wYXNzd29yZElzVmlzaWJsZTtcbiAgfVxuXG4gIGdldCBwYXNzd29yZElzTmV3KCkge1xuICAgIGNvbnN0IHtlcnJvcnMsIGNvbnRyb2xzfSA9IHRoaXMuY2hhbmdlUGFzc3dvcmRGb3JtO1xuICAgIGxldCBwYXNzd29yZElzTmV3RXJyb3IgPSBmYWxzZTtcbiAgICBpZiAoZXJyb3JzKSB7XG4gICAgICBjb25zdCBjdXJyZW50UGFzc3dvcmQgPSBjb250cm9scy5jdXJyZW50UGFzc3dvcmQudG91Y2hlZCAmJiBjb250cm9scy5jdXJyZW50UGFzc3dvcmQuZGlydHk7XG4gICAgICBjb25zdCBwYXNzd29yZCA9IGNvbnRyb2xzLnBhc3N3b3JkLnRvdWNoZWQgJiYgY29udHJvbHMucGFzc3dvcmQuZGlydHk7XG4gICAgICBwYXNzd29yZElzTmV3RXJyb3IgPSBlcnJvcnMuU0FNRV9QQVNTV09SRCAmJiBjdXJyZW50UGFzc3dvcmQgJiYgcGFzc3dvcmQ7XG4gICAgfVxuICAgIHJldHVybiBwYXNzd29yZElzTmV3RXJyb3I7XG4gIH1cblxuICBnZXQgbWF0Y2hpbmdQYXNzd29yZHMoKSB7XG4gICAgY29uc3Qge2Vycm9ycywgY29udHJvbHN9ID0gdGhpcy5jaGFuZ2VQYXNzd29yZEZvcm07XG4gICAgbGV0IG1hdGNoaW5nUGFzc3dvcmRzRXJyb3IgPSBmYWxzZTtcbiAgICBpZiAoZXJyb3JzKSB7XG4gICAgICBjb25zdCBwYXNzd29yZCA9IGNvbnRyb2xzLnBhc3N3b3JkLnRvdWNoZWQgJiYgY29udHJvbHMucGFzc3dvcmQuZGlydHk7XG4gICAgICBjb25zdCBjb25maXJtUGFzc3dvcmQgPSBjb250cm9scy5jb25maXJtUGFzc3dvcmQudG91Y2hlZCAmJiBjb250cm9scy5jb25maXJtUGFzc3dvcmQuZGlydHk7XG4gICAgICBtYXRjaGluZ1Bhc3N3b3Jkc0Vycm9yID0gZXJyb3JzLm1hdGNoaW5nUGFzc3dvcmRzICYmIHBhc3N3b3JkICYmIGNvbmZpcm1QYXNzd29yZDtcbiAgICB9XG4gICAgcmV0dXJuIG1hdGNoaW5nUGFzc3dvcmRzRXJyb3I7XG4gIH1cblxuXG4gIGNoYW5nZVBhc3N3b3JkT25TdWNjZXNzKCkge1xuICAgIHRoaXMuY2hhbmdlUGFzc3dvcmRGb3JtLnJlc2V0KCk7XG4gICAgdGhpcy5jaGFuZ2VQYXNzd29yZEZvcm0ubWFya0FzUHJpc3RpbmUoKTtcbiAgICB0aGlzLmNoYW5nZVBhc3N3b3JkRm9ybS5tYXJrQXNVbnRvdWNoZWQoKTtcbiAgICB0aGlzLm9uRm9ybVN1bWJpdC5lbWl0KHRydWUpO1xuICAgIHRoaXMudG9hc3Rlci5zdWNjZXNzKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnBhc3N3b3JkLnJlc2V0LnN1Y2Nlc3MnKSk7XG4gIH1cblxuICBjaGFuZ2VQYXNzd29yZE9uRXJyb3IoZXJyb3IpIHtcbiAgICBjb25zdCBlcnJvclRpdGxlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucGFzc3dvcmQucmVzZXQuZXJyb3IucGFzc3dvcmQudGl0bGUnKTtcbiAgICBpZiAoZXJyb3IuZXJyb3Iua2V5ID09PSAnVVNFUl9PTERfUEFTU1dPUkRfV1JPTkcnKSB7XG4gICAgICB0aGlzLnRvYXN0ZXIuZXJyb3IoZXJyb3JUaXRsZSwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucGFzc3dvcmQucmVzZXQuZXJyb3Iub2xkLnBhc3N3b3JkLm1lc3NhZ2UnKSk7XG4gICAgfSBlbHNlIGlmIChlcnJvci5lcnJvci5rZXkgPT09ICdVU0VSX05FV19QQVNTV09SRF9JTlZBTElEJykge1xuICAgICAgdGhpcy50b2FzdGVyLmVycm9yKGVycm9yVGl0bGUsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnBhc3N3b3JkLnJlc2V0LmVycm9yLm5ldy5wYXNzd29yZC5tZXNzYWdlJykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRvYXN0ZXIuZXJyb3IoZXJyb3JUaXRsZSk7XG4gICAgfVxuICB9XG5cbiAgb25TdWJtaXQoKSB7XG4gICAgY29uc3Qge2N1cnJlbnRQYXNzd29yZCwgcGFzc3dvcmR9ID0gdGhpcy5jaGFuZ2VQYXNzd29yZEZvcm0udmFsdWU7XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIG9sZDogY3VycmVudFBhc3N3b3JkLFxuICAgICAgbmV3OiBwYXNzd29yZFxuICAgIH07XG5cbiAgICB0aGlzLnVzZXJTZXJ2aWNlXG4gICAgICAuY2hhbmdlUGFzc3dvcmQocGF5bG9hZClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jaGFuZ2VQYXNzd29yZE9uU3VjY2VzcygpLCAoZXJyb3IpID0+IHRoaXMuY2hhbmdlUGFzc3dvcmRPbkVycm9yKGVycm9yKSk7XG4gIH1cbn1cbiJdfQ==
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLXBhc3N3b3JkLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvc2V0dGluZ3MvY2hhbmdlLXBhc3N3b3JkL2NoYW5nZS1wYXNzd29yZC1mb3JtL2NoYW5nZS1wYXNzd29yZC1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBWSxXQUFXLEVBQUUsVUFBVSxFQUFjLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFDLG9CQUFvQixFQUFFLFdBQVcsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUMvRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFPOUMsTUFBTSxPQUFPLDJCQUEyQjtJQVV0QyxZQUFvQixFQUFlLEVBQ2YsV0FBd0IsRUFDeEIsU0FBMkIsRUFDM0IsT0FBNkI7UUFIN0IsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBVnhDLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZCxpQkFBWSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBR3BFLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQix1QkFBa0IsR0FBRyxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQyxDQUFDO1FBTWpELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsWUFBWTtRQUNWLE1BQU0sRUFBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBQyxHQUFHLFVB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LENBQUMsQ0FBQztTQUN4RzthQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssMkJBQTJCLEVBQUU7WUFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLDhDQUE4QyxDQUFDLENBQUMsQ0FBQztTQUN4RzthQUFNO1lBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sRUFBQyxlQUFlLEVBQUUsUUFBUSxFQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQztRQUNsRSxNQUFNLE9BQU8sR0FBRztZQUNkLEdBQUcsRUFBRSxlQUFlO1lBQ3BCLEdBQUcsRUFBRSxRQUFRO1NBQ2QsQ0FBQztRQUVGLElBQUksQ0FBQyxXQUFXO2FBQ2IsY0FBYyxDQUFDLE9BQU8sQ0FBQzthQUN2QixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ25HLENBQUM7OztZQTFIRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtnQkFDbkMsd3pHQUFvRDs7YUFFckQ7OztZQVJrQixXQUFXO1lBQ0EsV0FBVztZQUNqQyxnQkFBZ0I7WUFEaEIsb0JBQW9COzs7d0JBV3pCLEtBQUs7MkJBQ0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgRXZlbnRFbWl0dGVyLCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtR3JvdXAsIEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzLCBWYWxpZGF0b3JGbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtOb3RpZmljYXRpb25zU2VydmljZSwgVXNlclNlcnZpY2V9IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0Blby1zZGsvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLWNoYW5nZS1wYXNzd29yZC1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYW5nZS1wYXNzd29yZC1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hhbmdlLXBhc3N3b3JkLWZvcm0uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDaGFuZ2VQYXNzd29yZEZvcm1Db21wb25lbnQge1xuXG5cbiAgQElucHV0KCkgdXNlclJlZ2V4ID0gJyc7XG4gIEBPdXRwdXQoKSBvbkZvcm1TdW1iaXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgY2hhbmdlUGFzc3dvcmRGb3JtOiBGb3JtR3JvdXA7XG4gIHBhc3N3b3JkSXNWaXNpYmxlID0gZmFsc2U7XG4gIHBhc3N3b3JkVmFsaWRhdGlvbiA9IHt0eXBlOiAndmFsaWQnLCBhbW91bnQ6IG51bGx9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgdG9hc3RlcjogTm90aWZpY2F0aW9uc1NlcnZpY2UpIHtcbiAgICB0aGlzLmdlbmVyYXRlRm9ybSgpO1xuICB9XG5cbiAgZ2VuZXJhdGVGb3JtKCkge1xuICAgIGNvbnN0IHtjb21wb3NlLCByZXF1aXJlZCwgbWluTGVuZ3RofSA9IFZhbGlkYXRvcnM7XG4gICAgdGhpcy5jaGFuZ2VQYXNzd29yZEZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGN1cnJlbnRQYXNzd29yZDogWycnLCBjb21wb3NlKFtyZXF1aXJlZCwgbWluTGVuZ3RoKDEpXSldLFxuICAgICAgcGFzc3dvcmQ6IFsnJywgY29tcG9zZShbcmVxdWlyZWQsIG1pbkxlbmd0aCgxKV0pXSxcbiAgICAgIGNvbmZpcm1QYXNzd29yZDogWycnLCBjb21wb3NlKFtyZXF1aXJlZCwgbWluTGVuZ3RoKDEpXSldXG4gICAgfSwge1xuICAgICAgdmFsaWRhdG9yOiBjb21wb3NlKFtcbiAgICAgICAgdGhpcy5uZXdQYXNzd29yZFZhbGlkYXRvcignY3VycmVudFBhc3N3b3JkJywgJ3Bhc3N3b3JkJyksXG4gICAgICAgIHRoaXMubWF0Y2hpbmdQYXNzd29yZHNWYWxpZGF0b3IoJ3Bhc3N3b3JkJywgJ2NvbmZpcm1QYXNzd29yZCcpXG4gICAgICBdKVxuICAgIH0pO1xuXG4gICAgdGhpcy5vbkNoYW5nZXMoKTtcbiAgfVxuXG4gIG5ld1Bhc3N3b3JkVmFsaWRhdG9yKGN1cnJlbnQsIHBhc3N3b3JkKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoZ3JvdXA6IEZvcm1Hcm91cCkgPT4ge1xuICAgICAgaWYgKGdyb3VwLmNvbnRyb2xzW2N1cnJlbnRdLnZhbHVlICE9PSBncm91cC5jb250cm9sc1twYXNzd29yZF0udmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4geydTQU1FX1BBU1NXT1JEJzogdHJ1ZX07XG4gICAgfVxuICB9XG5cbiAgbWF0Y2hpbmdQYXNzd29yZHNWYWxpZGF0b3IocGFzc3dvcmQsIGNvbmZpcm0pOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChncm91cDogRm9ybUdyb3VwKSA9PiB7XG4gICAgICBpZiAoZ3JvdXAuY29udHJvbHNbcGFzc3dvcmRdLnZhbHVlID09PSBncm91cC5jb250cm9sc1tjb25maXJtXS52YWx1ZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7J21hdGNoaW5nUGFzc3dvcmRzJzogdHJ1ZX1cbiAgICB9XG4gIH1cblxuICBvbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5jaGFuZ2VQYXNzd29yZEZvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgaWYgKHZhbHVlLnBhc3N3b3JkKSB7XG4gICAgICAgICAgdGhpcy5wYXNzd29yZFZhbGlkYXRpb24gPSB0aGlzLnVzZXJTZXJ2aWNlLnZhbGlkYXRlUGFzc3dvcmQodmFsdWUucGFzc3dvcmQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm1hdGNoaW5nUGFzc3dvcmRzO1xuICAgICAgfSk7XG4gIH1cblxuICBzaG93UGFzc3dvcmRzKCkge1xuICAgIHRoaXMucGFzc3dvcmRJc1Zpc2libGUgPSAhdGhpcy5wYXNzd29yZElzVmlzaWJsZTtcbiAgfVxuXG4gIGdldCBwYXNzd29yZElzTmV3KCkge1xuICAgIGNvbnN0IHtlcnJvcnMsIGNvbnRyb2xzfSA9IHRoaXMuY2hhbmdlUGFzc3dvcmRGb3JtO1xuICAgIGxldCBwYXNzd29yZElzTmV3RXJyb3IgPSBmYWxzZTtcbiAgICBpZiAoZXJyb3JzKSB7XG4gICAgICBjb25zdCBjdXJyZW50UGFzc3dvcmQgPSBjb250cm9scy5jdXJyZW50UGFzc3dvcmQudG91Y2hlZCAmJiBjb250cm9scy5jdXJyZW50UGFzc3dvcmQuZGlydHk7XG4gICAgICBjb25zdCBwYXNzd29yZCA9IGNvbnRyb2xzLnBhc3N3b3JkLnRvdWNoZWQgJiYgY29udHJvbHMucGFzc3dvcmQuZGlydHk7XG4gICAgICBwYXNzd29yZElzTmV3RXJyb3IgPSBlcnJvcnMuU0FNRV9QQVNTV09SRCAmJiBjdXJyZW50UGFzc3dvcmQgJiYgcGFzc3dvcmQ7XG4gICAgfVxuICAgIHJldHVybiBwYXNzd29yZElzTmV3RXJyb3I7XG4gIH1cblxuICBnZXQgbWF0Y2hpbmdQYXNzd29yZHMoKSB7XG4gICAgY29uc3Qge2Vycm9ycywgY29udHJvbHN9ID0gdGhpcy5jaGFuZ2VQYXNzd29yZEZvcm07XG4gICAgbGV0IG1hdGNoaW5nUGFzc3dvcmRzRXJyb3IgPSBmYWxzZTtcbiAgICBpZiAoZXJyb3JzKSB7XG4gICAgICBjb25zdCBwYXNzd29yZCA9IGNvbnRyb2xzLnBhc3N3b3JkLnRvdWNoZWQgJiYgY29udHJvbHMucGFzc3dvcmQuZGlydHk7XG4gICAgICBjb25zdCBjb25maXJtUGFzc3dvcmQgPSBjb250cm9scy5jb25maXJtUGFzc3dvcmQudG91Y2hlZCAmJiBjb250cm9scy5jb25maXJtUGFzc3dvcmQuZGlydHk7XG4gICAgICBtYXRjaGluZ1Bhc3N3b3Jkc0Vycm9yID0gZXJyb3JzLm1hdGNoaW5nUGFzc3dvcmRzICYmIHBhc3N3b3JkICYmIGNvbmZpcm1QYXNzd29yZDtcbiAgICB9XG4gICAgcmV0dXJuIG1hdGNoaW5nUGFzc3dvcmRzRXJyb3I7XG4gIH1cblxuXG4gIGNoYW5nZVBhc3N3b3JkT25TdWNjZXNzKCkge1xuICAgIHRoaXMuY2hhbmdlUGFzc3dvcmRGb3JtLnJlc2V0KCk7XG4gICAgdGhpcy5jaGFuZ2VQYXNzd29yZEZvcm0ubWFya0FzUHJpc3RpbmUoKTtcbiAgICB0aGlzLmNoYW5nZVBhc3N3b3JkRm9ybS5tYXJrQXNVbnRvdWNoZWQoKTtcbiAgICB0aGlzLm9uRm9ybVN1bWJpdC5lbWl0KHRydWUpO1xuICAgIHRoaXMudG9hc3Rlci5zdWNjZXNzKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnBhc3N3b3JkLnJlc2V0LnN1Y2Nlc3MnKSk7XG4gIH1cblxuICBjaGFuZ2VQYXNzd29yZE9uRXJyb3IoZXJyb3IpIHtcbiAgICBjb25zdCBlcnJvclRpdGxlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucGFzc3dvcmQucmVzZXQuZXJyb3IucGFzc3dvcmQudGl0bGUnKTtcbiAgICBpZiAoZXJyb3IuZXJyb3Iua2V5ID09PSAnVVNFUl9PTERfUEFTU1dPUkRfV1JPTkcnKSB7XG4gICAgICB0aGlzLnRvYXN0ZXIuZXJyb3IoZXJyb3JUaXRsZSwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucGFzc3dvcmQucmVzZXQuZXJyb3Iub2xkLnBhc3N3b3JkLm1lc3NhZ2UnKSk7XG4gICAgfSBlbHNlIGlmIChlcnJvci5lcnJvci5rZXkgPT09ICdVU0VSX05FV19QQVNTV09SRF9JTlZBTElEJykge1xuICAgICAgdGhpcy50b2FzdGVyLmVycm9yKGVycm9yVGl0bGUsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnBhc3N3b3JkLnJlc2V0LmVycm9yLm5ldy5wYXNzd29yZC5tZXNzYWdlJykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRvYXN0ZXIuZXJyb3IoZXJyb3JUaXRsZSk7XG4gICAgfVxuICB9XG5cbiAgb25TdWJtaXQoKSB7XG4gICAgY29uc3Qge2N1cnJlbnRQYXNzd29yZCwgcGFzc3dvcmR9ID0gdGhpcy5jaGFuZ2VQYXNzd29yZEZvcm0udmFsdWU7XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIG9sZDogY3VycmVudFBhc3N3b3JkLFxuICAgICAgbmV3OiBwYXNzd29yZFxuICAgIH07XG5cbiAgICB0aGlzLnVzZXJTZXJ2aWNlXG4gICAgICAuY2hhbmdlUGFzc3dvcmQocGF5bG9hZClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jaGFuZ2VQYXNzd29yZE9uU3VjY2VzcygpLCAoZXJyb3IpID0+IHRoaXMuY2hhbmdlUGFzc3dvcmRPbkVycm9yKGVycm9yKSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { takeUntil, tap } from 'rxjs/operators';
2
- import { Component, Input, ViewChild, EventEmitter, Output } from '@angular/core';
2
+ import { Component, Input, ViewChild, EventEmitter, Output, ElementRef } from '@angular/core';
3
3
  import { Router } from '@angular/router';
4
4
  import { FormControl, Validators } from '@angular/forms';
5
5
  import { PendingChangesService } from '../../../eo-framework-core/pending-changes/pending-changes.service';
@@ -12,7 +12,7 @@ import { StoredQuery, StoredQueriesService, SearchFilter, SearchQuery, Translate
12
12
  import { UtilitiesService } from '../../util/services/utilities.service';
13
13
  import { forkJoin, of } from 'rxjs';
14
14
  export class StoredQueryDetailsComponent extends UnsubscribeOnDestroy {
15
- constructor(router, searchService, userService, systemService, selection, pendingChanges, storedQueriesService, formHelperService, translate) {
15
+ constructor(router, searchService, userService, systemService, selection, pendingChanges, storedQueriesService, formHelperService, elemRef, translate) {
16
16
  super();
17
17
  this.router = router;
18
18
  this.searchService = searchService;
@@ -22,6 +22,7 @@ export class StoredQueryDetailsComponent extends UnsubscribeOnDestroy {
22
22
  this.pendingChanges = pendingChanges;
23
23
  this.storedQueriesService = storedQueriesService;
24
24
  this.formHelperService = formHelperService;
25
+ this.elemRef = elemRef;
25
26
  this.translate = translate;
26
27
  this.FORM_INPUT_TITLE = 'storedQueryTitle';
27
28
  this.FORM_INPUT_FULLTEXT = 'storedQueryFulltext';
@@ -60,6 +61,9 @@ export class StoredQueryDetailsComponent extends UnsubscribeOnDestroy {
60
61
  this.edit();
61
62
  this.startPending();
62
63
  this.notifyList.emit({ unselect: true, update: false });
64
+ setTimeout(() => {
65
+ this.elemRef.nativeElement.querySelector('[name="storedQueryTitle"]').focus();
66
+ }, 500);
63
67
  }
64
68
  }
65
69
  }
@@ -468,7 +472,7 @@ export class StoredQueryDetailsComponent extends UnsubscribeOnDestroy {
468
472
  StoredQueryDetailsComponent.decorators = [
469
473
  { type: Component, args: [{
470
474
  selector: 'eo-stored-query-details',
471
- template: "<ng-container *ngIf=\"storedQuery\">\n <div class=\"eo-head\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\"\n [iconSrc]=\"'assets/_default/svg/ic_search.svg'\"\n [iconTitle]=\"('eo.sidebar.navigation.storedqueries' | translate)\">\n </eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{storedQuery.name}}</h2>\n <h3 class=\"eo-header-subtitle\" translate>eo.search.title.storedqueries</h3>\n </div>\n </header>\n </div>\n\n <div class=\"eo-body\">\n\n <div class=\"form\">\n\n <ng-template #queryForm>\n <eo-stored-query [query]=\"storedQuery\" [formOnly]=\"true\" #storedQueryForm\n (onQueryLoaded)=\"onStoredQueryLoaded()\"\n (onQueryExecute)=\"onStoredQueryExecute($event)\"></eo-stored-query>\n </ng-template>\n\n <form class=\"edit-form\" [formGroup]=\"editForm.form\" *ngIf=\"editForm.form; else queryForm\">\n\n <div class=\"context dark\">\n\n <!-- title and fulltext term fields -->\n <eo-form-input class=\"title\">\n <input type=\"text\" name=\"storedQueryTitle\" maxlength=\"64\" autofocus=\"autofocus\" [formControlName]=\"'storedQueryTitle'\"/>\n </eo-form-input>\n \n <eo-query-scope-select [selection]=\"queryScope\" (select)=\"setQueryScope($event)\"></eo-query-scope-select>\n <div class=\"form-field\">\n <eo-form-element [skipToggle]=\"true\" [element]=\"editForm.fulltextFormControl\" [situation]=\"'SEARCH'\"></eo-form-element>\n <eo-dynamic-property-switch [parentFormControl]=\"editForm.fulltextFormControl\"\n (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\n </div>\n\n <!-- context type form controls -->\n <h3>{{storedQuery.contextFolderTypes[0]?.label}}</h3>\n <div class=\"form-field\" *ngFor=\"let ctxElement of editForm.contextControls; trackBy: trackByQName\">\n <eo-form-element [element]=\"ctxElement\" [situation]=\"'SEARCH'\"></eo-form-element>\n <eo-dynamic-property-switch [parentFormControl]=\"ctxElement\" (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\n </div>\n </div>\n\n <!-- object type form controls -->\n <div class=\"form-fields\" [ngClass]=\"{empty: !editForm.controls?.length}\">\n <div class=\"form-field\" *ngFor=\"let element of editForm.controls; trackBy: trackByQName\">\n <eo-form-element [element]=\"element\" [situation]=\"'SEARCH'\"></eo-form-element>\n <eo-dynamic-property-switch [parentFormControl]=\"element\" (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\n </div>\n </div>\n </form>\n </div>\n\n <aside class=\"aside\" *ngIf=\"!isNewQuery\">\n\n <!-- favorite and share -->\n <div class=\"meta-actions\">\n\n <ng-container *ngIf=\"isOwnQuery; else sharedWithMe\">\n <eo-icon class=\"button btn-share\" [iconSrc]=\"'assets/_default/svg/ic_share.svg'\" *ngIf=\"enableSharing\"\n [ngClass]=\"{active: storedQuery.shared || storedQuery.roles.length, editing: editingShare}\"\n (click)=\"toggleShareEdit()\"\n [iconTitle]=\"iconTitles.share\"></eo-icon>\n\n <eo-icon class=\"button btn-fav\" [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\"\n [ngClass]=\"{active: storedQuery.favorite}\"\n (click)=\"toggleFavoriteState()\"\n [iconTitle]=\"iconTitles.favor\"></eo-icon>\n </ng-container>\n\n <ng-template #sharedWithMe>\n <eo-icon class=\"sharedWithMe\" [iconSrc]=\"'assets/_default/svg/ic_share.svg'\" [iconTitle]=\"iconTitles.shared\"></eo-icon>\n <eo-icon class=\"sharedWithMe\" [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\" [iconTitle]=\"iconTitles.favored\"></eo-icon>\n </ng-template>\n\n </div>\n\n <!-- roles that share this query -->\n <div class=\"meta-roles\" [ngClass]=\"{dark: editingShare, empty: !storedQuery.roles?.length}\">\n\n <div class=\"label\" translate>eo.storedquery.share.sharedwith</div>\n <div class=\"form-field\" *ngIf=\"rolesPicker?.codesystem?.entries\">\n <eo-codesystem [pickerTitle]=\"rolesPicker.title\"\n [codesystem]=\"rolesPicker.codesystem\"\n [multiselect]=\"true\"\n [readonly]=\"!editingShare\"\n [inputStyleClass]=\"'stored-query__share'\"\n [(ngModel)]=\"rolesPicker.value\"></eo-codesystem>\n </div>\n\n <div class=\"share-actions\" *ngIf=\"editingShare\">\n <button class=\"secondary\" (click)=\"cancelShare()\" translate>eo.storedquery.share.cancel</button>\n <button class=\"primary\" (click)=\"share()\" translate>eo.storedquery.share.ok</button>\n </div>\n </div>\n\n <!-- queries meta info like baseparam settings -->\n <div class=\"meta-data\" *ngIf=\"restrictions?.length\">\n <div class=\"restriction\" *ngFor=\"let restriction of restrictions; trackBy: trackByIndex\">\n <div class=\"label\">{{restriction.label}}</div>\n <div class=\"items\">\n <div *ngFor=\"let item of restriction.items; trackBy: trackByIndex\">{{item}}</div>\n </div>\n </div>\n </div>\n\n </aside>\n\n </div>\n\n <div class=\"actions\">\n <ng-container *ngIf=\"!editForm.form; else actionEdit\">\n <button class=\"secondary btn-delete\" (click)=\"delete()\" [disabled]=\"!isOwnQuery\" translate>eo.storedquery.action.delete</button>\n <button class=\"secondary btn-open\" (click)=\"setQueryToAppSearch()\" [disabled]=\"!isOwnQuery\" translate>eo.storedquery.load</button>\n <button class=\"primary grey btn-edit\" (click)=\"edit()\" [disabled]=\"!isOwnQuery\" translate>eo.storedquery.action.edit</button>\n <button class=\"primary btn-search\" [disabled]=\"storedQuery.state?.isEmpty\" (click)=\"executeQuery()\" translate>eo.storedquery.run</button>\n </ng-container>\n\n <ng-template #actionEdit>\n <!-- action while editing the query form -->\n <button class=\"secondary btn-cancel\" (click)=\"cancelEdit()\" translate>eo.storedquery.action.cancel</button>\n <button class=\"primary btn-save\" (click)=\"updateStoredQuery()\" [disabled]=\"editForm.form.invalid\" translate>eo.storedquery.action.save</button>\n </ng-template>\n </div>\n\n</ng-container>\n",
475
+ template: "<ng-container *ngIf=\"storedQuery\">\n <div class=\"eo-head\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\"\n [iconSrc]=\"'assets/_default/svg/ic_search.svg'\"\n [iconTitle]=\"('eo.sidebar.navigation.storedqueries' | translate)\">\n </eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{storedQuery.name}}</h2>\n <h3 class=\"eo-header-subtitle\" translate>eo.search.title.storedqueries</h3>\n </div>\n </header>\n </div>\n\n <div class=\"eo-body\">\n\n <div class=\"form\">\n\n <ng-template #queryForm>\n <eo-stored-query [query]=\"storedQuery\" [formOnly]=\"true\" #storedQueryForm\n (onQueryLoaded)=\"onStoredQueryLoaded()\"\n (onQueryExecute)=\"onStoredQueryExecute($event)\"></eo-stored-query>\n </ng-template>\n\n <form class=\"edit-form\" [formGroup]=\"editForm.form\" *ngIf=\"editForm.form; else queryForm\">\n\n <div class=\"context dark\">\n\n <!-- title and fulltext term fields -->\n <eo-form-input class=\"title\">\n <input type=\"text\" name=\"storedQueryTitle\" maxlength=\"64\" onfocus=\"this.select()\" [formControlName]=\"'storedQueryTitle'\"/>\n </eo-form-input>\n \n <eo-query-scope-select [selection]=\"queryScope\" (select)=\"setQueryScope($event)\"></eo-query-scope-select>\n <div class=\"form-field\">\n <eo-form-element [skipToggle]=\"true\" [element]=\"editForm.fulltextFormControl\" [situation]=\"'SEARCH'\"></eo-form-element>\n <eo-dynamic-property-switch [parentFormControl]=\"editForm.fulltextFormControl\"\n (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\n </div>\n\n <!-- context type form controls -->\n <h3>{{storedQuery.contextFolderTypes[0]?.label}}</h3>\n <div class=\"form-field\" *ngFor=\"let ctxElement of editForm.contextControls; trackBy: trackByQName\">\n <eo-form-element [element]=\"ctxElement\" [situation]=\"'SEARCH'\"></eo-form-element>\n <eo-dynamic-property-switch [parentFormControl]=\"ctxElement\" (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\n </div>\n </div>\n\n <!-- object type form controls -->\n <div class=\"form-fields\" [ngClass]=\"{empty: !editForm.controls?.length}\">\n <div class=\"form-field\" *ngFor=\"let element of editForm.controls; trackBy: trackByQName\">\n <eo-form-element [element]=\"element\" [situation]=\"'SEARCH'\"></eo-form-element>\n <eo-dynamic-property-switch [parentFormControl]=\"element\" (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\n </div>\n </div>\n </form>\n </div>\n\n <aside class=\"aside\" *ngIf=\"!isNewQuery\">\n\n <!-- favorite and share -->\n <div class=\"meta-actions\">\n\n <ng-container *ngIf=\"isOwnQuery; else sharedWithMe\">\n <eo-icon class=\"button btn-share\" [iconSrc]=\"'assets/_default/svg/ic_share.svg'\" *ngIf=\"enableSharing\"\n [ngClass]=\"{active: storedQuery.shared || storedQuery.roles.length, editing: editingShare}\"\n (click)=\"toggleShareEdit()\"\n [iconTitle]=\"iconTitles.share\"></eo-icon>\n\n <eo-icon class=\"button btn-fav\" [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\"\n [ngClass]=\"{active: storedQuery.favorite}\"\n (click)=\"toggleFavoriteState()\"\n [iconTitle]=\"iconTitles.favor\"></eo-icon>\n </ng-container>\n\n <ng-template #sharedWithMe>\n <eo-icon class=\"sharedWithMe\" [iconSrc]=\"'assets/_default/svg/ic_share.svg'\" [iconTitle]=\"iconTitles.shared\"></eo-icon>\n <eo-icon class=\"sharedWithMe\" [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\" [iconTitle]=\"iconTitles.favored\"></eo-icon>\n </ng-template>\n\n </div>\n\n <!-- roles that share this query -->\n <div class=\"meta-roles\" [ngClass]=\"{dark: editingShare, empty: !storedQuery.roles?.length}\">\n\n <div class=\"label\" translate>eo.storedquery.share.sharedwith</div>\n <div class=\"form-field\" *ngIf=\"rolesPicker?.codesystem?.entries\">\n <eo-codesystem [pickerTitle]=\"rolesPicker.title\"\n [codesystem]=\"rolesPicker.codesystem\"\n [multiselect]=\"true\"\n [readonly]=\"!editingShare\"\n [inputStyleClass]=\"'stored-query__share'\"\n [(ngModel)]=\"rolesPicker.value\"></eo-codesystem>\n </div>\n\n <div class=\"share-actions\" *ngIf=\"editingShare\">\n <button class=\"secondary\" (click)=\"cancelShare()\" translate>eo.storedquery.share.cancel</button>\n <button class=\"primary\" (click)=\"share()\" translate>eo.storedquery.share.ok</button>\n </div>\n </div>\n\n <!-- queries meta info like baseparam settings -->\n <div class=\"meta-data\" *ngIf=\"restrictions?.length\">\n <div class=\"restriction\" *ngFor=\"let restriction of restrictions; trackBy: trackByIndex\">\n <div class=\"label\">{{restriction.label}}</div>\n <div class=\"items\">\n <div *ngFor=\"let item of restriction.items; trackBy: trackByIndex\">{{item}}</div>\n </div>\n </div>\n </div>\n\n </aside>\n\n </div>\n\n <div class=\"actions\">\n <ng-container *ngIf=\"!editForm.form; else actionEdit\">\n <button class=\"secondary btn-delete\" (click)=\"delete()\" [disabled]=\"!isOwnQuery\" translate>eo.storedquery.action.delete</button>\n <button class=\"secondary btn-open\" (click)=\"setQueryToAppSearch()\" [disabled]=\"!isOwnQuery\" translate>eo.storedquery.load</button>\n <button class=\"primary grey btn-edit\" (click)=\"edit()\" [disabled]=\"!isOwnQuery\" translate>eo.storedquery.action.edit</button>\n <button class=\"primary btn-search\" [disabled]=\"storedQuery.state?.isEmpty\" (click)=\"executeQuery()\" translate>eo.storedquery.run</button>\n </ng-container>\n\n <ng-template #actionEdit>\n <!-- action while editing the query form -->\n <button class=\"secondary btn-cancel\" (click)=\"cancelEdit()\" translate>eo.storedquery.action.cancel</button>\n <button class=\"primary btn-save\" (click)=\"updateStoredQuery()\" [disabled]=\"editForm.form.invalid\" translate>eo.storedquery.action.save</button>\n </ng-template>\n </div>\n\n</ng-container>\n",
472
476
  styles: [":host{--stored-query-aside-width:300px;background:var(--panel-background-grey);display:flex;flex:1;flex-direction:column;height:100%;min-height:0;min-width:0;overflow-y:auto}:host .eo-head{background-color:var(--color-white);border-bottom:1px solid var(--panel-header-border-bottom-color)}:host .eo-body{overflow-y:hidden}:host .eo-body .form{overflow-y:auto;padding:var(--app-pane-padding);padding-right:calc(var(--stored-query-aside-width) + var(--app-pane-padding)*2)}:host .eo-body .form eo-stored-query{background-color:var(--color-white);padding:var(--app-pane-padding)}:host .eo-body .aside{background-color:rgba(var(--color-black-rgb),.02);border:1px solid rgba(var(--color-black-rgb),.1);box-sizing:border-box;padding:var(--app-pane-padding);position:absolute;right:var(--app-pane-padding);top:var(--app-pane-padding);width:var(--stored-query-aside-width)}:host .eo-body .aside .meta-actions{display:flex;justify-content:flex-end;margin:0 -2px}:host .eo-body .aside .meta-actions eo-icon{color:var(--text-color-hint);margin:0 2px;padding:4px}:host .eo-body .aside .meta-actions eo-icon.active{color:var(--color-favorite)}:host .eo-body .aside .meta-actions eo-icon.editing{background-color:var(--color-primary-2);border-radius:2px 2px 0 0;color:var(--color-white)}:host .eo-body .aside .meta-actions eo-icon.sharedWithMe{background-color:var(--text-color-hint);border-radius:2px;color:var(--color-white)}:host .eo-body .aside .meta-roles.dark{background-color:var(--color-primary-2);border-radius:2px;color:var(--color-white);margin-bottom:var(--app-pane-padding);padding:calc(var(--app-pane-padding)/2)}:host .eo-body .aside .meta-roles.dark .actions{display:flex}:host .eo-body .aside .meta-roles.dark .label{display:none}:host .eo-body .aside .meta-roles.dark .form-field,:host .eo-body .aside .meta-roles .form-field{background-color:rgba(var(--color-white-rgb),.2)}:host .eo-body .aside .meta-roles .form-field{border:1px solid rgba(var(--color-black-rgb),.1);margin-bottom:calc(var(--app-pane-padding)/2);padding:2px 2px 4px 4px}:host .eo-body .aside .meta-roles .label{color:var(--text-color-caption);font-style:italic;margin-bottom:calc(var(--app-pane-padding)/4)}:host .eo-body .aside .meta-roles .share-actions{display:flex;justify-content:flex-end;margin:0 calc(var(--app-pane-padding)/8*-1)}:host .eo-body .aside .meta-roles .share-actions button{margin:0 calc(var(--app-pane-padding)/8);padding:calc(var(--app-pane-padding)/4) calc(var(--app-pane-padding)/2)}:host .eo-body .aside .meta-roles.empty:not(.dark) .form-field,:host .eo-body .aside .meta-roles.empty:not(.dark) .label{display:none}:host .eo-body .aside .meta-data{border-collapse:collapse;display:table;flex:1 1 40%;margin:0 0 var(--app-pane-padding) 0;order:1}:host .eo-body .aside .meta-data .restriction{display:table-row}:host .eo-body .aside .meta-data .restriction .label{color:var(--text-color-caption);display:table-cell;font-style:italic;padding-right:calc(var(--app-pane-padding)/2)}:host .eo-body .aside .meta-data .restriction .items{border-left:1px solid rgba(var(--color-black-rgb),.1);display:table-cell;padding:0 0 calc(var(--app-pane-padding)/2) calc(var(--app-pane-padding)/2)}:host .actions{background-color:var(--color-white);border-top:1px solid var(--panel-header-border-bottom-color);display:flex;flex-flow:row;justify-content:flex-end;padding:var(--app-pane-padding) calc(var(--app-pane-padding) - 2px)}:host .actions button{margin:0 2px}:host .edit-form{background-color:var(--color-white);max-width:500px}:host .edit-form .context{background-color:var(--color-primary-2);padding:calc(var(--app-pane-padding)/2)}:host .edit-form .context h3{color:var(--color-white);display:flex;font-size:var(--font-subhead);font-weight:var(--font-weight-light);justify-content:flex-end;margin:0;padding:var(--app-pane-padding) 0 calc(var(--app-pane-padding)/2) 0}:host .edit-form .form-fields{padding:calc(var(--app-pane-padding)/2)}:host .edit-form .form-fields.empty{display:none}:host .edit-form .form-field{align-items:center;display:flex;flex-flow:row nowrap}:host .edit-form .form-field eo-form-element{flex:1 1 auto}:host .edit-form .form-field eo-dynamic-property-switch{flex:0 0 auto}:host eo-stored-query{display:block;max-width:500px}:host ::ng-deep eo-form-input.title{display:block;margin-bottom:var(--app-pane-padding)}:host ::ng-deep eo-form-input.title input{font-size:var(--font-title);font-weight:var(--font-weight-light)}"]
473
477
  },] }
474
478
  ];
@@ -481,6 +485,7 @@ StoredQueryDetailsComponent.ctorParameters = () => [
481
485
  { type: PendingChangesService },
482
486
  { type: StoredQueriesService },
483
487
  { type: ObjectFormHelperService },
488
+ { type: ElementRef },
484
489
  { type: TranslateService }
485
490
  ];
486
491
  StoredQueryDetailsComponent.propDecorators = {
@@ -488,4 +493,4 @@ StoredQueryDetailsComponent.propDecorators = {
488
493
  query: [{ type: Input }],
489
494
  notifyList: [{ type: Output }]
490
495
  };
491
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVkLXF1ZXJ5LWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvc3RvcmVkLXF1ZXJ5L3N0b3JlZC1xdWVyeS1kZXRhaWxzL3N0b3JlZC1xdWVyeS1kZXRhaWxzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFhLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFPLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBbUIsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxvRUFBb0UsQ0FBQztBQUN6RyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0saURBQWlELENBQUM7QUFDaEYsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDckYsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBSWpGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBQ3hGLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ2xGLE9BQU8sRUFFTCxXQUFXLEVBQ1gsb0JBQW9CLEVBQ3BCLFlBQVksRUFDWixXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFFYixXQUFXLEVBRVgsS0FBSyxFQUNMLGFBQWEsRUFFZCxNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUN2RSxPQUFP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LEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUk7UUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUk7UUFDdEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs7WUE3aEJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUseUJBQXlCO2dCQUNuQyxrbE5BQW9EOzthQUVyRDs7O1lBbEN5QixNQUFNO1lBd0I5QixhQUFhO1lBSGIsV0FBVztZQUZYLGFBQWE7WUFUUCxnQkFBZ0I7WUFQaEIscUJBQXFCO1lBWTNCLG9CQUFvQjtZQVZkLHVCQUF1QjtZQWE3QixnQkFBZ0I7Ozs4QkF5QmYsU0FBUyxTQUFDLGlCQUFpQjtvQkFrQjNCLEtBQUs7eUJBS0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dGFrZVVudGlsLCBzd2l0Y2hNYXAsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIFR5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOYXZpZ2F0aW9uRXh0cmFzLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0Zvcm1Db250cm9sLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge09iamVjdEZvcm1Db250cm9sV3JhcHBlcn0gZnJvbSAnLi4vLi4vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0tY29udHJvbC13cmFwcGVyJztcbmltcG9ydCB7UGVuZGluZ0NoYW5nZXNTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9wZW5kaW5nLWNoYW5nZXMvcGVuZGluZy1jaGFuZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHtPYmplY3RGb3JtR3JvdXB9IGZyb20gJy4uLy4uL29iamVjdC1mb3JtL29iamVjdC1mb3JtL29iamVjdC1mb3JtLWdyb3VwJztcbmltcG9ydCB7T2JqZWN0Rm9ybUhlbHBlclNlcnZpY2V9IGZyb20gJy4uLy4uL29iamVjdC1mb3JtL29iamVjdC1mb3JtLWhlbHBlci5zZXJ2aWNlJztcbmltcG9ydCB7TG9jYWxlRGF0ZVBpcGV9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BpcGVzL2xvY2FsZS1kYXRlLnBpcGUnO1xuaW1wb3J0IHtPYmplY3RGb3JtQ29udHJvbH0gZnJvbSAnLi4vLi4vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0tY29udHJvbCc7XG5pbXBvcnQge0VkaXRGb3JtLCBOb3RpZnlMaXN0LCBSZXN0cmljdGlvbn0gZnJvbSAnLi4vc3RvcmVkLXF1ZXJ5LmludGVyZmFjZSc7XG5pbXBvcnQge1N0b3JlZFF1ZXJ5Q29tcG9uZW50fSBmcm9tICcuLi9zdG9yZWQtcXVlcnkvc3RvcmVkLXF1ZXJ5LmNvbXBvbmVudCc7XG5pbXBvcnQge1NlbGVjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3NlbGVjdGlvbi9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQge1Vuc3Vic2NyaWJlT25EZXN0cm95fSBmcm9tICcuLi8uLi91dGlsL3Vuc3Vic2NyaWJlL3Vuc3Vic2NyaWJlLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBJU3RvcmVkUXVlcnlQYXJhbSxcbiAgU3RvcmVkUXVlcnksXG4gIFN0b3JlZFF1ZXJpZXNTZXJ2aWNlLFxuICBTZWFyY2hGaWx0ZXIsXG4gIFNlYXJjaFF1ZXJ5LFxuICBUcmFuc2xhdGVTZXJ2aWNlLFxuICBTeXN0ZW1TZXJ2aWNlLFxuICBSYW5nZVZhbHVlLFxuICBVc2VyU2VydmljZSxcbiAgT3JnUm9sZSxcbiAgVXRpbHMsXG4gIFNlYXJjaFNlcnZpY2UsXG4gIFF1ZXJ5U2NvcGVcbn0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7VXRpbGl0aWVzU2VydmljZX0gZnJvbSAnLi4vLi4vdXRpbC9zZXJ2aWNlcy91dGlsaXRpZXMuc2VydmljZSc7XG5pbXBvcnQgeyBmb3JrSm9pbiwgb2YsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tc3RvcmVkLXF1ZXJ5LWRldGFpbHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3RvcmVkLXF1ZXJ5LWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdG9yZWQtcXVlcnktZGV0YWlscy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFN0b3JlZFF1ZXJ5RGV0YWlsc0NvbXBvbmVudCBleHRlbmRzIFVuc3Vic2NyaWJlT25EZXN0cm95IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwcml2YXRlIEZPUk1fSU5QVVRfVElUTEUgPSAnc3RvcmVkUXVlcnlUaXRsZSc7XG4gIHByaXZhdGUgRk9STV9JTlBVVF9GVUxMVEVYVCA9ICdzdG9yZWRRdWVyeUZ1bGx0ZXh0JztcbiAgcHJpdmF0ZSBCQVNFX1BBUkFNU19GSUVMRFMgPSBPYmplY3Qua2V5cyhTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUykubWFwKGsgPT4gU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVNba10pO1xuICBwcml2YXRlIGRhdGVQaXBlOiBMb2NhbGVEYXRlUGlwZTtcbiAgcHJpdmF0ZSBwZW5kaW5nVGFza0lkOiBzdHJpbmc7XG5cbiAgQFZpZXdDaGlsZCgnc3RvcmVkUXVlcnlGb3JtJykgc3RvcmVkUXVlcnlGb3JtOiBTdG9yZWRRdWVyeUNvbXBvbmVudDtcblxuICBpY29uVGl0bGVzOiBhbnk7XG4gIHN0b3JlZFF1ZXJ5OiBTdG9yZWRRdWVyeTtcbiAgcXVlcnlTY29wZTogUXVlcnlTY29wZTtcbiAgZWRpdEZvcm06IEVkaXRGb3JtO1xuICByZXN0cmljdGlvbnM6IFJlc3RyaWN0aW9uW107XG4gIGVkaXRpbmdTaGFyZTogYm9vbGVhbjtcbiAgaXNOZXdRdWVyeTogYm9vbGVhbjtcbiAgaXNPd25RdWVyeTogYm9vbGVhbjtcbiAgZW5hYmxlU2hhcmluZzogYm9vbGVhbjtcbiAgc3lzdGVtUm9sZXM6IE9yZ1JvbGVbXTtcbiAgcm9sZXNQaWNrZXIgPSB7XG4gICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnN0b3JlZHF1ZXJ5LnJvbGVzJyksXG4gICAgY29kZXN5c3RlbTogbnVsbCxcbiAgICB2YWx1ZTogbnVsbFxuICB9O1xuXG4gIEBJbnB1dCgpXG4gIHNldCBxdWVyeShxOiBTdG9yZWRRdWVyeSkge1xuICAgIHRoaXMuc2V0UXVlcnkocSk7XG4gIH1cblxuICBAT3V0cHV0KCkgbm90aWZ5TGlzdDogRXZlbnRFbWl0dGVyPE5vdGlmeUxpc3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxOb3RpZnlMaXN0PigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgc3lzdGVtU2VydmljZTogU3lzdGVtU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBzZWxlY3Rpb246IFNlbGVjdGlvblNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgcGVuZGluZ0NoYW5nZXM6IFBlbmRpbmdDaGFuZ2VzU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBzdG9yZWRRdWVyaWVzU2VydmljZTogU3RvcmVkUXVlcmllc1NlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgZm9ybUhlbHBlclNlcnZpY2U6IE9iamVjdEZvcm1IZWxwZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmRhdGVQaXBlID0gbmV3IExvY2FsZURhdGVQaXBlKHRyYW5zbGF0ZSk7XG4gICAgdGhpcy5mZXRjaFJvbGVzKCk7XG4gIH1cbiAgXG4gIHB1YmxpYyBzZXRRdWVyeVNjb3BlKHNjb3BlOiBRdWVyeVNjb3BlKSB7XG4gICAgdGhpcy5zdG9yZWRRdWVyeS5zY29wZSA9IHNjb3BlO1xuICAgIHRoaXMucXVlcnlTY29wZSA9IHNjb3BlO1xuICB9XG5cbiAgc2V0UXVlcnkocTogU3RvcmVkUXVlcnkpIHtcbiAgICB0aGlzLmVkaXRpbmdTaGFyZSA9IGZhbHNlO1xuICAgIHRoaXMucmVzZXRFZGl0Rm9ybSgpO1xuICAgIC8vIGdyYWIgbWV0YSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcXVlcnlcbiAgICB0aGlzLnN0b3JlZFF1ZXJ5ID0gcTtcbiAgICBpZiAocSBpbnN0YW5jZW9mIFN0b3JlZFF1ZXJ5KSB7XG4gICAgICB0aGlzLnF1ZXJ5U2NvcGUgPSBxLnNjb3BlO1xuICAgICAgY29uc3QgdXNlciA9IHRoaXMudXNlclNlcnZpY2UuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICAgIHRoaXMuaXNOZXdRdWVyeSA9IHEuaXNOZXcoKTtcbiAgICAgIHRoaXMuaXNPd25RdWVyeSA9IHRoaXMuaXNOZXdRdWVyeSB8fCBxLnVzZXIudG9Mb3dlckNhc2UoKSA9PT0gdXNlci5uYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICB0aGlzLnJlc3RyaWN0aW9ucyA9IHRoaXMuZ2V0UmVzdHJpY3Rpb25zKCk7XG4gICAgICB0aGlzLnJvbGVzUGlja2VyLnZhbHVlID0gcS5yb2xlcztcbiAgICAgIHRoaXMuZW5hYmxlU2hhcmluZyA9IHVzZXIuaGFzUHJpdmlsZWdlKCdTSEFSRV9TVE9SRURfUVVFUklFUycpICYmIHRoaXMuaXNPd25RdWVyeSAmJiAhdGhpcy5pc05ld1F1ZXJ5O1xuXG4gICAgICBpZiAocS5pc05ldygpKSB7XG4gICAgICAgIHRoaXMuc3RvcmVkUXVlcnkubmFtZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNlYXJjaC5zdG9yZWRxdWVyaWVzLm5ldy50aXRsZScpO1xuICAgICAgICB0aGlzLmVkaXQoKTtcbiAgICAgICAgdGhpcy5zdGFydFBlbmRpbmcoKTtcbiAgICAgICAgdGhpcy5ub3RpZnlMaXN0LmVtaXQoe3Vuc2VsZWN0OiB0cnVlLCB1cGRhdGU6IGZhbHNlfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGFydFBlbmRpbmcoKSB7XG4gICAgaWYgKCF0aGlzLnBlbmRpbmdDaGFuZ2VzLmhhc1BlbmRpbmdUYXNrKHRoaXMucGVuZGluZ1Rhc2tJZCB8fCAnICcpKSB7XG4gICAgICB0aGlzLnBlbmRpbmdUYXNrSWQgPSB0aGlzLnBlbmRpbmdDaGFuZ2VzLnN0YXJ0VGFzaygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmluaXNoUGVuZGluZygpIHtcbiAgICB0aGlzLnBlbmRpbmdDaGFuZ2VzLmZpbmlzaFRhc2sodGhpcy5wZW5kaW5nVGFza0lkKTtcbiAgfVxuXG4gIGVkaXQoKSB7XG4gICAgaWYgKCF0aGlzLmVkaXRGb3JtLmZvcm0pIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNyZWF0ZUVkaXRGb3JtKCk7XG4gICAgICAgIHRoaXMubm90aWZ5TGlzdC5lbWl0KHt1bnNlbGVjdDogZmFsc2UsIHVwZGF0ZTogdHJ1ZX0pO1xuICAgICAgfSwgMCk7XG4gICAgfVxuICB9XG5cbiAgb25Gb3JtU3RhdHVzQ2hhbmdlZChmb3JtU3RhdGUpIHtcbiAgICBmb3JtU3RhdGUuZGlydHkgPyB0aGlzLnN0YXJ0UGVuZGluZygpIDogdGhpcy5maW5pc2hQZW5kaW5nKCk7XG4gIH1cblxuICB0b2dnbGVTaGFyZUVkaXQoKSB7XG4gICAgdGhpcy5lZGl0aW5nU2hhcmUgPSAhdGhpcy5lZGl0aW5nU2hhcmU7XG4gIH1cblxuICBzaGFyZSgpIHtcbiAgICB0aGlzLnN0b3JlZFF1ZXJ5LnJvbGVzID0gdGhpcy5yb2xlc1BpY2tlci52YWx1ZTtcbiAgICB0aGlzLnN0b3JlZFF1ZXJpZXNTZXJ2aWNlLnNhdmVTdG9yZWRRdWVyeSh0aGlzLnN0b3JlZFF1ZXJ5KS5zdWJzY3JpYmUoXG4gICAgICBfID0+IHtcbiAgICAgIH0sIFV0aWxzLnRocm93KG51bGwsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNlYXJjaC5zdG9yZWRxdWVyeS5zYXZlLmVycm9yJykpXG4gICAgKTtcbiAgICB0aGlzLmVkaXRpbmdTaGFyZSA9IGZhbHNlO1xuICB9XG5cbiAgY2FuY2VsU2hhcmUoKSB7XG4gICAgdGhpcy5yb2xlc1BpY2tlci52YWx1ZSA9IHRoaXMuc3RvcmVkUXVlcnkucm9sZXM7XG4gICAgdGhpcy5lZGl0aW5nU2hhcmUgPSBmYWxzZTtcbiAgfVxuXG4gIGRlbGV0ZSgpIHtcbiAgICB0aGlzLnN0b3JlZFF1ZXJpZXNTZXJ2aWNlXG4gICAgICAucmVtb3ZlU3RvcmVkUXVlcnkodGhpcy5zdG9yZWRRdWVyeS5pZClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnF1ZXJ5ID0gbnVsbDtcbiAgICAgICAgdGhpcy5ub3RpZnlMaXN0LmVtaXQoe3Vuc2VsZWN0OiBmYWxzZSwgdXBkYXRlOiBmYWxzZX0pO1xuICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLnN0b3JlZHF1ZXJ5LmRlbGV0ZS5lcnJvcicpKSk7XG4gIH1cblxuICB0b2dnbGVGYXZvcml0ZVN0YXRlKCkge1xuICAgIHRoaXMuc3RvcmVkUXVlcnkuZmF2b3JpdGUgPSAhdGhpcy5zdG9yZWRRdWVyeS5mYXZvcml0ZTtcbiAgICB0aGlzLnN0b3JlZFF1ZXJpZXNTZXJ2aWNlXG4gICAgICAuc2F2ZVN0b3JlZFF1ZXJ5KHRoaXMuc3RvcmVkUXVlcnkpXG4gICAgICAuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLnN0b3JlZHF1ZXJ5LnNhdmUuZXJyb3InKSkpO1xuICB9XG5cbiAgY2FuY2VsRWRpdCgpIHtcbiAgICB0aGlzLnJlc2V0RWRpdEZvcm0oKTtcbiAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcbiAgICBpZiAodGhpcy5zdG9yZWRRdWVyeS5pc05ldygpKSB7XG4gICAgICB0aGlzLnF1ZXJ5ID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5ub3RpZnlMaXN0LmVtaXQoe3Vuc2VsZWN0OiBmYWxzZSwgdXBkYXRlOiBmYWxzZSwgcGF5bG9hZDogdGhpcy5zdG9yZWRRdWVyeX0pO1xuICB9XG5cbiAgc2V0UXVlcnlUb0FwcFNlYXJjaCgpIHtcbiAgICB0aGlzLnN0b3JlZFF1ZXJ5Rm9ybS5sb2FkKCk7XG4gIH1cblxuICBleGVjdXRlUXVlcnkoKSB7XG4gICAgdGhpcy5zdG9yZWRRdWVyeUZvcm0uZXhlY3V0ZSgpO1xuICB9XG5cbiAgLy8gU2F2ZSB0aGUgY3VycmVudCBzdG9yZWQgcXVlcnlcbiAgdXBkYXRlU3RvcmVkUXVlcnkoKSB7XG5cbiAgICBjb25zdCBmb3JtRGF0YSA9IHRoaXMuZ2V0Rm9ybURhdGEoKTtcbiAgICB0aGlzLnN0b3JlZFF1ZXJ5LmZpbHRlcnMgPSB0aGlzLnN0b3JlZFF1ZXJ5LmZpbHRlcnMuZmlsdGVyKGYgPT4gfnRoaXMuQkFTRV9QQVJBTVNfRklFTERTLmluZGV4T2YoZi5wcm9wZXJ0eSkpO1xuICAgIE9iamVjdC5rZXlzKGZvcm1EYXRhKVxuICAgICAgLmZvckVhY2goayA9PiB7XG4gICAgICAgIGlmIChrID09PSB0aGlzLkZPUk1fSU5QVVRfVElUTEUpIHtcbiAgICAgICAgICB0aGlzLnN0b3JlZFF1ZXJ5Lm5hbWUgPSBmb3JtRGF0YVtrXTtcbiAgICAgICAgfSBlbHNlIGlmIChrID09PSB0aGlzLkZPUk1fSU5QVVRfRlVMTFRFWFQpIHtcbiAgICAgICAgICB0aGlzLnN0b3JlZFF1ZXJ5LnRlcm0gPSBmb3JtRGF0YVtrXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsZXQgZmlsdGVyczogU2VhcmNoRmlsdGVyW10gPSB0aGlzLnNlYXJjaFNlcnZpY2UuZ2V0U2VhcmNoRmlsdGVyKHRoaXMuc3RvcmVkUXVlcnkudHlwZXMsIGssIGZvcm1EYXRhW2tdKTtcbiAgICAgICAgICBmaWx0ZXJzLmZvckVhY2goZiA9PiB0aGlzLnN0b3JlZFF1ZXJ5LmFkZEZpbHRlcihmKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5zdG9yZWRRdWVyaWVzU2VydmljZVxuICAgICAgLnNhdmVTdG9yZWRRdWVyeSh0aGlzLnN0b3JlZFF1ZXJ5KVxuICAgICAgLnN1YnNjcmliZSh1cGRhdGVkU3RvcmVkUXVlcnkgPT4ge1xuICAgICAgICB0aGlzLnF1ZXJ5ID0gdXBkYXRlZFN0b3JlZFF1ZXJ5O1xuICAgICAgICB0aGlzLnJlc2V0RWRpdEZvcm0oKTtcbiAgICAgICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XG4gICAgICAgIHRoaXMubm90aWZ5TGlzdC5lbWl0KHt1bnNlbGVjdDogZmFsc2UsIHVwZGF0ZTogZmFsc2UsIHBheWxvYWQ6IHVwZGF0ZWRTdG9yZWRRdWVyeX0pO1xuICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLnN0b3JlZHF1ZXJ5LnNhdmUuZXJyb3InKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSBmb3JtIGVsZW1lbnRzIHRvIGJlIGEgZHluYW1pYyBwYXJhbWV0ZXIgb3Igbm90XG4gICAqIEBwYXJhbSBldmVudFxuICAgKi9cbiAgcGFyYW1ldGVyQ2hhbmdlZChldmVudDogeyBjb250cm9sOiBzdHJpbmcsIHZhbHVlOiBib29sZWFuIH0pIHtcblxuICAgIGxldCBtID0gdGhpcy5zdG9yZWRRdWVyeS5wYXJhbWV0ZXIuZmluZChwID0+IHAucW5hbWUgPT09IGV2ZW50LmNvbnRyb2wpO1xuICAgIGlmIChtICYmICFldmVudC52YWx1ZSkge1xuICAgICAgLy8gcmVtb3ZlIGV4aXN0aW5nIHBhcmFtZXRlclxuICAgICAgdGhpcy5zdG9yZWRRdWVyeS5wYXJhbWV0ZXIgPSB0aGlzLnN0b3JlZFF1ZXJ5LnBhcmFtZXRlci5maWx0ZXIocCA9PiBwLnFuYW1lICE9PSBldmVudC5jb250cm9sKTtcbiAgICB9IGVsc2UgaWYgKCFtICYmIGV2ZW50LnZhbHVlKSB7XG4gICAgICAvLyBhZGQgcGFyYW1ldGVyIGVsZW1lbnRcbiAgICAgIGxldCBwYXJhbSA9IHRoaXMuZm9ybUZpZWxkVG9QYXJhbWV0ZXIoZXZlbnQuY29udHJvbCk7XG4gICAgICBpZiAocGFyYW0pIHtcbiAgICAgICAgdGhpcy5zdG9yZWRRdWVyeS5wYXJhbWV0ZXIucHVzaChwYXJhbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRGb3JtRGF0YSgpIHtcblxuICAgIGNvbnN0IHByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyh0aGlzLmVkaXRGb3JtLmZvcm0udmFsdWUpO1xuICAgIGxldCBkYXRhID0ge307XG5cblxuICAgIHByb3BlcnRpZXMuZm9yRWFjaChwcm9wZXJ0eSA9PiB7XG5cbiAgICAgIGNvbnN0IGZjOiBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIgPSB0aGlzLmVkaXRGb3JtLmZvcm0uY29udHJvbHNbcHJvcGVydHldIGFzIE9iamVjdEZvcm1Db250cm9sV3JhcHBlcjtcbiAgICAgIGxldCBmb3JtRWxlbWVudDtcbiAgICAgIGlmIChmYy5jb250cm9scyAmJiBmYy5jb250cm9sc1twcm9wZXJ0eV0pIHtcbiAgICAgICAgY29uc3QgZmU6IE9iamVjdEZvcm1Db250cm9sID0gZmMuY29udHJvbHNbcHJvcGVydHldIGFzIE9iamVjdEZvcm1Db250cm9sO1xuICAgICAgICBmb3JtRWxlbWVudCA9IGZlLl9lb0Zvcm1FbGVtZW50O1xuICAgICAgfVxuICAgICAgaWYgKGZvcm1FbGVtZW50ICYmIGZvcm1FbGVtZW50LmlzTm90U2V0VmFsdWUpIHtcbiAgICAgICAgZGF0YVtwcm9wZXJ0eV0gPSBudWxsO1xuICAgICAgfSBlbHNlIHtcblxuICAgICAgICBzd2l0Y2ggKHByb3BlcnR5KSB7XG4gICAgICAgICAgY2FzZSB0aGlzLkZPUk1fSU5QVVRfVElUTEU6IHtcbiAgICAgICAgICAgIGRhdGFbcHJvcGVydHldID0gdGhpcy5lZGl0Rm9ybS5mb3JtLnZhbHVlW3Byb3BlcnR5XSB8fCAnJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIHRoaXMuRk9STV9JTlBVVF9GVUxMVEVYVDoge1xuICAgICAgICAgICAgZGF0YVtwcm9wZXJ0eV0gPSB0aGlzLmVkaXRGb3JtLmZvcm0udmFsdWVbcHJvcGVydHldW1N0b3JlZFF1ZXJpZXNTZXJ2aWNlLkZVTExURVhUXSB8fCAnJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBjb25zdCB2ID0gdGhpcy5lZGl0Rm9ybS5mb3JtLnZhbHVlW3Byb3BlcnR5XVtwcm9wZXJ0eV07XG4gICAgICAgICAgICBpZiAoIVV0aWxpdGllc1NlcnZpY2UuaXNFbXB0eSh2KSkge1xuICAgICAgICAgICAgICBkYXRhW3Byb3BlcnR5XSA9IHY7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgZHluYW1pYyBzdG9yZWQgcXVlcnkgcGFyYW1ldGVyIGZvciBhIGZvcm0gZWxlbWVudFxuICAgKiBAcGFyYW0gcW5hbWUgVGhlIGZvcm0gZWxlbWVudHMgcW5hbWVcbiAgICogQHJldHVybnNcbiAgICovXG4gIHByaXZhdGUgZm9ybUZpZWxkVG9QYXJhbWV0ZXIocW5hbWU6IHN0cmluZyk6IElTdG9yZWRRdWVyeVBhcmFtIHtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgcGFyYW06IElTdG9yZWRRdWVyeVBhcmFtO1xuICAgICAgLy8gc3BlY2lhbCBoYW5kbGluZyBmb3IgZnVsbHRleHQgZmllbGRzXG4gICAgICBpZiAocW5hbWUgPT09IFN0b3JlZFF1ZXJpZXNTZXJ2aWNlLkZVTExURVhUKSB7XG4gICAgICAgIHBhcmFtID0ge1xuICAgICAgICAgIHFuYW1lOiBxbmFtZSxcbiAgICAgICAgICB0eXBlOiBxbmFtZSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGZjID0gKCh0aGlzLmVkaXRGb3JtLmZvcm0uY29udHJvbHNbcW5hbWVdIGFzIE9iamVjdEZvcm1Db250cm9sV3JhcHBlcikuY29udHJvbHNbcW5hbWVdIGFzIE9iamVjdEZvcm1Db250cm9sKTtcbiAgICAgICAgY29uc3QgZmUgPSBmYy5fZW9Gb3JtRWxlbWVudDtcbiAgICAgICAgcGFyYW0gPSB7XG4gICAgICAgICAgcW5hbWU6IGZlLnFuYW1lLFxuICAgICAgICAgIHR5cGU6IGZlLnR5cGVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJhbTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc2V0RWRpdEZvcm0oKSB7XG4gICAgdGhpcy5lZGl0Rm9ybSA9IHtcbiAgICAgIGZvcm06IG51bGwsXG4gICAgICBmdWxsdGV4dEZvcm1Db250cm9sOiBudWxsLFxuICAgICAgY29udHJvbHM6IFtdLFxuICAgICAgY29udGV4dENvbnRyb2xzOiBbXVxuICAgIH07XG4gIH1cblxuICBvbkZvcm1DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuZWRpdEZvcm1cbiAgICAgIC5mb3JtXG4gICAgICAudmFsdWVDaGFuZ2VzXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMub25Gb3JtU3RhdHVzQ2hhbmdlZCh0aGlzLmVkaXRGb3JtLmZvcm0pKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRWRpdEZvcm0oKSB7XG5cbiAgICB0aGlzLnJlc2V0RWRpdEZvcm0oKTtcbiAgICB0aGlzLnNldHVwRm9ybUNvbnRyb2xzKCkuc3Vic2NyaWJlKF8gPT4ge1xuXG4gICAgICBsZXQgZm9ybSA9IG5ldyBPYmplY3RGb3JtR3JvdXAoe30pO1xuICAgICAgbGV0IGZjVGl0bGUgPSBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgZmNUaXRsZS5zZXRWYWx1ZSh0aGlzLnN0b3JlZFF1ZXJ5Lm5hbWUpO1xuXG4gICAgICBsZXQgZmNGdWxsdGV4dCA9IHRoaXMudG9Gb3JtQ29udHJvbCh0aGlzLnN0b3JlZFF1ZXJpZXNTZXJ2aWNlLmdldEZ1bGx0ZXh0Rm9ybUVsZW1lbnQoXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnN0b3JlZHF1ZXJ5LnNlYXJjaC50ZXJtJyksXG4gICAgICAgIHRoaXMuc3RvcmVkUXVlcnkudGVybVxuICAgICAgKSk7XG4gICAgICB0aGlzLmVkaXRGb3JtLmZ1bGx0ZXh0Rm9ybUNvbnRyb2wgPSBmY0Z1bGx0ZXh0O1xuXG4gICAgICAvLyBhZGQgdGl0bGUgYW5kIGZ1bGx0ZXh0IGZpZWxkXG4gICAgICBmb3JtLmFkZENvbnRyb2wodGhpcy5GT1JNX0lOUFVUX1RJVExFLCBmY1RpdGxlKTtcbiAgICAgIGZvcm0uYWRkQ29udHJvbCh0aGlzLkZPUk1fSU5QVVRfRlVMTFRFWFQsIGZjRnVsbHRleHQpO1xuXG4gICAgICBpZiAodGhpcy5lZGl0Rm9ybS5jb250cm9scy5sZW5ndGggfHwgdGhpcy5lZGl0Rm9ybS5jb250ZXh0Q29udHJvbHMubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuZWRpdEZvcm0uY29udHJvbHNcbiAgICAgICAgICAuZm9yRWFjaCgoYykgPT4gZm9ybS5hZGRDb250cm9sKGMuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lLCBjKSk7XG4gICAgICAgIHRoaXMuZWRpdEZvcm0uY29udGV4dENvbnRyb2xzXG4gICAgICAgICAgLmZvckVhY2goKGMpID0+IGZvcm0uYWRkQ29udHJvbChjLl9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZSwgYykpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmVkaXRGb3JtLmZvcm0gPSBmb3JtO1xuICAgICAgdGhpcy5vbkZvcm1DaGFuZ2VzKCk7XG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBGb3JtQ29udHJvbHMoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCB0YXNrcyA9IFtdO1xuICAgICAvLyBzZXR0aW5nIHVwIG9iamVjdCB0eXBlIGZvcm0gb25seSBtYWtlcyBzZW5zZSB3aXRoIG9uZSB0YXJnZXQgdHlwZVxuICAgIGlmICh0aGlzLnN0b3JlZFF1ZXJ5LnR5cGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGFza3MucHVzaCh0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0Rm9ybUVsZW1lbnRzRnJvbUZvcm1Nb2RlbCh0aGlzLnN0b3JlZFF1ZXJ5LnR5cGVzWzBdLnFuYW1lLCAnU0VBUkNIJykucGlwZShcbiAgICAgICAgdGFwKChlbGVtZW50czogYW55W10pID0+IHtcbiAgICAgICAgICBlbGVtZW50cy5mb3JFYWNoKGUgPT4ge1xuICAgICAgICAgICAgLy8gcHJldmVudCB0YWJsZXMgYW5kIGJpbmFyeSB0eXBlcyBmcm9tIGJlaW5nIHJlbmRlcmVkIGluIHRoZSBzdG9yZWQgcXVlcnkgZm9ybVxuICAgICAgICAgICAgaWYgKGUudHlwZSAhPT0gJ0JJTkFSWScpIHtcbiAgICAgICAgICAgICAgaWYgKGUucmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgICBlLnJlcXVpcmVkID0gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGUucmVhZG9ubHkpIHtcbiAgICAgICAgICAgICAgICBlLnJlYWRvbmx5ID0gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgZmMgPSB0aGlzLnRvRm9ybUNvbnRyb2woZSk7XG4gICAgICAgICAgICAgIGlmIChmYykge1xuICAgICAgICAgICAgICAgIHRoaXMuZWRpdEZvcm0uY29udHJvbHMucHVzaChmYyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgICAgKSlcbiAgICB9XG4gICAgIC8vIGFkZCBjb250ZXh0IGZvcm0gY29udHJvbHMgYXMgd2VsbFxuICAgIGlmICh0aGlzLnN0b3JlZFF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlcy5sZW5ndGgpIHtcbiAgICAgIHRhc2tzLnB1c2godGhpcy5zeXN0ZW1TZXJ2aWNlLmdldEZvcm1FbGVtZW50c0Zyb21Gb3JtTW9kZWwodGhpcy5zdG9yZWRRdWVyeS5jb250ZXh0Rm9sZGVyVHlwZXNbMF0ucW5hbWUsICdTRUFSQ0gnLCB0cnVlKS5waXBlKFxuICAgICAgICB0YXAoKGVsZW1lbnRzOiBhbnlbXSkgPT4ge1xuICAgICAgICAgIGVsZW1lbnRzLmZvckVhY2goZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmYyA9IHRoaXMudG9Gb3JtQ29udHJvbChlKTtcbiAgICAgICAgICAgIGlmIChmYykge1xuICAgICAgICAgICAgICB0aGlzLmVkaXRGb3JtLmNvbnRleHRDb250cm9scy5wdXNoKGZjKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgICAgKSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGFza3MubGVuZ3RoID8gZm9ya0pvaW4odGFza3MpIDogb2YodGFza3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBmZXRjaFJvbGVzKCkge1xuICAgIGlmICghdGhpcy5zeXN0ZW1Sb2xlcyB8fCB0aGlzLnN5c3RlbVJvbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5zeXN0ZW1TZXJ2aWNlXG4gICAgICAgIC5nZXRSb2xlcygpXG4gICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3lzdGVtUm9sZXMgPSByZXM7XG4gICAgICAgICAgICB0aGlzLnJvbGVzUGlja2VyLmNvZGVzeXN0ZW0gPSB7XG4gICAgICAgICAgICAgIGVudHJpZXM6IHRoaXMuc3lzdGVtUm9sZXMubWFwKHJvbGUgPT4gKHtcbiAgICAgICAgICAgICAgICBpZDogcm9sZS5pZCxcbiAgICAgICAgICAgICAgICBsYWJlbDogcm9sZS5uYW1lLFxuICAgICAgICAgICAgICAgIGRlZmF1bHRyZXByZXNlbnRhdGlvbjogcm9sZS5uYW1lLFxuICAgICAgICAgICAgICAgIGRhdGE6IHJvbGUubmFtZVxuICAgICAgICAgICAgICB9KSkuc29ydChVdGlscy5zb3J0VmFsdWVzKCdsYWJlbCcpKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIGdldFJlc3RyaWN0aW9ucygpOiBSZXN0cmljdGlvbltdIHtcbiAgICBsZXQgcmVzdHJpY3Rpb25zOiBSZXN0cmljdGlvbltdID0gW107XG5cbiAgICAvLyB0eXBlIHJlc3RyaWN0aW9uXG4gICAgaWYgKHRoaXMuc3RvcmVkUXVlcnkudHlwZXMgJiYgdGhpcy5zdG9yZWRRdWVyeS50eXBlcy5sZW5ndGgpIHtcbiAgICAgIHJlc3RyaWN0aW9ucy5wdXNoKHtcbiAgICAgICAgZmllbGQ6IFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLlRZUEUsXG4gICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zdG9yZWRxdWVyeS5yZXN0cmljdGlvbi50eXBlJyksXG4gICAgICAgIGl0ZW1zOiB0aGlzLnN0b3JlZFF1ZXJ5LnR5cGVzLm1hcCh0ID0+IHQubGFiZWwpXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBhZGQgYmFzZSBwYXJhbXMgcmVzdHJpY3Rpb25zXG4gICAgKHRoaXMuc3RvcmVkUXVlcnkuZmlsdGVycyB8fCBbXSkuZm9yRWFjaChmaWx0ZXIgPT4ge1xuICAgICAgaWYgKGZpbHRlciAmJiB+dGhpcy5CQVNFX1BBUkFNU19GSUVMRFMuaW5kZXhPZihmaWx0ZXIucHJvcGVydHkpKSB7XG5cbiAgICAgICAgY29uc3QgZmllbGQgPSBmaWx0ZXIucHJvcGVydHk7XG4gICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RvcmVkcXVlcnkucmVzdHJpY3Rpb24uJyArIGZpZWxkKTtcblxuICAgICAgICBzd2l0Y2ggKGZpZWxkKSB7XG4gICAgICAgICAgY2FzZSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5NSU1FVFlQRUdST1VQOlxuICAgICAgICAgICAgcmVzdHJpY3Rpb25zLnB1c2goe1xuICAgICAgICAgICAgICBmaWVsZCwgbGFiZWwsIGl0ZW1zOiBBcnJheS5pc0FycmF5KGZpbHRlci5maXJzdFZhbHVlKSA/IGZpbHRlci5maXJzdFZhbHVlIDogW2ZpbHRlci5maXJzdFZhbHVlXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLkZJTEVOQU1FOlxuICAgICAgICAgICAgcmVzdHJpY3Rpb25zLnB1c2goe1xuICAgICAgICAgICAgICBmaWVsZCwgbGFiZWwsIGl0ZW1zOiBbZmlsdGVyLmZpcnN0VmFsdWVdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuRklMRVNJWkU6XG4gICAgICAgICAgICByZXN0cmljdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgIGZpZWxkLCBsYWJlbCwgaXRlbXM6IFt0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zZWFyY2guYWdnLmZpbGVzaXplLicgKyBmaWx0ZXIuZmlyc3RWYWx1ZSldXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuQ1JFQVRFRDpcbiAgICAgICAgICBjYXNlIFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLk1PRElGSUVEOlxuICAgICAgICAgICAgcmVzdHJpY3Rpb25zLnB1c2goe1xuICAgICAgICAgICAgICBmaWVsZCwgbGFiZWwsIGl0ZW1zOiBbdGhpcy5jcmVhdGVEYXRlUmVzdHJpY3Rpb24oZmlsdGVyKV1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5DUkVBVE9SOlxuICAgICAgICAgIGNhc2UgU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuTU9ESUZJRVI6XG4gICAgICAgICAgICB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uT2JqZWN0cyhmaWx0ZXIuZmlyc3RWYWx1ZSlcbiAgICAgICAgICAgICAgLnN1YnNjcmliZShvcmdVc2VycyA9PiByZXN0cmljdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgZmllbGQsIGxhYmVsLCBpdGVtczogb3JnVXNlcnMubWFwKHUgPT4gdS50aXRsZSlcbiAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3RyaWN0aW9ucztcbiAgfVxuXG4gIGNyZWF0ZURhdGVSZXN0cmljdGlvbihmaWx0ZXI6IFNlYXJjaEZpbHRlcikge1xuICAgIHN3aXRjaCAoZmlsdGVyLm9wZXJhdG9yKSB7XG4gICAgICBjYXNlIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5SQU5HRTpcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYGVvLnNlYXJjaC5hZ2cudGltZS4ke2ZpbHRlci5maXJzdFZhbHVlfWApO1xuICAgICAgY2FzZSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuRVFVQUw6XG4gICAgICAgIHJldHVybiBgPSAke3RoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGZpbHRlci5maXJzdFZhbHVlLCAnZW9TaG9ydERhdGUnKX1gO1xuICAgICAgY2FzZSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuSU5URVJWQUxfSU5DTFVERV9CT1RIOlxuICAgICAgICByZXR1cm4gYCR7dGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZmlsdGVyLmZpcnN0VmFsdWUsICdlb1Nob3J0RGF0ZScpfSAtICR7dGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZmlsdGVyLnNlY29uZFZhbHVlLCAnZW9TaG9ydERhdGUnKX1gO1xuICAgICAgY2FzZSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuR1JFQVRFUl9PUl9FUVVBTDpcbiAgICAgICAgcmV0dXJuIGAke3RoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNlYXJjaC5hZ2cudGltZS5zcGFuLnNpbmNlJyl9ICR7dGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZmlsdGVyLmZpcnN0VmFsdWUsICdlb1Nob3J0RGF0ZScpfWA7XG4gICAgICBjYXNlIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5MRVNTX09SX0VRVUFMOlxuICAgICAgICByZXR1cm4gYCR7dGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLmFnZy50aW1lLnNwYW4udW50aWwnKX0gJHt0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShmaWx0ZXIuZmlyc3RWYWx1ZSwgJ2VvU2hvcnREYXRlJyl9YDtcbiAgICAgIGRlZmF1bHQgOlxuICAgICAgICByZXR1cm4gYCgke2ZpbHRlci5vcGVyYXRvcn0pICR7dGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZmlsdGVyLmZpcnN0VmFsdWUsICdlb1Nob3J0RGF0ZScpfWA7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBmb3JtIGNvbnRyb2wgZnJvbSBhIGdpdmVuIGZvcm0gZWxlbWVudFxuICAgKiBAcGFyYW0gZm9ybUVsZW1lbnRcbiAgICogQHJldHVybnNcbiAgICovXG4gIHByaXZhdGUgdG9Gb3JtQ29udHJvbChmb3JtRWxlbWVudCk6IE9iamVjdEZvcm1Db250cm9sV3JhcHBlciB7XG5cbiAgICAvLyB0aGUgYG5hbWVgIHByb3BlcnR5IG9mIHN0b3JlZCBxdWVyeSBmb3JtIGVsZW1lbnQgaGFzIHRvIGJlIGBxbmFtZWAgb2YgZm9ybSBlbGVtZW50LFxuICAgIC8vIGJlY2F1c2Ugd2UgbWF5IGNvbWJpbmUgbXVsdGlwbGUgZm9ybXMgKGNvbnRleHQgZm9ybSkgYW5kIGluIHRoaXMgY2FzZSB0aGVyZSBtYXlcbiAgICAvLyBiZSBjb25mbGljdHMgaW4gbmFtaW5nc1xuICAgIGZvcm1FbGVtZW50Lm5hbWUgPSBmb3JtRWxlbWVudC5xbmFtZTtcblxuICAgIGlmKGZvcm1FbGVtZW50LnR5cGUgPT09ICdUQUJMRScpe1xuICAgICAgbGV0IGZpbHRlcnMgPSB0aGlzLnN0b3JlZFF1ZXJ5LmdldFRhYmxlRmlsdGVycyhmb3JtRWxlbWVudC5xbmFtZSk7XG4gICAgICBpZihmaWx0ZXJzICYmIGZpbHRlcnMubGVuZ3RoKXtcbiAgICAgICAgZm9ybUVsZW1lbnQudmFsdWUgPSB0aGlzLnNlYXJjaFNlcnZpY2UudGFibGVGaWx0ZXJzVG9FbGVtZW50VmFsdWUoZmlsdGVycywgZm9ybUVsZW1lbnQuZWxlbWVudHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9ybUVsZW1lbnQudmFsdWUgPSBbe31dO1xuICAgICAgICBkZWxldGUgZm9ybUVsZW1lbnQuaXNOb3RTZXRWYWx1ZTtcbiAgICAgIH1cbiAgICB9ZWxzZXtcbiAgICAgIC8vIGdyYWIgdmFsdWUgZm9yIHRoZSBjb250cm9sIGZyb20gY29ycmVzcG9uZGluZyBxdWVyeSBmaWx0ZXJzXG4gICAgICBsZXQgZmlsdGVyID0gdGhpcy5zdG9yZWRRdWVyeS5nZXRGaWx0ZXIoZm9ybUVsZW1lbnQucW5hbWUpO1xuICAgICAgLy8gd2UgbWF5IGhhdmUgcGFyYW1zIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBxdWVyaWVzIGZpbHRlcnMuIFRoaXMgbWF5IGJlIHRoZVxuICAgICAgLy8gY2FzZSB3aGVuIHdlIG1hcmsgZm9ybSBlbGVtZW50cyBhcyBkeW5hbWljIGZpZWxkcyB3aXRob3V0IHByb3ZpZGluZyBhIHZhbHVlXG4gICAgICBpZiAoZmlsdGVyKSB7XG4gIFxuICAgICAgICAvLyBmaWx0ZXIgdG8gaGF2ZSBubyB2YWx1ZVxuICAgICAgICBpZiAoZmlsdGVyLm9wZXJhdG9yID09PSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuRVFVQUwgJiYgZmlsdGVyLmZpcnN0VmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICBmb3JtRWxlbWVudC5pc05vdFNldFZhbHVlID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZWxldGUgZm9ybUVsZW1lbnQuaXNOb3RTZXRWYWx1ZTtcbiAgICAgICAgfVxuICBcbiAgICAgICAgZm9ybUVsZW1lbnQudmFsdWUgPSB0aGlzLnNlYXJjaFNlcnZpY2UuZmlsdGVyVG9FbGVtZW50VmFsdWUoXG4gICAgICAgICAgdGhpcy5zdG9yZWRRdWVyeS5nZXRGaWx0ZXIoZm9ybUVsZW1lbnQucW5hbWUpLFxuICAgICAgICAgIGZvcm1FbGVtZW50LnR5cGVcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoZm9ybUVsZW1lbnQucW5hbWUgIT09IFN0b3JlZFF1ZXJpZXNTZXJ2aWNlLkZVTExURVhUKSB7XG4gICAgICAgIGZvcm1FbGVtZW50LnZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICBkZWxldGUgZm9ybUVsZW1lbnQuaXNOb3RTZXRWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gc3luYyB3aXRoIHBhcmFtc1xuICAgIGNvbnN0IG1hdGNoOiBhbnkgPSB0aGlzLnN0b3JlZFF1ZXJ5LnBhcmFtZXRlci5maW5kKHBhcmFtID0+IHtcbiAgICAgIHJldHVybiAocGFyYW0ucW5hbWUgPT09IGZvcm1FbGVtZW50LnFuYW1lKSB8fCAocGFyYW0udHlwZSA9PT0gU3RvcmVkUXVlcmllc1NlcnZpY2UuRlVMTFRFWFQgJiYgZm9ybUVsZW1lbnQucW5hbWUgPT09IFN0b3JlZFF1ZXJpZXNTZXJ2aWNlLkZVTExURVhUKVxuICAgIH0pO1xuICAgIC8vIGV2ZXJ5IGZpZWxkIHRoYXQgaXMgcGFydCBvZiB0aGUgcGFyYW1zIGlzIHN1cHBvc2VkIHRvIGJlIGR5bmFtaWNcbiAgICBmb3JtRWxlbWVudC5fZHluYW1pYyA9ICEhbWF0Y2g7XG5cbiAgICAvLyBjcmVhdGUgYWN0dWFsIGZvcm0gY29udHJvbCB0aGF0IGNvdWxkIGJlIHVzZWQgd2l0aFxuICAgIC8vIEZvcm1FbGVtZW50Q29tcG9uZW50IHRvIHRoZW4gcmVuZGVyIGZvciBlbGVtZW50c1xuICAgIC8vIHdyYXBwZXIgbWF5IGJlIG51bGwgaW4gY2FzZSBvZiBhbiBlcnJvclxuICAgIHJldHVybiB0aGlzLmZvcm1IZWxwZXJTZXJ2aWNlLmVsZW1lbnRUb0Zvcm1Db250cm9sKGZvcm1FbGVtZW50LCAnU0VBUkNIJyk7XG4gIH1cblxuICBvblN0b3JlZFF1ZXJ5TG9hZGVkKCkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt7b3V0bGV0czoge21vZGFsOiAnc2VhcmNoJ319XSk7XG4gIH1cblxuICBvblN0b3JlZFF1ZXJ5RXhlY3V0ZShldnQpIHtcbiAgICBjb25zdCB1cmlQYXJhbSA9IGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShldnQucXVlcnlKc29uKSk7XG4gICAgY29uc3QgdXJpUGFyYW1RdWVyeTogTmF2aWdhdGlvbkV4dHJhcyA9IHtxdWVyeVBhcmFtczogeydxdWVyeSc6IHVyaVBhcmFtfX07XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcmVzdWx0J10sIHVyaVBhcmFtUXVlcnkpO1xuICB9XG5cbiAgc2V0SWNvblRpdGxlcygpIHtcbiAgICB0aGlzLmljb25UaXRsZXMgPSB7XG4gICAgICBzaGFyZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RvcmVkcXVlcnkuc2hhcmUudGl0bGUnKSxcbiAgICAgIHNoYXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RvcmVkcXVlcnkuc2hhcmVkZm9yLnRpdGxlJyksXG4gICAgICBmYXZvcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RvcmVkcXVlcnkuZmF2b3IudGl0bGUnKSxcbiAgICAgIGZhdm9yZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnN0b3JlZHF1ZXJ5LmZhdm9yZWRmb3IudGl0bGUnKVxuICAgIH1cbiAgfVxuXG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZWxlY3Rpb24uZm9jdXMkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQkKSlcbiAgICAgIC5zdWJzY3JpYmUocSA9PiB7XG4gICAgICAgIHRoaXMucXVlcnkgPSBxO1xuICAgICAgfSk7XG4gICAgdGhpcy5zZXRJY29uVGl0bGVzKCk7XG4gIH1cblxuICB0cmFja0J5UU5hbWUoaW5kZXgsIGl0ZW0pIHtcbiAgICByZXR1cm4gaXRlbS5xbmFtZTtcbiAgfVxuXG4gIHRyYWNrQnlJbmRleChpbmRleCwgaXRlbSkge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxufVxuIl19
496
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVkLXF1ZXJ5LWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvc3RvcmVkLXF1ZXJ5L3N0b3JlZC1xdWVyeS1kZXRhaWxzL3N0b3JlZC1xdWVyeS1kZXRhaWxzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFhLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFRLFVBQVUsRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFDekgsT0FBTyxFQUFtQixNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsV0FBVyxFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXZELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLG9FQUFvRSxDQUFDO0FBQ3pHLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxpREFBaUQsQ0FBQztBQUNoRixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFJakYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sd0RBQXdELENBQUM7QUFDeEYsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDbEYsT0FBTyxFQUVMLFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsWUFBWSxFQUNaLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUViLFdBQVcsRUFFWCxLQUFLLEVBQ0wsYUFBYSxFQUVkLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHVDQUF1QyxDQUFD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LE9BQU8sQ0FBQyxpQ0FBaUMsQ0FBQztTQUNuRSxDQUFBO0lBQ0gsQ0FBQztJQUdELFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU07YUFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQzthQUN6QyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDYixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FBQztRQUNMLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJO1FBQ3RCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7O1lBamlCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtnQkFDbkMsb2xOQUFvRDs7YUFFckQ7OztZQWxDeUIsTUFBTTtZQXdCOUIsYUFBYTtZQUhiLFdBQVc7WUFGWCxhQUFhO1lBVFAsZ0JBQWdCO1lBUGhCLHFCQUFxQjtZQVkzQixvQkFBb0I7WUFWZCx1QkFBdUI7WUFOMEMsVUFBVTtZQW1CakYsZ0JBQWdCOzs7OEJBeUJmLFNBQVMsU0FBQyxpQkFBaUI7b0JBa0IzQixLQUFLO3lCQUtMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3Rha2VVbnRpbCwgc3dpdGNoTWFwLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBUeXBlLCBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmF2aWdhdGlvbkV4dHJhcywgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtGb3JtQ29udHJvbCwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtPYmplY3RGb3JtQ29udHJvbFdyYXBwZXJ9IGZyb20gJy4uLy4uL29iamVjdC1mb3JtL29iamVjdC1mb3JtL29iamVjdC1mb3JtLWNvbnRyb2wtd3JhcHBlcic7XG5pbXBvcnQge1BlbmRpbmdDaGFuZ2VzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcGVuZGluZy1jaGFuZ2VzL3BlbmRpbmctY2hhbmdlcy5zZXJ2aWNlJztcbmltcG9ydCB7T2JqZWN0Rm9ybUdyb3VwfSBmcm9tICcuLi8uLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS1ncm91cCc7XG5pbXBvcnQge09iamVjdEZvcm1IZWxwZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS1oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQge0xvY2FsZURhdGVQaXBlfSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9waXBlcy9sb2NhbGUtZGF0ZS5waXBlJztcbmltcG9ydCB7T2JqZWN0Rm9ybUNvbnRyb2x9IGZyb20gJy4uLy4uL29iamVjdC1mb3JtL29iamVjdC1mb3JtL29iamVjdC1mb3JtLWNvbnRyb2wnO1xuaW1wb3J0IHtFZGl0Rm9ybSwgTm90aWZ5TGlzdCwgUmVzdHJpY3Rpb259IGZyb20gJy4uL3N0b3JlZC1xdWVyeS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtTdG9yZWRRdWVyeUNvbXBvbmVudH0gZnJvbSAnLi4vc3RvcmVkLXF1ZXJ5L3N0b3JlZC1xdWVyeS5jb21wb25lbnQnO1xuaW1wb3J0IHtTZWxlY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9zZWxlY3Rpb24vc2VsZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtVbnN1YnNjcmliZU9uRGVzdHJveX0gZnJvbSAnLi4vLi4vdXRpbC91bnN1YnNjcmliZS91bnN1YnNjcmliZS5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgSVN0b3JlZFF1ZXJ5UGFyYW0sXG4gIFN0b3JlZFF1ZXJ5LFxuICBTdG9yZWRRdWVyaWVzU2VydmljZSxcbiAgU2VhcmNoRmlsdGVyLFxuICBTZWFyY2hRdWVyeSxcbiAgVHJhbnNsYXRlU2VydmljZSxcbiAgU3lzdGVtU2VydmljZSxcbiAgUmFuZ2VWYWx1ZSxcbiAgVXNlclNlcnZpY2UsXG4gIE9yZ1JvbGUsXG4gIFV0aWxzLFxuICBTZWFyY2hTZXJ2aWNlLFxuICBRdWVyeVNjb3BlXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge1V0aWxpdGllc1NlcnZpY2V9IGZyb20gJy4uLy4uL3V0aWwvc2VydmljZXMvdXRpbGl0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHtmb3JrSm9pbiwgb2YsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby1zdG9yZWQtcXVlcnktZGV0YWlscycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdG9yZWQtcXVlcnktZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0b3JlZC1xdWVyeS1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU3RvcmVkUXVlcnlEZXRhaWxzQ29tcG9uZW50IGV4dGVuZHMgVW5zdWJzY3JpYmVPbkRlc3Ryb3kgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHByaXZhdGUgRk9STV9JTlBVVF9USVRMRSA9ICdzdG9yZWRRdWVyeVRpdGxlJztcbiAgcHJpdmF0ZSBGT1JNX0lOUFVUX0ZVTExURVhUID0gJ3N0b3JlZFF1ZXJ5RnVsbHRleHQnO1xuICBwcml2YXRlIEJBU0VfUEFSQU1TX0ZJRUxEUyA9IE9iamVjdC5rZXlzKFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TKS5tYXAoayA9PiBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNU1trXSk7XG4gIHByaXZhdGUgZGF0ZVBpcGU6IExvY2FsZURhdGVQaXBlO1xuICBwcml2YXRlIHBlbmRpbmdUYXNrSWQ6IHN0cmluZztcblxuICBAVmlld0NoaWxkKCdzdG9yZWRRdWVyeUZvcm0nKSBzdG9yZWRRdWVyeUZvcm06IFN0b3JlZFF1ZXJ5Q29tcG9uZW50O1xuXG4gIGljb25UaXRsZXM6IGFueTtcbiAgc3RvcmVkUXVlcnk6IFN0b3JlZFF1ZXJ5O1xuICBxdWVyeVNjb3BlOiBRdWVyeVNjb3BlO1xuICBlZGl0Rm9ybTogRWRpdEZvcm07XG4gIHJlc3RyaWN0aW9uczogUmVzdHJpY3Rpb25bXTtcbiAgZWRpdGluZ1NoYXJlOiBib29sZWFuO1xuICBpc05ld1F1ZXJ5OiBib29sZWFuO1xuICBpc093blF1ZXJ5OiBib29sZWFuO1xuICBlbmFibGVTaGFyaW5nOiBib29sZWFuO1xuICBzeXN0ZW1Sb2xlczogT3JnUm9sZVtdO1xuICByb2xlc1BpY2tlciA9IHtcbiAgICB0aXRsZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RvcmVkcXVlcnkucm9sZXMnKSxcbiAgICBjb2Rlc3lzdGVtOiBudWxsLFxuICAgIHZhbHVlOiBudWxsXG4gIH07XG5cbiAgQElucHV0KClcbiAgc2V0IHF1ZXJ5KHE6IFN0b3JlZFF1ZXJ5KSB7XG4gICAgdGhpcy5zZXRRdWVyeShxKTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBub3RpZnlMaXN0OiBFdmVudEVtaXR0ZXI8Tm90aWZ5TGlzdD4gPSBuZXcgRXZlbnRFbWl0dGVyPE5vdGlmeUxpc3Q+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgc2VsZWN0aW9uOiBTZWxlY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVuZGluZ0NoYW5nZXM6IFBlbmRpbmdDaGFuZ2VzU2VydmljZSxcbiAgICBwcml2YXRlIHN0b3JlZFF1ZXJpZXNTZXJ2aWNlOiBTdG9yZWRRdWVyaWVzU2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1IZWxwZXJTZXJ2aWNlOiBPYmplY3RGb3JtSGVscGVyU2VydmljZSxcbiAgICBwcml2YXRlIGVsZW1SZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5kYXRlUGlwZSA9IG5ldyBMb2NhbGVEYXRlUGlwZSh0cmFuc2xhdGUpO1xuICAgIHRoaXMuZmV0Y2hSb2xlcygpO1xuICB9XG5cbiAgcHVibGljIHNldFF1ZXJ5U2NvcGUoc2NvcGU6IFF1ZXJ5U2NvcGUpIHtcbiAgICB0aGlzLnN0b3JlZFF1ZXJ5LnNjb3BlID0gc2NvcGU7XG4gICAgdGhpcy5xdWVyeVNjb3BlID0gc2NvcGU7XG4gIH1cblxuICBzZXRRdWVyeShxOiBTdG9yZWRRdWVyeSkge1xuICAgIHRoaXMuZWRpdGluZ1NoYXJlID0gZmFsc2U7XG4gICAgdGhpcy5yZXNldEVkaXRGb3JtKCk7XG4gICAgLy8gZ3JhYiBtZXRhIGluZm9ybWF0aW9uIGFib3V0IHRoZSBxdWVyeVxuICAgIHRoaXMuc3RvcmVkUXVlcnkgPSBxO1xuICAgIGlmIChxIGluc3RhbmNlb2YgU3RvcmVkUXVlcnkpIHtcbiAgICAgIHRoaXMucXVlcnlTY29wZSA9IHEuc2NvcGU7XG4gICAgICBjb25zdCB1c2VyID0gdGhpcy51c2VyU2VydmljZS5nZXRDdXJyZW50VXNlcigpO1xuICAgICAgdGhpcy5pc05ld1F1ZXJ5ID0gcS5pc05ldygpO1xuICAgICAgdGhpcy5pc093blF1ZXJ5ID0gdGhpcy5pc05ld1F1ZXJ5IHx8IHEudXNlci50b0xvd2VyQ2FzZSgpID09PSB1c2VyLm5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgIHRoaXMucmVzdHJpY3Rpb25zID0gdGhpcy5nZXRSZXN0cmljdGlvbnMoKTtcbiAgICAgIHRoaXMucm9sZXNQaWNrZXIudmFsdWUgPSBxLnJvbGVzO1xuICAgICAgdGhpcy5lbmFibGVTaGFyaW5nID0gdXNlci5oYXNQcml2aWxlZ2UoJ1NIQVJFX1NUT1JFRF9RVUVSSUVTJykgJiYgdGhpcy5pc093blF1ZXJ5ICYmICF0aGlzLmlzTmV3UXVlcnk7XG5cbiAgICAgIGlmIChxLmlzTmV3KCkpIHtcbiAgICAgICAgdGhpcy5zdG9yZWRRdWVyeS5uYW1lID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLnN0b3JlZHF1ZXJpZXMubmV3LnRpdGxlJyk7XG4gICAgICAgIHRoaXMuZWRpdCgpO1xuICAgICAgICB0aGlzLnN0YXJ0UGVuZGluZygpO1xuICAgICAgICB0aGlzLm5vdGlmeUxpc3QuZW1pdCh7dW5zZWxlY3Q6IHRydWUsIHVwZGF0ZTogZmFsc2V9KTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5lbGVtUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignW25hbWU9XCJzdG9yZWRRdWVyeVRpdGxlXCJdJykuZm9jdXMoKVxuICAgICAgICB9LDUwMCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGFydFBlbmRpbmcoKSB7XG4gICAgaWYgKCF0aGlzLnBlbmRpbmdDaGFuZ2VzLmhhc1BlbmRpbmdUYXNrKHRoaXMucGVuZGluZ1Rhc2tJZCB8fCAnICcpKSB7XG4gICAgICB0aGlzLnBlbmRpbmdUYXNrSWQgPSB0aGlzLnBlbmRpbmdDaGFuZ2VzLnN0YXJ0VGFzaygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmluaXNoUGVuZGluZygpIHtcbiAgICB0aGlzLnBlbmRpbmdDaGFuZ2VzLmZpbmlzaFRhc2sodGhpcy5wZW5kaW5nVGFza0lkKTtcbiAgfVxuXG4gIGVkaXQoKSB7XG4gICAgaWYgKCF0aGlzLmVkaXRGb3JtLmZvcm0pIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNyZWF0ZUVkaXRGb3JtKCk7XG4gICAgICAgIHRoaXMubm90aWZ5TGlzdC5lbWl0KHt1bnNlbGVjdDogZmFsc2UsIHVwZGF0ZTogdHJ1ZX0pO1xuICAgICAgfSwgMCk7XG4gICAgfVxuICB9XG5cbiAgb25Gb3JtU3RhdHVzQ2hhbmdlZChmb3JtU3RhdGUpIHtcbiAgICBmb3JtU3RhdGUuZGlydHkgPyB0aGlzLnN0YXJ0UGVuZGluZygpIDogdGhpcy5maW5pc2hQZW5kaW5nKCk7XG4gIH1cblxuICB0b2dnbGVTaGFyZUVkaXQoKSB7XG4gICAgdGhpcy5lZGl0aW5nU2hhcmUgPSAhdGhpcy5lZGl0aW5nU2hhcmU7XG4gIH1cblxuICBzaGFyZSgpIHtcbiAgICB0aGlzLnN0b3JlZFF1ZXJ5LnJvbGVzID0gdGhpcy5yb2xlc1BpY2tlci52YWx1ZTtcbiAgICB0aGlzLnN0b3JlZFF1ZXJpZXNTZXJ2aWNlLnNhdmVTdG9yZWRRdWVyeSh0aGlzLnN0b3JlZFF1ZXJ5KS5zdWJzY3JpYmUoXG4gICAgICBfID0+IHtcbiAgICAgIH0sIFV0aWxzLnRocm93KG51bGwsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNlYXJjaC5zdG9yZWRxdWVyeS5zYXZlLmVycm9yJykpXG4gICAgKTtcbiAgICB0aGlzLmVkaXRpbmdTaGFyZSA9IGZhbHNlO1xuICB9XG5cbiAgY2FuY2VsU2hhcmUoKSB7XG4gICAgdGhpcy5yb2xlc1BpY2tlci52YWx1ZSA9IHRoaXMuc3RvcmVkUXVlcnkucm9sZXM7XG4gICAgdGhpcy5lZGl0aW5nU2hhcmUgPSBmYWxzZTtcbiAgfVxuXG4gIGRlbGV0ZSgpIHtcbiAgICB0aGlzLnN0b3JlZFF1ZXJpZXNTZXJ2aWNlXG4gICAgICAucmVtb3ZlU3RvcmVkUXVlcnkodGhpcy5zdG9yZWRRdWVyeS5pZClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnF1ZXJ5ID0gbnVsbDtcbiAgICAgICAgdGhpcy5ub3RpZnlMaXN0LmVtaXQoe3Vuc2VsZWN0OiBmYWxzZSwgdXBkYXRlOiBmYWxzZX0pO1xuICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLnN0b3JlZHF1ZXJ5LmRlbGV0ZS5lcnJvcicpKSk7XG4gIH1cblxuICB0b2dnbGVGYXZvcml0ZVN0YXRlKCkge1xuICAgIHRoaXMuc3RvcmVkUXVlcnkuZmF2b3JpdGUgPSAhdGhpcy5zdG9yZWRRdWVyeS5mYXZvcml0ZTtcbiAgICB0aGlzLnN0b3JlZFF1ZXJpZXNTZXJ2aWNlXG4gICAgICAuc2F2ZVN0b3JlZFF1ZXJ5KHRoaXMuc3RvcmVkUXVlcnkpXG4gICAgICAuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLnN0b3JlZHF1ZXJ5LnNhdmUuZXJyb3InKSkpO1xuICB9XG5cbiAgY2FuY2VsRWRpdCgpIHtcbiAgICB0aGlzLnJlc2V0RWRpdEZvcm0oKTtcbiAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcbiAgICBpZiAodGhpcy5zdG9yZWRRdWVyeS5pc05ldygpKSB7XG4gICAgICB0aGlzLnF1ZXJ5ID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5ub3RpZnlMaXN0LmVtaXQoe3Vuc2VsZWN0OiBmYWxzZSwgdXBkYXRlOiBmYWxzZSwgcGF5bG9hZDogdGhpcy5zdG9yZWRRdWVyeX0pO1xuICB9XG5cbiAgc2V0UXVlcnlUb0FwcFNlYXJjaCgpIHtcbiAgICB0aGlzLnN0b3JlZFF1ZXJ5Rm9ybS5sb2FkKCk7XG4gIH1cblxuICBleGVjdXRlUXVlcnkoKSB7XG4gICAgdGhpcy5zdG9yZWRRdWVyeUZvcm0uZXhlY3V0ZSgpO1xuICB9XG5cbiAgLy8gU2F2ZSB0aGUgY3VycmVudCBzdG9yZWQgcXVlcnlcbiAgdXBkYXRlU3RvcmVkUXVlcnkoKSB7XG5cbiAgICBjb25zdCBmb3JtRGF0YSA9IHRoaXMuZ2V0Rm9ybURhdGEoKTtcbiAgICB0aGlzLnN0b3JlZFF1ZXJ5LmZpbHRlcnMgPSB0aGlzLnN0b3JlZFF1ZXJ5LmZpbHRlcnMuZmlsdGVyKGYgPT4gfnRoaXMuQkFTRV9QQVJBTVNfRklFTERTLmluZGV4T2YoZi5wcm9wZXJ0eSkpO1xuICAgIE9iamVjdC5rZXlzKGZvcm1EYXRhKVxuICAgICAgLmZvckVhY2goayA9PiB7XG4gICAgICAgIGlmIChrID09PSB0aGlzLkZPUk1fSU5QVVRfVElUTEUpIHtcbiAgICAgICAgICB0aGlzLnN0b3JlZFF1ZXJ5Lm5hbWUgPSBmb3JtRGF0YVtrXTtcbiAgICAgICAgfSBlbHNlIGlmIChrID09PSB0aGlzLkZPUk1fSU5QVVRfRlVMTFRFWFQpIHtcbiAgICAgICAgICB0aGlzLnN0b3JlZFF1ZXJ5LnRlcm0gPSBmb3JtRGF0YVtrXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsZXQgZmlsdGVyczogU2VhcmNoRmlsdGVyW10gPSB0aGlzLnNlYXJjaFNlcnZpY2UuZ2V0U2VhcmNoRmlsdGVyKHRoaXMuc3RvcmVkUXVlcnkudHlwZXMsIGssIGZvcm1EYXRhW2tdKTtcbiAgICAgICAgICBmaWx0ZXJzLmZvckVhY2goZiA9PiB0aGlzLnN0b3JlZFF1ZXJ5LmFkZEZpbHRlcihmKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5zdG9yZWRRdWVyaWVzU2VydmljZVxuICAgICAgLnNhdmVTdG9yZWRRdWVyeSh0aGlzLnN0b3JlZFF1ZXJ5KVxuICAgICAgLnN1YnNjcmliZSh1cGRhdGVkU3RvcmVkUXVlcnkgPT4ge1xuICAgICAgICB0aGlzLnF1ZXJ5ID0gdXBkYXRlZFN0b3JlZFF1ZXJ5O1xuICAgICAgICB0aGlzLnJlc2V0RWRpdEZvcm0oKTtcbiAgICAgICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XG4gICAgICAgIHRoaXMubm90aWZ5TGlzdC5lbWl0KHt1bnNlbGVjdDogZmFsc2UsIHVwZGF0ZTogZmFsc2UsIHBheWxvYWQ6IHVwZGF0ZWRTdG9yZWRRdWVyeX0pO1xuICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLnN0b3JlZHF1ZXJ5LnNhdmUuZXJyb3InKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSBmb3JtIGVsZW1lbnRzIHRvIGJlIGEgZHluYW1pYyBwYXJhbWV0ZXIgb3Igbm90XG4gICAqIEBwYXJhbSBldmVudFxuICAgKi9cbiAgcGFyYW1ldGVyQ2hhbmdlZChldmVudDoge2NvbnRyb2w6IHN0cmluZywgdmFsdWU6IGJvb2xlYW59KSB7XG5cbiAgICBsZXQgbSA9IHRoaXMuc3RvcmVkUXVlcnkucGFyYW1ldGVyLmZpbmQocCA9PiBwLnFuYW1lID09PSBldmVudC5jb250cm9sKTtcbiAgICBpZiAobSAmJiAhZXZlbnQudmFsdWUpIHtcbiAgICAgIC8vIHJlbW92ZSBleGlzdGluZyBwYXJhbWV0ZXJcbiAgICAgIHRoaXMuc3RvcmVkUXVlcnkucGFyYW1ldGVyID0gdGhpcy5zdG9yZWRRdWVyeS5wYXJhbWV0ZXIuZmlsdGVyKHAgPT4gcC5xbmFtZSAhPT0gZXZlbnQuY29udHJvbCk7XG4gICAgfSBlbHNlIGlmICghbSAmJiBldmVudC52YWx1ZSkge1xuICAgICAgLy8gYWRkIHBhcmFtZXRlciBlbGVtZW50XG4gICAgICBsZXQgcGFyYW0gPSB0aGlzLmZvcm1GaWVsZFRvUGFyYW1ldGVyKGV2ZW50LmNvbnRyb2wpO1xuICAgICAgaWYgKHBhcmFtKSB7XG4gICAgICAgIHRoaXMuc3RvcmVkUXVlcnkucGFyYW1ldGVyLnB1c2gocGFyYW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Rm9ybURhdGEoKSB7XG5cbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gT2JqZWN0LmtleXModGhpcy5lZGl0Rm9ybS5mb3JtLnZhbHVlKTtcbiAgICBsZXQgZGF0YSA9IHt9O1xuXG5cbiAgICBwcm9wZXJ0aWVzLmZvckVhY2gocHJvcGVydHkgPT4ge1xuXG4gICAgICBjb25zdCBmYzogT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyID0gdGhpcy5lZGl0Rm9ybS5mb3JtLmNvbnRyb2xzW3Byb3BlcnR5XSBhcyBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXI7XG4gICAgICBsZXQgZm9ybUVsZW1lbnQ7XG4gICAgICBpZiAoZmMuY29udHJvbHMgJiYgZmMuY29udHJvbHNbcHJvcGVydHldKSB7XG4gICAgICAgIGNvbnN0IGZlOiBPYmplY3RGb3JtQ29udHJvbCA9IGZjLmNvbnRyb2xzW3Byb3BlcnR5XSBhcyBPYmplY3RGb3JtQ29udHJvbDtcbiAgICAgICAgZm9ybUVsZW1lbnQgPSBmZS5fZW9Gb3JtRWxlbWVudDtcbiAgICAgIH1cbiAgICAgIGlmIChmb3JtRWxlbWVudCAmJiBmb3JtRWxlbWVudC5pc05vdFNldFZhbHVlKSB7XG4gICAgICAgIGRhdGFbcHJvcGVydHldID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgc3dpdGNoIChwcm9wZXJ0eSkge1xuICAgICAgICAgIGNhc2UgdGhpcy5GT1JNX0lOUFVUX1RJVExFOiB7XG4gICAgICAgICAgICBkYXRhW3Byb3BlcnR5XSA9IHRoaXMuZWRpdEZvcm0uZm9ybS52YWx1ZVtwcm9wZXJ0eV0gfHwgJyc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSB0aGlzLkZPUk1fSU5QVVRfRlVMTFRFWFQ6IHtcbiAgICAgICAgICAgIGRhdGFbcHJvcGVydHldID0gdGhpcy5lZGl0Rm9ybS5mb3JtLnZhbHVlW3Byb3BlcnR5XVtTdG9yZWRRdWVyaWVzU2VydmljZS5GVUxMVEVYVF0gfHwgJyc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgY29uc3QgdiA9IHRoaXMuZWRpdEZvcm0uZm9ybS52YWx1ZVtwcm9wZXJ0eV1bcHJvcGVydHldO1xuICAgICAgICAgICAgaWYgKCFVdGlsaXRpZXNTZXJ2aWNlLmlzRW1wdHkodikpIHtcbiAgICAgICAgICAgICAgZGF0YVtwcm9wZXJ0eV0gPSB2O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGR5bmFtaWMgc3RvcmVkIHF1ZXJ5IHBhcmFtZXRlciBmb3IgYSBmb3JtIGVsZW1lbnRcbiAgICogQHBhcmFtIHFuYW1lIFRoZSBmb3JtIGVsZW1lbnRzIHFuYW1lXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwcml2YXRlIGZvcm1GaWVsZFRvUGFyYW1ldGVyKHFuYW1lOiBzdHJpbmcpOiBJU3RvcmVkUXVlcnlQYXJhbSB7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHBhcmFtOiBJU3RvcmVkUXVlcnlQYXJhbTtcbiAgICAgIC8vIHNwZWNpYWwgaGFuZGxpbmcgZm9yIGZ1bGx0ZXh0IGZpZWxkc1xuICAgICAgaWYgKHFuYW1lID09PSBTdG9yZWRRdWVyaWVzU2VydmljZS5GVUxMVEVYVCkge1xuICAgICAgICBwYXJhbSA9IHtcbiAgICAgICAgICBxbmFtZTogcW5hbWUsXG4gICAgICAgICAgdHlwZTogcW5hbWUsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBmYyA9ICgodGhpcy5lZGl0Rm9ybS5mb3JtLmNvbnRyb2xzW3FuYW1lXSBhcyBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIpLmNvbnRyb2xzW3FuYW1lXSBhcyBPYmplY3RGb3JtQ29udHJvbCk7XG4gICAgICAgIGNvbnN0IGZlID0gZmMuX2VvRm9ybUVsZW1lbnQ7XG4gICAgICAgIHBhcmFtID0ge1xuICAgICAgICAgIHFuYW1lOiBmZS5xbmFtZSxcbiAgICAgICAgICB0eXBlOiBmZS50eXBlXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFyYW07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNldEVkaXRGb3JtKCkge1xuICAgIHRoaXMuZWRpdEZvcm0gPSB7XG4gICAgICBmb3JtOiBudWxsLFxuICAgICAgZnVsbHRleHRGb3JtQ29udHJvbDogbnVsbCxcbiAgICAgIGNvbnRyb2xzOiBbXSxcbiAgICAgIGNvbnRleHRDb250cm9sczogW11cbiAgICB9O1xuICB9XG5cbiAgb25Gb3JtQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLmVkaXRGb3JtXG4gICAgICAuZm9ybVxuICAgICAgLnZhbHVlQ2hhbmdlc1xuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uRm9ybVN0YXR1c0NoYW5nZWQodGhpcy5lZGl0Rm9ybS5mb3JtKSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUVkaXRGb3JtKCkge1xuXG4gICAgdGhpcy5yZXNldEVkaXRGb3JtKCk7XG4gICAgdGhpcy5zZXR1cEZvcm1Db250cm9scygpLnN1YnNjcmliZShfID0+IHtcblxuICAgICAgbGV0IGZvcm0gPSBuZXcgT2JqZWN0Rm9ybUdyb3VwKHt9KTtcbiAgICAgIGxldCBmY1RpdGxlID0gbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgIGZjVGl0bGUuc2V0VmFsdWUodGhpcy5zdG9yZWRRdWVyeS5uYW1lKTtcblxuICAgICAgbGV0IGZjRnVsbHRleHQgPSB0aGlzLnRvRm9ybUNvbnRyb2wodGhpcy5zdG9yZWRRdWVyaWVzU2VydmljZS5nZXRGdWxsdGV4dEZvcm1FbGVtZW50KFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zdG9yZWRxdWVyeS5zZWFyY2gudGVybScpLFxuICAgICAgICB0aGlzLnN0b3JlZFF1ZXJ5LnRlcm1cbiAgICAgICkpO1xuICAgICAgdGhpcy5lZGl0Rm9ybS5mdWxsdGV4dEZvcm1Db250cm9sID0gZmNGdWxsdGV4dDtcblxuICAgICAgLy8gYWRkIHRpdGxlIGFuZCBmdWxsdGV4dCBmaWVsZFxuICAgICAgZm9ybS5hZGRDb250cm9sKHRoaXMuRk9STV9JTlBVVF9USVRMRSwgZmNUaXRsZSk7XG4gICAgICBmb3JtLmFkZENvbnRyb2wodGhpcy5GT1JNX0lOUFVUX0ZVTExURVhULCBmY0Z1bGx0ZXh0KTtcblxuICAgICAgaWYgKHRoaXMuZWRpdEZvcm0uY29udHJvbHMubGVuZ3RoIHx8IHRoaXMuZWRpdEZvcm0uY29udGV4dENvbnRyb2xzLmxlbmd0aCkge1xuICAgICAgICB0aGlzLmVkaXRGb3JtLmNvbnRyb2xzXG4gICAgICAgICAgLmZvckVhY2goKGMpID0+IGZvcm0uYWRkQ29udHJvbChjLl9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZSwgYykpO1xuICAgICAgICB0aGlzLmVkaXRGb3JtLmNvbnRleHRDb250cm9sc1xuICAgICAgICAgIC5mb3JFYWNoKChjKSA9PiBmb3JtLmFkZENvbnRyb2woYy5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWUsIGMpKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5lZGl0Rm9ybS5mb3JtID0gZm9ybTtcbiAgICAgIHRoaXMub25Gb3JtQ2hhbmdlcygpO1xuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIHNldHVwRm9ybUNvbnRyb2xzKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgdGFza3MgPSBbXTtcbiAgICAvLyBzZXR0aW5nIHVwIG9iamVjdCB0eXBlIGZvcm0gb25seSBtYWtlcyBzZW5zZSB3aXRoIG9uZSB0YXJnZXQgdHlwZVxuICAgIGlmICh0aGlzLnN0b3JlZFF1ZXJ5LnR5cGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGFza3MucHVzaCh0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0Rm9ybUVsZW1lbnRzRnJvbUZvcm1Nb2RlbCh0aGlzLnN0b3JlZFF1ZXJ5LnR5cGVzWzBdLnFuYW1lLCAnU0VBUkNIJykucGlwZShcbiAgICAgICAgdGFwKChlbGVtZW50czogYW55W10pID0+IHtcbiAgICAgICAgICBlbGVtZW50cy5mb3JFYWNoKGUgPT4ge1xuICAgICAgICAgICAgLy8gcHJldmVudCB0YWJsZXMgYW5kIGJpbmFyeSB0eXBlcyBmcm9tIGJlaW5nIHJlbmRlcmVkIGluIHRoZSBzdG9yZWQgcXVlcnkgZm9ybVxuICAgICAgICAgICAgaWYgKGUudHlwZSAhPT0gJ0JJTkFSWScpIHtcbiAgICAgICAgICAgICAgaWYgKGUucmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgICBlLnJlcXVpcmVkID0gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGUucmVhZG9ubHkpIHtcbiAgICAgICAgICAgICAgICBlLnJlYWRvbmx5ID0gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgZmMgPSB0aGlzLnRvRm9ybUNvbnRyb2woZSk7XG4gICAgICAgICAgICAgIGlmIChmYykge1xuICAgICAgICAgICAgICAgIHRoaXMuZWRpdEZvcm0uY29udHJvbHMucHVzaChmYyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgICAgKSlcbiAgICB9XG4gICAgLy8gYWRkIGNvbnRleHQgZm9ybSBjb250cm9scyBhcyB3ZWxsXG4gICAgaWYgKHRoaXMuc3RvcmVkUXVlcnkuY29udGV4dEZvbGRlclR5cGVzLmxlbmd0aCkge1xuICAgICAgdGFza3MucHVzaCh0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0Rm9ybUVsZW1lbnRzRnJvbUZvcm1Nb2RlbCh0aGlzLnN0b3JlZFF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlc1swXS5xbmFtZSwgJ1NFQVJDSCcsIHRydWUpLnBpcGUoXG4gICAgICAgIHRhcCgoZWxlbWVudHM6IGFueVtdKSA9PiB7XG4gICAgICAgICAgZWxlbWVudHMuZm9yRWFjaChlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZjID0gdGhpcy50b0Zvcm1Db250cm9sKGUpO1xuICAgICAgICAgICAgaWYgKGZjKSB7XG4gICAgICAgICAgICAgIHRoaXMuZWRpdEZvcm0uY29udGV4dENvbnRyb2xzLnB1c2goZmMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgICApKVxuICAgIH1cblxuICAgIHJldHVybiB0YXNrcy5sZW5ndGggPyBmb3JrSm9pbih0YXNrcykgOiBvZih0YXNrcyk7XG4gIH1cblxuICBwcml2YXRlIGZldGNoUm9sZXMoKSB7XG4gICAgaWYgKCF0aGlzLnN5c3RlbVJvbGVzIHx8IHRoaXMuc3lzdGVtUm9sZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLnN5c3RlbVNlcnZpY2VcbiAgICAgICAgLmdldFJvbGVzKClcbiAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgIHRoaXMuc3lzdGVtUm9sZXMgPSByZXM7XG4gICAgICAgICAgdGhpcy5yb2xlc1BpY2tlci5jb2Rlc3lzdGVtID0ge1xuICAgICAgICAgICAgZW50cmllczogdGhpcy5zeXN0ZW1Sb2xlcy5tYXAocm9sZSA9PiAoe1xuICAgICAgICAgICAgICBpZDogcm9sZS5pZCxcbiAgICAgICAgICAgICAgbGFiZWw6IHJvbGUubmFtZSxcbiAgICAgICAgICAgICAgZGVmYXVsdHJlcHJlc2VudGF0aW9uOiByb2xlLm5hbWUsXG4gICAgICAgICAgICAgIGRhdGE6IHJvbGUubmFtZVxuICAgICAgICAgICAgfSkpLnNvcnQoVXRpbHMuc29ydFZhbHVlcygnbGFiZWwnKSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIGdldFJlc3RyaWN0aW9ucygpOiBSZXN0cmljdGlvbltdIHtcbiAgICBsZXQgcmVzdHJpY3Rpb25zOiBSZXN0cmljdGlvbltdID0gW107XG5cbiAgICAvLyB0eXBlIHJlc3RyaWN0aW9uXG4gICAgaWYgKHRoaXMuc3RvcmVkUXVlcnkudHlwZXMgJiYgdGhpcy5zdG9yZWRRdWVyeS50eXBlcy5sZW5ndGgpIHtcbiAgICAgIHJlc3RyaWN0aW9ucy5wdXNoKHtcbiAgICAgICAgZmllbGQ6IFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLlRZUEUsXG4gICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zdG9yZWRxdWVyeS5yZXN0cmljdGlvbi50eXBlJyksXG4gICAgICAgIGl0ZW1zOiB0aGlzLnN0b3JlZFF1ZXJ5LnR5cGVzLm1hcCh0ID0+IHQubGFiZWwpXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBhZGQgYmFzZSBwYXJhbXMgcmVzdHJpY3Rpb25zXG4gICAgKHRoaXMuc3RvcmVkUXVlcnkuZmlsdGVycyB8fCBbXSkuZm9yRWFjaChmaWx0ZXIgPT4ge1xuICAgICAgaWYgKGZpbHRlciAmJiB+dGhpcy5CQVNFX1BBUkFNU19GSUVMRFMuaW5kZXhPZihmaWx0ZXIucHJvcGVydHkpKSB7XG5cbiAgICAgICAgY29uc3QgZmllbGQgPSBmaWx0ZXIucHJvcGVydHk7XG4gICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RvcmVkcXVlcnkucmVzdHJpY3Rpb24uJyArIGZpZWxkKTtcblxuICAgICAgICBzd2l0Y2ggKGZpZWxkKSB7XG4gICAgICAgICAgY2FzZSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5NSU1FVFlQRUdST1VQOlxuICAgICAgICAgICAgcmVzdHJpY3Rpb25zLnB1c2goe1xuICAgICAgICAgICAgICBmaWVsZCwgbGFiZWwsIGl0ZW1zOiBBcnJheS5pc0FycmF5KGZpbHRlci5maXJzdFZhbHVlKSA/IGZpbHRlci5maXJzdFZhbHVlIDogW2ZpbHRlci5maXJzdFZhbHVlXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLkZJTEVOQU1FOlxuICAgICAgICAgICAgcmVzdHJpY3Rpb25zLnB1c2goe1xuICAgICAgICAgICAgICBmaWVsZCwgbGFiZWwsIGl0ZW1zOiBbZmlsdGVyLmZpcnN0VmFsdWVdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuRklMRVNJWkU6XG4gICAgICAgICAgICByZXN0cmljdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgIGZpZWxkLCBsYWJlbCwgaXRlbXM6IFt0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zZWFyY2guYWdnLmZpbGVzaXplLicgKyBmaWx0ZXIuZmlyc3RWYWx1ZSldXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuQ1JFQVRFRDpcbiAgICAgICAgICBjYXNlIFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLk1PRElGSUVEOlxuICAgICAgICAgICAgcmVzdHJpY3Rpb25zLnB1c2goe1xuICAgICAgICAgICAgICBmaWVsZCwgbGFiZWwsIGl0ZW1zOiBbdGhpcy5jcmVhdGVEYXRlUmVzdHJpY3Rpb24oZmlsdGVyKV1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5DUkVBVE9SOlxuICAgICAgICAgIGNhc2UgU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuTU9ESUZJRVI6XG4gICAgICAgICAgICB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uT2JqZWN0cyhmaWx0ZXIuZmlyc3RWYWx1ZSlcbiAgICAgICAgICAgICAgLnN1YnNjcmliZShvcmdVc2VycyA9PiByZXN0cmljdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgZmllbGQsIGxhYmVsLCBpdGVtczogb3JnVXNlcnMubWFwKHUgPT4gdS50aXRsZSlcbiAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3RyaWN0aW9ucztcbiAgfVxuXG4gIGNyZWF0ZURhdGVSZXN0cmljdGlvbihmaWx0ZXI6IFNlYXJjaEZpbHRlcikge1xuICAgIHN3aXRjaCAoZmlsdGVyLm9wZXJhdG9yKSB7XG4gICAgICBjYXNlIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5SQU5HRTpcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYGVvLnNlYXJjaC5hZ2cudGltZS4ke2ZpbHRlci5maXJzdFZhbHVlfWApO1xuICAgICAgY2FzZSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuRVFVQUw6XG4gICAgICAgIHJldHVybiBgPSAke3RoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGZpbHRlci5maXJzdFZhbHVlLCAnZW9TaG9ydERhdGUnKX1gO1xuICAgICAgY2FzZSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuSU5URVJWQUxfSU5DTFVERV9CT1RIOlxuICAgICAgICByZXR1cm4gYCR7dGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZmlsdGVyLmZpcnN0VmFsdWUsICdlb1Nob3J0RGF0ZScpfSAtICR7dGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZmlsdGVyLnNlY29uZFZhbHVlLCAnZW9TaG9ydERhdGUnKX1gO1xuICAgICAgY2FzZSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuR1JFQVRFUl9PUl9FUVVBTDpcbiAgICAgICAgcmV0dXJuIGAke3RoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNlYXJjaC5hZ2cudGltZS5zcGFuLnNpbmNlJyl9ICR7dGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZmlsdGVyLmZpcnN0VmFsdWUsICdlb1Nob3J0RGF0ZScpfWA7XG4gICAgICBjYXNlIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5MRVNTX09SX0VRVUFMOlxuICAgICAgICByZXR1cm4gYCR7dGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLmFnZy50aW1lLnNwYW4udW50aWwnKX0gJHt0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShmaWx0ZXIuZmlyc3RWYWx1ZSwgJ2VvU2hvcnREYXRlJyl9YDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBgKCR7ZmlsdGVyLm9wZXJhdG9yfSkgJHt0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShmaWx0ZXIuZmlyc3RWYWx1ZSwgJ2VvU2hvcnREYXRlJyl9YDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGZvcm0gY29udHJvbCBmcm9tIGEgZ2l2ZW4gZm9ybSBlbGVtZW50XG4gICAqIEBwYXJhbSBmb3JtRWxlbWVudFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHJpdmF0ZSB0b0Zvcm1Db250cm9sKGZvcm1FbGVtZW50KTogT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyIHtcblxuICAgIC8vIHRoZSBgbmFtZWAgcHJvcGVydHkgb2Ygc3RvcmVkIHF1ZXJ5IGZvcm0gZWxlbWVudCBoYXMgdG8gYmUgYHFuYW1lYCBvZiBmb3JtIGVsZW1lbnQsXG4gICAgLy8gYmVjYXVzZSB3ZSBtYXkgY29tYmluZSBtdWx0aXBsZSBmb3JtcyAoY29udGV4dCBmb3JtKSBhbmQgaW4gdGhpcyBjYXNlIHRoZXJlIG1heVxuICAgIC8vIGJlIGNvbmZsaWN0cyBpbiBuYW1pbmdzXG4gICAgZm9ybUVsZW1lbnQubmFtZSA9IGZvcm1FbGVtZW50LnFuYW1lO1xuXG4gICAgaWYgKGZvcm1FbGVtZW50LnR5cGUgPT09ICdUQUJMRScpIHtcbiAgICAgIGxldCBmaWx0ZXJzID0gdGhpcy5zdG9yZWRRdWVyeS5nZXRUYWJsZUZpbHRlcnMoZm9ybUVsZW1lbnQucW5hbWUpO1xuICAgICAgaWYgKGZpbHRlcnMgJiYgZmlsdGVycy5sZW5ndGgpIHtcbiAgICAgICAgZm9ybUVsZW1lbnQudmFsdWUgPSB0aGlzLnNlYXJjaFNlcnZpY2UudGFibGVGaWx0ZXJzVG9FbGVtZW50VmFsdWUoZmlsdGVycywgZm9ybUVsZW1lbnQuZWxlbWVudHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9ybUVsZW1lbnQudmFsdWUgPSBbe31dO1xuICAgICAgICBkZWxldGUgZm9ybUVsZW1lbnQuaXNOb3RTZXRWYWx1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZ3JhYiB2YWx1ZSBmb3IgdGhlIGNvbnRyb2wgZnJvbSBjb3JyZXNwb25kaW5nIHF1ZXJ5IGZpbHRlcnNcbiAgICAgIGxldCBmaWx0ZXIgPSB0aGlzLnN0b3JlZFF1ZXJ5LmdldEZpbHRlcihmb3JtRWxlbWVudC5xbmFtZSk7XG4gICAgICAvLyB3ZSBtYXkgaGF2ZSBwYXJhbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIHF1ZXJpZXMgZmlsdGVycy4gVGhpcyBtYXkgYmUgdGhlXG4gICAgICAvLyBjYXNlIHdoZW4gd2UgbWFyayBmb3JtIGVsZW1lbnRzIGFzIGR5bmFtaWMgZmllbGRzIHdpdGhvdXQgcHJvdmlkaW5nIGEgdmFsdWVcbiAgICAgIGlmIChmaWx0ZXIpIHtcblxuICAgICAgICAvLyBmaWx0ZXIgdG8gaGF2ZSBubyB2YWx1ZVxuICAgICAgICBpZiAoZmlsdGVyLm9wZXJhdG9yID09PSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuRVFVQUwgJiYgZmlsdGVyLmZpcnN0VmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICBmb3JtRWxlbWVudC5pc05vdFNldFZhbHVlID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZWxldGUgZm9ybUVsZW1lbnQuaXNOb3RTZXRWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvcm1FbGVtZW50LnZhbHVlID0gdGhpcy5zZWFyY2hTZXJ2aWNlLmZpbHRlclRvRWxlbWVudFZhbHVlKFxuICAgICAgICAgIHRoaXMuc3RvcmVkUXVlcnkuZ2V0RmlsdGVyKGZvcm1FbGVtZW50LnFuYW1lKSxcbiAgICAgICAgICBmb3JtRWxlbWVudC50eXBlXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKGZvcm1FbGVtZW50LnFuYW1lICE9PSBTdG9yZWRRdWVyaWVzU2VydmljZS5GVUxMVEVYVCkge1xuICAgICAgICBmb3JtRWxlbWVudC52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgZGVsZXRlIGZvcm1FbGVtZW50LmlzTm90U2V0VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIHN5bmMgd2l0aCBwYXJhbXNcbiAgICBjb25zdCBtYXRjaDogYW55ID0gdGhpcy5zdG9yZWRRdWVyeS5wYXJhbWV0ZXIuZmluZChwYXJhbSA9PiB7XG4gICAgICByZXR1cm4gKHBhcmFtLnFuYW1lID09PSBmb3JtRWxlbWVudC5xbmFtZSkgfHwgKHBhcmFtLnR5cGUgPT09IFN0b3JlZFF1ZXJpZXNTZXJ2aWNlLkZVTExURVhUICYmIGZvcm1FbGVtZW50LnFuYW1lID09PSBTdG9yZWRRdWVyaWVzU2VydmljZS5GVUxMVEVYVClcbiAgICB9KTtcbiAgICAvLyBldmVyeSBmaWVsZCB0aGF0IGlzIHBhcnQgb2YgdGhlIHBhcmFtcyBpcyBzdXBwb3NlZCB0byBiZSBkeW5hbWljXG4gICAgZm9ybUVsZW1lbnQuX2R5bmFtaWMgPSAhIW1hdGNoO1xuXG4gICAgLy8gY3JlYXRlIGFjdHVhbCBmb3JtIGNvbnRyb2wgdGhhdCBjb3VsZCBiZSB1c2VkIHdpdGhcbiAgICAvLyBGb3JtRWxlbWVudENvbXBvbmVudCB0byB0aGVuIHJlbmRlciBmb3IgZWxlbWVudHNcbiAgICAvLyB3cmFwcGVyIG1heSBiZSBudWxsIGluIGNhc2Ugb2YgYW4gZXJyb3JcbiAgICByZXR1cm4gdGhpcy5mb3JtSGVscGVyU2VydmljZS5lbGVtZW50VG9Gb3JtQ29udHJvbChmb3JtRWxlbWVudCwgJ1NFQVJDSCcpO1xuICB9XG5cbiAgb25TdG9yZWRRdWVyeUxvYWRlZCgpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbe291dGxldHM6IHttb2RhbDogJ3NlYXJjaCd9fV0pO1xuICB9XG5cbiAgb25TdG9yZWRRdWVyeUV4ZWN1dGUoZXZ0KSB7XG4gICAgY29uc3QgdXJpUGFyYW0gPSBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoZXZ0LnF1ZXJ5SnNvbikpO1xuICAgIGNvbnN0IHVyaVBhcmFtUXVlcnk6IE5hdmlnYXRpb25FeHRyYXMgPSB7cXVlcnlQYXJhbXM6IHsncXVlcnknOiB1cmlQYXJhbX19O1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3Jlc3VsdCddLCB1cmlQYXJhbVF1ZXJ5KTtcbiAgfVxuXG4gIHNldEljb25UaXRsZXMoKSB7XG4gICAgdGhpcy5pY29uVGl0bGVzID0ge1xuICAgICAgc2hhcmU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnN0b3JlZHF1ZXJ5LnNoYXJlLnRpdGxlJyksXG4gICAgICBzaGFyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnN0b3JlZHF1ZXJ5LnNoYXJlZGZvci50aXRsZScpLFxuICAgICAgZmF2b3I6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnN0b3JlZHF1ZXJ5LmZhdm9yLnRpdGxlJyksXG4gICAgICBmYXZvcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zdG9yZWRxdWVyeS5mYXZvcmVkZm9yLnRpdGxlJylcbiAgICB9XG4gIH1cblxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2VsZWN0aW9uLmZvY3VzJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkJCkpXG4gICAgICAuc3Vic2NyaWJlKHEgPT4ge1xuICAgICAgICB0aGlzLnF1ZXJ5ID0gcTtcbiAgICAgIH0pO1xuICAgIHRoaXMuc2V0SWNvblRpdGxlcygpO1xuICB9XG5cbiAgdHJhY2tCeVFOYW1lKGluZGV4LCBpdGVtKSB7XG4gICAgcmV0dXJuIGl0ZW0ucW5hbWU7XG4gIH1cblxuICB0cmFja0J5SW5kZXgoaW5kZXgsIGl0ZW0pIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cbn1cbiJdfQ==
@@ -13,7 +13,7 @@ TreeNodeComponent.decorators = [
13
13
  selector: 'eo-tree-node',
14
14
  template: "<div class=\"tree-node\"\n [ngClass]=\"{selected: node.selected,\n expanded: node.expanded,\n notSelectable: !node.selectable && !(node.children?.length),\n branch: node.children && node.children.length > 0}\">\n <div class=\"node-line\"></div>\n <div class=\"node-content\">\n\n <div class=\"node-item\">\n <div class=\"spacer\"></div>\n <div class=\"ico\" (click)=\"node.children?.length ? onNodeExpandedChanged.emit(node) : onNodeSelected.emit(node)\"></div>\n <div class=\"values\">\n <div class=\"label\" (click)=\"onNodeSelected.emit(node)\" [ngClass]=\"{focused: node.focused}\">\n <span>{{node.name}}</span>\n </div>\n <div class=\"badge\" *ngIf=\"node.badges && node.badges.length > 0\">\n <span *ngFor=\"let badge of node.badges\"\n class=\"{{badge.cssClass}}\"\n [ngClass]=\"{highlighted: node.highlighted}\">\n {{badge.value}}\n </span>\n </div>\n </div>\n </div>\n\n <div class=\"node-children\" *ngIf=\"node.children?.length\">\n <eo-tree-node [node]=\"_node\" *ngFor=\"let _node of node.children; trackBy: trackById\"\n (onNodeExpandedChanged)=\"onNodeExpandedChanged.emit($event)\"\n (onNodeSelected)=\"onNodeSelected.emit($event)\"></eo-tree-node>\n </div>\n </div>\n</div>\n",
15
15
  encapsulation: ViewEncapsulation.None,
16
- styles: [".eo-tree.rtl .tree-node .node-content .node-children{padding-left:0;padding-right:var(--app-pane-padding)}.eo-tree.rtl .tree-node .node-content .node-item .label{margin-left:0;margin-right:calc(var(--app-pane-padding)/4)}.eo-tree{color:var(--text-color-caption)}.eo-tree eo-tree-node{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0}.eo-tree>eo-tree-node:last-child>.tree-node>.node-line{height:calc(var(--app-pane-padding)/2 + var(--app-pane-padding)/2 + 1px)}.eo-tree>eo-tree-node:first-child>.tree-node>.node-line{margin-top:calc(var(--app-pane-padding)/2 + var(--app-pane-padding)/2)}.eo-tree .tree-node{display:flex;flex:1;flex-direction:row;flex-wrap:nowrap;min-height:0;min-width:0}.eo-tree .tree-node.notSelectable{color:var(--text-color-hint)}.eo-tree .tree-node.notSelectable .label{cursor:default!important}.eo-tree .tree-node.notSelectable .label.focused span,.eo-tree .tree-node.notSelectable .label:hover span{border-color:transparent!important;color:var(--text-color-hint)!important}.eo-tree .tree-node .node-line{align-self:stretch;background:rgba(var(--color-black-rgb),.2);flex:0 0 auto;width:1px}.eo-tree .tree-node .node-content{flex:1 1 auto;min-width:0;padding:calc(var(--app-pane-padding)/2) 0}.eo-tree .tree-node .node-content .node-item{align-items:center;display:flex;flex:1;flex-direction:row;flex-wrap:nowrap;height:var(--app-pane-padding);min-height:0;min-width:0}.eo-tree .tree-node .node-content .node-item .spacer{align-self:stretch;display:flex;flex-flow:column;width:calc(var(--app-pane-padding)/2)}.eo-tree .tree-node .node-content .node-item .spacer:before{border-bottom:1px solid rgba(var(--color-black-rgb),.2);content:\"\";flex:0 0 50%}.eo-tree .tree-node .node-content .node-item .ico{align-items:center;border:1px solid rgba(var(--color-black-rgb),.2);border-radius:50%;box-sizing:border-box;display:flex;flex-flow:row nowrap;height:var(--app-pane-padding);justify-content:center;width:var(--app-pane-padding)}.eo-tree .tree-node .node-content .node-item .values{align-items:center;display:flex;flex:1;flex-direction:row;justify-content:space-between;min-height:0;min-width:0}.eo-tree .tree-node .node-content .node-item .label{-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;cursor:pointer;display:inline-block;margin-left:calc(var(--app-pane-padding)/4);max-width:none;overflow:hidden;padding:1px;text-overflow:ellipsis;transition:all var(--app-default-transition-duration) ease-in-out;white-space:nowrap;width:100%;word-wrap:break-word}.eo-tree .tree-node .node-content .node-item .label.focused span,.eo-tree .tree-node .node-content .node-item .label:hover span{border-color:var(--color-accent);color:var(--color-accent)}.eo-tree .tree-node .node-content .node-item .label span{-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;border:1px solid transparent;border-radius:3px;box-sizing:border-box;display:inline-block;padding:0 calc(var(--app-pane-padding)/4);transition:all var(--app-default-transition-duration) ease-in-out;white-space:nowrap}.eo-tree .tree-node .node-content .node-item .badge span{border:1px solid var(--text-color-hint);border-radius:calc(var(--app-pane-padding)/4);box-sizing:content-box;color:var(--text-color-caption);font-size:var(--font-hint);line-height:1em;margin:0 calc(var(--app-pane-padding)/4);padding:0 calc(var(--app-pane-padding)/4) 1px calc(var(--app-pane-padding)/4)}.eo-tree .tree-node .node-content .node-item .badge span:last-child{background:var(--color-primary-3);border-color:transparent;color:var(--color-white)}.eo-tree .tree-node .node-content .node-item .badge span.highlighted:last-child{background:var(--color-accent);box-shadow:inset 0 0 0 1px var(--color-white)}.eo-tree .tree-node .node-content .node-children{display:none;padding-left:var(--app-pane-padding)}.eo-tree .tree-node .node-content .node-children>eo-tree-node:last-child>.tree-node>.node-line{height:calc(var(--app-pane-padding)/2 + var(--app-pane-padding)/2 + 1px)}.eo-tree .tree-node.selected>.node-content>.node-item>.label span{background:var(--color-accent);color:var(--color-white)}.eo-tree .tree-node.selected>.node-content>.node-item>.label.focused,.eo-tree .tree-node.selected>.node-content>.node-item>.label:hover{border-color:var(--color-accent)}.eo-tree .tree-node.selected:not(.branch)>.node-content>.node-item .ico:before{background:var(--color-accent);border-radius:50%;content:\"\";height:calc(var(--app-pane-padding)/2);width:calc(var(--app-pane-padding)/2)}.eo-tree .tree-node.selected.branch>.node-content>.node-item .ico{border-color:var(--color-accent)}.eo-tree .tree-node.selected.branch>.node-content>.node-item .ico:before{background:var(--color-accent);color:var(--color-white)}.eo-tree .tree-node.branch>.node-content>.node-item>.ico{border-radius:2px}.eo-tree .tree-node.branch>.node-content>.node-item>.ico:hover{background:rgba(var(--color-black-rgb),.1)}.eo-tree .tree-node.branch>.node-content>.node-item>.ico:before{color:var(--text-color-caption);content:\"+\";font-family:monospace;font-size:14px;height:calc(var(--app-pane-padding) - 2px);line-height:calc(var(--app-pane-padding) - 2px);text-align:center;width:calc(var(--app-pane-padding) - 2px)}.eo-tree .tree-node.branch.expanded>.node-content>.node-item>.ico:before{content:\"-\"}.eo-tree .tree-node.branch.expanded>.node-content>.node-children{display:block}"]
16
+ styles: [".eo-tree.rtl .tree-node .node-content .node-children{padding-left:0;padding-right:var(--app-pane-padding)}.eo-tree.rtl .tree-node .node-content .node-item .label{margin-left:0;margin-right:calc(var(--app-pane-padding)/4)}.eo-tree{color:var(--text-color-caption)}.eo-tree eo-tree-node{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0}.eo-tree>eo-tree-node:last-child>.tree-node>.node-line{height:calc(var(--app-pane-padding)/2 + var(--app-pane-padding)/2 + 1px)}.eo-tree>eo-tree-node:first-child>.tree-node>.node-line{margin-top:calc(var(--app-pane-padding)/2 + var(--app-pane-padding)/2)}.eo-tree .tree-node{display:flex;flex:1;flex-direction:row;flex-wrap:nowrap;min-height:0;min-width:0}.eo-tree .tree-node.notSelectable{color:var(--text-color-hint);display:none}.eo-tree .tree-node.notSelectable .label{cursor:default!important}.eo-tree .tree-node.notSelectable .label.focused span,.eo-tree .tree-node.notSelectable .label:hover span{border-color:transparent!important;color:var(--text-color-hint)!important}.eo-tree .tree-node .node-line{align-self:stretch;background:rgba(var(--color-black-rgb),.2);flex:0 0 auto;width:1px}.eo-tree .tree-node .node-content{flex:1 1 auto;min-width:0;padding:calc(var(--app-pane-padding)/2) 0}.eo-tree .tree-node .node-content .node-item{align-items:center;display:flex;flex:1;flex-direction:row;flex-wrap:nowrap;height:var(--app-pane-padding);min-height:0;min-width:0}.eo-tree .tree-node .node-content .node-item .spacer{align-self:stretch;display:flex;flex-flow:column;width:calc(var(--app-pane-padding)/2)}.eo-tree .tree-node .node-content .node-item .spacer:before{border-bottom:1px solid rgba(var(--color-black-rgb),.2);content:\"\";flex:0 0 50%}.eo-tree .tree-node .node-content .node-item .ico{align-items:center;border:1px solid rgba(var(--color-black-rgb),.2);border-radius:50%;box-sizing:border-box;display:flex;flex-flow:row nowrap;height:var(--app-pane-padding);justify-content:center;width:var(--app-pane-padding)}.eo-tree .tree-node .node-content .node-item .values{align-items:center;display:flex;flex:1;flex-direction:row;justify-content:space-between;min-height:0;min-width:0}.eo-tree .tree-node .node-content .node-item .label{-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;cursor:pointer;display:inline-block;margin-left:calc(var(--app-pane-padding)/4);max-width:none;overflow:hidden;padding:1px;text-overflow:ellipsis;transition:all var(--app-default-transition-duration) ease-in-out;white-space:nowrap;width:100%;word-wrap:break-word}.eo-tree .tree-node .node-content .node-item .label.focused span,.eo-tree .tree-node .node-content .node-item .label:hover span{border-color:var(--color-accent);color:var(--color-accent)}.eo-tree .tree-node .node-content .node-item .label span{-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;border:1px solid transparent;border-radius:3px;box-sizing:border-box;display:inline-block;padding:0 calc(var(--app-pane-padding)/4);transition:all var(--app-default-transition-duration) ease-in-out;white-space:nowrap}.eo-tree .tree-node .node-content .node-item .badge span{border:1px solid var(--text-color-hint);border-radius:calc(var(--app-pane-padding)/4);box-sizing:content-box;color:var(--text-color-caption);font-size:var(--font-hint);line-height:1em;margin:0 calc(var(--app-pane-padding)/4);padding:0 calc(var(--app-pane-padding)/4) 1px calc(var(--app-pane-padding)/4)}.eo-tree .tree-node .node-content .node-item .badge span:last-child{background:var(--color-primary-3);border-color:transparent;color:var(--color-white)}.eo-tree .tree-node .node-content .node-item .badge span.highlighted:last-child{background:var(--color-accent);box-shadow:inset 0 0 0 1px var(--color-white)}.eo-tree .tree-node .node-content .node-children{display:none;padding-left:var(--app-pane-padding)}.eo-tree .tree-node .node-content .node-children>eo-tree-node:last-child>.tree-node>.node-line{height:calc(var(--app-pane-padding)/2 + var(--app-pane-padding)/2 + 1px)}.eo-tree .tree-node.selected>.node-content>.node-item>.label span{background:var(--color-accent);color:var(--color-white)}.eo-tree .tree-node.selected>.node-content>.node-item>.label.focused,.eo-tree .tree-node.selected>.node-content>.node-item>.label:hover{border-color:var(--color-accent)}.eo-tree .tree-node.selected:not(.branch)>.node-content>.node-item .ico:before{background:var(--color-accent);border-radius:50%;content:\"\";height:calc(var(--app-pane-padding)/2);width:calc(var(--app-pane-padding)/2)}.eo-tree .tree-node.selected.branch>.node-content>.node-item .ico{border-color:var(--color-accent)}.eo-tree .tree-node.selected.branch>.node-content>.node-item .ico:before{background:var(--color-accent);color:var(--color-white)}.eo-tree .tree-node.branch>.node-content>.node-item>.ico{border-radius:2px}.eo-tree .tree-node.branch>.node-content>.node-item>.ico:hover{background:rgba(var(--color-black-rgb),.1)}.eo-tree .tree-node.branch>.node-content>.node-item>.ico:before{color:var(--text-color-caption);content:\"+\";font-family:monospace;font-size:14px;height:calc(var(--app-pane-padding) - 2px);line-height:calc(var(--app-pane-padding) - 2px);text-align:center;width:calc(var(--app-pane-padding) - 2px)}.eo-tree .tree-node.branch.expanded>.node-content>.node-item>.ico:before{content:\"-\"}.eo-tree .tree-node.branch.expanded>.node-content>.node-children{display:block}"]
17
17
  },] }
18
18
  ];
19
19
  TreeNodeComponent.ctorParameters = () => [];
@@ -138,7 +138,7 @@ export class TreeComponent {
138
138
  }
139
139
  // Recursive function walking the tree nodes and setting the nodes `selected` flags
140
140
  updateTreeNode(node, parents) {
141
- node.selected = !!this.selectedNodes.find(n => node.id === n.id);
141
+ node.selected = !!this.selectedNodes.find(n => node.id === n.value);
142
142
  node.expanded = this._expandedNodes.length ? !!this._expandedNodes.find(id => id === node.id) : node.expanded;
143
143
  node.highlighted = !!this._highlightedNodes.find(id => id === node.id);
144
144
  node.focused = this.focusedNode && this.focusedNode.id === node.id ? this.focusedNode.focused : false;
@@ -230,4 +230,4 @@ TreeComponent.propDecorators = {
230
230
  onFocusOut: [{ type: HostListener, args: ['focusout',] }],
231
231
  onKey: [{ type: HostListener, args: ['keydown', ['$event'],] }]
232
232
  };
233
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay90cmVlL3RyZWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osV0FBVyxFQUFFLFVBQVUsRUFDeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF1QixpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBMEN2RSxNQUFNLE9BQU8sYUFBYTtJQXdCeEIsWUFBbUIsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQXRCWCxjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBRXBDLG1CQUFjLEdBQWEsRUFBRSxDQUFDO1FBQzlCLHNCQUFpQixHQUFhLEVBQUUsQ0FBQztRQUNqQyxrQkFBYSxHQUFVLEVBQUUsQ0FBQztRQUMxQixpQkFBWSxHQUFVLEVBQUUsQ0FBQztRQUt4QixZQUFPLEdBQWdCLEVBQUUsQ0FBQztRQUkxQixpQkFBWSxHQUFHLEdBQUcsQ0FBQyxDQUFDLG1CQUFtQjtRQUVoRCxxRkFBcUY7UUFDM0UseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVwRCxvQkFBZSxHQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUU7UUFDN0IsQ0FBQyxDQUFDO0lBR0YsQ0FBQztJQUVELFFBQVE7SUFDUixDQUFDO0lBRUQsSUFDSSxnQkFBZ0IsQ0FBQyxLQUFlO1FBQ2xDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxJQUFJ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Q0gsQ0FBQzs7O1lBcFFGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsU0FBUztnQkFDbkIsbWlCQUFvQztnQkFFcEMsU0FBUyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDO3dCQUM1QyxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTs7YUFDdEM7OztZQTNDYyxVQUFVOzs7d0JBOEN0QixXQUFXLFNBQUMsZUFBZTtzQkFVM0IsS0FBSzswQkFDTCxLQUFLO3VCQUNMLEtBQUs7MkJBRUwsS0FBSzttQ0FHTCxNQUFNOytCQVdOLEtBQUssU0FBQyxrQkFBa0I7d0JBTXhCLEtBQUssU0FBQyxNQUFNO3lCQVNaLEtBQUssU0FBQyxZQUFZO3dCQVFsQixZQUFZLFNBQUMsU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDO3lCQVF6QyxZQUFZLFNBQUMsVUFBVTtvQkFldkIsWUFBWSxTQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSG9zdExpc3RlbmVyLFxuICBmb3J3YXJkUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZywgRWxlbWVudFJlZiwgT25Jbml0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuZXhwb3J0IGludGVyZmFjZSBUcmVlTm9kZSB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgY2hpbGRyZW46IFRyZWVOb2RlW107XG4gIHBhdGg/OiBzdHJpbmdbXTtcbiAgZXhwYW5kZWQ6IGJvb2xlYW47XG4gIHNlbGVjdGFibGU6IGJvb2xlYW47XG4gIHNlbGVjdGVkOiBib29sZWFuO1xuICBpc1JlZmVyZW5jZT86IGJvb2xlYW47XG4gIGhpZ2hsaWdodGVkPzogYm9vbGVhbjtcbiAgZm9jdXNlZD86IGJvb2xlYW47XG4gIC8qKiBiYWRnZSB0byBiZSBhZGRlZCB0byBhIHRyZWUgbm9kZSAqL1xuICBiYWRnZXM/OiBUcmVlTm9kZUJhZGdlW107XG4gIGRhdGE/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJlZU5vZGVCYWRnZSB7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGNzc0NsYXNzPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyZWVPcHRpb25zIHtcbiAgLyoqIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdGhlIHVzZXIgY2FuIHNlbGVjdCBqdXN0IG9uZSBvciBtdWx0aXBsZSB2YWx1ZXMgZnJvbSB0aGUgdHJlZSAqL1xuICBtdWx0aXNlbGVjdD86IGJvb2xlYW47XG4gIGRpc2FibGVEZXNlbGVjdGlvbj86IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLXRyZWUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdHJlZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RyZWUuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUcmVlQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFRyZWVDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0IHtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKSBfdGFiSW5kZXggPSAwO1xuXG4gIHByaXZhdGUgX2V4cGFuZGVkTm9kZXM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgX2hpZ2hsaWdodGVkTm9kZXM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgc2VsZWN0ZWROb2RlczogYW55W10gPSBbXTtcbiAgcHJpdmF0ZSB2aXNpYmxlTm9kZXM6IGFueVtdID0gW107XG4gIHByaXZhdGUgZm9jdXNlZE5vZGU6IFRyZWVOb2RlO1xuXG4gIHRyZWU6IFRyZWVOb2RlW107XG5cbiAgQElucHV0KCkgb3B0aW9uczogVHJlZU9wdGlvbnMgPSB7fTtcbiAgQElucHV0KCkgaXNEaXNwbGF5ZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIHNlbGVjdGlvbktleSA9ICcgJzsgLy8gZGVmYXVsdCBpcyBTcGFjZVxuXG4gIC8vIHRoZSBub2RlcyB0aGF0IGFyZSBzZWxlY3RlZC4gSW4gY2FzZSBvZiBgbXVsdGlzZWxlY3RgIHNldCB0byB0cnVlLCB0aGlzIHdpbGwgYmUgYW5cbiAgQE91dHB1dCgpIGV4cGFuZGVkTm9kZXNDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHtcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gIH1cblxuICBASW5wdXQoJ2hpZ2hsaWdodGVkTm9kZXMnKVxuICBzZXQgaGlnaGxpZ2h0ZWROb2Rlcyhub2Rlczogc3RyaW5nW10pIHtcbiAgICB0aGlzLl9oaWdobGlnaHRlZE5vZGVzID0gbm9kZXMgfHwgW107XG4gICAgdGhpcy52aXNpYmxlTm9kZXMuZm9yRWFjaChuID0+IChuLmhpZ2hsaWdodGVkID0gISF0aGlzLl9oaWdobGlnaHRlZE5vZGVzLmZpbmQoaWQgPT4gaWQgPT09IG4uaWQpKSk7XG4gIH1cblxuICBASW5wdXQoJ3RyZWUnKVxuICBzZXQgdHJlZUlucHV0KHRyZWU6IFRyZWVOb2RlW10pIHtcbiAgICAvLyB0aGlzLnRyZWUgPSB0cmVlO1xuICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IFtdO1xuICAgIHRoaXMuX2V4cGFuZGVkTm9kZXMgPSBbXTtcbiAgICB0aGlzLmZvY3VzZWROb2RlID0gbnVsbDtcbiAgICB0aGlzLnVwZGF0ZVRyZWUodHJlZSk7XG4gIH1cblxuICBASW5wdXQoJ3RyZWVVcGRhdGUnKVxuICBzZXQgdHJlZVVwZGF0ZSh0cmVlOiBUcmVlTm9kZVtdKSB7XG4gICAgaWYgKHRyZWUpIHtcbiAgICAgIHRoaXMudXBkYXRlVHJlZSh0cmVlKTtcbiAgICB9XG4gIH1cblxuXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzaW4nLCBbJyRldmVudC50YXJnZXQnXSlcbiAgb25Gb2N1c0luKHRhcmdldDogYW55KSB7XG4gICAgaWYgKCF0aGlzLmZvY3VzZWROb2RlIHx8ICF0aGlzLmZvY3VzZWROb2RlLmZvY3VzZWQpIHtcbiAgICAgIGxldCBub2RlID0gdGhpcy5zZWxlY3RlZE5vZGVzWzBdIHx8IHRoaXMudmlzaWJsZU5vZGVzWzBdO1xuICAgICAgdGhpcy51cGRhdGVGb2N1cyhub2RlKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1c291dCcpXG4gIG9uRm9jdXNPdXQoKSB7XG4gICAgdGhpcy51cGRhdGVGb2N1cygpO1xuICB9XG5cbiAgb25Gb2N1cyhldnQpIHtcbiAgfVxuXG4gIG9uQmx1cihldnQpIHtcbiAgfVxuXG4gIG9uVG9nZ2xlKGV2dCkge1xuXG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgb25LZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnQXJyb3dVcCc6IHtcbiAgICAgICAgdGhpcy5mb2N1c05vZGUoZmFsc2UpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0Fycm93RG93bic6IHtcbiAgICAgICAgdGhpcy5mb2N1c05vZGUodHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6IHtcbiAgICAgICAgdGhpcy50b2dnbGVFeHBhbmRlZCh0aGlzLmZvY3VzZWROb2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdBcnJvd0xlZnQnOiB7XG4gICAgICAgIHRoaXMudG9nZ2xlRXhwYW5kZWQodGhpcy5mb2N1c2VkTm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSB0aGlzLnNlbGVjdGlvbktleToge1xuICAgICAgICAvLyB0b2dnbGUgc2VsZWN0aW9uIG9mIHRoZSBmb2N1c2VkIG5vZGVcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZE5vZGUuc2VsZWN0YWJsZSkge1xuICAgICAgICAgIC8vIHRoaXMuZm9jdXNlZE5vZGUuc2VsZWN0ZWQgPSAhdGhpcy5mb2N1c2VkTm9kZS5zZWxlY3RlZDtcbiAgICAgICAgICB0aGlzLm9uTm9kZVNlbGVjdGVkKHRoaXMuZm9jdXNlZE5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChbJ0Fycm93VXAnLCAnQXJyb3dEb3duJywgJ0Fycm93UmlnaHQnLCAnQXJyb3dMZWZ0J10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG5cbiAgd3JpdGVWYWx1ZShzZWxlY3RlZE5vZGVzOiBUcmVlTm9kZVtdKTogdm9pZCB7XG4gICAgbGV0IF9zZWxlY3RlZE5vZGVzID0gIXNlbGVjdGVkTm9kZXMgfHwgQXJyYXkuaXNBcnJheShzZWxlY3RlZE5vZGVzKSA/IHNlbGVjdGVkTm9kZXMgfHwgW10gOiBbc2VsZWN0ZWROb2Rlc107XG5cbiAgICBpZiAodGhpcy5zZWxlY3RlZE5vZGVzLmxlbmd0aCAhPT0gX3NlbGVjdGVkTm9kZXMubGVuZ3RoIHx8IHRoaXMuc2VsZWN0ZWROb2Rlcy5zb21lKChuLCBpKSA9PiBuLmlkICE9PSBfc2VsZWN0ZWROb2Rlc1tpXS5pZCkpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IF9zZWxlY3RlZE5vZGVzO1xuICAgICAgdGhpcy51cGRhdGVUcmVlKHRoaXMudHJlZSk7XG4gICAgfVxuXG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICB9XG5cbiAgb25Ob2RlU2VsZWN0ZWQobm9kZSkge1xuICAgIC8vIGlmIHRoZSBzZWxlY3RlZCBub2RlIGlzbid0IGFsbG93ZWQgdG8gYmUgc2VsZWN0ZWQsIHdlJ2xsIGluc3RlYWQgdHJ5IHRvXG4gICAgLy8gdG9nZ2xlIGV4cGFuZGVkIGZsYWcgZm9yIHBhcmVudCBub2Rlc1xuXG4gICAgdGhpcy51cGRhdGVGb2N1cyhub2RlLCB0aGlzLmZvY3VzZWROb2RlKTtcblxuICAgIGlmICghbm9kZS5zZWxlY3RhYmxlKSB7XG4gICAgICB0aGlzLnRvZ2dsZUV4cGFuZGVkKG5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBub2RlLnNlbGVjdGVkID0gIW5vZGUuc2VsZWN0ZWQ7XG4gICAgICBpZiAobm9kZS5zZWxlY3RlZCkge1xuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5tdWx0aXNlbGVjdCAmJiB0aGlzLnNlbGVjdGVkTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzWzBdLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzLnB1c2gobm9kZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5kaXNhYmxlRGVzZWxlY3Rpb24pIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSB0aGlzLnNlbGVjdGVkTm9kZXMuZmlsdGVyKFxuICAgICAgICAgICAgbiA9PiBuLmlkICE9PSBub2RlLmlkXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBub2RlLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5vcHRpb25zLm11bHRpc2VsZWN0ID8gdGhpcy5zZWxlY3RlZE5vZGVzIDogdGhpcy5zZWxlY3RlZE5vZGVzWzBdKTtcbiAgICB9XG4gIH1cblxuXG4gIHB1YmxpYyBvbk5vZGVFeHBhbmRlZChub2RlOiBUcmVlTm9kZSkge1xuICAgIHRoaXMuY29sbGVjdFZpc2libGVOb2Rlcyhub2RlKTtcbiAgICB0aGlzLmV4cGFuZGVkTm9kZXNDaGFuZ2VkLmVtaXQodGhpcy5fZXhwYW5kZWROb2Rlcyk7XG4gIH1cblxuXG4gIHB1YmxpYyB0b2dnbGVFeHBhbmRlZChub2RlOiBUcmVlTm9kZSkge1xuICAgIGlmIChub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBub2RlLmV4cGFuZGVkID0gIW5vZGUuZXhwYW5kZWQ7XG4gICAgICB0aGlzLm9uTm9kZUV4cGFuZGVkKG5vZGUpO1xuICAgIH1cbiAgfVxuXG5cbiAgLy8gVXBkYXRlIHRoZSB0cmVlIGFjY29yZGluZyB0byB0aGUgc2VsZWN0ZWQgbm9kZXNcbiAgcHJpdmF0ZSB1cGRhdGVUcmVlKHRyZWU/OiBhbnkpIHtcbiAgICBpZiAodHJlZSB8fCB0aGlzLnRyZWUpIHtcbiAgICAgIHRoaXMudHJlZSA9ICh0cmVlIHx8IHRoaXMudHJlZSkubWFwKG5vZGUgPT4gdGhpcy51cGRhdGVUcmVlTm9kZShub2RlLCBbXSkpO1xuICAgICAgdGhpcy5jb2xsZWN0VmlzaWJsZU5vZGVzKCk7XG4gICAgfVxuICB9XG5cblxuICAvLyBSZWN1cnNpdmUgZnVuY3Rpb24gd2Fsa2luZyB0aGUgdHJlZSBub2RlcyBhbmQgc2V0dGluZyB0aGUgbm9kZXMgYHNlbGVjdGVkYCBmbGFnc1xuICBwcml2YXRlIHVwZGF0ZVRyZWVOb2RlKG5vZGU6IFRyZWVOb2RlLCBwYXJlbnRzOiBUcmVlTm9kZVtdKSB7XG4gICAgbm9kZS5zZWxlY3RlZCA9ICEhdGhpcy5zZWxlY3RlZE5vZGVzLmZpbmQobiA9PiBub2RlLmlkID09PSBuLmlkKTtcbiAgICBub2RlLmV4cGFuZGVkID0gdGhpcy5fZXhwYW5kZWROb2Rlcy5sZW5ndGggPyAhIXRoaXMuX2V4cGFuZGVkTm9kZXMuZmluZChpZCA9PiBpZCA9PT0gbm9kZS5pZCkgOiBub2RlLmV4cGFuZGVkO1xuICAgIG5vZGUuaGlnaGxpZ2h0ZWQgPSAhIXRoaXMuX2hpZ2hsaWdodGVkTm9kZXMuZmluZChpZCA9PiBpZCA9PT0gbm9kZS5pZCk7XG4gICAgbm9kZS5mb2N1c2VkID0gdGhpcy5mb2N1c2VkTm9kZSAmJiB0aGlzLmZvY3VzZWROb2RlLmlkID09PSBub2RlLmlkID8gdGhpcy5mb2N1c2VkTm9kZS5mb2N1c2VkIDogZmFsc2U7XG4gICAgLy8gbm9kZS5sZXZlbCA9IHBhcmVudHMubGVuZ3RoO1xuXG4gICAgLy8gZXhwYW5kIGFsbCBwYXJlbnQgbm9kZXMgYXMgd2VsbFxuICAgIGlmIChub2RlLnNlbGVjdGVkICYmIHBhcmVudHMubGVuZ3RoKSB7XG4gICAgICBwYXJlbnRzLmZvckVhY2gocCA9PiAocC5leHBhbmRlZCA9IHRydWUpKTtcbiAgICB9XG4gICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIG5vZGUuY2hpbGRyZW4uZm9yRWFjaChuID0+IHRoaXMudXBkYXRlVHJlZU5vZGUobiwgcGFyZW50cy5jb25jYXQoW25vZGVdKSkpXG4gICAgfVxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgLy8gQ29sbGVjdCBhbGwgdmlzaWJsZSBub2RlcyBpbiB0aGUgcmlnaHQgb3JkZXIgdG8gYmUgdXNlZCB0byBmZXRjaCB0aGUgcHJldmlvdXMgb3JcbiAgLy8gbmV4dCBub2RlIHVzaW5nIGtleWJvYXJkIG5hdmlnYXRpb24uXG4gIHByaXZhdGUgY29sbGVjdFZpc2libGVOb2Rlcyhub2RlPzogVHJlZU5vZGUpIHtcbiAgICB0aGlzLnZpc2libGVOb2RlcyA9IHRoaXMuY29sbGVjdFZpc2libGVDaGlsZHJlbih0aGlzLnRyZWUpO1xuICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IHRoaXMudmlzaWJsZU5vZGVzLmZpbHRlcihuID0+IG4uc2VsZWN0ZWQpO1xuICB9XG5cbiAgLy8gcmVjdXJzaXZlIHBhcnQgb2YgY29sbGVjdENoaWxkTm9kZXMoKVxuICBwcml2YXRlIGNvbGxlY3RWaXNpYmxlQ2hpbGRyZW4obm9kZXM6IFRyZWVOb2RlW10gPSBbXSkge1xuICAgIGxldCBmbGF0ID0gW107XG4gICAgdGhpcy5fZXhwYW5kZWROb2RlcyA9IFtdO1xuICAgIG5vZGVzLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICBmbGF0LnB1c2gobm9kZSk7XG4gICAgICBpZiAobm9kZS5leHBhbmRlZCkge1xuICAgICAgICB0aGlzLl9leHBhbmRlZE5vZGVzLnB1c2gobm9kZS5pZCk7XG4gICAgICAgIGZsYXQgPSBmbGF0LmNvbmNhdCh0aGlzLmNvbGxlY3RWaXNpYmxlQ2hpbGRyZW4obm9kZS5jaGlsZHJlbikpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmbGF0O1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVGb2N1cyhub2RlPzogVHJlZU5vZGUsIG9sZD86IFRyZWVOb2RlKSB7XG4gICAgaWYgKG9sZCkge1xuICAgICAgaWYgKG5vZGUgIT09IG9sZCkge1xuICAgICAgICBvbGQuZm9jdXNlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZpc2libGVOb2Rlcy5mb3JFYWNoKG4gPT4gKG4uZm9jdXNlZCA9IGZhbHNlKSk7XG4gICAgfVxuICAgIGlmIChub2RlKSB7XG4gICAgICBub2RlLmZvY3VzZWQgPSB0cnVlO1xuICAgICAgdGhpcy5mb2N1c2VkTm9kZSA9IG5vZGU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c05vZGUobmV4dD86IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy52aXNpYmxlTm9kZXMubGVuZ3RoKSB7XG4gICAgICBsZXQgaW5kZXggPSAwLCBzaGlmdCA9IG5leHQgPyAxIDogLTE7XG4gICAgICBjb25zdCBub2RlID0gdGhpcy52aXNpYmxlTm9kZXMuZmluZCgobiwgaSkgPT4ge1xuICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgIHJldHVybiBuLmZvY3VzZWQ7XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgbmV4dElkeCA9IG5vZGUgPyBpbmRleCArIHNoaWZ0IDogMDtcbiAgICAgIGNvbnN0IGlkeCA9IG5leHRJZHggPj0gdGhpcy52aXNpYmxlTm9kZXMubGVuZ3RoID8gMCA6IChuZXh0SWR4IDwgMCA/IHRoaXMudmlzaWJsZU5vZGVzLmxlbmd0aCAtIDEgOiBuZXh0SWR4KTtcbiAgICAgIHRoaXMudXBkYXRlRm9jdXModGhpcy52aXNpYmxlTm9kZXNbaWR4XSwgbm9kZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
233
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay90cmVlL3RyZWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osV0FBVyxFQUFFLFVBQVUsRUFDeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF1QixpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBMEN2RSxNQUFNLE9BQU8sYUFBYTtJQXdCeEIsWUFBbUIsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQXRCWCxjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBRXBDLG1CQUFjLEdBQWEsRUFBRSxDQUFDO1FBQzlCLHNCQUFpQixHQUFhLEVBQUUsQ0FBQztRQUNqQyxrQkFBYSxHQUFVLEVBQUUsQ0FBQztRQUMxQixpQkFBWSxHQUFVLEVBQUUsQ0FBQztRQUt4QixZQUFPLEdBQWdCLEVBQUUsQ0FBQztRQUkxQixpQkFBWSxHQUFHLEdBQUcsQ0FBQyxDQUFDLG1CQUFtQjtRQUVoRCxxRkFBcUY7UUFDM0UseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVwRCxvQkFBZSxHQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUU7UUFDN0IsQ0FBQyxDQUFDO0lBR0YsQ0FBQztJQUVELFFBQVE7SUFDUixDQUFDO0lBRUQsSUFDSSxnQkFBZ0IsQ0FBQyxLQUFlO1FBQ2xDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxJQUFJ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Q0gsQ0FBQzs7O1lBcFFGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsU0FBUztnQkFDbkIsbWlCQUFvQztnQkFFcEMsU0FBUyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDO3dCQUM1QyxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTs7YUFDdEM7OztZQTNDYyxVQUFVOzs7d0JBOEN0QixXQUFXLFNBQUMsZUFBZTtzQkFVM0IsS0FBSzswQkFDTCxLQUFLO3VCQUNMLEtBQUs7MkJBRUwsS0FBSzttQ0FHTCxNQUFNOytCQVdOLEtBQUssU0FBQyxrQkFBa0I7d0JBTXhCLEtBQUssU0FBQyxNQUFNO3lCQVNaLEtBQUssU0FBQyxZQUFZO3dCQVFsQixZQUFZLFNBQUMsU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDO3lCQVF6QyxZQUFZLFNBQUMsVUFBVTtvQkFldkIsWUFBWSxTQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSG9zdExpc3RlbmVyLFxuICBmb3J3YXJkUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZywgRWxlbWVudFJlZiwgT25Jbml0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuZXhwb3J0IGludGVyZmFjZSBUcmVlTm9kZSB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgY2hpbGRyZW46IFRyZWVOb2RlW107XG4gIHBhdGg/OiBzdHJpbmdbXTtcbiAgZXhwYW5kZWQ6IGJvb2xlYW47XG4gIHNlbGVjdGFibGU6IGJvb2xlYW47XG4gIHNlbGVjdGVkOiBib29sZWFuO1xuICBpc1JlZmVyZW5jZT86IGJvb2xlYW47XG4gIGhpZ2hsaWdodGVkPzogYm9vbGVhbjtcbiAgZm9jdXNlZD86IGJvb2xlYW47XG4gIC8qKiBiYWRnZSB0byBiZSBhZGRlZCB0byBhIHRyZWUgbm9kZSAqL1xuICBiYWRnZXM/OiBUcmVlTm9kZUJhZGdlW107XG4gIGRhdGE/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJlZU5vZGVCYWRnZSB7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGNzc0NsYXNzPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyZWVPcHRpb25zIHtcbiAgLyoqIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdGhlIHVzZXIgY2FuIHNlbGVjdCBqdXN0IG9uZSBvciBtdWx0aXBsZSB2YWx1ZXMgZnJvbSB0aGUgdHJlZSAqL1xuICBtdWx0aXNlbGVjdD86IGJvb2xlYW47XG4gIGRpc2FibGVEZXNlbGVjdGlvbj86IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLXRyZWUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdHJlZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RyZWUuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUcmVlQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFRyZWVDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0IHtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKSBfdGFiSW5kZXggPSAwO1xuXG4gIHByaXZhdGUgX2V4cGFuZGVkTm9kZXM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgX2hpZ2hsaWdodGVkTm9kZXM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgc2VsZWN0ZWROb2RlczogYW55W10gPSBbXTtcbiAgcHJpdmF0ZSB2aXNpYmxlTm9kZXM6IGFueVtdID0gW107XG4gIHByaXZhdGUgZm9jdXNlZE5vZGU6IFRyZWVOb2RlO1xuXG4gIHRyZWU6IFRyZWVOb2RlW107XG5cbiAgQElucHV0KCkgb3B0aW9uczogVHJlZU9wdGlvbnMgPSB7fTtcbiAgQElucHV0KCkgaXNEaXNwbGF5ZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIHNlbGVjdGlvbktleSA9ICcgJzsgLy8gZGVmYXVsdCBpcyBTcGFjZVxuXG4gIC8vIHRoZSBub2RlcyB0aGF0IGFyZSBzZWxlY3RlZC4gSW4gY2FzZSBvZiBgbXVsdGlzZWxlY3RgIHNldCB0byB0cnVlLCB0aGlzIHdpbGwgYmUgYW5cbiAgQE91dHB1dCgpIGV4cGFuZGVkTm9kZXNDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHtcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gIH1cblxuICBASW5wdXQoJ2hpZ2hsaWdodGVkTm9kZXMnKVxuICBzZXQgaGlnaGxpZ2h0ZWROb2Rlcyhub2Rlczogc3RyaW5nW10pIHtcbiAgICB0aGlzLl9oaWdobGlnaHRlZE5vZGVzID0gbm9kZXMgfHwgW107XG4gICAgdGhpcy52aXNpYmxlTm9kZXMuZm9yRWFjaChuID0+IChuLmhpZ2hsaWdodGVkID0gISF0aGlzLl9oaWdobGlnaHRlZE5vZGVzLmZpbmQoaWQgPT4gaWQgPT09IG4uaWQpKSk7XG4gIH1cblxuICBASW5wdXQoJ3RyZWUnKVxuICBzZXQgdHJlZUlucHV0KHRyZWU6IFRyZWVOb2RlW10pIHtcbiAgICAvLyB0aGlzLnRyZWUgPSB0cmVlO1xuICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IFtdO1xuICAgIHRoaXMuX2V4cGFuZGVkTm9kZXMgPSBbXTtcbiAgICB0aGlzLmZvY3VzZWROb2RlID0gbnVsbDtcbiAgICB0aGlzLnVwZGF0ZVRyZWUodHJlZSk7XG4gIH1cblxuICBASW5wdXQoJ3RyZWVVcGRhdGUnKVxuICBzZXQgdHJlZVVwZGF0ZSh0cmVlOiBUcmVlTm9kZVtdKSB7XG4gICAgaWYgKHRyZWUpIHtcbiAgICAgIHRoaXMudXBkYXRlVHJlZSh0cmVlKTtcbiAgICB9XG4gIH1cblxuXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzaW4nLCBbJyRldmVudC50YXJnZXQnXSlcbiAgb25Gb2N1c0luKHRhcmdldDogYW55KSB7XG4gICAgaWYgKCF0aGlzLmZvY3VzZWROb2RlIHx8ICF0aGlzLmZvY3VzZWROb2RlLmZvY3VzZWQpIHtcbiAgICAgIGxldCBub2RlID0gdGhpcy5zZWxlY3RlZE5vZGVzWzBdIHx8IHRoaXMudmlzaWJsZU5vZGVzWzBdO1xuICAgICAgdGhpcy51cGRhdGVGb2N1cyhub2RlKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1c291dCcpXG4gIG9uRm9jdXNPdXQoKSB7XG4gICAgdGhpcy51cGRhdGVGb2N1cygpO1xuICB9XG5cbiAgb25Gb2N1cyhldnQpIHtcbiAgfVxuXG4gIG9uQmx1cihldnQpIHtcbiAgfVxuXG4gIG9uVG9nZ2xlKGV2dCkge1xuXG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgb25LZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnQXJyb3dVcCc6IHtcbiAgICAgICAgdGhpcy5mb2N1c05vZGUoZmFsc2UpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0Fycm93RG93bic6IHtcbiAgICAgICAgdGhpcy5mb2N1c05vZGUodHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6IHtcbiAgICAgICAgdGhpcy50b2dnbGVFeHBhbmRlZCh0aGlzLmZvY3VzZWROb2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdBcnJvd0xlZnQnOiB7XG4gICAgICAgIHRoaXMudG9nZ2xlRXhwYW5kZWQodGhpcy5mb2N1c2VkTm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSB0aGlzLnNlbGVjdGlvbktleToge1xuICAgICAgICAvLyB0b2dnbGUgc2VsZWN0aW9uIG9mIHRoZSBmb2N1c2VkIG5vZGVcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZE5vZGUuc2VsZWN0YWJsZSkge1xuICAgICAgICAgIC8vIHRoaXMuZm9jdXNlZE5vZGUuc2VsZWN0ZWQgPSAhdGhpcy5mb2N1c2VkTm9kZS5zZWxlY3RlZDtcbiAgICAgICAgICB0aGlzLm9uTm9kZVNlbGVjdGVkKHRoaXMuZm9jdXNlZE5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChbJ0Fycm93VXAnLCAnQXJyb3dEb3duJywgJ0Fycm93UmlnaHQnLCAnQXJyb3dMZWZ0J10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG5cbiAgd3JpdGVWYWx1ZShzZWxlY3RlZE5vZGVzOiBUcmVlTm9kZVtdKTogdm9pZCB7XG4gICAgbGV0IF9zZWxlY3RlZE5vZGVzID0gIXNlbGVjdGVkTm9kZXMgfHwgQXJyYXkuaXNBcnJheShzZWxlY3RlZE5vZGVzKSA/IHNlbGVjdGVkTm9kZXMgfHwgW10gOiBbc2VsZWN0ZWROb2Rlc107XG5cbiAgICBpZiAodGhpcy5zZWxlY3RlZE5vZGVzLmxlbmd0aCAhPT0gX3NlbGVjdGVkTm9kZXMubGVuZ3RoIHx8IHRoaXMuc2VsZWN0ZWROb2Rlcy5zb21lKChuLCBpKSA9PiBuLmlkICE9PSBfc2VsZWN0ZWROb2Rlc1tpXS5pZCkpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IF9zZWxlY3RlZE5vZGVzO1xuICAgICAgdGhpcy51cGRhdGVUcmVlKHRoaXMudHJlZSk7XG4gICAgfVxuXG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICB9XG5cbiAgb25Ob2RlU2VsZWN0ZWQobm9kZSkge1xuICAgIC8vIGlmIHRoZSBzZWxlY3RlZCBub2RlIGlzbid0IGFsbG93ZWQgdG8gYmUgc2VsZWN0ZWQsIHdlJ2xsIGluc3RlYWQgdHJ5IHRvXG4gICAgLy8gdG9nZ2xlIGV4cGFuZGVkIGZsYWcgZm9yIHBhcmVudCBub2Rlc1xuXG4gICAgdGhpcy51cGRhdGVGb2N1cyhub2RlLCB0aGlzLmZvY3VzZWROb2RlKTtcblxuICAgIGlmICghbm9kZS5zZWxlY3RhYmxlKSB7XG4gICAgICB0aGlzLnRvZ2dsZUV4cGFuZGVkKG5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBub2RlLnNlbGVjdGVkID0gIW5vZGUuc2VsZWN0ZWQ7XG4gICAgICBpZiAobm9kZS5zZWxlY3RlZCkge1xuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5tdWx0aXNlbGVjdCAmJiB0aGlzLnNlbGVjdGVkTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzWzBdLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzLnB1c2gobm9kZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5kaXNhYmxlRGVzZWxlY3Rpb24pIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSB0aGlzLnNlbGVjdGVkTm9kZXMuZmlsdGVyKFxuICAgICAgICAgICAgbiA9PiBuLmlkICE9PSBub2RlLmlkXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBub2RlLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5vcHRpb25zLm11bHRpc2VsZWN0ID8gdGhpcy5zZWxlY3RlZE5vZGVzIDogdGhpcy5zZWxlY3RlZE5vZGVzWzBdKTtcbiAgICB9XG4gIH1cblxuXG4gIHB1YmxpYyBvbk5vZGVFeHBhbmRlZChub2RlOiBUcmVlTm9kZSkge1xuICAgIHRoaXMuY29sbGVjdFZpc2libGVOb2Rlcyhub2RlKTtcbiAgICB0aGlzLmV4cGFuZGVkTm9kZXNDaGFuZ2VkLmVtaXQodGhpcy5fZXhwYW5kZWROb2Rlcyk7XG4gIH1cblxuXG4gIHB1YmxpYyB0b2dnbGVFeHBhbmRlZChub2RlOiBUcmVlTm9kZSkge1xuICAgIGlmIChub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBub2RlLmV4cGFuZGVkID0gIW5vZGUuZXhwYW5kZWQ7XG4gICAgICB0aGlzLm9uTm9kZUV4cGFuZGVkKG5vZGUpO1xuICAgIH1cbiAgfVxuXG5cbiAgLy8gVXBkYXRlIHRoZSB0cmVlIGFjY29yZGluZyB0byB0aGUgc2VsZWN0ZWQgbm9kZXNcbiAgcHJpdmF0ZSB1cGRhdGVUcmVlKHRyZWU/OiBhbnkpIHtcbiAgICBpZiAodHJlZSB8fCB0aGlzLnRyZWUpIHtcbiAgICAgIHRoaXMudHJlZSA9ICh0cmVlIHx8IHRoaXMudHJlZSkubWFwKG5vZGUgPT4gdGhpcy51cGRhdGVUcmVlTm9kZShub2RlLCBbXSkpO1xuICAgICAgdGhpcy5jb2xsZWN0VmlzaWJsZU5vZGVzKCk7XG4gICAgfVxuICB9XG5cblxuICAvLyBSZWN1cnNpdmUgZnVuY3Rpb24gd2Fsa2luZyB0aGUgdHJlZSBub2RlcyBhbmQgc2V0dGluZyB0aGUgbm9kZXMgYHNlbGVjdGVkYCBmbGFnc1xuICBwcml2YXRlIHVwZGF0ZVRyZWVOb2RlKG5vZGU6IFRyZWVOb2RlLCBwYXJlbnRzOiBUcmVlTm9kZVtdKSB7XG4gICAgbm9kZS5zZWxlY3RlZCA9ICEhdGhpcy5zZWxlY3RlZE5vZGVzLmZpbmQobiA9PiBub2RlLmlkID09PSBuLnZhbHVlKTtcbiAgICBub2RlLmV4cGFuZGVkID0gdGhpcy5fZXhwYW5kZWROb2Rlcy5sZW5ndGggPyAhIXRoaXMuX2V4cGFuZGVkTm9kZXMuZmluZChpZCA9PiBpZCA9PT0gbm9kZS5pZCkgOiBub2RlLmV4cGFuZGVkO1xuICAgIG5vZGUuaGlnaGxpZ2h0ZWQgPSAhIXRoaXMuX2hpZ2hsaWdodGVkTm9kZXMuZmluZChpZCA9PiBpZCA9PT0gbm9kZS5pZCk7XG4gICAgbm9kZS5mb2N1c2VkID0gdGhpcy5mb2N1c2VkTm9kZSAmJiB0aGlzLmZvY3VzZWROb2RlLmlkID09PSBub2RlLmlkID8gdGhpcy5mb2N1c2VkTm9kZS5mb2N1c2VkIDogZmFsc2U7XG4gICAgLy8gbm9kZS5sZXZlbCA9IHBhcmVudHMubGVuZ3RoO1xuXG4gICAgLy8gZXhwYW5kIGFsbCBwYXJlbnQgbm9kZXMgYXMgd2VsbFxuICAgIGlmIChub2RlLnNlbGVjdGVkICYmIHBhcmVudHMubGVuZ3RoKSB7XG4gICAgICBwYXJlbnRzLmZvckVhY2gocCA9PiAocC5leHBhbmRlZCA9IHRydWUpKTtcbiAgICB9XG4gICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIG5vZGUuY2hpbGRyZW4uZm9yRWFjaChuID0+IHRoaXMudXBkYXRlVHJlZU5vZGUobiwgcGFyZW50cy5jb25jYXQoW25vZGVdKSkpXG4gICAgfVxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgLy8gQ29sbGVjdCBhbGwgdmlzaWJsZSBub2RlcyBpbiB0aGUgcmlnaHQgb3JkZXIgdG8gYmUgdXNlZCB0byBmZXRjaCB0aGUgcHJldmlvdXMgb3JcbiAgLy8gbmV4dCBub2RlIHVzaW5nIGtleWJvYXJkIG5hdmlnYXRpb24uXG4gIHByaXZhdGUgY29sbGVjdFZpc2libGVOb2Rlcyhub2RlPzogVHJlZU5vZGUpIHtcbiAgICB0aGlzLnZpc2libGVOb2RlcyA9IHRoaXMuY29sbGVjdFZpc2libGVDaGlsZHJlbih0aGlzLnRyZWUpO1xuICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IHRoaXMudmlzaWJsZU5vZGVzLmZpbHRlcihuID0+IG4uc2VsZWN0ZWQpO1xuICB9XG5cbiAgLy8gcmVjdXJzaXZlIHBhcnQgb2YgY29sbGVjdENoaWxkTm9kZXMoKVxuICBwcml2YXRlIGNvbGxlY3RWaXNpYmxlQ2hpbGRyZW4obm9kZXM6IFRyZWVOb2RlW10gPSBbXSkge1xuICAgIGxldCBmbGF0ID0gW107XG4gICAgdGhpcy5fZXhwYW5kZWROb2RlcyA9IFtdO1xuICAgIG5vZGVzLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICBmbGF0LnB1c2gobm9kZSk7XG4gICAgICBpZiAobm9kZS5leHBhbmRlZCkge1xuICAgICAgICB0aGlzLl9leHBhbmRlZE5vZGVzLnB1c2gobm9kZS5pZCk7XG4gICAgICAgIGZsYXQgPSBmbGF0LmNvbmNhdCh0aGlzLmNvbGxlY3RWaXNpYmxlQ2hpbGRyZW4obm9kZS5jaGlsZHJlbikpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmbGF0O1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVGb2N1cyhub2RlPzogVHJlZU5vZGUsIG9sZD86IFRyZWVOb2RlKSB7XG4gICAgaWYgKG9sZCkge1xuICAgICAgaWYgKG5vZGUgIT09IG9sZCkge1xuICAgICAgICBvbGQuZm9jdXNlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZpc2libGVOb2Rlcy5mb3JFYWNoKG4gPT4gKG4uZm9jdXNlZCA9IGZhbHNlKSk7XG4gICAgfVxuICAgIGlmIChub2RlKSB7XG4gICAgICBub2RlLmZvY3VzZWQgPSB0cnVlO1xuICAgICAgdGhpcy5mb2N1c2VkTm9kZSA9IG5vZGU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c05vZGUobmV4dD86IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy52aXNpYmxlTm9kZXMubGVuZ3RoKSB7XG4gICAgICBsZXQgaW5kZXggPSAwLCBzaGlmdCA9IG5leHQgPyAxIDogLTE7XG4gICAgICBjb25zdCBub2RlID0gdGhpcy52aXNpYmxlTm9kZXMuZmluZCgobiwgaSkgPT4ge1xuICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgIHJldHVybiBuLmZvY3VzZWQ7XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgbmV4dElkeCA9IG5vZGUgPyBpbmRleCArIHNoaWZ0IDogMDtcbiAgICAgIGNvbnN0IGlkeCA9IG5leHRJZHggPj0gdGhpcy52aXNpYmxlTm9kZXMubGVuZ3RoID8gMCA6IChuZXh0SWR4IDwgMCA/IHRoaXMudmlzaWJsZU5vZGVzLmxlbmd0aCAtIDEgOiBuZXh0SWR4KTtcbiAgICAgIHRoaXMudXBkYXRlRm9jdXModGhpcy52aXNpYmxlTm9kZXNbaWR4XSwgbm9kZSk7XG4gICAgfVxuICB9XG59XG4iXX0=