@po-ui/ng-components 18.21.0 → 18.23.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 (76) hide show
  1. package/esm2022/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-field.interface.mjs +1 -1
  2. package/esm2022/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields.component.mjs +19 -19
  3. package/esm2022/lib/components/po-field/po-checkbox-group/po-checkbox-group-base.component.mjs +18 -2
  4. package/esm2022/lib/components/po-field/po-checkbox-group/po-checkbox-group.component.mjs +4 -4
  5. package/esm2022/lib/components/po-field/po-combo/po-combo-base.component.mjs +22 -2
  6. package/esm2022/lib/components/po-field/po-combo/po-combo.component.mjs +4 -4
  7. package/esm2022/lib/components/po-field/po-datepicker/po-datepicker-base.component.mjs +22 -2
  8. package/esm2022/lib/components/po-field/po-datepicker/po-datepicker.component.mjs +4 -4
  9. package/esm2022/lib/components/po-field/po-datepicker-range/po-datepicker-range-base.component.mjs +18 -2
  10. package/esm2022/lib/components/po-field/po-datepicker-range/po-datepicker-range.component.mjs +4 -4
  11. package/esm2022/lib/components/po-field/po-decimal/po-decimal.component.mjs +4 -4
  12. package/esm2022/lib/components/po-field/po-email/po-email.component.mjs +4 -4
  13. package/esm2022/lib/components/po-field/po-field-container/po-field-container-bottom/po-field-container-bottom.component.mjs +27 -10
  14. package/esm2022/lib/components/po-field/po-field-container/po-field-container.module.mjs +5 -4
  15. package/esm2022/lib/components/po-field/po-field-validate.model.mjs +22 -2
  16. package/esm2022/lib/components/po-field/po-input/po-input-base.component.mjs +22 -2
  17. package/esm2022/lib/components/po-field/po-input/po-input.component.mjs +4 -4
  18. package/esm2022/lib/components/po-field/po-login/po-login.component.mjs +4 -4
  19. package/esm2022/lib/components/po-field/po-lookup/po-lookup-base.component.mjs +22 -2
  20. package/esm2022/lib/components/po-field/po-lookup/po-lookup.component.mjs +4 -4
  21. package/esm2022/lib/components/po-field/po-multiselect/po-multiselect-base.component.mjs +22 -2
  22. package/esm2022/lib/components/po-field/po-multiselect/po-multiselect.component.mjs +4 -4
  23. package/esm2022/lib/components/po-field/po-number/po-number.component.mjs +4 -4
  24. package/esm2022/lib/components/po-field/po-password/po-password.component.mjs +4 -4
  25. package/esm2022/lib/components/po-field/po-radio-group/po-radio-group-base.component.mjs +18 -2
  26. package/esm2022/lib/components/po-field/po-radio-group/po-radio-group.component.mjs +4 -4
  27. package/esm2022/lib/components/po-field/po-rich-text/po-rich-text-base.component.mjs +18 -2
  28. package/esm2022/lib/components/po-field/po-rich-text/po-rich-text.component.mjs +4 -4
  29. package/esm2022/lib/components/po-field/po-select/po-select.component.mjs +4 -4
  30. package/esm2022/lib/components/po-field/po-textarea/po-textarea-base.component.mjs +18 -2
  31. package/esm2022/lib/components/po-field/po-textarea/po-textarea.component.mjs +4 -4
  32. package/esm2022/lib/components/po-field/po-upload/po-upload-base.component.mjs +86 -2
  33. package/esm2022/lib/components/po-field/po-upload/po-upload.component.mjs +17 -7
  34. package/esm2022/lib/components/po-field/po-url/po-url.component.mjs +4 -4
  35. package/esm2022/lib/components/po-progress/index.mjs +2 -1
  36. package/esm2022/lib/components/po-progress/interfaces/index.mjs +2 -0
  37. package/esm2022/lib/components/po-progress/interfaces/po-progress-actions.interface.mjs +2 -0
  38. package/esm2022/lib/components/po-progress/po-progress-base.component.mjs +87 -2
  39. package/esm2022/lib/components/po-progress/po-progress.component.mjs +44 -15
  40. package/fesm2022/po-ui-ng-components.mjs +553 -132
  41. package/fesm2022/po-ui-ng-components.mjs.map +1 -1
  42. package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-field.interface.d.ts +57 -1
  43. package/lib/components/po-field/po-checkbox-group/po-checkbox-group-base.component.d.ts +14 -1
  44. package/lib/components/po-field/po-combo/po-combo-base.component.d.ts +16 -1
  45. package/lib/components/po-field/po-datepicker/po-datepicker-base.component.d.ts +16 -1
  46. package/lib/components/po-field/po-datepicker-range/po-datepicker-range-base.component.d.ts +14 -1
  47. package/lib/components/po-field/po-field-container/po-field-container-bottom/po-field-container-bottom.component.d.ts +7 -1
  48. package/lib/components/po-field/po-field-container/po-field-container.module.d.ts +2 -1
  49. package/lib/components/po-field/po-field-validate.model.d.ts +16 -1
  50. package/lib/components/po-field/po-input/po-input-base.component.d.ts +16 -1
  51. package/lib/components/po-field/po-lookup/po-lookup-base.component.d.ts +16 -1
  52. package/lib/components/po-field/po-multiselect/po-multiselect-base.component.d.ts +16 -1
  53. package/lib/components/po-field/po-radio-group/po-radio-group-base.component.d.ts +14 -1
  54. package/lib/components/po-field/po-rich-text/po-rich-text-base.component.d.ts +14 -1
  55. package/lib/components/po-field/po-textarea/po-textarea-base.component.d.ts +14 -1
  56. package/lib/components/po-field/po-upload/po-upload-base.component.d.ts +80 -1
  57. package/lib/components/po-field/po-upload/po-upload.component.d.ts +6 -0
  58. package/lib/components/po-progress/index.d.ts +1 -0
  59. package/lib/components/po-progress/interfaces/index.d.ts +1 -0
  60. package/lib/components/po-progress/interfaces/po-progress-actions.interface.d.ts +83 -0
  61. package/lib/components/po-progress/po-progress-base.component.d.ts +81 -1
  62. package/lib/components/po-progress/po-progress.component.d.ts +4 -0
  63. package/package.json +4 -4
  64. package/po-ui-ng-components-18.23.0.tgz +0 -0
  65. package/schematics/ng-add/index.js +1 -1
  66. package/schematics/ng-update/v14/index.js +1 -1
  67. package/schematics/ng-update/v15/index.js +1 -1
  68. package/schematics/ng-update/v16/index.js +1 -1
  69. package/schematics/ng-update/v17/index.js +1 -1
  70. package/schematics/ng-update/v18/index.js +2 -2
  71. package/schematics/ng-update/v2/index.js +1 -1
  72. package/schematics/ng-update/v3/index.js +1 -1
  73. package/schematics/ng-update/v4/index.js +1 -1
  74. package/schematics/ng-update/v5/index.js +1 -1
  75. package/schematics/ng-update/v6/index.js +1 -1
  76. package/po-ui-ng-components-18.21.0.tgz +0 -0
@@ -480,7 +480,7 @@ export class PoSelectComponent extends PoFieldValidateModel {
480
480
  useExisting: forwardRef(() => PoSelectComponent),
481
481
  multi: true
482
482
  }
483
- ]), i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 9, vars: 20, consts: [["select", ""], [3, "p-disabled", "p-id", "p-label", "p-optional", "p-required", "p-show-required"], [1, "po-field-container-content"], [1, "po-select", 3, "change", "ngClass", "disabled", "id", "required"], [4, "ngIf"], [3, "p-help", "p-disabled", "p-error-pattern"], [3, "disabled", "hidden", "selected", "value", 4, "ngIf"], [3, "hidden"], [3, "disabled", "hidden", "selected", "value"], [3, "disabled", "value", 4, "ngFor", "ngForOf"], [3, "disabled", "value"], [4, "ngFor", "ngForOf"], [3, "label", "disabled", 4, "ngIf"], [3, "label", "disabled"], [3, "value", "disabled", 4, "ngFor", "ngForOf"], [3, "value", "disabled"]], template: function PoSelectComponent_Template(rf, ctx) { if (rf & 1) {
483
+ ]), i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 9, vars: 22, consts: [["select", ""], [3, "p-disabled", "p-id", "p-label", "p-optional", "p-required", "p-show-required"], [1, "po-field-container-content"], [1, "po-select", 3, "change", "ngClass", "disabled", "id", "required"], [4, "ngIf"], [3, "p-help", "p-disabled", "p-error-pattern", "p-error-limit", "p-append-in-body"], [3, "disabled", "hidden", "selected", "value", 4, "ngIf"], [3, "hidden"], [3, "disabled", "hidden", "selected", "value"], [3, "disabled", "value", 4, "ngFor", "ngForOf"], [3, "disabled", "value"], [4, "ngFor", "ngForOf"], [3, "label", "disabled", 4, "ngIf"], [3, "label", "disabled"], [3, "value", "disabled", 4, "ngFor", "ngForOf"], [3, "value", "disabled"]], template: function PoSelectComponent_Template(rf, ctx) { if (rf & 1) {
484
484
  const _r1 = i0.ɵɵgetCurrentView();
485
485
  i0.ɵɵelementStart(0, "po-field-container", 1)(1, "div", 2)(2, "select", 3, 0);
486
486
  i0.ɵɵlistener("change", function PoSelectComponent_Template_select_change_2_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onSelectChange($event.target.value)); });
@@ -503,7 +503,7 @@ export class PoSelectComponent extends PoFieldValidateModel {
503
503
  i0.ɵɵadvance();
504
504
  i0.ɵɵproperty("ngIf", ctx.listGroupOptions.length > 0);
505
505
  i0.ɵɵadvance();
506
- i0.ɵɵproperty("p-help", ctx.help)("p-disabled", ctx.disabled)("p-error-pattern", ctx.getErrorPattern());
506
+ i0.ɵɵproperty("p-help", ctx.help)("p-disabled", ctx.disabled)("p-error-pattern", ctx.getErrorPattern())("p-error-limit", ctx.errorLimit)("p-append-in-body", ctx.errorAppendBox);
507
507
  } }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i3.PoFieldContainerBottomComponent, i4.PoFieldContainerComponent], encapsulation: 2, changeDetection: 0 });
508
508
  }
509
509
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoSelectComponent, [{
@@ -519,7 +519,7 @@ export class PoSelectComponent extends PoFieldValidateModel {
519
519
  useExisting: forwardRef(() => PoSelectComponent),
520
520
  multi: true
521
521
  }
522
- ], template: "<po-field-container\n [p-disabled]=\"disabled\"\n [p-id]=\"id\"\n [p-label]=\"label\"\n [p-optional]=\"optional\"\n [p-required]=\"required\"\n [p-show-required]=\"showRequired\"\n>\n <div class=\"po-field-container-content\">\n <select\n #select\n class=\"po-select\"\n [ngClass]=\"iconNameLib === 'PhosphorIcon' ? 'po-select-phosphor' : 'po-select-poicon'\"\n [attr.name]=\"name\"\n [class.po-select-placeholder]=\"!selectedValue?.toString() && !!placeholder\"\n [disabled]=\"disabled\"\n [id]=\"id\"\n [required]=\"required\"\n (change)=\"onSelectChange($event.target.value)\"\n >\n <ng-container *ngIf=\"!isSafari\">\n <option\n *ngIf=\"!selectedValue?.toString() || !!placeholder\"\n [disabled]=\"!!placeholder\"\n [hidden]=\"!selectedValue?.toString() && !placeholder\"\n [selected]=\"!selectedValue?.toString()\"\n [value]=\"placeholder ?? ''\"\n >\n {{ placeholder }}\n </option>\n <option [hidden]=\"true\">{{ displayValue }}</option>\n </ng-container>\n\n <ng-container *ngIf=\"isSafari\">\n <option>{{ displayValue || placeholder }}</option>\n </ng-container>\n\n <ng-container *ngIf=\"optionWithoutGroup.length > 0\">\n <option *ngFor=\"let item of optionWithoutGroup\" [disabled]=\"readonly\" [value]=\"item?.[this.fieldValue]\">\n {{ item?.[this.fieldLabel] }}\n </option>\n </ng-container>\n <ng-container *ngIf=\"listGroupOptions.length > 0\">\n <ng-container *ngFor=\"let item of listGroupOptions\">\n <optgroup *ngIf=\"item?.options.length > 0\" label=\"{{ item?.label }}\" [disabled]=\"readonly\">\n <option *ngFor=\"let subItem of item.options\" [value]=\"subItem?.[this.fieldValue]\" [disabled]=\"readonly\">\n {{ subItem?.[this.fieldLabel] }}\n </option>\n </optgroup>\n </ng-container>\n </ng-container>\n </select>\n </div>\n\n <po-field-container-bottom\n [p-help]=\"help\"\n [p-disabled]=\"disabled\"\n [p-error-pattern]=\"getErrorPattern()\"\n ></po-field-container-bottom>\n</po-field-container>\n" }]
522
+ ], template: "<po-field-container\n [p-disabled]=\"disabled\"\n [p-id]=\"id\"\n [p-label]=\"label\"\n [p-optional]=\"optional\"\n [p-required]=\"required\"\n [p-show-required]=\"showRequired\"\n>\n <div class=\"po-field-container-content\">\n <select\n #select\n class=\"po-select\"\n [ngClass]=\"iconNameLib === 'PhosphorIcon' ? 'po-select-phosphor' : 'po-select-poicon'\"\n [attr.name]=\"name\"\n [class.po-select-placeholder]=\"!selectedValue?.toString() && !!placeholder\"\n [disabled]=\"disabled\"\n [id]=\"id\"\n [required]=\"required\"\n (change)=\"onSelectChange($event.target.value)\"\n >\n <ng-container *ngIf=\"!isSafari\">\n <option\n *ngIf=\"!selectedValue?.toString() || !!placeholder\"\n [disabled]=\"!!placeholder\"\n [hidden]=\"!selectedValue?.toString() && !placeholder\"\n [selected]=\"!selectedValue?.toString()\"\n [value]=\"placeholder ?? ''\"\n >\n {{ placeholder }}\n </option>\n <option [hidden]=\"true\">{{ displayValue }}</option>\n </ng-container>\n\n <ng-container *ngIf=\"isSafari\">\n <option>{{ displayValue || placeholder }}</option>\n </ng-container>\n\n <ng-container *ngIf=\"optionWithoutGroup.length > 0\">\n <option *ngFor=\"let item of optionWithoutGroup\" [disabled]=\"readonly\" [value]=\"item?.[this.fieldValue]\">\n {{ item?.[this.fieldLabel] }}\n </option>\n </ng-container>\n <ng-container *ngIf=\"listGroupOptions.length > 0\">\n <ng-container *ngFor=\"let item of listGroupOptions\">\n <optgroup *ngIf=\"item?.options.length > 0\" label=\"{{ item?.label }}\" [disabled]=\"readonly\">\n <option *ngFor=\"let subItem of item.options\" [value]=\"subItem?.[this.fieldValue]\" [disabled]=\"readonly\">\n {{ subItem?.[this.fieldLabel] }}\n </option>\n </optgroup>\n </ng-container>\n </ng-container>\n </select>\n </div>\n\n <po-field-container-bottom\n [p-help]=\"help\"\n [p-disabled]=\"disabled\"\n [p-error-pattern]=\"getErrorPattern()\"\n [p-error-limit]=\"errorLimit\"\n [p-append-in-body]=\"errorAppendBox\"\n ></po-field-container-bottom>\n</po-field-container>\n" }]
523
523
  }], () => [{ type: undefined, decorators: [{
524
524
  type: Optional
525
525
  }, {
@@ -548,4 +548,4 @@ export class PoSelectComponent extends PoFieldValidateModel {
548
548
  args: ['p-field-value']
549
549
  }] }); })();
