@sumaris-net/ngx-components 18.16.8 → 18.17.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 (53) hide show
  1. package/doc/changelog.md +4 -0
  2. package/esm2022/public_api.mjs +4 -4
  3. package/esm2022/src/app/admin/users/person.filter.mjs +76 -0
  4. package/esm2022/src/app/admin/users/person.service.mjs +197 -0
  5. package/esm2022/src/app/admin/users/person.validator.mjs +72 -0
  6. package/esm2022/src/app/admin/users/users.mjs +4 -4
  7. package/esm2022/src/app/core/about/about.modal.mjs +5 -5
  8. package/esm2022/src/app/core/home/home.mjs +3 -3
  9. package/esm2022/src/app/core/services/account.service.mjs +8 -2
  10. package/esm2022/src/app/core/services/network.service.mjs +5 -2
  11. package/esm2022/src/app/core/services/validator/account.validator.mjs +2 -2
  12. package/esm2022/src/app/shared/validator/validators.mjs +3 -3
  13. package/esm2022/src/app/social/feed/feed.component.mjs +117 -30
  14. package/esm2022/src/app/social/feed/feed.model.mjs +1 -1
  15. package/esm2022/src/app/social/feed/feed.page.mjs +3 -3
  16. package/esm2022/src/app/social/feed/feed.service.mjs +63 -12
  17. package/esm2022/src/app/social/feed/testing/feed.testing.mjs +3 -3
  18. package/esm2022/src/app/social/message/message.form.mjs +8 -5
  19. package/esm2022/src/app/social/message/message.modal.mjs +10 -4
  20. package/esm2022/src/app/social/message/message.model.mjs +2 -2
  21. package/esm2022/src/app/social/message/message.module.mjs +5 -4
  22. package/esm2022/src/app/social/message/message.service.mjs +81 -1
  23. package/esm2022/src/app/social/social.errors.mjs +2 -1
  24. package/esm2022/src/environments/environment.mjs +7 -4
  25. package/fesm2022/sumaris-net.ngx-components.mjs +1301 -1060
  26. package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
  27. package/package.json +1 -1
  28. package/public_api.d.ts +3 -3
  29. package/src/app/admin/{services/filter → users}/person.filter.d.ts +4 -4
  30. package/src/app/admin/{services → users}/person.service.d.ts +2 -1
  31. package/src/app/admin/{services/validator → users}/person.validator.d.ts +4 -4
  32. package/src/app/admin/users/users.d.ts +2 -2
  33. package/src/app/core/services/account.service.d.ts +2 -0
  34. package/src/app/core/services/network.service.d.ts +3 -2
  35. package/src/app/core/services/validator/account.validator.d.ts +1 -1
  36. package/src/app/social/feed/feed.component.d.ts +36 -14
  37. package/src/app/social/feed/feed.model.d.ts +3 -2
  38. package/src/app/social/feed/feed.service.d.ts +35 -24
  39. package/src/app/social/message/message.form.d.ts +3 -3
  40. package/src/app/social/message/message.modal.d.ts +6 -2
  41. package/src/app/social/message/message.model.d.ts +1 -1
  42. package/src/app/social/message/message.module.d.ts +2 -1
  43. package/src/app/social/message/message.service.d.ts +12 -0
  44. package/src/app/social/social.errors.d.ts +1 -0
  45. package/src/assets/i18n/en-US.json +7 -3
  46. package/src/assets/i18n/en.json +5 -2
  47. package/src/assets/i18n/fr.json +5 -2
  48. package/src/assets/manifest.json +1 -1
  49. package/src/theme/_ngx-components.forms.scss +1 -0
  50. package/src/theme/_ngx-components.table.scss +1 -0
  51. package/esm2022/src/app/admin/services/filter/person.filter.mjs +0 -76
  52. package/esm2022/src/app/admin/services/person.service.mjs +0 -184
  53. package/esm2022/src/app/admin/services/validator/person.validator.mjs +0 -72
@@ -0,0 +1,72 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Validators } from '@angular/forms';
3
+ import { PersonUtils } from '../../core/services/model/person.model';
4
+ import { SharedValidators } from '../../shared/validator/validators';
5
+ import { StatusIds } from '../../core/services/model/model.enum';
6
+ import { AppValidatorService } from '../../core/services/validator/base.validator.class';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/forms";
9
+ import * as i2 from "@ngx-translate/core";
10
+ import * as i3 from "../../core/services/account.service";
11
+ export class PersonValidatorService extends AppValidatorService {
12
+ accountService;
13
+ constructor(formBuilder, translate, accountService) {
14
+ super(formBuilder, translate);
15
+ this.accountService = accountService;
16
+ }
17
+ getFormGroupConfig(data, opts) {
18
+ opts = this.fillDefaultOptions(opts);
19
+ const formConfig = {
20
+ id: [''],
21
+ updateDate: [''],
22
+ creationDate: [''],
23
+ lastName: [data?.lastName || null, Validators.compose([Validators.required, Validators.minLength(2)])],
24
+ firstName: [data?.firstName || null, Validators.compose([Validators.required, Validators.minLength(2)])],
25
+ email: [data?.email || null, Validators.compose([Validators.required, Validators.email])],
26
+ mainProfile: [data?.mainProfile || PersonUtils.getMainProfile(data?.profiles) || 'GUEST', Validators.required],
27
+ statusId: [data?.statusId || StatusIds.TEMPORARY, Validators.required],
28
+ pubkey: [data?.pubkey || null, Validators.compose([Validators.required, SharedValidators.pubkey])],
29
+ };
30
+ if (opts.withAvatar) {
31
+ formConfig.avatar = [(data && data.avatar) || null];
32
+ }
33
+ if (opts.withUsername) {
34
+ formConfig.username = [(data && data.username) || null, Validators.minLength(2)];
35
+ }
36
+ if (opts.withUsernameExtranet) {
37
+ formConfig.usernameExtranet = [(data && data.usernameExtranet) || null, Validators.minLength(2)];
38
+ }
39
+ // Add additional fields
40
+ this.accountService.additionalFields.forEach((field) => {
41
+ //console.debug("[register-form] Add additional field {" + field.name + "} to form", field);
42
+ formConfig[field.key] = [(data && data[field.key]) || null, this.getValidators(field)];
43
+ });
44
+ return formConfig;
45
+ }
46
+ getValidators(field) {
47
+ const validatorFns = [];
48
+ if (field.extra && field.extra.account && field.extra.account.required) {
49
+ validatorFns.push(Validators.required);
50
+ }
51
+ if (field.type === 'entity') {
52
+ validatorFns.push(SharedValidators.entity);
53
+ }
54
+ return validatorFns.length ? Validators.compose(validatorFns) : validatorFns.length === 1 ? validatorFns[0] : undefined;
55
+ }
56
+ /* -- protected methods -- */
57
+ fillDefaultOptions(opts) {
58
+ return {
59
+ withAvatar: true,
60
+ withUsername: true,
61
+ withUsernameExtranet: true,
62
+ ...opts,
63
+ };
64
+ }
65
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PersonValidatorService, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.TranslateService }, { token: i3.AccountService }], target: i0.ɵɵFactoryTarget.Injectable });
66
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PersonValidatorService, providedIn: 'root' });
67
+ }
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PersonValidatorService, decorators: [{
69
+ type: Injectable,
70
+ args: [{ providedIn: 'root' }]
71
+ }], ctorParameters: () => [{ type: i1.UntypedFormBuilder }, { type: i2.TranslateService }, { type: i3.AccountService }] });
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc29uLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvYWRtaW4vdXNlcnMvcGVyc29uLnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBbUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFVLFdBQVcsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUdqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7Ozs7QUFVekYsTUFBTSxPQUFPLHNCQUE2RyxTQUFRLG1CQUdqSTtJQUlhO0lBSFosWUFDRSxXQUErQixFQUMvQixTQUEyQixFQUNqQixjQUE4QjtRQUV4QyxLQUFLLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRnBCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtJQUcxQyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsSUFBUSxFQUFFLElBQVE7UUFDbkMsSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyQyxNQUFNLFVBQVUsR0FBNkI7WUFDM0MsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ1IsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2hCLFlBQVksRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNsQixRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxJQUFJLElBQUksRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FB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QUMsWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzFILENBQUM7SUFFRCw2QkFBNkI7SUFFbkIsa0JBQWtCLENBQUMsSUFBUTtRQUNuQyxPQUFPO1lBQ0wsVUFBVSxFQUFFLElBQUk7WUFDaEIsWUFBWSxFQUFFLElBQUk7WUFDbEIsb0JBQW9CLEVBQUUsSUFBSTtZQUMxQixHQUFHLElBQUk7U0FDUixDQUFDO0lBQ0osQ0FBQzt3R0FuRVUsc0JBQXNCOzRHQUF0QixzQkFBc0IsY0FEVCxNQUFNOzs0RkFDbkIsc0JBQXNCO2tCQURsQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBQZXJzb24sIFBlcnNvblV0aWxzIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9tb2RlbC9wZXJzb24ubW9kZWwnO1xuaW1wb3J0IHsgU2hhcmVkVmFsaWRhdG9ycyB9IGZyb20gJy4uLy4uL3NoYXJlZC92YWxpZGF0b3IvdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBTdGF0dXNJZHMgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL21vZGVsL21vZGVsLmVudW0nO1xuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2FjY291bnQuc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtRmllbGREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Zvcm0vZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgQXBwVmFsaWRhdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvdmFsaWRhdG9yL2Jhc2UudmFsaWRhdG9yLmNsYXNzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBQZXJzb25WYWxpZGF0b3JPcHRpb25zIHtcbiAgd2l0aEF2YXRhcj86IGJvb2xlYW47XG4gIHdpdGhVc2VybmFtZT86IGJvb2xlYW47XG4gIHdpdGhVc2VybmFtZUV4dHJhbmV0PzogYm9vbGVhbjtcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBQZXJzb25WYWxpZGF0b3JTZXJ2aWNlPFQgZXh0ZW5kcyBQZXJzb24gPSBQZXJzb24sIE8gZXh0ZW5kcyBQZXJzb25WYWxpZGF0b3JPcHRpb25zID0gUGVyc29uVmFsaWRhdG9yT3B0aW9ucz4gZXh0ZW5kcyBBcHBWYWxpZGF0b3JTZXJ2aWNlPFxuICBULFxuICBPXG4+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFjY291bnRTZXJ2aWNlOiBBY2NvdW50U2VydmljZVxuICApIHtcbiAgICBzdXBlcihmb3JtQnVpbGRlciwgdHJhbnNsYXRlKTtcbiAgfVxuXG4gIGdldEZvcm1Hcm91cENvbmZpZyhkYXRhPzogVCwgb3B0cz86IE8pOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICBvcHRzID0gdGhpcy5maWxsRGVmYXVsdE9wdGlvbnMob3B0cyk7XG5cbiAgICBjb25zdCBmb3JtQ29uZmlnOiB7IFtrZXk6IHN0cmluZ106IGFueVtdIH0gPSB7XG4gICAgICBpZDogWycnXSxcbiAgICAgIHVwZGF0ZURhdGU6IFsnJ10sXG4gICAgICBjcmVhdGlvbkRhdGU6IFsnJ10sXG4gICAgICBsYXN0TmFtZTogW2RhdGE/Lmxhc3ROYW1lIHx8IG51bGwsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMildKV0sXG4gICAgICBmaXJzdE5hbWU6IFtkYXRhPy5maXJzdE5hbWUgfHwgbnVsbCwgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgyKV0pXSxcbiAgICAgIGVtYWlsOiBbZGF0YT8uZW1haWwgfHwgbnVsbCwgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXSldLFxuICAgICAgbWFpblByb2ZpbGU6IFtkYXRhPy5tYWluUHJvZmlsZSB8fCBQZXJzb25VdGlscy5nZXRNYWluUHJvZmlsZShkYXRhPy5wcm9maWxlcykgfHwgJ0dVRVNUJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBzdGF0dXNJZDogW2RhdGE/LnN0YXR1c0lkIHx8IFN0YXR1c0lkcy5URU1QT1JBUlksIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgcHVia2V5OiBbZGF0YT8ucHVia2V5IHx8IG51bGwsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZCwgU2hhcmVkVmFsaWRhdG9ycy5wdWJrZXldKV0sXG4gICAgfTtcblxuICAgIGlmIChvcHRzLndpdGhBdmF0YXIpIHtcbiAgICAgIGZvcm1Db25maWcuYXZhdGFyID0gWyhkYXRhICYmIGRhdGEuYXZhdGFyKSB8fCBudWxsXTtcbiAgICB9XG4gICAgaWYgKG9wdHMud2l0aFVzZXJuYW1lKSB7XG4gICAgICBmb3JtQ29uZmlnLnVzZXJuYW1lID0gWyhkYXRhICYmIGRhdGEudXNlcm5hbWUpIHx8IG51bGwsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDIpXTtcbiAgICB9XG4gICAgaWYgKG9wdHMud2l0aFVzZXJuYW1lRXh0cmFuZXQpIHtcbiAgICAgIGZvcm1Db25maWcudXNlcm5hbWVFeHRyYW5ldCA9IFsoZGF0YSAmJiBkYXRhLnVzZXJuYW1lRXh0cmFuZXQpIHx8IG51bGwsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDIpXTtcbiAgICB9XG5cbiAgICAvLyBBZGQgYWRkaXRpb25hbCBmaWVsZHNcbiAgICB0aGlzLmFjY291bnRTZXJ2aWNlLmFkZGl0aW9uYWxGaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgIC8vY29uc29sZS5kZWJ1ZyhcIltyZWdpc3Rlci1mb3JtXSBBZGQgYWRkaXRpb25hbCBmaWVsZCB7XCIgKyBmaWVsZC5uYW1lICsgXCJ9IHRvIGZvcm1cIiwgZmllbGQpO1xuICAgICAgZm9ybUNvbmZpZ1tmaWVsZC5rZXldID0gWyhkYXRhICYmIGRhdGFbZmllbGQua2V5XSkgfHwgbnVsbCwgdGhpcy5nZXRWYWxpZGF0b3JzKGZpZWxkKV07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZm9ybUNvbmZpZztcbiAgfVxuXG4gIGdldFZhbGlkYXRvcnMoZmllbGQ6IEZvcm1GaWVsZERlZmluaXRpb24pOiBWYWxpZGF0b3JGbiB8IFZhbGlkYXRvckZuW10ge1xuICAgIGNvbnN0IHZhbGlkYXRvckZuczogVmFsaWRhdG9yRm5bXSA9IFtdO1xuICAgIGlmIChmaWVsZC5leHRyYSAmJiBmaWVsZC5leHRyYS5hY2NvdW50ICYmIGZpZWxkLmV4dHJhLmFjY291bnQucmVxdWlyZWQpIHtcbiAgICAgIHZhbGlkYXRvckZucy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgIH1cbiAgICBpZiAoZmllbGQudHlwZSA9PT0gJ2VudGl0eScpIHtcbiAgICAgIHZhbGlkYXRvckZucy5wdXNoKFNoYXJlZFZhbGlkYXRvcnMuZW50aXR5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdG9yRm5zLmxlbmd0aCA/IFZhbGlkYXRvcnMuY29tcG9zZSh2YWxpZGF0b3JGbnMpIDogdmFsaWRhdG9yRm5zLmxlbmd0aCA9PT0gMSA/IHZhbGlkYXRvckZuc1swXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2RzIC0tICovXG5cbiAgcHJvdGVjdGVkIGZpbGxEZWZhdWx0T3B0aW9ucyhvcHRzPzogTyk6IE8ge1xuICAgIHJldHVybiB7XG4gICAgICB3aXRoQXZhdGFyOiB0cnVlLFxuICAgICAgd2l0aFVzZXJuYW1lOiB0cnVlLFxuICAgICAgd2l0aFVzZXJuYW1lRXh0cmFuZXQ6IHRydWUsXG4gICAgICAuLi5vcHRzLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import { booleanAttribute, ChangeDetectionStrategy, Component, Inject, Input, ViewChild } from '@angular/core';
2
2
  import { Person, PRIORITIZED_AUTHORITIES } from '../../core/services/model/person.model';
3
3
  import { StatusById, StatusList } from '../../core/services/model/referential.model';
4
- import { PersonValidatorService } from '../services/validator/person.validator';
4
+ import { PersonValidatorService } from './person.validator';
5
5
  import { AppTable } from '../../core/table/table.class';
6
6
  import { ValidatorService } from '@e-is/ngx-material-table';
7
7
  import { FormFieldDefinitionUtils } from '../../shared/form/field.model';
@@ -9,7 +9,7 @@ import { debounceTime, distinctUntilKeyChanged, filter, tap } from 'rxjs/operato
9
9
  import { EntitiesTableDataSource } from '../../core/table/entities-table-datasource.class';
10
10
  import { getPropertyByPath, isNilOrBlank, isNotNil, isNotNilOrBlank, toBoolean } from '../../shared/functions';
11
11
  import { ENVIRONMENT } from '../../../environments/environment.class';
12
- import { PersonFilter } from '../services/filter/person.filter';
12
+ import { PersonFilter } from './person.filter';
13
13
  import { CORE_CONFIG_OPTIONS } from '../../core/services/config/core.config';
14
14
  import { MatExpansionPanel } from '@angular/material/expansion';
15
15
  import { slideUpDownAnimation } from '../../shared/material/material.animations';
@@ -22,7 +22,7 @@ import * as i1 from "@angular/forms";
22
22
  import * as i2 from "../../core/services/account.service";
23
23
  import * as i3 from "@e-is/ngx-material-table";
24
24
  import * as i4 from "../../core/services/config.service";
25
- import * as i5 from "../services/person.service";
25
+ import * as i5 from "./person.service";
26
26
  import * as i6 from "../../social/message/message.service";
27
27
  import * as i7 from "../../core/menu/menu.service";
28
28
  import * as i8 from "ngx-jdenticon";
@@ -376,4 +376,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
376
376
  type: ViewChild,
377
377
  args: [MatExpansionPanel, { static: true }]
378
378
  }] } });