550
550
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PoSelectComponent, { className: "PoSelectComponent", filePath: "lib/components/po-field/po-select/po-select.component.ts", lineNumber: 123 }); })();
551
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1zZWxlY3QvcG8tc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1zZWxlY3QvcG8tc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUdOLFNBQVMsRUFDVCxVQUFVLEVBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRixPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUix1QkFBdUIsRUFDdkIsNkJBQTZCLEVBQzdCLElBQUksRUFDSixVQUFVLEVBQ1gsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7O0lDUDFELGlDQU1DO0lBQ0MsWUFDRjtJQUFBLGlCQUFTOzs7O0lBSFAsQUFEQSxBQURBLEFBREEsK0NBQTBCLDJHQUMyQixzRkFDZCwwRkFDWjtJQUUzQixjQUNGO0lBREUsbURBQ0Y7OztJQVRGLDZCQUFnQztJQUM5Qix1RkFNQztJQUdELGlDQUF3QjtJQUFBLFlBQWtCO0lBQUEsaUJBQVM7Ozs7SUFSaEQsY0FBaUQ7SUFBakQsdUhBQWlEO0lBUTVDLGNBQWU7SUFBZiw2QkFB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bUIsYUFBYTtrQkFBckUsU0FBUzttQkFBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFnQjlCLGFBQWE7a0JBQXJDLE1BQU07bUJBQUMsZUFBZTtZQVdzQyxRQUFRO2tCQUFwRSxLQUFLO21CQUFDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7WUFHbkMsV0FBVztrQkFBbEMsS0FBSzttQkFBQyxlQUFlO1lBbURFLE9BQU87a0JBQTlCLEtBQUs7bUJBQUMsV0FBVztZQTBDVSxVQUFVO2tCQUFyQyxLQUFLO21CQUFDLGVBQWU7WUFvQk0sVUFBVTtrQkFBckMsS0FBSzttQkFBQyxlQUFlOztrRkFsSlgsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgZm9yd2FyZFJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7XG4gIGNvbnZlcnRUb0Jvb2xlYW4sXG4gIGlzU2FmYXJpLFxuICByZW1vdmVEdXBsaWNhdGVkT3B0aW9ucyxcbiAgcmVtb3ZlVW5kZWZpbmVkQW5kTnVsbE9wdGlvbnMsXG4gIHV1aWQsXG4gIHZhbGlkVmFsdWVcbn0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvdXRpbCc7XG5cbmltcG9ydCB7IElDT05TX0RJQ1RJT05BUlksIFBob3NwaG9ySWNvbkRpY3Rpb25hcnkgfSBmcm9tICcuLi8uLi9wby1pY29uJztcbmltcG9ydCB7IFBvRmllbGRWYWxpZGF0ZU1vZGVsIH0gZnJvbSAnLi4vcG8tZmllbGQtdmFsaWRhdGUubW9kZWwnO1xuaW1wb3J0IHsgUG9TZWxlY3RPcHRpb25Hcm91cCB9IGZyb20gJy4vcG8tc2VsZWN0LW9wdGlvbi1ncm91cC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9TZWxlY3RPcHRpb24gfSBmcm9tICcuL3BvLXNlbGVjdC1vcHRpb24uaW50ZXJmYWNlJztcblxuY29uc3QgUE9fU0VMRUNUX0ZJRUxEX0xBQkVMX0RFRkFVTFQgPSAnbGFiZWwnO1xuY29uc3QgUE9fU0VMRUNUX0ZJRUxEX1ZBTFVFX0RFRkFVTFQgPSAndmFsdWUnO1xuXG4vKipcbiAqIEBkb2NzRXh0ZW5kcyBQb0ZpZWxkVmFsaWRhdGVNb2RlbFxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXNlbGVjdC1iYXNpY1wiIHRpdGxlPVwiUE8gU2VsZWN0IEJhc2ljXCI+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc2VsZWN0LWJhc2ljL3NhbXBsZS1wby1zZWxlY3QtYmFzaWMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXNlbGVjdC1iYXNpYy9zYW1wbGUtcG8tc2VsZWN0LWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXNlbGVjdC1sYWJzXCIgdGl0bGU9XCJQTyBTZWxlY3QgTGFic1wiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXNlbGVjdC1sYWJzL3NhbXBsZS1wby1zZWxlY3QtbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc2VsZWN0LWxhYnMvc2FtcGxlLXBvLXNlbGVjdC1sYWJzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXNlbGVjdC1jdXN0b21lci1yZWdpc3RyYXRpb25cIiB0aXRsZT1cIlBPIFNlbGVjdCAtIEN1c3RvbWVyIHJlZ2lzdHJhdGlvblwiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXNlbGVjdC1jdXN0b21lci1yZWdpc3RyYXRpb24vc2FtcGxlLXBvLXNlbGVjdC1jdXN0b21lci1yZWdpc3RyYXRpb24uY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXNlbGVjdC1jdXN0b21lci1yZWdpc3RyYXRpb24vc2FtcGxlLXBvLXNlbGVjdC1jdXN0b21lci1yZWdpc3RyYXRpb24uY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zZWxlY3QtY3VzdG9tZXItcmVnaXN0cmF0aW9uL3NhbXBsZS1wby1zZWxlY3QtY3VzdG9tZXItcmVnaXN0cmF0aW9uLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPSdzYW1wbGUtcG8tc2VsZWN0LWN1c3RvbWVyLXJlZ2lzdHJhdGlvbi9zYW1wbGUtcG8tc2VsZWN0LWN1c3RvbWVyLXJlZ2lzdHJhdGlvbi5jb21wb25lbnQuZTJlLXNwZWMudHMnPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9J3NhbXBsZS1wby1zZWxlY3QtY3VzdG9tZXItcmVnaXN0cmF0aW9uL3NhbXBsZS1wby1zZWxlY3QtY3VzdG9tZXItcmVnaXN0cmF0aW9uLmNvbXBvbmVudC5wby50cyc+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tc2VsZWN0LWNvbXBhbmllc1wiIHRpdGxlPVwiUE8gU2VsZWN0IENvbXBhbmllc1wiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXNlbGVjdC1jb21wYW5pZXMvc2FtcGxlLXBvLXNlbGVjdC1jb21wYW5pZXMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXNlbGVjdC1jb21wYW5pZXMvc2FtcGxlLXBvLXNlbGVjdC1jb21wYW5pZXMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBPIGNvbXBvbmVudGUgcG8tc2VsZWN0IGV4aWJlIHVtYSBsaXN0YSBkZSB2YWxvcmVzIGUgcGVybWl0ZSBxdWUgbyB1c3XDoXJpbyBzZWxlY2lvbmUgdW0gZGVzc2VzIHZhbG9yZXMuXG4gKiBPcyB2YWxvcmVzIGxpc3RhZG9zIHBvZGVtIHNlciBmaXhvcyBvdSBkaW7Dom1pY29zIGRlIGFjb3JkbyBjb20gYSBuZWNlc3NpZGFkZSBkbyBkZXNlbnZvbHZlZG9yLCBkYW5kbyBtYWlzIGZsZXhpYmlsaWRhZGUgYW8gY29tcG9uZW50ZS5cbiAqIE8gcG8tc2VsZWN0IG7Do28gcGVybWl0ZSBxdWUgbyB1c3XDoXJpbyBpbmZvcm1lIHVtIHZhbG9yIGRpZmVyZW50ZSBkb3MgdmFsb3JlcyBsaXN0YWRvcywgaXNzbyBnYXJhbnRlIGEgY29uc2lzdMOqbmNpYSBkYSBpbmZvcm1hw6fDo28uXG4gKiBPIHBvLXNlbGVjdCBuw6NvIHBlcm1pdGUgcXVlIHNlamFtIHBhc3NhZG9zIHZhbG9yZXMgZHVwbGljYWRvcywgdW5kZWZpbmVkIGUgbnVsbCBwYXJhIGFzIG9ww6fDtWVzLCBleGNsdWluZG8tb3MgZGEgbGlzdGEuXG4gKlxuICogPiBBbyBwYXNzYXIgdW0gdmFsb3IgcGFyYSBvIF9tb2RlbF8gcXVlIG7Do28gZXN0w6EgbmEgbGlzdGEgZGUgb3DDp8O1ZXMsIG8gbWVzbW8gc2Vyw6EgZGVmaW5pZG8gY29tbyBgdW5kZWZpbmVkYC5cbiAqXG4gKiBUYW1iw6ltIGV4aXN0ZSBhIHBvc3NpYmlsaWRhZGUgZGUgdXRpbGl6YXIgdW0gX3RlbXBsYXRlXyBwYXJhIGEgZXhpYmnDp8OjbyBkb3MgaXRlbnMgZGEgbGlzdGEsXG4gKiB2ZWphIG1haXMgZW0gKipbcC1jb21iby1vcHRpb24tdGVtcGxhdGVdKC9kb2N1bWVudGF0aW9uL3BvLWNvbWJvLW9wdGlvbi10ZW1wbGF0ZSkqKi5cbiAqXG4gKiA+IE9iczogbyB0ZW1wbGF0ZSAqKltwLXNlbGVjdC1vcHRpb24tdGVtcGxhdGVdKC9kb2N1bWVudGF0aW9uL3BvLXNlbGVjdC1vcHRpb24tdGVtcGxhdGUpKiogc2Vyw6EgZGVwcmVjaWFkbyBuYSB2ZXJzw6NvIDE0LngueC5cbiAqXG4gKiAjIyMjIFRva2VucyBjdXN0b21pesOhdmVpc1xuICpcbiAqIMOJIHBvc3PDrXZlbCBhbHRlcmFyIG8gZXN0aWxvIGRvIGNvbXBvbmVudGUgdXNhbmRvIG9zIHNlZ3VpbnRlcyB0b2tlbnMgKENTUyk6XG4gKlxuICogPiBQYXJhIG1haW9yZXMgaW5mb3JtYcOnw7VlcywgYWNlc3NlIG8gZ3VpYSBbUGVyc29uYWxpemFuZG8gbyBUZW1hIFBhZHLDo28gY29tIFRva2VucyBDU1NdKGh0dHBzOi8vcG8tdWkuaW8vZ3VpZGVzL3RoZW1lLWN1c3RvbWl6YXRpb24pLlxuICpcbiAqIHwgUHJvcHJpZWRhZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmnDp8OjbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmFsb3IgUGFkcsOjbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgKipEZWZhdWx0IFZhbHVlcyoqICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tZm9udC1mYW1pbHlgICAgICAgICAgICAgICAgICAgICAgICAgfCBGYW3DrWxpYSB0aXBvZ3LDoWZpY2EgdXNhZGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWZvbnQtZmFtaWx5LXRoZW1lKWAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1mb250LXNpemVgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRhbWFuaG8gZGEgZm9udGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWZvbnQtc2l6ZS1kZWZhdWx0KWAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS10ZXh0LWNvbG9yLWVtcHR5YCAgICAgICAgICAgICAgICAgICB8IENvciBkbyBwbGFjZWhvbGRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLW5ldXRyYWwtbGlnaHQtMzApYCAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1jb2xvcmAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvciBkYSBib3JkYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLW5ldXRyYWwtZGFyay03MClgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1iYWNrZ3JvdW5kYCAgICAgICAgICAgICAgICAgICAgICAgICB8IENvciBkZSBiYWNrZ3JvdW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLW5ldXRyYWwtbGlnaHQtMDUpYCAgICAgICAgICAgICAgICAgfFxuICogfCBgLS10ZXh0LWNvbG9yYCAgICAgICAgICAgICAgICAgICAgICAgICB8IENvciBkbyB0ZXh0byAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLW5ldXRyYWwtZGFyay05MClgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1wYWRkaW5nLWhvcml6b250YWxgICAgICAgICAgICAgICAgICB8IFByZWVuY2hpbWVudG8gaG9yaXpvbnRhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYDAuNWVtYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1wYWRkaW5nLXZlcnRpY2FsYCAgICAgICAgICAgICAgICAgICB8IFByZWVuY2hpbWVudG8gdmVydGljYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYDAuN2VtYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAqKkhvdmVyKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1jb2xvci1ob3ZlcmAgICAgICAgICAgICAgICAgICAgICAgICB8IENvciBwcmluY2lwYWwgbm8gZXN0YWRvIGhvdmVyICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLWJyYW5kLTAxLWRhcmspYCAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1iYWNrZ3JvdW5kLWhvdmVyYCAgICAgICAgICAgICAgICAgICB8IENvciBkZSBiYWNrZ3JvdW5kIG5vIGVzdGFkbyBob3ZlciAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLWJyYW5kLTAxLWxpZ2h0ZXIpYCAgICAgICAgICAgICAgICAgfFxuICogfCAqKkZvY3VzZWQqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1vdXRsaW5lLWNvbG9yLWZvY3VzZWRgICAgICAgICAgICAgICB8IENvciBkbyBvdXRsaW5lIGRvIGVzdGFkbyBkZSBmb2N1cyAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLWFjdGlvbi1mb2N1cylgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1jb2xvci1mb2N1c2VkYCAgICAgICAgICAgICAgICAgICAgICB8IENvciBkYSBib3JkYSBubyBlc3RhZG8gZGUgZm9jdXMgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLWFjdGlvbi1kZWZhdWx0KWAgICAgICAgICAgICAgICAgICAgfFxuICogfCAqKkRpc2FibGVkKiogICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1jb2xvci1kaXNhYmxlZGAgICAgICAgICAgICAgICAgICAgICB8IENvciBwcmluY2lwYWwgbm8gZXN0YWRvIGRpc2FibGVkICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLW5ldXRyYWwtbGlnaHQtMzApYCAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1iYWNrZ3JvdW5kLWNvbG9yLWRpc2FibGVkYCZuYnNwOyAgICB8IENvciBkZSBiYWNrZ3JvdW5kIG5vIGVzdGFkbyBkaXNhYmxlZCAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLW5ldXRyYWwtbGlnaHQtMjApYCAgICAgICAgICAgICAgICAgfFxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncG8tc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBvU2VsZWN0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUG9TZWxlY3RDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgUG9TZWxlY3RDb21wb25lbnQgZXh0ZW5kcyBQb0ZpZWxkVmFsaWRhdGVNb2RlbDxhbnk+IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgcHJpdmF0ZSBfaWNvblRva2VuOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIHNlbGVjdEVsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRnVuw6fDo28gcGFyYSBhdHVhbGl6YXIgbyBuZ01vZGVsIGRvIGNvbXBvbmVudGUsIG5lY2Vzc8OhcmlvIHF1YW5kbyBuw6NvIGZvciB1dGlsaXphZG8gZGVudHJvIGRhIHRhZyBmb3JtLlxuICAgKlxuICAgKiBOYSB2ZXJzw6NvIDEyLjIuMCBkbyBBbmd1bGFyIGEgdmVyaWZpY2HDp8OjbyBgc3RyaWN0VGVtcGxhdGVzYCB2ZW0gdHJ1ZSBjb21vIGRlZmF1bHQuIFBvcnRhbnRvLCBwYXJhIHV0aWxpemFyXG4gICAqIHR3by13YXkgYmluZGluZyBubyBjb21wb25lbnRlIGRldmUgc2UgdXRpbGl6YXIgZGEgc2VndWludGUgZm9ybWE6XG4gICAqXG4gICAqIGBgYFxuICAgKiA8cG8tc2VsZWN0IC4uLiBbbmdNb2RlbF09XCJzZWxlY3RNb2RlbFwiIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdE1vZGVsID0gJGV2ZW50XCI+IDwvcG8tc2VsZWN0PlxuICAgKiBgYGBcbiAgICovXG4gIEBPdXRwdXQoJ25nTW9kZWxDaGFuZ2UnKSBuZ01vZGVsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEluZGljYSBxdWUgbyBjYW1wbyBzZXLDoSBzb21lbnRlIHBhcmEgbGVpdHVyYS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLXJlYWRvbmx5JywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIE1lbnNhZ2VtIHF1ZSBhcGFyZWNlcsOhIGVucXVhbnRvIG5lbmh1bWEgb3DDp8OjbyBlc3RpdmVyIHNlbGVjaW9uYWRhLiAqL1xuICBASW5wdXQoJ3AtcGxhY2Vob2xkZXInKSBwbGFjZWhvbGRlcj86IHN0cmluZztcblxuICBkaXNwbGF5VmFsdWU7XG4gIGlkID0gYHBvLXNlbGVjdFske3V1aWQoKX1dYDtcbiAgbW9kZWxWYWx1ZTogYW55O1xuICBzZWxlY3RlZFZhbHVlOiBhbnk7XG4gIG9wdGlvbnNEZWZhdWx0ID0gW107XG4gIGxpc3RHcm91cE9wdGlvbnMgPSBbXTtcbiAgb3B0aW9uV2l0aG91dEdyb3VwID0gW107XG4gIGlzU2FmYXJpOiBib29sZWFuID0gaXNTYWZhcmkoKTtcblxuICBwcm90ZWN0ZWQgb25Nb2RlbFRvdWNoZWQ6IGFueTtcblxuICBwcml2YXRlIF9maWVsZExhYmVsPzogc3RyaW5nID0gUE9fU0VMRUNUX0ZJRUxEX0xBQkVMX0RFRkFVTFQ7XG4gIHByaXZhdGUgX2ZpZWxkVmFsdWU/OiBzdHJpbmcgPSBQT19TRUxFQ1RfRklFTERfVkFMVUVfREVGQVVMVDtcbiAgcHJpdmF0ZSBfb3B0aW9uczogQXJyYXk8UG9TZWxlY3RPcHRpb24+IHwgQXJyYXk8UG9TZWxlY3RPcHRpb25Hcm91cD4gfCBBcnJheTxhbnk+O1xuXG4gIC8qKlxuICAgKiBOZXN0YSBwcm9wcmllZGFkZSBkZXZlIHNlciBkZWZpbmlkbyB1bWEgY29sZcOnw6NvIGRlIG9iamV0b3MgcXVlIGltcGxlbWVudGFtIGEgaW50ZXJmYWNlIGBQb1NlbGVjdE9wdGlvbmAsXG4gICAqIG91IHVtYSBjb2xlw6fDo28gZGUgb2JqZXRvcyBkZW50cm8gZGUgZ3J1cG9zIGRpZmVyZW50ZXMsIHF1ZSBzZXJpYW0gZGEgaW50ZXJmYWNlIGBQb1NlbGVjdE9wdGlvbkdyb3VwYC5cbiAgICpcbiAgICogQ2FzbyBlc3RhIGxpc3RhIGVzdGl2ZXIgdmF6aWEsIG8gbW9kZWwgc2Vyw6EgYHVuZGVmaW5lZGAuXG4gICAqXG4gICAqID4gRXNzYSBwcm9wcmllZGFkZSDDqSBpbXV0w6F2ZWwsIG91IHNlamEsIHNlbXByZSBxdWUgcXVpc2VyIGF0dWFsaXphciBhIGxpc3RhIGRlIG9ww6fDtWVzIGRpc3BvbsOtdmVpc1xuICAgKiBhdHVhbGl6ZSBhIHJlZmVyw6puY2lhIGRvIG9iamV0bzpcbiAgICpcbiAgICogYGBgXG4gICAqIC8vIGF0dWFsaXphIGEgcmVmZXLDqm5jaWEgZG8gb2JqZXRvIGdhcmFudGluZG8gYSBhdHVhbGl6YcOnw6NvIGRvIHRlbXBsYXRlXG4gICAqIHRoaXMub3B0aW9ucyA9IFsuLi50aGlzLm9wdGlvbnMsIHsgdmFsdWU6ICd4JywgbGFiZWw6ICdOb3ZhIG9ww6fDo28nIH1dO1xuICAgKlxuICAgKiAvLyBldml0ZSwgcG9pcyBuw6NvIGF0dWFsaXphIGEgcmVmZXLDqm5jaWEgZG8gb2JqZXRvIHBvZGVuZG8gZ2VyYXIgYXRyYXNvcyBuYSBhdHVhbGl6YcOnw6NvIGRvIHRlbXBsYXRlXG4gICAqIHRoaXMub3B0aW9ucy5wdXNoKHsgdmFsdWU6ICd4JywgbGFiZWw6ICdOb3ZhIG9ww6fDo28nIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogPiBQYXJhIGNvbGXDp8OjbyBkZSBvYmpldG9zIGRlbnRybyBkZSBncnVwb3MgZGlzdGludG9zIHNlcsOhIGV4aWJpZG8gYSBsYWJlbCBlIG9ww6fDtWVzIHNvbWVudGUgc2UgYSBwcm9wcmllZGFkZSBgb3B0aW9uc2AgcG9zc3VhIHZhbG9yZXMuXG4gICAqICBTZW5kbyBhc3NpbSwgYSBlc3RydXR1cmEgc2VndWlyaWEgZGVzc2EgZm9ybWE6XG4gICAqXG4gICAqIGBgYFxuICAgKiB0aGlzLm9wdGlvbnMgPSBbe1xuICAgKiAgbGFiZWw6ICdPcMOnw7VlcycsXG4gICAqICBvcHRpb25zOiBbXG4gICAqICAgIHsgdmFsdWU6IDEsIGxhYmVsOiAnb3DDp8OjbyAxJyB9LFxuICAgKiAgICB7IHZhbHVlOiAyLCBsYWJlbDogJ29ww6fDo28gMicgfVxuICAgKiAgXSxcbiAgICogfV07XG4gICAqIGBgYFxuICAgKlxuICAgKiDDiSBwb3Nzw612ZWwgYSB1dGlsaXphw6fDo28gZGUgb3DDp8O1ZXMgYWdydXBhZGFzIGUgZGVzYWdydXBhZGFzIGVtIGNvbmp1bnRvLCBwb3LDqW0gc2Vyw6EgZmVpdGEgYSBvcmRlbmHDp8OjbyBkZSBleGliaXIgYXMgb3DDp8O1ZXNcbiAgICogZGVzYWdydXBhZGFzIGFjaW1hLlxuICAgKlxuICAgKi9cbiAgQElucHV0KCdwLW9wdGlvbnMnKSBzZXQgb3B0aW9ucyhvcHRpb25zOiBBcnJheTxQb1NlbGVjdE9wdGlvbiB8IFBvU2VsZWN0T3B0aW9uR3JvdXAgfCBhbnk+KSB7XG4gICAgdGhpcy5saXN0R3JvdXBPcHRpb25zID0gW107XG4gICAgdGhpcy5vcHRpb25XaXRob3V0R3JvdXAgPSBbXTtcblxuICAgIGlmICh0aGlzLmZpZWxkTGFiZWwgJiYgdGhpcy5maWVsZFZhbHVlICYmIG9wdGlvbnMpIHtcbiAgICAgIG9wdGlvbnMubWFwKG9wdGlvbiA9PiB7XG4gICAgICAgIGlmICh0aGlzLmlzSXRlbUdyb3VwKG9wdGlvbikpIHtcbiAgICAgICAgICBvcHRpb24ub3B0aW9ucy5tYXAob3B0ID0+IHtcbiAgICAgICAgICAgIG9wdC5sYWJlbCA9IG9wdFt0aGlzLmZpZWxkTGFiZWxdO1xuICAgICAgICAgICAgb3B0LnZhbHVlID0gb3B0W3RoaXMuZmllbGRWYWx1ZV07XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3B0aW9uLmxhYmVsID0gb3B0aW9uW3RoaXMuZmllbGRMYWJlbF07XG4gICAgICAgICAgb3B0aW9uLnZhbHVlID0gb3B0aW9uW3RoaXMuZmllbGRWYWx1ZV07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zKSB7XG4gICAgICB0aGlzLm9wdGlvbnNEZWZhdWx0ID0gWy4uLm9wdGlvbnNdO1xuICAgICAgdGhpcy5zZXBhcmF0ZU9wdGlvbnMoKTtcblxuICAgICAgdGhpcy5vcHRpb25zRGVmYXVsdCA9IFtdO1xuICAgICAgdGhpcy5vcHRpb25zRGVmYXVsdCA9IFsuLi50aGlzLm9wdGlvbldpdGhvdXRHcm91cCwgLi4udGhpcy50cmFuc2Zvcm1JbkFycmF5KHRoaXMubGlzdEdyb3VwT3B0aW9ucyldO1xuICAgICAgdGhpcy5vblVwZGF0ZU9wdGlvbnMoKTtcbiAgICAgIHRoaXMuX29wdGlvbnMgPSBbLi4udGhpcy5vcHRpb25zRGVmYXVsdF07XG4gICAgfVxuICB9XG5cbiAgZ2V0IG9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEZXZlIHNlciBpbmZvcm1hZG8gbyBub21lIGRhIHByb3ByaWVkYWRlIGRvIG9iamV0byBxdWUgc2Vyw6EgdXRpbGl6YWRvIHBhcmEgYSBjb252ZXJzw6NvIGRvcyBpdGVucyBhcHJlc2VudGFkb3MgbmEgbGlzdGEgZG8gY29tcG9uZW50ZVxuICAgKiAoYHAtb3B0aW9uc2ApLCBlc3RhIHByb3ByaWVkYWRlIHNlcsOhIHJlc3BvbnPDoXZlbCBwZWxvIHRleHRvIGRlIGFwcmVzZW50YcOnw6NvIGRlIGNhZGEgaXRlbSBkYSBsaXN0YS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGxhYmVsYFxuICAgKi9cbiAgQElucHV0KCdwLWZpZWxkLWxhYmVsJykgc2V0IGZpZWxkTGFiZWwodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2ZpZWxkTGFiZWwgPSB2YWx1ZSB8fCBQT19TRUxFQ1RfRklFTERfTEFCRUxfREVGQVVMVDtcbiAgICBpZiAodGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLm9wdGlvbnMgPSBbLi4udGhpcy5vcHRpb25zXTtcbiAgICB9XG4gIH1cblxuICBnZXQgZmllbGRMYWJlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRMYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIERldmUgc2VyIGluZm9ybWFkbyBvIG5vbWUgZGEgcHJvcHJpZWRhZGUgZG8gb2JqZXRvIHF1ZSBzZXLDoSB1dGlsaXphZG8gcGFyYSBhIGNvbnZlcnPDo28gZG9zIGl0ZW5zIGFwcmVzZW50YWRvcyBuYSBsaXN0YSBkbyBjb21wb25lbnRlXG4gICAqIChgcC1vcHRpb25zYCksIGVzdGEgcHJvcHJpZWRhZGUgc2Vyw6EgcmVzcG9uc8OhdmVsIHBlbG8gdmFsb3IgZGUgY2FkYSBpdGVtIGRhIGxpc3RhLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdmFsdWVgXG4gICAqL1xuICBASW5wdXQoJ3AtZmllbGQtdmFsdWUnKSBzZXQgZmllbGRWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fZmllbGRWYWx1ZSA9IHZhbHVlIHx8IFBPX1NFTEVDVF9GSUVMRF9WQUxVRV9ERUZBVUxUO1xuICAgIGlmICh0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMub3B0aW9ucyA9IFsuLi50aGlzLm9wdGlvbnNdO1xuICAgIH1cbiAgfVxuXG4gIGdldCBmaWVsZFZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl9maWVsZFZhbHVlO1xuICB9XG5cbiAgZ2V0IGljb25OYW1lTGliKCkge1xuICAgIHJldHVybiB0aGlzLl9pY29uVG9rZW4uTkFNRV9MSUI7XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KElDT05TX0RJQ1RJT05BUlkpIHZhbHVlOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyXG4gICkge1xuICAgIHN1cGVyKGNoYW5nZURldGVjdG9yKTtcblxuICAgIHRoaXMuX2ljb25Ub2tlbiA9IHZhbHVlID8/IFBob3NwaG9ySWNvbkRpY3Rpb25hcnk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMub3B0aW9ucz8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLm9wdGlvbnMgPSBjaGFuZ2VzLm9wdGlvbnMuY3VycmVudFZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGdW7Dp8OjbyBxdWUgYXRyaWJ1aSBmb2NvIGFvIGNvbXBvbmVudGUuXG4gICAqXG4gICAqIFBhcmEgdXRpbGl6w6EtbGEgw6kgbmVjZXNzw6FyaW8gdGVyIGEgaW5zdMOibmNpYSBkbyBjb21wb25lbnRlIG5vIERPTSwgcG9kZW5kbyBzZXIgdXRpbGl6YWRvIG8gVmlld0NoaWxkIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICAgKlxuICAgKiBgYGBcbiAgICogaW1wb3J0IHsgUG9TZWxlY3RDb21wb25lbnQgfSBmcm9tICdAcG8tdWkvbmctY29tcG9uZW50cyc7XG4gICAqXG4gICAqIC4uLlxuICAgKlxuICAgKiBAVmlld0NoaWxkKFBvU2VsZWN0Q29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBzZWxlY3Q6IFBvU2VsZWN0Q29tcG9uZW50O1xuICAgKlxuICAgKiBmb2N1c1NlbGVjdCgpIHtcbiAgICogICB0aGlzLnNlbGVjdC5mb2N1cygpO1xuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnNlbGVjdEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIGdldEVycm9yUGF0dGVybigpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZEVycm9yTWVzc2FnZSAmJiB0aGlzLmhhc0ludmFsaWRDbGFzcygpID8gdGhpcy5maWVsZEVycm9yTWVzc2FnZSA6ICcnO1xuICB9XG5cbiAgaGFzSW52YWxpZENsYXNzKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCduZy1pbnZhbGlkJykgJiYgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbmctZGlydHknKVxuICAgICk7XG4gIH1cblxuICBvbkJsdXIoKSB7XG4gICAgdGhpcy5vbk1vZGVsVG91Y2hlZD8uKCk7XG4gIH1cblxuICAvLyBBbHRlcmEgbyB2YWxvciBhbyBzZWxlY2lvbmFyIHVtIGl0ZW0uXG4gIG9uU2VsZWN0Q2hhbmdlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkPy4oKTtcbiAgICBpZiAodmFsdWUgJiYgdGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG9wdGlvbkZvdW5kOiBhbnkgPSB0aGlzLmZpbmRPcHRpb25WYWx1ZSh2YWx1ZSk7XG5cbiAgICAgIGlmIChvcHRpb25Gb3VuZCkge1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlcyhvcHRpb25Gb3VuZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25VcGRhdGVPcHRpb25zKCkge1xuICAgIGlmICh0aGlzLm1vZGVsVmFsdWUpIHtcbiAgICAgIHRoaXMub25TZWxlY3RDaGFuZ2UodGhpcy5tb2RlbFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvLyBBdHVhbGl6YSB2YWxvcmVzXG4gIHVwZGF0ZVZhbHVlcyhvcHRpb246IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWUgIT09IG9wdGlvblt0aGlzLmZpZWxkVmFsdWVdKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBvcHRpb25bdGhpcy5maWVsZFZhbHVlXTtcbiAgICAgIHRoaXMuc2VsZWN0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlID0gb3B0aW9uW3RoaXMuZmllbGRWYWx1ZV07XG4gICAgICB0aGlzLnVwZGF0ZU1vZGVsKG9wdGlvblt0aGlzLmZpZWxkVmFsdWVdKTtcbiAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gb3B0aW9uW3RoaXMuZmllbGRMYWJlbF07XG4gICAgICB0aGlzLmVtaXRDaGFuZ2Uob3B0aW9uW3RoaXMuZmllbGRWYWx1ZV0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJlY2ViZSBhcyBhbHRlcmHDp8O1ZXMgZG8gbW9kZWxcbiAgb25Xcml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCBvcHRpb25Gb3VuZDogYW55ID0gdGhpcy5maW5kT3B0aW9uVmFsdWUodmFsdWUpO1xuXG4gICAgaWYgKG9wdGlvbkZvdW5kKSB7XG4gICAgICB0aGlzLnNlbGVjdEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9IG9wdGlvbkZvdW5kLnZhbHVlO1xuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gb3B0aW9uRm91bmRbdGhpcy5maWVsZFZhbHVlXTtcbiAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gb3B0aW9uRm91bmRbdGhpcy5maWVsZExhYmVsXTtcbiAgICB9IGVsc2UgaWYgKHZhbGlkVmFsdWUodGhpcy5zZWxlY3RlZFZhbHVlKSkge1xuICAgICAgdGhpcy5zZWxlY3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnVwZGF0ZU1vZGVsKHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICB0aGlzLm1vZGVsVmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGV4dHJhVmFsaWRhdGlvbihjOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlzSXRlbUdyb3VwKGl0ZW06IFBvU2VsZWN0T3B0aW9uIHwgUG9TZWxlY3RPcHRpb25Hcm91cCB8IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmIChpdGVtLm9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGl0ZW0ub3B0aW9ucykgPyB0cnVlIDogZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XG4gIH1cblxuICBwcml2YXRlIGlzRXF1YWwodmFsdWU6IGFueSwgaW5wdXRWYWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKCh2YWx1ZSB8fCB2YWx1ZSA9PT0gMCkgJiYgaW5wdXRWYWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkgPT09IGlucHV0VmFsdWUudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBpZiAoKHZhbHVlID09PSBudWxsICYmIGlucHV0VmFsdWUgIT09IG51bGwpIHx8ICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmIGlucHV0VmFsdWUgIT09IHVuZGVmaW5lZCkpIHtcbiAgICAgIHZhbHVlID0gYCR7dmFsdWV9YDsgLy8gVHJhbnNmb3JtYW5kbyBlbSBzdHJpbmdcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWUgPT09IGlucHV0VmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGZpbmRPcHRpb25WYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucykge1xuICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5maW5kKG9wdGlvbiA9PiB0aGlzLmlzRXF1YWwob3B0aW9uLnZhbHVlLCB2YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNmb3JtSW5BcnJheShvYmplY3RXaXRoQXJyYXk6IEFycmF5PGFueT4pOiBBcnJheTxQb1NlbGVjdE9wdGlvbkdyb3VwIHwgYW55PiB7XG4gICAgcmV0dXJuIG9iamVjdFdpdGhBcnJheS5yZWR1Y2UoKG9wdGlvbnMsIGl0ZW1zKSA9PiB7XG4gICAgICBpZiAoaXRlbXMub3B0aW9ucykge1xuICAgICAgICByZXR1cm4gb3B0aW9ucy5jb25jYXQoaXRlbXMub3B0aW9ucyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gW107XG4gICAgfSwgW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXBhcmF0ZU9wdGlvbnMoKSB7XG4gICAgdGhpcy5vcHRpb25zRGVmYXVsdC5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICBpZiAodGhpcy5pc0l0ZW1Hcm91cChvcHRpb24pKSB7XG4gICAgICAgIHRoaXMudmFsaWRhdGVPcHRpb25zKG9wdGlvbi5vcHRpb25zKTtcbiAgICAgICAgdGhpcy5saXN0R3JvdXBPcHRpb25zLnB1c2gob3B0aW9uKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3B0aW9uV2l0aG91dEdyb3VwLnB1c2gob3B0aW9uKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLm9wdGlvbldpdGhvdXRHcm91cC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlT3B0aW9ucyh0aGlzLm9wdGlvbldpdGhvdXRHcm91cCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZU9wdGlvbnMob3B0aW9uczogQXJyYXk8YW55Pikge1xuICAgIHJlbW92ZUR1cGxpY2F0ZWRPcHRpb25zKG9wdGlvbnMpO1xuICAgIHJlbW92ZVVuZGVmaW5lZEFuZE51bGxPcHRpb25zKG9wdGlvbnMpO1xuICB9XG59XG4iLCI8cG8tZmllbGQtY29udGFpbmVyXG4gIFtwLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgW3AtaWRdPVwiaWRcIlxuICBbcC1sYWJlbF09XCJsYWJlbFwiXG4gIFtwLW9wdGlvbmFsXT1cIm9wdGlvbmFsXCJcbiAgW3AtcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICBbcC1zaG93LXJlcXVpcmVkXT1cInNob3dSZXF1aXJlZFwiXG4+XG4gIDxkaXYgY2xhc3M9XCJwby1maWVsZC1jb250YWluZXItY29udGVudFwiPlxuICAgIDxzZWxlY3RcbiAgICAgICNzZWxlY3RcbiAgICAgIGNsYXNzPVwicG8tc2VsZWN0XCJcbiAgICAgIFtuZ0NsYXNzXT1cImljb25OYW1lTGliID09PSAnUGhvc3Bob3JJY29uJyA/ICdwby1zZWxlY3QtcGhvc3Bob3InIDogJ3BvLXNlbGVjdC1wb2ljb24nXCJcbiAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICBbY2xhc3MucG8tc2VsZWN0LXBsYWNlaG9sZGVyXT1cIiFzZWxlY3RlZFZhbHVlPy50b1N0cmluZygpICYmICEhcGxhY2Vob2xkZXJcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtpZF09XCJpZFwiXG4gICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgKGNoYW5nZSk9XCJvblNlbGVjdENoYW5nZSgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1NhZmFyaVwiPlxuICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgKm5nSWY9XCIhc2VsZWN0ZWRWYWx1ZT8udG9TdHJpbmcoKSB8fCAhIXBsYWNlaG9sZGVyXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiISFwbGFjZWhvbGRlclwiXG4gICAgICAgICAgW2hpZGRlbl09XCIhc2VsZWN0ZWRWYWx1ZT8udG9TdHJpbmcoKSAmJiAhcGxhY2Vob2xkZXJcIlxuICAgICAgICAgIFtzZWxlY3RlZF09XCIhc2VsZWN0ZWRWYWx1ZT8udG9TdHJpbmcoKVwiXG4gICAgICAgICAgW3ZhbHVlXT1cInBsYWNlaG9sZGVyID8/ICcnXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHBsYWNlaG9sZGVyIH19XG4gICAgICAgIDwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uIFtoaWRkZW5dPVwidHJ1ZVwiPnt7IGRpc3BsYXlWYWx1ZSB9fTwvb3B0aW9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1NhZmFyaVwiPlxuICAgICAgICA8b3B0aW9uPnt7IGRpc3BsYXlWYWx1ZSB8fCBwbGFjZWhvbGRlciB9fTwvb3B0aW9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25XaXRob3V0R3JvdXAubGVuZ3RoID4gMFwiPlxuICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIG9wdGlvbldpdGhvdXRHcm91cFwiIFtkaXNhYmxlZF09XCJyZWFkb25seVwiIFt2YWx1ZV09XCJpdGVtPy5bdGhpcy5maWVsZFZhbHVlXVwiPlxuICAgICAgICAgIHt7IGl0ZW0/Llt0aGlzLmZpZWxkTGFiZWxdIH19XG4gICAgICAgIDwvb3B0aW9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGlzdEdyb3VwT3B0aW9ucy5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbGlzdEdyb3VwT3B0aW9uc1wiPlxuICAgICAgICAgIDxvcHRncm91cCAqbmdJZj1cIml0ZW0/Lm9wdGlvbnMubGVuZ3RoID4gMFwiIGxhYmVsPVwie3sgaXRlbT8ubGFiZWwgfX1cIiBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIj5cbiAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHN1Ykl0ZW0gb2YgaXRlbS5vcHRpb25zXCIgW3ZhbHVlXT1cInN1Ykl0ZW0/Llt0aGlzLmZpZWxkVmFsdWVdXCIgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCI+XG4gICAgICAgICAgICAgIHt7IHN1Ykl0ZW0/Llt0aGlzLmZpZWxkTGFiZWxdIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L29wdGdyb3VwPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvc2VsZWN0PlxuICA8L2Rpdj5cblxuICA8cG8tZmllbGQtY29udGFpbmVyLWJvdHRvbVxuICAgIFtwLWhlbHBdPVwiaGVscFwiXG4gICAgW3AtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtwLWVycm9yLXBhdHRlcm5dPVwiZ2V0RXJyb3JQYXR0ZXJuKClcIlxuICA+PC9wby1maWVsZC1jb250YWluZXItYm90dG9tPlxuPC9wby1maWVsZC1jb250YWluZXI+XG4iXX0=
551
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1zZWxlY3QvcG8tc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1zZWxlY3QvcG8tc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUdOLFNBQVMsRUFDVCxVQUFVLEVBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRixPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUix1QkFBdUIsRUFDdkIsNkJBQTZCLEVBQzdCLElBQUksRUFDSixVQUFVLEVBQ1gsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7O0lDUDFELGlDQU1DO0lBQ0MsWUFDRjtJQUFBLGlCQUFTOzs7O0lBSFAsQUFEQSxBQURBLEFBREEsK0NBQTBCLDJHQUMyQixzRkFDZCwwRkFDWjtJQUUzQixjQUNGO0lBREUsbURBQ0Y7OztJQVRGLDZCQUFnQztJQUM5Qix1RkFNQztJQUdELGlDQUF3QjtJQUFBLFlBQWtCO0lBQUEsaUJBQVM7Ozs7SUFSaEQsY0FBaUQ7SUFBakQsdUhBQWlEO0lBUTVDLGNBQWU7SUFBZiw2QkFB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QUFNO3VCQUFDLGdCQUFnQjtzR0FoS21CLGFBQWE7a0JBQXJFLFNBQVM7bUJBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBZ0I5QixhQUFhO2tCQUFyQyxNQUFNO21CQUFDLGVBQWU7WUFXc0MsUUFBUTtrQkFBcEUsS0FBSzttQkFBQyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO1lBR25DLFdBQVc7a0JBQWxDLEtBQUs7bUJBQUMsZUFBZTtZQW1ERSxPQUFPO2tCQUE5QixLQUFLO21CQUFDLFdBQVc7WUEwQ1UsVUFBVTtrQkFBckMsS0FBSzttQkFBQyxlQUFlO1lBb0JNLFVBQVU7a0JBQXJDLEtBQUs7bUJBQUMsZUFBZTs7a0ZBbEpYLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIGZvcndhcmRSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge1xuICBjb252ZXJ0VG9Cb29sZWFuLFxuICBpc1NhZmFyaSxcbiAgcmVtb3ZlRHVwbGljYXRlZE9wdGlvbnMsXG4gIHJlbW92ZVVuZGVmaW5lZEFuZE51bGxPcHRpb25zLFxuICB1dWlkLFxuICB2YWxpZFZhbHVlXG59IGZyb20gJy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuXG5pbXBvcnQgeyBJQ09OU19ESUNUSU9OQVJZLCBQaG9zcGhvckljb25EaWN0aW9uYXJ5IH0gZnJvbSAnLi4vLi4vcG8taWNvbic7XG5pbXBvcnQgeyBQb0ZpZWxkVmFsaWRhdGVNb2RlbCB9IGZyb20gJy4uL3BvLWZpZWxkLXZhbGlkYXRlLm1vZGVsJztcbmltcG9ydCB7IFBvU2VsZWN0T3B0aW9uR3JvdXAgfSBmcm9tICcuL3BvLXNlbGVjdC1vcHRpb24tZ3JvdXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvU2VsZWN0T3B0aW9uIH0gZnJvbSAnLi9wby1zZWxlY3Qtb3B0aW9uLmludGVyZmFjZSc7XG5cbmNvbnN0IFBPX1NFTEVDVF9GSUVMRF9MQUJFTF9ERUZBVUxUID0gJ2xhYmVsJztcbmNvbnN0IFBPX1NFTEVDVF9GSUVMRF9WQUxVRV9ERUZBVUxUID0gJ3ZhbHVlJztcblxuLyoqXG4gKiBAZG9jc0V4dGVuZHMgUG9GaWVsZFZhbGlkYXRlTW9kZWxcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1zZWxlY3QtYmFzaWNcIiB0aXRsZT1cIlBPIFNlbGVjdCBCYXNpY1wiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXNlbGVjdC1iYXNpYy9zYW1wbGUtcG8tc2VsZWN0LWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zZWxlY3QtYmFzaWMvc2FtcGxlLXBvLXNlbGVjdC1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1zZWxlY3QtbGFic1wiIHRpdGxlPVwiUE8gU2VsZWN0IExhYnNcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zZWxlY3QtbGFicy9zYW1wbGUtcG8tc2VsZWN0LWxhYnMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXNlbGVjdC1sYWJzL3NhbXBsZS1wby1zZWxlY3QtbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1zZWxlY3QtY3VzdG9tZXItcmVnaXN0cmF0aW9uXCIgdGl0bGU9XCJQTyBTZWxlY3QgLSBDdXN0b21lciByZWdpc3RyYXRpb25cIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zZWxlY3QtY3VzdG9tZXItcmVnaXN0cmF0aW9uL3NhbXBsZS1wby1zZWxlY3QtY3VzdG9tZXItcmVnaXN0cmF0aW9uLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zZWxlY3QtY3VzdG9tZXItcmVnaXN0cmF0aW9uL3NhbXBsZS1wby1zZWxlY3QtY3VzdG9tZXItcmVnaXN0cmF0aW9uLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc2VsZWN0LWN1c3RvbWVyLXJlZ2lzdHJhdGlvbi9zYW1wbGUtcG8tc2VsZWN0LWN1c3RvbWVyLXJlZ2lzdHJhdGlvbi5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT0nc2FtcGxlLXBvLXNlbGVjdC1jdXN0b21lci1yZWdpc3RyYXRpb24vc2FtcGxlLXBvLXNlbGVjdC1jdXN0b21lci1yZWdpc3RyYXRpb24uY29tcG9uZW50LmUyZS1zcGVjLnRzJz4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPSdzYW1wbGUtcG8tc2VsZWN0LWN1c3RvbWVyLXJlZ2lzdHJhdGlvbi9zYW1wbGUtcG8tc2VsZWN0LWN1c3RvbWVyLXJlZ2lzdHJhdGlvbi5jb21wb25lbnQucG8udHMnPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXNlbGVjdC1jb21wYW5pZXNcIiB0aXRsZT1cIlBPIFNlbGVjdCBDb21wYW5pZXNcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zZWxlY3QtY29tcGFuaWVzL3NhbXBsZS1wby1zZWxlY3QtY29tcGFuaWVzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zZWxlY3QtY29tcGFuaWVzL3NhbXBsZS1wby1zZWxlY3QtY29tcGFuaWVzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogTyBjb21wb25lbnRlIHBvLXNlbGVjdCBleGliZSB1bWEgbGlzdGEgZGUgdmFsb3JlcyBlIHBlcm1pdGUgcXVlIG8gdXN1w6FyaW8gc2VsZWNpb25lIHVtIGRlc3NlcyB2YWxvcmVzLlxuICogT3MgdmFsb3JlcyBsaXN0YWRvcyBwb2RlbSBzZXIgZml4b3Mgb3UgZGluw6JtaWNvcyBkZSBhY29yZG8gY29tIGEgbmVjZXNzaWRhZGUgZG8gZGVzZW52b2x2ZWRvciwgZGFuZG8gbWFpcyBmbGV4aWJpbGlkYWRlIGFvIGNvbXBvbmVudGUuXG4gKiBPIHBvLXNlbGVjdCBuw6NvIHBlcm1pdGUgcXVlIG8gdXN1w6FyaW8gaW5mb3JtZSB1bSB2YWxvciBkaWZlcmVudGUgZG9zIHZhbG9yZXMgbGlzdGFkb3MsIGlzc28gZ2FyYW50ZSBhIGNvbnNpc3TDqm5jaWEgZGEgaW5mb3JtYcOnw6NvLlxuICogTyBwby1zZWxlY3QgbsOjbyBwZXJtaXRlIHF1ZSBzZWphbSBwYXNzYWRvcyB2YWxvcmVzIGR1cGxpY2Fkb3MsIHVuZGVmaW5lZCBlIG51bGwgcGFyYSBhcyBvcMOnw7VlcywgZXhjbHVpbmRvLW9zIGRhIGxpc3RhLlxuICpcbiAqID4gQW8gcGFzc2FyIHVtIHZhbG9yIHBhcmEgbyBfbW9kZWxfIHF1ZSBuw6NvIGVzdMOhIG5hIGxpc3RhIGRlIG9ww6fDtWVzLCBvIG1lc21vIHNlcsOhIGRlZmluaWRvIGNvbW8gYHVuZGVmaW5lZGAuXG4gKlxuICogVGFtYsOpbSBleGlzdGUgYSBwb3NzaWJpbGlkYWRlIGRlIHV0aWxpemFyIHVtIF90ZW1wbGF0ZV8gcGFyYSBhIGV4aWJpw6fDo28gZG9zIGl0ZW5zIGRhIGxpc3RhLFxuICogdmVqYSBtYWlzIGVtICoqW3AtY29tYm8tb3B0aW9uLXRlbXBsYXRlXSgvZG9jdW1lbnRhdGlvbi9wby1jb21iby1vcHRpb24tdGVtcGxhdGUpKiouXG4gKlxuICogPiBPYnM6IG8gdGVtcGxhdGUgKipbcC1zZWxlY3Qtb3B0aW9uLXRlbXBsYXRlXSgvZG9jdW1lbnRhdGlvbi9wby1zZWxlY3Qtb3B0aW9uLXRlbXBsYXRlKSoqIHNlcsOhIGRlcHJlY2lhZG8gbmEgdmVyc8OjbyAxNC54LnguXG4gKlxuICogIyMjIyBUb2tlbnMgY3VzdG9taXrDoXZlaXNcbiAqXG4gKiDDiSBwb3Nzw612ZWwgYWx0ZXJhciBvIGVzdGlsbyBkbyBjb21wb25lbnRlIHVzYW5kbyBvcyBzZWd1aW50ZXMgdG9rZW5zIChDU1MpOlxuICpcbiAqID4gUGFyYSBtYWlvcmVzIGluZm9ybWHDp8O1ZXMsIGFjZXNzZSBvIGd1aWEgW1BlcnNvbmFsaXphbmRvIG8gVGVtYSBQYWRyw6NvIGNvbSBUb2tlbnMgQ1NTXShodHRwczovL3BvLXVpLmlvL2d1aWRlcy90aGVtZS1jdXN0b21pemF0aW9uKS5cbiAqXG4gKiB8IFByb3ByaWVkYWRlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3Jpw6fDo28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZhbG9yIFBhZHLDo28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8ICoqRGVmYXVsdCBWYWx1ZXMqKiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWZvbnQtZmFtaWx5YCAgICAgICAgICAgICAgICAgICAgICAgIHwgRmFtw61saWEgdGlwb2dyw6FmaWNhIHVzYWRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1mb250LWZhbWlseS10aGVtZSlgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tZm9udC1zaXplYCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUYW1hbmhvIGRhIGZvbnRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1mb250LXNpemUtZGVmYXVsdClgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tdGV4dC1jb2xvci1lbXB0eWAgICAgICAgICAgICAgICAgICAgfCBDb3IgZG8gcGxhY2Vob2xkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1uZXV0cmFsLWxpZ2h0LTMwKWAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3JgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgZGEgYm9yZGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1uZXV0cmFsLWRhcmstNzApYCAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tYmFja2dyb3VuZGAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgZGUgYmFja2dyb3VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1uZXV0cmFsLWxpZ2h0LTA1KWAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tdGV4dC1jb2xvcmAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgZG8gdGV4dG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1uZXV0cmFsLWRhcmstOTApYCAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tcGFkZGluZy1ob3Jpem9udGFsYCAgICAgICAgICAgICAgICAgfCBQcmVlbmNoaW1lbnRvIGhvcml6b250YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGAwLjVlbWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tcGFkZGluZy12ZXJ0aWNhbGAgICAgICAgICAgICAgICAgICAgfCBQcmVlbmNoaW1lbnRvIHZlcnRpY2FsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGAwLjdlbWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgKipIb3ZlcioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3ItaG92ZXJgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgcHJpbmNpcGFsIG5vIGVzdGFkbyBob3ZlciAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1icmFuZC0wMS1kYXJrKWAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tYmFja2dyb3VuZC1ob3ZlcmAgICAgICAgICAgICAgICAgICAgfCBDb3IgZGUgYmFja2dyb3VuZCBubyBlc3RhZG8gaG92ZXIgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1icmFuZC0wMS1saWdodGVyKWAgICAgICAgICAgICAgICAgIHxcbiAqIHwgKipGb2N1c2VkKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tb3V0bGluZS1jb2xvci1mb2N1c2VkYCAgICAgICAgICAgICAgfCBDb3IgZG8gb3V0bGluZSBkbyBlc3RhZG8gZGUgZm9jdXMgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1hY3Rpb24tZm9jdXMpYCAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3ItZm9jdXNlZGAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgZGEgYm9yZGEgbm8gZXN0YWRvIGRlIGZvY3VzICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1hY3Rpb24tZGVmYXVsdClgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgKipEaXNhYmxlZCoqICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3ItZGlzYWJsZWRgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgcHJpbmNpcGFsIG5vIGVzdGFkbyBkaXNhYmxlZCAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1uZXV0cmFsLWxpZ2h0LTMwKWAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tYmFja2dyb3VuZC1jb2xvci1kaXNhYmxlZGAmbmJzcDsgICAgfCBDb3IgZGUgYmFja2dyb3VuZCBubyBlc3RhZG8gZGlzYWJsZWQgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1uZXV0cmFsLWxpZ2h0LTIwKWAgICAgICAgICAgICAgICAgIHxcbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BvLXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb1NlbGVjdENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBvU2VsZWN0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFBvU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgUG9GaWVsZFZhbGlkYXRlTW9kZWw8YW55PiBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIHByaXZhdGUgX2ljb25Ub2tlbjogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICBAVmlld0NoaWxkKCdzZWxlY3QnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBzZWxlY3RFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEZ1bsOnw6NvIHBhcmEgYXR1YWxpemFyIG8gbmdNb2RlbCBkbyBjb21wb25lbnRlLCBuZWNlc3PDoXJpbyBxdWFuZG8gbsOjbyBmb3IgdXRpbGl6YWRvIGRlbnRybyBkYSB0YWcgZm9ybS5cbiAgICpcbiAgICogTmEgdmVyc8OjbyAxMi4yLjAgZG8gQW5ndWxhciBhIHZlcmlmaWNhw6fDo28gYHN0cmljdFRlbXBsYXRlc2AgdmVtIHRydWUgY29tbyBkZWZhdWx0LiBQb3J0YW50bywgcGFyYSB1dGlsaXphclxuICAgKiB0d28td2F5IGJpbmRpbmcgbm8gY29tcG9uZW50ZSBkZXZlIHNlIHV0aWxpemFyIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICAgKlxuICAgKiBgYGBcbiAgICogPHBvLXNlbGVjdCAuLi4gW25nTW9kZWxdPVwic2VsZWN0TW9kZWxcIiAobmdNb2RlbENoYW5nZSk9XCJzZWxlY3RNb2RlbCA9ICRldmVudFwiPiA8L3BvLXNlbGVjdD5cbiAgICogYGBgXG4gICAqL1xuICBAT3V0cHV0KCduZ01vZGVsQ2hhbmdlJykgbmdNb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgcXVlIG8gY2FtcG8gc2Vyw6Egc29tZW50ZSBwYXJhIGxlaXR1cmEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1yZWFkb25seScsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBNZW5zYWdlbSBxdWUgYXBhcmVjZXLDoSBlbnF1YW50byBuZW5odW1hIG9ww6fDo28gZXN0aXZlciBzZWxlY2lvbmFkYS4gKi9cbiAgQElucHV0KCdwLXBsYWNlaG9sZGVyJykgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG5cbiAgZGlzcGxheVZhbHVlO1xuICBpZCA9IGBwby1zZWxlY3RbJHt1dWlkKCl9XWA7XG4gIG1vZGVsVmFsdWU6IGFueTtcbiAgc2VsZWN0ZWRWYWx1ZTogYW55O1xuICBvcHRpb25zRGVmYXVsdCA9IFtdO1xuICBsaXN0R3JvdXBPcHRpb25zID0gW107XG4gIG9wdGlvbldpdGhvdXRHcm91cCA9IFtdO1xuICBpc1NhZmFyaTogYm9vbGVhbiA9IGlzU2FmYXJpKCk7XG5cbiAgcHJvdGVjdGVkIG9uTW9kZWxUb3VjaGVkOiBhbnk7XG5cbiAgcHJpdmF0ZSBfZmllbGRMYWJlbD86IHN0cmluZyA9IFBPX1NFTEVDVF9GSUVMRF9MQUJFTF9ERUZBVUxUO1xuICBwcml2YXRlIF9maWVsZFZhbHVlPzogc3RyaW5nID0gUE9fU0VMRUNUX0ZJRUxEX1ZBTFVFX0RFRkFVTFQ7XG4gIHByaXZhdGUgX29wdGlvbnM6IEFycmF5PFBvU2VsZWN0T3B0aW9uPiB8IEFycmF5PFBvU2VsZWN0T3B0aW9uR3JvdXA+IHwgQXJyYXk8YW55PjtcblxuICAvKipcbiAgICogTmVzdGEgcHJvcHJpZWRhZGUgZGV2ZSBzZXIgZGVmaW5pZG8gdW1hIGNvbGXDp8OjbyBkZSBvYmpldG9zIHF1ZSBpbXBsZW1lbnRhbSBhIGludGVyZmFjZSBgUG9TZWxlY3RPcHRpb25gLFxuICAgKiBvdSB1bWEgY29sZcOnw6NvIGRlIG9iamV0b3MgZGVudHJvIGRlIGdydXBvcyBkaWZlcmVudGVzLCBxdWUgc2VyaWFtIGRhIGludGVyZmFjZSBgUG9TZWxlY3RPcHRpb25Hcm91cGAuXG4gICAqXG4gICAqIENhc28gZXN0YSBsaXN0YSBlc3RpdmVyIHZhemlhLCBvIG1vZGVsIHNlcsOhIGB1bmRlZmluZWRgLlxuICAgKlxuICAgKiA+IEVzc2EgcHJvcHJpZWRhZGUgw6kgaW11dMOhdmVsLCBvdSBzZWphLCBzZW1wcmUgcXVlIHF1aXNlciBhdHVhbGl6YXIgYSBsaXN0YSBkZSBvcMOnw7VlcyBkaXNwb27DrXZlaXNcbiAgICogYXR1YWxpemUgYSByZWZlcsOqbmNpYSBkbyBvYmpldG86XG4gICAqXG4gICAqIGBgYFxuICAgKiAvLyBhdHVhbGl6YSBhIHJlZmVyw6puY2lhIGRvIG9iamV0byBnYXJhbnRpbmRvIGEgYXR1YWxpemHDp8OjbyBkbyB0ZW1wbGF0ZVxuICAgKiB0aGlzLm9wdGlvbnMgPSBbLi4udGhpcy5vcHRpb25zLCB7IHZhbHVlOiAneCcsIGxhYmVsOiAnTm92YSBvcMOnw6NvJyB9XTtcbiAgICpcbiAgICogLy8gZXZpdGUsIHBvaXMgbsOjbyBhdHVhbGl6YSBhIHJlZmVyw6puY2lhIGRvIG9iamV0byBwb2RlbmRvIGdlcmFyIGF0cmFzb3MgbmEgYXR1YWxpemHDp8OjbyBkbyB0ZW1wbGF0ZVxuICAgKiB0aGlzLm9wdGlvbnMucHVzaCh7IHZhbHVlOiAneCcsIGxhYmVsOiAnTm92YSBvcMOnw6NvJyB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqID4gUGFyYSBjb2xlw6fDo28gZGUgb2JqZXRvcyBkZW50cm8gZGUgZ3J1cG9zIGRpc3RpbnRvcyBzZXLDoSBleGliaWRvIGEgbGFiZWwgZSBvcMOnw7VlcyBzb21lbnRlIHNlIGEgcHJvcHJpZWRhZGUgYG9wdGlvbnNgIHBvc3N1YSB2YWxvcmVzLlxuICAgKiAgU2VuZG8gYXNzaW0sIGEgZXN0cnV0dXJhIHNlZ3VpcmlhIGRlc3NhIGZvcm1hOlxuICAgKlxuICAgKiBgYGBcbiAgICogdGhpcy5vcHRpb25zID0gW3tcbiAgICogIGxhYmVsOiAnT3DDp8O1ZXMnLFxuICAgKiAgb3B0aW9uczogW1xuICAgKiAgICB7IHZhbHVlOiAxLCBsYWJlbDogJ29ww6fDo28gMScgfSxcbiAgICogICAgeyB2YWx1ZTogMiwgbGFiZWw6ICdvcMOnw6NvIDInIH1cbiAgICogIF0sXG4gICAqIH1dO1xuICAgKiBgYGBcbiAgICpcbiAgICogw4kgcG9zc8OtdmVsIGEgdXRpbGl6YcOnw6NvIGRlIG9ww6fDtWVzIGFncnVwYWRhcyBlIGRlc2FncnVwYWRhcyBlbSBjb25qdW50bywgcG9yw6ltIHNlcsOhIGZlaXRhIGEgb3JkZW5hw6fDo28gZGUgZXhpYmlyIGFzIG9ww6fDtWVzXG4gICAqIGRlc2FncnVwYWRhcyBhY2ltYS5cbiAgICpcbiAgICovXG4gIEBJbnB1dCgncC1vcHRpb25zJykgc2V0IG9wdGlvbnMob3B0aW9uczogQXJyYXk8UG9TZWxlY3RPcHRpb24gfCBQb1NlbGVjdE9wdGlvbkdyb3VwIHwgYW55Pikge1xuICAgIHRoaXMubGlzdEdyb3VwT3B0aW9ucyA9IFtdO1xuICAgIHRoaXMub3B0aW9uV2l0aG91dEdyb3VwID0gW107XG5cbiAgICBpZiAodGhpcy5maWVsZExhYmVsICYmIHRoaXMuZmllbGRWYWx1ZSAmJiBvcHRpb25zKSB7XG4gICAgICBvcHRpb25zLm1hcChvcHRpb24gPT4ge1xuICAgICAgICBpZiAodGhpcy5pc0l0ZW1Hcm91cChvcHRpb24pKSB7XG4gICAgICAgICAgb3B0aW9uLm9wdGlvbnMubWFwKG9wdCA9PiB7XG4gICAgICAgICAgICBvcHQubGFiZWwgPSBvcHRbdGhpcy5maWVsZExhYmVsXTtcbiAgICAgICAgICAgIG9wdC52YWx1ZSA9IG9wdFt0aGlzLmZpZWxkVmFsdWVdO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9wdGlvbi5sYWJlbCA9IG9wdGlvblt0aGlzLmZpZWxkTGFiZWxdO1xuICAgICAgICAgIG9wdGlvbi52YWx1ZSA9IG9wdGlvblt0aGlzLmZpZWxkVmFsdWVdO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucykge1xuICAgICAgdGhpcy5vcHRpb25zRGVmYXVsdCA9IFsuLi5vcHRpb25zXTtcbiAgICAgIHRoaXMuc2VwYXJhdGVPcHRpb25zKCk7XG5cbiAgICAgIHRoaXMub3B0aW9uc0RlZmF1bHQgPSBbXTtcbiAgICAgIHRoaXMub3B0aW9uc0RlZmF1bHQgPSBbLi4udGhpcy5vcHRpb25XaXRob3V0R3JvdXAsIC4uLnRoaXMudHJhbnNmb3JtSW5BcnJheSh0aGlzLmxpc3RHcm91cE9wdGlvbnMpXTtcbiAgICAgIHRoaXMub25VcGRhdGVPcHRpb25zKCk7XG4gICAgICB0aGlzLl9vcHRpb25zID0gWy4uLnRoaXMub3B0aW9uc0RlZmF1bHRdO1xuICAgIH1cbiAgfVxuXG4gIGdldCBvcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRGV2ZSBzZXIgaW5mb3JtYWRvIG8gbm9tZSBkYSBwcm9wcmllZGFkZSBkbyBvYmpldG8gcXVlIHNlcsOhIHV0aWxpemFkbyBwYXJhIGEgY29udmVyc8OjbyBkb3MgaXRlbnMgYXByZXNlbnRhZG9zIG5hIGxpc3RhIGRvIGNvbXBvbmVudGVcbiAgICogKGBwLW9wdGlvbnNgKSwgZXN0YSBwcm9wcmllZGFkZSBzZXLDoSByZXNwb25zw6F2ZWwgcGVsbyB0ZXh0byBkZSBhcHJlc2VudGHDp8OjbyBkZSBjYWRhIGl0ZW0gZGEgbGlzdGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBsYWJlbGBcbiAgICovXG4gIEBJbnB1dCgncC1maWVsZC1sYWJlbCcpIHNldCBmaWVsZExhYmVsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9maWVsZExhYmVsID0gdmFsdWUgfHwgUE9fU0VMRUNUX0ZJRUxEX0xBQkVMX0RFRkFVTFQ7XG4gICAgaWYgKHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5vcHRpb25zID0gWy4uLnRoaXMub3B0aW9uc107XG4gICAgfVxuICB9XG5cbiAgZ2V0IGZpZWxkTGFiZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkTGFiZWw7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEZXZlIHNlciBpbmZvcm1hZG8gbyBub21lIGRhIHByb3ByaWVkYWRlIGRvIG9iamV0byBxdWUgc2Vyw6EgdXRpbGl6YWRvIHBhcmEgYSBjb252ZXJzw6NvIGRvcyBpdGVucyBhcHJlc2VudGFkb3MgbmEgbGlzdGEgZG8gY29tcG9uZW50ZVxuICAgKiAoYHAtb3B0aW9uc2ApLCBlc3RhIHByb3ByaWVkYWRlIHNlcsOhIHJlc3BvbnPDoXZlbCBwZWxvIHZhbG9yIGRlIGNhZGEgaXRlbSBkYSBsaXN0YS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHZhbHVlYFxuICAgKi9cbiAgQElucHV0KCdwLWZpZWxkLXZhbHVlJykgc2V0IGZpZWxkVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2ZpZWxkVmFsdWUgPSB2YWx1ZSB8fCBQT19TRUxFQ1RfRklFTERfVkFMVUVfREVGQVVMVDtcbiAgICBpZiAodGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLm9wdGlvbnMgPSBbLi4udGhpcy5vcHRpb25zXTtcbiAgICB9XG4gIH1cblxuICBnZXQgZmllbGRWYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRWYWx1ZTtcbiAgfVxuXG4gIGdldCBpY29uTmFtZUxpYigpIHtcbiAgICByZXR1cm4gdGhpcy5faWNvblRva2VuLk5BTUVfTElCO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChJQ09OU19ESUNUSU9OQVJZKSB2YWx1ZTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHtcbiAgICBzdXBlcihjaGFuZ2VEZXRlY3Rvcik7XG5cbiAgICB0aGlzLl9pY29uVG9rZW4gPSB2YWx1ZSA/PyBQaG9zcGhvckljb25EaWN0aW9uYXJ5O1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLm9wdGlvbnM/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zID0gY2hhbmdlcy5vcHRpb25zLmN1cnJlbnRWYWx1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRnVuw6fDo28gcXVlIGF0cmlidWkgZm9jbyBhbyBjb21wb25lbnRlLlxuICAgKlxuICAgKiBQYXJhIHV0aWxpesOhLWxhIMOpIG5lY2Vzc8OhcmlvIHRlciBhIGluc3TDom5jaWEgZG8gY29tcG9uZW50ZSBubyBET00sIHBvZGVuZG8gc2VyIHV0aWxpemFkbyBvIFZpZXdDaGlsZCBkYSBzZWd1aW50ZSBmb3JtYTpcbiAgICpcbiAgICogYGBgXG4gICAqIGltcG9ydCB7IFBvU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnQHBvLXVpL25nLWNvbXBvbmVudHMnO1xuICAgKlxuICAgKiAuLi5cbiAgICpcbiAgICogQFZpZXdDaGlsZChQb1NlbGVjdENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgc2VsZWN0OiBQb1NlbGVjdENvbXBvbmVudDtcbiAgICpcbiAgICogZm9jdXNTZWxlY3QoKSB7XG4gICAqICAgdGhpcy5zZWxlY3QuZm9jdXMoKTtcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGZvY3VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5zZWxlY3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBnZXRFcnJvclBhdHRlcm4oKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGRFcnJvck1lc3NhZ2UgJiYgdGhpcy5oYXNJbnZhbGlkQ2xhc3MoKSA/IHRoaXMuZmllbGRFcnJvck1lc3NhZ2UgOiAnJztcbiAgfVxuXG4gIGhhc0ludmFsaWRDbGFzcygpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbmctaW52YWxpZCcpICYmIHRoaXMuZWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ25nLWRpcnR5JylcbiAgICApO1xuICB9XG5cbiAgb25CbHVyKCkge1xuICAgIHRoaXMub25Nb2RlbFRvdWNoZWQ/LigpO1xuICB9XG5cbiAgLy8gQWx0ZXJhIG8gdmFsb3IgYW8gc2VsZWNpb25hciB1bSBpdGVtLlxuICBvblNlbGVjdENoYW5nZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5vbk1vZGVsVG91Y2hlZD8uKCk7XG4gICAgaWYgKHZhbHVlICYmIHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBvcHRpb25Gb3VuZDogYW55ID0gdGhpcy5maW5kT3B0aW9uVmFsdWUodmFsdWUpO1xuXG4gICAgICBpZiAob3B0aW9uRm91bmQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZXMob3B0aW9uRm91bmQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uVXBkYXRlT3B0aW9ucygpIHtcbiAgICBpZiAodGhpcy5tb2RlbFZhbHVlKSB7XG4gICAgICB0aGlzLm9uU2VsZWN0Q2hhbmdlKHRoaXMubW9kZWxWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQXR1YWxpemEgdmFsb3Jlc1xuICB1cGRhdGVWYWx1ZXMob3B0aW9uOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlICE9PSBvcHRpb25bdGhpcy5maWVsZFZhbHVlXSkge1xuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gb3B0aW9uW3RoaXMuZmllbGRWYWx1ZV07XG4gICAgICB0aGlzLnNlbGVjdEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9IG9wdGlvblt0aGlzLmZpZWxkVmFsdWVdO1xuICAgICAgdGhpcy51cGRhdGVNb2RlbChvcHRpb25bdGhpcy5maWVsZFZhbHVlXSk7XG4gICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IG9wdGlvblt0aGlzLmZpZWxkTGFiZWxdO1xuICAgICAgdGhpcy5lbWl0Q2hhbmdlKG9wdGlvblt0aGlzLmZpZWxkVmFsdWVdKTtcbiAgICB9XG4gIH1cblxuICAvLyBSZWNlYmUgYXMgYWx0ZXJhw6fDtWVzIGRvIG1vZGVsXG4gIG9uV3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgY29uc3Qgb3B0aW9uRm91bmQ6IGFueSA9IHRoaXMuZmluZE9wdGlvblZhbHVlKHZhbHVlKTtcblxuICAgIGlmIChvcHRpb25Gb3VuZCkge1xuICAgICAgdGhpcy5zZWxlY3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBvcHRpb25Gb3VuZC52YWx1ZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IG9wdGlvbkZvdW5kW3RoaXMuZmllbGRWYWx1ZV07XG4gICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IG9wdGlvbkZvdW5kW3RoaXMuZmllbGRMYWJlbF07XG4gICAgfSBlbHNlIGlmICh2YWxpZFZhbHVlKHRoaXMuc2VsZWN0ZWRWYWx1ZSkpIHtcbiAgICAgIHRoaXMuc2VsZWN0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy51cGRhdGVNb2RlbCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdGhpcy5tb2RlbFZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBleHRyYVZhbGlkYXRpb24oYzogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpc0l0ZW1Hcm91cChpdGVtOiBQb1NlbGVjdE9wdGlvbiB8IFBvU2VsZWN0T3B0aW9uR3JvdXAgfCBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAoaXRlbS5vcHRpb25zKSB7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShpdGVtLm9wdGlvbnMpID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbk1vZGVsVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0VxdWFsKHZhbHVlOiBhbnksIGlucHV0VmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICgodmFsdWUgfHwgdmFsdWUgPT09IDApICYmIGlucHV0VmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpID09PSBpbnB1dFZhbHVlLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgaWYgKCh2YWx1ZSA9PT0gbnVsbCAmJiBpbnB1dFZhbHVlICE9PSBudWxsKSB8fCAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiBpbnB1dFZhbHVlICE9PSB1bmRlZmluZWQpKSB7XG4gICAgICB2YWx1ZSA9IGAke3ZhbHVlfWA7IC8vIFRyYW5zZm9ybWFuZG8gZW0gc3RyaW5nXG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlID09PSBpbnB1dFZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kT3B0aW9uVmFsdWUodmFsdWU6IGFueSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMpIHtcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZmluZChvcHRpb24gPT4gdGhpcy5pc0VxdWFsKG9wdGlvbi52YWx1ZSwgdmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRyYW5zZm9ybUluQXJyYXkob2JqZWN0V2l0aEFycmF5OiBBcnJheTxhbnk+KTogQXJyYXk8UG9TZWxlY3RPcHRpb25Hcm91cCB8IGFueT4ge1xuICAgIHJldHVybiBvYmplY3RXaXRoQXJyYXkucmVkdWNlKChvcHRpb25zLCBpdGVtcykgPT4ge1xuICAgICAgaWYgKGl0ZW1zLm9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuY29uY2F0KGl0ZW1zLm9wdGlvbnMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtdO1xuICAgIH0sIFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VwYXJhdGVPcHRpb25zKCkge1xuICAgIHRoaXMub3B0aW9uc0RlZmF1bHQuZm9yRWFjaChvcHRpb24gPT4ge1xuICAgICAgaWYgKHRoaXMuaXNJdGVtR3JvdXAob3B0aW9uKSkge1xuICAgICAgICB0aGlzLnZhbGlkYXRlT3B0aW9ucyhvcHRpb24ub3B0aW9ucyk7XG4gICAgICAgIHRoaXMubGlzdEdyb3VwT3B0aW9ucy5wdXNoKG9wdGlvbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbldpdGhvdXRHcm91cC5wdXNoKG9wdGlvbik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5vcHRpb25XaXRob3V0R3JvdXAubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy52YWxpZGF0ZU9wdGlvbnModGhpcy5vcHRpb25XaXRob3V0R3JvdXApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVPcHRpb25zKG9wdGlvbnM6IEFycmF5PGFueT4pIHtcbiAgICByZW1vdmVEdXBsaWNhdGVkT3B0aW9ucyhvcHRpb25zKTtcbiAgICByZW1vdmVVbmRlZmluZWRBbmROdWxsT3B0aW9ucyhvcHRpb25zKTtcbiAgfVxufVxuIiwiPHBvLWZpZWxkLWNvbnRhaW5lclxuICBbcC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtwLWlkXT1cImlkXCJcbiAgW3AtbGFiZWxdPVwibGFiZWxcIlxuICBbcC1vcHRpb25hbF09XCJvcHRpb25hbFwiXG4gIFtwLXJlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgW3Atc2hvdy1yZXF1aXJlZF09XCJzaG93UmVxdWlyZWRcIlxuPlxuICA8ZGl2IGNsYXNzPVwicG8tZmllbGQtY29udGFpbmVyLWNvbnRlbnRcIj5cbiAgICA8c2VsZWN0XG4gICAgICAjc2VsZWN0XG4gICAgICBjbGFzcz1cInBvLXNlbGVjdFwiXG4gICAgICBbbmdDbGFzc109XCJpY29uTmFtZUxpYiA9PT0gJ1Bob3NwaG9ySWNvbicgPyAncG8tc2VsZWN0LXBob3NwaG9yJyA6ICdwby1zZWxlY3QtcG9pY29uJ1wiXG4gICAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICAgICAgW2NsYXNzLnBvLXNlbGVjdC1wbGFjZWhvbGRlcl09XCIhc2VsZWN0ZWRWYWx1ZT8udG9TdHJpbmcoKSAmJiAhIXBsYWNlaG9sZGVyXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbaWRdPVwiaWRcIlxuICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgIChjaGFuZ2UpPVwib25TZWxlY3RDaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNTYWZhcmlcIj5cbiAgICAgICAgPG9wdGlvblxuICAgICAgICAgICpuZ0lmPVwiIXNlbGVjdGVkVmFsdWU/LnRvU3RyaW5nKCkgfHwgISFwbGFjZWhvbGRlclwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiEhcGxhY2Vob2xkZXJcIlxuICAgICAgICAgIFtoaWRkZW5dPVwiIXNlbGVjdGVkVmFsdWU/LnRvU3RyaW5nKCkgJiYgIXBsYWNlaG9sZGVyXCJcbiAgICAgICAgICBbc2VsZWN0ZWRdPVwiIXNlbGVjdGVkVmFsdWU/LnRvU3RyaW5nKClcIlxuICAgICAgICAgIFt2YWx1ZV09XCJwbGFjZWhvbGRlciA/PyAnJ1wiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwbGFjZWhvbGRlciB9fVxuICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbiBbaGlkZGVuXT1cInRydWVcIj57eyBkaXNwbGF5VmFsdWUgfX08L29wdGlvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNTYWZhcmlcIj5cbiAgICAgICAgPG9wdGlvbj57eyBkaXNwbGF5VmFsdWUgfHwgcGxhY2Vob2xkZXIgfX08L29wdGlvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3B0aW9uV2l0aG91dEdyb3VwLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBvcHRpb25XaXRob3V0R3JvdXBcIiBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIiBbdmFsdWVdPVwiaXRlbT8uW3RoaXMuZmllbGRWYWx1ZV1cIj5cbiAgICAgICAgICB7eyBpdGVtPy5bdGhpcy5maWVsZExhYmVsXSB9fVxuICAgICAgICA8L29wdGlvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpc3RHcm91cE9wdGlvbnMubGVuZ3RoID4gMFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxpc3RHcm91cE9wdGlvbnNcIj5cbiAgICAgICAgICA8b3B0Z3JvdXAgKm5nSWY9XCJpdGVtPy5vcHRpb25zLmxlbmd0aCA+IDBcIiBsYWJlbD1cInt7IGl0ZW0/LmxhYmVsIH19XCIgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCI+XG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBzdWJJdGVtIG9mIGl0ZW0ub3B0aW9uc1wiIFt2YWx1ZV09XCJzdWJJdGVtPy5bdGhpcy5maWVsZFZhbHVlXVwiIFtkaXNhYmxlZF09XCJyZWFkb25seVwiPlxuICAgICAgICAgICAgICB7eyBzdWJJdGVtPy5bdGhpcy5maWVsZExhYmVsXSB9fVxuICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgPC9vcHRncm91cD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3NlbGVjdD5cbiAgPC9kaXY+XG5cbiAgPHBvLWZpZWxkLWNvbnRhaW5lci1ib3R0b21cbiAgICBbcC1oZWxwXT1cImhlbHBcIlxuICAgIFtwLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbcC1lcnJvci1wYXR0ZXJuXT1cImdldEVycm9yUGF0dGVybigpXCJcbiAgICBbcC1lcnJvci1saW1pdF09XCJlcnJvckxpbWl0XCJcbiAgICBbcC1hcHBlbmQtaW4tYm9keV09XCJlcnJvckFwcGVuZEJveFwiXG4gID48L3BvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20+XG48L3BvLWZpZWxkLWNvbnRhaW5lcj5cbiJdfQ==
@@ -76,6 +76,19 @@ export class PoTextareaBaseComponent {
76
76
  *
77
77
  */
78
78
  fieldErrorMessage;
79
+ /**
80
+ * @optional
81
+ *
82
+ * @description
83
+ *
84
+ * Limita a exibição da mensagem de erro a duas linhas e exibe um tooltip com o texto completo.
85
+ *
86
+ * > Caso essa propriedade seja definida como `true`, a mensagem de erro será limitada a duas linhas
87
+ * e um tooltip será exibido ao passar o mouse sobre a mensagem para mostrar o conteúdo completo.
88
+ *
89
+ * @default `false`
90
+ */
91
+ errorLimit = false;
79
92
  /**
80
93
  * @optional
81
94
  *
@@ -295,7 +308,7 @@ export class PoTextareaBaseComponent {
295
308
  }
296
309
  }
297
310
  static ɵfac = function PoTextareaBaseComponent_Factory(t) { return new (t || PoTextareaBaseComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
298
- static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoTextareaBaseComponent, inputs: { autoFocus: [2, "p-auto-focus", "autoFocus", convertToBoolean], label: [0, "p-label", "label"], help: [0, "p-help", "help"], name: "name", optional: [0, "p-optional", "optional"], fieldErrorMessage: [0, "p-field-error-message", "fieldErrorMessage"], placeholder: [0, "p-placeholder", "placeholder"], disabled: [0, "p-disabled", "disabled"], readonly: [0, "p-readonly", "readonly"], required: [0, "p-required", "required"], showRequired: [0, "p-show-required", "showRequired"], minlength: [0, "p-minlength", "minlength"], maxlength: [0, "p-maxlength", "maxlength"], rows: [0, "p-rows", "rows"] }, outputs: { blur: "p-blur", enter: "p-enter", change: "p-change", changeModel: "p-change-model" }, features: [i0.ɵɵInputTransformsFeature] });
311
+ static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoTextareaBaseComponent, inputs: { autoFocus: [2, "p-auto-focus", "autoFocus", convertToBoolean], label: [0, "p-label", "label"], help: [0, "p-help", "help"], name: "name", optional: [0, "p-optional", "optional"], fieldErrorMessage: [0, "p-field-error-message", "fieldErrorMessage"], errorLimit: [0, "p-error-limit", "errorLimit"], placeholder: [0, "p-placeholder", "placeholder"], disabled: [0, "p-disabled", "disabled"], readonly: [0, "p-readonly", "readonly"], required: [0, "p-required", "required"], showRequired: [0, "p-show-required", "showRequired"], minlength: [0, "p-minlength", "minlength"], maxlength: [0, "p-maxlength", "maxlength"], rows: [0, "p-rows", "rows"] }, outputs: { blur: "p-blur", enter: "p-enter", change: "p-change", changeModel: "p-change-model" }, features: [i0.ɵɵInputTransformsFeature] });
299
312
  }
300
313
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoTextareaBaseComponent, [{
301
314
  type: Directive
@@ -317,6 +330,9 @@ export class PoTextareaBaseComponent {
317
330
  }], fieldErrorMessage: [{
318
331
  type: Input,
319
332
  args: ['p-field-error-message']
333
+ }], errorLimit: [{
334
+ type: Input,
335
+ args: ['p-error-limit']
320
336
  }], blur: [{
321
337
  type: Output,
322
338
  args: ['p-blur']
@@ -354,4 +370,4 @@ export class PoTextareaBaseComponent {
354
370
  type: Input,
355
371
  args: ['p-rows']
356
372
  }] }); })();
357
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdGV4dGFyZWEtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tdGV4dGFyZWEvcG8tdGV4dGFyZWEtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFvRCxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUvRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBRUgsTUFBTSxPQUFnQix1QkFBdUI7SUE0TnhCO0lBM05uQjs7Ozs7Ozs7OztPQVVHO0lBQzRELFNBQVMsR0FBWSxLQUFLLENBQUM7SUFFMUYsc0JBQXNCO0lBQ0osS0FBSyxDQUFVO0lBRWpDLCtCQUErQjtJQUNkLElBQUksQ0FBVTtJQUUvQiwrQkFBK0I7SUFDaEIsSUFBSSxDQUFTO0lBRTVCOzs7Ozs7Ozs7Ozs7T0FZRztJQUNrQixRQUFRLENBQVU7SUFFdkM7Ozs7Ozs7OztPQVNHO0lBQzZCLGlCQUFpQixDQUFTO0lBRTFEOzs7Ozs7T0FNRztJQUNlLElBQUksR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUVwRTs7Ozs7O09BTUc7SUFDZ0IsS0FBSyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBRXRFOzs7Ozs7T0FNRztJQUNpQixNQUFNLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFFeEU7Ozs7OztPQU1HO0lBQ3VCLFdBQVcs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bUJBQUMsWUFBWTtZQVlhLGlCQUFpQjtrQkFBaEQsS0FBSzttQkFBQyx1QkFBdUI7WUFTWixJQUFJO2tCQUFyQixNQUFNO21CQUFDLFFBQVE7WUFTRyxLQUFLO2tCQUF2QixNQUFNO21CQUFDLFNBQVM7WUFTRyxNQUFNO2tCQUF6QixNQUFNO21CQUFDLFVBQVU7WUFTUSxXQUFXO2tCQUFwQyxNQUFNO21CQUFDLGdCQUFnQjtZQWtCSSxXQUFXO2tCQUF0QyxLQUFLO21CQUFDLGVBQWU7WUFpQkcsUUFBUTtrQkFBaEMsS0FBSzttQkFBQyxZQUFZO1lBaUJNLFFBQVE7a0JBQWhDLEtBQUs7bUJBQUMsWUFBWTtZQWtCTSxRQUFRO2tCQUFoQyxLQUFLO21CQUFDLFlBQVk7WUFnQk8sWUFBWTtrQkFBckMsS0FBSzttQkFBQyxpQkFBaUI7WUFTRSxTQUFTO2tCQUFsQyxLQUFLO21CQUFDLGFBQWE7WUFnQk0sU0FBUztrQkFBbEMsS0FBSzttQkFBQyxhQUFhO1lBa0JDLElBQUk7a0JBQXhCLEtBQUs7bUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuLCBjb252ZXJ0VG9JbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy91dGlsJztcbmltcG9ydCB7IG1heGxlbmdwb2FpbGVkLCBtaW5sZW5ncG9haWxlZCwgcmVxdWlyZWRGYWlsZWQgfSBmcm9tICcuLi92YWxpZGF0b3JzJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBFc3RlIMOpIHVtIGNvbXBvbmVudGUgZGUgZW50cmFkYSBkZSBkYWRvcyBxdWUgcG9zc2liaWxpdGEgbyBwcmVlY2hpbWVudG8gY29tIG3Dumx0aXBsYXMgbGluaGFzLlxuICogw4kgcmVjb21lbmRhZG8gcGFyYSBvYnNlcnZhw6fDtWVzLCBkZXRhbGhhbWVudG9zIGUgb3V0cmFzIHNpdHVhw6fDtWVzIG9uZGUgbyB1c3XDoXJpbyBkZXZhIHByZWVuY2hlciBjb20gdW0gdGV4dG8uXG4gKlxuICogSW1wb3J0YW50ZTpcbiAqXG4gKiAtIEEgcHJvcHJpZWRhZGUgYG5hbWVgIMOpIG9icmlnYXTDs3JpYSBwYXJhIHF1ZSBvIGZvcm11bMOhcmlvIGUgbyBgbW9kZWxgIGZ1bmNpb25lbSBjb3JyZXRhbWVudGUuIERvIGNvbnRyw6FyaW8sIG9jb3JyZXLDoSB1bSBlcnJvIGRlXG4gKiBfQW5ndWxhcl8sIG9uZGUgc2Vyw6EgbmVjZXNzw6FyaW8gaW5mb3JtYXIgbyBhdHJpYnV0byBgbmFtZWAgb3UgbyBhdHJpYnV0byBgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiYCwgcG9yIGV4ZW1wbG86XG4gKlxuICogYGBgXG4gKiA8cG8tdGV4dGFyZWFcbiAqICAgWyhuZ01vZGVsKV09XCJwZXNzb2Eubm9tZVwiXG4gKiAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIj5cbiAqIDwvcG8tdGV4dGFyZWE+XG4gKiBgYGBcbiAqXG4gKiAjIyMjIEFjZXNzaWJpbGlkYWRlIHRyYXRhZGEgbm8gY29tcG9uZW50ZVxuICogQWxndW1hcyBkaXJldHJpemVzIGRlIGFjZXNzaWJpbGlkYWRlIGrDoSBzw6NvIHRyYXRhZGFzIG5vIGNvbXBvbmVudGUsIGludGVybmFtZW50ZSwgZSBuw6NvIHBvZGVtIHNlciBhbHRlcmFkYXMuIFPDo28gZWxhczpcbiAqXG4gKiAtIE8gVGV4dCBhcmVhIGZvaSBkZXNlbnZvbHZpZG8gY29tIHVzbyBkZSBjb250cm9sZXMgcGFkcsO1ZXMgSFRNTCwgbyBxdWUgcGVybWl0ZSBhIGlkZW50aWZpY2HDp8OjbyBkbyBtZXNtbyBuYSBpbnRlcmZhY2UgcG9yIHRlY25vbG9naWFzXG4gKiBhc3Npc3RpdmFzLiBbV0NBRyA0LjEuMjogTmFtZSwgUm9sZSwgVmFsdWVdKGh0dHBzOi8vd3d3LnczLm9yZy9XQUkvV0NBRzIxL1VuZGVyc3RhbmRpbmcvbmFtZS1yb2xlLXZhbHVlKVxuICogLSBPIGZvY28gw6kgdmlzw612ZWwgZSBwb3NzdWkgdW1hIGVzcGVzc3VyYSBzdXBlcmlvciBhIDIgcGl4ZWxzIENTUywgbsOjbyBmaWNhbmRvIGVzY29uZGlkbyBwb3Igb3V0cm9zXG4gKiBlbGVtZW50b3MgZGEgdGVsYS4gW1dDQUcgMi40LjEyOiBGb2N1cyBBcHBlYXJhbmNlKV0oaHR0cHM6Ly93d3cudzMub3JnL1dBSS9XQ0FHMjIvVW5kZXJzdGFuZGluZy9mb2N1cy1hcHBlYXJhbmNlLWVuaGFuY2VkKVxuICogLSBBIGlkZW50aWZpY2HDp8OjbyBkbyBlcnJvIGFjb250ZWNlIHRhbWLDqW0gYXRyYXbDqXMgZGEgbXVkYW7Dp2EgZGUgY29yIGRvIGNhbXBvLCBtYXMgdGFtYsOpbSBkZSB1bSDDrWNvbmVcbiAqIGp1bnRvIGRhIG1lbnNhZ2VtLiBbV0dBRyAxLjQuMTogVXNlIG9mIENvbG9yLCAzLjIuNDogQ29uc2lzdGVudCBJZGVudGlmaWNhdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1dBSS9XQ0FHMjEvVW5kZXJzdGFuZGluZy91c2Utb2YtY29sb3IpXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBvVGV4dGFyZWFCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciB7XG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEFwbGljYSBmb2NvIG5vIGVsZW1lbnRvIGFvIHNlciBpbmljaWFkby5cbiAgICpcbiAgICogPiBDYXNvIG1haXMgZGUgdW0gZWxlbWVudG8gc2VqYSBjb25maWd1cmFkbyBjb20gZXNzYSBwcm9wcmllZGFkZSwgYXBlbmFzIG8gw7psdGltbyBlbGVtZW50byBkZWNsYXJhZG8gY29tIGVsYSB0ZXLDoSBvIGZvY28uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1hdXRvLWZvY3VzJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGF1dG9Gb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBMYWJlbCBkbyBjYW1wby4gKi9cbiAgQElucHV0KCdwLWxhYmVsJykgbGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqIFRleHRvIGRlIGFwb2lvIGRvIGNhbXBvLiAqL1xuICBASW5wdXQoJ3AtaGVscCcpIGhlbHA/OiBzdHJpbmc7XG5cbiAgLyoqIE5vbWUgZSBJZCBkbyBjb21wb25lbnRlLiAqL1xuICBASW5wdXQoJ25hbWUnKSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHNlIGEgaW5kaWNhw6fDo28gZGUgY2FtcG8gb3BjaW9uYWwgc2Vyw6EgZXhpYmlkYS5cbiAgICpcbiAgICogPiBOw6NvIHNlcsOhIGV4aWJpZGEgYSBpbmRpY2HDp8OjbyBzZTpcbiAgICogLSBPIGNhbXBvIGNvbnRlciBgcC1yZXF1aXJlZGA7XG4gICAqIC0gTsOjbyBwb3NzdWlyIGBwLWhlbHBgIGUvb3UgYHAtbGFiZWxgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3Atb3B0aW9uYWwnKSBvcHRpb25hbDogYm9vbGVhbjtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFeGliZSBhIG1lbnNhZ2VtIHNldGFkYSBzZSBvIGNhbXBvIGVzdGl2ZXIgdmF6aW8gZSBmb3IgcmVxdWVyaWRvLlxuICAgKlxuICAgKiA+IE5lY2Vzc8OhcmlvIHF1ZSBhIHByb3ByaWVkYWRlIGBwLXJlcXVpcmVkYCBlc3RlamEgaGFiaWxpdGFkYS5cbiAgICpcbiAgICovXG4gIEBJbnB1dCgncC1maWVsZC1lcnJvci1tZXNzYWdlJykgZmllbGRFcnJvck1lc3NhZ2U6IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFdmVudG8gZGlzcGFyYWRvIGFvIHNhaXIgZG8gY2FtcG8uXG4gICAqL1xuICBAT3V0cHV0KCdwLWJsdXInKSBibHVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gYW8gZW50cmFyIGRvIGNhbXBvLlxuICAgKi9cbiAgQE91dHB1dCgncC1lbnRlcicpIGVudGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gYW8gYWx0ZXJhciB2YWxvciBlIGRlaXhhciBvIGNhbXBvLlxuICAgKi9cbiAgQE91dHB1dCgncC1jaGFuZ2UnKSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXZlbnRvIGRpc3BhcmFkbyBhbyBhbHRlcmFyIHZhbG9yIGRvIG1vZGVsLlxuICAgKi9cbiAgQE91dHB1dCgncC1jaGFuZ2UtbW9kZWwnKSBjaGFuZ2VNb2RlbDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9tYXhsZW5ndGg6IG51bWJlcjtcbiAgcHJpdmF0ZSBfbWlubGVuZ3RoOiBudW1iZXI7XG4gIHByaXZhdGUgX3BsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcm93czogbnVtYmVyID0gMztcblxuICBwcml2YXRlIG1vZGVsTGFzdFVwZGF0ZTogYW55O1xuICBwcml2YXRlIG9uQ2hhbmdlUHJvcGFnYXRlOiBhbnkgPSBudWxsO1xuICBwcml2YXRlIHZhbGlkYXRvckNoYW5nZTogYW55O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgcHJvdGVjdGVkIG9uVG91Y2hlZDogYW55ID0gbnVsbDtcbiAgcHJvdGVjdGVkIGhhc1ZhbGlkYXRvclJlcXVpcmVkID0gZmFsc2U7XG5cbiAgLyoqIFBsYWNlaG9sZGVyLCBtZW5zYWdlbSBxdWUgYXBhcmVjZXLDoSBlbnF1YW50byBvIGNhbXBvIG7Do28gZXN0aXZlciBwcmVlbmNoaWRvLiAqL1xuICBASW5wdXQoJ3AtcGxhY2Vob2xkZXInKSBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdmFsdWUgfHwgJyc7XG4gIH1cblxuICBnZXQgcGxhY2Vob2xkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSW5kaWNhIHF1ZSBvIGNhbXBvIHNlcsOhIGRlc2FiaWxpdGFkby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWRpc2FibGVkJykgc2V0IGRpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb252ZXJ0VG9Cb29sZWFuKGRpc2FibGVkKTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgcXVlIG8gY2FtcG8gc2Vyw6Egc29tZW50ZSBsZWl0dXJhLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtcmVhZG9ubHknKSBzZXQgcmVhZG9ubHkocmVhZG9ubHk6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZWFkb25seSA9IGNvbnZlcnRUb0Jvb2xlYW4ocmVhZG9ubHkpO1xuICB9XG5cbiAgZ2V0IHJlYWRvbmx5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkb25seTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBxdWUgbyBjYW1wbyBzZXLDoSBvYnJpZ2F0w7NyaW8uXG4gICAqID4gRXN0YSBwcm9wcmllZGFkZSDDqSBkZXNjb25zaWRlcmFkYSBxdWFuZG8gbyBpbnB1dCBlc3TDoSBkZXNhYmlsaXRhZG8gYChwLWRpc2FibGVkKWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1yZXF1aXJlZCcpIHNldCByZXF1aXJlZChyZXF1aXJlZDogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gY29udmVydFRvQm9vbGVhbihyZXF1aXJlZCk7XG5cbiAgICB0aGlzLnZhbGlkYXRlTW9kZWwoKTtcbiAgfVxuXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lIHNlIGEgaW5kaWNhw6fDo28gZGUgY2FtcG8gb2JyaWdhdMOzcmlvIHNlcsOhIGV4aWJpZGEuXG4gICAqXG4gICAqID4gTsOjbyBzZXLDoSBleGliaWRhIGEgaW5kaWNhw6fDo28gc2U6XG4gICAqIC0gTsOjbyBwb3NzdWlyIGBwLWhlbHBgIGUvb3UgYHAtbGFiZWxgLlxuICAgKi9cbiAgQElucHV0KCdwLXNob3ctcmVxdWlyZWQnKSBzaG93UmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgYSBxdWFudGlkYWRlIG3DrW5pbWEgZGUgY2FyYWN0ZXJlcyBxdWUgbyBjYW1wbyBhY2VpdGEuXG4gICAqL1xuICBASW5wdXQoJ3AtbWlubGVuZ3RoJykgc2V0IG1pbmxlbmd0aChtaW5sZW5ndGg6IG51bWJlcikge1xuICAgIHRoaXMuX21pbmxlbmd0aCA9IGNvbnZlcnRUb0ludChtaW5sZW5ndGgpO1xuICAgIHRoaXMudmFsaWRhdGVNb2RlbCgpO1xuICB9XG5cbiAgZ2V0IG1pbmxlbmd0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9taW5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgYSBxdWFudGlkYWRlIG3DoXhpbWEgZGUgY2FyYWN0ZXJlcyBxdWUgbyBjYW1wbyBhY2VpdGEuXG4gICAqL1xuICBASW5wdXQoJ3AtbWF4bGVuZ3RoJykgc2V0IG1heGxlbmd0aChtYXhsZW5ndGg6IG51bWJlcikge1xuICAgIHRoaXMuX21heGxlbmd0aCA9IGNvbnZlcnRUb0ludChtYXhsZW5ndGgpO1xuICAgIHRoaXMudmFsaWRhdGVNb2RlbCgpO1xuICB9XG5cbiAgZ2V0IG1heGxlbmd0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9tYXhsZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgYSBxdWFudGlkYWRlIGRlIGxpbmhhcyBxdWUgc2Vyw6NvIGV4aWJpZGFzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgM2BcbiAgICovXG4gIEBJbnB1dCgncC1yb3dzJykgc2V0IHJvd3ModmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX3Jvd3MgPSBpc05hTihwYXJzZUludCg8YW55PnZhbHVlLCAxMCkpIHx8IHZhbHVlIDwgMyA/IDMgOiBwYXJzZUludCg8YW55PnZhbHVlLCAxMCk7XG4gIH1cbiAgZ2V0IHJvd3MoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcm93cztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgY2FsbE9uQ2hhbmdlKHZhbHVlOiBhbnkpIHtcbiAgICAvLyBRdWFuZG8gbyBpbnB1dCBuw6NvIHBvc3N1aSB1bSBmb3JtdWzDoXJpbywgZW50w6NvIGVzdGEgZnVuw6fDo28gbsOjbyDDqSByZWdpc3RyYWRhXG4gICAgaWYgKHRoaXMub25DaGFuZ2VQcm9wYWdhdGUpIHtcbiAgICAgIHRoaXMub25DaGFuZ2VQcm9wYWdhdGUodmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMuY29udHJvbENoYW5nZU1vZGVsRW1pdHRlcih2YWx1ZSk7XG4gIH1cblxuICBjb250cm9sQ2hhbmdlTW9kZWxFbWl0dGVyKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodGhpcy5tb2RlbExhc3RVcGRhdGUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLmNoYW5nZU1vZGVsLmVtaXQodmFsdWUpO1xuICAgICAgdGhpcy5tb2RlbExhc3RVcGRhdGUgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICAvLyBGdW7Dp8OjbyBpbXBsZW1lbnRhZGEgZG8gQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgLy8gVXNhZGEgcGFyYSBpbnRlcmNlcHRhciBvcyBlc3RhZG9zIGRlIGhhYmlsaXRhZG8gdmlhIGZvcm1zIGFwaVxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLy8gRnVuw6fDtWVzIGByZWdpc3Rlck9uQ2hhbmdlYCwgYHJlZ2lzdGVyT25Ub3VjaGVkYCBlIGByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlYCBpbXBsZW1lbnRhZGFzIHJlZmVyZW50ZXMgYW8gQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgLy8gdXNhZGFzIHBhcmEgaW50ZXJjZXB0YXIgYXMgbXVkYW7Dp2FzIGUgbsOjbyBhdHVhbGl6YXIgYXV0b21hdGljYW1lbnRlIG8gTW9kZWxcbiAgcmVnaXN0ZXJPbkNoYW5nZShmdW5jOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlUHJvcGFnYXRlID0gZnVuYztcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZ1bmM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZnVuYztcbiAgfVxuXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZnVuYzogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0b3JDaGFuZ2UgPSBmdW5jO1xuICB9XG5cbiAgdmFsaWRhdGUoYWJzdHJhY3RDb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICBpZiAoIXRoaXMuaGFzVmFsaWRhdG9yUmVxdWlyZWQgJiYgdGhpcy5maWVsZEVycm9yTWVzc2FnZSAmJiBhYnN0cmFjdENvbnRyb2wuaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpKSB7XG4gICAgICB0aGlzLmhhc1ZhbGlkYXRvclJlcXVpcmVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAocmVxdWlyZWRGYWlsZWQodGhpcy5yZXF1aXJlZCwgdGhpcy5kaXNhYmxlZCwgYWJzdHJhY3RDb250cm9sLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVxdWlyZWQ6IHtcbiAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAobWlubGVuZ3BvYWlsZWQodGhpcy5taW5sZW5ndGgsIGFic3RyYWN0Q29udHJvbC52YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1pbmxlbmd0aDoge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChtYXhsZW5ncG9haWxlZCh0aGlzLm1heGxlbmd0aCwgYWJzdHJhY3RDb250cm9sLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWF4bGVuZ3RoOiB7XG4gICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMud3JpdGVWYWx1ZU1vZGVsKHZhbHVlKTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHZhbGlkYXRlTW9kZWwoKSB7XG4gICAgaWYgKHRoaXMudmFsaWRhdG9yQ2hhbmdlKSB7XG4gICAgICB0aGlzLnZhbGlkYXRvckNoYW5nZSgpO1xuICAgIH1cbiAgfVxuXG4gIGFic3RyYWN0IHdyaXRlVmFsdWVNb2RlbCh2YWx1ZTogYW55KTogdm9pZDtcbn1cbiJdfQ==
373
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdGV4dGFyZWEtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tdGV4dGFyZWEvcG8tdGV4dGFyZWEtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFvRCxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUvRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBRUgsTUFBTSxPQUFnQix1QkFBdUI7SUEwT3hCO0lBek9uQjs7Ozs7Ozs7OztPQVVHO0lBQzRELFNBQVMsR0FBWSxLQUFLLENBQUM7SUFFMUYsc0JBQXNCO0lBQ0osS0FBSyxDQUFVO0lBRWpDLCtCQUErQjtJQUNkLElBQUksQ0FBVTtJQUUvQiwrQkFBK0I7SUFDaEIsSUFBSSxDQUFTO0lBRTVCOzs7Ozs7Ozs7Ozs7T0FZRztJQUNrQixRQUFRLENBQVU7SUFFdkM7Ozs7Ozs7OztPQVNHO0lBQzZCLGlCQUFpQixDQUFTO0lBRTFEOzs7Ozs7Ozs7OztPQVdHO0lBQ3FCLFVBQVUsR0FBWSxLQUFLLENBQUM7SUFFcEQ7Ozs7OztPQU1HO0lBQ2UsSUFBSSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBRXBFOzs7Ozs7T0FNRztJQUNnQixLQUFLLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFFdEU7Ozs7OztPQU1HO0lBQ2lCLE1BQU0sR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUV4RTs7Ozs7O09BTUc7SUFDdUIsV0FBVyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBRTNFLFNBQVMsR0FBWSxLQUFLLENBQUM7SUFDM0IsVUFBVSxDQUFTO0lBQ25CLFVBQVUsQ0FBUztJQUNuQixZQUFZLEdBQVcsRUFBRSxDQUFDO0lBQzFCLFNBQVMsR0FBWSxLQUFLLENBQUM7SUFDM0IsU0FBUyxHQUFZLEtBQUssQ0FBQztJQUMzQixLQUFLLEdBQVcsQ0FBQyxDQUFDO0lBRWxCLGVBQWUsQ0FBTTtJQUNyQixpQkFBaUIsR0FBUSxJQUFJLENBQUM7SUFDOUIsZUFBZSxDQUFNO0lBQzdCLDJCQUEyQjtJQUNqQixTQUFTLEdBQVEsSUFBSSxDQUFDO0lBQ3RCLG9CQUFvQixHQUFHLEtBQUssQ0FBQztJQUV2QyxtRkFBbUY7SUFDbkYsSUFBNEIsV0FBVyxDQUFDLEtBQWE7UUFDbkQsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsSUFBeUIsUUFBUSxDQUFDLFFBQWlCO1FBQ2pELElBQUksQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxJQUF5QixRQUFRLENBQUMsUUFBaUI7UUFDakQsSUFBSSxDQUFDLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxJQUF5QixRQUFRLENBQUMsUUFBaUI7UUFDakQsSUFBSSxDQUFDLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU1QyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDdUIsWUFBWSxHQUFZLEtBQUssQ0FBQztJQUV4RDs7Ozs7O09BTUc7SUFDSCxJQUEwQixTQUFTLENBQUMsU0FBaUI7UUFDbkQsSUFBSSxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQTBCLFNBQVMsQ0FBQyxTQUFpQjtRQUNuRCxJQUFJLENBQUMsVUFBVSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxJQUFxQixJQUFJLENBQUMsS0FBYTtRQUNyQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFDRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELFlBQW1CLEVBQXFCO1FBQXJCLE9BQUUsR0FBRixFQUFFLENBQW1CO0lBQUcsQ0FBQztJQUU1QyxZQUFZLENBQUMsS0FBVTtRQUNyQiw4RUFBOEU7UUFDOUUsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUVELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQseUJBQXlCLENBQUMsS0FBVTtRQUNsQyxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7SUFFRCw4Q0FBOEM7SUFDOUMsZ0VBQWdFO0lBQ2hFLGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzNCLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELGlJQUFpSTtJQUNqSSw4RUFBOEU7SUFDOUUsZ0JBQWdCLENBQUMsSUFBUztRQUN4QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUFTO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxJQUFTO1FBQ2pDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO0lBQzlCLENBQUM7SUFFRCxRQUFRLENBQUMsZUFBZ0M7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksZUFBZSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM5RyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1FBQ25DLENBQUM7UUFFRCxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEUsT0FBTztnQkFDTCxRQUFRLEVBQUU7b0JBQ1IsS0FBSyxFQUFFLEtBQUs7aUJBQ2I7YUFDRixDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDMUQsT0FBTztnQkFDTCxTQUFTLEVBQUU7b0JBQ1QsS0FBSyxFQUFFLEtBQUs7aUJBQ2I7YUFDRixDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDMUQsT0FBTztnQkFDTCxTQUFTLEVBQUU7b0JBQ1QsS0FBSyxFQUFFLEtBQUs7aUJBQ2I7YUFDRixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCw4Q0FBOEM7SUFDOUMsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFUyxhQUFhO1FBQ3JCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztpRkF6VG1CLHVCQUF1Qjs2REFBdkIsdUJBQXVCLHdEQVlBLGdCQUFnQjs7aUZBWnZDLHVCQUF1QjtjQUQ1QyxTQUFTO2tEQWF1RCxTQUFTO2tCQUF2RSxLQUFLO21CQUFDLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7WUFHM0MsS0FBSztrQkFBdEIsS0FBSzttQkFBQyxTQUFTO1lBR0MsSUFBSTtrQkFBcEIsS0FBSzttQkFBQyxRQUFRO1lBR0EsSUFBSTtrQkFBbEIsS0FBSzttQkFBQyxNQUFNO1lBZVEsUUFBUTtrQkFBNUIsS0FBSzttQkFBQyxZQUFZO1lBWWEsaUJBQWlCO2tCQUFoRCxLQUFLO21CQUFDLHVCQUF1QjtZQWNOLFVBQVU7a0JBQWpDLEtBQUs7bUJBQUMsZUFBZTtZQVNKLElBQUk7a0JBQXJCLE1BQU07bUJBQUMsUUFBUTtZQVNHLEtBQUs7a0JBQXZCLE1BQU07bUJBQUMsU0FBUztZQVNHLE1BQU07a0JBQXpCLE1BQU07bUJBQUMsVUFBVTtZQVNRLFdBQVc7a0JBQXBDLE1BQU07bUJBQUMsZ0JBQWdCO1lBa0JJLFdBQVc7a0JBQXRDLEtBQUs7bUJBQUMsZUFBZTtZQWlCRyxRQUFRO2tCQUFoQyxLQUFLO21CQUFDLFlBQVk7WUFpQk0sUUFBUTtrQkFBaEMsS0FBSzttQkFBQyxZQUFZO1lBa0JNLFFBQVE7a0JBQWhDLEtBQUs7bUJBQUMsWUFBWTtZQWdCTyxZQUFZO2tCQUFyQyxLQUFLO21CQUFDLGlCQUFpQjtZQVNFLFNBQVM7a0JBQWxDLEtBQUs7bUJBQUMsYUFBYTtZQWdCTSxTQUFTO2tCQUFsQyxLQUFLO21CQUFDLGFBQWE7WUFrQkMsSUFBSTtrQkFBeEIsS0FBSzttQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IGNvbnZlcnRUb0Jvb2xlYW4sIGNvbnZlcnRUb0ludCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgbWF4bGVuZ3BvYWlsZWQsIG1pbmxlbmdwb2FpbGVkLCByZXF1aXJlZEZhaWxlZCB9IGZyb20gJy4uL3ZhbGlkYXRvcnMnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIEVzdGUgw6kgdW0gY29tcG9uZW50ZSBkZSBlbnRyYWRhIGRlIGRhZG9zIHF1ZSBwb3NzaWJpbGl0YSBvIHByZWVjaGltZW50byBjb20gbcO6bHRpcGxhcyBsaW5oYXMuXG4gKiDDiSByZWNvbWVuZGFkbyBwYXJhIG9ic2VydmHDp8O1ZXMsIGRldGFsaGFtZW50b3MgZSBvdXRyYXMgc2l0dWHDp8O1ZXMgb25kZSBvIHVzdcOhcmlvIGRldmEgcHJlZW5jaGVyIGNvbSB1bSB0ZXh0by5cbiAqXG4gKiBJbXBvcnRhbnRlOlxuICpcbiAqIC0gQSBwcm9wcmllZGFkZSBgbmFtZWAgw6kgb2JyaWdhdMOzcmlhIHBhcmEgcXVlIG8gZm9ybXVsw6FyaW8gZSBvIGBtb2RlbGAgZnVuY2lvbmVtIGNvcnJldGFtZW50ZS4gRG8gY29udHLDoXJpbywgb2NvcnJlcsOhIHVtIGVycm8gZGVcbiAqIF9Bbmd1bGFyXywgb25kZSBzZXLDoSBuZWNlc3PDoXJpbyBpbmZvcm1hciBvIGF0cmlidXRvIGBuYW1lYCBvdSBvIGF0cmlidXRvIGBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJgLCBwb3IgZXhlbXBsbzpcbiAqXG4gKiBgYGBcbiAqIDxwby10ZXh0YXJlYVxuICogICBbKG5nTW9kZWwpXT1cInBlc3NvYS5ub21lXCJcbiAqICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiPlxuICogPC9wby10ZXh0YXJlYT5cbiAqIGBgYFxuICpcbiAqICMjIyMgQWNlc3NpYmlsaWRhZGUgdHJhdGFkYSBubyBjb21wb25lbnRlXG4gKiBBbGd1bWFzIGRpcmV0cml6ZXMgZGUgYWNlc3NpYmlsaWRhZGUgasOhIHPDo28gdHJhdGFkYXMgbm8gY29tcG9uZW50ZSwgaW50ZXJuYW1lbnRlLCBlIG7Do28gcG9kZW0gc2VyIGFsdGVyYWRhcy4gU8OjbyBlbGFzOlxuICpcbiAqIC0gTyBUZXh0IGFyZWEgZm9pIGRlc2Vudm9sdmlkbyBjb20gdXNvIGRlIGNvbnRyb2xlcyBwYWRyw7VlcyBIVE1MLCBvIHF1ZSBwZXJtaXRlIGEgaWRlbnRpZmljYcOnw6NvIGRvIG1lc21vIG5hIGludGVyZmFjZSBwb3IgdGVjbm9sb2dpYXNcbiAqIGFzc2lzdGl2YXMuIFtXQ0FHIDQuMS4yOiBOYW1lLCBSb2xlLCBWYWx1ZV0oaHR0cHM6Ly93d3cudzMub3JnL1dBSS9XQ0FHMjEvVW5kZXJzdGFuZGluZy9uYW1lLXJvbGUtdmFsdWUpXG4gKiAtIE8gZm9jbyDDqSB2aXPDrXZlbCBlIHBvc3N1aSB1bWEgZXNwZXNzdXJhIHN1cGVyaW9yIGEgMiBwaXhlbHMgQ1NTLCBuw6NvIGZpY2FuZG8gZXNjb25kaWRvIHBvciBvdXRyb3NcbiAqIGVsZW1lbnRvcyBkYSB0ZWxhLiBbV0NBRyAyLjQuMTI6IEZvY3VzIEFwcGVhcmFuY2UpXShodHRwczovL3d3dy53My5vcmcvV0FJL1dDQUcyMi9VbmRlcnN0YW5kaW5nL2ZvY3VzLWFwcGVhcmFuY2UtZW5oYW5jZWQpXG4gKiAtIEEgaWRlbnRpZmljYcOnw6NvIGRvIGVycm8gYWNvbnRlY2UgdGFtYsOpbSBhdHJhdsOpcyBkYSBtdWRhbsOnYSBkZSBjb3IgZG8gY2FtcG8sIG1hcyB0YW1iw6ltIGRlIHVtIMOtY29uZVxuICoganVudG8gZGEgbWVuc2FnZW0uIFtXR0FHIDEuNC4xOiBVc2Ugb2YgQ29sb3IsIDMuMi40OiBDb25zaXN0ZW50IElkZW50aWZpY2F0aW9uXShodHRwczovL3d3dy53My5vcmcvV0FJL1dDQUcyMS9VbmRlcnN0YW5kaW5nL3VzZS1vZi1jb2xvcilcbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUG9UZXh0YXJlYUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQXBsaWNhIGZvY28gbm8gZWxlbWVudG8gYW8gc2VyIGluaWNpYWRvLlxuICAgKlxuICAgKiA+IENhc28gbWFpcyBkZSB1bSBlbGVtZW50byBzZWphIGNvbmZpZ3VyYWRvIGNvbSBlc3NhIHByb3ByaWVkYWRlLCBhcGVuYXMgbyDDumx0aW1vIGVsZW1lbnRvIGRlY2xhcmFkbyBjb20gZWxhIHRlcsOhIG8gZm9jby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWF1dG8tZm9jdXMnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgYXV0b0ZvY3VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIExhYmVsIGRvIGNhbXBvLiAqL1xuICBASW5wdXQoJ3AtbGFiZWwnKSBsYWJlbD86IHN0cmluZztcblxuICAvKiogVGV4dG8gZGUgYXBvaW8gZG8gY2FtcG8uICovXG4gIEBJbnB1dCgncC1oZWxwJykgaGVscD86IHN0cmluZztcblxuICAvKiogTm9tZSBlIElkIGRvIGNvbXBvbmVudGUuICovXG4gIEBJbnB1dCgnbmFtZScpIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgc2UgYSBpbmRpY2HDp8OjbyBkZSBjYW1wbyBvcGNpb25hbCBzZXLDoSBleGliaWRhLlxuICAgKlxuICAgKiA+IE7Do28gc2Vyw6EgZXhpYmlkYSBhIGluZGljYcOnw6NvIHNlOlxuICAgKiAtIE8gY2FtcG8gY29udGVyIGBwLXJlcXVpcmVkYDtcbiAgICogLSBOw6NvIHBvc3N1aXIgYHAtaGVscGAgZS9vdSBgcC1sYWJlbGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1vcHRpb25hbCcpIG9wdGlvbmFsOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV4aWJlIGEgbWVuc2FnZW0gc2V0YWRhIHNlIG8gY2FtcG8gZXN0aXZlciB2YXppbyBlIGZvciByZXF1ZXJpZG8uXG4gICAqXG4gICAqID4gTmVjZXNzw6FyaW8gcXVlIGEgcHJvcHJpZWRhZGUgYHAtcmVxdWlyZWRgIGVzdGVqYSBoYWJpbGl0YWRhLlxuICAgKlxuICAgKi9cbiAgQElucHV0KCdwLWZpZWxkLWVycm9yLW1lc3NhZ2UnKSBmaWVsZEVycm9yTWVzc2FnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIExpbWl0YSBhIGV4aWJpw6fDo28gZGEgbWVuc2FnZW0gZGUgZXJybyBhIGR1YXMgbGluaGFzIGUgZXhpYmUgdW0gdG9vbHRpcCBjb20gbyB0ZXh0byBjb21wbGV0by5cbiAgICpcbiAgICogPiBDYXNvIGVzc2EgcHJvcHJpZWRhZGUgc2VqYSBkZWZpbmlkYSBjb21vIGB0cnVlYCwgYSBtZW5zYWdlbSBkZSBlcnJvIHNlcsOhIGxpbWl0YWRhIGEgZHVhcyBsaW5oYXNcbiAgICogZSB1bSB0b29sdGlwIHNlcsOhIGV4aWJpZG8gYW8gcGFzc2FyIG8gbW91c2Ugc29icmUgYSBtZW5zYWdlbSBwYXJhIG1vc3RyYXIgbyBjb250ZcO6ZG8gY29tcGxldG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1lcnJvci1saW1pdCcpIGVycm9yTGltaXQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFdmVudG8gZGlzcGFyYWRvIGFvIHNhaXIgZG8gY2FtcG8uXG4gICAqL1xuICBAT3V0cHV0KCdwLWJsdXInKSBibHVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gYW8gZW50cmFyIGRvIGNhbXBvLlxuICAgKi9cbiAgQE91dHB1dCgncC1lbnRlcicpIGVudGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gYW8gYWx0ZXJhciB2YWxvciBlIGRlaXhhciBvIGNhbXBvLlxuICAgKi9cbiAgQE91dHB1dCgncC1jaGFuZ2UnKSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXZlbnRvIGRpc3BhcmFkbyBhbyBhbHRlcmFyIHZhbG9yIGRvIG1vZGVsLlxuICAgKi9cbiAgQE91dHB1dCgncC1jaGFuZ2UtbW9kZWwnKSBjaGFuZ2VNb2RlbDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9tYXhsZW5ndGg6IG51bWJlcjtcbiAgcHJpdmF0ZSBfbWlubGVuZ3RoOiBudW1iZXI7XG4gIHByaXZhdGUgX3BsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcm93czogbnVtYmVyID0gMztcblxuICBwcml2YXRlIG1vZGVsTGFzdFVwZGF0ZTogYW55O1xuICBwcml2YXRlIG9uQ2hhbmdlUHJvcGFnYXRlOiBhbnkgPSBudWxsO1xuICBwcml2YXRlIHZhbGlkYXRvckNoYW5nZTogYW55O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgcHJvdGVjdGVkIG9uVG91Y2hlZDogYW55ID0gbnVsbDtcbiAgcHJvdGVjdGVkIGhhc1ZhbGlkYXRvclJlcXVpcmVkID0gZmFsc2U7XG5cbiAgLyoqIFBsYWNlaG9sZGVyLCBtZW5zYWdlbSBxdWUgYXBhcmVjZXLDoSBlbnF1YW50byBvIGNhbXBvIG7Do28gZXN0aXZlciBwcmVlbmNoaWRvLiAqL1xuICBASW5wdXQoJ3AtcGxhY2Vob2xkZXInKSBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdmFsdWUgfHwgJyc7XG4gIH1cblxuICBnZXQgcGxhY2Vob2xkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSW5kaWNhIHF1ZSBvIGNhbXBvIHNlcsOhIGRlc2FiaWxpdGFkby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWRpc2FibGVkJykgc2V0IGRpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb252ZXJ0VG9Cb29sZWFuKGRpc2FibGVkKTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgcXVlIG8gY2FtcG8gc2Vyw6Egc29tZW50ZSBsZWl0dXJhLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtcmVhZG9ubHknKSBzZXQgcmVhZG9ubHkocmVhZG9ubHk6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZWFkb25seSA9IGNvbnZlcnRUb0Jvb2xlYW4ocmVhZG9ubHkpO1xuICB9XG5cbiAgZ2V0IHJlYWRvbmx5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkb25seTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBxdWUgbyBjYW1wbyBzZXLDoSBvYnJpZ2F0w7NyaW8uXG4gICAqID4gRXN0YSBwcm9wcmllZGFkZSDDqSBkZXNjb25zaWRlcmFkYSBxdWFuZG8gbyBpbnB1dCBlc3TDoSBkZXNhYmlsaXRhZG8gYChwLWRpc2FibGVkKWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1yZXF1aXJlZCcpIHNldCByZXF1aXJlZChyZXF1aXJlZDogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gY29udmVydFRvQm9vbGVhbihyZXF1aXJlZCk7XG5cbiAgICB0aGlzLnZhbGlkYXRlTW9kZWwoKTtcbiAgfVxuXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lIHNlIGEgaW5kaWNhw6fDo28gZGUgY2FtcG8gb2JyaWdhdMOzcmlvIHNlcsOhIGV4aWJpZGEuXG4gICAqXG4gICAqID4gTsOjbyBzZXLDoSBleGliaWRhIGEgaW5kaWNhw6fDo28gc2U6XG4gICAqIC0gTsOjbyBwb3NzdWlyIGBwLWhlbHBgIGUvb3UgYHAtbGFiZWxgLlxuICAgKi9cbiAgQElucHV0KCdwLXNob3ctcmVxdWlyZWQnKSBzaG93UmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgYSBxdWFudGlkYWRlIG3DrW5pbWEgZGUgY2FyYWN0ZXJlcyBxdWUgbyBjYW1wbyBhY2VpdGEuXG4gICAqL1xuICBASW5wdXQoJ3AtbWlubGVuZ3RoJykgc2V0IG1pbmxlbmd0aChtaW5sZW5ndGg6IG51bWJlcikge1xuICAgIHRoaXMuX21pbmxlbmd0aCA9IGNvbnZlcnRUb0ludChtaW5sZW5ndGgpO1xuICAgIHRoaXMudmFsaWRhdGVNb2RlbCgpO1xuICB9XG5cbiAgZ2V0IG1pbmxlbmd0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9taW5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgYSBxdWFudGlkYWRlIG3DoXhpbWEgZGUgY2FyYWN0ZXJlcyBxdWUgbyBjYW1wbyBhY2VpdGEuXG4gICAqL1xuICBASW5wdXQoJ3AtbWF4bGVuZ3RoJykgc2V0IG1heGxlbmd0aChtYXhsZW5ndGg6IG51bWJlcikge1xuICAgIHRoaXMuX21heGxlbmd0aCA9IGNvbnZlcnRUb0ludChtYXhsZW5ndGgpO1xuICAgIHRoaXMudmFsaWRhdGVNb2RlbCgpO1xuICB9XG5cbiAgZ2V0IG1heGxlbmd0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9tYXhsZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgYSBxdWFudGlkYWRlIGRlIGxpbmhhcyBxdWUgc2Vyw6NvIGV4aWJpZGFzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgM2BcbiAgICovXG4gIEBJbnB1dCgncC1yb3dzJykgc2V0IHJvd3ModmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX3Jvd3MgPSBpc05hTihwYXJzZUludCg8YW55PnZhbHVlLCAxMCkpIHx8IHZhbHVlIDwgMyA/IDMgOiBwYXJzZUludCg8YW55PnZhbHVlLCAxMCk7XG4gIH1cbiAgZ2V0IHJvd3MoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcm93cztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgY2FsbE9uQ2hhbmdlKHZhbHVlOiBhbnkpIHtcbiAgICAvLyBRdWFuZG8gbyBpbnB1dCBuw6NvIHBvc3N1aSB1bSBmb3JtdWzDoXJpbywgZW50w6NvIGVzdGEgZnVuw6fDo28gbsOjbyDDqSByZWdpc3RyYWRhXG4gICAgaWYgKHRoaXMub25DaGFuZ2VQcm9wYWdhdGUpIHtcbiAgICAgIHRoaXMub25DaGFuZ2VQcm9wYWdhdGUodmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMuY29udHJvbENoYW5nZU1vZGVsRW1pdHRlcih2YWx1ZSk7XG4gIH1cblxuICBjb250cm9sQ2hhbmdlTW9kZWxFbWl0dGVyKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodGhpcy5tb2RlbExhc3RVcGRhdGUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLmNoYW5nZU1vZGVsLmVtaXQodmFsdWUpO1xuICAgICAgdGhpcy5tb2RlbExhc3RVcGRhdGUgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICAvLyBGdW7Dp8OjbyBpbXBsZW1lbnRhZGEgZG8gQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgLy8gVXNhZGEgcGFyYSBpbnRlcmNlcHRhciBvcyBlc3RhZG9zIGRlIGhhYmlsaXRhZG8gdmlhIGZvcm1zIGFwaVxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLy8gRnVuw6fDtWVzIGByZWdpc3Rlck9uQ2hhbmdlYCwgYHJlZ2lzdGVyT25Ub3VjaGVkYCBlIGByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlYCBpbXBsZW1lbnRhZGFzIHJlZmVyZW50ZXMgYW8gQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgLy8gdXNhZGFzIHBhcmEgaW50ZXJjZXB0YXIgYXMgbXVkYW7Dp2FzIGUgbsOjbyBhdHVhbGl6YXIgYXV0b21hdGljYW1lbnRlIG8gTW9kZWxcbiAgcmVnaXN0ZXJPbkNoYW5nZShmdW5jOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlUHJvcGFnYXRlID0gZnVuYztcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZ1bmM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZnVuYztcbiAgfVxuXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZnVuYzogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0b3JDaGFuZ2UgPSBmdW5jO1xuICB9XG5cbiAgdmFsaWRhdGUoYWJzdHJhY3RDb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICBpZiAoIXRoaXMuaGFzVmFsaWRhdG9yUmVxdWlyZWQgJiYgdGhpcy5maWVsZEVycm9yTWVzc2FnZSAmJiBhYnN0cmFjdENvbnRyb2wuaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpKSB7XG4gICAgICB0aGlzLmhhc1ZhbGlkYXRvclJlcXVpcmVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAocmVxdWlyZWRGYWlsZWQodGhpcy5yZXF1aXJlZCwgdGhpcy5kaXNhYmxlZCwgYWJzdHJhY3RDb250cm9sLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVxdWlyZWQ6IHtcbiAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAobWlubGVuZ3BvYWlsZWQodGhpcy5taW5sZW5ndGgsIGFic3RyYWN0Q29udHJvbC52YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1pbmxlbmd0aDoge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChtYXhsZW5ncG9haWxlZCh0aGlzLm1heGxlbmd0aCwgYWJzdHJhY3RDb250cm9sLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWF4bGVuZ3RoOiB7XG4gICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMud3JpdGVWYWx1ZU1vZGVsKHZhbHVlKTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHZhbGlkYXRlTW9kZWwoKSB7XG4gICAgaWYgKHRoaXMudmFsaWRhdG9yQ2hhbmdlKSB7XG4gICAgICB0aGlzLnZhbGlkYXRvckNoYW5nZSgpO1xuICAgIH1cbiAgfVxuXG4gIGFic3RyYWN0IHdyaXRlVmFsdWVNb2RlbCh2YWx1ZTogYW55KTogdm9pZDtcbn1cbiJdfQ==
@@ -136,7 +136,7 @@ export class PoTextareaComponent extends PoTextareaBaseComponent {
136
136
  useExisting: forwardRef(() => PoTextareaComponent),
137
137
  multi: true
138
138
  }
139
- ]), i0.ɵɵInheritDefinitionFeature], decls: 5, vars: 16, consts: [["inp", ""], [3, "p-disabled", "p-id", "p-label", "p-optional", "p-required", "p-show-required"], [1, "po-field-container-content"], [1, "po-textarea", 3, "blur", "focus", "input", "disabled", "id", "placeholder", "readonly", "required", "rows"], [3, "p-help", "p-disabled", "p-error-pattern"]], template: function PoTextareaComponent_Template(rf, ctx) { if (rf & 1) {
139
+ ]), i0.ɵɵInheritDefinitionFeature], decls: 5, vars: 17, consts: [["inp", ""], [3, "p-disabled", "p-id", "p-label", "p-optional", "p-required", "p-show-required"], [1, "po-field-container-content"], [1, "po-textarea", 3, "blur", "focus", "input", "disabled", "id", "placeholder", "readonly", "required", "rows"], [3, "p-help", "p-disabled", "p-error-pattern", "p-error-limit"]], template: function PoTextareaComponent_Template(rf, ctx) { if (rf & 1) {
140
140
  const _r1 = i0.ɵɵgetCurrentView();
141
141
  i0.ɵɵelementStart(0, "po-field-container", 1)(1, "div", 2)(2, "textarea", 3, 0);
142
142
  i0.ɵɵlistener("blur", function PoTextareaComponent_Template_textarea_blur_2_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.eventOnBlur()); })("focus", function PoTextareaComponent_Template_textarea_focus_2_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.eventOnFocus()); })("input", function PoTextareaComponent_Template_textarea_input_2_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.eventOnInput($event)); });
@@ -149,7 +149,7 @@ export class PoTextareaComponent extends PoTextareaBaseComponent {
149
149
  i0.ɵɵproperty("disabled", ctx.disabled)("id", ctx.id)("placeholder", ctx.disabled ? "" : ctx.placeholder)("readonly", ctx.readonly)("required", ctx.required)("rows", ctx.rows);
150
150
  i0.ɵɵattribute("name", ctx.name);
151
151
  i0.ɵɵadvance(2);
152
- i0.ɵɵproperty("p-help", ctx.help)("p-disabled", ctx.disabled)("p-error-pattern", ctx.getErrorPattern());
152
+ i0.ɵɵproperty("p-help", ctx.help)("p-disabled", ctx.disabled)("p-error-pattern", ctx.getErrorPattern())("p-error-limit", ctx.errorLimit);
153
153
  } }, dependencies: [i1.PoFieldContainerBottomComponent, i2.PoFieldContainerComponent], encapsulation: 2, changeDetection: 0 });
154
154
  }
155
155
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoTextareaComponent, [{
@@ -165,10 +165,10 @@ export class PoTextareaComponent extends PoTextareaBaseComponent {
165
165
  useExisting: forwardRef(() => PoTextareaComponent),
166
166
  multi: true
167
167
  }
168
- ], template: "<po-field-container\n [p-disabled]=\"disabled\"\n [p-id]=\"id\"\n [p-label]=\"label\"\n [p-optional]=\"optional\"\n [p-required]=\"required\"\n [p-show-required]=\"showRequired\"\n>\n <div class=\"po-field-container-content\">\n <textarea\n #inp\n class=\"po-textarea\"\n (blur)=\"eventOnBlur()\"\n (focus)=\"eventOnFocus()\"\n (input)=\"eventOnInput($event)\"\n [attr.name]=\"name\"\n [disabled]=\"disabled\"\n [id]=\"id\"\n [placeholder]=\"disabled ? '' : placeholder\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [rows]=\"rows\"\n ></textarea>\n </div>\n\n <po-field-container-bottom\n [p-help]=\"help\"\n [p-disabled]=\"disabled\"\n [p-error-pattern]=\"getErrorPattern()\"\n ></po-field-container-bottom>\n</po-field-container>\n" }]
168
+ ], template: "<po-field-container\n [p-disabled]=\"disabled\"\n [p-id]=\"id\"\n [p-label]=\"label\"\n [p-optional]=\"optional\"\n [p-required]=\"required\"\n [p-show-required]=\"showRequired\"\n>\n <div class=\"po-field-container-content\">\n <textarea\n #inp\n class=\"po-textarea\"\n (blur)=\"eventOnBlur()\"\n (focus)=\"eventOnFocus()\"\n (input)=\"eventOnInput($event)\"\n [attr.name]=\"name\"\n [disabled]=\"disabled\"\n [id]=\"id\"\n [placeholder]=\"disabled ? '' : placeholder\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [rows]=\"rows\"\n ></textarea>\n </div>\n\n <po-field-container-bottom\n [p-help]=\"help\"\n [p-disabled]=\"disabled\"\n [p-error-pattern]=\"getErrorPattern()\"\n [p-error-limit]=\"errorLimit\"\n ></po-field-container-bottom>\n</po-field-container>\n" }]
169
169
  }], () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], { inputEl: [{
170
170
  type: ViewChild,
171
171
  args: ['inp', { read: ElementRef, static: true }]
172
172
  }] }); })();
173
173
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PoTextareaComponent, { className: "PoTextareaComponent", filePath: "lib/components/po-field/po-textarea/po-textarea.component.ts", lineNumber: 59 }); })();
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdGV4dGFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLXRleHRhcmVhL3BvLXRleHRhcmVhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby10ZXh0YXJlYS9wby10ZXh0YXJlYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7OztBQUV2RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQWtCSCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsdUJBQXVCO0lBU3BEO0lBUjRDLE9BQU8sQ0FBYTtJQUUxRSxFQUFFLEdBQUcsZUFBZSxJQUFJLEVBQUUsR0FBRyxDQUFDO0lBQzlCLGlCQUFpQixDQUFNO0lBQ3ZCLFVBQVUsR0FBWSxLQUFLLENBQUM7SUFFNUIsWUFDRSxFQUFxQixFQUNiLEVBQWM7UUFFdEIsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRkYsT0FBRSxHQUFGLEVBQUUsQ0FBWTtJQUd4QixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQkc7SUFDSCxLQUFLO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsT0FBTyxD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STtxQkFDWjtpQkFDRjsyRUFHcUQsT0FBTztrQkFBNUQsU0FBUzttQkFBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7O2tGQUR6QyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgZm9yd2FyZFJlZixcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IHV1aWQgfSBmcm9tICcuLi8uLi8uLi91dGlscy91dGlsJztcblxuaW1wb3J0IHsgUG9UZXh0YXJlYUJhc2VDb21wb25lbnQgfSBmcm9tICcuL3BvLXRleHRhcmVhLWJhc2UuY29tcG9uZW50JztcblxuLyoqXG4gKiBAZG9jc0V4dGVuZHMgUG9UZXh0YXJlYUJhc2VDb21wb25lbnRcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby10ZXh0YXJlYS1iYXNpY1wiIHRpdGxlPVwiUE8gVGV4dGFyZWEgQmFzaWNcIiA+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10ZXh0YXJlYS1iYXNpYy9zYW1wbGUtcG8tdGV4dGFyZWEtYmFzaWMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGV4dGFyZWEtYmFzaWMvc2FtcGxlLXBvLXRleHRhcmVhLWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRleHRhcmVhLWxhYnNcIiB0aXRsZT1cIlBPIFRleHRhcmVhIExhYnNcIiA+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10ZXh0YXJlYS1sYWJzL3NhbXBsZS1wby10ZXh0YXJlYS1sYWJzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRleHRhcmVhLWxhYnMvc2FtcGxlLXBvLXRleHRhcmVhLWxhYnMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGV4dGFyZWEtZW1haWxcIiB0aXRsZT1cIlBPIFRleHRhcmVhIC0gRW1haWxcIiA+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10ZXh0YXJlYS1lbWFpbC9zYW1wbGUtcG8tdGV4dGFyZWEtZW1haWwuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGV4dGFyZWEtZW1haWwvc2FtcGxlLXBvLXRleHRhcmVhLWVtYWlsLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRleHRhcmVhLWVtYWlsLXJlYWN0aXZlLWZvcm1cIiB0aXRsZT1cIlBPIFRleHRhcmVhIC0gRW1haWwgUmVhY3RpdmUgRm9ybVwiID5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRleHRhcmVhLWVtYWlsLXJlYWN0aXZlLWZvcm0vc2FtcGxlLXBvLXRleHRhcmVhLWVtYWlsLXJlYWN0aXZlLWZvcm0uY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGV4dGFyZWEtZW1haWwtcmVhY3RpdmUtZm9ybS9zYW1wbGUtcG8tdGV4dGFyZWEtZW1haWwtcmVhY3RpdmUtZm9ybS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncG8tdGV4dGFyZWEnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tdGV4dGFyZWEuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb1RleHRhcmVhQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUG9UZXh0YXJlYUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBQb1RleHRhcmVhQ29tcG9uZW50IGV4dGVuZHMgUG9UZXh0YXJlYUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZCgnaW5wJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgaW5wdXRFbDogRWxlbWVudFJlZjtcblxuICBpZCA9IGBwby10ZXh0YXJlYVske3V1aWQoKX1dYDtcbiAgdmFsdWVCZWZvcmVDaGFuZ2U6IGFueTtcbiAgZmlyZUNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmXG4gICkge1xuICAgIHN1cGVyKGNkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGdW7Dp8OjbyBxdWUgYXRyaWJ1aSBmb2NvIGFvIGNvbXBvbmVudGUuXG4gICAqXG4gICAqIFBhcmEgdXRpbGl6w6EtbGEgw6kgbmVjZXNzw6FyaW8gdGVyIGEgaW5zdMOibmNpYSBkbyBjb21wb25lbnRlIG5vIERPTSwgcG9kZW5kbyBzZXIgdXRpbGl6YWRvIG8gVmlld0NoaWxkIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICAgKlxuICAgKiBgYGBcbiAgICogaW1wb3J0IHsgUG9UZXh0YXJlYUNvbXBvbmVudCB9IGZyb20gJ0Bwby11aS9uZy1jb21wb25lbnRzJztcbiAgICpcbiAgICogLi4uXG4gICAqXG4gICAqIEBWaWV3Q2hpbGQoUG9UZXh0YXJlYUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgdGV4dGFyZWE6IFBvVGV4dGFyZWFDb21wb25lbnQ7XG4gICAqXG4gICAqIGZvY3VzVGV4dGFyZWEoKSB7XG4gICAqICAgdGhpcy50ZXh0YXJlYS5mb2N1cygpO1xuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5hdXRvRm9jdXMpIHtcbiAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBnZXRFcnJvclBhdHRlcm4oKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGRFcnJvck1lc3NhZ2UgJiYgdGhpcy5oYXNJbnZhbGlkQ2xhc3MoKSA/IHRoaXMuZmllbGRFcnJvck1lc3NhZ2UgOiAnJztcbiAgfVxuXG4gIGhhc0ludmFsaWRDbGFzcygpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbmctaW52YWxpZCcpICYmXG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCduZy1kaXJ0eScpICYmXG4gICAgICAhdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgJiZcbiAgICAgICh0aGlzLnJlcXVpcmVkIHx8IHRoaXMuaGFzVmFsaWRhdG9yUmVxdWlyZWQpXG4gICAgKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWVNb2RlbCh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5wdXRFbCkge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAvLyBTZSBmb3IgbyB2YWxvciBmb3IgdW5kZWZpbmVkLCBkZXZlIGxpbXBhciBvIGNhbXBvXG4gICAgICAgIHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEVtaXRlIGV2ZW50byBxdWFuZG8gbyBtb2RlbCDDqSBhdHVhbGl6YWRvLCBpbmNsdXNpdmUgYSBwcmltZWlyYSB2ZXpcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuY2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkTWF4TGVuZ3RoKG1heGxlbmd0aDogbnVtYmVyLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG1heGxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPiBtYXhsZW5ndGggPyB2YWx1ZS50b1N0cmluZygpLnN1YnN0cmluZygwLCBtYXhsZW5ndGgpIDogdmFsdWU7XG4gIH1cblxuICBldmVudE9uSW5wdXQoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy52YWxpZE1heExlbmd0aCh0aGlzLm1heGxlbmd0aCwgZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICB0aGlzLmNhbGxPbkNoYW5nZSh2YWx1ZSk7XG4gICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIGV2ZW50T25Gb2N1cygpIHtcbiAgICAvLyBBdHVhbGl6YSB2YWxvciBkYSB2YXJpw6F2ZWwgcXVlIHNlcsOhIHVzYWRhIHBhcmEgdmVyaWZpY2FyIHNlIG8gY2FtcG8gdGV2ZSBhbHRlcmHDp8Ojb1xuICAgIHRoaXMudmFsdWVCZWZvcmVDaGFuZ2UgPSB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZTtcblxuICAgIC8vIERpc3BhcmEgZXZlbnRvIHF1YW5kbyBvIHVzdcOhcmlvIGVudHJhciBubyBjYW1wb1xuICAgIC8vIEVzdGUgZXZlbnRvIHRhbWLDqW0gw6kgZGlzcGFyYWRvIHF1YW5kbyBvIGNhbXBvIGluaWNpYSBjb20gZm9jby5cbiAgICB0aGlzLmVudGVyLmVtaXQoKTtcbiAgfVxuXG4gIGV2ZW50T25CbHVyKCkge1xuICAgIHRoaXMub25Ub3VjaGVkPy4oKTtcbiAgICB0aGlzLmJsdXIuZW1pdCgpO1xuICAgIHRoaXMuY29udHJvbENoYW5nZUVtaXR0ZXIoKTtcbiAgfVxuXG4gIGNvbnRyb2xDaGFuZ2VFbWl0dGVyKCkge1xuICAgIGNvbnN0IGVsZW1lbnRWYWx1ZSA9IHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKGVsZW1lbnRWYWx1ZSAhPT0gdGhpcy52YWx1ZUJlZm9yZUNoYW5nZSkge1xuICAgICAgdGhpcy5jaGFuZ2UuZW1pdChlbGVtZW50VmFsdWUpO1xuICAgIH1cbiAgfVxufVxuIiwiPHBvLWZpZWxkLWNvbnRhaW5lclxuICBbcC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtwLWlkXT1cImlkXCJcbiAgW3AtbGFiZWxdPVwibGFiZWxcIlxuICBbcC1vcHRpb25hbF09XCJvcHRpb25hbFwiXG4gIFtwLXJlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgW3Atc2hvdy1yZXF1aXJlZF09XCJzaG93UmVxdWlyZWRcIlxuPlxuICA8ZGl2IGNsYXNzPVwicG8tZmllbGQtY29udGFpbmVyLWNvbnRlbnRcIj5cbiAgICA8dGV4dGFyZWFcbiAgICAgICNpbnBcbiAgICAgIGNsYXNzPVwicG8tdGV4dGFyZWFcIlxuICAgICAgKGJsdXIpPVwiZXZlbnRPbkJsdXIoKVwiXG4gICAgICAoZm9jdXMpPVwiZXZlbnRPbkZvY3VzKClcIlxuICAgICAgKGlucHV0KT1cImV2ZW50T25JbnB1dCgkZXZlbnQpXCJcbiAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW2lkXT1cImlkXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJkaXNhYmxlZCA/ICcnIDogcGxhY2Vob2xkZXJcIlxuICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICBbcm93c109XCJyb3dzXCJcbiAgICA+PC90ZXh0YXJlYT5cbiAgPC9kaXY+XG5cbiAgPHBvLWZpZWxkLWNvbnRhaW5lci1ib3R0b21cbiAgICBbcC1oZWxwXT1cImhlbHBcIlxuICAgIFtwLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbcC1lcnJvci1wYXR0ZXJuXT1cImdldEVycm9yUGF0dGVybigpXCJcbiAgPjwvcG8tZmllbGQtY29udGFpbmVyLWJvdHRvbT5cbjwvcG8tZmllbGQtY29udGFpbmVyPlxuIl19
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdGV4dGFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLXRleHRhcmVhL3BvLXRleHRhcmVhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby10ZXh0YXJlYS9wby10ZXh0YXJlYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7OztBQUV2RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQWtCSCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsdUJBQXVCO0lBU3BEO0lBUjRDLE9BQU8sQ0FBYTtJQUUxRSxFQUFFLEdBQUcsZUFBZSxJQUFJLEVBQUUsR0FBRyxDQUFDO0lBQzlCLGlCQUFpQixDQUFNO0lBQ3ZCLFVBQVUsR0FBWSxLQUFLLENBQUM7SUFFNUIsWUFDRSxFQUFxQixFQUNiLEVBQWM7UUFFdEIsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRkYsT0FBRSxHQUFGLEVBQUUsQ0FBWTtJQUd4QixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQkc7SUFDSCxLQUFLO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsT0FBTyxD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QUssRUFBRSxJQUFJO3FCQUNaO2lCQUNGOzJFQUdxRCxPQUFPO2tCQUE1RCxTQUFTO21CQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTs7a0ZBRHpDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgdXVpZCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuXG5pbXBvcnQgeyBQb1RleHRhcmVhQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vcG8tdGV4dGFyZWEtYmFzZS5jb21wb25lbnQnO1xuXG4vKipcbiAqIEBkb2NzRXh0ZW5kcyBQb1RleHRhcmVhQmFzZUNvbXBvbmVudFxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRleHRhcmVhLWJhc2ljXCIgdGl0bGU9XCJQTyBUZXh0YXJlYSBCYXNpY1wiID5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRleHRhcmVhLWJhc2ljL3NhbXBsZS1wby10ZXh0YXJlYS1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10ZXh0YXJlYS1iYXNpYy9zYW1wbGUtcG8tdGV4dGFyZWEtYmFzaWMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGV4dGFyZWEtbGFic1wiIHRpdGxlPVwiUE8gVGV4dGFyZWEgTGFic1wiID5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRleHRhcmVhLWxhYnMvc2FtcGxlLXBvLXRleHRhcmVhLWxhYnMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGV4dGFyZWEtbGFicy9zYW1wbGUtcG8tdGV4dGFyZWEtbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby10ZXh0YXJlYS1lbWFpbFwiIHRpdGxlPVwiUE8gVGV4dGFyZWEgLSBFbWFpbFwiID5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRleHRhcmVhLWVtYWlsL3NhbXBsZS1wby10ZXh0YXJlYS1lbWFpbC5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10ZXh0YXJlYS1lbWFpbC9zYW1wbGUtcG8tdGV4dGFyZWEtZW1haWwuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGV4dGFyZWEtZW1haWwtcmVhY3RpdmUtZm9ybVwiIHRpdGxlPVwiUE8gVGV4dGFyZWEgLSBFbWFpbCBSZWFjdGl2ZSBGb3JtXCIgPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGV4dGFyZWEtZW1haWwtcmVhY3RpdmUtZm9ybS9zYW1wbGUtcG8tdGV4dGFyZWEtZW1haWwtcmVhY3RpdmUtZm9ybS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10ZXh0YXJlYS1lbWFpbC1yZWFjdGl2ZS1mb3JtL3NhbXBsZS1wby10ZXh0YXJlYS1lbWFpbC1yZWFjdGl2ZS1mb3JtLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby10ZXh0YXJlYScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby10ZXh0YXJlYS5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBvVGV4dGFyZWFDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb1RleHRhcmVhQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFBvVGV4dGFyZWFDb21wb25lbnQgZXh0ZW5kcyBQb1RleHRhcmVhQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBAVmlld0NoaWxkKCdpbnAnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBpbnB1dEVsOiBFbGVtZW50UmVmO1xuXG4gIGlkID0gYHBvLXRleHRhcmVhWyR7dXVpZCgpfV1gO1xuICB2YWx1ZUJlZm9yZUNoYW5nZTogYW55O1xuICBmaXJlQ2hhbmdlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWZcbiAgKSB7XG4gICAgc3VwZXIoY2QpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZ1bsOnw6NvIHF1ZSBhdHJpYnVpIGZvY28gYW8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogUGFyYSB1dGlsaXrDoS1sYSDDqSBuZWNlc3PDoXJpbyB0ZXIgYSBpbnN0w6JuY2lhIGRvIGNvbXBvbmVudGUgbm8gRE9NLCBwb2RlbmRvIHNlciB1dGlsaXphZG8gbyBWaWV3Q2hpbGQgZGEgc2VndWludGUgZm9ybWE6XG4gICAqXG4gICAqIGBgYFxuICAgKiBpbXBvcnQgeyBQb1RleHRhcmVhQ29tcG9uZW50IH0gZnJvbSAnQHBvLXVpL25nLWNvbXBvbmVudHMnO1xuICAgKlxuICAgKiAuLi5cbiAgICpcbiAgICogQFZpZXdDaGlsZChQb1RleHRhcmVhQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSB0ZXh0YXJlYTogUG9UZXh0YXJlYUNvbXBvbmVudDtcbiAgICpcbiAgICogZm9jdXNUZXh0YXJlYSgpIHtcbiAgICogICB0aGlzLnRleHRhcmVhLmZvY3VzKCk7XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBmb2N1cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmF1dG9Gb2N1cykge1xuICAgICAgdGhpcy5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIGdldEVycm9yUGF0dGVybigpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZEVycm9yTWVzc2FnZSAmJiB0aGlzLmhhc0ludmFsaWRDbGFzcygpID8gdGhpcy5maWVsZEVycm9yTWVzc2FnZSA6ICcnO1xuICB9XG5cbiAgaGFzSW52YWxpZENsYXNzKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCduZy1pbnZhbGlkJykgJiZcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ25nLWRpcnR5JykgJiZcbiAgICAgICF0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZSAmJlxuICAgICAgKHRoaXMucmVxdWlyZWQgfHwgdGhpcy5oYXNWYWxpZGF0b3JSZXF1aXJlZClcbiAgICApO1xuICB9XG5cbiAgd3JpdGVWYWx1ZU1vZGVsKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnB1dEVsKSB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIC8vIFNlIGZvciBvIHZhbG9yIGZvciB1bmRlZmluZWQsIGRldmUgbGltcGFyIG8gY2FtcG9cbiAgICAgICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRW1pdGUgZXZlbnRvIHF1YW5kbyBvIG1vZGVsIMOpIGF0dWFsaXphZG8sIGluY2x1c2l2ZSBhIHByaW1laXJhIHZlelxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5jaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRNYXhMZW5ndGgobWF4bGVuZ3RoOiBudW1iZXIsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbWF4bGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heGxlbmd0aCA/IHZhbHVlLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDAsIG1heGxlbmd0aCkgOiB2YWx1ZTtcbiAgfVxuXG4gIGV2ZW50T25JbnB1dChldmVudDogYW55KSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnZhbGlkTWF4TGVuZ3RoKHRoaXMubWF4bGVuZ3RoLCBldmVudC50YXJnZXQudmFsdWUpO1xuICAgIHRoaXMuY2FsbE9uQ2hhbmdlKHZhbHVlKTtcbiAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgZXZlbnRPbkZvY3VzKCkge1xuICAgIC8vIEF0dWFsaXphIHZhbG9yIGRhIHZhcmnDoXZlbCBxdWUgc2Vyw6EgdXNhZGEgcGFyYSB2ZXJpZmljYXIgc2UgbyBjYW1wbyB0ZXZlIGFsdGVyYcOnw6NvXG4gICAgdGhpcy52YWx1ZUJlZm9yZUNoYW5nZSA9IHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LnZhbHVlO1xuXG4gICAgLy8gRGlzcGFyYSBldmVudG8gcXVhbmRvIG8gdXN1w6FyaW8gZW50cmFyIG5vIGNhbXBvXG4gICAgLy8gRXN0ZSBldmVudG8gdGFtYsOpbSDDqSBkaXNwYXJhZG8gcXVhbmRvIG8gY2FtcG8gaW5pY2lhIGNvbSBmb2NvLlxuICAgIHRoaXMuZW50ZXIuZW1pdCgpO1xuICB9XG5cbiAgZXZlbnRPbkJsdXIoKSB7XG4gICAgdGhpcy5vblRvdWNoZWQ/LigpO1xuICAgIHRoaXMuYmx1ci5lbWl0KCk7XG4gICAgdGhpcy5jb250cm9sQ2hhbmdlRW1pdHRlcigpO1xuICB9XG5cbiAgY29udHJvbENoYW5nZUVtaXR0ZXIoKSB7XG4gICAgY29uc3QgZWxlbWVudFZhbHVlID0gdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG5cbiAgICBpZiAoZWxlbWVudFZhbHVlICE9PSB0aGlzLnZhbHVlQmVmb3JlQ2hhbmdlKSB7XG4gICAgICB0aGlzLmNoYW5nZS5lbWl0KGVsZW1lbnRWYWx1ZSk7XG4gICAgfVxuICB9XG59XG4iLCI8cG8tZmllbGQtY29udGFpbmVyXG4gIFtwLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgW3AtaWRdPVwiaWRcIlxuICBbcC1sYWJlbF09XCJsYWJlbFwiXG4gIFtwLW9wdGlvbmFsXT1cIm9wdGlvbmFsXCJcbiAgW3AtcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICBbcC1zaG93LXJlcXVpcmVkXT1cInNob3dSZXF1aXJlZFwiXG4+XG4gIDxkaXYgY2xhc3M9XCJwby1maWVsZC1jb250YWluZXItY29udGVudFwiPlxuICAgIDx0ZXh0YXJlYVxuICAgICAgI2lucFxuICAgICAgY2xhc3M9XCJwby10ZXh0YXJlYVwiXG4gICAgICAoYmx1cik9XCJldmVudE9uQmx1cigpXCJcbiAgICAgIChmb2N1cyk9XCJldmVudE9uRm9jdXMoKVwiXG4gICAgICAoaW5wdXQpPVwiZXZlbnRPbklucHV0KCRldmVudClcIlxuICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbaWRdPVwiaWRcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cImRpc2FibGVkID8gJycgOiBwbGFjZWhvbGRlclwiXG4gICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgIFtyb3dzXT1cInJvd3NcIlxuICAgID48L3RleHRhcmVhPlxuICA8L2Rpdj5cblxuICA8cG8tZmllbGQtY29udGFpbmVyLWJvdHRvbVxuICAgIFtwLWhlbHBdPVwiaGVscFwiXG4gICAgW3AtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtwLWVycm9yLXBhdHRlcm5dPVwiZ2V0RXJyb3JQYXR0ZXJuKClcIlxuICAgIFtwLWVycm9yLWxpbWl0XT1cImVycm9yTGltaXRcIlxuICA+PC9wby1maWVsZC1jb250YWluZXItYm90dG9tPlxuPC9wby1maWVsZC1jb250YWluZXI+XG4iXX0=