379
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2FkbWluL3VzZXJzL3VzZXJzLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9hZG1pbi91c2Vycy91c2Vycy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFZLEtBQUssRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakksT0FBTyxFQUFFLE1BQU0sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFckYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFHaEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBdUIsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RixPQUFPLEVBQUUsWUFBWSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0csT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztB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K0NBQ2hCLGdCQUFnQixnQkFwQ3pCLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFLENBQUMsZ0ZBbUhwRSxpQkFBaUIscUZDbEo5Qix5c3VCQXFtQkEsMjlhRHJrQmMsQ0FBQyxvQkFBb0IsQ0FBQzs7NEZBR3ZCLFNBQVM7a0JBUnJCLFNBQVM7K0JBQ0UsaUJBQWlCLGFBR2hCLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFLENBQUMsY0FDbkUsQ0FBQyxvQkFBb0IsQ0FBQyxtQkFDakIsdUJBQXVCLENBQUMsTUFBTTs7MEJBNkM1QyxNQUFNOzJCQUFDLFdBQVc7eUNBZm1CLE9BQU87c0JBQTlDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsZUFBZTtzQkFBdEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxNQUFNO3NCQUE3QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLFNBQVM7c0JBQWhELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsV0FBVztzQkFBbEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkErRVUsb0JBQW9CO3NCQUFuRSxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJvb2xlYW5BdHRyaWJ1dGUsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdCwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGVyc29uLCBQUklPUklUSVpFRF9BVVRIT1JJVElFUyB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvbW9kZWwvcGVyc29uLm1vZGVsJztcbmltcG9ydCB7IFN0YXR1c0J5SWQsIFN0YXR1c0xpc3QgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL21vZGVsL3JlZmVyZW50aWFsLm1vZGVsJztcbmltcG9ydCB7IFBlcnNvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wZXJzb24uc2VydmljZSc7XG5pbXBvcnQgeyBQZXJzb25WYWxpZGF0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdmFsaWRhdG9yL3BlcnNvbi52YWxpZGF0b3InO1xuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2FjY291bnQuc2VydmljZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFwcFRhYmxlIH0gZnJvbSAnLi4vLi4vY29yZS90YWJsZS90YWJsZS5jbGFzcyc7XG5pbXBvcnQgeyBWYWxpZGF0b3JTZXJ2aWNlIH0gZnJvbSAnQGUtaXMvbmd4LW1hdGVyaWFsLXRhYmxlJztcbmltcG9ydCB7IEZvcm1GaWVsZERlZmluaXRpb24sIEZvcm1GaWVsZERlZmluaXRpb25VdGlscyB9IGZyb20gJy4uLy4uL3NoYXJlZC9mb3JtL2ZpZWxkLm1vZGVsJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbEtleUNoYW5nZWQsIGZpbHRlciwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRW50aXRpZXNUYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9jb3JlL3RhYmxlL2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2UuY2xhc3MnO1xuaW1wb3J0IHsgZ2V0UHJvcGVydHlCeVBhdGgsIGlzTmlsT3JCbGFuaywgaXNOb3ROaWwsIGlzTm90TmlsT3JCbGFuaywgdG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBFTlZJUk9OTUVOVCB9IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQgeyBQZXJzb25GaWx0ZXIgfSBmcm9tICcuLi9zZXJ2aWNlcy9maWx0ZXIvcGVyc29uLmZpbHRlcic7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBDT1JFX0NPTkZJR19PUFRJT05TIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9jb25maWcvY29yZS5jb25maWcnO1xuaW1wb3J0IHsgQXV0aFRva2VuVHlwZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvbmV0d29yay50eXBlcyc7XG5pbXBvcnQgeyBNYXRFeHBhbnNpb25QYW5lbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvbic7XG5pbXBvcnQgeyBzbGlkZVVwRG93bkFuaW1hdGlvbiB9IGZyb20gJy4uLy4uL3NoYXJlZC9tYXRlcmlhbC9tYXRlcmlhbC5hbmltYXRpb25zJztcbmltcG9ydCB7IE1lc3NhZ2UgfSBmcm9tICcuLi8uLi9zb2NpYWwvbWVzc2FnZS9tZXNzYWdlLm1vZGVsJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc29jaWFsL21lc3NhZ2UvbWVzc2FnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJFU0VSVkVEX0VORF9DT0xVTU5TLCBSRVNFUlZFRF9TVEFSVF9DT0xVTU5TLCBUQUJMRV9TRVRUSU5HU19FTlVNIH0gZnJvbSAnLi4vLi4vY29yZS90YWJsZS90YWJsZS5tb2RlbCc7XG5pbXBvcnQgeyBNZW51U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvbWVudS9tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3N2VXRpbHMgfSBmcm9tICcuLi8uLi9zaGFyZWQvZmlsZS9jc3YudXRpbHMnO1xuaW1wb3J0IHsgZnJvbURhdGVJU09TdHJpbmcgfSBmcm9tICcuLi8uLi9zaGFyZWQvZGF0ZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdXNlcnMtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJ3VzZXJzLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi91c2Vycy5zY3NzJ10sXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogVmFsaWRhdG9yU2VydmljZSwgdXNlRXhpc3Rpbmc6IFBlcnNvblZhbGlkYXRvclNlcnZpY2UgfV0sXG4gIGFuaW1hdGlvbnM6IFtzbGlkZVVwRG93bkFuaW1hdGlvbl0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBVc2Vyc1BhZ2UgZXh0ZW5kcyBBcHBUYWJsZTxQZXJzb24sIFBlcnNvbkZpbHRlcj4gaW1wbGVtZW50cyBPbkluaXQge1xuICByZWFkb25seSBjYW5FZGl0OiBib29sZWFuO1xuICByZWFkb25seSBjYW5TZW5kTWVzc2FnZTogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZmlsdGVyRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbiAgcmVhZG9ubHkgcHJvZmlsZXMgPSBbLi4uUFJJT1JJVElaRURfQVVUSE9SSVRJRVNdLnJldmVyc2UoKTtcbiAgcmVhZG9ubHkgc3RhdHVzTGlzdCA9IFN0YXR1c0xpc3Q7XG4gIHJlYWRvbmx5IHN0YXR1c0J5SWQgPSBTdGF0dXNCeUlkO1xuXG4gIHByb3RlY3RlZCBhZGRpdGlvbmFsRmllbGRzOiBGb3JtRmllbGREZWZpbml0aW9uW107XG4gIHByb3RlY3RlZCBmaWx0ZXJDcml0ZXJpYUNvdW50ID0gMDtcbiAgcHJvdGVjdGVkIGRlZmF1bHRDb21wYWN0ID0gZmFsc2U7XG5cbiAgc2V0IHNob3dVc2VybmFtZUNvbHVtbih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0U2hvd0NvbHVtbigndXNlcm5hbWUnLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgc2hvd1VzZXJuYW1lQ29sdW1uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldFNob3dDb2x1bW4oJ3VzZXJuYW1lJyk7XG4gIH1cblxuICBzZXQgc2hvd1VzZXJuYW1lRXh0cmFuZXRDb2x1bW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldFNob3dDb2x1bW4oJ3VzZXJuYW1lRXh0cmFuZXQnLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgc2hvd1VzZXJuYW1lRXh0cmFuZXRDb2x1bW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U2hvd0NvbHVtbigndXNlcm5hbWVFeHRyYW5ldCcpO1xuICB9XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGNvbXBhY3Q6IGJvb2xlYW4gPSBudWxsO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgdXNlUGFnZVNldHRpbmdzID0gdHJ1ZTtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHN0aWNreSA9IGZhbHNlO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc3RpY2t5RW5kID0gZmFsc2U7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBjYW5Eb3dubG9hZCA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgcHJvdGVjdGVkIGFjY291bnRTZXJ2aWNlOiBBY2NvdW50U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgdmFsaWRhdG9yU2VydmljZTogVmFsaWRhdG9yU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZGF0YVNlcnZpY2U6IFBlcnNvblNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbWVudVNlcnZpY2U6IE1lbnVTZXJ2aWNlLFxuICAgIEBJbmplY3QoRU5WSVJPTk1FTlQpIGVudmlyb25tZW50XG4gICkge1xuICAgIHN1cGVyKFxuICAgICAgaW5qZWN0b3IsXG4gICAgICBSRVNFUlZFRF9TVEFSVF9DT0xVTU5TLmNvbmNhdChbJ2F2YXRhcicsICdsYXN0TmFtZScsICdmaXJzdE5hbWUnLCAnZW1haWwnLCAncHJvZmlsZScsICdzdGF0dXMnLCAndXNlcm5hbWUnLCAndXNlcm5hbWVFeHRyYW5ldCcsICdwdWJrZXknXSlcbiAgICAgICAgLmNvbmNhdChhY2NvdW50U2VydmljZS5hZGRpdGlvbmFsRmllbGRzLm1hcCgoZmllbGQpID0+IGZpZWxkLmtleSkpXG4gICAgICAgIC5jb25jYXQoWydjcmVhdGlvbkRhdGUnLCAndXBkYXRlRGF0ZSddKVxuICAgICAgICAuY29uY2F0KFJFU0VSVkVEX0VORF9DT0xVTU5TKSxcbiAgICAgIG5ldyBFbnRpdGllc1RhYmxlRGF0YVNvdXJjZShQZXJzb24sIGRhdGFTZXJ2aWNlLCB2YWxpZGF0b3JTZXJ2aWNlLCB7XG4gICAgICAgIHByZXBlbmROZXdFbGVtZW50czogZmFsc2UsXG4gICAgICAgIHN1cHByZXNzRXJyb3JzOiBlbnZpcm9ubWVudC5wcm9kdWN0aW9uLFxuICAgICAgICBzYXZlT25seURpcnR5Um93czogdHJ1ZSxcbiAgICAgIH0pLFxuICAgICAgbnVsbFxuICAgICk7XG5cbiAgICB0aGlzLmNhbkVkaXQgPSBhY2NvdW50U2VydmljZS5pc0FkbWluKCk7XG4gICAgdGhpcy5jYW5TZW5kTWVzc2FnZSA9IHRoaXMuY2FuRWRpdDtcbiAgICB0aGlzLmlubGluZUVkaXRpb24gPSB0aGlzLmNhbkVkaXQ7XG4gICAgdGhpcy5jb25maXJtQmVmb3JlRGVsZXRlID0gdHJ1ZTtcbiAgICB0aGlzLmF1dG9Mb2FkID0gZmFsc2U7IC8vIFdhaXQgY29uZmlnIGxvYWRpbmdcbiAgICB0aGlzLmkxOG5Db2x1bW5QcmVmaXggPSAnVVNFUi4nO1xuICAgIHRoaXMuZGVmYXVsdFNvcnRCeSA9ICdsYXN0TmFtZSc7XG4gICAgdGhpcy5kZWZhdWx0U29ydERpcmVjdGlvbiA9ICdhc2MnO1xuXG4gICAgdGhpcy5maWx0ZXJGb3JtID0gZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgc2VhcmNoVGV4dDogW251bGxdLFxuICAgICAgc3RhdHVzSWQ6IFtudWxsXSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkaXRpb25hbEZpZWxkcyA9ICh0aGlzLmFjY291bnRTZXJ2aWNlLmFkZGl0aW9uYWxGaWVsZHMgfHwgW10pXG4gICAgICAuZmlsdGVyKChmaWVsZCkgPT4gaXNOb3ROaWwoZmllbGQuYXV0b2NvbXBsZXRlKSlcbiAgICAgIC5tYXAoKGZpZWxkKSA9PiB7XG4gICAgICAgIC8vIE1ha2Ugc3VyZSB0byBnZXQgdGhlIGZpbmFsIGF1dG9jb21wbGV0ZSBjb25maWcgKGUuZy4gd2l0aCBhIHN1Z2dlc3RGbiBmdW5jdGlvbilcbiAgICAgICAgZmllbGQuYXV0b2NvbXBsZXRlID0gdGhpcy5yZWdpc3RlckF1dG9jb21wbGV0ZUZpZWxkKGZpZWxkLmtleSwge1xuICAgICAgICAgIC4uLmZpZWxkLmF1dG9jb21wbGV0ZSwgLy8gQ29weSwgdG8gYmUgc3VyZSB0aGUgb3JpZ2luYWwgY29uZmlnIGlzIHVuY2hhbmdlZFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfSk7XG5cbiAgICAvLyBMaXN0ZW4gcGFnZSBhY3Rpb24gKGUuZy4gZnJvbSBzdWIgbWVudSBpdGVtKVxuICAgIHRoaXMucmVnaXN0ZXJTdWJzY3JpcHRpb24oXG4gICAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnBpcGUoZGlzdGluY3RVbnRpbEtleUNoYW5nZWQoJ2FjdGlvbicpKS5zdWJzY3JpYmUoKHF1ZXJ5UGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IHF1ZXJ5UGFyYW1zWydhY3Rpb24nXSB8fCAnbm9uZSc7XG4gICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICAgICAgY2FzZSAnc2VuZCc6XG4gICAgICAgICAgICB0aGlzLm9wZW5Db21wb3NlTWVzc2FnZU1vZGFsKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdub25lJzpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1t1c2Vyc10gVW5rbm93biBhY3Rpb249JyArIGFjdGlvbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAvLyBNYXJrIGFzIGNvbnN1bWVkXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLiddLCB7XG4gICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgICAgICBxdWVyeVBhcmFtczogeyAuLi5xdWVyeVBhcmFtcywgYWN0aW9uOiB1bmRlZmluZWQgfSxcbiAgICAgICAgICByZXBsYWNlVXJsOiB0cnVlLFxuICAgICAgICAgIHN0YXRlOiB7IGFuaW1hdGVkOiBmYWxzZSB9LFxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIC8vIEZvciBERVYgb25seSAtLVxuICAgIHRoaXMuZGVidWcgPSAhZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoTWF0RXhwYW5zaW9uUGFuZWwsIHsgc3RhdGljOiB0cnVlIH0pIGZpbHRlckV4cGFuc2lvblBhbmVsOiBNYXRFeHBhbnNpb25QYW5lbDtcblxuICBnZXQgZmlyc3RVc2VyQ29sdW1uKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY29sdW1uTmFtZSA9IHRoaXMuZGlzcGxheWVkQ29sdW1uc1tSRVNFUlZFRF9TVEFSVF9DT0xVTU5TLmxlbmd0aF07XG4gICAgLy8gU2tpcCBhdmF0YXIgY29sdW1uLCBpZiBwcmVzZW50XG4gICAgcmV0dXJuIChjb2x1bW5OYW1lID09PSAnYXZhdGFyJyAmJiB0aGlzLmRpc3BsYXllZENvbHVtbnNbUkVTRVJWRURfU1RBUlRfQ09MVU1OUy5sZW5ndGggKyAxXSkgfHwgY29sdW1uTmFtZTtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKFxuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5zdWJzY3JpYmUoKGNvbmZpZykgPT4ge1xuICAgICAgICBjb25zdCBhdXRoVG9rZW5UeXBlID0gY29uZmlnLmdldFByb3BlcnR5KENPUkVfQ09ORklHX09QVElPTlMuQVVUSF9UT0tFTl9UWVBFKSBhcyBBdXRoVG9rZW5UeXBlO1xuICAgICAgICBjb25zb2xlLmRlYnVnKCdbdXNlcnNdIEF1dGhUb2tlblR5cGU9JyArIGF1dGhUb2tlblR5cGUpO1xuICAgICAgICBzd2l0Y2ggKGF1dGhUb2tlblR5cGUpIHtcbiAgICAgICAgICBjYXNlICdiYXNpYyc6XG4gICAgICAgICAgICB0aGlzLnNldFNob3dDb2x1bW4oJ3B1YmtleScsIGZhbHNlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICB0aGlzLnNldFNob3dDb2x1bW4oJ3VzZXJuYW1lJywgdHJ1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgdGhpcy5zZXRTaG93Q29sdW1uKCd1c2VybmFtZUV4dHJhbmV0JywgdHJ1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnYmFzaWMtYW5kLXRva2VuJzpcbiAgICAgICAgICAgIHRoaXMuc2V0U2hvd0NvbHVtbigncHVia2V5JywgdHJ1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgdGhpcy5zZXRTaG93Q29sdW1uKCd1c2VybmFtZScsIHRydWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIHRoaXMuc2V0U2hvd0NvbHVtbigndXNlcm5hbWVFeHRyYW5ldCcsIHRydWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3Rva2VuJzpcbiAgICAgICAgICAgIHRoaXMuc2V0U2hvd0NvbHVtbigncHVia2V5JywgdHJ1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgdGhpcy5zZXRTaG93Q29sdW1uKCd1c2VybmFtZScsIGZhbHNlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICB0aGlzLnNldFNob3dDb2x1bW4oJ3VzZXJuYW1lRXh0cmFuZXQnLCBmYWxzZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlQ29sdW1ucygpO1xuICAgICAgICB0aGlzLmVtaXRSZWZyZXNoKCk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKFxuICAgICAgdGhpcy5vblJlZnJlc2guc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5maWx0ZXJGb3JtLm1hcmtBc1VudG91Y2hlZCgpO1xuICAgICAgICB0aGlzLmZpbHRlckZvcm0ubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIC8vIFVwZGF0ZSBmaWx0ZXIgd2hlbiBjaGFuZ2VzXG4gICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbihcbiAgICAgIHRoaXMuZmlsdGVyRm9ybS52YWx1ZUNoYW5nZXNcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZGVib3VuY2VUaW1lKDI1MCksXG4gICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuZmlsdGVyRm9ybS52YWxpZCksXG4gICAgICAgICAgdGFwKChqc29uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXIgPSBQZXJzb25GaWx0ZXIuZnJvbU9iamVjdChqc29uKTtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyQ3JpdGVyaWFDb3VudCA9IGZpbHRlci5jb3VudE5vdEVtcHR5Q3JpdGVyaWEoKTtcbiAgICAgICAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGZpbHRlciwgd2l0aG91dCByZWxvYWRpbmcgdGhlIGNvbnRlbnRcbiAgICAgICAgICAgIHRoaXMuc2V0RmlsdGVyKGZpbHRlciwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIC8vIFNhdmUgZmlsdGVyIGluIHNldHRpbmdzIChhZnRlciBhIGRlYm91bmNlIHRpbWUpXG4gICAgICAgICAgZGVib3VuY2VUaW1lKDUwMCksXG4gICAgICAgICAgZmlsdGVyKCgpID0+IGlzTm90TmlsT3JCbGFuayh0aGlzLnNldHRpbmdzSWQpICYmIHRoaXMudXNlUGFnZVNldHRpbmdzKSxcbiAgICAgICAgICB0YXAoKGpzb24pID0+IHRoaXMuc2V0dGluZ3Muc2F2ZVBhZ2VTZXR0aW5nKHRoaXMuc2V0dGluZ3NJZCwganNvbiwgVEFCTEVfU0VUVElOR1NfRU5VTS5GSUxURVJfS0VZKSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKClcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuY2FuU2VuZE1lc3NhZ2UgJiYgdGhpcy5kZWJ1Zykge1xuICAgICAgYXdhaXQgdGhpcy5tZW51U2VydmljZS5hZGRTdWJNZW51SXRlbXMoXG4gICAgICAgIFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwYXJlbnRQYXRoOiAnL2FkbWluL3VzZXJzJyxcbiAgICAgICAgICAgIHBhdGg6ICcvYWRtaW4vdXNlcnMnLFxuICAgICAgICAgICAgcGF0aFBhcmFtczogeyBhY3Rpb246ICdleHBhbmQnIH0sXG4gICAgICAgICAgICBtYXRJY29uOiAnZXhwYW5kX21vcmUnLFxuICAgICAgICAgICAgdGl0bGU6ICdVU0VSLkxJU1QuQlROX0FDVElPTlMnLFxuICAgICAgICAgICAgYWN0aW9uOiAnZXhwYW5kJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBhcmVudFBhdGg6ICcvYWRtaW4vdXNlcnM/YWN0aW9uPWV4cGFuZCcsXG4gICAgICAgICAgICBwYXRoOiAnL2FkbWluL3VzZXJzP2FjdGlvbj1zZW5kJyxcbiAgICAgICAgICAgIGljb246ICdtYWlsJyxcbiAgICAgICAgICAgIHRpdGxlOiAnVVNFUi5MSVNULkJUTl9TRU5EX01FU1NBR0UnLFxuICAgICAgICAgICAgYWN0aW9uOiAoKSA9PiB0aGlzLm9wZW5Db21wb3NlTWVzc2FnZU1vZGFsKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgeyBza2lwSWZFeGlzdHM6IGZhbHNlIH1cbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gUmVzdG9yZSBjb21wYWN0IHJvd3NcbiAgICB0aGlzLnJlc3RvcmVDb21wYWN0TW9kZSgpO1xuXG4gICAgLy8gUmVzdG9yZSBmaWx0ZXIgZnJvbSBzZXR0aW5ncywgb3IgbG9hZCBhbGxcbiAgICB0aGlzLnJlc3RvcmVGaWx0ZXJPckxvYWQoKTtcbiAgfVxuXG4gIGFwcGx5RmlsdGVyQW5kQ2xvc2VQYW5lbChldmVudD86IEV2ZW50KSB7XG4gICAgdGhpcy5lbWl0UmVmcmVzaChldmVudCk7XG4gICAgdGhpcy5maWx0ZXJFeHBhbnNpb25QYW5lbC5jbG9zZSgpO1xuICB9XG5cbiAgcmVzZXRGaWx0ZXIoZXZlbnQ/OiBFdmVudCkge1xuICAgIHRoaXMudG90YWxSb3dDb3VudCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmZpbHRlckNyaXRlcmlhQ291bnQgPSAwO1xuICAgIHRoaXMubWFya0FzTG9hZGluZygpO1xuICAgIHRoaXMuZmlsdGVyRm9ybS5yZXNldCgpO1xuICAgIHRoaXMuc2V0RmlsdGVyKG51bGwpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHJlc3RvcmVGaWx0ZXJPckxvYWQoKSB7XG4gICAgdGhpcy5tYXJrQXNMb2FkaW5nKCk7XG5cbiAgICBjb25zb2xlLmRlYnVnKCdbdXNlcnNdIFJlc3RvcmluZyBmaWx0ZXIgZnJvbSBzZXR0aW5ncy4uLicpO1xuXG4gICAgY29uc3QganNvbiA9IHRoaXMuc2V0dGluZ3MuZ2V0UGFnZVNldHRpbmdzKHRoaXMuc2V0dGluZ3NJZCwgVEFCTEVfU0VUVElOR1NfRU5VTS5GSUxURVJfS0VZKSB8fCB7fTtcbiAgICBjb25zdCBmaWx0ZXIgPSBQZXJzb25GaWx0ZXIuZnJvbU9iamVjdChqc29uKTtcblxuICAgIHRoaXMuZmlsdGVyRm9ybS5wYXRjaFZhbHVlKGpzb24pO1xuICAgIHRoaXMuc2V0RmlsdGVyKGZpbHRlciwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XG4gIH1cblxuICBjbGVhckNvbnRyb2xWYWx1ZShldmVudDogRXZlbnQsIGZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBib29sZWFuIHtcbiAgICBpZiAoZXZlbnQpIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAvLyBBdm9pZCB0byBlbnRlciBpbnB1dCB0aGUgZmllbGRcbiAgICBmb3JtQ29udHJvbC5zZXRWYWx1ZShudWxsKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBhc3luYyBvcGVuQ29tcG9zZU1lc3NhZ2VNb2RhbChldmVudD86IEV2ZW50KTogUHJvbWlzZTxhbnk+IHtcbiAgICAvLyBDb21wdXRlIHJlY2lwaWVudHNcbiAgICBjb25zdCByZWNpcGllbnRzID0gKHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkIHx8IFtdKVxuICAgICAgLm1hcCgocm93KSA9PiByb3cuY3VycmVudERhdGEpXG4gICAgICAubWFwKFBlcnNvbi5mcm9tT2JqZWN0KVxuICAgICAgLm1hcCgocCkgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBwLmFzT2JqZWN0KHsgbWluaWZ5OiB0cnVlIH0pO1xuICAgICAgICB0YXJnZXQuZGVwYXJ0bWVudCA9IHAuZGVwYXJ0bWVudD8uYXNPYmplY3QoKTtcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgcmVjaXBpZW50RmlsdGVyID0gUGVyc29uRmlsdGVyLmZyb21PYmplY3QodGhpcy5maWx0ZXIpO1xuICAgIGNvbnN0IGNhblJlY2lwaWVudEZpbHRlciA9ICFyZWNpcGllbnRGaWx0ZXIuaXNFbXB0eSgpICYmICh0aGlzLmFjY291bnRTZXJ2aWNlLmlzQWRtaW4oKSB8fCB0aGlzLmFjY291bnRTZXJ2aWNlLmlzU3VwZXJ2aXNvcigpKTtcbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlU2VydmljZS5vcGVuQ29tcG9zZU1vZGFsKHtcbiAgICAgIHN1Z2dlc3RGbjogKHZhbHVlLCBmaWx0ZXIsIHNvcnRCeSwgc29ydERpcmVjdGlvbikgPT4gdGhpcy5kYXRhU2VydmljZS5zdWdnZXN0KHZhbHVlLCBmaWx0ZXIsIHNvcnRCeSwgc29ydERpcmVjdGlvbiksXG4gICAgICBjYW5SZWNpcGllbnRGaWx0ZXIsXG4gICAgICByZWNpcGllbnRGaWx0ZXJDb3VudDogdGhpcy50b3RhbFJvd0NvdW50LFxuICAgICAgZGF0YTogTWVzc2FnZS5mcm9tT2JqZWN0KHtcbiAgICAgICAgcmVjaXBpZW50cyxcbiAgICAgICAgcmVjaXBpZW50RmlsdGVyLFxuICAgICAgfSksXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyByZXN0b3JlQ29tcGFjdE1vZGUob3B0cz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgaWYgKCF0aGlzLnVzZVBhZ2VTZXR0aW5ncyB8fCBpc05pbE9yQmxhbmsodGhpcy5zZXR0aW5nc0lkKSB8fCBpc05vdE5pbCh0aGlzLmNvbXBhY3QpKSByZXR1cm47XG5cbiAgICBjb25zdCBjb21wYWN0ID0gdG9Cb29sZWFuKFxuICAgICAgdGhpcy5zZXR0aW5ncy5nZXRQYWdlU2V0dGluZ3ModGhpcy5zZXR0aW5nc0lkLCBUQUJMRV9TRVRUSU5HU19FTlVNLkNPTVBBQ1RfUk9XU19LRVkpLFxuICAgICAgdG9Cb29sZWFuKHRoaXMuY29tcGFjdCwgdGhpcy5kZWZhdWx0Q29tcGFjdClcbiAgICApO1xuICAgIGlmICh0aGlzLmNvbXBhY3QgIT09IGNvbXBhY3QpIHtcbiAgICAgIHRoaXMuY29tcGFjdCA9IGNvbXBhY3Q7XG5cbiAgICAgIC8vIEVtaXQgZXZlbnRcbiAgICAgIGlmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyB0b2dnbGVDb21wYWN0TW9kZSgpIHtcbiAgICB0aGlzLmNvbXBhY3QgPSAhdGhpcy5jb21wYWN0O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAcngtYW5ndWxhci9uby1leHBsaWNpdC1jaGFuZ2UtZGV0ZWN0aW9uLWFwaXNcbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIGlmICh0aGlzLnVzZVBhZ2VTZXR0aW5ncyAmJiBpc05vdE5pbE9yQmxhbmsodGhpcy5zZXR0aW5nc0lkKSkge1xuICAgICAgYXdhaXQgdGhpcy5zYXZlUGFnZVNldHRpbmdzKHRoaXMuY29tcGFjdCwgVEFCTEVfU0VUVElOR1NfRU5VTS5DT01QQUNUX1JPV1NfS0VZKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBleHBvcnRUb0NzdihldmVudDogRXZlbnQpIHtcbiAgICAvLyBQcmVwYXJlIENTViBvcHRpb25zXG4gICAgY29uc3Qgc2VwYXJhdG9yID0gQ3N2VXRpbHMuZ2V0TG9jYWxpemVkU2VwYXJhdG9yKHRoaXMudHJhbnNsYXRlKTtcbiAgICBjb25zdCBlbmNvZGluZyA9IENzdlV0aWxzLmdldExvY2FsaXplZEVuY29kaW5nKHRoaXMudHJhbnNsYXRlKTtcbiAgICBjb25zdCB0cmFuc2xhdGlvbnMgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFtcbiAgICAgICdDT01NT04uREFURV9USU1FX1BBVFRFUk4nLFxuICAgICAgJ1VTRVIuTElTVC5USVRMRScsXG4gICAgICAnVVNFUi5FTUFJTCcsXG4gICAgICAnVVNFUi5GSVJTVF9OQU1FJyxcbiAgICAgICdVU0VSLkxBU1RfTkFNRScsXG4gICAgICAnVVNFUi5VU0VSTkFNRScsXG4gICAgICAnVVNFUi5VU0VSTkFNRV9FWFRSQU5FVCcsXG4gICAgICAnVVNFUi5ERVBBUlRNRU5UX0xBQkVMJyxcbiAgICAgICdVU0VSLkRFUEFSVE1FTlRfTkFNRScsXG4gICAgICAnVVNFUi5QUk9GSUxFJyxcbiAgICAgICdVU0VSLlNUQVRVUycsXG4gICAgICAnVVNFUi5QVUJLRVknLFxuICAgICAgLi4uKHRoaXMuYWRkaXRpb25hbEZpZWxkcyB8fCBbXSkubWFwKChmaWVsZCkgPT4gZmllbGQubGFiZWwpLFxuICAgICAgJ1VTRVIuQ1JFQVRJT05fREFURScsXG4gICAgICAnVVNFUi5VUERBVEVfREFURScsXG4gICAgICAuLi50aGlzLnN0YXR1c0xpc3QubWFwKChzdGF0dXMpID0+IHN0YXR1cy5sYWJlbCksXG4gICAgXSk7XG4gICAgY29uc3QgZGF0ZVRpbWVQYXR0ZXJuID0gdHJhbnNsYXRpb25zWydDT01NT04uREFURV9USU1FX1BBVFRFUk4nXTtcbiAgICBjb25zdCBmaWxlbmFtZSA9IHRyYW5zbGF0aW9uc1snVVNFUi5MSVNULlRJVExFJ10gKyAnLmNzdic7XG4gICAgY29uc3QgaGVhZGVycyA9IFtcbiAgICAgIHRyYW5zbGF0aW9uc1snVVNFUi5FTUFJTCddLFxuICAgICAgdHJhbnNsYXRpb25zWydVU0VSLkZJUlNUX05BTUUnXSxcbiAgICAgIHRyYW5zbGF0aW9uc1snVVNFUi5MQVNUX05BTUUnXSxcbiAgICAgIC4uLih0aGlzLnNob3dVc2VybmFtZUNvbHVtbiA/IFt0cmFuc2xhdGlvbnNbJ1VTRVIuVVNFUk5BTUUnXV0gOiBbXSksXG4gICAgICAuLi4odGhpcy5zaG93VXNlcm5hbWVFeHRyYW5ldENvbHVtbiA/IFt0cmFuc2xhdGlvbnNbJ1VTRVIuVVNFUk5BTUVfRVhUUkFORVQnXV0gOiBbXSksXG4gICAgICB0cmFuc2xhdGlvbnNbJ1VTRVIuUFJPRklMRSddLFxuICAgICAgdHJhbnNsYXRpb25zWydVU0VSLlNUQVRVUyddLFxuICAgICAgdHJhbnNsYXRpb25zWydVU0VSLlBVQktFWSddLFxuICAgICAgLi4uKHRoaXMuYWRkaXRpb25hbEZpZWxkcyB8fCBbXSkubWFwKChmaWVsZCkgPT4gdHJhbnNsYXRpb25zW2ZpZWxkLmxhYmVsXSksXG4gICAgICB0cmFuc2xhdGlvbnNbJ1VTRVIuQ1JFQVRJT05fREFURSddLFxuICAgICAgdHJhbnNsYXRpb25zWydVU0VSLlVQREFURV9EQVRFJ10sXG4gICAgXTtcblxuICAgIGNvbnN0IGFkZGl0aW9uYWxGaWVsZHNGbnMgPSAodGhpcy5hZGRpdGlvbmFsRmllbGRzIHx8IFtdKS5tYXAoRm9ybUZpZWxkRGVmaW5pdGlvblV0aWxzLmdldERpc3BsYXlWYWx1ZUZuKTtcblxuICAgIGNvbnN0IHJvd3MgPSAodGhpcy5zZWxlY3Rpb24uaXNFbXB0eSgpID8gdGhpcy5kYXRhU291cmNlLmdldFJvd3MoKSA6IHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkKVxuICAgICAgLm1hcCgoZWxlbWVudCkgPT4gZWxlbWVudC5jdXJyZW50RGF0YSlcbiAgICAgIC5tYXAoKHBlcnNvbikgPT4ge1xuICAgICAgICBjb25zdCBzdGF0dXMgPSB0aGlzLnN0YXR1c0J5SWRbcGVyc29uLnN0YXR1c0lkXTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBwZXJzb24ubGFzdE5hbWUsXG4gICAgICAgICAgcGVyc29uLmZpcnN0TmFtZSxcbiAgICAgICAgICBwZXJzb24uZW1haWwsXG4gICAgICAgICAgLi4uKHRoaXMuc2hvd1VzZXJuYW1lQ29sdW1uID8gW3BlcnNvbi51c2VybmFtZV0gOiBbXSksXG4gICAgICAgICAgLi4uKHRoaXMuc2hvd1VzZXJuYW1lRXh0cmFuZXRDb2x1bW4gPyBbcGVyc29uLnVzZXJuYW1lRXh0cmFuZXRdIDogW10pLFxuICAgICAgICAgIHBlcnNvbi5tYWluUHJvZmlsZSxcbiAgICAgICAgICBzdGF0dXMgPyB0cmFuc2xhdGlvbnNbc3RhdHVzPy5sYWJlbF0gOiBudWxsLFxuICAgICAgICAgIHBlcnNvbi5wdWJrZXksXG4gICAgICAgICAgLi4uYWRkaXRpb25hbEZpZWxkc0Zucy5tYXAoKGRpc3BsYXlGbiwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZ2V0UHJvcGVydHlCeVBhdGgocGVyc29uLCB0aGlzLmFkZGl0aW9uYWxGaWVsZHNbaW5kZXhdLmtleSk7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKCdbdXNlcnNdIEFkZGl0aW9uYWwgZmllbGQgZGlzcGxheUZuJywgdmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIGRpc3BsYXlGbih2YWx1ZSk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgZnJvbURhdGVJU09TdHJpbmcocGVyc29uLmNyZWF0aW9uRGF0ZSkuZm9ybWF0KGRhdGVUaW1lUGF0dGVybiksXG4gICAgICAgICAgZnJvbURhdGVJU09TdHJpbmcocGVyc29uLnVwZGF0ZURhdGUpLmZvcm1hdChkYXRlVGltZVBhdHRlcm4pLFxuICAgICAgICBdO1xuICAgICAgfSk7XG5cbiAgICBDc3ZVdGlscy5leHBvcnRUb0ZpbGUocm93cywgeyBmaWxlbmFtZSwgaGVhZGVycywgc2VwYXJhdG9yLCBlbmNvZGluZyB9KTtcbiAgfVxufVxuIiwiPGFwcC10b29sYmFyXG4gIFt0aXRsZV09XCInVVNFUi5MSVNULlRJVExFJyB8IHRyYW5zbGF0ZVwiXG4gIGNvbG9yPVwicHJpbWFyeVwiXG4gIFtjYW5Hb0JhY2tdPVwiZmFsc2VcIlxuICBbaGFzVmFsaWRhdGVdPVwiKGxvYWRpbmdTdWJqZWN0IHwgYXN5bmMpICE9PSB0cnVlICYmIChkaXJ0eVN1YmplY3QgfCBhc3luYykgPT09IHRydWVcIlxuICAob25WYWxpZGF0ZSk9XCJzYXZlKClcIlxuPlxuICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgIDwhLS0gQ29tcG9zZSBtZXNzYWdlIC0tPlxuICAgIDxidXR0b25cbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgKm5nSWY9XCJjYW5TZW5kTWVzc2FnZVwiXG4gICAgICBbdGl0bGVdPVwiJ1VTRVIuTElTVC5CVE5fU0VORF9NRVNTQUdFJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAoY2xpY2spPVwib3BlbkNvbXBvc2VNZXNzYWdlTW9kYWwoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPGlvbi1pY29uIG5hbWU9XCJtYWlsXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICBAaWYgKHNlbGVjdGlvbiB8IGlzRW1wdHlTZWxlY3Rpb24pIHtcbiAgICAgIDwhLS0gQWRkIC0tPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCJjYW5FZGl0ICYmICFtb2JpbGVcIiBbdGl0bGVdPVwiJ0NPTU1PTi5CVE5fQUREJyB8IHRyYW5zbGF0ZVwiIChjbGljayk9XCJhZGRSb3coKVwiPlxuICAgICAgICA8bWF0LWljb24+YWRkPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8IS0tIFJlZnJlc2ggLS0+XG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cIiFtb2JpbGVcIiBbdGl0bGVdPVwiJ0NPTU1PTi5CVE5fUkVGUkVTSCcgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwiZW1pdFJlZnJlc2goKVwiPlxuICAgICAgICA8bWF0LWljb24+cmVmcmVzaDwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPCEtLSByZXNldCBmaWx0ZXIgLS0+XG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwicmVzZXRGaWx0ZXIoKVwiICpuZ0lmPVwiZmlsdGVyQ3JpdGVyaWFDb3VudFwiPlxuICAgICAgICA8bWF0LWljb24gY29sb3I9XCJhY2NlbnRcIj5maWx0ZXJfbGlzdF9hbHQ8L21hdC1pY29uPlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uLXNlY29uZGFyeVwiIHN0eWxlPVwibGVmdDogMTZweDsgdG9wOiA1cHg7IGZvbnQtd2VpZ2h0OiBib2xkXCI+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDwhLS0gc2hvdyBmaWx0ZXIgLS0+XG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZmlsdGVyRXhwYW5zaW9uUGFuZWwudG9nZ2xlKClcIj5cbiAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgKm5nSWY9XCJmaWx0ZXJDcml0ZXJpYUNvdW50OyBlbHNlIGVtcHR5RmlsdGVyXCJcbiAgICAgICAgICBbbWF0QmFkZ2VdPVwiZmlsdGVyQ3JpdGVyaWFDb3VudFwiXG4gICAgICAgICAgbWF0QmFkZ2VDb2xvcj1cImFjY2VudFwiXG4gICAgICAgICAgbWF0QmFkZ2VTaXplPVwic21hbGxcIlxuICAgICAgICAgIG1hdEJhZGdlUG9zaXRpb249XCJhYm92ZSBhZnRlclwiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJmYWxzZVwiXG4gICAgICAgID5cbiAgICAgICAgICBmaWx0ZXJfbGlzdF9hbHRcbiAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNlbXB0eUZpbHRlcj5cbiAgICAgICAgICA8bWF0LWljb24+ZmlsdGVyX2xpc3RfYWx0PC9tYXQtaWNvbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIH0gQGVsc2Uge1xuICAgICAgPCEtLSBkZWxldGUgLS0+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICBjbGFzcz1cImhpZGRlbi14cyBoaWRkZW4tc21cIlxuICAgICAgICBbdGl0bGVdPVwiJ0NPTU1PTi5CVE5fREVMRVRFJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIChjbGljayk9XCJkZWxldGVTZWxlY3Rpb24oJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtaWNvbj5kZWxldGU8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgfVxuXG4gICAgQGlmICghbW9iaWxlKSB7XG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbdGl0bGVdPVwiJ0NPTU1PTi5CVE5fT1BUSU9OUycgfCB0cmFuc2xhdGVcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwidG9vbGJhck9wdGlvbnNNZW51XCI+XG4gICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgfVxuICA8L2lvbi1idXR0b25zPlxuPC9hcHAtdG9vbGJhcj5cblxuPCEtLSBUb29sYmFyIG9wdGlvbiBtZW51IC0tPlxuPG1hdC1tZW51ICN0b29sYmFyT3B0aW9uc01lbnU9XCJtYXRNZW51XCIgeFBvc2l0aW9uPVwiYWZ0ZXJcIj5cbiAgPCEtLSBleHBvcnQgYnV0dG9uIC0tPlxuICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW2Rpc2FibGVkXT1cIiFjYW5Eb3dubG9hZFwiIChjbGljayk9XCJleHBvcnRUb0NzdigkZXZlbnQpXCI+XG4gICAgPG1hdC1pY29uPmRvd25sb2FkPC9tYXQtaWNvbj5cbiAgICA8aW9uLWxhYmVsIHRyYW5zbGF0ZT5GSUxFLkNTVi5CVE5fRE9XTkxPQURfSEVMUDwvaW9uLWxhYmVsPlxuICA8L2J1dHRvbj5cbjwvbWF0LW1lbnU+XG5cbjxpb24tY29udGVudCBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG4gIDwhLS0gZXJyb3IgLS0+XG4gIDxpb24taXRlbVxuICAgICpuZ0lmPVwiZXJyb3JTdWJqZWN0IHwgYXN5bmM7IGxldCBlcnJvclwiXG4gICAgbGluZXM9XCJub25lXCJcbiAgICBjbGFzcz1cImhpZGRlbi1zbSBoaWRkZW4teHMgaGlkZGVuLW1vYmlsZVwiXG4gICAgQHNsaWRlVXBEb3duQW5pbWF0aW9uXG4gID5cbiAgICA8aW9uLWljb24gY29sb3I9XCJkYW5nZXJcIiBzbG90PVwic3RhcnRcIiBuYW1lPVwiYWxlcnQtY2lyY2xlXCI+PC9pb24taWNvbj5cbiAgICA8aW9uLWxhYmVsIGNvbG9yPVwiZGFuZ2VyXCIgY2xhc3M9XCJlcnJvclwiIFtpbm5lckhUTUxdPVwiZXJyb3IgfCB0cmFuc2xhdGVcIj48L2lvbi1sYWJlbD5cbiAgPC9pb24taXRlbT5cblxuICA8IS0tIGRlYnVnIC0tPlxuICA8YXBwLWRlYnVnICpuZ0lmPVwiZGVidWdcIj5cbiAgICA8aW9uLWdyaWQgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiPlxuICAgICAgPGlvbi1yb3c+XG4gICAgICAgIDxpb24tY29sPlxuICAgICAgICAgIGZvY3VzQ29sdW1uOiB7eyBmb2N1c0NvbHVtbiB9fVxuICAgICAgICAgIDxiciAvPlxuICAgICAgICAgIGxvYWRpbmdTdWJqZWN0OiB7eyBsb2FkaW5nIH19XG4gICAgICAgICAgPGJyIC8+XG4gICAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDwvaW9uLXJvdz5cbiAgICA8L2lvbi1ncmlkPlxuICA8L2FwcC1kZWJ1Zz5cblxuICA8IS0tIHNlYXJjaCAtLT5cbiAgPG1hdC1leHBhbnNpb24tcGFuZWwgI2ZpbHRlckV4cGFuc2lvblBhbmVsIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmcgZmlsdGVyLXBhbmVsIGZpbHRlci1wYW5lbC1mbG9hdGluZ1wiPlxuICAgIDxmb3JtIGNsYXNzPVwiZm9ybS1jb250YWluZXIgaW9uLXBhZGRpbmdcIiBbZm9ybUdyb3VwXT1cImZpbHRlckZvcm1cIiAobmdTdWJtaXQpPVwiZW1pdFJlZnJlc2goKVwiPlxuICAgICAgPGlvbi1ncmlkPlxuICAgICAgICA8aW9uLXJvdz5cbiAgICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICAgIDwhLS0gc2VhcmNoIC0tPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ICdVU0VSLkxJU1QuRklMVEVSLlNFQVJDSCcgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cInNlYXJjaFRleHRcIiAvPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0U3VmZml4XG4gICAgICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyQ29udHJvbFZhbHVlKCRldmVudCwgZmlsdGVyRm9ybS5jb250cm9scy5zZWFyY2hUZXh0KVwiXG4gICAgICAgICAgICAgICAgW2hpZGRlbl09XCJmaWx0ZXJGb3JtLmNvbnRyb2xzLnNlYXJjaFRleHQuZGlzYWJsZWQgfHwgIWZpbHRlckZvcm0uY29udHJvbHMuc2VhcmNoVGV4dC52YWx1ZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPC9pb24tY29sPlxuXG4gICAgICAgICAgPGlvbi1jb2w+XG4gICAgICAgICAgICA8IS0tIHN0YXR1cyAtLT5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgPG1hdC1sYWJlbD57eyAnVVNFUi5TVEFUVVMnIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInN0YXR1c0lkXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIm51bGxcIj5cbiAgICAgICAgICAgICAgICAgIDxpPjxzcGFuIHRyYW5zbGF0ZT5DT01NT04uRU1QVFlfT1BUSU9OPC9zcGFuPjwvaT5cbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc3RhdHVzTGlzdFwiIFt2YWx1ZV09XCJpdGVtLmlkXCI+XG4gICAgICAgICAgICAgICAgICA8aW9uLWljb24gW25hbWVdPVwiaXRlbS5pY29uXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cblxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0U3VmZml4XG4gICAgICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyQ29udHJvbFZhbHVlKCRldmVudCwgZmlsdGVyRm9ybS5jb250cm9scy5zdGF0dXNJZClcIlxuICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiZmlsdGVyRm9ybS5jb250cm9scy5zdGF0dXNJZC5kaXNhYmxlZCB8fCAhZmlsdGVyRm9ybS5jb250cm9scy5zdGF0dXNJZC52YWx1ZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICA8L2lvbi1yb3c+XG4gICAgICA8L2lvbi1ncmlkPlxuICAgIDwvZm9ybT5cblxuICAgIDxtYXQtYWN0aW9uLXJvdz5cbiAgICAgIDwhLS0gQ291bnRlciAgLS0+XG4gICAgICA8aW9uLWxhYmVsXG4gICAgICAgIFtoaWRkZW5dPVwiKGxvYWRpbmdTdWJqZWN0IHwgYXN5bmMpID09PSB0cnVlIHx8IGZpbHRlckZvcm0uZGlydHlcIlxuICAgICAgICBbY29sb3JdPVwiZW1wdHkgJiYgJ2RhbmdlcidcIlxuICAgICAgICBjbGFzcz1cImlvbi1wYWRkaW5nXCJcbiAgICAgID5cbiAgICAgICAge3tcbiAgICAgICAgICAodG90YWxSb3dDb3VudCA/ICdDT01NT04uUkVTVUxUX0NPVU5UJyA6ICdDT01NT04uTk9fUkVTVUxUJylcbiAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgY291bnQ6ICh0b3RhbFJvd0NvdW50IHwgbnVtYmVyRm9ybWF0KSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICA8L2lvbi1sYWJlbD5cblxuICAgICAgPGRpdiBjbGFzcz1cInRvb2xiYXItc3BhY2VyXCI+PC9kaXY+XG5cbiAgICAgIDwhLS0gQ2xvc2UgcGFuZWwgLS0+XG4gICAgICA8aW9uLWJ1dHRvblxuICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgIGNvbG9yPVwiZGFya1wiXG4gICAgICAgIChjbGljayk9XCJmaWx0ZXJFeHBhbnNpb25QYW5lbC5jbG9zZSgpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdTdWJqZWN0IHwgYXN5bmNcIlxuICAgICAgPlxuICAgICAgICA8aW9uLXRleHQgdHJhbnNsYXRlPkNPTU1PTi5CVE5fQ0xPU0U8L2lvbi10ZXh0PlxuICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICA8IS0tIFNlYXJjaCBidXR0b24gLS0+XG4gICAgICA8aW9uLWJ1dHRvblxuICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgIFtjb2xvcl09XCJmaWx0ZXJGb3JtLmRpcnR5ID8gJ3RlcnRpYXJ5JyA6ICdkYXJrJ1wiXG4gICAgICAgIFtmaWxsXT1cImZpbHRlckZvcm0uZGlydHkgPyAnc29saWQnIDogJ2NsZWFyJ1wiXG4gICAgICAgIChjbGljayk9XCJhcHBseUZpbHRlckFuZENsb3NlUGFuZWwoJGV2ZW50KVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nU3ViamVjdCB8IGFzeW5jXCJcbiAgICAgID5cbiAgICAgICAgPGlvbi10ZXh0IHRyYW5zbGF0ZT5DT01NT04uQlROX0FQUExZPC9pb24tdGV4dD5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8L21hdC1hY3Rpb24tcm93PlxuICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG5cbiAgPCEtLSBlcnJvciAtLT5cbiAgPGlvbi1pdGVtICpuZ0lmPVwibW9iaWxlICYmIChlcnJvclN1YmplY3QgfCBhc3luYyk7IGxldCBlcnJvclwiIGxpbmVzPVwibm9uZVwiPlxuICAgIDxpb24taWNvbiBjb2xvcj1cImRhbmdlclwiIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJhbGVydC1jaXJjbGVcIj48L2lvbi1pY29uPlxuICAgIDxpb24tbGFiZWwgY29sb3I9XCJkYW5nZXJcIiBjbGFzcz1cImVycm9yXCIgW2lubmVySFRNTF09XCJlcnJvciB8IHRyYW5zbGF0ZVwiPjwvaW9uLWxhYmVsPlxuICA8L2lvbi1pdGVtPlxuXG4gIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb250YWluZXJcIj5cbiAgICA8dGFibGVcbiAgICAgICN0YWJsZVxuICAgICAgbWF0LXRhYmxlXG4gICAgICBtYXRTb3J0XG4gICAgICBbY2xhc3MuY29tcGFjdF09XCJjb21wYWN0XCJcbiAgICAgIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIlxuICAgICAgW21hdFNvcnRBY3RpdmVdPVwiZGVmYXVsdFNvcnRCeVwiXG4gICAgICBbbWF0U29ydERpcmVjdGlvbl09XCJkZWZhdWx0U29ydERpcmVjdGlvblwiXG4gICAgICBtYXRTb3J0RGlzYWJsZUNsZWFyXG4gICAgICBbdHJhY2tCeV09XCJ0cmFja0J5Rm5cIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic2VsZWN0XCIgW3N0aWNreV09XCJzdGlja3lcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBbY2xhc3MuY2RrLXZpc3VhbGx5LWhpZGRlbl09XCIhaW5saW5lRWRpdGlvblwiPlxuICAgICAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gbWFzdGVyVG9nZ2xlKCkgOiBudWxsXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cInRoaXMgfCBpc0FsbFNlbGVjdGVkXCJcbiAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInRoaXMgfCBpc05vdEFsbFNlbGVjdGVkXCJcbiAgICAgICAgICA+PC9tYXQtY2hlY2tib3g+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIiBbY2xhc3MuY2RrLXZpc3VhbGx5LWhpZGRlbl09XCIhaW5saW5lRWRpdGlvblwiPlxuICAgICAgICAgIDxtYXQtY2hlY2tib3ggKGNsaWNrKT1cInRvZ2dsZVNlbGVjdFJvdygkZXZlbnQsIHJvdylcIiBbY2hlY2tlZF09XCJzZWxlY3Rpb24gfCBpc1NlbGVjdGVkOiByb3dcIj48L21hdC1jaGVja2JveD5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIElkIENvbHVtbiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiaWRcIiBbc3RpY2t5XT1cInN0aWNreVwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5cbiAgICAgICAgICA8aW9uLWxhYmVsPiM8L2lvbi1sYWJlbD5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICAgIDxpb24tbGFiZWw+e3sgcm93LmN1cnJlbnREYXRhLmlkIH19PC9pb24tbGFiZWw+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBhdmF0YXIgQ29sdW1uIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJhdmF0YXJcIiBbc3RpY2t5XT1cInN0aWNreVwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPjwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIj5cbiAgICAgICAgICA8aW9uLWF2YXRhciBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCInd2hpdGUnXCI+XG4gICAgICAgICAgICA8aW9uLWltZyAqbmdJZj1cInJvdy5jdXJyZW50RGF0YS5hdmF0YXI7IGxldCBhdmF0YXJVcmw7IGVsc2U6IGdlbmVyYXRlSWNvblwiIFtzcmNdPVwiYXZhdGFyVXJsXCI+PC9pb24taW1nPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNnZW5lcmF0ZUljb24+XG4gICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIzOVwiIGhlaWdodD1cIjM5XCIgW2RhdGEtamRlbnRpY29uLXZhbHVlXT1cInJvdy5jdXJyZW50RGF0YS5pZFwiPjwvc3ZnPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2lvbi1hdmF0YXI+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBsYXN0TmFtZSAgLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImxhc3ROYW1lXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPlxuICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5VU0VSLkxBU1RfTkFNRTwvc3Bhbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIChjbGljayk9XCJmb2N1c0NvbHVtbiA9ICdsYXN0TmFtZSdcIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJyb3cuZWRpdGluZzsgZWxzZSByZWFkb25seUNlbGxcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicm93LnZhbGlkYXRvci5jb250cm9sc1snbGFzdE5hbWUnXVwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInVVNFUi5MQVNUX05BTUUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIiFyb3cuZWRpdGluZ1wiXG4gICAgICAgICAgICAgIFthcHBBdXRvZm9jdXNdPVwicm93LmVkaXRpbmcgJiYgZm9jdXNDb2x1bW4gPT09ICdsYXN0TmFtZSdcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJyb3cudmFsaWRhdG9yLmNvbnRyb2xzWydsYXN0TmFtZSddLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCIgdHJhbnNsYXRlPlxuICAgICAgICAgICAgICBFUlJPUi5GSUVMRF9SRVFVSVJFRFxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicm93LnZhbGlkYXRvci5jb250cm9sc1snbGFzdE5hbWUnXS5oYXNFcnJvcignbWlubGVuZ3RoJylcIj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgJ0VSUk9SLkZJRUxEX01JTl9MRU5HVEgnIHwgdHJhbnNsYXRlOiB7IHJlcXVpcmVkTGVuZ3RoOiAyIH0gfX08L3NwYW4+XG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmVhZG9ubHlDZWxsPlxuICAgICAgICAgICAgPGlvbi1sYWJlbCBhcHBBdXRvVGl0bGU+XG4gICAgICAgICAgICAgIHt7IHJvdy52YWxpZGF0b3IgfCBmb3JtR2V0VmFsdWU6ICdsYXN0TmFtZScgfX1cbiAgICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBmaXJzdG5hbWUgLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImZpcnN0TmFtZVwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5cbiAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+VVNFUi5GSVJTVF9OQU1FPC9zcGFuPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgKGNsaWNrKT1cImZvY3VzQ29sdW1uID0gJ2ZpcnN0TmFtZSdcIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJyb3cuZWRpdGluZzsgZWxzZSByZWFkb25seUNlbGxcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicm93LnZhbGlkYXRvci5jb250cm9sc1snZmlyc3ROYW1lJ11cIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1VTRVIuRklSU1RfTkFNRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiIXJvdy5lZGl0aW5nXCJcbiAgICAgICAgICAgICAgW2FwcEF1dG9mb2N1c109XCJyb3cuZWRpdGluZyAmJiBmb2N1c0NvbHVtbiA9PT0gJ2ZpcnN0TmFtZSdcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJyb3cudmFsaWRhdG9yLmNvbnRyb2xzWydmaXJzdE5hbWUnXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICAgICAgRVJST1IuRklFTERfUkVRVUlSRURcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInJvdy52YWxpZGF0b3IuY29udHJvbHNbJ2ZpcnN0TmFtZSddLmhhc0Vycm9yKCdtaW5sZW5ndGgnKVwiPlxuICAgICAgICAgICAgICA8c3Bhbj57eyAnRVJST1IuRklFTERfTUlOX0xFTkdUSCcgfCB0cmFuc2xhdGU6IHsgcmVxdWlyZWRMZW5ndGg6IDIgfSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNyZWFkb25seUNlbGw+XG4gICAgICAgICAgICA8aW9uLWxhYmVsIGFwcEF1dG9UaXRsZT5cbiAgICAgICAgICAgICAge3sgcm93LnZhbGlkYXRvciB8IGZvcm1HZXRWYWx1ZTogJ2ZpcnN0TmFtZScgfX1cbiAgICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBlbWFpbCAgLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImVtYWlsXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPlxuICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5VU0VSLkVNQUlMPC9zcGFuPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgKGNsaWNrKT1cImZvY3VzQ29sdW1uID0gJ2VtYWlsJ1wiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cInJvdy5lZGl0aW5nOyBlbHNlIHJlYWRvbmx5Q2VsbFwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJyb3cudmFsaWRhdG9yLmNvbnRyb2xzWydlbWFpbCddXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidVU0VSLkVNQUlMJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIFtyZWFkb25seV09XCIhcm93LmVkaXRpbmdcIlxuICAgICAgICAgICAgICBbYXBwQXV0b2ZvY3VzXT1cInJvdy5lZGl0aW5nICYmIGZvY3VzQ29sdW1uID09PSAnZW1haWwnXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicm93LnZhbGlkYXRvci5jb250cm9sc1snZW1haWwnXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICAgICAgRVJST1IuRklFTERfUkVRVUlSRURcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInJvdy52YWxpZGF0b3IuY29udHJvbHNbJ2VtYWlsJ10uaGFzRXJyb3IoJ2VtYWlsJylcIj5cbiAgICAgICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPkVSUk9SLkZJRUxEX05PVF9WQUxJRF9FTUFJTDwvc3Bhbj5cbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNyZWFkb25seUNlbGw+XG4gICAgICAgICAgICA8aW9uLWxhYmVsIGFwcEF1dG9UaXRsZT5cbiAgICAgICAgICAgICAge3sgcm93LnZhbGlkYXRvciB8IGZvcm1HZXRWYWx1ZTogJ2VtYWlsJyB9fVxuICAgICAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIGFkZGl0aW9uYWwgZmllbGRzIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGVmaW5pdGlvbiBvZiBhZGRpdGlvbmFsRmllbGRzXCIgW21hdENvbHVtbkRlZl09XCJkZWZpbml0aW9uLmtleVwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICAgIDxzcGFuPnt7IGRlZmluaXRpb24ubGFiZWwgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIiAoY2xpY2spPVwiZm9jdXNDb2x1bW4gPSBkZWZpbml0aW9uLmtleVwiPlxuICAgICAgICAgIDxhcHAtZm9ybS1maWVsZFxuICAgICAgICAgICAgZmxvYXRMYWJlbD1cIm5ldmVyXCJcbiAgICAgICAgICAgIFtkZWZpbml0aW9uXT1cImRlZmluaXRpb25cIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInJvdy52YWxpZGF0b3IuY29udHJvbHNbZGVmaW5pdGlvbi5rZXldXCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJkZWZpbml0aW9uLmV4dHJhPy5hY2NvdW50Py5yZXF1aXJlZFwiXG4gICAgICAgICAgICBbYXV0b2ZvY3VzXT1cInJvdy5lZGl0aW5nICYmIGZvY3VzQ29sdW1uID09PSBkZWZpbml0aW9uLmtleVwiXG4gICAgICAgICAgPjwvYXBwLWZvcm0tZmllbGQ+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBwcm9maWxlIGNvbHVtbiAgLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInByb2ZpbGVcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cbiAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+VVNFUi5QUk9GSUxFPC9zcGFuPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgKGNsaWNrKT1cImZvY3VzQ29sdW1uID0gJ3Byb2ZpbGUnXCI+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInJvdy52YWxpZGF0b3IuY29udHJvbHNbJ21haW5Qcm9maWxlJ11cIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1VTRVIuUFJPRklMRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwcm9maWxlc1wiIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAge3sgJ1VTRVIuUFJPRklMRV9FTlVNLicgKyBpdGVtIHwgdXBwZXJjYXNlIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJyb3cudmFsaWRhdG9yLmNvbnRyb2xzWydtYWluUHJvZmlsZSddLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCIgdHJhbnNsYXRlPlxuICAgICAgICAgICAgICBFUlJPUi5GSUVMRF9SRVFVSVJFRFxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIFN0YXR1cyBjb2x1bW4gIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzdGF0dXNcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cbiAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+VVNFUi5TVEFUVVM8L3NwYW4+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIiAoY2xpY2spPVwiZm9jdXNDb2x1bW4gPSAnc3RhdHVzJ1wiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJyb3cudmFsaWRhdG9yLmNvbnRyb2xzWydzdGF0dXNJZCddXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidSRUZFUkVOVElBTC5TVEFUVVMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3QtdHJpZ2dlcj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvdy52YWxpZGF0b3IuY29udHJvbHNbJ3N0YXR1c0lkJ10udmFsdWUgJmd0Oz0wXCI+XG4gICAgICAgICAgICAgICAgICB7eyBzdGF0dXNCeUlkW3Jvdy52YWxpZGF0b3IuY29udHJvbHNbJ3N0YXR1c0lkJ10udmFsdWVdPy5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIHN0YXR1c0xpc3RcIiBbdmFsdWVdPVwiaXRlbS5pZFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj48aW9uLWljb24gW25hbWVdPVwiaXRlbS5pY29uXCI+PC9pb24taWNvbj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInJvdy52YWxpZGF0b3IuY29udHJvbHNbJ3N0YXR1c0lkJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIiB0cmFuc2xhdGU+XG4gICAgICAgICAgICAgIEVSUk9SLkZJRUxEX1JFUVVJUkVEXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gdXNlcm5hbWUgLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInVzZXJuYW1lXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPlxuICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5VU0VSLlVTRVJOQU1FPC9zcGFuPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgKGNsaWNrKT1cImZvY3VzQ29sdW1uID0gJ3VzZXJuYW1lJ1wiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cInJvdy5lZGl0aW5nOyBlbHNlIHJlYWRvbmx5Q2VsbFwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJyb3cudmFsaWRhdG9yLmNvbnRyb2xzLnVzZXJuYW1lXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidVU0VSLlVTRVJOQU1FJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIFtyZWFkb25seV09XCIhcm93LmVkaXRpbmdcIlxuICAgICAgICAgICAgICBbYXBwQXV0b2ZvY3VzXT1cInJvdy5lZGl0aW5nICYmIGZvY3VzQ29sdW1uID09PSAndXNlcm5hbWUnXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicm93LnZhbGlkYXRvci5jb250cm9scy51c2VybmFtZS5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICAgICAgRVJST1IuRklFTERfUkVRVUlSRURcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNyZWFkb25seUNlbGw+XG4gICAgICAgICAgICA8aW9uLWxhYmVsIGFwcEF1dG9UaXRsZT5cbiAgICAgICAgICAgICAge3sgcm93LnZhbGlkYXRvciB8IGZvcm1HZXRWYWx1ZTogJ3VzZXJuYW1lJyB9fVxuICAgICAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIHVzZXJuYW1lIGV4dHJhbmV0IC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ1c2VybmFtZUV4dHJhbmV0XCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPlxuICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5VU0VSLlVTRVJOQU1FX0VYVFJBTkVUPC9zcGFuPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgKGNsaWNrKT1cImZvY3VzQ29sdW1uID0gJ3VzZXJuYW1lRXh0cmFuZXQnXCI+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwicm93LmVkaXRpbmc7IGVsc2UgcmVhZG9ubHlDZWxsXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInJvdy52YWxpZGF0b3IuY29udHJvbHMudXNlcm5hbWVFeHRyYW5ldFwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInVVNFUi5VU0VSTkFNRV9FWFRSQU5FVCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiIXJvdy5lZGl0aW5nXCJcbiAgICAgICAgICAgICAgW2FwcEF1dG9mb2N1c109XCJyb3cuZWRpdGluZyAmJiBmb2N1c0NvbHVtbiA9PT0gJ3VzZXJuYW1lRXh0cmFuZXQnXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicm93LnZhbGlkYXRvci5jb250cm9scy51c2VybmFtZUV4dHJhbmV0Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCIgdHJhbnNsYXRlPlxuICAgICAgICAgICAgICBFUlJPUi5GSUVMRF9SRVFVSVJFRFxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3JlYWRvbmx5Q2VsbD5cbiAgICAgICAgICAgIDxpb24tbGFiZWwgYXBwQXV0b1RpdGxlPlxuICAgICAgICAgICAgICB7eyByb3cudmFsaWRhdG9yIHwgZm9ybUdldFZhbHVlOiAndXNlcm5hbWVFeHRyYW5ldCcgfX1cbiAgICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBwdWJrZXkgIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJwdWJrZXlcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+XG4gICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPlVTRVIuUFVCS0VZPC9zcGFuPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGRcbiAgICAgICAgICBtYXQtY2VsbFxuICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IHJvd1wiXG4gICAgICAgICAgW3RpdGxlXT1cInJvdy52YWxpZGF0b3IuY29udHJvbHMucHVia2V5LnZhbHVlQ2hhbmdlcyB8IGFzeW5jXCJcbiAgICAgICAgICAoY2xpY2spPVwiZm9jdXNDb2x1bW4gPSAncHVia2V5J1wiXG4gICAgICAgID5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJyb3cuZWRpdGluZzsgZWxzZSByZWFkb25seUNlbGxcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicm93LnZhbGlkYXRvci5jb250cm9sc1sncHVia2V5J11cIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1VTRVIuUFVCS0VZJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIFtyZWFkb25seV09XCIhcm93LmVkaXRpbmdcIlxuICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJyb3cudmFsaWRhdG9yLmNvbnRyb2xzLnB1YmtleS5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICAgICAgRVJST1IuRklFTERfUkVRVUlSRURcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInJvdy52YWxpZGF0b3IuY29udHJvbHMucHVia2V5Lmhhc0Vycm9yKCdwdWJrZXknKVwiPlxuICAgICAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+RVJST1IuRklFTERfTk9UX1ZBTElEX1BVQktFWTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNyZWFkb25seUNlbGw+XG4gICAgICAgICAgICA8aW9uLWxhYmVsIGFwcEF1dG9UaXRsZT5cbiAgICAgICAgICAgICAge3sgcm93LnZhbGlkYXRvciB8IGZvcm1HZXRWYWx1ZTogJ3B1YmtleScgfX1cbiAgICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBDcmVhdGlvbiBkYXRlIGNvbHVtbiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiY3JlYXRpb25EYXRlXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPlxuICAgICAgICAgIDxpb24tbGFiZWwgdHJhbnNsYXRlPlVTRVIuQ1JFQVRJT05fREFURTwvaW9uLWxhYmVsPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1kaXNhYmxlZFwiPlxuICAgICAgICAgIDxpb24tdGV4dCBjbGFzcz1cImlvbi10ZXh0LWVuZFwiIGNvbG9yPVwibWVkaXVtXCIgKm5nSWY9XCJyb3cuaWQgIT09IC0xXCI+XG4gICAgICAgICAgICB7eyByb3cuY3VycmVudERhdGEuY3JlYXRpb25EYXRlIHwgZGF0ZUZvcm1hdDogeyB0aW1lOiB0cnVlIH0gfX1cbiAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gVXBkYXRlIGRhdGUgY29sdW1uIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ1cGRhdGVEYXRlXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPlxuICAgICAgICAgIDxpb24tbGFiZWwgdHJhbnNsYXRlPlVTRVIuVVBEQVRFX0RBVEU8L2lvbi1sYWJlbD5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIGNsYXNzPVwibWF0LWZvcm0tZmllbGQtZGlzYWJsZWRcIj5cbiAgICAgICAgICA8aW9uLXRleHQgY2xhc3M9XCJpb24tdGV4dC1lbmRcIiBjb2xvcj1cIm1lZGl1bVwiICpuZ0lmPVwicm93LmlkICE9PSAtMVwiPlxuICAgICAgICAgICAge3sgcm93LmN1cnJlbnREYXRhLnVwZGF0ZURhdGUgfCBkYXRlRm9ybWF0OiB7IHRpbWU6IHRydWUgfSB9fVxuICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBBY3Rpb25zIGJ1dHRvbnMgY29sdW1uIC0tPlxuICAgICAgPGFwcC1hY3Rpb25zLWNvbHVtblxuICAgICAgICBbc3RpY2t5RW5kXT1cInN0aWNreUVuZFwiXG4gICAgICAgIChjYW5jZWxPckRlbGV0ZUNsaWNrKT1cImNhbmNlbE9yRGVsZXRlKCRldmVudC5ldmVudCwgJGV2ZW50LnJvdylcIlxuICAgICAgICAoY29uZmlybUVkaXRDcmVhdGVDbGljayk9XCJjb25maXJtRWRpdENyZWF0ZSgkZXZlbnQuZXZlbnQsICRldmVudC5yb3cpXCJcbiAgICAgICAgKGNvbmZpcm1BbmRBZGRDbGljayk9XCJjb25maXJtQW5kQWRkKCRldmVudC5ldmVudCwgJGV2ZW50LnJvdylcIlxuICAgICAgICAoYmFja3dhcmQpPVwiY29uZmlybUFuZEJhY2t3YXJkKCRldmVudC5ldmVudCwgJGV2ZW50LnJvdylcIlxuICAgICAgICAoZm9yd2FyZCk9XCJjb25maXJtQW5kRm9yd2FyZCgkZXZlbnQuZXZlbnQsICRldmVudC5yb3cpXCJcbiAgICAgICAgW2NhbkNhbmNlbF09XCJmYWxzZVwiXG4gICAgICA+XG4gICAgICAgIDwhLS0gdGFibGUgb3B0aW9ucyBtZW51IC0tPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgbWF0SGVhZGVyXG4gICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgW3RpdGxlXT1cIidDT01NT04uQlROX09QVElPTlMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwidGFibGVPcHRpb25zTWVudVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bWF0LWljb24+bW9yZV92ZXJ0PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2FwcC1hY3Rpb25zLWNvbHVtbj5cblxuICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zOyBzdGlja3k6IHRydWVcIj48L3RyPlxuICAgICAgPHRyXG4gICAgICAgIG1hdC1yb3dcbiAgICAgICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnNcIlxuICAgICAgICBbY2xhc3MubWF0LXJvdy1zZWxlY3RlZF09XCJyb3cuZWRpdGluZ1wiXG4gICAgICAgIFtjbGFzcy5tYXQtcm93LWVycm9yXT1cInJvdy52YWxpZGF0b3IuaW52YWxpZFwiXG4gICAgICAgIFtjbGFzcy5tYXQtcm93LWRpcnR5XT1cInJvdy5jdXJyZW50RGF0YS5kaXJ0eVwiXG4gICAgICAgIFtjbGFzcy5tYXQtcm93LWRpc2FibGVkXT1cIiFyb3cuZWRpdGluZ1wiXG4gICAgICAgIChjbGljayk9XCJjbGlja1JvdygkZXZlbnQsIHJvdylcIlxuICAgICAgICAoa2V5ZG93bi5lc2NhcGUpPVwiZXNjYXBlRWRpdGluZ1JvdygkZXZlbnQpXCJcbiAgICAgICAgW2Nka1RyYXBGb2N1c109XCIhcm93LnZhbGlkYXRvcj8udmFsaWRcIlxuICAgICAgPjwvdHI+XG4gICAgPC90YWJsZT5cblxuICAgIDwhLS0gRMOpY2xlbmNoZXVyIGludmlzaWJsZSBwb3VyIGxlIG1hdC1tZW51IC0tPlxuXG4gICAgQGlmIChsb2FkaW5nU3ViamVjdCB8IGFzeW5jKSB7XG4gICAgICA8aW9uLWl0ZW0+XG4gICAgICAgIDxpb24tc2tlbGV0b24tdGV4dCBhbmltYXRlZD48L2lvbi1za2VsZXRvbi10ZXh0PlxuICAgICAgPC9pb24taXRlbT5cbiAgICB9IEBlbHNlIGlmICh0b3RhbFJvd0NvdW50ID09PSAwKSB7XG4gICAgICA8aW9uLWl0ZW0+XG4gICAgICAgIDxpb24tdGV4dCBjb2xvcj1cImRhbmdlclwiIGNsYXNzPVwidGV4dC1pdGFsaWNcIiB0cmFuc2xhdGU+Q09NTU9OLk5PX1JFU1VMVDwvaW9uLXRleHQ+XG4gICAgICA8L2lvbi1pdGVtPlxuICAgIH1cbiAgPC9kaXY+XG48L2lvbi1jb250ZW50PlxuXG48IS0tIFRhYmxlIG9wdGlvbnMgbWVudSAtLT5cbjxtYXQtbWVudSAjdGFibGVPcHRpb25zTWVudT1cIm1hdE1lbnVcIiB4UG9zaXRpb249XCJhZnRlclwiPlxuICA8IS0tIGRpc3BsYXkgY29sdW1ucyAtLT5cbiAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvcGVuU2VsZWN0Q29sdW1uc01vZGFsKCRldmVudClcIj5cbiAgICA8bWF0LWljb24+dmlld19jb2x1bW48L21hdC1pY29uPlxuICAgIDxpb24tbGFiZWwgdHJhbnNsYXRlPkNPTU1PTi5ESVNQTEFZRURfQ09MVU1OU19ET1RTPC9pb24tbGFiZWw+XG4gIDwvYnV0dG9uPlxuXG4gIEBpZiAodXNlUGFnZVNldHRpbmdzKSB7XG4gICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG5cbiAgICA8IS0tIENvbXBhY3QgbW9kZSAtLT5cbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInRvZ2dsZUNvbXBhY3RNb2RlKClcIj5cbiAgICAgIDxtYXQtaWNvbj57eyBjb21wYWN0ID8gJ2NoZWNrX2JveCcgOiAnY2hlY2tfYm94X291dGxpbmVfYmxhbmsnIH19PC9tYXQtaWNvbj5cbiAgICAgIDxpb24tbGFiZWwgdHJhbnNsYXRlPkNPTU1PTi5CVE5fQ09NUEFDVF9ST1dTPC9pb24tbGFiZWw+XG4gICAgPC9idXR0b24+XG4gIH1cbjwvbWF0LW1lbnU+XG5cbjxpb24tZm9vdGVyPlxuICA8bWF0LXBhZ2luYXRvclxuICAgIFtsZW5ndGhdPVwidG90YWxSb3dDb3VudFwiXG4gICAgW3BhZ2VTaXplXT1cImRlZmF1bHRQYWdlU2l6ZVwiXG4gICAgW3BhZ2VTaXplT3B0aW9uc109XCJkZWZhdWx0UGFnZVNpemVPcHRpb25zXCJcbiAgICBzaG93Rmlyc3RMYXN0QnV0dG9uc1xuICA+PC9tYXQtcGFnaW5hdG9yPlxuXG4gIDxhcHAtZm9ybS1idXR0b25zLWJhclxuICAgICpuZ0lmPVwiIW1vYmlsZSAmJiBjYW5FZGl0XCJcbiAgICAob25DYW5jZWwpPVwiY2FuY2VsKCRldmVudClcIlxuICAgIChvblNhdmUpPVwic2F2ZSgpXCJcbiAgICBbZGlzYWJsZWRdPVwiKGxvYWRpbmdTdWJqZWN0IHwgYXN5bmMpID09PSB0cnVlIHx8IChkaXJ0eVN1YmplY3QgfCBhc3luYykgIT09IHRydWVcIlxuICA+XG4gICAgPCEtLSBlcnJvciAtLT5cbiAgICA8aW9uLWl0ZW0gKm5nSWY9XCJlcnJvclN1YmplY3QgfCBhc3luYzsgbGV0IGVycm9yXCIgbGluZXM9XCJub25lXCI+XG4gICAgICA8aW9uLWljb24gY29sb3I9XCJkYW5nZXJcIiBzbG90PVwic3RhcnRcIiBuYW1lPVwiYWxlcnQtY2lyY2xlXCI+PC9pb24taWNvbj5cbiAgICAgIDxpb24tbGFiZWwgY29sb3I9XCJkYW5nZXJcIiBbaW5uZXJIVE1MXT1cImVycm9yIHwgdHJhbnNsYXRlXCI+PC9pb24tbGFiZWw+XG4gICAgPC9pb24taXRlbT5cbiAgPC9hcHAtZm9ybS1idXR0b25zLWJhcj5cbjwvaW9uLWZvb3Rlcj5cblxuPGlvbi1mYWIgc2xvdD1cImZpeGVkXCIgdmVydGljYWw9XCJib3R0b21cIiBob3Jpem9udGFsPVwiZW5kXCIgKm5nSWY9XCJtb2JpbGVcIj5cbiAgPGlvbi1mYWItYnV0dG9uIGNvbG9yPVwidGVydGlhcnlcIiAoY2xpY2spPVwiYWRkUm93KClcIj5cbiAgICA8aW9uLWljb24gbmFtZT1cImFkZFwiPjwvaW9uLWljb24+XG4gIDwvaW9uLWZhYi1idXR0b24+XG48L2lvbi1mYWI+XG4iXX0=
379
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2FkbWluL3VzZXJzL3VzZXJzLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9hZG1pbi91c2Vycy91c2Vycy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFZLEtBQUssRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakksT0FBTyxFQUFFLE1BQU0sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFckYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBdUIsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RixPQUFPLEVBQUUsWUFBWSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0csT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztB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K0NBQ2hCLGdCQUFnQixnQkFwQ3pCLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFLENBQUMsZ0ZBbUhwRSxpQkFBaUIscUZDbEo5Qix5c3VCQXFtQkEsMjlhRHJrQmMsQ0FBQyxvQkFBb0IsQ0FBQzs7NEZBR3ZCLFNBQVM7a0JBUnJCLFNBQVM7K0JBQ0UsaUJBQWlCLGFBR2hCLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFLENBQUMsY0FDbkUsQ0FBQyxvQkFBb0IsQ0FBQyxtQkFDakIsdUJBQXVCLENBQUMsTUFBTTs7MEJBNkM1QyxNQUFNOzJCQUFDLFdBQVc7eUNBZm1CLE9BQU87c0JBQTlDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsZUFBZTtzQkFBdEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxNQUFNO3NCQUE3QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLFNBQVM7c0JBQWhELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsV0FBVztzQkFBbEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkErRVUsb0JBQW9CO3NCQUFuRSxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJvb2xlYW5BdHRyaWJ1dGUsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdCwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGVyc29uLCBQUklPUklUSVpFRF9BVVRIT1JJVElFUyB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvbW9kZWwvcGVyc29uLm1vZGVsJztcbmltcG9ydCB7IFN0YXR1c0J5SWQsIFN0YXR1c0xpc3QgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL21vZGVsL3JlZmVyZW50aWFsLm1vZGVsJztcbmltcG9ydCB7IFBlcnNvblNlcnZpY2UgfSBmcm9tICcuL3BlcnNvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFBlcnNvblZhbGlkYXRvclNlcnZpY2UgfSBmcm9tICcuL3BlcnNvbi52YWxpZGF0b3InO1xuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2FjY291bnQuc2VydmljZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFwcFRhYmxlIH0gZnJvbSAnLi4vLi4vY29yZS90YWJsZS90YWJsZS5jbGFzcyc7XG5pbXBvcnQgeyBWYWxpZGF0b3JTZXJ2aWNlIH0gZnJvbSAnQGUtaXMvbmd4LW1hdGVyaWFsLXRhYmxlJztcbmltcG9ydCB7IEZvcm1GaWVsZERlZmluaXRpb24sIEZvcm1GaWVsZERlZmluaXRpb25VdGlscyB9IGZyb20gJy4uLy4uL3NoYXJlZC9mb3JtL2ZpZWxkLm1vZGVsJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbEtleUNoYW5nZWQsIGZpbHRlciwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRW50aXRpZXNUYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9jb3JlL3RhYmxlL2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2UuY2xhc3MnO1xuaW1wb3J0IHsgZ2V0UHJvcGVydHlCeVBhdGgsIGlzTmlsT3JCbGFuaywgaXNOb3ROaWwsIGlzTm90TmlsT3JCbGFuaywgdG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBFTlZJUk9OTUVOVCB9IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQgeyBQZXJzb25GaWx0ZXIgfSBmcm9tICcuL3BlcnNvbi5maWx0ZXInO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ09SRV9DT05GSUdfT1BUSU9OUyB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvY29uZmlnL2NvcmUuY29uZmlnJztcbmltcG9ydCB7IEF1dGhUb2tlblR5cGUgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL25ldHdvcmsudHlwZXMnO1xuaW1wb3J0IHsgTWF0RXhwYW5zaW9uUGFuZWwgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9leHBhbnNpb24nO1xuaW1wb3J0IHsgc2xpZGVVcERvd25BbmltYXRpb24gfSBmcm9tICcuLi8uLi9zaGFyZWQvbWF0ZXJpYWwvbWF0ZXJpYWwuYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBNZXNzYWdlIH0gZnJvbSAnLi4vLi4vc29jaWFsL21lc3NhZ2UvbWVzc2FnZS5tb2RlbCc7XG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NvY2lhbC9tZXNzYWdlL21lc3NhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBSRVNFUlZFRF9FTkRfQ09MVU1OUywgUkVTRVJWRURfU1RBUlRfQ09MVU1OUywgVEFCTEVfU0VUVElOR1NfRU5VTSB9IGZyb20gJy4uLy4uL2NvcmUvdGFibGUvdGFibGUubW9kZWwnO1xuaW1wb3J0IHsgTWVudVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL21lbnUvbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7IENzdlV0aWxzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2ZpbGUvY3N2LnV0aWxzJztcbmltcG9ydCB7IGZyb21EYXRlSVNPU3RyaW5nIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2RhdGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXVzZXJzLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICd1c2Vycy5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdXNlcnMuc2NzcyddLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFZhbGlkYXRvclNlcnZpY2UsIHVzZUV4aXN0aW5nOiBQZXJzb25WYWxpZGF0b3JTZXJ2aWNlIH1dLFxuICBhbmltYXRpb25zOiBbc2xpZGVVcERvd25BbmltYXRpb25dLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVXNlcnNQYWdlIGV4dGVuZHMgQXBwVGFibGU8UGVyc29uLCBQZXJzb25GaWx0ZXI+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcmVhZG9ubHkgY2FuRWRpdDogYm9vbGVhbjtcbiAgcmVhZG9ubHkgY2FuU2VuZE1lc3NhZ2U6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGZpbHRlckZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gIHJlYWRvbmx5IHByb2ZpbGVzID0gWy4uLlBSSU9SSVRJWkVEX0FVVEhPUklUSUVTXS5yZXZlcnNlKCk7XG4gIHJlYWRvbmx5IHN0YXR1c0xpc3QgPSBTdGF0dXNMaXN0O1xuICByZWFkb25seSBzdGF0dXNCeUlkID0gU3RhdHVzQnlJZDtcblxuICBwcm90ZWN0ZWQgYWRkaXRpb25hbEZpZWxkczogRm9ybUZpZWxkRGVmaW5pdGlvbltdO1xuICBwcm90ZWN0ZWQgZmlsdGVyQ3JpdGVyaWFDb3VudCA9IDA7XG4gIHByb3RlY3RlZCBkZWZhdWx0Q29tcGFjdCA9IGZhbHNlO1xuXG4gIHNldCBzaG93VXNlcm5hbWVDb2x1bW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldFNob3dDb2x1bW4oJ3VzZXJuYW1lJywgdmFsdWUpO1xuICB9XG5cbiAgZ2V0IHNob3dVc2VybmFtZUNvbHVtbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTaG93Q29sdW1uKCd1c2VybmFtZScpO1xuICB9XG5cbiAgc2V0IHNob3dVc2VybmFtZUV4dHJhbmV0Q29sdW1uKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXRTaG93Q29sdW1uKCd1c2VybmFtZUV4dHJhbmV0JywgdmFsdWUpO1xuICB9XG5cbiAgZ2V0IHNob3dVc2VybmFtZUV4dHJhbmV0Q29sdW1uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldFNob3dDb2x1bW4oJ3VzZXJuYW1lRXh0cmFuZXQnKTtcbiAgfVxuXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBjb21wYWN0OiBib29sZWFuID0gbnVsbDtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHVzZVBhZ2VTZXR0aW5ncyA9IHRydWU7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzdGlja3kgPSBmYWxzZTtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHN0aWNreUVuZCA9IGZhbHNlO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgY2FuRG93bmxvYWQgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIHByb3RlY3RlZCBhY2NvdW50U2VydmljZTogQWNjb3VudFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHZhbGlkYXRvclNlcnZpY2U6IFZhbGlkYXRvclNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGRhdGFTZXJ2aWNlOiBQZXJzb25TZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG1lbnVTZXJ2aWNlOiBNZW51U2VydmljZSxcbiAgICBASW5qZWN0KEVOVklST05NRU5UKSBlbnZpcm9ubWVudFxuICApIHtcbiAgICBzdXBlcihcbiAgICAgIGluamVjdG9yLFxuICAgICAgUkVTRVJWRURfU1RBUlRfQ09MVU1OUy5jb25jYXQoWydhdmF0YXInLCAnbGFzdE5hbWUnLCAnZmlyc3ROYW1lJywgJ2VtYWlsJywgJ3Byb2ZpbGUnLCAnc3RhdHVzJywgJ3VzZXJuYW1lJywgJ3VzZXJuYW1lRXh0cmFuZXQnLCAncHVia2V5J10pXG4gICAgICAgIC5jb25jYXQoYWNjb3VudFNlcnZpY2UuYWRkaXRpb25hbEZpZWxkcy5tYXAoKGZpZWxkKSA9PiBmaWVsZC5rZXkpKVxuICAgICAgICAuY29uY2F0KFsnY3JlYXRpb25EYXRlJywgJ3VwZGF0ZURhdGUnXSlcbiAgICAgICAgLmNvbmNhdChSRVNFUlZFRF9FTkRfQ09MVU1OUyksXG4gICAgICBuZXcgRW50aXRpZXNUYWJsZURhdGFTb3VyY2UoUGVyc29uLCBkYXRhU2VydmljZSwgdmFsaWRhdG9yU2VydmljZSwge1xuICAgICAgICBwcmVwZW5kTmV3RWxlbWVudHM6IGZhbHNlLFxuICAgICAgICBzdXBwcmVzc0Vycm9yczogZW52aXJvbm1lbnQucHJvZHVjdGlvbixcbiAgICAgICAgc2F2ZU9ubHlEaXJ0eVJvd3M6IHRydWUsXG4gICAgICB9KSxcbiAgICAgIG51bGxcbiAgICApO1xuXG4gICAgdGhpcy5jYW5FZGl0ID0gYWNjb3VudFNlcnZpY2UuaXNBZG1pbigpO1xuICAgIHRoaXMuY2FuU2VuZE1lc3NhZ2UgPSB0aGlzLmNhbkVkaXQ7XG4gICAgdGhpcy5pbmxpbmVFZGl0aW9uID0gdGhpcy5jYW5FZGl0O1xuICAgIHRoaXMuY29uZmlybUJlZm9yZURlbGV0ZSA9IHRydWU7XG4gICAgdGhpcy5hdXRvTG9hZCA9IGZhbHNlOyAvLyBXYWl0IGNvbmZpZyBsb2FkaW5nXG4gICAgdGhpcy5pMThuQ29sdW1uUHJlZml4ID0gJ1VTRVIuJztcbiAgICB0aGlzLmRlZmF1bHRTb3J0QnkgPSAnbGFzdE5hbWUnO1xuICAgIHRoaXMuZGVmYXVsdFNvcnREaXJlY3Rpb24gPSAnYXNjJztcblxuICAgIHRoaXMuZmlsdGVyRm9ybSA9IGZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHNlYXJjaFRleHQ6IFtudWxsXSxcbiAgICAgIHN0YXR1c0lkOiBbbnVsbF0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZGl0aW9uYWxGaWVsZHMgPSAodGhpcy5hY2NvdW50U2VydmljZS5hZGRpdGlvbmFsRmllbGRzIHx8IFtdKVxuICAgICAgLmZpbHRlcigoZmllbGQpID0+IGlzTm90TmlsKGZpZWxkLmF1dG9jb21wbGV0ZSkpXG4gICAgICAubWFwKChmaWVsZCkgPT4ge1xuICAgICAgICAvLyBNYWtlIHN1cmUgdG8gZ2V0IHRoZSBmaW5hbCBhdXRvY29tcGxldGUgY29uZmlnIChlLmcuIHdpdGggYSBzdWdnZXN0Rm4gZnVuY3Rpb24pXG4gICAgICAgIGZpZWxkLmF1dG9jb21wbGV0ZSA9IHRoaXMucmVnaXN0ZXJBdXRvY29tcGxldGVGaWVsZChmaWVsZC5rZXksIHtcbiAgICAgICAgICAuLi5maWVsZC5hdXRvY29tcGxldGUsIC8vIENvcHksIHRvIGJlIHN1cmUgdGhlIG9yaWdpbmFsIGNvbmZpZyBpcyB1bmNoYW5nZWRcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH0pO1xuXG4gICAgLy8gTGlzdGVuIHBhZ2UgYWN0aW9uIChlLmcuIGZyb20gc3ViIG1lbnUgaXRlbSlcbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKFxuICAgICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5waXBlKGRpc3RpbmN0VW50aWxLZXlDaGFuZ2VkKCdhY3Rpb24nKSkuc3Vic2NyaWJlKChxdWVyeVBhcmFtcykgPT4ge1xuICAgICAgICBjb25zdCBhY3Rpb24gPSBxdWVyeVBhcmFtc1snYWN0aW9uJ10gfHwgJ25vbmUnO1xuICAgICAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgICAgIGNhc2UgJ3NlbmQnOlxuICAgICAgICAgICAgdGhpcy5vcGVuQ29tcG9zZU1lc3NhZ2VNb2RhbCgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnbm9uZSc6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgY29uc29sZS53YXJuKCdbdXNlcnNdIFVua25vd24gYWN0aW9uPScgKyBhY3Rpb24pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy8gTWFyayBhcyBjb25zdW1lZFxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4nXSwge1xuICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgICAgICAgcXVlcnlQYXJhbXM6IHsgLi4ucXVlcnlQYXJhbXMsIGFjdGlvbjogdW5kZWZpbmVkIH0sXG4gICAgICAgICAgcmVwbGFjZVVybDogdHJ1ZSxcbiAgICAgICAgICBzdGF0ZTogeyBhbmltYXRlZDogZmFsc2UgfSxcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICAvLyBGb3IgREVWIG9ubHkgLS1cbiAgICB0aGlzLmRlYnVnID0gIWVudmlyb25tZW50LnByb2R1Y3Rpb247XG4gIH1cblxuICBAVmlld0NoaWxkKE1hdEV4cGFuc2lvblBhbmVsLCB7IHN0YXRpYzogdHJ1ZSB9KSBmaWx0ZXJFeHBhbnNpb25QYW5lbDogTWF0RXhwYW5zaW9uUGFuZWw7XG5cbiAgZ2V0IGZpcnN0VXNlckNvbHVtbigpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvbHVtbk5hbWUgPSB0aGlzLmRpc3BsYXllZENvbHVtbnNbUkVTRVJWRURfU1RBUlRfQ09MVU1OUy5sZW5ndGhdO1xuICAgIC8vIFNraXAgYXZhdGFyIGNvbHVtbiwgaWYgcHJlc2VudFxuICAgIHJldHVybiAoY29sdW1uTmFtZSA9PT0gJ2F2YXRhcicgJiYgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zW1JFU0VSVkVEX1NUQVJUX0NPTFVNTlMubGVuZ3RoICsgMV0pIHx8IGNvbHVtbk5hbWU7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbihcbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcuc3Vic2NyaWJlKChjb25maWcpID0+IHtcbiAgICAgICAgY29uc3QgYXV0aFRva2VuVHlwZSA9IGNvbmZpZy5nZXRQcm9wZXJ0eShDT1JFX0NPTkZJR19PUFRJT05TLkFVVEhfVE9LRU5fVFlQRSkgYXMgQXV0aFRva2VuVHlwZTtcbiAgICAgICAgY29uc29sZS5kZWJ1ZygnW3VzZXJzXSBBdXRoVG9rZW5UeXBlPScgKyBhdXRoVG9rZW5UeXBlKTtcbiAgICAgICAgc3dpdGNoIChhdXRoVG9rZW5UeXBlKSB7XG4gICAgICAgICAgY2FzZSAnYmFzaWMnOlxuICAgICAgICAgICAgdGhpcy5zZXRTaG93Q29sdW1uKCdwdWJrZXknLCBmYWxzZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgdGhpcy5zZXRTaG93Q29sdW1uKCd1c2VybmFtZScsIHRydWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIHRoaXMuc2V0U2hvd0NvbHVtbigndXNlcm5hbWVFeHRyYW5ldCcsIHRydWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2Jhc2ljLWFuZC10b2tlbic6XG4gICAgICAgICAgICB0aGlzLnNldFNob3dDb2x1bW4oJ3B1YmtleScsIHRydWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIHRoaXMuc2V0U2hvd0NvbHVtbigndXNlcm5hbWUnLCB0cnVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICB0aGlzLnNldFNob3dDb2x1bW4oJ3VzZXJuYW1lRXh0cmFuZXQnLCB0cnVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICd0b2tlbic6XG4gICAgICAgICAgICB0aGlzLnNldFNob3dDb2x1bW4oJ3B1YmtleScsIHRydWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIHRoaXMuc2V0U2hvd0NvbHVtbigndXNlcm5hbWUnLCBmYWxzZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgdGhpcy5zZXRTaG93Q29sdW1uKCd1c2VybmFtZUV4dHJhbmV0JywgZmFsc2UsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbnMoKTtcbiAgICAgICAgdGhpcy5lbWl0UmVmcmVzaCgpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbihcbiAgICAgIHRoaXMub25SZWZyZXNoLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZmlsdGVyRm9ybS5tYXJrQXNVbnRvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5maWx0ZXJGb3JtLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICAvLyBVcGRhdGUgZmlsdGVyIHdoZW4gY2hhbmdlc1xuICAgIHRoaXMucmVnaXN0ZXJTdWJzY3JpcHRpb24oXG4gICAgICB0aGlzLmZpbHRlckZvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGRlYm91bmNlVGltZSgyNTApLFxuICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmZpbHRlckZvcm0udmFsaWQpLFxuICAgICAgICAgIHRhcCgoanNvbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gUGVyc29uRmlsdGVyLmZyb21PYmplY3QoanNvbik7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckNyaXRlcmlhQ291bnQgPSBmaWx0ZXIuY291bnROb3RFbXB0eUNyaXRlcmlhKCk7XG4gICAgICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBmaWx0ZXIsIHdpdGhvdXQgcmVsb2FkaW5nIHRoZSBjb250ZW50XG4gICAgICAgICAgICB0aGlzLnNldEZpbHRlcihmaWx0ZXIsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAvLyBTYXZlIGZpbHRlciBpbiBzZXR0aW5ncyAoYWZ0ZXIgYSBkZWJvdW5jZSB0aW1lKVxuICAgICAgICAgIGRlYm91bmNlVGltZSg1MDApLFxuICAgICAgICAgIGZpbHRlcigoKSA9PiBpc05vdE5pbE9yQmxhbmsodGhpcy5zZXR0aW5nc0lkKSAmJiB0aGlzLnVzZVBhZ2VTZXR0aW5ncyksXG4gICAgICAgICAgdGFwKChqc29uKSA9PiB0aGlzLnNldHRpbmdzLnNhdmVQYWdlU2V0dGluZyh0aGlzLnNldHRpbmdzSWQsIGpzb24sIFRBQkxFX1NFVFRJTkdTX0VOVU0uRklMVEVSX0tFWSkpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgpXG4gICAgKTtcblxuICAgIGlmICh0aGlzLmNhblNlbmRNZXNzYWdlICYmIHRoaXMuZGVidWcpIHtcbiAgICAgIGF3YWl0IHRoaXMubWVudVNlcnZpY2UuYWRkU3ViTWVudUl0ZW1zKFxuICAgICAgICBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgcGFyZW50UGF0aDogJy9hZG1pbi91c2VycycsXG4gICAgICAgICAgICBwYXRoOiAnL2FkbWluL3VzZXJzJyxcbiAgICAgICAgICAgIHBhdGhQYXJhbXM6IHsgYWN0aW9uOiAnZXhwYW5kJyB9LFxuICAgICAgICAgICAgbWF0SWNvbjogJ2V4cGFuZF9tb3JlJyxcbiAgICAgICAgICAgIHRpdGxlOiAnVVNFUi5MSVNULkJUTl9BQ1RJT05TJyxcbiAgICAgICAgICAgIGFjdGlvbjogJ2V4cGFuZCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwYXJlbnRQYXRoOiAnL2FkbWluL3VzZXJzP2FjdGlvbj1leHBhbmQnLFxuICAgICAgICAgICAgcGF0aDogJy9hZG1pbi91c2Vycz9hY3Rpb249c2VuZCcsXG4gICAgICAgICAgICBpY29uOiAnbWFpbCcsXG4gICAgICAgICAgICB0aXRsZTogJ1VTRVIuTElTVC5CVE5fU0VORF9NRVNTQUdFJyxcbiAgICAgICAgICAgIGFjdGlvbjogKCkgPT4gdGhpcy5vcGVuQ29tcG9zZU1lc3NhZ2VNb2RhbCgpLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHsgc2tpcElmRXhpc3RzOiBmYWxzZSB9XG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFJlc3RvcmUgY29tcGFjdCByb3dzXG4gICAgdGhpcy5yZXN0b3JlQ29tcGFjdE1vZGUoKTtcblxuICAgIC8vIFJlc3RvcmUgZmlsdGVyIGZyb20gc2V0dGluZ3MsIG9yIGxvYWQgYWxsXG4gICAgdGhpcy5yZXN0b3JlRmlsdGVyT3JMb2FkKCk7XG4gIH1cblxuICBhcHBseUZpbHRlckFuZENsb3NlUGFuZWwoZXZlbnQ/OiBFdmVudCkge1xuICAgIHRoaXMuZW1pdFJlZnJlc2goZXZlbnQpO1xuICAgIHRoaXMuZmlsdGVyRXhwYW5zaW9uUGFuZWwuY2xvc2UoKTtcbiAgfVxuXG4gIHJlc2V0RmlsdGVyKGV2ZW50PzogRXZlbnQpIHtcbiAgICB0aGlzLnRvdGFsUm93Q291bnQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5maWx0ZXJDcml0ZXJpYUNvdW50ID0gMDtcbiAgICB0aGlzLm1hcmtBc0xvYWRpbmcoKTtcbiAgICB0aGlzLmZpbHRlckZvcm0ucmVzZXQoKTtcbiAgICB0aGlzLnNldEZpbHRlcihudWxsKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyByZXN0b3JlRmlsdGVyT3JMb2FkKCkge1xuICAgIHRoaXMubWFya0FzTG9hZGluZygpO1xuXG4gICAgY29uc29sZS5kZWJ1ZygnW3VzZXJzXSBSZXN0b3JpbmcgZmlsdGVyIGZyb20gc2V0dGluZ3MuLi4nKTtcblxuICAgIGNvbnN0IGpzb24gPSB0aGlzLnNldHRpbmdzLmdldFBhZ2VTZXR0aW5ncyh0aGlzLnNldHRpbmdzSWQsIFRBQkxFX1NFVFRJTkdTX0VOVU0uRklMVEVSX0tFWSkgfHwge307XG4gICAgY29uc3QgZmlsdGVyID0gUGVyc29uRmlsdGVyLmZyb21PYmplY3QoanNvbik7XG5cbiAgICB0aGlzLmZpbHRlckZvcm0ucGF0Y2hWYWx1ZShqc29uKTtcbiAgICB0aGlzLnNldEZpbHRlcihmaWx0ZXIsIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuICB9XG5cbiAgY2xlYXJDb250cm9sVmFsdWUoZXZlbnQ6IEV2ZW50LCBmb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sKTogYm9vbGVhbiB7XG4gICAgaWYgKGV2ZW50KSBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgLy8gQXZvaWQgdG8gZW50ZXIgaW5wdXQgdGhlIGZpZWxkXG4gICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUobnVsbCk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgb3BlbkNvbXBvc2VNZXNzYWdlTW9kYWwoZXZlbnQ/OiBFdmVudCk6IFByb21pc2U8YW55PiB7XG4gICAgLy8gQ29tcHV0ZSByZWNpcGllbnRzXG4gICAgY29uc3QgcmVjaXBpZW50cyA9ICh0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCB8fCBbXSlcbiAgICAgIC5tYXAoKHJvdykgPT4gcm93LmN1cnJlbnREYXRhKVxuICAgICAgLm1hcChQZXJzb24uZnJvbU9iamVjdClcbiAgICAgIC5tYXAoKHApID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gcC5hc09iamVjdCh7IG1pbmlmeTogdHJ1ZSB9KTtcbiAgICAgICAgdGFyZ2V0LmRlcGFydG1lbnQgPSBwLmRlcGFydG1lbnQ/LmFzT2JqZWN0KCk7XG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgICB9KTtcblxuICAgIGNvbnN0IHJlY2lwaWVudEZpbHRlciA9IFBlcnNvbkZpbHRlci5mcm9tT2JqZWN0KHRoaXMuZmlsdGVyKTtcbiAgICBjb25zdCBjYW5SZWNpcGllbnRGaWx0ZXIgPSAhcmVjaXBpZW50RmlsdGVyLmlzRW1wdHkoKSAmJiAodGhpcy5hY2NvdW50U2VydmljZS5pc0FkbWluKCkgfHwgdGhpcy5hY2NvdW50U2VydmljZS5pc1N1cGVydmlzb3IoKSk7XG4gICAgcmV0dXJuIHRoaXMubWVzc2FnZVNlcnZpY2Uub3BlbkNvbXBvc2VNb2RhbCh7XG4gICAgICBzdWdnZXN0Rm46ICh2YWx1ZSwgZmlsdGVyLCBzb3J0QnksIHNvcnREaXJlY3Rpb24pID0+IHRoaXMuZGF0YVNlcnZpY2Uuc3VnZ2VzdCh2YWx1ZSwgZmlsdGVyLCBzb3J0QnksIHNvcnREaXJlY3Rpb24pLFxuICAgICAgY2FuUmVjaXBpZW50RmlsdGVyLFxuICAgICAgcmVjaXBpZW50RmlsdGVyQ291bnQ6IHRoaXMudG90YWxSb3dDb3VudCxcbiAgICAgIGRhdGE6IE1lc3NhZ2UuZnJvbU9iamVjdCh7XG4gICAgICAgIHJlY2lwaWVudHMsXG4gICAgICAgIHJlY2lwaWVudEZpbHRlcixcbiAgICAgIH0pLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgcmVzdG9yZUNvbXBhY3RNb2RlKG9wdHM/OiB7IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIGlmICghdGhpcy51c2VQYWdlU2V0dGluZ3MgfHwgaXNOaWxPckJsYW5rKHRoaXMuc2V0dGluZ3NJZCkgfHwgaXNOb3ROaWwodGhpcy5jb21wYWN0KSkgcmV0dXJuO1xuXG4gICAgY29uc3QgY29tcGFjdCA9IHRvQm9vbGVhbihcbiAgICAgIHRoaXMuc2V0dGluZ3MuZ2V0UGFnZVNldHRpbmdzKHRoaXMuc2V0dGluZ3NJZCwgVEFCTEVfU0VUVElOR1NfRU5VTS5DT01QQUNUX1JPV1NfS0VZKSxcbiAgICAgIHRvQm9vbGVhbih0aGlzLmNvbXBhY3QsIHRoaXMuZGVmYXVsdENvbXBhY3QpXG4gICAgKTtcbiAgICBpZiAodGhpcy5jb21wYWN0ICE9PSBjb21wYWN0KSB7XG4gICAgICB0aGlzLmNvbXBhY3QgPSBjb21wYWN0O1xuXG4gICAgICAvLyBFbWl0IGV2ZW50XG4gICAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdG9nZ2xlQ29tcGFjdE1vZGUoKSB7XG4gICAgdGhpcy5jb21wYWN0ID0gIXRoaXMuY29tcGFjdDtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHJ4LWFuZ3VsYXIvbm8tZXhwbGljaXQtY2hhbmdlLWRldGVjdGlvbi1hcGlzXG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICBpZiAodGhpcy51c2VQYWdlU2V0dGluZ3MgJiYgaXNOb3ROaWxPckJsYW5rKHRoaXMuc2V0dGluZ3NJZCkpIHtcbiAgICAgIGF3YWl0IHRoaXMuc2F2ZVBhZ2VTZXR0aW5ncyh0aGlzLmNvbXBhY3QsIFRBQkxFX1NFVFRJTkdTX0VOVU0uQ09NUEFDVF9ST1dTX0tFWSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZXhwb3J0VG9Dc3YoZXZlbnQ6IEV2ZW50KSB7XG4gICAgLy8gUHJlcGFyZSBDU1Ygb3B0aW9uc1xuICAgIGNvbnN0IHNlcGFyYXRvciA9IENzdlV0aWxzLmdldExvY2FsaXplZFNlcGFyYXRvcih0aGlzLnRyYW5zbGF0ZSk7XG4gICAgY29uc3QgZW5jb2RpbmcgPSBDc3ZVdGlscy5nZXRMb2NhbGl6ZWRFbmNvZGluZyh0aGlzLnRyYW5zbGF0ZSk7XG4gICAgY29uc3QgdHJhbnNsYXRpb25zID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChbXG4gICAgICAnQ09NTU9OLkRBVEVfVElNRV9QQVRURVJOJyxcbiAgICAgICdVU0VSLkxJU1QuVElUTEUnLFxuICAgICAgJ1VTRVIuRU1BSUwnLFxuICAgICAgJ1VTRVIuRklSU1RfTkFNRScsXG4gICAgICAnVVNFUi5MQVNUX05BTUUnLFxuICAgICAgJ1VTRVIuVVNFUk5BTUUnLFxuICAgICAgJ1VTRVIuVVNFUk5BTUVfRVhUUkFORVQnLFxuICAgICAgJ1VTRVIuREVQQVJUTUVOVF9MQUJFTCcsXG4gICAgICAnVVNFUi5ERVBBUlRNRU5UX05BTUUnLFxuICAgICAgJ1VTRVIuUFJPRklMRScsXG4gICAgICAnVVNFUi5TVEFUVVMnLFxuICAgICAgJ1VTRVIuUFVCS0VZJyxcbiAgICAgIC4uLih0aGlzLmFkZGl0aW9uYWxGaWVsZHMgfHwgW10pLm1hcCgoZmllbGQpID0+IGZpZWxkLmxhYmVsKSxcbiAgICAgICdVU0VSLkNSRUFUSU9OX0RBVEUnLFxuICAgICAgJ1VTRVIuVVBEQVRFX0RBVEUnLFxuICAgICAgLi4udGhpcy5zdGF0dXNMaXN0Lm1hcCgoc3RhdHVzKSA9PiBzdGF0dXMubGFiZWwpLFxuICAgIF0pO1xuICAgIGNvbnN0IGRhdGVUaW1lUGF0dGVybiA9IHRyYW5zbGF0aW9uc1snQ09NTU9OLkRBVEVfVElNRV9QQVRURVJOJ107XG4gICAgY29uc3QgZmlsZW5hbWUgPSB0cmFuc2xhdGlvbnNbJ1VTRVIuTElTVC5USVRMRSddICsgJy5jc3YnO1xuICAgIGNvbnN0IGhlYWRlcnMgPSBbXG4gICAgICB0cmFuc2xhdGlvbnNbJ1VTRVIuRU1BSUwnXSxcbiAgICAgIHRyYW5zbGF0aW9uc1snVVNFUi5GSVJTVF9OQU1FJ10sXG4gICAgICB0cmFuc2xhdGlvbnNbJ1VTRVIuTEFTVF9OQU1FJ10sXG4gICAgICAuLi4odGhpcy5zaG93VXNlcm5hbWVDb2x1bW4gPyBbdHJhbnNsYXRpb25zWydVU0VSLlVTRVJOQU1FJ11dIDogW10pLFxuICAgICAgLi4uKHRoaXMuc2hvd1VzZXJuYW1lRXh0cmFuZXRDb2x1bW4gPyBbdHJhbnNsYXRpb25zWydVU0VSLlVTRVJOQU1FX0VYVFJBTkVUJ11dIDogW10pLFxuICAgICAgdHJhbnNsYXRpb25zWydVU0VSLlBST0ZJTEUnXSxcbiAgICAgIHRyYW5zbGF0aW9uc1snVVNFUi5TVEFUVVMnXSxcbiAgICAgIHRyYW5zbGF0aW9uc1snVVNFUi5QVUJLRVknXSxcbiAgICAgIC4uLih0aGlzLmFkZGl0aW9uYWxGaWVsZHMgfHwgW10pLm1hcCgoZmllbGQpID0+IHRyYW5zbGF0aW9uc1tmaWVsZC5sYWJlbF0pLFxuICAgICAgdHJhbnNsYXRpb25zWydVU0VSLkNSRUFUSU9OX0RBVEUnXSxcbiAgICAgIHRyYW5zbGF0aW9uc1snVVNFUi5VUERBVEVfREFURSddLFxuICAgIF07XG5cbiAgICBjb25zdCBhZGRpdGlvbmFsRmllbGRzRm5zID0gKHRoaXMuYWRkaXRpb25hbEZpZWxkcyB8fCBbXSkubWFwKEZvcm1GaWVsZERlZmluaXRpb25VdGlscy5nZXREaXNwbGF5VmFsdWVGbik7XG5cbiAgICBjb25zdCByb3dzID0gKHRoaXMuc2VsZWN0aW9uLmlzRW1wdHkoKSA/IHRoaXMuZGF0YVNvdXJjZS5nZXRSb3dzKCkgOiB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZClcbiAgICAgIC5tYXAoKGVsZW1lbnQpID0+IGVsZW1lbnQuY3VycmVudERhdGEpXG4gICAgICAubWFwKChwZXJzb24pID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gdGhpcy5zdGF0dXNCeUlkW3BlcnNvbi5zdGF0dXNJZF07XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgcGVyc29uLmxhc3ROYW1lLFxuICAgICAgICAgIHBlcnNvbi5maXJzdE5hbWUsXG4gICAgICAgICAgcGVyc29uLmVtYWlsLFxuICAgICAgICAgIC4uLih0aGlzLnNob3dVc2VybmFtZUNvbHVtbiA/IFtwZXJzb24udXNlcm5hbWVdIDogW10pLFxuICAgICAgICAgIC4uLih0aGlzLnNob3dVc2VybmFtZUV4dHJhbmV0Q29sdW1uID8gW3BlcnNvbi51c2VybmFtZUV4dHJhbmV0XSA6IFtdKSxcbiAgICAgICAgICBwZXJzb24ubWFpblByb2ZpbGUsXG4gICAgICAgICAgc3RhdHVzID8gdHJhbnNsYXRpb25zW3N0YXR1cz8ubGFiZWxdIDogbnVsbCxcbiAgICAgICAgICBwZXJzb24ucHVia2V5LFxuICAgICAgICAgIC4uLmFkZGl0aW9uYWxGaWVsZHNGbnMubWFwKChkaXNwbGF5Rm4sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGdldFByb3BlcnR5QnlQYXRoKHBlcnNvbiwgdGhpcy5hZGRpdGlvbmFsRmllbGRzW2luZGV4XS5rZXkpO1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZygnW3VzZXJzXSBBZGRpdGlvbmFsIGZpZWxkIGRpc3BsYXlGbicsIHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiBkaXNwbGF5Rm4odmFsdWUpO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGZyb21EYXRlSVNPU3RyaW5nKHBlcnNvbi5jcmVhdGlvbkRhdGUpLmZvcm1hdChkYXRlVGltZVBhdHRlcm4pLFxuICAgICAgICAgIGZyb21EYXRlSVNPU3RyaW5nKHBlcnNvbi51cGRhdGVEYXRlKS5mb3JtYXQoZGF0ZVRpbWVQYXR0ZXJuKSxcbiAgICAgICAgXTtcbiAgICAgIH0pO1xuXG4gICAgQ3N2VXRpbHMuZXhwb3J0VG9GaWxlKHJvd3MsIHsgZmlsZW5hbWUsIGhlYWRlcnMsIHNlcGFyYXRvciwgZW5jb2RpbmcgfSk7XG4gIH1cbn1cbiIsIjxhcHAtdG9vbGJhclxuICBbdGl0bGVdPVwiJ1VTRVIuTElTVC5USVRMRScgfCB0cmFuc2xhdGVcIlxuICBjb2xvcj1cInByaW1hcnlcIlxuICBbY2FuR29CYWNrXT1cImZhbHNlXCJcbiAgW2hhc1ZhbGlkYXRlXT1cIihsb2FkaW5nU3ViamVjdCB8IGFzeW5jKSAhPT0gdHJ1ZSAmJiAoZGlydHlTdWJqZWN0IHwgYXN5bmMpID09PSB0cnVlXCJcbiAgKG9uVmFsaWRhdGUpPVwic2F2ZSgpXCJcbj5cbiAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cbiAgICA8IS0tIENvbXBvc2UgbWVzc2FnZSAtLT5cbiAgICA8YnV0dG9uXG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICpuZ0lmPVwiY2FuU2VuZE1lc3NhZ2VcIlxuICAgICAgW3RpdGxlXT1cIidVU0VSLkxJU1QuQlROX1NFTkRfTUVTU0FHRScgfCB0cmFuc2xhdGVcIlxuICAgICAgKGNsaWNrKT1cIm9wZW5Db21wb3NlTWVzc2FnZU1vZGFsKCRldmVudClcIlxuICAgID5cbiAgICAgIDxpb24taWNvbiBuYW1lPVwibWFpbFwiIHNsb3Q9XCJpY29uLW9ubHlcIj48L2lvbi1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgQGlmIChzZWxlY3Rpb24gfCBpc0VtcHR5U2VsZWN0aW9uKSB7XG4gICAgICA8IS0tIEFkZCAtLT5cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiY2FuRWRpdCAmJiAhbW9iaWxlXCIgW3RpdGxlXT1cIidDT01NT04uQlROX0FERCcgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwiYWRkUm93KClcIj5cbiAgICAgICAgPG1hdC1pY29uPmFkZDwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPCEtLSBSZWZyZXNoIC0tPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCIhbW9iaWxlXCIgW3RpdGxlXT1cIidDT01NT04uQlROX1JFRlJFU0gnIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cImVtaXRSZWZyZXNoKClcIj5cbiAgICAgICAgPG1hdC1pY29uPnJlZnJlc2g8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDwhLS0gcmVzZXQgZmlsdGVyIC0tPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInJlc2V0RmlsdGVyKClcIiAqbmdJZj1cImZpbHRlckNyaXRlcmlhQ291bnRcIj5cbiAgICAgICAgPG1hdC1pY29uIGNvbG9yPVwiYWNjZW50XCI+ZmlsdGVyX2xpc3RfYWx0PC9tYXQtaWNvbj5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1zZWNvbmRhcnlcIiBzdHlsZT1cImxlZnQ6IDE2cHg7IHRvcDogNXB4OyBmb250LXdlaWdodDogYm9sZFwiPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8IS0tIHNob3cgZmlsdGVyIC0tPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImZpbHRlckV4cGFuc2lvblBhbmVsLnRvZ2dsZSgpXCI+XG4gICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICpuZ0lmPVwiZmlsdGVyQ3JpdGVyaWFDb3VudDsgZWxzZSBlbXB0eUZpbHRlclwiXG4gICAgICAgICAgW21hdEJhZGdlXT1cImZpbHRlckNyaXRlcmlhQ291bnRcIlxuICAgICAgICAgIG1hdEJhZGdlQ29sb3I9XCJhY2NlbnRcIlxuICAgICAgICAgIG1hdEJhZGdlU2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICBtYXRCYWRnZVBvc2l0aW9uPVwiYWJvdmUgYWZ0ZXJcIlxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwiZmFsc2VcIlxuICAgICAgICA+XG4gICAgICAgICAgZmlsdGVyX2xpc3RfYWx0XG4gICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZW1wdHlGaWx0ZXI+XG4gICAgICAgICAgPG1hdC1pY29uPmZpbHRlcl9saXN0X2FsdDwvbWF0LWljb24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2J1dHRvbj5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDwhLS0gZGVsZXRlIC0tPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgY2xhc3M9XCJoaWRkZW4teHMgaGlkZGVuLXNtXCJcbiAgICAgICAgW3RpdGxlXT1cIidDT01NT04uQlROX0RFTEVURScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAoY2xpY2spPVwiZGVsZXRlU2VsZWN0aW9uKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cblxuICAgIEBpZiAoIW1vYmlsZSkge1xuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW3RpdGxlXT1cIidDT01NT04uQlROX09QVElPTlMnIHwgdHJhbnNsYXRlXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cInRvb2xiYXJPcHRpb25zTWVudVwiPlxuICAgICAgICA8bWF0LWljb24+bW9yZV92ZXJ0PC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cbiAgPC9pb24tYnV0dG9ucz5cbjwvYXBwLXRvb2xiYXI+XG5cbjwhLS0gVG9vbGJhciBvcHRpb24gbWVudSAtLT5cbjxtYXQtbWVudSAjdG9vbGJhck9wdGlvbnNNZW51PVwibWF0TWVudVwiIHhQb3NpdGlvbj1cImFmdGVyXCI+XG4gIDwhLS0gZXhwb3J0IGJ1dHRvbiAtLT5cbiAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFtkaXNhYmxlZF09XCIhY2FuRG93bmxvYWRcIiAoY2xpY2spPVwiZXhwb3J0VG9Dc3YoJGV2ZW50KVwiPlxuICAgIDxtYXQtaWNvbj5kb3dubG9hZDwvbWF0LWljb24+XG4gICAgPGlvbi1sYWJlbCB0cmFuc2xhdGU+RklMRS5DU1YuQlROX0RPV05MT0FEX0hFTFA8L2lvbi1sYWJlbD5cbiAgPC9idXR0b24+XG48L21hdC1tZW51PlxuXG48aW9uLWNvbnRlbnQgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiPlxuICA8IS0tIGVycm9yIC0tPlxuICA8aW9uLWl0ZW1cbiAgICAqbmdJZj1cImVycm9yU3ViamVjdCB8IGFzeW5jOyBsZXQgZXJyb3JcIlxuICAgIGxpbmVzPVwibm9uZVwiXG4gICAgY2xhc3M9XCJoaWRkZW4tc20gaGlkZGVuLXhzIGhpZGRlbi1tb2JpbGVcIlxuICAgIEBzbGlkZVVwRG93bkFuaW1hdGlvblxuICA+XG4gICAgPGlvbi1pY29uIGNvbG9yPVwiZGFuZ2VyXCIgc2xvdD1cInN0YXJ0XCIgbmFtZT1cImFsZXJ0LWNpcmNsZVwiPjwvaW9uLWljb24+XG4gICAgPGlvbi1sYWJlbCBjb2xvcj1cImRhbmdlclwiIGNsYXNzPVwiZXJyb3JcIiBbaW5uZXJIVE1MXT1cImVycm9yIHwgdHJhbnNsYXRlXCI+PC9pb24tbGFiZWw+XG4gIDwvaW9uLWl0ZW0+XG5cbiAgPCEtLSBkZWJ1ZyAtLT5cbiAgPGFwcC1kZWJ1ZyAqbmdJZj1cImRlYnVnXCI+XG4gICAgPGlvbi1ncmlkIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIj5cbiAgICAgIDxpb24tcm93PlxuICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICBmb2N1c0NvbHVtbjoge3sgZm9jdXNDb2x1bW4gfX1cbiAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICBsb2FkaW5nU3ViamVjdDoge3sgbG9hZGluZyB9fVxuICAgICAgICAgIDxiciAvPlxuICAgICAgICA8L2lvbi1jb2w+XG4gICAgICA8L2lvbi1yb3c+XG4gICAgPC9pb24tZ3JpZD5cbiAgPC9hcHAtZGVidWc+XG5cbiAgPCEtLSBzZWFyY2ggLS0+XG4gIDxtYXQtZXhwYW5zaW9uLXBhbmVsICNmaWx0ZXJFeHBhbnNpb25QYW5lbCBjbGFzcz1cImlvbi1uby1wYWRkaW5nIGZpbHRlci1wYW5lbCBmaWx0ZXItcGFuZWwtZmxvYXRpbmdcIj5cbiAgICA8Zm9ybSBjbGFzcz1cImZvcm0tY29udGFpbmVyIGlvbi1wYWRkaW5nXCIgW2Zvcm1Hcm91cF09XCJmaWx0ZXJGb3JtXCIgKG5nU3VibWl0KT1cImVtaXRSZWZyZXNoKClcIj5cbiAgICAgIDxpb24tZ3JpZD5cbiAgICAgICAgPGlvbi1yb3c+XG4gICAgICAgICAgPGlvbi1jb2w+XG4gICAgICAgICAgICA8IS0tIHNlYXJjaCAtLT5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgPG1hdC1sYWJlbD57eyAnVVNFUi5MSVNULkZJTFRFUi5TRUFSQ0gnIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJzZWFyY2hUZXh0XCIgLz5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdFN1ZmZpeFxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhckNvbnRyb2xWYWx1ZSgkZXZlbnQsIGZpbHRlckZvcm0uY29udHJvbHMuc2VhcmNoVGV4dClcIlxuICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiZmlsdGVyRm9ybS5jb250cm9scy5zZWFyY2hUZXh0LmRpc2FibGVkIHx8ICFmaWx0ZXJGb3JtLmNvbnRyb2xzLnNlYXJjaFRleHQudmFsdWVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDwvaW9uLWNvbD5cblxuICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgPCEtLSBzdGF0dXMgLS0+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3sgJ1VTRVIuU1RBVFVTJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJzdGF0dXNJZFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJudWxsXCI+XG4gICAgICAgICAgICAgICAgICA8aT48c3BhbiB0cmFuc2xhdGU+Q09NTU9OLkVNUFRZX09QVElPTjwvc3Bhbj48L2k+XG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIHN0YXR1c0xpc3RcIiBbdmFsdWVdPVwiaXRlbS5pZFwiPlxuICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cIml0ZW0uaWNvblwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgICB7eyBpdGVtLmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdFN1ZmZpeFxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhckNvbnRyb2xWYWx1ZSgkZXZlbnQsIGZpbHRlckZvcm0uY29udHJvbHMuc3RhdHVzSWQpXCJcbiAgICAgICAgICAgICAgICBbaGlkZGVuXT1cImZpbHRlckZvcm0uY29udHJvbHMuc3RhdHVzSWQuZGlzYWJsZWQgfHwgIWZpbHRlckZvcm0uY29udHJvbHMuc3RhdHVzSWQudmFsdWVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgPC9pb24tcm93PlxuICAgICAgPC9pb24tZ3JpZD5cbiAgICA8L2Zvcm0+XG5cbiAgICA8bWF0LWFjdGlvbi1yb3c+XG4gICAgICA8IS0tIENvdW50ZXIgIC0tPlxuICAgICAgPGlvbi1sYWJlbFxuICAgICAgICBbaGlkZGVuXT1cIihsb2FkaW5nU3ViamVjdCB8IGFzeW5jKSA9PT0gdHJ1ZSB8fCBmaWx0ZXJGb3JtLmRpcnR5XCJcbiAgICAgICAgW2NvbG9yXT1cImVtcHR5ICYmICdkYW5nZXInXCJcbiAgICAgICAgY2xhc3M9XCJpb24tcGFkZGluZ1wiXG4gICAgICA+XG4gICAgICAgIHt7XG4gICAgICAgICAgKHRvdGFsUm93Q291bnQgPyAnQ09NTU9OLlJFU1VMVF9DT1VOVCcgOiAnQ09NTU9OLk5PX1JFU1VMVCcpXG4gICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgIGNvdW50OiAodG90YWxSb3dDb3VudCB8IG51bWJlckZvcm1hdCksXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgPC9pb24tbGFiZWw+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0b29sYmFyLXNwYWNlclwiPjwvZGl2PlxuXG4gICAgICA8IS0tIENsb3NlIHBhbmVsIC0tPlxuICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICBjb2xvcj1cImRhcmtcIlxuICAgICAgICAoY2xpY2spPVwiZmlsdGVyRXhwYW5zaW9uUGFuZWwuY2xvc2UoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nU3ViamVjdCB8IGFzeW5jXCJcbiAgICAgID5cbiAgICAgICAgPGlvbi10ZXh0IHRyYW5zbGF0ZT5DT01NT04uQlROX0NMT1NFPC9pb24tdGV4dD5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgPCEtLSBTZWFyY2ggYnV0dG9uIC0tPlxuICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICBbY29sb3JdPVwiZmlsdGVyRm9ybS5kaXJ0eSA/ICd0ZXJ0aWFyeScgOiAnZGFyaydcIlxuICAgICAgICBbZmlsbF09XCJmaWx0ZXJGb3JtLmRpcnR5ID8gJ3NvbGlkJyA6ICdjbGVhcidcIlxuICAgICAgICAoY2xpY2spPVwiYXBwbHlGaWx0ZXJBbmRDbG9zZVBhbmVsKCRldmVudClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZ1N1YmplY3QgfCBhc3luY1wiXG4gICAgICA+XG4gICAgICAgIDxpb24tdGV4dCB0cmFuc2xhdGU+Q09NTU9OLkJUTl9BUFBMWTwvaW9uLXRleHQ+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgPC9tYXQtYWN0aW9uLXJvdz5cbiAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuXG4gIDwhLS0gZXJyb3IgLS0+XG4gIDxpb24taXRlbSAqbmdJZj1cIm1vYmlsZSAmJiAoZXJyb3JTdWJqZWN0IHwgYXN5bmMpOyBsZXQgZXJyb3JcIiBsaW5lcz1cIm5vbmVcIj5cbiAgICA8aW9uLWljb24gY29sb3I9XCJkYW5nZXJcIiBzbG90PVwic3RhcnRcIiBuYW1lPVwiYWxlcnQtY2lyY2xlXCI+PC9pb24taWNvbj5cbiAgICA8aW9uLWxhYmVsIGNvbG9yPVwiZGFuZ2VyXCIgY2xhc3M9XCJlcnJvclwiIFtpbm5lckhUTUxdPVwiZXJyb3IgfCB0cmFuc2xhdGVcIj48L2lvbi1sYWJlbD5cbiAgPC9pb24taXRlbT5cblxuICA8ZGl2IGNsYXNzPVwidGFibGUtY29udGFpbmVyXCI+XG4gICAgPHRhYmxlXG4gICAgICAjdGFibGVcbiAgICAgIG1hdC10YWJsZVxuICAgICAgbWF0U29ydFxuICAgICAgW2NsYXNzLmNvbXBhY3RdPVwiY29tcGFjdFwiXG4gICAgICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCJcbiAgICAgIFttYXRTb3J0QWN0aXZlXT1cImRlZmF1bHRTb3J0QnlcIlxuICAgICAgW21hdFNvcnREaXJlY3Rpb25dPVwiZGVmYXVsdFNvcnREaXJlY3Rpb25cIlxuICAgICAgbWF0U29ydERpc2FibGVDbGVhclxuICAgICAgW3RyYWNrQnldPVwidHJhY2tCeUZuXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInNlbGVjdFwiIFtzdGlja3ldPVwic3RpY2t5XCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgW2NsYXNzLmNkay12aXN1YWxseS1oaWRkZW5dPVwiIWlubGluZUVkaXRpb25cIj5cbiAgICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IG1hc3RlclRvZ2dsZSgpIDogbnVsbFwiXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJ0aGlzIHwgaXNBbGxTZWxlY3RlZFwiXG4gICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJ0aGlzIHwgaXNOb3RBbGxTZWxlY3RlZFwiXG4gICAgICAgICAgPjwvbWF0LWNoZWNrYm94PlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgW2NsYXNzLmNkay12aXN1YWxseS1oaWRkZW5dPVwiIWlubGluZUVkaXRpb25cIj5cbiAgICAgICAgICA8bWF0LWNoZWNrYm94IChjbGljayk9XCJ0b2dnbGVTZWxlY3RSb3coJGV2ZW50LCByb3cpXCIgW2NoZWNrZWRdPVwic2VsZWN0aW9uIHwgaXNTZWxlY3RlZDogcm93XCI+PC9tYXQtY2hlY2tib3g+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBJZCBDb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImlkXCIgW3N0aWNreV09XCJzdGlja3lcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+XG4gICAgICAgICAgPGlvbi1sYWJlbD4jPC9pb24tbGFiZWw+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIj5cbiAgICAgICAgICA8aW9uLWxhYmVsPnt7IHJvdy5jdXJyZW50RGF0YS5pZCB9fTwvaW9uLWxhYmVsPlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gYXZhdGFyIENvbHVtbiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiYXZhdGFyXCIgW3N0aWNreV09XCJzdGlja3lcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj48L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgICAgPGlvbi1hdmF0YXIgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiJ3doaXRlJ1wiPlxuICAgICAgICAgICAgPGlvbi1pbWcgKm5nSWY9XCJyb3cuY3VycmVudERhdGEuYXZhdGFyOyBsZXQgYXZhdGFyVXJsOyBlbHNlOiBnZW5lcmF0ZUljb25cIiBbc3JjXT1cImF2YXRhclVybFwiPjwvaW9uLWltZz5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZ2VuZXJhdGVJY29uPlxuICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMzlcIiBoZWlnaHQ9XCIzOVwiIFtkYXRhLWpkZW50aWNvbi12YWx1ZV09XCJyb3cuY3VycmVudERhdGEuaWRcIj48L3N2Zz5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9pb24tYXZhdGFyPlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gbGFzdE5hbWUgIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJsYXN0TmFtZVwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5cbiAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+VVNFUi5MQVNUX05BTUU8L3NwYW4+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIiAoY2xpY2spPVwiZm9jdXNDb2x1bW4gPSAnbGFzdE5hbWUnXCI+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwicm93LmVkaXRpbmc7IGVsc2UgcmVhZG9ubHlDZWxsXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInJvdy52YWxpZGF0b3IuY29udHJvbHNbJ2xhc3ROYW1lJ11cIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1VTRVIuTEFTVF9OQU1FJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIFtyZWFkb25seV09XCIhcm93LmVkaXRpbmdcIlxuICAgICAgICAgICAgICBbYXBwQXV0b2ZvY3VzXT1cInJvdy5lZGl0aW5nICYmIGZvY3VzQ29sdW1uID09PSAnbGFzdE5hbWUnXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicm93LnZhbGlkYXRvci5jb250cm9sc1snbGFzdE5hbWUnXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICAgICAgRVJST1IuRklFTERfUkVRVUlSRURcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInJvdy52YWxpZGF0b3IuY29udHJvbHNbJ2xhc3ROYW1lJ10uaGFzRXJyb3IoJ21pbmxlbmd0aCcpXCI+XG4gICAgICAgICAgICAgIDxzcGFuPnt7ICdFUlJPUi5GSUVMRF9NSU5fTEVOR1RIJyB8IHRyYW5zbGF0ZTogeyByZXF1aXJlZExlbmd0aDogMiB9IH19PC9zcGFuPlxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3JlYWRvbmx5Q2VsbD5cbiAgICAgICAgICAgIDxpb24tbGFiZWwgYXBwQXV0b1RpdGxlPlxuICAgICAgICAgICAgICB7eyByb3cudmFsaWRhdG9yIHwgZm9ybUdldFZhbHVlOiAnbGFzdE5hbWUnIH19XG4gICAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gZmlyc3RuYW1lIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJmaXJzdE5hbWVcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+XG4gICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPlVTRVIuRklSU1RfTkFNRTwvc3Bhbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIChjbGljayk9XCJmb2N1c0NvbHVtbiA9ICdmaXJzdE5hbWUnXCI+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwicm93LmVkaXRpbmc7IGVsc2UgcmVhZG9ubHlDZWxsXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInJvdy52YWxpZGF0b3IuY29udHJvbHNbJ2ZpcnN0TmFtZSddXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidVU0VSLkZJUlNUX05BTUUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIiFyb3cuZWRpdGluZ1wiXG4gICAgICAgICAgICAgIFthcHBBdXRvZm9jdXNdPVwicm93LmVkaXRpbmcgJiYgZm9jdXNDb2x1bW4gPT09ICdmaXJzdE5hbWUnXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicm93LnZhbGlkYXRvci5jb250cm9sc1snZmlyc3ROYW1lJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIiB0cmFuc2xhdGU+XG4gICAgICAgICAgICAgIEVSUk9SLkZJRUxEX1JFUVVJUkVEXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJyb3cudmFsaWRhdG9yLmNvbnRyb2xzWydmaXJzdE5hbWUnXS5oYXNFcnJvcignbWlubGVuZ3RoJylcIj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgJ0VSUk9SLkZJRUxEX01JTl9MRU5HVEgnIHwgdHJhbnNsYXRlOiB7IHJlcXVpcmVkTGVuZ3RoOiAyIH0gfX08L3NwYW4+XG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmVhZG9ubHlDZWxsPlxuICAgICAgICAgICAgPGlvbi1sYWJlbCBhcHBBdXRvVGl0bGU+XG4gICAgICAgICAgICAgIHt7IHJvdy52YWxpZGF0b3IgfCBmb3JtR2V0VmFsdWU6ICdmaXJzdE5hbWUnIH19XG4gICAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gZW1haWwgIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJlbWFpbFwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5cbiAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+VVNFUi5FTUFJTDwvc3Bhbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIChjbGljayk9XCJmb2N1c0NvbHVtbiA9ICdlbWFpbCdcIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJyb3cuZWRpdGluZzsgZWxzZSByZWFkb25seUNlbGxcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicm93LnZhbGlkYXRvci5jb250cm9sc1snZW1haWwnXVwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInVVNFUi5FTUFJTCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiIXJvdy5lZGl0aW5nXCJcbiAgICAgICAgICAgICAgW2FwcEF1dG9mb2N1c109XCJyb3cuZWRpdGluZyAmJiBmb2N1c0NvbHVtbiA9PT0gJ2VtYWlsJ1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInJvdy52YWxpZGF0b3IuY29udHJvbHNbJ2VtYWlsJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIiB0cmFuc2xhdGU+XG4gICAgICAgICAgICAgIEVSUk9SLkZJRUxEX1JFUVVJUkVEXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJyb3cudmFsaWRhdG9yLmNvbnRyb2xzWydlbWFpbCddLmhhc0Vycm9yKCdlbWFpbCcpXCI+XG4gICAgICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9OT1RfVkFMSURfRU1BSUw8L3NwYW4+XG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmVhZG9ubHlDZWxsPlxuICAgICAgICAgICAgPGlvbi1sYWJlbCBhcHBBdXRvVGl0bGU+XG4gICAgICAgICAgICAgIHt7IHJvdy52YWxpZGF0b3IgfCBmb3JtR2V0VmFsdWU6ICdlbWFpbCcgfX1cbiAgICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBhZGRpdGlvbmFsIGZpZWxkcyAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRlZmluaXRpb24gb2YgYWRkaXRpb25hbEZpZWxkc1wiIFttYXRDb2x1bW5EZWZdPVwiZGVmaW5pdGlvbi5rZXlcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cbiAgICAgICAgICA8c3Bhbj57eyBkZWZpbml0aW9uLmxhYmVsIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgKGNsaWNrKT1cImZvY3VzQ29sdW1uID0gZGVmaW5pdGlvbi5rZXlcIj5cbiAgICAgICAgICA8YXBwLWZvcm0tZmllbGRcbiAgICAgICAgICAgIGZsb2F0TGFiZWw9XCJuZXZlclwiXG4gICAgICAgICAgICBbZGVmaW5pdGlvbl09XCJkZWZpbml0aW9uXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJyb3cudmFsaWRhdG9yLmNvbnRyb2xzW2RlZmluaXRpb24ua2V5XVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiZGVmaW5pdGlvbi5leHRyYT8uYWNjb3VudD8ucmVxdWlyZWRcIlxuICAgICAgICAgICAgW2F1dG9mb2N1c109XCJyb3cuZWRpdGluZyAmJiBmb2N1c0NvbHVtbiA9PT0gZGVmaW5pdGlvbi5rZXlcIlxuICAgICAgICAgID48L2FwcC1mb3JtLWZpZWxkPlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gcHJvZmlsZSBjb2x1bW4gIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJwcm9maWxlXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XG4gICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPlVTRVIuUFJPRklMRTwvc3Bhbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIChjbGljayk9XCJmb2N1c0NvbHVtbiA9ICdwcm9maWxlJ1wiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJyb3cudmFsaWRhdG9yLmNvbnRyb2xzWydtYWluUHJvZmlsZSddXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidVU0VSLlBST0ZJTEUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgcHJvZmlsZXNcIiBbdmFsdWVdPVwiaXRlbVwiPlxuICAgICAgICAgICAgICAgIHt7ICdVU0VSLlBST0ZJTEVfRU5VTS4nICsgaXRlbSB8IHVwcGVyY2FzZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicm93LnZhbGlkYXRvci5jb250cm9sc1snbWFpblByb2ZpbGUnXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICAgICAgRVJST1IuRklFTERfUkVRVUlSRURcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBTdGF0dXMgY29sdW1uICAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic3RhdHVzXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XG4gICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPlVTRVIuU1RBVFVTPC9zcGFuPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgKGNsaWNrKT1cImZvY3VzQ29sdW1uID0gJ3N0YXR1cydcIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicm93LnZhbGlkYXRvci5jb250cm9sc1snc3RhdHVzSWQnXVwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInUkVGRVJFTlRJQUwuU1RBVFVTJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxtYXQtc2VsZWN0LXRyaWdnZXI+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyb3cudmFsaWRhdG9yLmNvbnRyb2xzWydzdGF0dXNJZCddLnZhbHVlICZndDs9MFwiPlxuICAgICAgICAgICAgICAgICAge3sgc3RhdHVzQnlJZFtyb3cudmFsaWRhdG9yLmNvbnRyb2xzWydzdGF0dXNJZCddLnZhbHVlXT8ubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvbWF0LXNlbGVjdC10cmlnZ2VyPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzdGF0dXNMaXN0XCIgW3ZhbHVlXT1cIml0ZW0uaWRcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+PGlvbi1pY29uIFtuYW1lXT1cIml0ZW0uaWNvblwiPjwvaW9uLWljb24+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICB7eyBpdGVtLmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJyb3cudmFsaWRhdG9yLmNvbnRyb2xzWydzdGF0dXNJZCddLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCIgdHJhbnNsYXRlPlxuICAgICAgICAgICAgICBFUlJPUi5GSUVMRF9SRVFVSVJFRFxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIHVzZXJuYW1lIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ1c2VybmFtZVwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5cbiAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+VVNFUi5VU0VSTkFNRTwvc3Bhbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIChjbGljayk9XCJmb2N1c0NvbHVtbiA9ICd1c2VybmFtZSdcIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJyb3cuZWRpdGluZzsgZWxzZSByZWFkb25seUNlbGxcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicm93LnZhbGlkYXRvci5jb250cm9scy51c2VybmFtZVwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInVVNFUi5VU0VSTkFNRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiIXJvdy5lZGl0aW5nXCJcbiAgICAgICAgICAgICAgW2FwcEF1dG9mb2N1c109XCJyb3cuZWRpdGluZyAmJiBmb2N1c0NvbHVtbiA9PT0gJ3VzZXJuYW1lJ1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInJvdy52YWxpZGF0b3IuY29udHJvbHMudXNlcm5hbWUuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIiB0cmFuc2xhdGU+XG4gICAgICAgICAgICAgIEVSUk9SLkZJRUxEX1JFUVVJUkVEXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmVhZG9ubHlDZWxsPlxuICAgICAgICAgICAgPGlvbi1sYWJlbCBhcHBBdXRvVGl0bGU+XG4gICAgICAgICAgICAgIHt7IHJvdy52YWxpZGF0b3IgfCBmb3JtR2V0VmFsdWU6ICd1c2VybmFtZScgfX1cbiAgICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSB1c2VybmFtZSBleHRyYW5ldCAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwidXNlcm5hbWVFeHRyYW5ldFwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5cbiAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+VVNFUi5VU0VSTkFNRV9FWFRSQU5FVDwvc3Bhbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIChjbGljayk9XCJmb2N1c0NvbHVtbiA9ICd1c2VybmFtZUV4dHJhbmV0J1wiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cInJvdy5lZGl0aW5nOyBlbHNlIHJlYWRvbmx5Q2VsbFwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJyb3cudmFsaWRhdG9yLmNvbnRyb2xzLnVzZXJuYW1lRXh0cmFuZXRcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1VTRVIuVVNFUk5BTUVfRVhUUkFORVQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIiFyb3cuZWRpdGluZ1wiXG4gICAgICAgICAgICAgIFthcHBBdXRvZm9jdXNdPVwicm93LmVkaXRpbmcgJiYgZm9jdXNDb2x1bW4gPT09ICd1c2VybmFtZUV4dHJhbmV0J1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInJvdy52YWxpZGF0b3IuY29udHJvbHMudXNlcm5hbWVFeHRyYW5ldC5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICAgICAgRVJST1IuRklFTERfUkVRVUlSRURcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNyZWFkb25seUNlbGw+XG4gICAgICAgICAgICA8aW9uLWxhYmVsIGFwcEF1dG9UaXRsZT5cbiAgICAgICAgICAgICAge3sgcm93LnZhbGlkYXRvciB8IGZvcm1HZXRWYWx1ZTogJ3VzZXJuYW1lRXh0cmFuZXQnIH19XG4gICAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gcHVia2V5ICAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwicHVia2V5XCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPlxuICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5VU0VSLlBVQktFWTwvc3Bhbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRkXG4gICAgICAgICAgbWF0LWNlbGxcbiAgICAgICAgICAqbWF0Q2VsbERlZj1cImxldCByb3dcIlxuICAgICAgICAgIFt0aXRsZV09XCJyb3cudmFsaWRhdG9yLmNvbnRyb2xzLnB1YmtleS52YWx1ZUNoYW5nZXMgfCBhc3luY1wiXG4gICAgICAgICAgKGNsaWNrKT1cImZvY3VzQ29sdW1uID0gJ3B1YmtleSdcIlxuICAgICAgICA+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwicm93LmVkaXRpbmc7IGVsc2UgcmVhZG9ubHlDZWxsXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInJvdy52YWxpZGF0b3IuY29udHJvbHNbJ3B1YmtleSddXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidVU0VSLlBVQktFWScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiIXJvdy5lZGl0aW5nXCJcbiAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicm93LnZhbGlkYXRvci5jb250cm9scy5wdWJrZXkuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIiB0cmFuc2xhdGU+XG4gICAgICAgICAgICAgIEVSUk9SLkZJRUxEX1JFUVVJUkVEXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJyb3cudmFsaWRhdG9yLmNvbnRyb2xzLnB1YmtleS5oYXNFcnJvcigncHVia2V5JylcIj5cbiAgICAgICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPkVSUk9SLkZJRUxEX05PVF9WQUxJRF9QVUJLRVk8L3NwYW4+XG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmVhZG9ubHlDZWxsPlxuICAgICAgICAgICAgPGlvbi1sYWJlbCBhcHBBdXRvVGl0bGU+XG4gICAgICAgICAgICAgIHt7IHJvdy52YWxpZGF0b3IgfCBmb3JtR2V0VmFsdWU6ICdwdWJrZXknIH19XG4gICAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gQ3JlYXRpb24gZGF0ZSBjb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImNyZWF0aW9uRGF0ZVwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5cbiAgICAgICAgICA8aW9uLWxhYmVsIHRyYW5zbGF0ZT5VU0VSLkNSRUFUSU9OX0RBVEU8L2lvbi1sYWJlbD5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIGNsYXNzPVwibWF0LWZvcm0tZmllbGQtZGlzYWJsZWRcIj5cbiAgICAgICAgICA8aW9uLXRleHQgY2xhc3M9XCJpb24tdGV4dC1lbmRcIiBjb2xvcj1cIm1lZGl1bVwiICpuZ0lmPVwicm93LmlkICE9PSAtMVwiPlxuICAgICAgICAgICAge3sgcm93LmN1cnJlbnREYXRhLmNyZWF0aW9uRGF0ZSB8IGRhdGVGb3JtYXQ6IHsgdGltZTogdHJ1ZSB9IH19XG4gICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIFVwZGF0ZSBkYXRlIGNvbHVtbiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwidXBkYXRlRGF0ZVwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5cbiAgICAgICAgICA8aW9uLWxhYmVsIHRyYW5zbGF0ZT5VU0VSLlVQREFURV9EQVRFPC9pb24tbGFiZWw+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIiBjbGFzcz1cIm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkXCI+XG4gICAgICAgICAgPGlvbi10ZXh0IGNsYXNzPVwiaW9uLXRleHQtZW5kXCIgY29sb3I9XCJtZWRpdW1cIiAqbmdJZj1cInJvdy5pZCAhPT0gLTFcIj5cbiAgICAgICAgICAgIHt7IHJvdy5jdXJyZW50RGF0YS51cGRhdGVEYXRlIHwgZGF0ZUZvcm1hdDogeyB0aW1lOiB0cnVlIH0gfX1cbiAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gQWN0aW9ucyBidXR0b25zIGNvbHVtbiAtLT5cbiAgICAgIDxhcHAtYWN0aW9ucy1jb2x1bW5cbiAgICAgICAgW3N0aWNreUVuZF09XCJzdGlja3lFbmRcIlxuICAgICAgICAoY2FuY2VsT3JEZWxldGVDbGljayk9XCJjYW5jZWxPckRlbGV0ZSgkZXZlbnQuZXZlbnQsICRldmVudC5yb3cpXCJcbiAgICAgICAgKGNvbmZpcm1FZGl0Q3JlYXRlQ2xpY2spPVwiY29uZmlybUVkaXRDcmVhdGUoJGV2ZW50LmV2ZW50LCAkZXZlbnQucm93KVwiXG4gICAgICAgIChjb25maXJtQW5kQWRkQ2xpY2spPVwiY29uZmlybUFuZEFkZCgkZXZlbnQuZXZlbnQsICRldmVudC5yb3cpXCJcbiAgICAgICAgKGJhY2t3YXJkKT1cImNvbmZpcm1BbmRCYWNrd2FyZCgkZXZlbnQuZXZlbnQsICRldmVudC5yb3cpXCJcbiAgICAgICAgKGZvcndhcmQpPVwiY29uZmlybUFuZEZvcndhcmQoJGV2ZW50LmV2ZW50LCAkZXZlbnQucm93KVwiXG4gICAgICAgIFtjYW5DYW5jZWxdPVwiZmFsc2VcIlxuICAgICAgPlxuICAgICAgICA8IS0tIHRhYmxlIG9wdGlvbnMgbWVudSAtLT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIG1hdEhlYWRlclxuICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgIFt0aXRsZV09XCInQ09NTU9OLkJUTl9PUFRJT05TJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cInRhYmxlT3B0aW9uc01lbnVcIlxuICAgICAgICA+XG4gICAgICAgICAgPG1hdC1pY29uPm1vcmVfdmVydDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9hcHAtYWN0aW9ucy1jb2x1bW4+XG5cbiAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uczsgc3RpY2t5OiB0cnVlXCI+PC90cj5cbiAgICAgIDx0clxuICAgICAgICBtYXQtcm93XG4gICAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zXCJcbiAgICAgICAgW2NsYXNzLm1hdC1yb3ctc2VsZWN0ZWRdPVwicm93LmVkaXRpbmdcIlxuICAgICAgICBbY2xhc3MubWF0LXJvdy1lcnJvcl09XCJyb3cudmFsaWRhdG9yLmludmFsaWRcIlxuICAgICAgICBbY2xhc3MubWF0LXJvdy1kaXJ0eV09XCJyb3cuY3VycmVudERhdGEuZGlydHlcIlxuICAgICAgICBbY2xhc3MubWF0LXJvdy1kaXNhYmxlZF09XCIhcm93LmVkaXRpbmdcIlxuICAgICAgICAoY2xpY2spPVwiY2xpY2tSb3coJGV2ZW50LCByb3cpXCJcbiAgICAgICAgKGtleWRvd24uZXNjYXBlKT1cImVzY2FwZUVkaXRpbmdSb3coJGV2ZW50KVwiXG4gICAgICAgIFtjZGtUcmFwRm9jdXNdPVwiIXJvdy52YWxpZGF0b3I/LnZhbGlkXCJcbiAgICAgID48L3RyPlxuICAgIDwvdGFibGU+XG5cbiAgICA8IS0tIETDqWNsZW5jaGV1ciBpbnZpc2libGUgcG91ciBsZSBtYXQtbWVudSAtLT5cblxuICAgIEBpZiAobG9hZGluZ1N1YmplY3QgfCBhc3luYykge1xuICAgICAgPGlvbi1pdGVtPlxuICAgICAgICA8aW9uLXNrZWxldG9uLXRleHQgYW5pbWF0ZWQ+PC9pb24tc2tlbGV0b24tdGV4dD5cbiAgICAgIDwvaW9uLWl0ZW0+XG4gICAgfSBAZWxzZSBpZiAodG90YWxSb3dDb3VudCA9PT0gMCkge1xuICAgICAgPGlvbi1pdGVtPlxuICAgICAgICA8aW9uLXRleHQgY29sb3I9XCJkYW5nZXJcIiBjbGFzcz1cInRleHQtaXRhbGljXCIgdHJhbnNsYXRlPkNPTU1PTi5OT19SRVNVTFQ8L2lvbi10ZXh0PlxuICAgICAgPC9pb24taXRlbT5cbiAgICB9XG4gIDwvZGl2PlxuPC9pb24tY29udGVudD5cblxuPCEtLSBUYWJsZSBvcHRpb25zIG1lbnUgLS0+XG48bWF0LW1lbnUgI3RhYmxlT3B0aW9uc01lbnU9XCJtYXRNZW51XCIgeFBvc2l0aW9uPVwiYWZ0ZXJcIj5cbiAgPCEtLSBkaXNwbGF5IGNvbHVtbnMgLS0+XG4gIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwib3BlblNlbGVjdENvbHVtbnNNb2RhbCgkZXZlbnQpXCI+XG4gICAgPG1hdC1pY29uPnZpZXdfY29sdW1uPC9tYXQtaWNvbj5cbiAgICA8aW9uLWxhYmVsIHRyYW5zbGF0ZT5DT01NT04uRElTUExBWUVEX0NPTFVNTlNfRE9UUzwvaW9uLWxhYmVsPlxuICA8L2J1dHRvbj5cblxuICBAaWYgKHVzZVBhZ2VTZXR0aW5ncykge1xuICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuXG4gICAgPCEtLSBDb21wYWN0IG1vZGUgLS0+XG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJ0b2dnbGVDb21wYWN0TW9kZSgpXCI+XG4gICAgICA8bWF0LWljb24+e3sgY29tcGFjdCA/ICdjaGVja19ib3gnIDogJ2NoZWNrX2JveF9vdXRsaW5lX2JsYW5rJyB9fTwvbWF0LWljb24+XG4gICAgICA8aW9uLWxhYmVsIHRyYW5zbGF0ZT5DT01NT04uQlROX0NPTVBBQ1RfUk9XUzwvaW9uLWxhYmVsPlxuICAgIDwvYnV0dG9uPlxuICB9XG48L21hdC1tZW51PlxuXG48aW9uLWZvb3Rlcj5cbiAgPG1hdC1wYWdpbmF0b3JcbiAgICBbbGVuZ3RoXT1cInRvdGFsUm93Q291bnRcIlxuICAgIFtwYWdlU2l6ZV09XCJkZWZhdWx0UGFnZVNpemVcIlxuICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwiZGVmYXVsdFBhZ2VTaXplT3B0aW9uc1wiXG4gICAgc2hvd0ZpcnN0TGFzdEJ1dHRvbnNcbiAgPjwvbWF0LXBhZ2luYXRvcj5cblxuICA8YXBwLWZvcm0tYnV0dG9ucy1iYXJcbiAgICAqbmdJZj1cIiFtb2JpbGUgJiYgY2FuRWRpdFwiXG4gICAgKG9uQ2FuY2VsKT1cImNhbmNlbCgkZXZlbnQpXCJcbiAgICAob25TYXZlKT1cInNhdmUoKVwiXG4gICAgW2Rpc2FibGVkXT1cIihsb2FkaW5nU3ViamVjdCB8IGFzeW5jKSA9PT0gdHJ1ZSB8fCAoZGlydHlTdWJqZWN0IHwgYXN5bmMpICE9PSB0cnVlXCJcbiAgPlxuICAgIDwhLS0gZXJyb3IgLS0+XG4gICAgPGlvbi1pdGVtICpuZ0lmPVwiZXJyb3JTdWJqZWN0IHwgYXN5bmM7IGxldCBlcnJvclwiIGxpbmVzPVwibm9uZVwiPlxuICAgICAgPGlvbi1pY29uIGNvbG9yPVwiZGFuZ2VyXCIgc2xvdD1cInN0YXJ0XCIgbmFtZT1cImFsZXJ0LWNpcmNsZVwiPjwvaW9uLWljb24+XG4gICAgICA8aW9uLWxhYmVsIGNvbG9yPVwiZGFuZ2VyXCIgW2lubmVySFRNTF09XCJlcnJvciB8IHRyYW5zbGF0ZVwiPjwvaW9uLWxhYmVsPlxuICAgIDwvaW9uLWl0ZW0+XG4gIDwvYXBwLWZvcm0tYnV0dG9ucy1iYXI+XG48L2lvbi1mb290ZXI+XG5cbjxpb24tZmFiIHNsb3Q9XCJmaXhlZFwiIHZlcnRpY2FsPVwiYm90dG9tXCIgaG9yaXpvbnRhbD1cImVuZFwiICpuZ0lmPVwibW9iaWxlXCI+XG4gIDxpb24tZmFiLWJ1dHRvbiBjb2xvcj1cInRlcnRpYXJ5XCIgKGNsaWNrKT1cImFkZFJvdygpXCI+XG4gICAgPGlvbi1pY29uIG5hbWU9XCJhZGRcIj48L2lvbi1pY29uPlxuICA8L2lvbi1mYWItYnV0dG9uPlxuPC9pb24tZmFiPlxuIl19
@@ -74,10 +74,10 @@ export class AboutModal {
74
74
  }
75
75
  /* -- protected functions -- */
76
76
  setConfig(config) {
77
- this.forumUrl = config?.getProperty(CORE_CONFIG_OPTIONS.FORUM_URL) || this.environment.forumUrl;
78
- this.helpUrl = config?.getProperty(CORE_CONFIG_OPTIONS.HELP_URL) || this.environment.helpUrl;
79
- this.reportIssueUrl = config?.getProperty(CORE_CONFIG_OPTIONS.REPORT_ISSUE_URL) || this.environment.reportIssueUrl;
80
- this.buildDate = this.environment.buildDate || new Date().toISOString();
77
+ this.forumUrl = config?.getProperty(CORE_CONFIG_OPTIONS.FORUM_URL) || this.environment?.forumUrl;
78
+ this.helpUrl = config?.getProperty(CORE_CONFIG_OPTIONS.HELP_URL) || this.environment?.helpUrl;
79
+ this.reportIssueUrl = config?.getProperty(CORE_CONFIG_OPTIONS.REPORT_ISSUE_URL) || this.environment?.reportIssueUrl;
80
+ this.buildDate = this.environment?.buildDate;
81
81
  }
82
82
  async loadNodeInfo() {
83
83
  this.nodeInfo = await this.getNodeInfo();
@@ -116,4 +116,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
116
116
  type: Inject,
117
117
  args: [APP_ABOUT_PARTNERS]
118
118
  }] }] });
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJvdXQubW9kYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvYWJvdXQvYWJvdXQubW9kYWwudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvYWJvdXQvYWJvdXQubW9kYWwuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFxQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0ksT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSy9ELE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7OztBQUlyRSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLGNBQWMsQ0FBd0IsaUJBQWlCLENBQUMsQ0FBQztBQUNqRyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBd0IsZUFBZSxDQUFDLENBQUM7QUFRN0YsTUFBTSxPQUFPLFVBQVU7SUFxQlQ7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNpQztJQUNNO0lBQ0Y7SUEzQmhDLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRTFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDZixJQUFJLENBQVM7SUFDYixPQUFPLENBQVM7SUFDaEIsU0FBUyxDQUFTO0lBQ2xCLE9BQU8sQ0FBNEI7SUFDNUMsY0FBYyxDQUFTO0lBQ3ZCLFFBQVEsQ0FBUztJQUNqQixPQUFPLENBQVM7SUFFaEIsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0lBQzNCLFFBQVEsQ0FBVztJQUNuQixTQUFTLENBQVM7SUFFNUIs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ekMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRVMsS0FBSyxDQUFDLFdBQVc7UUFDekIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU87WUFBRSxPQUFPLElBQUksQ0FBQyxDQUFDLGtCQUFrQjtRQUVoRSxJQUFJLENBQUM7WUFDSCxPQUFPLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqRCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxnQ0FBZ0MsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN6RSxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO3dHQWhGVSxVQUFVLDZLQTBCQyxXQUFXLDZCQUNYLG9CQUFvQiw2QkFDcEIsa0JBQWtCOzRGQTVCN0IsVUFBVSx1REN0QnZCLGt6TUEyTEE7OzRGRHJLYSxVQUFVO2tCQU50QixTQUFTOytCQUNFLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNOzswQkE0QjVDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsV0FBVzs7MEJBQzlCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsb0JBQW9COzswQkFDdkMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RhbENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBFTlZJUk9OTUVOVCB9IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQgeyBjYXBpdGFsaXplRmlyc3RMZXR0ZXIgfSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7IERlcGFydG1lbnQgfSBmcm9tICcuLi9zZXJ2aWNlcy9tb2RlbC9kZXBhcnRtZW50Lm1vZGVsJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvY29uZmlnLm1vZGVsJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ09SRV9DT05GSUdfT1BUSU9OUyB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbmZpZy9jb3JlLmNvbmZpZyc7XG5pbXBvcnQgeyBOZXR3b3JrU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL25ldHdvcmsuc2VydmljZSc7XG5pbXBvcnQgeyBOb2RlSW5mbyB9IGZyb20gJy4uL3NlcnZpY2VzL25ldHdvcmsudXRpbHMnO1xuXG5leHBvcnQgY29uc3QgQVBQX0FCT1VUX0RFVkVMT1BFUlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48UGFydGlhbDxEZXBhcnRtZW50PltdPignYWJvdXREZXZlbG9wZXJzJyk7XG5leHBvcnQgY29uc3QgQVBQX0FCT1VUX1BBUlRORVJTID0gbmV3IEluamVjdGlvblRva2VuPFBhcnRpYWw8RGVwYXJ0bWVudD5bXT4oJ2Fib3V0UGFydG5lcnMnKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWFib3V0LW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Fib3V0Lm1vZGFsLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hYm91dC5tb2RhbC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBYm91dE1vZGFsIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgcHJvdGVjdGVkIF9sb2dQcmVmaXggPSAnW2Fib3V0XSAnO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc291cmNlVXJsOiBzdHJpbmc7XG4gIHByb3RlY3RlZCByZWFkb25seSBjb25maWckOiBPYnNlcnZhYmxlPENvbmZpZ3VyYXRpb24+O1xuICBwcm90ZWN0ZWQgcmVwb3J0SXNzdWVVcmw6IHN0cmluZztcbiAgcHJvdGVjdGVkIGZvcnVtVXJsOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBoZWxwVXJsOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIHNob3dWZXJzaW9uRGV0YWlscyA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgbm9kZUluZm86IE5vZGVJbmZvO1xuICBwcm90ZWN0ZWQgYnVpbGREYXRlOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIGdldCBhbGxvd1ZlcnNpb25EZXRhaWxzKCkge1xuICAgIHJldHVybiAhIXRoaXMuYnVpbGREYXRlIHx8ICEhdGhpcy5ub2RlSW5mbz8uc29mdHdhcmVWZXJzaW9uO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbW9kYWxDb250cm9sbGVyOiBNb2RhbENvbnRyb2xsZXIsXG4gICAgcHJvdGVjdGVkIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG5ldHdvcmtTZXJ2aWNlOiBOZXR3b3JrU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRU5WSVJPTk1FTlQpIHByb3RlY3RlZCBlbnZpcm9ubWVudCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQUF9BQk9VVF9ERVZFTE9QRVJTKSBwdWJsaWMgZGV2ZWxvcGVyczogUGFydGlhbDxEZXBhcnRtZW50PltdLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVBQX0FCT1VUX1BBUlRORVJTKSBwdWJsaWMgcGFydG5lcnM6IFBhcnRpYWw8RGVwYXJ0bWVudD5bXVxuICApIHtcbiAgICB0aGlzLm5hbWUgPSB0cmFuc2xhdGUuaW5zdGFudCgnQVBQX05BTUUnKTtcbiAgICBpZiAodGhpcy5uYW1lID09PSAnQVBQX05BTUUnKSB7XG4gICAgICAvLyBOb3QgdHJhbnNsYXRlZDogdXNlIG5hbWUgZnJvbSB0aGUgZW52aXJvbm1lbnRcbiAgICAgIHRoaXMubmFtZSA9IChlbnZpcm9ubWVudD8ubmFtZSAmJiBjYXBpdGFsaXplRmlyc3RMZXR0ZXIoZW52aXJvbm1lbnQubmFtZSkpIHx8IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdGhpcy52ZXJzaW9uID0gZW52aXJvbm1lbnQ/LnZlcnNpb247XG4gICAgdGhpcy5zb3VyY2VVcmwgPSBlbnZpcm9ubWVudD8uc291cmNlVXJsO1xuICAgIHRoaXMucmVwb3J0SXNzdWVVcmwgPSBlbnZpcm9ubWVudD8ucmVwb3J0SXNzdWVVcmw7XG4gICAgdGhpcy5mb3J1bVVybCA9IGVudmlyb25tZW50Py5mb3J1bVVybDtcbiAgICB0aGlzLmhlbHBVcmwgPSBlbnZpcm9ubWVudD8uaGVscFVybDtcbiAgICB0aGlzLmNvbmZpZyQgPSBjb25maWdTZXJ2aWNlLmNvbmZpZztcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKHRoaXMuY29uZmlnJC5zdWJzY3JpYmUoKGNvbmZpZykgPT4gdGhpcy5zZXRDb25maWcoY29uZmlnKSkpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gTG9hZCBub2RlIGluZm9cbiAgICB0aGlzLmxvYWROb2RlSW5mbygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBhc3luYyBjbG9zZSgpIHtcbiAgICBhd2FpdCB0aGlzLm1vZGFsQ29udHJvbGxlci5kaXNtaXNzKCk7XG4gIH1cblxuICAvKiAtLSBwcm90ZWN0ZWQgZnVuY3Rpb25zIC0tICovXG5cbiAgcHJvdGVjdGVkIHNldENvbmZpZyhjb25maWc/OiBDb25maWd1cmF0aW9uKSB7XG4gICAgdGhpcy5mb3J1bVVybCA9IGNvbmZpZz8uZ2V0UHJvcGVydHkoQ09SRV9DT05GSUdfT1BUSU9OUy5GT1JVTV9VUkwpIHx8IHRoaXMuZW52aXJvbm1lbnQuZm9ydW1Vcmw7XG4gICAgdGhpcy5oZWxwVXJsID0gY29uZmlnPy5nZXRQcm9wZXJ0eShDT1JFX0NPTkZJR19PUFRJT05TLkhFTFBfVVJMKSB8fCB0aGlzLmVudmlyb25tZW50LmhlbHBVcmw7XG4gICAgdGhpcy5yZXBvcnRJc3N1ZVVybCA9IGNvbmZpZz8uZ2V0UHJvcGVydHkoQ09SRV9DT05GSUdfT1BUSU9OUy5SRVBPUlRfSVNTVUVfVVJMKSB8fCB0aGlzLmVudmlyb25tZW50LnJlcG9ydElzc3VlVXJsO1xuICAgIHRoaXMuYnVpbGREYXRlID0gdGhpcy5lbnZpcm9ubWVudC5idWlsZERhdGUgfHwgbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGxvYWROb2RlSW5mbygpIHtcbiAgICB0aGlzLm5vZGVJbmZvID0gYXdhaXQgdGhpcy5nZXROb2RlSW5mbygpO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0Tm9kZUluZm8oKTogUHJvbWlzZTxOb2RlSW5mbz4ge1xuICAgIGlmICh0aGlzLm5ldHdvcmtTZXJ2aWNlLm9mZmxpbmUpIHJldHVybiBudWxsOyAvLyBTa2lwIGlmIG9mZmxpbmVcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5uZXR3b3JrU2VydmljZS5nZXROb2RlSW5mbygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGAke3RoaXMuX2xvZ1ByZWZpeH0gRXJyb3Igd2hpbGUgbG9hZGluZyBub2RlIGluZm9gLCBlcnJvcik7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbn1cbiIsIjxpb24taGVhZGVyPlxuICA8aW9uLXRvb2xiYXIgY29sb3I9XCJsaWdodFwiPlxuICAgIDxpb24tdGl0bGU+XG4gICAgICB7eyAnQUJPVVQuVElUTEUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9pb24tdGl0bGU+XG5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImNsb3NlKClcIiB2aXNpYmxlLXhzIHZpc2libGUtc20gdmlzaWJsZS1tb2JpbGU+XG4gICAgICAgIHt7ICdDT01NT04uQlROX0NMT1NFJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gIDwvaW9uLXRvb2xiYXI+XG48L2lvbi1oZWFkZXI+XG5cbjxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gIDxpb24tbGlzdCBsaW5lcz1cIm5vbmVcIj5cbiAgICA8IS0tIFBlZXIgaW5mbyAtLT5cbiAgICBAaWYgKGNvbmZpZyQgfCBhc3luYzsgYXMgY29uZmlnKSB7XG4gICAgICA8aW9uLWl0ZW0+XG4gICAgICAgIDxzcGFuIHNsb3Q9XCJzdGFydFwiPiZuYnNwOzwvc3Bhbj5cbiAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cImlvbi10ZXh0LXdyYXBcIj5cbiAgICAgICAgICA8aDI+XG4gICAgICAgICAgICA8Yj57eyBjb25maWcubGFiZWwgfCBjYXBpdGFsaXplIH19PC9iPlxuICAgICAgICAgICAgQGlmIChjb25maWcubmFtZSkge1xuICAgICAgICAgICAgICAtXG4gICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiY29uZmlnLm5hbWVcIj48L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9oMj5cblxuICAgICAgICAgIEBpZiAoY29uZmlnLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgPG1hcmtkb3duIFtkYXRhXT1cImNvbmZpZy5kZXNjcmlwdGlvblwiIGVtb2ppPjwvbWFya2Rvd24+XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgfVxuICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgIDwvaW9uLWl0ZW0+XG4gICAgfVxuXG4gICAgPCEtLSBWZXJzaW9uIGluZm8gLS0+XG4gICAgPGlvbi1pdGVtPlxuICAgICAgPHNwYW4gc2xvdD1cInN0YXJ0XCI+Jm5ic3A7PC9zcGFuPlxuICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cImlvbi10ZXh0LXdyYXBcIj5cbiAgICAgICAgPGgyPlxuICAgICAgICAgIEBpZiAobmFtZSkge1xuICAgICAgICAgICAgPHNtYWxsPnt7ICdBQk9VVC5QT1dFUkVEX0JZJyB8IHRyYW5zbGF0ZSB9fTwvc21hbGw+XG4gICAgICAgICAgICB7eyBuYW1lIH19XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAodmVyc2lvbikge1xuICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCInQUJPVVQuVkVSU0lPTicgfCB0cmFuc2xhdGU6IHsgdmVyc2lvbjogdmVyc2lvbiB9XCI+PC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYoYWxsb3dWZXJzaW9uRGV0YWlscykge1xuICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICA8c21hbGw+XG4gICAgICAgICAgICAgIDxhIChjbGljayk9XCJzaG93VmVyc2lvbkRldGFpbHM9IXNob3dWZXJzaW9uRGV0YWlsc1wiIHRhcHBhYmxlPlxuICAgICAgICAgICAgICAgIHt7J0NPTU1PTi5CVE5fU0hPV19NT1JFJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cIiFzaG93VmVyc2lvbkRldGFpbHMgPyAnY2hldnJvbi1kb3duJyA6ICdjaGV2cm9uLXVwJ1wiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgfVxuICAgICAgICA8L2gyPlxuXG4gICAgICAgIDwhLS0gdmVyc2lvbiBkZXRhaWxzIC0tPlxuICAgICAgICBAaWYgKHNob3dWZXJzaW9uRGV0YWlscykge1xuICAgICAgICAgIDxwIGNsYXNzPVwidmVyc2lvbi1kZXRhaWxzXCI+XG4gICAgICAgICAgICA8IS0tIEFwcCB2ZXJzaW9uIC0tPlxuICAgICAgICAgICAgQGlmIChidWlsZERhdGUpIHtcbiAgICAgICAgICAgICAgPHNtYWxsPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwibG9nby1hbmd1bGFyXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIidBQk9VVC5BUFBfVkVSU0lPTicgfCB0cmFuc2xhdGU6IHsgdmVyc2lvbjogdmVyc2lvbiB9XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidGltZS1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICB7eyBidWlsZERhdGUgfCBkYXRlRm9ybWF0OiB7IHRpbWU6IHRydWUsIHNlY29uZHM6IGZhbHNlIH0gfX1cbiAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgPGJyLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwhLS0gUG9kIHZlcnNpb24gLS0+XG4gICAgICAgICAgICBAaWYgKG5vZGVJbmZvPy5zb2Z0d2FyZVZlcnNpb24gJiYgbm9kZUluZm8uYnVpbGREYXRlKSB7XG4gICAgICAgICAgICAgICAgPHNtYWxsPlxuICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJzZXJ2ZXJcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCInQUJPVVQuUE9EX1ZFUlNJT04nIHwgdHJhbnNsYXRlOiB7IHZlcnNpb246IG5vZGVJbmZvLnNvZnR3YXJlVmVyc2lvbiB9XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInRpbWUtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgICB7eyBub2RlSW5mby5idWlsZERhdGUgfCBkYXRlRm9ybWF0OiB7IHRpbWU6IHRydWUsIHNlY29uZHM6IGZhbHNlIH0gfX1cbiAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gbGljZW5zZS0tPlxuICAgICAgICA8cCBbaW5uZXJIVE1MXT1cIidBQk9VVC5MSUNFTlNFJyB8IHRyYW5zbGF0ZVwiPjwvcD5cbiAgICAgIDwvaW9uLWxhYmVsPlxuICAgIDwvaW9uLWl0ZW0+XG5cbiAgICA8IS0tIEhlbHAgLS0+XG4gICAgPGlvbi1pdGVtICpuZ0lmPVwiZm9ydW1VcmwgfHwgaGVscFVybFwiPlxuICAgICAgPG1hdC1pY29uIHNsb3Q9XCJzdGFydFwiPmhlbHBfb3V0bGluZTwvbWF0LWljb24+XG4gICAgICA8aW9uLWxhYmVsPlxuICAgICAgICA8cD5cbiAgICAgICAgICB7eyAnQUJPVVQuSEVMUCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9wPlxuICAgICAgICA8cD5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwic29saWRcIiBjb2xvcj1cImFjY2VudFwiIGhyZWY9XCJ7eyBoZWxwVXJsIH19XCIgdGFyZ2V0PVwiaGVscFwiIHNpemU9XCJkZWZhdWx0XCI+XG4gICAgICAgICAgICA8bWF0LWljb24gc2xvdD1cInN0YXJ0XCI+ZGVzY3JpcHRpb248L21hdC1pY29uPlxuICAgICAgICAgICAgPGlvbi10ZXh0IHRyYW5zbGF0ZT5BQk9VVC5VU0VSX01BTlVBTDwvaW9uLXRleHQ+XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJzb2xpZFwiIGNvbG9yPVwic2Vjb25kYXJ5XCIgaHJlZj1cInt7IGZvcnVtVXJsIH19XCIgdGFyZ2V0PVwiZm9ydW1cIiBzaXplPVwiZGVmYXVsdFwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJjaGF0YnViYmxlc1wiPjwvaW9uLWljb24+XG4gICAgICAgICAgICA8aW9uLXRleHQgdHJhbnNsYXRlPkFCT1VULkZPUlVNPC9pb24tdGV4dD5cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvaW9uLWxhYmVsPlxuICAgIDwvaW9uLWl0ZW0+XG5cbiAgICA8IS0tIFJlcG9ydCBpc3N1ZSAtLT5cbiAgICA8aW9uLWl0ZW0gKm5nSWY9XCJyZXBvcnRJc3N1ZVVybFwiPlxuICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJidWdcIiBjb2xvcj1cImRhcmtcIj48L2lvbi1pY29uPlxuICAgICAgPGlvbi1sYWJlbD5cbiAgICAgICAgPHA+XG4gICAgICAgICAge3sgJ0FCT1VULlJFUE9SVF9JU1NVRScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9wPlxuICAgICAgICA8cD5cbiAgICAgICAgICA8YSBjb2xvcj1cInByaW1hcnlcIiBocmVmPVwie3sgcmVwb3J0SXNzdWVVcmwgfX1cIiB0YXJnZXQ9XCJfc3lzdGVtXCIgdHJhbnNsYXRlPkFCT1VULkJUTl9SRVBPUlRfSVNTVUU8L2E+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvaW9uLWxhYmVsPlxuICAgIDwvaW9uLWl0ZW0+XG5cbiAgICA8IS0tIFNvdXJjZSBjb2RlIC0tPlxuICAgIDxpb24taXRlbSAqbmdJZj1cInNvdXJjZVVybFwiPlxuICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJjb2RlXCIgY29sb3I9XCJkYXJrXCI+PC9pb24taWNvbj5cbiAgICAgIDxpb24tbGFiZWw+XG4gICAgICAgIDxwPlxuICAgICAgICAgIHt7ICdBQk9VVC5TT1VSQ0VfQ09ERScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9wPlxuICAgICAgICA8cD5cbiAgICAgICAgICA8YSBjb2xvcj1cInByaW1hcnlcIiBocmVmPVwie3sgc291cmNlVXJsIH19XCIgdGFyZ2V0PVwiX3N5c3RlbVwiPnt7IHNvdXJjZVVybCB9fTwvYT5cbiAgICAgICAgPC9wPlxuICAgICAgPC9pb24tbGFiZWw+XG4gICAgPC9pb24taXRlbT5cblxuICAgIDwhLS0gRGV2ZWxvcGVycyAtLT5cbiAgICA8aW9uLWl0ZW0gKm5nSWY9XCJkZXZlbG9wZXJzIHwgaXNOb3RFbXB0eUFycmF5XCI+XG4gICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgbmFtZT1cInBlb3BsZVwiIGNvbG9yPVwiZGFya1wiPjwvaW9uLWljb24+XG4gICAgICA8aW9uLWxhYmVsPlxuICAgICAgICA8cD5cbiAgICAgICAgICB7eyAnQUJPVVQuREVWRUxPUEVEX0JZJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxpb24tbGlzdCBsaW5lcz1cIm5vbmVcIj5cbiAgICAgICAgICA8aW9uLWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGV2ZWxvcGVyc1wiIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIj5cbiAgICAgICAgICAgIDxpb24tbGFiZWw+XG4gICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgIDxhIGNvbG9yPVwicHJpbWFyeVwiIGhyZWY9XCJ7eyBpdGVtLnNpdGVVcmwgfX1cIiB0YXJnZXQ9XCJfc3lzdGVtXCI+e3sgaXRlbS5uYW1lIHx8IGl0ZW0ubGFiZWwgfX08L2E+XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgPGlvbi1pbWcgc2xvdD1cImVuZFwiIFtzcmNdPVwiaXRlbS5sb2dvXCIgLz5cbiAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICA8L2lvbi1saXN0PlxuICAgICAgPC9pb24tbGFiZWw+XG4gICAgPC9pb24taXRlbT5cblxuICAgIDwhLS0gUGFydG5lcnMgLS0+XG4gICAgPGlvbi1pdGVtIGNsYXNzPVwiaXRlbS1wYXJ0bmVyc1wiICpuZ0lmPVwicGFydG5lcnMgfCBpc05vdEVtcHR5QXJyYXlcIj5cbiAgICAgIDxpb24taWNvbiBzbG90PVwic3RhcnRcIiBuYW1lPVwibWVnYXBob25lXCIgY29sb3I9XCJkYXJrXCI+PC9pb24taWNvbj5cbiAgICAgIDxpb24tdGV4dD5cbiAgICAgICAgPHA+e3sgJ0FCT1VULlBBUlRORVJTJyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgPHA+XG4gICAgICAgICAgPGEgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcGFydG5lcnNcIiBocmVmPVwie3sgaXRlbS5zaXRlVXJsIH19XCIgY2xhc3M9XCJwYXJ0bmVyc1wiIHRhcmdldD1cIl9zeXN0ZW1cIj5cbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJpdGVtLmxvZ287IGVsc2UgcGFydG5lck5hbWVcIiBbc3JjXT1cIml0ZW0ubG9nb1wiIFthbHRdPVwiaXRlbS5sYWJlbFwiIC8+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3BhcnRuZXJOYW1lPlxuICAgICAgICAgICAgICA8aW9uLXRleHQ+e3sgaXRlbS5sYWJlbCB9fTwvaW9uLXRleHQ+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9wPlxuICAgICAgPC9pb24tdGV4dD5cbiAgICA8L2lvbi1pdGVtPlxuICA8L2lvbi1saXN0PlxuPC9pb24tY29udGVudD5cblxuPGlvbi1mb290ZXIgaGlkZGVuLXhzIGhpZGRlbi1zbSBoaWRkZW4tbW9iaWxlPlxuICA8aW9uLXRvb2xiYXI+XG4gICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiIG5vd3JhcD5cbiAgICAgIDxpb24tY29sPjwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIHNpemU9XCJhdXRvXCI+XG4gICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJzb2xpZFwiIGNvbG9yPVwidGVydGlhcnlcIiAoY2xpY2spPVwiY2xvc2UoKVwiPnt7ICdDT01NT04uQlROX0NMT1NFJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICA8L2lvbi1yb3c+XG4gIDwvaW9uLXRvb2xiYXI+XG48L2lvbi1mb290ZXI+XG4iXX0=
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJvdXQubW9kYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvYWJvdXQvYWJvdXQubW9kYWwudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvYWJvdXQvYWJvdXQubW9kYWwuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFxQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0ksT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSy9ELE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7OztBQUlyRSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLGNBQWMsQ0FBd0IsaUJBQWlCLENBQUMsQ0FBQztBQUNqRyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBd0IsZUFBZSxDQUFDLENBQUM7QUFRN0YsTUFBTSxPQUFPLFVBQVU7SUFxQlQ7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNpQztJQUNNO0lBQ0Y7SUEzQmhDLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRTFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDZixJQUFJLENBQVM7SUFDYixPQUFPLENBQVM7SUFDaEIsU0FBUyxDQUFTO0lBQ2xCLE9BQU8sQ0FBNEI7SUFDNUMsY0FBYyxDQUFTO0lBQ3ZCLFFBQVEsQ0FBUztJQUNqQixPQUFPLENBQVM7SUFFaEIsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0lBQzNCLFFBQVEsQ0FBVztJQUNuQixTQUFTLENBQVM7SUFFNUIs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QUM7SUFDekIsQ0FBQztJQUVTLEtBQUssQ0FBQyxXQUFXO1FBQ3pCLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPO1lBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQyxrQkFBa0I7UUFFaEUsSUFBSSxDQUFDO1lBQ0gsT0FBTyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakQsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsZ0NBQWdDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDekUsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQzt3R0FoRlUsVUFBVSw2S0EwQkMsV0FBVyw2QkFDWCxvQkFBb0IsNkJBQ3BCLGtCQUFrQjs0RkE1QjdCLFVBQVUsdURDdEJ2Qixrek1BMkxBOzs0RkRyS2EsVUFBVTtrQkFOdEIsU0FBUzsrQkFDRSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTTs7MEJBNEI1QyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLFdBQVc7OzBCQUM5QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLG9CQUFvQjs7MEJBQ3ZDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEluamVjdCwgSW5qZWN0aW9uVG9rZW4sIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9kYWxDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgRU5WSVJPTk1FTlQgfSBmcm9tICcuLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQuY2xhc3MnO1xuaW1wb3J0IHsgY2FwaXRhbGl6ZUZpcnN0TGV0dGVyIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBEZXBhcnRtZW50IH0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvZGVwYXJ0bWVudC5tb2RlbCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL2NvbmZpZy5tb2RlbCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENPUkVfQ09ORklHX09QVElPTlMgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb25maWcvY29yZS5jb25maWcnO1xuaW1wb3J0IHsgTmV0d29ya1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9uZXR3b3JrLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm9kZUluZm8gfSBmcm9tICcuLi9zZXJ2aWNlcy9uZXR3b3JrLnV0aWxzJztcblxuZXhwb3J0IGNvbnN0IEFQUF9BQk9VVF9ERVZFTE9QRVJTID0gbmV3IEluamVjdGlvblRva2VuPFBhcnRpYWw8RGVwYXJ0bWVudD5bXT4oJ2Fib3V0RGV2ZWxvcGVycycpO1xuZXhwb3J0IGNvbnN0IEFQUF9BQk9VVF9QQVJUTkVSUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxQYXJ0aWFsPERlcGFydG1lbnQ+W10+KCdhYm91dFBhcnRuZXJzJyk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1hYm91dC1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hYm91dC5tb2RhbC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWJvdXQubW9kYWwuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQWJvdXRNb2RhbCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHByb3RlY3RlZCBfbG9nUHJlZml4ID0gJ1thYm91dF0gJztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNvdXJjZVVybDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29uZmlnJDogT2JzZXJ2YWJsZTxDb25maWd1cmF0aW9uPjtcbiAgcHJvdGVjdGVkIHJlcG9ydElzc3VlVXJsOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBmb3J1bVVybDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgaGVscFVybDogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCBzaG93VmVyc2lvbkRldGFpbHMgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIG5vZGVJbmZvOiBOb2RlSW5mbztcbiAgcHJvdGVjdGVkIGJ1aWxkRGF0ZTogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCBnZXQgYWxsb3dWZXJzaW9uRGV0YWlscygpIHtcbiAgICByZXR1cm4gISF0aGlzLmJ1aWxkRGF0ZSB8fCAhIXRoaXMubm9kZUluZm8/LnNvZnR3YXJlVmVyc2lvbjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG1vZGFsQ29udHJvbGxlcjogTW9kYWxDb250cm9sbGVyLFxuICAgIHByb3RlY3RlZCBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBuZXR3b3JrU2VydmljZTogTmV0d29ya1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEVOVklST05NRU5UKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnQsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChBUFBfQUJPVVRfREVWRUxPUEVSUykgcHVibGljIGRldmVsb3BlcnM6IFBhcnRpYWw8RGVwYXJ0bWVudD5bXSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQUF9BQk9VVF9QQVJUTkVSUykgcHVibGljIHBhcnRuZXJzOiBQYXJ0aWFsPERlcGFydG1lbnQ+W11cbiAgKSB7XG4gICAgdGhpcy5uYW1lID0gdHJhbnNsYXRlLmluc3RhbnQoJ0FQUF9OQU1FJyk7XG4gICAgaWYgKHRoaXMubmFtZSA9PT0gJ0FQUF9OQU1FJykge1xuICAgICAgLy8gTm90IHRyYW5zbGF0ZWQ6IHVzZSBuYW1lIGZyb20gdGhlIGVudmlyb25tZW50XG4gICAgICB0aGlzLm5hbWUgPSAoZW52aXJvbm1lbnQ/Lm5hbWUgJiYgY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKGVudmlyb25tZW50Lm5hbWUpKSB8fCB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHRoaXMudmVyc2lvbiA9IGVudmlyb25tZW50Py52ZXJzaW9uO1xuICAgIHRoaXMuc291cmNlVXJsID0gZW52aXJvbm1lbnQ/LnNvdXJjZVVybDtcbiAgICB0aGlzLnJlcG9ydElzc3VlVXJsID0gZW52aXJvbm1lbnQ/LnJlcG9ydElzc3VlVXJsO1xuICAgIHRoaXMuZm9ydW1VcmwgPSBlbnZpcm9ubWVudD8uZm9ydW1Vcmw7XG4gICAgdGhpcy5oZWxwVXJsID0gZW52aXJvbm1lbnQ/LmhlbHBVcmw7XG4gICAgdGhpcy5jb25maWckID0gY29uZmlnU2VydmljZS5jb25maWc7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmNvbmZpZyQuc3Vic2NyaWJlKChjb25maWcpID0+IHRoaXMuc2V0Q29uZmlnKGNvbmZpZykpKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIExvYWQgbm9kZSBpbmZvXG4gICAgdGhpcy5sb2FkTm9kZUluZm8oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgYXN5bmMgY2xvc2UoKSB7XG4gICAgYXdhaXQgdGhpcy5tb2RhbENvbnRyb2xsZXIuZGlzbWlzcygpO1xuICB9XG5cbiAgLyogLS0gcHJvdGVjdGVkIGZ1bmN0aW9ucyAtLSAqL1xuXG4gIHByb3RlY3RlZCBzZXRDb25maWcoY29uZmlnPzogQ29uZmlndXJhdGlvbikge1xuICAgIHRoaXMuZm9ydW1VcmwgPSBjb25maWc/LmdldFByb3BlcnR5KENPUkVfQ09ORklHX09QVElPTlMuRk9SVU1fVVJMKSB8fCB0aGlzLmVudmlyb25tZW50Py5mb3J1bVVybDtcbiAgICB0aGlzLmhlbHBVcmwgPSBjb25maWc/LmdldFByb3BlcnR5KENPUkVfQ09ORklHX09QVElPTlMuSEVMUF9VUkwpIHx8IHRoaXMuZW52aXJvbm1lbnQ/LmhlbHBVcmw7XG4gICAgdGhpcy5yZXBvcnRJc3N1ZVVybCA9IGNvbmZpZz8uZ2V0UHJvcGVydHkoQ09SRV9DT05GSUdfT1BUSU9OUy5SRVBPUlRfSVNTVUVfVVJMKSB8fCB0aGlzLmVudmlyb25tZW50Py5yZXBvcnRJc3N1ZVVybDtcbiAgICB0aGlzLmJ1aWxkRGF0ZSA9IHRoaXMuZW52aXJvbm1lbnQ/LmJ1aWxkRGF0ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBsb2FkTm9kZUluZm8oKSB7XG4gICAgdGhpcy5ub2RlSW5mbyA9IGF3YWl0IHRoaXMuZ2V0Tm9kZUluZm8oKTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdldE5vZGVJbmZvKCk6IFByb21pc2U8Tm9kZUluZm8+IHtcbiAgICBpZiAodGhpcy5uZXR3b3JrU2VydmljZS5vZmZsaW5lKSByZXR1cm4gbnVsbDsgLy8gU2tpcCBpZiBvZmZsaW5lXG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMubmV0d29ya1NlcnZpY2UuZ2V0Tm9kZUluZm8oKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihgJHt0aGlzLl9sb2dQcmVmaXh9IEVycm9yIHdoaWxlIGxvYWRpbmcgbm9kZSBpbmZvYCwgZXJyb3IpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG59XG4iLCI8aW9uLWhlYWRlcj5cbiAgPGlvbi10b29sYmFyIGNvbG9yPVwibGlnaHRcIj5cbiAgICA8aW9uLXRpdGxlPlxuICAgICAge3sgJ0FCT1VULlRJVExFJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvaW9uLXRpdGxlPlxuXG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cbiAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJjbG9zZSgpXCIgdmlzaWJsZS14cyB2aXNpYmxlLXNtIHZpc2libGUtbW9iaWxlPlxuICAgICAgICB7eyAnQ09NTU9OLkJUTl9DTE9TRScgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuICA8L2lvbi10b29sYmFyPlxuPC9pb24taGVhZGVyPlxuXG48aW9uLWNvbnRlbnQgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICA8aW9uLWxpc3QgbGluZXM9XCJub25lXCI+XG4gICAgPCEtLSBQZWVyIGluZm8gLS0+XG4gICAgQGlmIChjb25maWckIHwgYXN5bmM7IGFzIGNvbmZpZykge1xuICAgICAgPGlvbi1pdGVtPlxuICAgICAgICA8c3BhbiBzbG90PVwic3RhcnRcIj4mbmJzcDs8L3NwYW4+XG4gICAgICAgIDxpb24tbGFiZWwgY2xhc3M9XCJpb24tdGV4dC13cmFwXCI+XG4gICAgICAgICAgPGgyPlxuICAgICAgICAgICAgPGI+e3sgY29uZmlnLmxhYmVsIHwgY2FwaXRhbGl6ZSB9fTwvYj5cbiAgICAgICAgICAgIEBpZiAoY29uZmlnLm5hbWUpIHtcbiAgICAgICAgICAgICAgLVxuICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImNvbmZpZy5uYW1lXCI+PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvaDI+XG5cbiAgICAgICAgICBAaWYgKGNvbmZpZy5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIDxtYXJrZG93biBbZGF0YV09XCJjb25maWcuZGVzY3JpcHRpb25cIiBlbW9qaT48L21hcmtkb3duPlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICA8L2lvbi1pdGVtPlxuICAgIH1cblxuICAgIDwhLS0gVmVyc2lvbiBpbmZvIC0tPlxuICAgIDxpb24taXRlbT5cbiAgICAgIDxzcGFuIHNsb3Q9XCJzdGFydFwiPiZuYnNwOzwvc3Bhbj5cbiAgICAgIDxpb24tbGFiZWwgY2xhc3M9XCJpb24tdGV4dC13cmFwXCI+XG4gICAgICAgIDxoMj5cbiAgICAgICAgICBAaWYgKG5hbWUpIHtcbiAgICAgICAgICAgIDxzbWFsbD57eyAnQUJPVVQuUE9XRVJFRF9CWScgfCB0cmFuc2xhdGUgfX08L3NtYWxsPlxuICAgICAgICAgICAge3sgbmFtZSB9fVxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHZlcnNpb24pIHtcbiAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiJ0FCT1VULlZFUlNJT04nIHwgdHJhbnNsYXRlOiB7IHZlcnNpb246IHZlcnNpb24gfVwiPjwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmKGFsbG93VmVyc2lvbkRldGFpbHMpIHtcbiAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgPHNtYWxsPlxuICAgICAgICAgICAgICA8YSAoY2xpY2spPVwic2hvd1ZlcnNpb25EZXRhaWxzPSFzaG93VmVyc2lvbkRldGFpbHNcIiB0YXBwYWJsZT5cbiAgICAgICAgICAgICAgICB7eydDT01NT04uQlROX1NIT1dfTU9SRScgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCIhc2hvd1ZlcnNpb25EZXRhaWxzID8gJ2NoZXZyb24tZG93bicgOiAnY2hldnJvbi11cCdcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9oMj5cblxuICAgICAgICA8IS0tIHZlcnNpb24gZGV0YWlscyAtLT5cbiAgICAgICAgQGlmIChzaG93VmVyc2lvbkRldGFpbHMpIHtcbiAgICAgICAgICA8cCBjbGFzcz1cInZlcnNpb24tZGV0YWlsc1wiPlxuICAgICAgICAgICAgPCEtLSBBcHAgdmVyc2lvbiAtLT5cbiAgICAgICAgICAgIEBpZiAoYnVpbGREYXRlKSB7XG4gICAgICAgICAgICAgIDxzbWFsbD5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImxvZ28tYW5ndWxhclwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCInQUJPVVQuQVBQX1ZFUlNJT04nIHwgdHJhbnNsYXRlOiB7IHZlcnNpb246IHZlcnNpb24gfVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInRpbWUtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAge3sgYnVpbGREYXRlIHwgZGF0ZUZvcm1hdDogeyB0aW1lOiB0cnVlLCBzZWNvbmRzOiBmYWxzZSB9IH19XG4gICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgIDxici8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8IS0tIFBvZCB2ZXJzaW9uIC0tPlxuICAgICAgICAgICAgQGlmIChub2RlSW5mbz8uc29mdHdhcmVWZXJzaW9uICYmIG5vZGVJbmZvLmJ1aWxkRGF0ZSkge1xuICAgICAgICAgICAgICAgIDxzbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwic2VydmVyXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiJ0FCT1VULlBPRF9WRVJTSU9OJyB8IHRyYW5zbGF0ZTogeyB2ZXJzaW9uOiBub2RlSW5mby5zb2Z0d2FyZVZlcnNpb24gfVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJ0aW1lLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgICAge3sgbm9kZUluZm8uYnVpbGREYXRlIHwgZGF0ZUZvcm1hdDogeyB0aW1lOiB0cnVlLCBzZWNvbmRzOiBmYWxzZSB9IH19XG4gICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3A+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIGxpY2Vuc2UtLT5cbiAgICAgICAgPHAgW2lubmVySFRNTF09XCInQUJPVVQuTElDRU5TRScgfCB0cmFuc2xhdGVcIj48L3A+XG4gICAgICA8L2lvbi1sYWJlbD5cbiAgICA8L2lvbi1pdGVtPlxuXG4gICAgPCEtLSBIZWxwIC0tPlxuICAgIDxpb24taXRlbSAqbmdJZj1cImZvcnVtVXJsIHx8IGhlbHBVcmxcIj5cbiAgICAgIDxtYXQtaWNvbiBzbG90PVwic3RhcnRcIj5oZWxwX291dGxpbmU8L21hdC1pY29uPlxuICAgICAgPGlvbi1sYWJlbD5cbiAgICAgICAgPHA+XG4gICAgICAgICAge3sgJ0FCT1VULkhFTFAnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPHA+XG4gICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cInNvbGlkXCIgY29sb3I9XCJhY2NlbnRcIiBocmVmPVwie3sgaGVscFVybCB9fVwiIHRhcmdldD1cImhlbHBcIiBzaXplPVwiZGVmYXVsdFwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIHNsb3Q9XCJzdGFydFwiPmRlc2NyaXB0aW9uPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxpb24tdGV4dCB0cmFuc2xhdGU+QUJPVVQuVVNFUl9NQU5VQUw8L2lvbi10ZXh0PlxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwic29saWRcIiBjb2xvcj1cInNlY29uZGFyeVwiIGhyZWY9XCJ7eyBmb3J1bVVybCB9fVwiIHRhcmdldD1cImZvcnVtXCIgc2l6ZT1cImRlZmF1bHRcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwic3RhcnRcIiBuYW1lPVwiY2hhdGJ1YmJsZXNcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgPGlvbi10ZXh0IHRyYW5zbGF0ZT5BQk9VVC5GT1JVTTwvaW9uLXRleHQ+XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L3A+XG4gICAgICA8L2lvbi1sYWJlbD5cbiAgICA8L2lvbi1pdGVtPlxuXG4gICAgPCEtLSBSZXBvcnQgaXNzdWUgLS0+XG4gICAgPGlvbi1pdGVtICpuZ0lmPVwicmVwb3J0SXNzdWVVcmxcIj5cbiAgICAgIDxpb24taWNvbiBzbG90PVwic3RhcnRcIiBuYW1lPVwiYnVnXCIgY29sb3I9XCJkYXJrXCI+PC9pb24taWNvbj5cbiAgICAgIDxpb24tbGFiZWw+XG4gICAgICAgIDxwPlxuICAgICAgICAgIHt7ICdBQk9VVC5SRVBPUlRfSVNTVUUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPHA+XG4gICAgICAgICAgPGEgY29sb3I9XCJwcmltYXJ5XCIgaHJlZj1cInt7IHJlcG9ydElzc3VlVXJsIH19XCIgdGFyZ2V0PVwiX3N5c3RlbVwiIHRyYW5zbGF0ZT5BQk9VVC5CVE5fUkVQT1JUX0lTU1VFPC9hPlxuICAgICAgICA8L3A+XG4gICAgICA8L2lvbi1sYWJlbD5cbiAgICA8L2lvbi1pdGVtPlxuXG4gICAgPCEtLSBTb3VyY2UgY29kZSAtLT5cbiAgICA8aW9uLWl0ZW0gKm5nSWY9XCJzb3VyY2VVcmxcIj5cbiAgICAgIDxpb24taWNvbiBzbG90PVwic3RhcnRcIiBuYW1lPVwiY29kZVwiIGNvbG9yPVwiZGFya1wiPjwvaW9uLWljb24+XG4gICAgICA8aW9uLWxhYmVsPlxuICAgICAgICA8cD5cbiAgICAgICAgICB7eyAnQUJPVVQuU09VUkNFX0NPREUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPHA+XG4gICAgICAgICAgPGEgY29sb3I9XCJwcmltYXJ5XCIgaHJlZj1cInt7IHNvdXJjZVVybCB9fVwiIHRhcmdldD1cIl9zeXN0ZW1cIj57eyBzb3VyY2VVcmwgfX08L2E+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvaW9uLWxhYmVsPlxuICAgIDwvaW9uLWl0ZW0+XG5cbiAgICA8IS0tIERldmVsb3BlcnMgLS0+XG4gICAgPGlvbi1pdGVtICpuZ0lmPVwiZGV2ZWxvcGVycyB8IGlzTm90RW1wdHlBcnJheVwiPlxuICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJwZW9wbGVcIiBjb2xvcj1cImRhcmtcIj48L2lvbi1pY29uPlxuICAgICAgPGlvbi1sYWJlbD5cbiAgICAgICAgPHA+XG4gICAgICAgICAge3sgJ0FCT1VULkRFVkVMT1BFRF9CWScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9wPlxuICAgICAgICA8aW9uLWxpc3QgbGluZXM9XCJub25lXCI+XG4gICAgICAgICAgPGlvbi1pdGVtICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRldmVsb3BlcnNcIiBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG4gICAgICAgICAgICA8aW9uLWxhYmVsPlxuICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICA8YSBjb2xvcj1cInByaW1hcnlcIiBocmVmPVwie3sgaXRlbS5zaXRlVXJsIH19XCIgdGFyZ2V0PVwiX3N5c3RlbVwiPnt7IGl0ZW0ubmFtZSB8fCBpdGVtLmxhYmVsIH19PC9hPlxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgIDxpb24taW1nIHNsb3Q9XCJlbmRcIiBbc3JjXT1cIml0ZW0ubG9nb1wiIC8+XG4gICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgPC9pb24tbGlzdD5cbiAgICAgIDwvaW9uLWxhYmVsPlxuICAgIDwvaW9uLWl0ZW0+XG5cbiAgICA8IS0tIFBhcnRuZXJzIC0tPlxuICAgIDxpb24taXRlbSBjbGFzcz1cIml0ZW0tcGFydG5lcnNcIiAqbmdJZj1cInBhcnRuZXJzIHwgaXNOb3RFbXB0eUFycmF5XCI+XG4gICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgbmFtZT1cIm1lZ2FwaG9uZVwiIGNvbG9yPVwiZGFya1wiPjwvaW9uLWljb24+XG4gICAgICA8aW9uLXRleHQ+XG4gICAgICAgIDxwPnt7ICdBQk9VVC5QQVJUTkVSUycgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgIDxwPlxuICAgICAgICAgIDxhICpuZ0Zvcj1cImxldCBpdGVtIG9mIHBhcnRuZXJzXCIgaHJlZj1cInt7IGl0ZW0uc2l0ZVVybCB9fVwiIGNsYXNzPVwicGFydG5lcnNcIiB0YXJnZXQ9XCJfc3lzdGVtXCI+XG4gICAgICAgICAgICA8aW1nICpuZ0lmPVwiaXRlbS5sb2dvOyBlbHNlIHBhcnRuZXJOYW1lXCIgW3NyY109XCJpdGVtLmxvZ29cIiBbYWx0XT1cIml0ZW0ubGFiZWxcIiAvPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNwYXJ0bmVyTmFtZT5cbiAgICAgICAgICAgICAgPGlvbi10ZXh0Pnt7IGl0ZW0ubGFiZWwgfX08L2lvbi10ZXh0PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvaW9uLXRleHQ+XG4gICAgPC9pb24taXRlbT5cbiAgPC9pb24tbGlzdD5cbjwvaW9uLWNvbnRlbnQ+XG5cbjxpb24tZm9vdGVyIGhpZGRlbi14cyBoaWRkZW4tc20gaGlkZGVuLW1vYmlsZT5cbiAgPGlvbi10b29sYmFyPlxuICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIiBub3dyYXA+XG4gICAgICA8aW9uLWNvbD48L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBzaXplPVwiYXV0b1wiPlxuICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwic29saWRcIiBjb2xvcj1cInRlcnRpYXJ5XCIgKGNsaWNrKT1cImNsb3NlKClcIj57eyAnQ09NTU9OLkJUTl9DTE9TRScgfCB0cmFuc2xhdGUgfX08L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgPC9pb24tcm93PlxuICA8L2lvbi10b29sYmFyPlxuPC9pb24tZm9vdGVyPlxuIl19