@fundamental-ngx/core 0.43.21 → 0.43.23

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 (32) hide show
  1. package/button/base-button.d.ts +2 -2
  2. package/button/button.component.d.ts +2 -1
  3. package/esm2020/button/base-button.mjs +4 -2
  4. package/esm2020/button/button.component.mjs +7 -6
  5. package/esm2020/combobox/combobox.component.mjs +2 -2
  6. package/esm2020/multi-combobox/multi-announcer/multi-announcer.directive.mjs +2 -2
  7. package/esm2020/overflow-layout/overflow-layout.service.mjs +19 -15
  8. package/esm2020/segmented-button/segmented-button.component.mjs +23 -12
  9. package/fesm2015/fundamental-ngx-core-button.mjs +9 -6
  10. package/fesm2015/fundamental-ngx-core-button.mjs.map +1 -1
  11. package/fesm2015/fundamental-ngx-core-combobox.mjs +1 -1
  12. package/fesm2015/fundamental-ngx-core-combobox.mjs.map +1 -1
  13. package/fesm2015/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  14. package/fesm2015/fundamental-ngx-core-overflow-layout.mjs +18 -14
  15. package/fesm2015/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  16. package/fesm2015/fundamental-ngx-core-segmented-button.mjs +24 -11
  17. package/fesm2015/fundamental-ngx-core-segmented-button.mjs.map +1 -1
  18. package/fesm2020/fundamental-ngx-core-button.mjs +9 -6
  19. package/fesm2020/fundamental-ngx-core-button.mjs.map +1 -1
  20. package/fesm2020/fundamental-ngx-core-combobox.mjs +1 -1
  21. package/fesm2020/fundamental-ngx-core-combobox.mjs.map +1 -1
  22. package/fesm2020/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  23. package/fesm2020/fundamental-ngx-core-overflow-layout.mjs +18 -14
  24. package/fesm2020/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  25. package/fesm2020/fundamental-ngx-core-segmented-button.mjs +22 -11
  26. package/fesm2020/fundamental-ngx-core-segmented-button.mjs.map +1 -1
  27. package/fundamental-ngx-core-v0.43.23.tgz +0 -0
  28. package/overflow-layout/overflow-layout.service.d.ts +4 -4
  29. package/package.json +3 -3
  30. package/schematics/add-dependencies/index.js +4 -4
  31. package/segmented-button/segmented-button.component.d.ts +6 -4
  32. package/fundamental-ngx-core-v0.43.21.tgz +0 -0
@@ -439,7 +439,7 @@ export class ComboboxComponent {
439
439
  }
440
440
  /** @hidden */
441
441
  _defaultDisplay(str) {
442
- return str;
442
+ return `${str}`;
443
443
  }
444
444
  /** @hidden */
445
445
  _defaultFilter(contentArray, searchTerm) {
@@ -660,4 +660,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
660
660
  type: ViewChild,
661
661
  args: ['listTemplate']
662
662
  }] } });
663
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY29tYm9ib3gvY29tYm9ib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY29tYm9ib3gvY29tYm9ib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFDSCxTQUFTLEVBQ1QsT0FBTyxFQUNQLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUNMLEtBQUssRUFDTCxHQUFHLEVBQ0gsUUFBUSxFQUNYLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBSUwsTUFBTSxFQUNOLFNBQVMsRUFFVCxXQUFXLEVBQ1gsU0FBUyxFQUNULGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsVUFBVSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFFSCx1QkFBdUIsRUFFdkIsT0FBTyxFQUVWLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFtQix1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxhQUFhLEVBQXdCLE1BQU0sNEJBQTRCLENBQUM7QUFDNUcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0s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OlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZyAqL1xuaW1wb3J0IHtcbiAgICBCQUNLU1BBQ0UsXG4gICAgQ09OVFJPTCxcbiAgICBET1dOX0FSUk9XLFxuICAgIEVOVEVSLFxuICAgIEVTQ0FQRSxcbiAgICBMRUZUX0FSUk9XLFxuICAgIFJJR0hUX0FSUk9XLFxuICAgIFNISUZULFxuICAgIFNQQUNFLFxuICAgIFRBQixcbiAgICBVUF9BUlJPV1xufSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGZvcndhcmRSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgICBBdXRvQ29tcGxldGVFdmVudCxcbiAgICBEeW5hbWljQ29tcG9uZW50U2VydmljZSxcbiAgICBGb2N1c0VzY2FwZURpcmVjdGlvbixcbiAgICBLZXlVdGlsLFxuICAgIE51bGxhYmxlXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEZvcm1JdGVtQ29udHJvbCwgcmVnaXN0ZXJGb3JtSXRlbUNvbnRyb2wgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZm9ybSc7XG5pbXBvcnQgeyBJbnB1dEdyb3VwQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2lucHV0LWdyb3VwJztcbmltcG9ydCB7IEZEX0xJU1RfTUVTU0FHRV9ESVJFQ1RJVkUsIExpc3RDb21wb25lbnQsIExpc3RNZXNzYWdlRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2xpc3QnO1xuaW1wb3J0IHsgTWVudUtleWJvYXJkU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9tZW51JztcbmltcG9ydCB7IE1vYmlsZU1vZGVDb25maWcgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbW9iaWxlLW1vZGUnO1xuaW1wb3J0IHsgUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9wb3BvdmVyJztcbmltcG9ydCB7IFBvcG92ZXJGaWxsTW9kZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zaGFyZWQnO1xuXG5pbXBvcnQgeyBPdmVybGF5LCBSZXBvc2l0aW9uU2Nyb2xsU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBGb3JtU3RhdGVzLCBTaW5nbGVEcm9wZG93blZhbHVlQ29udHJvbCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL2Zvcm1zJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IENvbWJvYm94SXRlbSB9IGZyb20gJy4vY29tYm9ib3gtaXRlbSc7XG5pbXBvcnQgeyBDb21ib2JveE1vYmlsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tYm9ib3gtbW9iaWxlL2NvbWJvYm94LW1vYmlsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tYm9ib3hNb2JpbGVNb2R1bGUgfSBmcm9tICcuL2NvbWJvYm94LW1vYmlsZS9jb21ib2JveC1tb2JpbGUubW9kdWxlJztcbmltcG9ydCB7IENPTUJPQk9YX0NPTVBPTkVOVCwgQ29tYm9ib3hJbnRlcmZhY2UgfSBmcm9tICcuL2NvbWJvYm94LmludGVyZmFjZSc7XG5pbXBvcnQgeyBHcm91cEZ1bmN0aW9uIH0gZnJvbSAnLi9saXN0LWdyb3VwLnBpcGUnO1xuaW1wb3J0IHsgRkRfQ09NQk9CT1hfQ09NUE9ORU5UIH0gZnJvbSAnLi90b2tlbnMnO1xuXG5sZXQgY29tYm9ib3hVbmlxdWVJZCA9IDA7XG5cbi8qKlxuICogQWxsb3dzIHVzZXJzIHRvIGZpbHRlciB0aHJvdWdoIHJlc3VsdHMgYW5kIHNlbGVjdCBhIHZhbHVlLlxuICpcbiAqIFN1cHBvcnRzIEFuZ3VsYXIgRm9ybXMuXG4gKiBgYGBodG1sXG4gKiA8ZmQtY29tYm9ib3hcbiAqICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXJtXCJcbiAqICAgICAgW2Ryb3Bkb3duVmFsdWVzXT1cImRyb3Bkb3duVmFsdWVzXCJcbiAqICAgICAgcGxhY2Vob2xkZXI9XCJUeXBlIHNvbWUgdGV4dC4uLlwiPlxuICogPC9mZC1jb21ib2JveD5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLWNvbWJvYm94JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29tYm9ib3guY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NvbWJvYm94LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ29tYm9ib3hDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgcmVnaXN0ZXJGb3JtSXRlbUNvbnRyb2woQ29tYm9ib3hDb21wb25lbnQpLFxuICAgICAgICBNZW51S2V5Ym9hcmRTZXJ2aWNlLFxuICAgICAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKCksXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEX0NPTUJPQk9YX0NPTVBPTkVOVCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBDb21ib2JveENvbXBvbmVudFxuICAgICAgICB9XG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3MuZmQtY29tYm9ib3gtY3VzdG9tLWNsYXNzXSc6ICd0cnVlJyxcbiAgICAgICAgJ1tjbGFzcy5mZC1jb21ib2JveC1pbnB1dF0nOiAndHJ1ZScsXG4gICAgICAgICdbY2xhc3MuZmQtY29tYm9ib3gtY3VzdG9tLWNsYXNzLS1tb2JpbGVdJzogJ21vYmlsZSdcbiAgICB9LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQ29tYm9ib3hDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzXG4gICAgICAgIENvbWJvYm94SW50ZXJmYWNlLFxuICAgICAgICBTaW5nbGVEcm9wZG93blZhbHVlQ29udHJvbCxcbiAgICAgICAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgICAgIE9uSW5pdCxcbiAgICAgICAgT25DaGFuZ2VzLFxuICAgICAgICBBZnRlclZpZXdJbml0LFxuICAgICAgICBPbkRlc3Ryb3ksXG4gICAgICAgIEZvcm1JdGVtQ29udHJvbFxue1xuICAgIC8qKiBJZCBmb3IgdGhlIENvbWJvYm94LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29tYm9ib3hJZCA9IGBmZC1jb21ib2JveC0ke2NvbWJvYm94VW5pcXVlSWQrK31gO1xuXG4gICAgLyoqIElkIGF0dHJpYnV0ZSBmb3IgaW5wdXQgZWxlbWVudCBpbnNpZGUgQ29tYm9ib3ggY29tcG9uZW50ICovXG4gICAgQElucHV0KClcbiAgICBpbnB1dElkID0gJyc7XG5cbiAgICAvKiogQXJpYS1sYWJlbCBmb3IgQ29tYm9ib3guICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWw6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogQXJpYS1MYWJlbGxlZGJ5IGZvciBlbGVtZW50IGRlc2NyaWJpbmcgQ29tYm9ib3guICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWxsZWRCeTogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBJZiBpdCBpcyBtYW5kYXRvcnkgZmllbGQgKi9cbiAgICBASW5wdXQoKVxuICAgIHJlcXVpcmVkID0gZmFsc2U7XG5cbiAgICAvKiogVmFsdWVzIHRvIGJlIGZpbHRlcmVkIGluIHRoZSBzZWFyY2ggaW5wdXQuICovXG4gICAgQElucHV0KClcbiAgICBkcm9wZG93blZhbHVlczogYW55W10gPSBbXTtcblxuICAgIC8qKiBGaWx0ZXIgZnVuY3Rpb24uIEFjY2VwdHMgYW4gYXJyYXkgb2Ygb2JqZWN0cyBhbmQgYSBzZWFyY2ggdGVybSBhcyBhcmd1bWVudHNcbiAgICAgKiBhbmQgcmV0dXJucyBhIHN0cmluZy4gU2VlIHNlYXJjaCBpbnB1dCBleGFtcGxlcyBmb3IgZGV0YWlscy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGZpbHRlckZuID0gdGhpcy5fZGVmYXVsdEZpbHRlcjtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBzZWFyY2ggaW5wdXQgaXMgZGlzYWJsZWQuICoqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICAvKiogUGxhY2Vob2xkZXIgb2YgdGhlIHNlYXJjaCBpbnB1dC4gKiovXG4gICAgQElucHV0KClcbiAgICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgQ29tYm9ib3ggaXMgYSBTZWFyY2ggRmllbGRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGlzU2VhcmNoID0gZmFsc2U7XG5cbiAgICAvKiogSWNvbiB0byBkaXNwbGF5IGluIHRoZSByaWdodC1zaWRlIGJ1dHRvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIGdseXBoID0gJ25hdmlnYXRpb24tZG93bi1hcnJvdyc7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHNob3cgdGhlIGNsZWFyIHNlYXJjaCB0ZXJtIGJ1dHRvbiB3aGVuIHRoZSBDb21ib2JveCBpcyBhIFNlYXJjaCBGaWVsZFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0NsZWFyQnV0dG9uID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqICBUaGUgdHJpZ2dlciBldmVudHMgdGhhdCB3aWxsIG9wZW4vY2xvc2UgdGhlIG9wdGlvbnMgcG9wb3Zlci5cbiAgICAgKiAgQWNjZXB0cyBhbnkgW0hUTUwgRE9NIEV2ZW50c10oaHR0cHM6Ly93d3cudzNzY2hvb2xzLmNvbS9qc3JlZi9kb21fb2JqX2V2ZW50LmFzcCkuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB0cmlnZ2Vyczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBjb21ib2JveCBzaG91bGQgY2xvc2UsIHdoZW4gYSBjbGljayBpcyBwZXJmb3JtZWQgb3V0c2lkZSBpdHMgYm91bmRhcmllcy4gVHJ1ZSBieSBkZWZhdWx0ICovXG4gICAgQElucHV0KClcbiAgICBjbG9zZU9uT3V0c2lkZUNsaWNrID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGNvbWJvYm94IHNob3VsZCBvcGVuLCB3aGVuIGFueSBrZXkgaXMgcHJlc3NlZCBpbiBpbnB1dCAoZXhjZXB0IEVzY2FwZSwgU3BhY2UsIEVudGVyKS4gVHJ1ZSBieSBkZWZhdWx0XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBvcGVuT25LZXlib2FyZEV2ZW50ID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqICBUaGUgc3RhdGUgb2YgdGhlIGZvcm0gY29udHJvbCAtIGFwcGxpZXMgY3NzIGNsYXNzZXMuXG4gICAgICogIENhbiBiZSBgc3VjY2Vzc2AsIGBlcnJvcmAsIGB3YXJuaW5nYCwgYGluZm9ybWF0aW9uYCBvciBibGFuayBmb3IgZGVmYXVsdC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHN0YXRlPzogRm9ybVN0YXRlcztcblxuICAgIC8qKlxuICAgICAqIFRoZSB0ZW1wbGF0ZSB3aXRoIHdoaWNoIHRvIGRpc3BsYXkgdGhlIGluZGl2aWR1YWwgbGlzdGVkIGl0ZW1zLlxuICAgICAqIFVzZSBpdCBieSBwYXNzaW5nIGFuIG5nLXRlbXBsYXRlIHdpdGggaW1wbGljaXQgY29udGVudC4gU2VlIGV4YW1wbGVzIGZvciBtb3JlIGluZm8uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiB1c2VkIHRvIGhhbmRsZSBncm91cGluZyBvZiBpdGVtcy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdyb3VwRm46IEdyb3VwRnVuY3Rpb247XG5cbiAgICAvKiogTWF4IGhlaWdodCBvZiB0aGUgcG9wb3Zlci4gQW55IG92ZXJmbG93aW5nIGVsZW1lbnRzIHdpbGwgYmUgYWNjZXNzaWJsZSB0aHJvdWdoIHNjcm9sbGluZy4gKi9cbiAgICBASW5wdXQoKVxuICAgIG1heEhlaWdodCA9ICc1MHZoJztcblxuICAgIC8qKiBTZWFyY2ggZnVuY3Rpb24gdG8gZXhlY3V0ZSB3aGVuIHRoZSBFbnRlciBrZXkgaXMgcHJlc3NlZCBvbiB0aGUgbWFpbiBpbnB1dC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNlYXJjaEZuOiAoKSA9PiB2b2lkO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIG1hdGNoaW5nIHN0cmluZyBzaG91bGQgYmUgaGlnaGxpZ2h0ZWQgZHVyaW5nIGZpbHRyYXRpb24uICovXG4gICAgQElucHV0KClcbiAgICBoaWdobGlnaHRpbmcgPSB0cnVlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIG1hdGNoaW5nIHN0cmluZyBzaG91bGQgYmUgaGlnaGxpZ2h0ZWQgYWZ0ZXIgY29tYm9ib3ggdmFsdWUgaXMgc2VsZWN0ZWQuICovXG4gICAgZmlsdGVySGlnaGxpZ2h0ID0gdHJ1ZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBwb3BvdmVyIHNob3VsZCBjbG9zZSB3aGVuIGEgdXNlciBzZWxlY3RzIGEgcmVzdWx0LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2xvc2VPblNlbGVjdCA9IHRydWU7XG5cbiAgICAvKiogV2hldGhlciB0aGUgaW5wdXQgZmllbGQgc2hvdWxkIGJlIHBvcHVsYXRlZCB3aXRoIHRoZSByZXN1bHQgcGlja2VkIGJ5IHRoZSB1c2VyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmlsbE9uU2VsZWN0ID0gdHJ1ZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBhdXRvY29tcGxldGUgc2hvdWxkIGJlIGVuYWJsZWQ7IEVuYWJsZWQgYnkgZGVmYXVsdCAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXV0b0NvbXBsZXRlID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFByZXNldCBvcHRpb25zIGZvciB0aGUgU2VsZWN0IGJvZHkgd2lkdGgsIHdoYXRldmVyIGlzIGNob3NlbiwgdGhlIGJvZHkgaGFzIGEgNjAwcHggbGltaXQuXG4gICAgICogKiBgYXQtbGVhc3RgIHdpbGwgYXBwbHkgYSBtaW5pbXVtIHdpZHRoIHRvIHRoZSBib2R5IGVxdWl2YWxlbnQgdG8gdGhlIHdpZHRoIG9mIHRoZSBjb250cm9sLiAtIERlZmF1bHRcbiAgICAgKiAqIGBlcXVhbGAgd2lsbCBhcHBseSBhIHdpZHRoIHRvIHRoZSBib2R5IGVxdWl2YWxlbnQgdG8gdGhlIHdpZHRoIG9mIHRoZSBjb250cm9sLlxuICAgICAqICogJ2ZpdC1jb250ZW50JyB3aWxsIGFwcGx5IHdpZHRoIG5lZWRlZCB0byBwcm9wZXJseSBkaXNwbGF5IGl0ZW1zIGluc2lkZSwgaW5kZXBlbmRlbnQgb2YgY29udHJvbC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZpbGxDb250cm9sTW9kZTogUG9wb3ZlckZpbGxNb2RlID0gJ2F0LWxlYXN0JztcblxuICAgIC8qKiBEZWZpbmVzIGlmIGNvbWJvYm94IHNob3VsZCBiZWhhdmUgc2FtZSBhcyBkcm9wZG93bi4gV2hlbiBpdCdzIGVuYWJsZWQgd3JpdGluZyBpbnNpZGUgdGV4dCBpbnB1dCB3b24ndFxuICAgICAqIHRyaWdnZXIgb25DaGFuZ2UgZnVuY3Rpb24sIHVudGlsIGl0IG1hdGNoZXMgb25lIG9mIGRpc3BsYXllZCBkcm9wZG93biB2YWx1ZXMuIEFsc28gY29tbXVuaWNhdGluZyB3aXRoIGNvbWJvYm94XG4gICAgICogY2FuIGJlIGFjaGlldmVkIG9ubHkgYnkgb2JqZWN0cyB3aXRoIHNhbWUgdHlwZSBhcyBkcm9wZG93blZhbHVlICovXG4gICAgQElucHV0KClcbiAgICBjb21tdW5pY2F0ZUJ5T2JqZWN0ID0gZmFsc2U7XG5cbiAgICAvKiogRGlzcGxheSBmdW5jdGlvbi4gQWNjZXB0cyBhbiBvYmplY3Qgb2YgdGhlIHNhbWUgdHlwZSBhcyB0aGVcbiAgICAgKiBpdGVtcyBwYXNzZWQgdG8gZHJvcGRvd25WYWx1ZXMgYXMgYXJndW1lbnQsIGFuZCBvdXRwdXRzIGEgc3RyaW5nLlxuICAgICAqIEFuIGFycm93IGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGFjY2VzcyB0aGUgKnRoaXMqIGtleXdvcmQgaW4gdGhlIGNhbGxpbmcgY29tcG9uZW50LlxuICAgICAqIFNlZSBzZWFyY2ggaW5wdXQgZXhhbXBsZXMgZm9yIGRldGFpbHMuICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5Rm4gPSB0aGlzLl9kZWZhdWx0RGlzcGxheTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgQWRkT24gQnV0dG9uIHNob3VsZCBiZSBmb2N1c2FibGVcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYnV0dG9uRm9jdXNhYmxlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIGNsZWFyIGJ1dHRvbiBzaG91bGQgYmUgZm9jdXNhYmxlLlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGNsZWFyQnV0dG9uRm9jdXNhYmxlID0gdHJ1ZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBjb21ib2JveCBpcyByZWFkb25seS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHJlYWRPbmx5ID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0aGUgY29tYm9ib3ggc2hvdWxkIGJlIGJ1aWx0IG9uIG1vYmlsZSBtb2RlICovXG4gICAgQElucHV0KClcbiAgICBtb2JpbGUgPSBmYWxzZTtcblxuICAgIC8qKiBNdWx0aSBJbnB1dCBNb2JpbGUgQ29uZmlndXJhdGlvbiwgaXQncyBhcHBsaWVkIG9ubHksIHdoZW4gbW9iaWxlIGlzIGVuYWJsZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZUNvbmZpZzogTW9iaWxlTW9kZUNvbmZpZztcblxuICAgIC8qKiBXaGV0aGVyIHRvIGRpc3BsYXkgdGhlIGFkZG9uIGJ1dHRvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dEcm9wZG93bkJ1dHRvbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHJldHVybiByZXN1bHRzIHdoZXJlIHRoZSBpbnB1dCBtYXRjaGVzIHRoZSBlbnRpcmUgc3RyaW5nLiBCeSBkZWZhdWx0LCBvbmx5IHJlc3VsdHMgdGhhdCBzdGFydFxuICAgICAqIHdpdGggdGhlIGlucHV0IHNlYXJjaCB0ZXJtIHdpbGwgYmUgcmV0dXJuZWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBpbmNsdWRlcyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHRvb2x0aXAgZm9yIHRoZSBtdWx0aS1pbnB1dCBpY29uLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGl0bGU6IHN0cmluZztcblxuICAgIC8qKiBXaGV0aGVyIGxpc3QgaXRlbSBvcHRpb25zIHNob3VsZCBiZSByZW5kZXJlZCBhcyBieWxpbmUuICovXG4gICAgQElucHV0KClcbiAgICBieWxpbmUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEFjdGlvbiB0byBwZXJmb3JtIHdoZW4gdXNlciBzaGlmdHMgZm9jdXMgZnJvbSB0aGUgZHJvcGRvd24uXG4gICAgICogLSBgY2xvc2VgIHdpbGwgY2xvc2UgdGhlIGRyb3Bkb3duIHByZXNlcnZpbmcgcHJldmlvdXNseSBzZWxlY3RlZCB2YWx1ZS5cbiAgICAgKiAtIGBjbG9zZUFuZFNlbGVjdGAgd2lsbCBjbG9zZSB0aGUgZHJvcGRvd24gYW5kIHNlbGVjdCBsYXN0IGZvY3VzZWQgZHJvcGRvd24gaXRlbS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHRhYk91dFN0cmF0ZWd5OiAnY2xvc2UnIHwgJ2Nsb3NlQW5kU2VsZWN0JyA9ICdjbG9zZUFuZFNlbGVjdCc7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGFuIGl0ZW0gaXMgY2xpY2tlZC4gVXNlICokZXZlbnQqIHRvIHJldHJpZXZlIGl0LiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGl0ZW1DbGlja2VkOiBFdmVudEVtaXR0ZXI8Q29tYm9ib3hJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXI8Q29tYm9ib3hJdGVtPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQsIHdoZW4gdGhlIGNvbWJvYm94J3MgcG9wb3ZlciBib2R5IGlzIG9wZW5lZCBvciBjbG9zZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBvcGVuQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCB0ZXh0IGNoYW5nZXMuICovXG4gICAgQE91dHB1dCgpXG4gICAgaW5wdXRUZXh0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKExpc3RDb21wb25lbnQpXG4gICAgbGlzdENvbXBvbmVudDogTGlzdENvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXRFbGVtZW50JylcbiAgICBzZWFyY2hJbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoUG9wb3ZlckNvbXBvbmVudClcbiAgICBwb3BvdmVyQ29tcG9uZW50OiBQb3BvdmVyQ29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKElucHV0R3JvdXBDb21wb25lbnQpXG4gICAgaW5wdXRHcm91cDogSW5wdXRHcm91cENvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihGRF9MSVNUX01FU1NBR0VfRElSRUNUSVZFKVxuICAgIGxpc3RNZXNzYWdlczogUXVlcnlMaXN0PExpc3RNZXNzYWdlRGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnY29udHJvbFRlbXBsYXRlJylcbiAgICBjb250cm9sVGVtcGxhdGU6IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnbGlzdFRlbXBsYXRlJylcbiAgICBsaXN0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKiBLZXlzLCB0aGF0IHdvbid0IHRyaWdnZXIgdGhlIHBvcG92ZXIncyBvcGVuIHN0YXRlLCB3aGVuIGRpc3BhdGNoZWQgb24gc2VhcmNoIGlucHV0ICovXG4gICAgcmVhZG9ubHkgbm9uT3BlbmluZ0tleXM6IG51bWJlcltdID0gW1xuICAgICAgICBFU0NBUEUsXG4gICAgICAgIEVOVEVSLFxuICAgICAgICBMRUZUX0FSUk9XLFxuICAgICAgICBSSUdIVF9BUlJPVyxcbiAgICAgICAgRE9XTl9BUlJPVyxcbiAgICAgICAgVVBfQVJST1csXG4gICAgICAgIENPTlRST0wsXG4gICAgICAgIFRBQixcbiAgICAgICAgU0hJRlRcbiAgICBdO1xuXG4gICAgLyoqIEtleXMsIHRoYXQgd2lsbCBjbG9zZSBwb3BvdmVyJ3MgYm9keSwgd2hlbiBkaXNwYXRjaGVkIG9uIHNlYXJjaCBpbnB1dCAqL1xuICAgIHJlYWRvbmx5IGNsb3NpbmdLZXlzOiBudW1iZXJbXSA9IFtFU0NBUEVdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfcmVwb3NpdGlvblNjcm9sbFN0cmF0ZWd5OiBSZXBvc2l0aW9uU2Nyb2xsU3RyYXRlZ3k7XG5cbiAgICAvKiogV2hldGhlciB0aGUgY29tYm9ib3ggaXMgb3BlbmVkLiAqL1xuICAgIG9wZW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRoZSBpbnB1dCBjb3VwIGlzIGluIHRoZSBzaGVsbGJhci4gT25seSBmb3IgaW50ZXJuYWwgdXNlIGJ5IGNvbWJvYm94IGNvbXBvbmVudFxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBpblNoZWxsYmFyID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGRpc3BsYXllZFZhbHVlczogYW55W10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaW5wdXRUZXh0VmFsdWUgPSAnJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY2xlYXJJbnB1dEJ0bkZvY3VzZWQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdmFsdWU6IGFueTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uVG91Y2hlZCA9ICgpOiB2b2lkID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfb3ZlcmxheTogT3ZlcmxheSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlOiBEeW5hbWljQ29tcG9uZW50U2VydmljZSxcbiAgICAgICAgcmVhZG9ubHkgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJcbiAgICApIHtcbiAgICAgICAgdGhpcy5fcmVwb3NpdGlvblNjcm9sbFN0cmF0ZWd5ID0gdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oeyBhdXRvQ2xvc2U6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0Ryb3Bkb3duQnV0dG9uID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcmVmcmVzaERpc3BsYXllZFZhbHVlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kcm9wZG93blZhbHVlcyAmJiAoY2hhbmdlcy5kcm9wZG93blZhbHVlcyB8fCBjaGFuZ2VzLnNlYXJjaFRlcm0pKSB7XG4gICAgICAgICAgICB0aGlzLl9yZWZyZXNoRGlzcGxheWVkVmFsdWVzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2FkZFNoZWxsYmFyQ2xhc3MoKTtcblxuICAgICAgICBpZiAodGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFVwTW9iaWxlTW9kZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvbklucHV0S2V5ZG93bkhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgVEFCKSAmJiB0aGlzLm9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuX2Nsb3NlKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIEVOVEVSKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoRm4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaEZuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIERPV05fQVJST1cpKSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzZXREaXNwbGF5ZWRWYWx1ZXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZUhhbmRsZSh0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLm9wZW4gJiYgdGhpcy5saXN0Q29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0Q29tcG9uZW50LnNldEl0ZW1BY3RpdmUoMCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLm9wZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaG9vc2VPdGhlckl0ZW0oMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBVUF9BUlJPVykpIHtcbiAgICAgICAgICAgIHRoaXMuX2Nob29zZU90aGVySXRlbSgtMSk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCB0aGlzLmNsb3NpbmdLZXlzKSkge1xuICAgICAgICAgICAgdGhpcy5pc09wZW5DaGFuZ2VIYW5kbGUoZmFsc2UpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICB0aGlzLm9wZW5PbktleWJvYXJkRXZlbnQgJiZcbiAgICAgICAgICAgICFldmVudC5jdHJsS2V5ICYmXG4gICAgICAgICAgICAhZXZlbnQuYWx0S2V5ICYmXG4gICAgICAgICAgICAhS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIHRoaXMubm9uT3BlbmluZ0tleXMpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5pc09wZW5DaGFuZ2VIYW5kbGUodHJ1ZSk7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0VtcHR5VmFsdWUgJiYgS2V5VXRpbC5pc0tleVR5cGUoZXZlbnQsICdjb250cm9sJykgJiYgIUtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBCQUNLU1BBQ0UpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0Q29tcG9uZW50LnNldEl0ZW1BY3RpdmUoMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uSXRlbUtleURvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50LCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRU5URVIpIHx8IEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBTUEFDRSkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLm9uTWVudUNsaWNrSGFuZGxlcih2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uTWVudUNsaWNrSGFuZGxlcih2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZSB8fCB2YWx1ZSA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgaW5kZXg6IG51bWJlciA9IHRoaXMuZHJvcGRvd25WYWx1ZXMuZmluZEluZGV4KChfdmFsdWUpID0+IF92YWx1ZSA9PT0gdmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlQ2xpY2tBY3Rpb25zKHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVySGlnaGxpZ2h0ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLml0ZW1DbGlja2VkLmVtaXQoeyBpdGVtOiB2YWx1ZSwgaW5kZXggfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogSGFuZGxlIGRpYWxvZyBkaXNtaXNzaW5nLCBjbG9zZXMgcG9wb3ZlciBhbmQgc2V0cyBiYWNrdXAgZGF0YS4gKi9cbiAgICBkaWFsb2dEaXNtaXNzKHRlcm06IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLmlucHV0VGV4dCA9IHRoaXMuZGlzcGxheUZuKHRlcm0pO1xuICAgICAgICB0aGlzLnNldFZhbHVlKHRlcm0pO1xuICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZUhhbmRsZShmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIEhhbmRsZSBkaWFsb2cgYXBwcm92YWwsIGNsb3NlcyBwb3BvdmVyIGFuZCBwcm9wYWdhdGVzIGRhdGEgY2hhbmdlcy4gKi9cbiAgICBkaWFsb2dBcHByb3ZlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wcm9wYWdhdGVDaGFuZ2UoKTtcbiAgICAgICAgdGhpcy5pc09wZW5DaGFuZ2VIYW5kbGUoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBJZiB0cnVlIHZhbHVlIGVtcHR5ICovXG4gICAgZ2V0IGlzRW1wdHlWYWx1ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmlucHV0VGV4dCB8fCB0aGlzLmlucHV0VGV4dD8udHJpbSgpLmxlbmd0aCA9PT0gMDtcbiAgICB9XG5cbiAgICAvKiogSW5wdXQgdGV4dCBvZiB0aGUgaW5wdXQuICovXG4gICAgc2V0IGlucHV0VGV4dCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuaW5wdXRUZXh0VmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5pbnB1dFRleHRDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICAgIGlmICghdGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3Byb3BhZ2F0ZUNoYW5nZSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCBpbnB1dFRleHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRUZXh0VmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEdldCB0aGUgZ2x5cGggdmFsdWUgYmFzZWQgb24gd2hldGhlciB0aGUgY29tYm9ib3ggaXMgdXNlZCBhcyBhIHNlYXJjaCBmaWVsZCBvciBub3QuICovXG4gICAgZ2V0IGdseXBoVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNTZWFyY2ggPyAnc2VhcmNoJyA6IHRoaXMuZ2x5cGg7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaGFuZGxlQ2xlYXJTZWFyY2hUZXJtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlucHV0VGV4dFZhbHVlID0gJyc7XG4gICAgICAgIHRoaXMuaW5wdXRUZXh0Q2hhbmdlLmVtaXQoJycpO1xuICAgICAgICB0aGlzLmRpc3BsYXllZFZhbHVlcyA9IHRoaXMuZHJvcGRvd25WYWx1ZXMgfHwgW107XG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgaWYgKCF0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5fcHJvcGFnYXRlQ2hhbmdlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5wdXRUZXh0VmFsdWUgPSB0aGlzLmRpc3BsYXlGbih2YWx1ZSk7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCBwYXNzZWQgdG8gbGlzdCBjb21wb25lbnQgKi9cbiAgICBoYW5kbGVMaXN0Rm9jdXNFc2NhcGUoZGlyZWN0aW9uOiBGb2N1c0VzY2FwZURpcmVjdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAoZGlyZWN0aW9uID09PSAndXAnKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaElucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGhhbmRsZVNlYXJjaFRlcm1DaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzcGxheWVkVmFsdWVzID0gdGhpcy5maWx0ZXJGbih0aGlzLmRyb3Bkb3duVmFsdWVzLCB0aGlzLmlucHV0VGV4dCk7XG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXJDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3ZlckNvbXBvbmVudC5yZWZyZXNoUG9zaXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25QcmltYXJ5QnV0dG9uQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIC8vIFByZXZlbnQgcHJpbWFyeSBidXR0b24gY2xpY2sgYmVoYXZpb3VyIG9uIG1vYmlsZXNcbiAgICAgICAgaWYgKHRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zZWFyY2hGbikge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hGbigpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3Jlc2V0RGlzcGxheWVkVmFsdWVzKCk7XG4gICAgICAgIHRoaXMuaXNPcGVuQ2hhbmdlSGFuZGxlKCF0aGlzLm9wZW4pO1xuICAgICAgICB0aGlzLnNlYXJjaElucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIHRoaXMuZmlsdGVySGlnaGxpZ2h0ID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLm9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXRFbGVtZW50Py5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGlzT3BlbkNoYW5nZUhhbmRsZShpc09wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgLyoqIFJlc2V0IGRpc3BsYXllZCB2YWx1ZXMgb24gZXZlcnkgbW9iaWxlIG9wZW4gKi9cbiAgICAgICAgaWYgKHRoaXMubW9iaWxlICYmICF0aGlzLm9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0RGlzcGxheWVkVmFsdWVzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3BlbiAhPT0gaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW4gPSBpc09wZW47XG4gICAgICAgICAgICB0aGlzLm9wZW5DaGFuZ2UuZW1pdChpc09wZW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLm9wZW4gJiYgIXRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUJsdXIoKTtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgICAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCB0aGF0IGhhbmRsZXMgY29tcGxldGUgZXZlbnQgZnJvbSBhdXRvIGNvbXBsZXRlIGRpcmVjdGl2ZSwgc2V0dGluZyB0aGUgbmV3IHZhbHVlLCBhbmQgY2xvc2luZyBwb3BvdmVyICovXG4gICAgaGFuZGxlQXV0b0NvbXBsZXRlKGV2ZW50OiBBdXRvQ29tcGxldGVFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pbnB1dFRleHQgIT09IGV2ZW50LnRlcm0pIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRUZXh0ID0gZXZlbnQudGVybTtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlU2VhcmNoVGVybUNoYW5nZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5mb3JjZUNsb3NlICYmIHRoaXMuaW5wdXRUZXh0KSB7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZUhhbmRsZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGhhbmRsZUJsdXIoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5vcGVuKSB7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVBdXRvQ29tcGxldGUoe1xuICAgICAgICAgICAgICAgIHRlcm06IHRoaXMuc2VhcmNoSW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUsXG4gICAgICAgICAgICAgICAgZm9yY2VDbG9zZTogZmFsc2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjbGVhcklucHV0QnRuRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xlYXJJbnB1dEJ0bkZvY3VzZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY2xlYXJJbnB1dEJ0bkJsdXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xlYXJJbnB1dEJ0bkZvY3VzZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiogQ3VycmVudCBzZWxlY3QgdmFsdWUgKi9cbiAgICBnZXRWYWx1ZSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5wdXRUZXh0ID0gdGhpcy5fdmFsdWUgPyB0aGlzLmlucHV0VGV4dCA6ICcnO1xuICAgICAgICBpZiAodGhpcy50YWJPdXRTdHJhdGVneSA9PT0gJ2Nsb3NlQW5kU2VsZWN0Jykge1xuICAgICAgICAgICAgY29uc3QgZm9jdXNlZEl0ZW0gPSB0aGlzLmxpc3RDb21wb25lbnQuZ2V0QWN0aXZlSXRlbSgpO1xuICAgICAgICAgICAgaWYgKGZvY3VzZWRJdGVtKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5faGFuZGxlQ2xpY2tBY3Rpb25zKGZvY3VzZWRJdGVtLnZhbHVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc09wZW5DaGFuZ2VIYW5kbGUoZmFsc2UpO1xuICAgICAgICB0aGlzLnNlYXJjaElucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCB0aGF0IHBpY2tzIG90aGVyIHZhbHVlIG1vdmVkIGZyb20gY3VycmVudCBvbmUgYnkgb2Zmc2V0LCBjYWxsZWQgb25seSB3aGVuIGNvbWJvYm94IGlzIGNsb3NlZCAqL1xuICAgIHByaXZhdGUgX2Nob29zZU90aGVySXRlbShvZmZzZXQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBhY3RpdmVWYWx1ZTogYW55ID0gdGhpcy5fZ2V0T3B0aW9uT2JqZWN0QnlEaXNwbGF5ZWRWYWx1ZSh0aGlzLmlucHV0VGV4dFZhbHVlKTtcbiAgICAgICAgY29uc3QgaW5kZXg6IG51bWJlciA9IHRoaXMuZHJvcGRvd25WYWx1ZXMuZmluZEluZGV4KCh2YWx1ZSkgPT4gdmFsdWUgPT09IGFjdGl2ZVZhbHVlKTtcbiAgICAgICAgaWYgKHRoaXMuZHJvcGRvd25WYWx1ZXNbaW5kZXggKyBvZmZzZXRdKSB7XG4gICAgICAgICAgICB0aGlzLm9uTWVudUNsaWNrSGFuZGxlcih0aGlzLmRyb3Bkb3duVmFsdWVzW2luZGV4ICsgb2Zmc2V0XSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIHRoYXQgcmVzZXQgZmlsdGVyaW5nIGZvciBkaXNwbGF5ZWQgdmFsdWVzLiBJdCBvdmVycmlkZXMgZGlzcGxheWVkIHZhbHVlcyBieSBhbGwgcG9zc2libGUgZHJvcGRvd24gdmFsdWVzICovXG4gICAgcHJpdmF0ZSBfcmVzZXREaXNwbGF5ZWRWYWx1ZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzcGxheWVkVmFsdWVzID0gdGhpcy5kcm9wZG93blZhbHVlcyB8fCBbXTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FkZFNoZWxsYmFyQ2xhc3MoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmluU2hlbGxiYXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnZmQtc2hlbGxiYXJfX2lucHV0LWdyb3VwLWlucHV0Jyk7XG4gICAgICAgICAgICBpZiAodGhpcy5pbnB1dEdyb3VwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dEdyb3VwLnNldEluU2hlbGxiYXIodHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RlZmF1bHREaXNwbGF5KHN0cjogYW55KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RlZmF1bHRGaWx0ZXIoY29udGVudEFycmF5OiBhbnlbXSwgc2VhcmNoVGVybTogYW55KTogYW55W10ge1xuICAgICAgICB0aGlzLmZpbHRlckhpZ2hsaWdodCA9IHRydWU7XG4gICAgICAgIGlmICh0eXBlb2Ygc2VhcmNoVGVybSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlYXJjaExvd2VyID0gc2VhcmNoVGVybS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRBcnJheS5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZXJtID0gdGhpcy5kaXNwbGF5Rm4oaXRlbSkudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5jbHVkZXMgPyB0ZXJtLmluY2x1ZGVzKHNlYXJjaExvd2VyKSA6IHRlcm0uc3RhcnRzV2l0aChzZWFyY2hMb3dlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHNlYXJjaFRlcm0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICByZXR1cm4gY29udGVudEFycmF5LmZpbHRlcigoaXRlbSkgPT4gaXRlbSA9PT0gc2VhcmNoVGVybSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbnRlbnRBcnJheSB8fCBbXTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hhbmRsZUNsaWNrQWN0aW9ucyh0ZXJtOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY2xvc2VPblNlbGVjdCkge1xuICAgICAgICAgICAgdGhpcy5pc09wZW5DaGFuZ2VIYW5kbGUoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZpbGxPblNlbGVjdCkge1xuICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZSh0ZXJtKTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRUZXh0ID0gdGhpcy5kaXNwbGF5Rm4odGVybSk7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaElucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy5pbnB1dFRleHQ7XG4gICAgICAgICAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3Byb3BhZ2F0ZUNoYW5nZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuaGFuZGxlU2VhcmNoVGVybUNoYW5nZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0T3B0aW9uT2JqZWN0QnlEaXNwbGF5ZWRWYWx1ZShkaXNwbGF5VmFsdWU6IHN0cmluZyk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRyb3Bkb3duVmFsdWVzLmZpbmQoKHZhbHVlKSA9PiB0aGlzLmRpc3BsYXlGbih2YWx1ZSkgPT09IGRpc3BsYXlWYWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZWZyZXNoRGlzcGxheWVkVmFsdWVzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pbnB1dFRleHQpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheWVkVmFsdWVzID0gdGhpcy5maWx0ZXJGbih0aGlzLmRyb3Bkb3duVmFsdWVzLCB0aGlzLmlucHV0VGV4dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXllZFZhbHVlcyA9IHRoaXMuZHJvcGRvd25WYWx1ZXMgfHwgW107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Byb3BhZ2F0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY29tbXVuaWNhdGVCeU9iamVjdCkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLl9nZXRPcHRpb25PYmplY3RCeURpc3BsYXllZFZhbHVlKHRoaXMuaW5wdXRUZXh0KTtcbiAgICAgICAgICAgIGlmICh0aGlzLmRpc3BsYXlGbih2YWx1ZSkgIT09IHRoaXMuZGlzcGxheUZuKHRoaXMuZ2V0VmFsdWUoKSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5nZXRWYWx1ZSgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5pbnB1dFRleHQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHNldFZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY29tbXVuaWNhdGVCeU9iamVjdCkge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5kaXNwbGF5Rm4odmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGFzeW5jIF9zZXRVcE1vYmlsZU1vZGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgICAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogQ09NQk9CT1hfQ09NUE9ORU5ULCB1c2VWYWx1ZTogdGhpcyB9XSxcbiAgICAgICAgICAgIHBhcmVudDogdGhpcy5faW5qZWN0b3JcbiAgICAgICAgfSk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5fZHluYW1pY0NvbXBvbmVudFNlcnZpY2UuY3JlYXRlRHluYW1pY01vZHVsZShcbiAgICAgICAgICAgIHsgbGlzdFRlbXBsYXRlOiB0aGlzLmxpc3RUZW1wbGF0ZSwgY29udHJvbFRlbXBsYXRlOiB0aGlzLmNvbnRyb2xUZW1wbGF0ZSB9LFxuICAgICAgICAgICAgQ29tYm9ib3hNb2JpbGVNb2R1bGUsXG4gICAgICAgICAgICBDb21ib2JveE1vYmlsZUNvbXBvbmVudCxcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICBpbmplY3RvclxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaXNTZWxlY3RlZCh0ZXJtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgdGVybVZhbHVlID0gdGhpcy5jb21tdW5pY2F0ZUJ5T2JqZWN0ID8gdGVybSA6IHRoaXMuZGlzcGxheUZuKHRlcm0pO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpID09PSB0ZXJtVmFsdWU7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1vYmlsZSA/IG1vYmlsZVRlbXBsYXRlIDogZGVza3RvcFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjZGVza3RvcFRlbXBsYXRlPlxuICAgIDxmZC1wb3BvdmVyXG4gICAgICAgIGFkZGl0aW9uYWxCb2R5Q2xhc3M9XCJmZC1wb3BvdmVyLWN1c3RvbS1saXN0XCJcbiAgICAgICAgW2NsYXNzLmZkLWNvbWJvYm94LWZ1bGwtd2lkdGhdPVwiaXNTZWFyY2hcIlxuICAgICAgICBbaXNPcGVuXT1cIm9wZW4gJiYgZGlzcGxheWVkVmFsdWVzICYmIGRpc3BsYXllZFZhbHVlcy5sZW5ndGggPiAwXCJcbiAgICAgICAgKGlzT3BlbkNoYW5nZSk9XCJpc09wZW5DaGFuZ2VIYW5kbGUoJGV2ZW50KVwiXG4gICAgICAgIFtmaWxsQ29udHJvbE1vZGVdPVwiZmlsbENvbnRyb2xNb2RlXCJcbiAgICAgICAgW3Njcm9sbFN0cmF0ZWd5XT1cIl9yZXBvc2l0aW9uU2Nyb2xsU3RyYXRlZ3lcIlxuICAgICAgICBbZm9jdXNUcmFwcGVkXT1cInRydWVcIlxuICAgICAgICBbdHJpZ2dlcnNdPVwidHJpZ2dlcnNcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZE9ubHlcIlxuICAgICAgICBbbWF4V2lkdGhdPVwiNjQwXCJcbiAgICAgICAgW2Nsb3NlT25PdXRzaWRlQ2xpY2tdPVwiY2xvc2VPbk91dHNpZGVDbGlja1wiXG4gICAgPlxuICAgICAgICA8ZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRyb2xUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2ZkLXBvcG92ZXItY29udHJvbD5cbiAgICAgICAgPGZkLXBvcG92ZXItYm9keSBbaGlkZGVuXT1cIiFkaXNwbGF5ZWRWYWx1ZXMubGVuZ3RoXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGlzdFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZmQtcG9wb3Zlci1ib2R5PlxuICAgIDwvZmQtcG9wb3Zlcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBsZXQtdGVybT1cInRlcm1cIiAjaXRlbVNvdXJjZT5cbiAgICA8c3BhblxuICAgICAgICBmZC1saXN0LXRpdGxlXG4gICAgICAgICpuZ0lmPVwiIWl0ZW1UZW1wbGF0ZTsgZWxzZSBjdXN0b21SZW5kZXJlclRlbXBsYXRlXCJcbiAgICAgICAgW2lubmVySFRNTF09XCJ0ZXJtIHwgZGlzcGxheUZuUGlwZSA6IGRpc3BsYXlGbiB8IGhpZ2hsaWdodCA6IGlucHV0VGV4dCA6IGhpZ2hsaWdodGluZyAmJiBmaWx0ZXJIaWdobGlnaHRcIlxuICAgID5cbiAgICA8L3NwYW4+XG4gICAgPG5nLXRlbXBsYXRlICNjdXN0b21SZW5kZXJlclRlbXBsYXRlPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1UZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogdGVybSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbW9iaWxlVGVtcGxhdGU+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250cm9sVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY29udHJvbFRlbXBsYXRlPlxuICAgIDxmZC1pbnB1dC1ncm91cFxuICAgICAgICBbYnV0dG9uXT1cInNob3dEcm9wZG93bkJ1dHRvblwiXG4gICAgICAgIFtnbHlwaF09XCJzaG93RHJvcGRvd25CdXR0b24gPyBnbHlwaFZhbHVlIDogbnVsbFwiXG4gICAgICAgIFtzdGF0ZV09XCJzdGF0ZVwiXG4gICAgICAgIFtidXR0b25Gb2N1c2FibGVdPVwiYnV0dG9uRm9jdXNhYmxlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgW2lzQ29udHJvbF09XCJ0cnVlXCJcbiAgICAgICAgW2lzRXhwYW5kZWRdPVwiIW1vYmlsZSAmJiBvcGVuICYmIGRpc3BsYXllZFZhbHVlcy5sZW5ndGggPiAwXCJcbiAgICAgICAgW3Nob3dGb2N1c109XCIhY2xlYXJJbnB1dEJ0bkZvY3VzZWRcIlxuICAgICAgICBbZ2x5cGhBcmlhTGFiZWxdPVwiYXJpYUxhYmVsIHx8ICgncGxhdGZvcm1NdWx0aUNvbWJvYm94LmlucHV0R2x5cGhBcmlhTGFiZWwnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgW2ljb25UaXRsZV09XCJ0aXRsZSB8fCAoJ3BsYXRmb3JtTXVsdGlDb21ib2JveC5pbnB1dEdseXBoQXJpYUxhYmVsJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgIChhZGRPbkJ1dHRvbkNsaWNrZWQpPVwib25QcmltYXJ5QnV0dG9uQ2xpY2soKVwiXG4gICAgICAgIChjbGljayk9XCJtb2JpbGUgJiYgaXNPcGVuQ2hhbmdlSGFuZGxlKHRydWUpXCJcbiAgICA+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI3NlYXJjaElucHV0RWxlbWVudFxuICAgICAgICAgICAgZmRrQXV0b0NvbXBsZXRlXG4gICAgICAgICAgICBmZC1pbnB1dC1ncm91cC1pbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgcm9sZT1cImNvbWJvYm94XCJcbiAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJjb21ib2JveElkICsgJy1saXN0LXJlc3VsdHMnXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtYXV0b2NvbXBsZXRlXT1cImF1dG9Db21wbGV0ZSAmJiAhbW9iaWxlID8gJ2xpc3QnIDogbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLW93bnNdPVwiYXV0b0NvbXBsZXRlICYmICFtb2JpbGUgPyBjb21ib2JveElkICsgJy1yZXN1bHQnIDogbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cImF1dG9Db21wbGV0ZSAmJiAhbW9iaWxlXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiIW1vYmlsZSAmJiBvcGVuICYmIGRpc3BsYXllZFZhbHVlcy5sZW5ndGhcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJyZWFkT25seSB8fCBkaXNhYmxlZCA/IC0xIDogbnVsbFwiXG4gICAgICAgICAgICBbZW5hYmxlXT1cImF1dG9Db21wbGV0ZSAmJiAhbW9iaWxlXCJcbiAgICAgICAgICAgIFtkaXNwbGF5Rm5dPVwiZGlzcGxheUZuXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cImRyb3Bkb3duVmFsdWVzXCJcbiAgICAgICAgICAgIFtpbnB1dFRleHRdPVwiaW5wdXRUZXh0XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZE9ubHlcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1yZWFkb25seV09XCJyZWFkT25seVwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgW2lkXT1cImlucHV0SWRcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFRleHRcIlxuICAgICAgICAgICAgKG9uQ29tcGxldGUpPVwiaGFuZGxlQXV0b0NvbXBsZXRlKCRldmVudClcIlxuICAgICAgICAgICAgKGtleWRvd24pPVwib25JbnB1dEtleWRvd25IYW5kbGVyKCRldmVudClcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiaGFuZGxlU2VhcmNoVGVybUNoYW5nZSgpXCJcbiAgICAgICAgICAgIChibHVyKT1cImhhbmRsZUJsdXIoKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cImZkLWlucHV0LWdyb3VwX19hZGRvbiBmZC1pbnB1dC1ncm91cF9fYWRkb24tLWJ1dHRvblwiXG4gICAgICAgICAgICBbY2xhc3MuZmQtc2hlbGxiYXJfX2lucHV0LWdyb3VwLWFkZG9uXT1cImluU2hlbGxiYXJcIlxuICAgICAgICAgICAgKm5nSWY9XCJpc1NlYXJjaCAmJiBzaG93Q2xlYXJCdXR0b24gJiYgaW5wdXRUZXh0ICYmIGlucHV0VGV4dC5sZW5ndGggPiAwXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtaW5wdXQtZ3JvdXBfX2J1dHRvblwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2ZkVHlwZV09XCJpblNoZWxsYmFyID8gJ3N0YW5kYXJkJyA6ICd0cmFuc3BhcmVudCdcIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwiQ2xlYXIgaW5wdXRcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5mZC1zaGVsbGJhcl9fYnV0dG9uXT1cImluU2hlbGxiYXJcIlxuICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImNsZWFyQnV0dG9uRm9jdXNhYmxlID8gMCA6IC0xXCJcbiAgICAgICAgICAgICAgICAoZm9jdXMpPVwiY2xlYXJJbnB1dEJ0bkZvY3VzKClcIlxuICAgICAgICAgICAgICAgIChibHVyKT1cImNsZWFySW5wdXRCdG5CbHVyKClcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlQ2xlYXJTZWFyY2hUZXJtKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxmZC1pY29uIGdseXBoPVwiZGVjbGluZVwiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L3NwYW4+XG4gICAgPC9mZC1pbnB1dC1ncm91cD5cbiAgICA8ZGl2IFtpZF09XCJjb21ib2JveElkICsgJy1saXN0LXJlc3VsdHMnXCIgY2xhc3M9XCJmZC1jb21ib2JveC1jb3VudC1saXN0LXJlc3VsdHNcIj5cbiAgICAgICAge3sgZGlzcGxheWVkVmFsdWVzLmxlbmd0aCB8fCAwIH19IHJlc3VsdCBsaXN0IGl0ZW1zXG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2xpc3RUZW1wbGF0ZT5cbiAgICA8dWxcbiAgICAgICAgZmQtbGlzdFxuICAgICAgICBjbGFzcz1cImZkLWNvbWJvYm94LWN1c3RvbS1saXN0XCJcbiAgICAgICAgW2Ryb3Bkb3duTW9kZV09XCJ0cnVlXCJcbiAgICAgICAgW2lkXT1cImNvbWJvYm94SWQgKyAnLXJlc3VsdCdcIlxuICAgICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJjb21ib2JveElkICsgJy1zZWFyY2gnXCJcbiAgICAgICAgW3N0eWxlLm1heEhlaWdodF09XCIhbW9iaWxlICYmIG1heEhlaWdodFwiXG4gICAgICAgIFtoYXNNZXNzYWdlXT1cImxpc3RNZXNzYWdlcyAmJiBsaXN0TWVzc2FnZXMubGVuZ3RoID4gMFwiXG4gICAgICAgIFtieWxpbmVdPVwiYnlsaW5lXCJcbiAgICAgICAgKGtleWRvd24udGFiKT1cIl9jbG9zZSgpXCJcbiAgICAgICAgKGtleWRvd24uc2hpZnQudGFiKT1cIl9jbG9zZSgpXCJcbiAgICAgICAgKGZvY3VzRXNjYXBlTGlzdCk9XCJoYW5kbGVMaXN0Rm9jdXNFc2NhcGUoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncm91cEZuOyBlbHNlIGZsYXRMaXN0XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBncm91cCBvZiBkaXNwbGF5ZWRWYWx1ZXMgfCBsaXN0R3JvdXBQaXBlIDogZ3JvdXBGblwiPlxuICAgICAgICAgICAgICAgIDxsaSByb2xlPVwiZ3JvdXBcIiBmZC1saXN0LWdyb3VwLWhlYWRlciBbdGFiaW5kZXhdPVwiMFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPnt7IGdyb3VwLmtleSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgZmQtbGlzdC1pdGVtXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcGxhY2Vob2xkZXJdPVwiZ3JvdXAua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWNvbWJvYm94LWxpc3QtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0ZXJtIG9mIGdyb3VwLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cImlzU2VsZWN0ZWQodGVybSlcIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwidGVybVwiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uSXRlbUtleURvd25IYW5kbGVyKCRldmVudCwgdGVybSlcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25NZW51Q2xpY2tIYW5kbGVyKHRlcm0pXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1Tb3VyY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgdGVybTogdGVybSB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZmxhdExpc3Q+XG4gICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICBmZC1saXN0LWl0ZW1cbiAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiMFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1jb21ib2JveC1saXN0LWl0ZW1cIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0ZXJtIG9mIGRpc3BsYXllZFZhbHVlc1wiXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cImlzU2VsZWN0ZWQodGVybSlcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uSXRlbUtleURvd25IYW5kbGVyKCRldmVudCwgdGVybSlcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk1lbnVDbGlja0hhbmRsZXIodGVybSlcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ0ZXJtXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1Tb3VyY2VcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyB0ZXJtOiB0ZXJtIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC91bD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
663
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY29tYm9ib3gvY29tYm9ib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY29tYm9ib3gvY29tYm9ib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFDSCxTQUFTLEVBQ1QsT0FBTyxFQUNQLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUNMLEtBQUssRUFDTCxHQUFHLEVBQ0gsUUFBUSxFQUNYLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBSUwsTUFBTSxFQUNOLFNBQVMsRUFFVCxXQUFXLEVBQ1gsU0FBUyxFQUNULGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsVUFBVSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFFSCx1QkFBdUIsRUFFdkIsT0FBTyxFQUVWLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFtQix1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxhQUFhLEVBQXdCLE1BQU0sNEJBQTRCLENBQUM7QUFDNUcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0s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Y2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nICovXG5pbXBvcnQge1xuICAgIEJBQ0tTUEFDRSxcbiAgICBDT05UUk9MLFxuICAgIERPV05fQVJST1csXG4gICAgRU5URVIsXG4gICAgRVNDQVBFLFxuICAgIExFRlRfQVJST1csXG4gICAgUklHSFRfQVJST1csXG4gICAgU0hJRlQsXG4gICAgU1BBQ0UsXG4gICAgVEFCLFxuICAgIFVQX0FSUk9XXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgZm9yd2FyZFJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICAgIEF1dG9Db21wbGV0ZUV2ZW50LFxuICAgIER5bmFtaWNDb21wb25lbnRTZXJ2aWNlLFxuICAgIEZvY3VzRXNjYXBlRGlyZWN0aW9uLFxuICAgIEtleVV0aWwsXG4gICAgTnVsbGFibGVcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRm9ybUl0ZW1Db250cm9sLCByZWdpc3RlckZvcm1JdGVtQ29udHJvbCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9mb3JtJztcbmltcG9ydCB7IElucHV0R3JvdXBDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvaW5wdXQtZ3JvdXAnO1xuaW1wb3J0IHsgRkRfTElTVF9NRVNTQUdFX0RJUkVDVElWRSwgTGlzdENvbXBvbmVudCwgTGlzdE1lc3NhZ2VEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbGlzdCc7XG5pbXBvcnQgeyBNZW51S2V5Ym9hcmRTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL21lbnUnO1xuaW1wb3J0IHsgTW9iaWxlTW9kZUNvbmZpZyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9tb2JpbGUtbW9kZSc7XG5pbXBvcnQgeyBQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3BvcG92ZXInO1xuaW1wb3J0IHsgUG9wb3ZlckZpbGxNb2RlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NoYXJlZCc7XG5cbmltcG9ydCB7IE92ZXJsYXksIFJlcG9zaXRpb25TY3JvbGxTdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IEZvcm1TdGF0ZXMsIFNpbmdsZURyb3Bkb3duVmFsdWVDb250cm9sIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvZm9ybXMnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlPYnNlcnZlciwgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IHsgQ29tYm9ib3hJdGVtIH0gZnJvbSAnLi9jb21ib2JveC1pdGVtJztcbmltcG9ydCB7IENvbWJvYm94TW9iaWxlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21ib2JveC1tb2JpbGUvY29tYm9ib3gtbW9iaWxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21ib2JveE1vYmlsZU1vZHVsZSB9IGZyb20gJy4vY29tYm9ib3gtbW9iaWxlL2NvbWJvYm94LW1vYmlsZS5tb2R1bGUnO1xuaW1wb3J0IHsgQ09NQk9CT1hfQ09NUE9ORU5ULCBDb21ib2JveEludGVyZmFjZSB9IGZyb20gJy4vY29tYm9ib3guaW50ZXJmYWNlJztcbmltcG9ydCB7IEdyb3VwRnVuY3Rpb24gfSBmcm9tICcuL2xpc3QtZ3JvdXAucGlwZSc7XG5pbXBvcnQgeyBGRF9DT01CT0JPWF9DT01QT05FTlQgfSBmcm9tICcuL3Rva2Vucyc7XG5cbmxldCBjb21ib2JveFVuaXF1ZUlkID0gMDtcblxuLyoqXG4gKiBBbGxvd3MgdXNlcnMgdG8gZmlsdGVyIHRocm91Z2ggcmVzdWx0cyBhbmQgc2VsZWN0IGEgdmFsdWUuXG4gKlxuICogU3VwcG9ydHMgQW5ndWxhciBGb3Jtcy5cbiAqIGBgYGh0bWxcbiAqIDxmZC1jb21ib2JveFxuICogICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRlcm1cIlxuICogICAgICBbZHJvcGRvd25WYWx1ZXNdPVwiZHJvcGRvd25WYWx1ZXNcIlxuICogICAgICBwbGFjZWhvbGRlcj1cIlR5cGUgc29tZSB0ZXh0Li4uXCI+XG4gKiA8L2ZkLWNvbWJvYm94PlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtY29tYm9ib3gnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb21ib2JveC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY29tYm9ib3guY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDb21ib2JveENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICByZWdpc3RlckZvcm1JdGVtQ29udHJvbChDb21ib2JveENvbXBvbmVudCksXG4gICAgICAgIE1lbnVLZXlib2FyZFNlcnZpY2UsXG4gICAgICAgIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMoKSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRkRfQ09NQk9CT1hfQ09NUE9ORU5ULFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IENvbWJvYm94Q29tcG9uZW50XG4gICAgICAgIH1cbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tjbGFzcy5mZC1jb21ib2JveC1jdXN0b20tY2xhc3NdJzogJ3RydWUnLFxuICAgICAgICAnW2NsYXNzLmZkLWNvbWJvYm94LWlucHV0XSc6ICd0cnVlJyxcbiAgICAgICAgJ1tjbGFzcy5mZC1jb21ib2JveC1jdXN0b20tY2xhc3MtLW1vYmlsZV0nOiAnbW9iaWxlJ1xuICAgIH0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDb21ib2JveENvbXBvbmVudFxuICAgIGltcGxlbWVudHNcbiAgICAgICAgQ29tYm9ib3hJbnRlcmZhY2UsXG4gICAgICAgIFNpbmdsZURyb3Bkb3duVmFsdWVDb250cm9sLFxuICAgICAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICAgICAgT25Jbml0LFxuICAgICAgICBPbkNoYW5nZXMsXG4gICAgICAgIEFmdGVyVmlld0luaXQsXG4gICAgICAgIE9uRGVzdHJveSxcbiAgICAgICAgRm9ybUl0ZW1Db250cm9sXG57XG4gICAgLyoqIElkIGZvciB0aGUgQ29tYm9ib3guICovXG4gICAgQElucHV0KClcbiAgICBjb21ib2JveElkID0gYGZkLWNvbWJvYm94LSR7Y29tYm9ib3hVbmlxdWVJZCsrfWA7XG5cbiAgICAvKiogSWQgYXR0cmlidXRlIGZvciBpbnB1dCBlbGVtZW50IGluc2lkZSBDb21ib2JveCBjb21wb25lbnQgKi9cbiAgICBASW5wdXQoKVxuICAgIGlucHV0SWQgPSAnJztcblxuICAgIC8qKiBBcmlhLWxhYmVsIGZvciBDb21ib2JveC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbDogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBBcmlhLUxhYmVsbGVkYnkgZm9yIGVsZW1lbnQgZGVzY3JpYmluZyBDb21ib2JveC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbGxlZEJ5OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIElmIGl0IGlzIG1hbmRhdG9yeSBmaWVsZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVxdWlyZWQgPSBmYWxzZTtcblxuICAgIC8qKiBWYWx1ZXMgdG8gYmUgZmlsdGVyZWQgaW4gdGhlIHNlYXJjaCBpbnB1dC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRyb3Bkb3duVmFsdWVzOiBhbnlbXSA9IFtdO1xuXG4gICAgLyoqIEZpbHRlciBmdW5jdGlvbi4gQWNjZXB0cyBhbiBhcnJheSBvZiBvYmplY3RzIGFuZCBhIHNlYXJjaCB0ZXJtIGFzIGFyZ3VtZW50c1xuICAgICAqIGFuZCByZXR1cm5zIGEgc3RyaW5nLiBTZWUgc2VhcmNoIGlucHV0IGV4YW1wbGVzIGZvciBkZXRhaWxzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmlsdGVyRm4gPSB0aGlzLl9kZWZhdWx0RmlsdGVyO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHNlYXJjaCBpbnB1dCBpcyBkaXNhYmxlZC4gKiovXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIC8qKiBQbGFjZWhvbGRlciBvZiB0aGUgc2VhcmNoIGlucHV0LiAqKi9cbiAgICBASW5wdXQoKVxuICAgIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBDb21ib2JveCBpcyBhIFNlYXJjaCBGaWVsZFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaXNTZWFyY2ggPSBmYWxzZTtcblxuICAgIC8qKiBJY29uIHRvIGRpc3BsYXkgaW4gdGhlIHJpZ2h0LXNpZGUgYnV0dG9uLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2x5cGggPSAnbmF2aWdhdGlvbi1kb3duLWFycm93JztcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY2xlYXIgc2VhcmNoIHRlcm0gYnV0dG9uIHdoZW4gdGhlIENvbWJvYm94IGlzIGEgU2VhcmNoIEZpZWxkXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzaG93Q2xlYXJCdXR0b24gPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogIFRoZSB0cmlnZ2VyIGV2ZW50cyB0aGF0IHdpbGwgb3Blbi9jbG9zZSB0aGUgb3B0aW9ucyBwb3BvdmVyLlxuICAgICAqICBBY2NlcHRzIGFueSBbSFRNTCBET00gRXZlbnRzXShodHRwczovL3d3dy53M3NjaG9vbHMuY29tL2pzcmVmL2RvbV9vYmpfZXZlbnQuYXNwKS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHRyaWdnZXJzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGNvbWJvYm94IHNob3VsZCBjbG9zZSwgd2hlbiBhIGNsaWNrIGlzIHBlcmZvcm1lZCBvdXRzaWRlIGl0cyBib3VuZGFyaWVzLiBUcnVlIGJ5IGRlZmF1bHQgKi9cbiAgICBASW5wdXQoKVxuICAgIGNsb3NlT25PdXRzaWRlQ2xpY2sgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgY29tYm9ib3ggc2hvdWxkIG9wZW4sIHdoZW4gYW55IGtleSBpcyBwcmVzc2VkIGluIGlucHV0IChleGNlcHQgRXNjYXBlLCBTcGFjZSwgRW50ZXIpLiBUcnVlIGJ5IGRlZmF1bHRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG9wZW5PbktleWJvYXJkRXZlbnQgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogIFRoZSBzdGF0ZSBvZiB0aGUgZm9ybSBjb250cm9sIC0gYXBwbGllcyBjc3MgY2xhc3Nlcy5cbiAgICAgKiAgQ2FuIGJlIGBzdWNjZXNzYCwgYGVycm9yYCwgYHdhcm5pbmdgLCBgaW5mb3JtYXRpb25gIG9yIGJsYW5rIGZvciBkZWZhdWx0LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RhdGU/OiBGb3JtU3RhdGVzO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHRlbXBsYXRlIHdpdGggd2hpY2ggdG8gZGlzcGxheSB0aGUgaW5kaXZpZHVhbCBsaXN0ZWQgaXRlbXMuXG4gICAgICogVXNlIGl0IGJ5IHBhc3NpbmcgYW4gbmctdGVtcGxhdGUgd2l0aCBpbXBsaWNpdCBjb250ZW50LiBTZWUgZXhhbXBsZXMgZm9yIG1vcmUgaW5mby5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIHVzZWQgdG8gaGFuZGxlIGdyb3VwaW5nIG9mIGl0ZW1zLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ3JvdXBGbjogR3JvdXBGdW5jdGlvbjtcblxuICAgIC8qKiBNYXggaGVpZ2h0IG9mIHRoZSBwb3BvdmVyLiBBbnkgb3ZlcmZsb3dpbmcgZWxlbWVudHMgd2lsbCBiZSBhY2Nlc3NpYmxlIHRocm91Z2ggc2Nyb2xsaW5nLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbWF4SGVpZ2h0ID0gJzUwdmgnO1xuXG4gICAgLyoqIFNlYXJjaCBmdW5jdGlvbiB0byBleGVjdXRlIHdoZW4gdGhlIEVudGVyIGtleSBpcyBwcmVzc2VkIG9uIHRoZSBtYWluIGlucHV0LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VhcmNoRm46ICgpID0+IHZvaWQ7XG5cbiAgICAvKiogV2hldGhlciB0aGUgbWF0Y2hpbmcgc3RyaW5nIHNob3VsZCBiZSBoaWdobGlnaHRlZCBkdXJpbmcgZmlsdHJhdGlvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIGhpZ2hsaWdodGluZyA9IHRydWU7XG5cbiAgICAvKiogV2hldGhlciB0aGUgbWF0Y2hpbmcgc3RyaW5nIHNob3VsZCBiZSBoaWdobGlnaHRlZCBhZnRlciBjb21ib2JveCB2YWx1ZSBpcyBzZWxlY3RlZC4gKi9cbiAgICBmaWx0ZXJIaWdobGlnaHQgPSB0cnVlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHBvcG92ZXIgc2hvdWxkIGNsb3NlIHdoZW4gYSB1c2VyIHNlbGVjdHMgYSByZXN1bHQuICovXG4gICAgQElucHV0KClcbiAgICBjbG9zZU9uU2VsZWN0ID0gdHJ1ZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBpbnB1dCBmaWVsZCBzaG91bGQgYmUgcG9wdWxhdGVkIHdpdGggdGhlIHJlc3VsdCBwaWNrZWQgYnkgdGhlIHVzZXIuICovXG4gICAgQElucHV0KClcbiAgICBmaWxsT25TZWxlY3QgPSB0cnVlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGF1dG9jb21wbGV0ZSBzaG91bGQgYmUgZW5hYmxlZDsgRW5hYmxlZCBieSBkZWZhdWx0ICovXG4gICAgQElucHV0KClcbiAgICBhdXRvQ29tcGxldGUgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogUHJlc2V0IG9wdGlvbnMgZm9yIHRoZSBTZWxlY3QgYm9keSB3aWR0aCwgd2hhdGV2ZXIgaXMgY2hvc2VuLCB0aGUgYm9keSBoYXMgYSA2MDBweCBsaW1pdC5cbiAgICAgKiAqIGBhdC1sZWFzdGAgd2lsbCBhcHBseSBhIG1pbmltdW0gd2lkdGggdG8gdGhlIGJvZHkgZXF1aXZhbGVudCB0byB0aGUgd2lkdGggb2YgdGhlIGNvbnRyb2wuIC0gRGVmYXVsdFxuICAgICAqICogYGVxdWFsYCB3aWxsIGFwcGx5IGEgd2lkdGggdG8gdGhlIGJvZHkgZXF1aXZhbGVudCB0byB0aGUgd2lkdGggb2YgdGhlIGNvbnRyb2wuXG4gICAgICogKiAnZml0LWNvbnRlbnQnIHdpbGwgYXBwbHkgd2lkdGggbmVlZGVkIHRvIHByb3Blcmx5IGRpc3BsYXkgaXRlbXMgaW5zaWRlLCBpbmRlcGVuZGVudCBvZiBjb250cm9sLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmlsbENvbnRyb2xNb2RlOiBQb3BvdmVyRmlsbE1vZGUgPSAnYXQtbGVhc3QnO1xuXG4gICAgLyoqIERlZmluZXMgaWYgY29tYm9ib3ggc2hvdWxkIGJlaGF2ZSBzYW1lIGFzIGRyb3Bkb3duLiBXaGVuIGl0J3MgZW5hYmxlZCB3cml0aW5nIGluc2lkZSB0ZXh0IGlucHV0IHdvbid0XG4gICAgICogdHJpZ2dlciBvbkNoYW5nZSBmdW5jdGlvbiwgdW50aWwgaXQgbWF0Y2hlcyBvbmUgb2YgZGlzcGxheWVkIGRyb3Bkb3duIHZhbHVlcy4gQWxzbyBjb21tdW5pY2F0aW5nIHdpdGggY29tYm9ib3hcbiAgICAgKiBjYW4gYmUgYWNoaWV2ZWQgb25seSBieSBvYmplY3RzIHdpdGggc2FtZSB0eXBlIGFzIGRyb3Bkb3duVmFsdWUgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbW11bmljYXRlQnlPYmplY3QgPSBmYWxzZTtcblxuICAgIC8qKiBEaXNwbGF5IGZ1bmN0aW9uLiBBY2NlcHRzIGFuIG9iamVjdCBvZiB0aGUgc2FtZSB0eXBlIGFzIHRoZVxuICAgICAqIGl0ZW1zIHBhc3NlZCB0byBkcm9wZG93blZhbHVlcyBhcyBhcmd1bWVudCwgYW5kIG91dHB1dHMgYSBzdHJpbmcuXG4gICAgICogQW4gYXJyb3cgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gYWNjZXNzIHRoZSAqdGhpcyoga2V5d29yZCBpbiB0aGUgY2FsbGluZyBjb21wb25lbnQuXG4gICAgICogU2VlIHNlYXJjaCBpbnB1dCBleGFtcGxlcyBmb3IgZGV0YWlscy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlGbiA9IHRoaXMuX2RlZmF1bHREaXNwbGF5O1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBBZGRPbiBCdXR0b24gc2hvdWxkIGJlIGZvY3VzYWJsZVxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBidXR0b25Gb2N1c2FibGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgY2xlYXIgYnV0dG9uIHNob3VsZCBiZSBmb2N1c2FibGUuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2xlYXJCdXR0b25Gb2N1c2FibGUgPSB0cnVlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGNvbWJvYm94IGlzIHJlYWRvbmx5LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVhZE9ubHkgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBjb21ib2JveCBzaG91bGQgYmUgYnVpbHQgb24gbW9iaWxlIG1vZGUgKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZSA9IGZhbHNlO1xuXG4gICAgLyoqIE11bHRpIElucHV0IE1vYmlsZSBDb25maWd1cmF0aW9uLCBpdCdzIGFwcGxpZWQgb25seSwgd2hlbiBtb2JpbGUgaXMgZW5hYmxlZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgbW9iaWxlQ29uZmlnOiBNb2JpbGVNb2RlQ29uZmlnO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gZGlzcGxheSB0aGUgYWRkb24gYnV0dG9uLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0Ryb3Bkb3duQnV0dG9uID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gcmV0dXJuIHJlc3VsdHMgd2hlcmUgdGhlIGlucHV0IG1hdGNoZXMgdGhlIGVudGlyZSBzdHJpbmcuIEJ5IGRlZmF1bHQsIG9ubHkgcmVzdWx0cyB0aGF0IHN0YXJ0XG4gICAgICogd2l0aCB0aGUgaW5wdXQgc2VhcmNoIHRlcm0gd2lsbCBiZSByZXR1cm5lZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGluY2x1ZGVzID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgdG9vbHRpcCBmb3IgdGhlIG11bHRpLWlucHV0IGljb24uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB0aXRsZTogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgbGlzdCBpdGVtIG9wdGlvbnMgc2hvdWxkIGJlIHJlbmRlcmVkIGFzIGJ5bGluZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGJ5bGluZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQWN0aW9uIHRvIHBlcmZvcm0gd2hlbiB1c2VyIHNoaWZ0cyBmb2N1cyBmcm9tIHRoZSBkcm9wZG93bi5cbiAgICAgKiAtIGBjbG9zZWAgd2lsbCBjbG9zZSB0aGUgZHJvcGRvd24gcHJlc2VydmluZyBwcmV2aW91c2x5IHNlbGVjdGVkIHZhbHVlLlxuICAgICAqIC0gYGNsb3NlQW5kU2VsZWN0YCB3aWxsIGNsb3NlIHRoZSBkcm9wZG93biBhbmQgc2VsZWN0IGxhc3QgZm9jdXNlZCBkcm9wZG93biBpdGVtLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGFiT3V0U3RyYXRlZ3k6ICdjbG9zZScgfCAnY2xvc2VBbmRTZWxlY3QnID0gJ2Nsb3NlQW5kU2VsZWN0JztcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gYW4gaXRlbSBpcyBjbGlja2VkLiBVc2UgKiRldmVudCogdG8gcmV0cmlldmUgaXQuICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgaXRlbUNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxDb21ib2JveEl0ZW0+ID0gbmV3IEV2ZW50RW1pdHRlcjxDb21ib2JveEl0ZW0+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCwgd2hlbiB0aGUgY29tYm9ib3gncyBwb3BvdmVyIGJvZHkgaXMgb3BlbmVkIG9yIGNsb3NlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IG9wZW5DaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGlucHV0IHRleHQgY2hhbmdlcy4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBpbnB1dFRleHRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoTGlzdENvbXBvbmVudClcbiAgICBsaXN0Q29tcG9uZW50OiBMaXN0Q29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdzZWFyY2hJbnB1dEVsZW1lbnQnKVxuICAgIHNlYXJjaElucHV0RWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChQb3BvdmVyQ29tcG9uZW50KVxuICAgIHBvcG92ZXJDb21wb25lbnQ6IFBvcG92ZXJDb21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoSW5wdXRHcm91cENvbXBvbmVudClcbiAgICBpbnB1dEdyb3VwOiBJbnB1dEdyb3VwQ29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKEZEX0xJU1RfTUVTU0FHRV9ESVJFQ1RJVkUpXG4gICAgbGlzdE1lc3NhZ2VzOiBRdWVyeUxpc3Q8TGlzdE1lc3NhZ2VEaXJlY3RpdmU+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdjb250cm9sVGVtcGxhdGUnKVxuICAgIGNvbnRyb2xUZW1wbGF0ZTogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdsaXN0VGVtcGxhdGUnKVxuICAgIGxpc3RUZW1wbGF0ZTogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqIEtleXMsIHRoYXQgd29uJ3QgdHJpZ2dlciB0aGUgcG9wb3ZlcidzIG9wZW4gc3RhdGUsIHdoZW4gZGlzcGF0Y2hlZCBvbiBzZWFyY2ggaW5wdXQgKi9cbiAgICByZWFkb25seSBub25PcGVuaW5nS2V5czogbnVtYmVyW10gPSBbXG4gICAgICAgIEVTQ0FQRSxcbiAgICAgICAgRU5URVIsXG4gICAgICAgIExFRlRfQVJST1csXG4gICAgICAgIFJJR0hUX0FSUk9XLFxuICAgICAgICBET1dOX0FSUk9XLFxuICAgICAgICBVUF9BUlJPVyxcbiAgICAgICAgQ09OVFJPTCxcbiAgICAgICAgVEFCLFxuICAgICAgICBTSElGVFxuICAgIF07XG5cbiAgICAvKiogS2V5cywgdGhhdCB3aWxsIGNsb3NlIHBvcG92ZXIncyBib2R5LCB3aGVuIGRpc3BhdGNoZWQgb24gc2VhcmNoIGlucHV0ICovXG4gICAgcmVhZG9ubHkgY2xvc2luZ0tleXM6IG51bWJlcltdID0gW0VTQ0FQRV07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IF9yZXBvc2l0aW9uU2Nyb2xsU3RyYXRlZ3k6IFJlcG9zaXRpb25TY3JvbGxTdHJhdGVneTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBjb21ib2JveCBpcyBvcGVuZWQuICovXG4gICAgb3BlbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdGhlIGlucHV0IGNvdXAgaXMgaW4gdGhlIHNoZWxsYmFyLiBPbmx5IGZvciBpbnRlcm5hbCB1c2UgYnkgY29tYm9ib3ggY29tcG9uZW50XG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIGluU2hlbGxiYXIgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZGlzcGxheWVkVmFsdWVzOiBhbnlbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBpbnB1dFRleHRWYWx1ZSA9ICcnO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjbGVhcklucHV0QnRuRm9jdXNlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF92YWx1ZTogYW55O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25Ub3VjaGVkID0gKCk6IHZvaWQgPT4ge307XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9vdmVybGF5OiBPdmVybGF5LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfZHluYW1pY0NvbXBvbmVudFNlcnZpY2U6IER5bmFtaWNDb21wb25lbnRTZXJ2aWNlLFxuICAgICAgICByZWFkb25seSBfY29udGVudERlbnNpdHlPYnNlcnZlcjogQ29udGVudERlbnNpdHlPYnNlcnZlclxuICAgICkge1xuICAgICAgICB0aGlzLl9yZXBvc2l0aW9uU2Nyb2xsU3RyYXRlZ3kgPSB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbih7IGF1dG9DbG9zZTogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seSkge1xuICAgICAgICAgICAgdGhpcy5zaG93RHJvcGRvd25CdXR0b24gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9yZWZyZXNoRGlzcGxheWVkVmFsdWVzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRyb3Bkb3duVmFsdWVzICYmIChjaGFuZ2VzLmRyb3Bkb3duVmFsdWVzIHx8IGNoYW5nZXMuc2VhcmNoVGVybSkpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hEaXNwbGF5ZWRWYWx1ZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYWRkU2hlbGxiYXJDbGFzcygpO1xuXG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0VXBNb2JpbGVNb2RlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uSW5wdXRLZXlkb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBUQUIpICYmIHRoaXMub3Blbikge1xuICAgICAgICAgICAgdGhpcy5fY2xvc2UoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRU5URVIpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hGbikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoRm4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRE9XTl9BUlJPVykpIHtcbiAgICAgICAgICAgIGlmIChldmVudC5hbHRLZXkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZXNldERpc3BsYXllZFZhbHVlcygpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNPcGVuQ2hhbmdlSGFuZGxlKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMub3BlbiAmJiB0aGlzLmxpc3RDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3RDb21wb25lbnQuc2V0SXRlbUFjdGl2ZSgwKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMub3Blbikge1xuICAgICAgICAgICAgICAgIHRoaXMuX2Nob29zZU90aGVySXRlbSgxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFVQX0FSUk9XKSkge1xuICAgICAgICAgICAgdGhpcy5fY2hvb3NlT3RoZXJJdGVtKC0xKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIHRoaXMuY2xvc2luZ0tleXMpKSB7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZUhhbmRsZShmYWxzZSk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIHRoaXMub3Blbk9uS2V5Ym9hcmRFdmVudCAmJlxuICAgICAgICAgICAgIWV2ZW50LmN0cmxLZXkgJiZcbiAgICAgICAgICAgICFldmVudC5hbHRLZXkgJiZcbiAgICAgICAgICAgICFLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgdGhpcy5ub25PcGVuaW5nS2V5cylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZUhhbmRsZSh0cnVlKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzRW1wdHlWYWx1ZSAmJiBLZXlVdGlsLmlzS2V5VHlwZShldmVudCwgJ2NvbnRyb2wnKSAmJiAhS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIEJBQ0tTUEFDRSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3RDb21wb25lbnQuc2V0SXRlbUFjdGl2ZSgwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25JdGVtS2V5RG93bkhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBFTlRFUikgfHwgS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFNQQUNFKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMub25NZW51Q2xpY2tIYW5kbGVyKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25NZW51Q2xpY2tIYW5kbGVyKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlIHx8IHZhbHVlID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBpbmRleDogbnVtYmVyID0gdGhpcy5kcm9wZG93blZhbHVlcy5maW5kSW5kZXgoKF92YWx1ZSkgPT4gX3ZhbHVlID09PSB2YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVDbGlja0FjdGlvbnModmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJIaWdobGlnaHQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuaXRlbUNsaWNrZWQuZW1pdCh7IGl0ZW06IHZhbHVlLCBpbmRleCB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBIYW5kbGUgZGlhbG9nIGRpc21pc3NpbmcsIGNsb3NlcyBwb3BvdmVyIGFuZCBzZXRzIGJhY2t1cCBkYXRhLiAqL1xuICAgIGRpYWxvZ0Rpc21pc3ModGVybTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5wdXRUZXh0ID0gdGhpcy5kaXNwbGF5Rm4odGVybSk7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUodGVybSk7XG4gICAgICAgIHRoaXMuaXNPcGVuQ2hhbmdlSGFuZGxlKGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKiogSGFuZGxlIGRpYWxvZyBhcHByb3ZhbCwgY2xvc2VzIHBvcG92ZXIgYW5kIHByb3BhZ2F0ZXMgZGF0YSBjaGFuZ2VzLiAqL1xuICAgIGRpYWxvZ0FwcHJvdmUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Byb3BhZ2F0ZUNoYW5nZSgpO1xuICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZUhhbmRsZShmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIElmIHRydWUgdmFsdWUgZW1wdHkgKi9cbiAgICBnZXQgaXNFbXB0eVZhbHVlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaW5wdXRUZXh0IHx8IHRoaXMuaW5wdXRUZXh0Py50cmltKCkubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIC8qKiBJbnB1dCB0ZXh0IG9mIHRoZSBpbnB1dC4gKi9cbiAgICBzZXQgaW5wdXRUZXh0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5pbnB1dFRleHRWYWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmlucHV0VGV4dENoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICAgICAgaWYgKCF0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5fcHJvcGFnYXRlQ2hhbmdlKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IGlucHV0VGV4dCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnB1dFRleHRWYWx1ZTtcbiAgICB9XG5cbiAgICAvKiogR2V0IHRoZSBnbHlwaCB2YWx1ZSBiYXNlZCBvbiB3aGV0aGVyIHRoZSBjb21ib2JveCBpcyB1c2VkIGFzIGEgc2VhcmNoIGZpZWxkIG9yIG5vdC4gKi9cbiAgICBnZXQgZ2x5cGhWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1NlYXJjaCA/ICdzZWFyY2gnIDogdGhpcy5nbHlwaDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9oYW5kbGVDbGVhclNlYXJjaFRlcm0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5wdXRUZXh0VmFsdWUgPSAnJztcbiAgICAgICAgdGhpcy5pbnB1dFRleHRDaGFuZ2UuZW1pdCgnJyk7XG4gICAgICAgIHRoaXMuZGlzcGxheWVkVmFsdWVzID0gdGhpcy5kcm9wZG93blZhbHVlcyB8fCBbXTtcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICBpZiAoIXRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICB0aGlzLl9wcm9wYWdhdGVDaGFuZ2UoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dFRleHRWYWx1ZSA9IHRoaXMuZGlzcGxheUZuKHZhbHVlKTtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIHBhc3NlZCB0byBsaXN0IGNvbXBvbmVudCAqL1xuICAgIGhhbmRsZUxpc3RGb2N1c0VzY2FwZShkaXJlY3Rpb246IEZvY3VzRXNjYXBlRGlyZWN0aW9uKTogdm9pZCB7XG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cCcpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaGFuZGxlU2VhcmNoVGVybUNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5ZWRWYWx1ZXMgPSB0aGlzLmZpbHRlckZuKHRoaXMuZHJvcGRvd25WYWx1ZXMsIHRoaXMuaW5wdXRUZXh0KTtcbiAgICAgICAgaWYgKHRoaXMucG9wb3ZlckNvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyQ29tcG9uZW50LnJlZnJlc2hQb3NpdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvblByaW1hcnlCdXR0b25DbGljaygpOiB2b2lkIHtcbiAgICAgICAgLy8gUHJldmVudCBwcmltYXJ5IGJ1dHRvbiBjbGljayBiZWhhdmlvdXIgb24gbW9iaWxlc1xuICAgICAgICBpZiAodGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaEZuKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaEZuKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcmVzZXREaXNwbGF5ZWRWYWx1ZXMoKTtcbiAgICAgICAgdGhpcy5pc09wZW5DaGFuZ2VIYW5kbGUoIXRoaXMub3Blbik7XG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgdGhpcy5maWx0ZXJIaWdobGlnaHQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMub3Blbikge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dEVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaXNPcGVuQ2hhbmdlSGFuZGxlKGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICAvKiogUmVzZXQgZGlzcGxheWVkIHZhbHVlcyBvbiBldmVyeSBtb2JpbGUgb3BlbiAqL1xuICAgICAgICBpZiAodGhpcy5tb2JpbGUgJiYgIXRoaXMub3Blbikge1xuICAgICAgICAgICAgdGhpcy5fcmVzZXREaXNwbGF5ZWRWYWx1ZXMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vcGVuICE9PSBpc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMub3BlbiA9IGlzT3BlbjtcbiAgICAgICAgICAgIHRoaXMub3BlbkNoYW5nZS5lbWl0KGlzT3Blbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMub3BlbiAmJiAhdGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQmx1cigpO1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIHRoYXQgaGFuZGxlcyBjb21wbGV0ZSBldmVudCBmcm9tIGF1dG8gY29tcGxldGUgZGlyZWN0aXZlLCBzZXR0aW5nIHRoZSBuZXcgdmFsdWUsIGFuZCBjbG9zaW5nIHBvcG92ZXIgKi9cbiAgICBoYW5kbGVBdXRvQ29tcGxldGUoZXZlbnQ6IEF1dG9Db21wbGV0ZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0VGV4dCAhPT0gZXZlbnQudGVybSkge1xuICAgICAgICAgICAgdGhpcy5pbnB1dFRleHQgPSBldmVudC50ZXJtO1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVTZWFyY2hUZXJtQ2hhbmdlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmZvcmNlQ2xvc2UgJiYgdGhpcy5pbnB1dFRleHQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuQ2hhbmdlSGFuZGxlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaGFuZGxlQmx1cigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLm9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUF1dG9Db21wbGV0ZSh7XG4gICAgICAgICAgICAgICAgdGVybTogdGhpcy5zZWFyY2hJbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSxcbiAgICAgICAgICAgICAgICBmb3JjZUNsb3NlOiBmYWxzZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNsZWFySW5wdXRCdG5Gb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbGVhcklucHV0QnRuRm9jdXNlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjbGVhcklucHV0QnRuQmx1cigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbGVhcklucHV0QnRuRm9jdXNlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiBDdXJyZW50IHNlbGVjdCB2YWx1ZSAqL1xuICAgIGdldFZhbHVlKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dFRleHQgPSB0aGlzLl92YWx1ZSA/IHRoaXMuaW5wdXRUZXh0IDogJyc7XG4gICAgICAgIGlmICh0aGlzLnRhYk91dFN0cmF0ZWd5ID09PSAnY2xvc2VBbmRTZWxlY3QnKSB7XG4gICAgICAgICAgICBjb25zdCBmb2N1c2VkSXRlbSA9IHRoaXMubGlzdENvbXBvbmVudC5nZXRBY3RpdmVJdGVtKCk7XG4gICAgICAgICAgICBpZiAoZm9jdXNlZEl0ZW0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVDbGlja0FjdGlvbnMoZm9jdXNlZEl0ZW0udmFsdWUpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZUhhbmRsZShmYWxzZSk7XG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIHRoYXQgcGlja3Mgb3RoZXIgdmFsdWUgbW92ZWQgZnJvbSBjdXJyZW50IG9uZSBieSBvZmZzZXQsIGNhbGxlZCBvbmx5IHdoZW4gY29tYm9ib3ggaXMgY2xvc2VkICovXG4gICAgcHJpdmF0ZSBfY2hvb3NlT3RoZXJJdGVtKG9mZnNldDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVZhbHVlOiBhbnkgPSB0aGlzLl9nZXRPcHRpb25PYmplY3RCeURpc3BsYXllZFZhbHVlKHRoaXMuaW5wdXRUZXh0VmFsdWUpO1xuICAgICAgICBjb25zdCBpbmRleDogbnVtYmVyID0gdGhpcy5kcm9wZG93blZhbHVlcy5maW5kSW5kZXgoKHZhbHVlKSA9PiB2YWx1ZSA9PT0gYWN0aXZlVmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5kcm9wZG93blZhbHVlc1tpbmRleCArIG9mZnNldF0pIHtcbiAgICAgICAgICAgIHRoaXMub25NZW51Q2xpY2tIYW5kbGVyKHRoaXMuZHJvcGRvd25WYWx1ZXNbaW5kZXggKyBvZmZzZXRdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBNZXRob2QgdGhhdCByZXNldCBmaWx0ZXJpbmcgZm9yIGRpc3BsYXllZCB2YWx1ZXMuIEl0IG92ZXJyaWRlcyBkaXNwbGF5ZWQgdmFsdWVzIGJ5IGFsbCBwb3NzaWJsZSBkcm9wZG93biB2YWx1ZXMgKi9cbiAgICBwcml2YXRlIF9yZXNldERpc3BsYXllZFZhbHVlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5ZWRWYWx1ZXMgPSB0aGlzLmRyb3Bkb3duVmFsdWVzIHx8IFtdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWRkU2hlbGxiYXJDbGFzcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaW5TaGVsbGJhcikge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdmZC1zaGVsbGJhcl9faW5wdXQtZ3JvdXAtaW5wdXQnKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlucHV0R3JvdXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0R3JvdXAuc2V0SW5TaGVsbGJhcih0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGVmYXVsdERpc3BsYXkoc3RyOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7c3RyfWA7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZWZhdWx0RmlsdGVyKGNvbnRlbnRBcnJheTogYW55W10sIHNlYXJjaFRlcm06IGFueSk6IGFueVtdIHtcbiAgICAgICAgdGhpcy5maWx0ZXJIaWdobGlnaHQgPSB0cnVlO1xuICAgICAgICBpZiAodHlwZW9mIHNlYXJjaFRlcm0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25zdCBzZWFyY2hMb3dlciA9IHNlYXJjaFRlcm0udG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50QXJyYXkuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVybSA9IHRoaXMuZGlzcGxheUZuKGl0ZW0pLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmluY2x1ZGVzID8gdGVybS5pbmNsdWRlcyhzZWFyY2hMb3dlcikgOiB0ZXJtLnN0YXJ0c1dpdGgoc2VhcmNoTG93ZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBzZWFyY2hUZXJtID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRBcnJheS5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gPT09IHNlYXJjaFRlcm0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb250ZW50QXJyYXkgfHwgW107XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oYW5kbGVDbGlja0FjdGlvbnModGVybTogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNsb3NlT25TZWxlY3QpIHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuQ2hhbmdlSGFuZGxlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5maWxsT25TZWxlY3QpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUodGVybSk7XG4gICAgICAgICAgICB0aGlzLmlucHV0VGV4dCA9IHRoaXMuZGlzcGxheUZuKHRlcm0pO1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuaW5wdXRUZXh0O1xuICAgICAgICAgICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wcm9wYWdhdGVDaGFuZ2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhhbmRsZVNlYXJjaFRlcm1DaGFuZ2UoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldE9wdGlvbk9iamVjdEJ5RGlzcGxheWVkVmFsdWUoZGlzcGxheVZhbHVlOiBzdHJpbmcpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5kcm9wZG93blZhbHVlcy5maW5kKCh2YWx1ZSkgPT4gdGhpcy5kaXNwbGF5Rm4odmFsdWUpID09PSBkaXNwbGF5VmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVmcmVzaERpc3BsYXllZFZhbHVlcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRUZXh0KSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXllZFZhbHVlcyA9IHRoaXMuZmlsdGVyRm4odGhpcy5kcm9wZG93blZhbHVlcywgdGhpcy5pbnB1dFRleHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWRWYWx1ZXMgPSB0aGlzLmRyb3Bkb3duVmFsdWVzIHx8IFtdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wcm9wYWdhdGVDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNvbW11bmljYXRlQnlPYmplY3QpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5fZ2V0T3B0aW9uT2JqZWN0QnlEaXNwbGF5ZWRWYWx1ZSh0aGlzLmlucHV0VGV4dCk7XG4gICAgICAgICAgICBpZiAodGhpcy5kaXNwbGF5Rm4odmFsdWUpICE9PSB0aGlzLmRpc3BsYXlGbih0aGlzLmdldFZhbHVlKCkpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuZ2V0VmFsdWUoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuaW5wdXRUZXh0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBzZXRWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNvbW11bmljYXRlQnlPYmplY3QpIHtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuZGlzcGxheUZuKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBhc3luYyBfc2V0VXBNb2JpbGVNb2RlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IENPTUJPQk9YX0NPTVBPTkVOVCwgdXNlVmFsdWU6IHRoaXMgfV0sXG4gICAgICAgICAgICBwYXJlbnQ6IHRoaXMuX2luamVjdG9yXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuX2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlLmNyZWF0ZUR5bmFtaWNNb2R1bGUoXG4gICAgICAgICAgICB7IGxpc3RUZW1wbGF0ZTogdGhpcy5saXN0VGVtcGxhdGUsIGNvbnRyb2xUZW1wbGF0ZTogdGhpcy5jb250cm9sVGVtcGxhdGUgfSxcbiAgICAgICAgICAgIENvbWJvYm94TW9iaWxlTW9kdWxlLFxuICAgICAgICAgICAgQ29tYm9ib3hNb2JpbGVDb21wb25lbnQsXG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgICAgaW5qZWN0b3JcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGlzU2VsZWN0ZWQodGVybTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHRlcm1WYWx1ZSA9IHRoaXMuY29tbXVuaWNhdGVCeU9iamVjdCA/IHRlcm0gOiB0aGlzLmRpc3BsYXlGbih0ZXJtKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKSA9PT0gdGVybVZhbHVlO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb2JpbGUgPyBtb2JpbGVUZW1wbGF0ZSA6IGRlc2t0b3BUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2Rlc2t0b3BUZW1wbGF0ZT5cbiAgICA8ZmQtcG9wb3ZlclxuICAgICAgICBhZGRpdGlvbmFsQm9keUNsYXNzPVwiZmQtcG9wb3Zlci1jdXN0b20tbGlzdFwiXG4gICAgICAgIFtjbGFzcy5mZC1jb21ib2JveC1mdWxsLXdpZHRoXT1cImlzU2VhcmNoXCJcbiAgICAgICAgW2lzT3Blbl09XCJvcGVuICYmIGRpc3BsYXllZFZhbHVlcyAmJiBkaXNwbGF5ZWRWYWx1ZXMubGVuZ3RoID4gMFwiXG4gICAgICAgIChpc09wZW5DaGFuZ2UpPVwiaXNPcGVuQ2hhbmdlSGFuZGxlKCRldmVudClcIlxuICAgICAgICBbZmlsbENvbnRyb2xNb2RlXT1cImZpbGxDb250cm9sTW9kZVwiXG4gICAgICAgIFtzY3JvbGxTdHJhdGVneV09XCJfcmVwb3NpdGlvblNjcm9sbFN0cmF0ZWd5XCJcbiAgICAgICAgW2ZvY3VzVHJhcHBlZF09XCJ0cnVlXCJcbiAgICAgICAgW3RyaWdnZXJzXT1cInRyaWdnZXJzXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRPbmx5XCJcbiAgICAgICAgW21heFdpZHRoXT1cIjY0MFwiXG4gICAgICAgIFtjbG9zZU9uT3V0c2lkZUNsaWNrXT1cImNsb3NlT25PdXRzaWRlQ2xpY2tcIlxuICAgID5cbiAgICAgICAgPGZkLXBvcG92ZXItY29udHJvbD5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250cm9sVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9mZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgIDxmZC1wb3BvdmVyLWJvZHkgW2hpZGRlbl09XCIhZGlzcGxheWVkVmFsdWVzLmxlbmd0aFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxpc3RUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2ZkLXBvcG92ZXItYm9keT5cbiAgICA8L2ZkLXBvcG92ZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgbGV0LXRlcm09XCJ0ZXJtXCIgI2l0ZW1Tb3VyY2U+XG4gICAgPHNwYW5cbiAgICAgICAgZmQtbGlzdC10aXRsZVxuICAgICAgICAqbmdJZj1cIiFpdGVtVGVtcGxhdGU7IGVsc2UgY3VzdG9tUmVuZGVyZXJUZW1wbGF0ZVwiXG4gICAgICAgIFtpbm5lckhUTUxdPVwidGVybSB8IGRpc3BsYXlGblBpcGUgOiBkaXNwbGF5Rm4gfCBoaWdobGlnaHQgOiBpbnB1dFRleHQgOiBoaWdobGlnaHRpbmcgJiYgZmlsdGVySGlnaGxpZ2h0XCJcbiAgICA+XG4gICAgPC9zcGFuPlxuICAgIDxuZy10ZW1wbGF0ZSAjY3VzdG9tUmVuZGVyZXJUZW1wbGF0ZT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtVGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHRlcm0gfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21vYmlsZVRlbXBsYXRlPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udHJvbFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvbnRyb2xUZW1wbGF0ZT5cbiAgICA8ZmQtaW5wdXQtZ3JvdXBcbiAgICAgICAgW2J1dHRvbl09XCJzaG93RHJvcGRvd25CdXR0b25cIlxuICAgICAgICBbZ2x5cGhdPVwic2hvd0Ryb3Bkb3duQnV0dG9uID8gZ2x5cGhWYWx1ZSA6IG51bGxcIlxuICAgICAgICBbc3RhdGVdPVwic3RhdGVcIlxuICAgICAgICBbYnV0dG9uRm9jdXNhYmxlXT1cImJ1dHRvbkZvY3VzYWJsZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtyZWFkb25seV09XCJyZWFkT25seVwiXG4gICAgICAgIFtpc0NvbnRyb2xdPVwidHJ1ZVwiXG4gICAgICAgIFtpc0V4cGFuZGVkXT1cIiFtb2JpbGUgJiYgb3BlbiAmJiBkaXNwbGF5ZWRWYWx1ZXMubGVuZ3RoID4gMFwiXG4gICAgICAgIFtzaG93Rm9jdXNdPVwiIWNsZWFySW5wdXRCdG5Gb2N1c2VkXCJcbiAgICAgICAgW2dseXBoQXJpYUxhYmVsXT1cImFyaWFMYWJlbCB8fCAoJ3BsYXRmb3JtTXVsdGlDb21ib2JveC5pbnB1dEdseXBoQXJpYUxhYmVsJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgIFtpY29uVGl0bGVdPVwidGl0bGUgfHwgKCdwbGF0Zm9ybU11bHRpQ29tYm9ib3guaW5wdXRHbHlwaEFyaWFMYWJlbCcgfCBmZFRyYW5zbGF0ZSlcIlxuICAgICAgICAoYWRkT25CdXR0b25DbGlja2VkKT1cIm9uUHJpbWFyeUJ1dHRvbkNsaWNrKClcIlxuICAgICAgICAoY2xpY2spPVwibW9iaWxlICYmIGlzT3BlbkNoYW5nZUhhbmRsZSh0cnVlKVwiXG4gICAgPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNzZWFyY2hJbnB1dEVsZW1lbnRcbiAgICAgICAgICAgIGZka0F1dG9Db21wbGV0ZVxuICAgICAgICAgICAgZmQtaW5wdXQtZ3JvdXAtaW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIHJvbGU9XCJjb21ib2JveFwiXG4gICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiY29tYm9ib3hJZCArICctbGlzdC1yZXN1bHRzJ1wiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWF1dG9jb21wbGV0ZV09XCJhdXRvQ29tcGxldGUgJiYgIW1vYmlsZSA/ICdsaXN0JyA6IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1vd25zXT1cImF1dG9Db21wbGV0ZSAmJiAhbW9iaWxlID8gY29tYm9ib3hJZCArICctcmVzdWx0JyA6IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJhdXRvQ29tcGxldGUgJiYgIW1vYmlsZVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIiFtb2JpbGUgJiYgb3BlbiAmJiBkaXNwbGF5ZWRWYWx1ZXMubGVuZ3RoXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwicmVhZE9ubHkgfHwgZGlzYWJsZWQgPyAtMSA6IG51bGxcIlxuICAgICAgICAgICAgW2VuYWJsZV09XCJhdXRvQ29tcGxldGUgJiYgIW1vYmlsZVwiXG4gICAgICAgICAgICBbZGlzcGxheUZuXT1cImRpc3BsYXlGblwiXG4gICAgICAgICAgICBbb3B0aW9uc109XCJkcm9wZG93blZhbHVlc1wiXG4gICAgICAgICAgICBbaW5wdXRUZXh0XT1cImlucHV0VGV4dFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtcmVhZG9ubHldPVwicmVhZE9ubHlcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIFtpZF09XCJpbnB1dElkXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRUZXh0XCJcbiAgICAgICAgICAgIChvbkNvbXBsZXRlKT1cImhhbmRsZUF1dG9Db21wbGV0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cIm9uSW5wdXRLZXlkb3duSGFuZGxlcigkZXZlbnQpXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImhhbmRsZVNlYXJjaFRlcm1DaGFuZ2UoKVwiXG4gICAgICAgICAgICAoYmx1cik9XCJoYW5kbGVCbHVyKClcIlxuICAgICAgICAvPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJmZC1pbnB1dC1ncm91cF9fYWRkb24gZmQtaW5wdXQtZ3JvdXBfX2FkZG9uLS1idXR0b25cIlxuICAgICAgICAgICAgW2NsYXNzLmZkLXNoZWxsYmFyX19pbnB1dC1ncm91cC1hZGRvbl09XCJpblNoZWxsYmFyXCJcbiAgICAgICAgICAgICpuZ0lmPVwiaXNTZWFyY2ggJiYgc2hvd0NsZWFyQnV0dG9uICYmIGlucHV0VGV4dCAmJiBpbnB1dFRleHQubGVuZ3RoID4gMFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWlucHV0LWdyb3VwX19idXR0b25cIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtmZFR5cGVdPVwiaW5TaGVsbGJhciA/ICdzdGFuZGFyZCcgOiAndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cIkNsZWFyIGlucHV0XCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZmQtc2hlbGxiYXJfX2J1dHRvbl09XCJpblNoZWxsYmFyXCJcbiAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJjbGVhckJ1dHRvbkZvY3VzYWJsZSA/IDAgOiAtMVwiXG4gICAgICAgICAgICAgICAgKGZvY3VzKT1cImNsZWFySW5wdXRCdG5Gb2N1cygpXCJcbiAgICAgICAgICAgICAgICAoYmx1cik9XCJjbGVhcklucHV0QnRuQmx1cigpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZUNsZWFyU2VhcmNoVGVybSgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZmQtaWNvbiBnbHlwaD1cImRlY2xpbmVcIj48L2ZkLWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvZmQtaW5wdXQtZ3JvdXA+XG4gICAgPGRpdiBbaWRdPVwiY29tYm9ib3hJZCArICctbGlzdC1yZXN1bHRzJ1wiIGNsYXNzPVwiZmQtY29tYm9ib3gtY291bnQtbGlzdC1yZXN1bHRzXCI+XG4gICAgICAgIHt7IGRpc3BsYXllZFZhbHVlcy5sZW5ndGggfHwgMCB9fSByZXN1bHQgbGlzdCBpdGVtc1xuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsaXN0VGVtcGxhdGU+XG4gICAgPHVsXG4gICAgICAgIGZkLWxpc3RcbiAgICAgICAgY2xhc3M9XCJmZC1jb21ib2JveC1jdXN0b20tbGlzdFwiXG4gICAgICAgIFtkcm9wZG93bk1vZGVdPVwidHJ1ZVwiXG4gICAgICAgIFtpZF09XCJjb21ib2JveElkICsgJy1yZXN1bHQnXCJcbiAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiY29tYm9ib3hJZCArICctc2VhcmNoJ1wiXG4gICAgICAgIFtzdHlsZS5tYXhIZWlnaHRdPVwiIW1vYmlsZSAmJiBtYXhIZWlnaHRcIlxuICAgICAgICBbaGFzTWVzc2FnZV09XCJsaXN0TWVzc2FnZXMgJiYgbGlzdE1lc3NhZ2VzLmxlbmd0aCA+IDBcIlxuICAgICAgICBbYnlsaW5lXT1cImJ5bGluZVwiXG4gICAgICAgIChrZXlkb3duLnRhYik9XCJfY2xvc2UoKVwiXG4gICAgICAgIChrZXlkb3duLnNoaWZ0LnRhYik9XCJfY2xvc2UoKVwiXG4gICAgICAgIChmb2N1c0VzY2FwZUxpc3QpPVwiaGFuZGxlTGlzdEZvY3VzRXNjYXBlKCRldmVudClcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JvdXBGbjsgZWxzZSBmbGF0TGlzdFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgZGlzcGxheWVkVmFsdWVzIHwgbGlzdEdyb3VwUGlwZSA6IGdyb3VwRm5cIj5cbiAgICAgICAgICAgICAgICA8bGkgcm9sZT1cImdyb3VwXCIgZmQtbGlzdC1ncm91cC1oZWFkZXIgW3RhYmluZGV4XT1cIjBcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZT57eyBncm91cC5rZXkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIGZkLWxpc3QtaXRlbVxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXBsYWNlaG9sZGVyXT1cImdyb3VwLmtleVwiXG4gICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1jb21ib2JveC1saXN0LWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdGVybSBvZiBncm91cC52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJpc1NlbGVjdGVkKHRlcm0pXCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInRlcm1cIlxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbkl0ZW1LZXlEb3duSGFuZGxlcigkZXZlbnQsIHRlcm0pXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTWVudUNsaWNrSGFuZGxlcih0ZXJtKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtU291cmNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHRlcm06IHRlcm0gfVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2ZsYXRMaXN0PlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgZmQtbGlzdC1pdGVtXG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cIjBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtY29tYm9ib3gtbGlzdC1pdGVtXCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdGVybSBvZiBkaXNwbGF5ZWRWYWx1ZXNcIlxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJpc1NlbGVjdGVkKHRlcm0pXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbkl0ZW1LZXlEb3duSGFuZGxlcigkZXZlbnQsIHRlcm0pXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25NZW51Q2xpY2tIYW5kbGVyKHRlcm0pXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwidGVybVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtU291cmNlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgdGVybTogdGVybSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvdWw+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -3,7 +3,7 @@ import { KeyUtil } from '@fundamental-ngx/cdk/utils';
3
3
  import { FD_LANGUAGE, TranslationResolver } from '@fundamental-ngx/i18n';
4
4
  import { LiveAnnouncer } from '@angular/cdk/a11y';
5
5
  import { firstValueFrom, Observable } from 'rxjs';
6
- import { TokenComponent } from "@fundamental-ngx/core/token";
6
+ import { TokenComponent } from '@fundamental-ngx/core/token';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "rxjs";
9
9
  export class MultiAnnouncerDirective {
@@ -100,4 +100,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
100
100
  exports: [MultiAnnouncerDirective]
101
101
  }]
102
102
  }] });
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktYW5ub3VuY2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL211bHRpLWNvbWJvYm94L211bHRpLWFubm91bmNlci9tdWx0aS1hbm5vdW5jZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxlQUFlLEVBQ2YsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFjLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBTzdELE1BQU0sT0FBTyx1QkFBdUI7SUEyQmhDLGNBQWM7SUFDZCxZQUFrRCxVQUFrQztRQUFsQyxlQUFVLEdBQVYsVUFBVSxDQUF3QjtRQW5CcEYsY0FBYztRQUNHLHlCQUFvQixHQUFHLElBQUksbUJBQW1CLEVBQUUsQ0FBQztRQUVsRSxjQUFjO1FBQ04sd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBRXBDLGNBQWM7UUFDTixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFLbEMsY0FBYztRQUNOLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBRTNCLGNBQWM7UUFDRyxtQkFBYyxHQUFrQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFJbkUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxjQUFjO0lBQ04s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TUFBTSxPQUFPLG9CQUFvQjs7aUhBQXBCLG9CQUFvQjtrSEFBcEIsb0JBQW9CLFlBekZwQix1QkFBdUIsYUFBdkIsdUJBQXVCO2tIQXlGdkIsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBSmhDLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsdUJBQXVCLENBQUM7b0JBQ2xDLE9BQU8sRUFBRSxDQUFDLHVCQUF1QixDQUFDO2lCQUNyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERpcmVjdGl2ZSxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ01vZHVsZSxcbiAgICBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBLZXlVdGlsIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRkRfTEFOR1VBR0UsIEZkTGFuZ3VhZ2UsIFRyYW5zbGF0aW9uUmVzb2x2ZXIgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgTGl2ZUFubm91bmNlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUb2tlbkNvbXBvbmVudCB9IGZyb20gXCJAZnVuZGFtZW50YWwtbmd4L2NvcmUvdG9rZW5cIjtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRNdWx0aUFubm91bmNlcl0nLFxuICAgIGV4cG9ydEFzOiAnZmRNdWx0aUFubm91bmNlcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNdWx0aUFubm91bmNlckRpcmVjdGl2ZSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASW5wdXQoKVxuICAgIG11bHRpQW5ub3VuY2VyT3B0aW9uczogYW55W107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oVG9rZW5Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBwcml2YXRlIF90b2tlbnM6IFF1ZXJ5TGlzdDxUb2tlbkNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RyYW5zbGF0aW9uUmVzb2x2ZXIgPSBuZXcgVHJhbnNsYXRpb25SZXNvbHZlcigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9ub1Jlc3VsdHNBbm5vdW5jZWQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzdWx0c0Fubm91bmNlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9sYW5ndWFnZTogRmRMYW5ndWFnZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYW5ub3VuY2VtZW50ID0gJyc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2xpdmVBbm5vdW5jZXI6IExpdmVBbm5vdW5jZXIgPSBpbmplY3QoTGl2ZUFubm91bmNlcik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoRkRfTEFOR1VBR0UpIHByaXZhdGUgcmVhZG9ubHkgX2xhbmd1YWdlJDogT2JzZXJ2YWJsZTxGZExhbmd1YWdlPikge1xuICAgICAgICB0aGlzLl9pbml0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGFzeW5jIF9pbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLl9sYW5ndWFnZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2xhbmd1YWdlJCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXG4gICAgcHJpdmF0ZSBfbWFrZVNlYXJjaFRlcm1DaGFuZ2VBbm5vdW5jZW1lbnRzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5VHlwZShldmVudCwgJ2FscGhhYmV0aWNhbCcpIHx8IEtleVV0aWwuaXNLZXlUeXBlKGV2ZW50LCAnbnVtZXJpYycpKSB7XG4gICAgICAgICAgICB0aGlzLl9saXZlQW5ub3VuY2VyLmNsZWFyKCk7XG4gICAgICAgICAgICBpZiAoIXRoaXMubXVsdGlBbm5vdW5jZXJPcHRpb25zLmxlbmd0aCAmJiAhdGhpcy5fbm9SZXN1bHRzQW5ub3VuY2VkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYnVpbGRBbm5vdW5jZW1lbnQoJ25vUmVzdWx0cycpO1xuICAgICAgICAgICAgICAgIHRoaXMuX25vUmVzdWx0c0Fubm91bmNlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzdWx0c0Fubm91bmNlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm11bHRpQW5ub3VuY2VyT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9idWlsZEFubm91bmNlbWVudCh0aGlzLm11bHRpQW5ub3VuY2VyT3B0aW9ucy5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2J1aWxkQW5ub3VuY2VtZW50KCduYXZpZ2F0ZVNlbGVjdGlvbnNXaXRoQXJyb3dzJyk7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9yZXN1bHRzQW5ub3VuY2VkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX25vUmVzdWx0c0Fubm91bmNlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZXN1bHRzQW5ub3VuY2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5fdG9rZW5zICYmIHRoaXMuX3Rva2Vucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9idWlsZEFubm91bmNlbWVudCgnZXNjYXBlTmF2aWdhdGVUb2tlbnMnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX21ha2VBbm5vdW5jZW1lbnQodGhpcy5fYW5ub3VuY2VtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYnVpbGRBbm5vdW5jZW1lbnQobWVzc2FnZTogc3RyaW5nIHwgbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Fubm91bmNlbWVudCA9XG4gICAgICAgICAgICB0aGlzLl9hbm5vdW5jZW1lbnQgK1xuICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRpb25SZXNvbHZlci5yZXNvbHZlKFxuICAgICAgICAgICAgICAgIHRoaXMuX2xhbmd1YWdlLFxuICAgICAgICAgICAgICAgIHR5cGVvZiBtZXNzYWdlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/ICdjb3JlTXVsdGlJbnB1dC4nICsgbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICA6IG1lc3NhZ2UgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgPyAnY29yZU11bHRpSW5wdXQuY291bnRMaXN0UmVzdWx0c1Npbmd1bGFyJ1xuICAgICAgICAgICAgICAgICAgICA6ICdjb3JlTXVsdGlJbnB1dC5jb3VudExpc3RSZXN1bHRzUGx1cmFsJyxcbiAgICAgICAgICAgICAgICB7IGNvdW50OiBtZXNzYWdlIH1cbiAgICAgICAgICAgICkgK1xuICAgICAgICAgICAgJyAnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBhc3luYyBfbWFrZUFubm91bmNlbWVudChtZXNzYWdlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5fbGl2ZUFubm91bmNlci5hbm5vdW5jZShtZXNzYWdlLCAnYXNzZXJ0aXZlJykudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9hbm5vdW5jZW1lbnQgPSAnJztcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtNdWx0aUFubm91bmNlckRpcmVjdGl2ZV0sXG4gICAgZXhwb3J0czogW011bHRpQW5ub3VuY2VyRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBNdWx0aUFubm91bmNlck1vZHVsZSB7fVxuIl19
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktYW5ub3VuY2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL211bHRpLWNvbWJvYm94L211bHRpLWFubm91bmNlci9tdWx0aS1hbm5vdW5jZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFjLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBTzdELE1BQU0sT0FBTyx1QkFBdUI7SUEyQmhDLGNBQWM7SUFDZCxZQUFrRCxVQUFrQztRQUFsQyxlQUFVLEdBQVYsVUFBVSxDQUF3QjtRQW5CcEYsY0FBYztRQUNHLHlCQUFvQixHQUFHLElBQUksbUJBQW1CLEVBQUUsQ0FBQztRQUVsRSxjQUFjO1FBQ04sd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBRXBDLGNBQWM7UUFDTixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFLbEMsY0FBYztRQUNOLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBRTNCLGNBQWM7UUFDRyxtQkFBYyxHQUFrQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFJbkUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxjQUFjO0lBQ04s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TUFBTSxPQUFPLG9CQUFvQjs7aUhBQXBCLG9CQUFvQjtrSEFBcEIsb0JBQW9CLFlBekZwQix1QkFBdUIsYUFBdkIsdUJBQXVCO2tIQXlGdkIsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBSmhDLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsdUJBQXVCLENBQUM7b0JBQ2xDLE9BQU8sRUFBRSxDQUFDLHVCQUF1QixDQUFDO2lCQUNyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRlbnRDaGlsZHJlbiwgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIEluamVjdCwgaW5qZWN0LCBJbnB1dCwgTmdNb2R1bGUsIFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgS2V5VXRpbCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEZEX0xBTkdVQUdFLCBGZExhbmd1YWdlLCBUcmFuc2xhdGlvblJlc29sdmVyIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9pMThuJztcbmltcG9ydCB7IExpdmVBbm5vdW5jZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVG9rZW5Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdG9rZW4nO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZE11bHRpQW5ub3VuY2VyXScsXG4gICAgZXhwb3J0QXM6ICdmZE11bHRpQW5ub3VuY2VyJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE11bHRpQW5ub3VuY2VyRGlyZWN0aXZlIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbXVsdGlBbm5vdW5jZXJPcHRpb25zOiBhbnlbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihUb2tlbkNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIHByaXZhdGUgX3Rva2VuczogUXVlcnlMaXN0PFRva2VuQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdHJhbnNsYXRpb25SZXNvbHZlciA9IG5ldyBUcmFuc2xhdGlvblJlc29sdmVyKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX25vUmVzdWx0c0Fubm91bmNlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZXN1bHRzQW5ub3VuY2VkID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xhbmd1YWdlOiBGZExhbmd1YWdlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hbm5vdW5jZW1lbnQgPSAnJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbGl2ZUFubm91bmNlcjogTGl2ZUFubm91bmNlciA9IGluamVjdChMaXZlQW5ub3VuY2VyKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoQEluamVjdChGRF9MQU5HVUFHRSkgcHJpdmF0ZSByZWFkb25seSBfbGFuZ3VhZ2UkOiBPYnNlcnZhYmxlPEZkTGFuZ3VhZ2U+KSB7XG4gICAgICAgIHRoaXMuX2luaXQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgYXN5bmMgX2luaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuX2xhbmd1YWdlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fbGFuZ3VhZ2UkKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleXVwJywgWyckZXZlbnQnXSlcbiAgICBwcml2YXRlIF9tYWtlU2VhcmNoVGVybUNoYW5nZUFubm91bmNlbWVudHMoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlUeXBlKGV2ZW50LCAnYWxwaGFiZXRpY2FsJykgfHwgS2V5VXRpbC5pc0tleVR5cGUoZXZlbnQsICdudW1lcmljJykpIHtcbiAgICAgICAgICAgIHRoaXMuX2xpdmVBbm5vdW5jZXIuY2xlYXIoKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5tdWx0aUFubm91bmNlck9wdGlvbnMubGVuZ3RoICYmICF0aGlzLl9ub1Jlc3VsdHNBbm5vdW5jZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9idWlsZEFubm91bmNlbWVudCgnbm9SZXN1bHRzJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbm9SZXN1bHRzQW5ub3VuY2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZXN1bHRzQW5ub3VuY2VkID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubXVsdGlBbm5vdW5jZXJPcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2J1aWxkQW5ub3VuY2VtZW50KHRoaXMubXVsdGlBbm5vdW5jZXJPcHRpb25zLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fYnVpbGRBbm5vdW5jZW1lbnQoJ25hdmlnYXRlU2VsZWN0aW9uc1dpdGhBcnJvd3MnKTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX3Jlc3VsdHNBbm5vdW5jZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm9SZXN1bHRzQW5ub3VuY2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Jlc3VsdHNBbm5vdW5jZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLl90b2tlbnMgJiYgdGhpcy5fdG9rZW5zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2J1aWxkQW5ub3VuY2VtZW50KCdlc2NhcGVOYXZpZ2F0ZVRva2VucycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fbWFrZUFubm91bmNlbWVudCh0aGlzLl9hbm5vdW5jZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9idWlsZEFubm91bmNlbWVudChtZXNzYWdlOiBzdHJpbmcgfCBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYW5ub3VuY2VtZW50ID1cbiAgICAgICAgICAgIHRoaXMuX2Fubm91bmNlbWVudCArXG4gICAgICAgICAgICB0aGlzLl90cmFuc2xhdGlvblJlc29sdmVyLnJlc29sdmUoXG4gICAgICAgICAgICAgICAgdGhpcy5fbGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgdHlwZW9mIG1lc3NhZ2UgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gJ2NvcmVNdWx0aUlucHV0LicgKyBtZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgIDogbWVzc2FnZSA9PT0gMVxuICAgICAgICAgICAgICAgICAgICA/ICdjb3JlTXVsdGlJbnB1dC5jb3VudExpc3RSZXN1bHRzU2luZ3VsYXInXG4gICAgICAgICAgICAgICAgICAgIDogJ2NvcmVNdWx0aUlucHV0LmNvdW50TGlzdFJlc3VsdHNQbHVyYWwnLFxuICAgICAgICAgICAgICAgIHsgY291bnQ6IG1lc3NhZ2UgfVxuICAgICAgICAgICAgKSArXG4gICAgICAgICAgICAnICc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGFzeW5jIF9tYWtlQW5ub3VuY2VtZW50KG1lc3NhZ2U6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLl9saXZlQW5ub3VuY2VyLmFubm91bmNlKG1lc3NhZ2UsICdhc3NlcnRpdmUnKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2Fubm91bmNlbWVudCA9ICcnO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW011bHRpQW5ub3VuY2VyRGlyZWN0aXZlXSxcbiAgICBleHBvcnRzOiBbTXVsdGlBbm5vdW5jZXJEaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIE11bHRpQW5ub3VuY2VyTW9kdWxlIHt9XG4iXX0=
@@ -61,20 +61,6 @@ export class OverflowLayoutService {
61
61
  setConfig(config) {
62
62
  this.config = config;
63
63
  }
64
- /** @hidden */
65
- _emitResult() {
66
- this._result$.next(this.result);
67
- }
68
- /** @hidden */
69
- _listenToSizeChanges(...elements) {
70
- elements.forEach((element) => this._subscription.add(resizeObservable(element)
71
- .pipe(skip(1), filter(() => this._listenToItemResize), distinctUntilChanged(), debounceTime(30))
72
- .subscribe(() => {
73
- setTimeout(() => {
74
- this.fitVisibleItems();
75
- });
76
- })));
77
- }
78
64
  /**
79
65
  * Calculates available space for items and hides items that are not fitting into the container.
80
66
  */
@@ -141,6 +127,10 @@ export class OverflowLayoutService {
141
127
  this._detectChanges$.next();
142
128
  visibleContainerItems.forEach((item, index) => {
143
129
  const itemRef = allItems[index];
130
+ // If item is forced to be visible, just display the item since it's size calculation was already taken care of in previous iteration.
131
+ if (itemRef.overflowItem.forceVisibility) {
132
+ return;
133
+ }
144
134
  if (shouldHideItems && !itemRef.overflowItem.forceVisibility) {
145
135
  item.containerRef.hidden = true;
146
136
  item.softHidden = false;
@@ -206,10 +196,24 @@ export class OverflowLayoutService {
206
196
  const elementSize = elementWidth + parseFloat(elementStyle.marginLeft) + parseFloat(elementStyle.marginRight);
207
197
  return Math.ceil(elementSize);
208
198
  }
199
+ /** @hidden */
200
+ _emitResult() {
201
+ this._result$.next(this.result);
202
+ }
203
+ /** @hidden */
204
+ _listenToSizeChanges(...elements) {
205
+ elements.forEach((element) => this._subscription.add(resizeObservable(element)
206
+ .pipe(skip(1), filter(() => this._listenToItemResize), distinctUntilChanged(), debounceTime(30))
207
+ .subscribe(() => {
208
+ setTimeout(() => {
209
+ this.fitVisibleItems();
210
+ });
211
+ })));
212
+ }
209
213
  }
210
214
  OverflowLayoutService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OverflowLayoutService, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Injectable });
211
215
  OverflowLayoutService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OverflowLayoutService });
212
216
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OverflowLayoutService, decorators: [{
213
217
  type: Injectable
214
218
  }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmZsb3ctbGF5b3V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9vdmVyZmxvdy1sYXlvdXQvb3ZlcmZsb3ctbGF5b3V0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQWMsSUFBSSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBa0IzRyxNQUFNLE9BQU8sNkJBQTZCO0lBQTFDO1FBQ0ksa0NBQWtDO1FBQ2xDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsc0JBQXNCO1FBQ3RCLFVBQUssR0FBc0IsRUFBRSxDQUFDO1FBRTlCLDRCQUE0QjtRQUM1QixnQkFBVyxHQUFzQixFQUFFLENBQUM7UUFFcEMsNkJBQTZCO1FBQzdCLGlCQUFZLEdBQXNCLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0NBQUE7QUFHRCxNQUFNLE9BQU8scUJBQXFCO0lBNkI5Qjs7T0FFRztJQUNILElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELGNBQWM7SUFDZCxZQUFvQixNQUErQjtRQUEvQixXQUFNLEdBQU4sTUFBTSxDQUF5QjtRQXRDbkQ7O1dBRUc7UUFDSCxXQUFNLEdBQUcsSUFBSSw2QkFBNkIsRUFBRSxDQUFDO1FBRTdDLGNBQWM7UUFDTix3QkFBbUIsR0FBRyxJQUFJLENB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QUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDdEUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGdCQUFnQixDQUFDLE9BQW9CO1FBQ3pDLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9DLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUMzRCxNQUFNLFdBQVcsR0FBRyxZQUFZLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTlHLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsQyxDQUFDOztrSEE5UFEscUJBQXFCO3NIQUFyQixxQkFBcUI7MkZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcmVzaXplT2JzZXJ2YWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgT2JzZXJ2YWJsZSwgc2tpcCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPdmVyZmxvd0xheW91dEl0ZW1Db250YWluZXJEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvb3ZlcmZsb3ctbGF5b3V0LWl0ZW0tY29udGFpbmVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBPdmVyZmxvd0xheW91dEZvY3VzYWJsZUl0ZW0gfSBmcm9tICcuL2ludGVyZmFjZXMvb3ZlcmZsb3ctZm9jdXNhYmxlLWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IE92ZXJmbG93SXRlbVJlZiB9IGZyb20gJy4vaW50ZXJmYWNlcy9vdmVyZmxvdy1pdGVtLXJlZi5pbnRlcmZhY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE92ZXJmbG93TGF5b3V0Q29uZmlnIHtcbiAgICBpdGVtczogT3ZlcmZsb3dJdGVtUmVmW107XG4gICAgZm9jdXNhYmxlSXRlbXM6IE92ZXJmbG93TGF5b3V0Rm9jdXNhYmxlSXRlbVtdO1xuICAgIHZpc2libGVJdGVtczogT3ZlcmZsb3dMYXlvdXRJdGVtQ29udGFpbmVyRGlyZWN0aXZlW107XG4gICAgaXRlbXNXcmFwcGVyOiBIVE1MRWxlbWVudDtcbiAgICBzaG93TW9yZUNvbnRhaW5lcjogSFRNTEVsZW1lbnQ7XG4gICAgbGF5b3V0Q29udGFpbmVyRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gICAgbWF4VmlzaWJsZUl0ZW1zOiBudW1iZXI7XG4gICAgZGlyZWN0aW9uOiAnbGVmdCcgfCAncmlnaHQnO1xuICAgIGVuYWJsZUtleWJvYXJkTmF2aWdhdGlvbjogYm9vbGVhbjtcbiAgICByZXZlcnNlSGlkZGVuSXRlbXM6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBPdmVyZmxvd0xheW91dExpc3RlbmluZ1Jlc3VsdCB7XG4gICAgLyoqIFdoZXRoZXIgdG8gc2hvdyBtb3JlIGJ1dHRvbiAqL1xuICAgIHNob3dNb3JlID0gZmFsc2U7XG5cbiAgICAvKiogT3ZlcmZsb3cgaXRlbSBzICovXG4gICAgaXRlbXM6IE92ZXJmbG93SXRlbVJlZltdID0gW107XG5cbiAgICAvKiogSGlkZGVuIG92ZXJmbG93IGl0ZW1zICovXG4gICAgaGlkZGVuSXRlbXM6IE92ZXJmbG93SXRlbVJlZltdID0gW107XG5cbiAgICAvKiogVmlzaWJsZSBvdmVyZmxvdyBpdGVtcyAqL1xuICAgIHZpc2libGVJdGVtczogT3ZlcmZsb3dJdGVtUmVmW10gPSBbXTtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE92ZXJmbG93TGF5b3V0U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogT3ZlcmZsb3cgTGF5b3V0IGNvbmZpZy5cbiAgICAgKi9cbiAgICBjb25maWc6IE92ZXJmbG93TGF5b3V0Q29uZmlnO1xuXG4gICAgLyoqXG4gICAgICogT3ZlcmZsb3cgTGF5b3V0IGNhbGN1bGF0aW9uIHJlc3VsdC5cbiAgICAgKi9cbiAgICByZXN1bHQgPSBuZXcgT3ZlcmZsb3dMYXlvdXRMaXN0ZW5pbmdSZXN1bHQoKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9JdGVtUmVzaXplID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hbGxJdGVtczogT3ZlcmZsb3dJdGVtUmVmW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGlkZGVuSXRlbXM6IE92ZXJmbG93SXRlbVJlZltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RldGVjdENoYW5nZXMkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzdWx0JCA9IG5ldyBTdWJqZWN0PE92ZXJmbG93TGF5b3V0TGlzdGVuaW5nUmVzdWx0PigpO1xuXG4gICAgLyoqXG4gICAgICogT2JzZXJ2YWJsZSB3aGljaCBlbWl0cyB3aGVuIGNoYW5nZXMgZGV0ZWN0aW9uIGlzIHJlcXVpcmVkLlxuICAgICAqL1xuICAgIGdldCBkZXRlY3RDaGFuZ2VzKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGV0ZWN0Q2hhbmdlcyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT2JzZXJ2YWJsZSB3aGljaCBlbWl0cyB3aGVuIG5ldyBjYWxjdWxhdGlvbiByZXN1bHQgaXMgYXZhaWxhYmxlLlxuICAgICAqL1xuICAgIGdldCBvblJlc3VsdCgpOiBPYnNlcnZhYmxlPE92ZXJmbG93TGF5b3V0TGlzdGVuaW5nUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXN1bHQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzdGFydExpc3RlbmluZyhjb25maWc6IE92ZXJmbG93TGF5b3V0Q29uZmlnKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0Q29uZmlnKGNvbmZpZyk7XG4gICAgICAgIHRoaXMuZml0VmlzaWJsZUl0ZW1zKCk7XG4gICAgICAgIHRoaXMuX2xpc3RlblRvU2l6ZUNoYW5nZXModGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudCwgdGhpcy5jb25maWcuaXRlbXNXcmFwcGVyKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldENvbmZpZyhjb25maWc6IE92ZXJmbG93TGF5b3V0Q29uZmlnKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZW1pdFJlc3VsdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVzdWx0JC5uZXh0KHRoaXMucmVzdWx0KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvU2l6ZUNoYW5nZXMoLi4uZWxlbWVudHM6IEhUTUxFbGVtZW50W10pOiB2b2lkIHtcbiAgICAgICAgZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT5cbiAgICAgICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICAgICAgcmVzaXplT2JzZXJ2YWJsZShlbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5fbGlzdGVuVG9JdGVtUmVzaXplKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoMzApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpdFZpc2libGVJdGVtcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyBhdmFpbGFibGUgc3BhY2UgZm9yIGl0ZW1zIGFuZCBoaWRlcyBpdGVtcyB0aGF0IGFyZSBub3QgZml0dGluZyBpbnRvIHRoZSBjb250YWluZXIuXG4gICAgICovXG4gICAgZml0VmlzaWJsZUl0ZW1zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9saXN0ZW5Ub0l0ZW1SZXNpemUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fYWxsSXRlbXMgPSB0aGlzLmNvbmZpZy5pdGVtcztcblxuICAgICAgICBsZXQgYWxsSXRlbXMgPSBbLi4udGhpcy5jb25maWcuaXRlbXNdO1xuICAgICAgICBsZXQgdmlzaWJsZUNvbnRhaW5lckl0ZW1zID0gWy4uLnRoaXMuY29uZmlnLnZpc2libGVJdGVtc107XG5cbiAgICAgICAgdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSBgJHt0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodH1weGA7XG5cbiAgICAgICAgYWxsSXRlbXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIC8vIFNvZnRseSBoaWRlIHByZXZpb3VzbHkgY29tcGxldGVseSBoaWRkZW4gaXRlbSBpbiBvcmRlciB0byBjb3JyZWN0bHkgY2FsY3VsYXRlIGl0J3Mgc2l6ZS5cbiAgICAgICAgICAgIGl0ZW0uc29mdEhpZGRlbiA9IHRydWU7XG4gICAgICAgICAgICBpdGVtLmhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgICAgaXRlbS5pbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgaXRlbS5maXJzdCA9IGluZGV4ID09PSAwO1xuICAgICAgICAgICAgaXRlbS5sYXN0ID0gaW5kZXggPT09IGFsbEl0ZW1zLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICBpdGVtLmdsb2JhbEluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICB2aXNpYmxlQ29udGFpbmVySXRlbXNbaW5kZXhdLmNvbnRhaW5lclJlZi5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcyQubmV4dCgpO1xuXG4gICAgICAgIGFsbEl0ZW1zID0gdGhpcy5jb25maWcuZGlyZWN0aW9uID09PSAncmlnaHQnID8gYWxsSXRlbXMgOiBhbGxJdGVtcy5yZXZlcnNlKCk7XG4gICAgICAgIHZpc2libGVDb250YWluZXJJdGVtcyA9XG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5kaXJlY3Rpb24gPT09ICdyaWdodCcgPyB2aXNpYmxlQ29udGFpbmVySXRlbXMgOiB2aXNpYmxlQ29udGFpbmVySXRlbXMucmV2ZXJzZSgpO1xuXG4gICAgICAgIHRoaXMucmVzdWx0LnNob3dNb3JlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2VtaXRSZXN1bHQoKTtcbiAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgICAgICBjb25zdCBpdGVtc0NvbnRhaW5lcldpZHRoID0gYWxsSXRlbXMucmVkdWNlKFxuICAgICAgICAgICAgKHRvdGFsLCBpdGVtKSA9PiB0b3RhbCArICh0aGlzLl9nZXRFbGVtZW50V2lkdGgoaXRlbS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpIHx8IDApLFxuICAgICAgICAgICAgMFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGNvbnRhaW5lcldpZHRoID49IGl0ZW1zQ29udGFpbmVyV2lkdGggJiZcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLnZpc2libGVJdGVtcy5sZW5ndGggPD0gdGhpcy5jb25maWcubWF4VmlzaWJsZUl0ZW1zICYmXG4gICAgICAgICAgICB0aGlzLl9oaWRkZW5JdGVtcy5sZW5ndGggPT09IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBNYWtlIGFsbCBpdGVtcyBmdWxseSB2aXNpYmxlLlxuICAgICAgICAgICAgYWxsSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGl0ZW0uc29mdEhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnJlc3VsdC5zaG93TW9yZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXN1bHQuaGlkZGVuSXRlbXMgPSB0aGlzLl9oaWRkZW5JdGVtcztcbiAgICAgICAgICAgIHRoaXMuX2VtaXRSZXN1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuX2xpc3RlblRvSXRlbVJlc2l6ZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9ICcnO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVzdWx0LnNob3dNb3JlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fZW1pdFJlc3VsdCgpO1xuICAgICAgICBsZXQgZml0dGluZ0VsbUNvdW50ID0gMDtcbiAgICAgICAgbGV0IGZpdHRpbmdFbG1zV2lkdGggPSAwO1xuICAgICAgICBsZXQgc2hvdWxkSGlkZUl0ZW1zID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3Qgc2hvd01vcmVDb250YWluZXJXaWR0aCA9IE1hdGguY2VpbCh0aGlzLl9nZXRFbGVtZW50V2lkdGgodGhpcy5jb25maWcuc2hvd01vcmVDb250YWluZXIpKTtcbiAgICAgICAgbGV0IGxheW91dFdpZHRoID0gY29udGFpbmVyV2lkdGggLSBzaG93TW9yZUNvbnRhaW5lcldpZHRoO1xuXG4gICAgICAgIC8vIFRyeSB0byBmaW5kIGFsbCBmb3JjZWQgdmlzaWJsZSBpdGVtc1xuICAgICAgICBjb25zdCBmb3JjZWRJdGVtc0luZGV4ZXMgPSB0aGlzLl9nZXRGb3JjZWRJdGVtc0luZGV4ZXMoKTtcblxuICAgICAgICBmb3JjZWRJdGVtc0luZGV4ZXMuZm9yRWFjaCgoaXRlbUluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbmZpZy52aXNpYmxlSXRlbXNbaXRlbUluZGV4XTtcbiAgICAgICAgICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZWxlbWVudFNpemUgPSB0aGlzLl9nZXRFbGVtZW50V2lkdGgoY29udGFpbmVyLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG5cbiAgICAgICAgICAgIGxheW91dFdpZHRoIC09IGVsZW1lbnRTaXplO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBtYXhWaXNpYmxlSXRlbXMgPVxuICAgICAgICAgICAgdGhpcy5jb25maWcubWF4VmlzaWJsZUl0ZW1zIC1cbiAgICAgICAgICAgIGZvcmNlZEl0ZW1zSW5kZXhlcy5maWx0ZXIoKGluZGV4KSA9PiBpbmRleCA+PSB0aGlzLmNvbmZpZy5tYXhWaXNpYmxlSXRlbXMpLmxlbmd0aDtcblxuICAgICAgICBpZiAobGF5b3V0V2lkdGggPCAwICYmIGZvcmNlZEl0ZW1zSW5kZXhlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgJ1RoZXJlIGlzIG5vIGVub3VnaCBzcGFjZSB0byBmaXQgYWxsIGZvcmNlZCB2aXNpYmxlIGl0ZW1zIGludG8gdGhlIGNvbnRhaW5lci4gUGxlYXNlIGFkanVzdCB0aGVpciB2aXNpYmlsaXR5IGFjY29yZGluZ2x5LidcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9kZXRlY3RDaGFuZ2VzJC5uZXh0KCk7XG5cbiAgICAgICAgdmlzaWJsZUNvbnRhaW5lckl0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpdGVtUmVmID0gYWxsSXRlbXNbaW5kZXhdO1xuICAgICAgICAgICAgaWYgKHNob3VsZEhpZGVJdGVtcyAmJiAhaXRlbVJlZi5vdmVyZmxvd0l0ZW0uZm9yY2VWaXNpYmlsaXR5KSB7XG4gICAgICAgICAgICAgICAgaXRlbS5jb250YWluZXJSZWYuaGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpdGVtLnNvZnRIaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpdGVtUmVmLmhpZGRlbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50U2l6ZSA9IHRoaXMuX2dldEVsZW1lbnRXaWR0aChpdGVtLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBjb21iaW5lZFdpZHRoID0gZml0dGluZ0VsbXNXaWR0aCArIGVsZW1lbnRTaXplO1xuXG4gICAgICAgICAgICBjb25zdCBjb25kaXRpb24gPVxuICAgICAgICAgICAgICAgIChjb21iaW5lZFdpZHRoIDw9IGxheW91dFdpZHRoIHx8XG4gICAgICAgICAgICAgICAgICAgIChpdGVtID09PSB0aGlzLmNvbmZpZy52aXNpYmxlSXRlbXNbdGhpcy5jb25maWcudmlzaWJsZUl0ZW1zLmxlbmd0aCAtIDFdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21iaW5lZFdpZHRoIDw9IGxheW91dFdpZHRoICsgc2hvd01vcmVDb250YWluZXJXaWR0aCkpICYmXG4gICAgICAgICAgICAgICAgZml0dGluZ0VsbUNvdW50IDwgbWF4VmlzaWJsZUl0ZW1zO1xuXG4gICAgICAgICAgICBpZiAoY29uZGl0aW9uKSB7XG4gICAgICAgICAgICAgICAgZml0dGluZ0VsbXNXaWR0aCArPSBlbGVtZW50U2l6ZTtcbiAgICAgICAgICAgICAgICBmaXR0aW5nRWxtQ291bnQrKztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIWl0ZW1SZWYub3ZlcmZsb3dJdGVtLmZvcmNlVmlzaWJpbGl0eSkge1xuICAgICAgICAgICAgICAgIHNob3VsZEhpZGVJdGVtcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgaXRlbS5zb2Z0SGlkZGVuID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaXRlbS5jb250YWluZXJSZWYuaGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpdGVtUmVmLmhpZGRlbiA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFJldmVyc2Ugb3JpZ2luYWwgb3JkZXIgYmFjay5cbiAgICAgICAgYWxsSXRlbXMgPSB0aGlzLmNvbmZpZy5kaXJlY3Rpb24gPT09ICdyaWdodCcgPyBhbGxJdGVtcyA6IGFsbEl0ZW1zLnJldmVyc2UoKTtcblxuICAgICAgICBhbGxJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpdGVtLnNvZnRIaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IGhpZGRlbkl0ZW1zID0gYWxsSXRlbXMuZmlsdGVyKChpKSA9PiBpLmhpZGRlbik7XG4gICAgICAgIGhpZGRlbkl0ZW1zID0gdGhpcy5jb25maWcucmV2ZXJzZUhpZGRlbkl0ZW1zID8gaGlkZGVuSXRlbXMucmV2ZXJzZSgpIDogaGlkZGVuSXRlbXM7XG4gICAgICAgIGNvbnN0IHZpc2libGVJdGVtcyA9IGFsbEl0ZW1zLmZpbHRlcigoaSkgPT4gIWkuaGlkZGVuKTtcblxuICAgICAgICB2aXNpYmxlSXRlbXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGl0ZW0uaW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgIGl0ZW0uZmlyc3QgPSBpbmRleCA9PT0gMDtcbiAgICAgICAgICAgIGl0ZW0ubGFzdCA9IGluZGV4ID09PSB2aXNpYmxlSXRlbXMubGVuZ3RoIC0gMTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5faGlkZGVuSXRlbXMgPSBoaWRkZW5JdGVtcy5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpdGVtLmZpcnN0ID0gaW5kZXggPT09IDA7XG4gICAgICAgICAgICBpdGVtLmxhc3QgPSBpbmRleCA9PT0gaGlkZGVuSXRlbXMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIGl0ZW0uaW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnJlc3VsdC5zaG93TW9yZSA9IHRoaXMuX2hpZGRlbkl0ZW1zLmxlbmd0aCA+IDA7XG4gICAgICAgIHRoaXMucmVzdWx0LmhpZGRlbkl0ZW1zID0gdGhpcy5faGlkZGVuSXRlbXM7XG4gICAgICAgIHRoaXMuX2VtaXRSZXN1bHQoKTtcbiAgICAgICAgdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSAnJztcblxuICAgICAgICB0aGlzLl9saXN0ZW5Ub0l0ZW1SZXNpemUgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0Rm9yY2VkSXRlbXNJbmRleGVzKCk6IG51bWJlcltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FsbEl0ZW1zXG4gICAgICAgICAgICAubWFwKChpdGVtLCBpbmRleCkgPT4gKGl0ZW0ub3ZlcmZsb3dJdGVtLmZvcmNlVmlzaWJpbGl0eSA/IGluZGV4IDogLTEpKVxuICAgICAgICAgICAgLmZpbHRlcigoaSkgPT4gaSA+IC0xKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogUmV0dXJucyBjb21iaW5lZCB3aWR0aCBvZiB0aGUgZWxlbWVudCBpbmNsdWRpbmcgbWFyZ2lucy5cbiAgICAgKiBAcGFyYW0gZWxlbWVudCBFbGVtZW50IHRvIGNhbGN1bGF0ZSB3aWR0aCBvZi5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRFbGVtZW50V2lkdGgoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBlbGVtZW50U3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBlbGVtZW50V2lkdGggPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgICAgICBjb25zdCBlbGVtZW50U2l6ZSA9IGVsZW1lbnRXaWR0aCArIHBhcnNlRmxvYXQoZWxlbWVudFN0eWxlLm1hcmdpbkxlZnQpICsgcGFyc2VGbG9hdChlbGVtZW50U3R5bGUubWFyZ2luUmlnaHQpO1xuXG4gICAgICAgIHJldHVybiBNYXRoLmNlaWwoZWxlbWVudFNpemUpO1xuICAgIH1cbn1cbiJdfQ==
219
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmZsb3ctbGF5b3V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9vdmVyZmxvdy1sYXlvdXQvb3ZlcmZsb3ctbGF5b3V0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQWMsSUFBSSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBa0IzRyxNQUFNLE9BQU8sNkJBQTZCO0lBQTFDO1FBQ0ksa0NBQWtDO1FBQ2xDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsc0JBQXNCO1FBQ3RCLFVBQUssR0FBc0IsRUFBRSxDQUFDO1FBRTlCLDRCQUE0QjtRQUM1QixnQkFBVyxHQUFzQixFQUFFLENBQUM7UUFFcEMsNkJBQTZCO1FBQzdCLGlCQUFZLEdBQXNCLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0NBQUE7QUFHRCxNQUFNLE9BQU8scUJBQXFCO0lBNkI5Qjs7T0FFRztJQUNILElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELGNBQWM7SUFDZCxZQUFvQixNQUErQjtRQUEvQixXQUFNLEdBQU4sTUFBTSxDQUF5QjtRQXRDbkQ7O1dBRUc7UUFDSCxXQUFNLEdBQUcsSUFBSSw2QkFBNkIsRUFBRSxDQUFDO1FBRTdDLGNBQWM7UUFDTix3QkFBbUIsR0FBRyxJQUFJLENB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LFdBQVc7UUFDZixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELGNBQWM7SUFDTixvQkFBb0IsQ0FBQyxHQUFHLFFBQXVCO1FBQ25ELFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDbEIsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO2FBQ3BCLElBQUksQ0FDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUN0QyxvQkFBb0IsRUFBRSxFQUN0QixZQUFZLENBQUMsRUFBRSxDQUFDLENBQ25CO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNaLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzNCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQ1QsQ0FDSixDQUFDO0lBQ04sQ0FBQzs7a0hBbFFRLHFCQUFxQjtzSEFBckIscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHJlc2l6ZU9ic2VydmFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIE9ic2VydmFibGUsIHNraXAsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT3ZlcmZsb3dMYXlvdXRJdGVtQ29udGFpbmVyRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL292ZXJmbG93LWxheW91dC1pdGVtLWNvbnRhaW5lci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgT3ZlcmZsb3dMYXlvdXRGb2N1c2FibGVJdGVtIH0gZnJvbSAnLi9pbnRlcmZhY2VzL292ZXJmbG93LWZvY3VzYWJsZS1pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPdmVyZmxvd0l0ZW1SZWYgfSBmcm9tICcuL2ludGVyZmFjZXMvb3ZlcmZsb3ctaXRlbS1yZWYuaW50ZXJmYWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBPdmVyZmxvd0xheW91dENvbmZpZyB7XG4gICAgaXRlbXM6IE92ZXJmbG93SXRlbVJlZltdO1xuICAgIGZvY3VzYWJsZUl0ZW1zOiBPdmVyZmxvd0xheW91dEZvY3VzYWJsZUl0ZW1bXTtcbiAgICB2aXNpYmxlSXRlbXM6IE92ZXJmbG93TGF5b3V0SXRlbUNvbnRhaW5lckRpcmVjdGl2ZVtdO1xuICAgIGl0ZW1zV3JhcHBlcjogSFRNTEVsZW1lbnQ7XG4gICAgc2hvd01vcmVDb250YWluZXI6IEhUTUxFbGVtZW50O1xuICAgIGxheW91dENvbnRhaW5lckVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICAgIG1heFZpc2libGVJdGVtczogbnVtYmVyO1xuICAgIGRpcmVjdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0JztcbiAgICBlbmFibGVLZXlib2FyZE5hdmlnYXRpb246IGJvb2xlYW47XG4gICAgcmV2ZXJzZUhpZGRlbkl0ZW1zOiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgT3ZlcmZsb3dMYXlvdXRMaXN0ZW5pbmdSZXN1bHQge1xuICAgIC8qKiBXaGV0aGVyIHRvIHNob3cgbW9yZSBidXR0b24gKi9cbiAgICBzaG93TW9yZSA9IGZhbHNlO1xuXG4gICAgLyoqIE92ZXJmbG93IGl0ZW0gcyAqL1xuICAgIGl0ZW1zOiBPdmVyZmxvd0l0ZW1SZWZbXSA9IFtdO1xuXG4gICAgLyoqIEhpZGRlbiBvdmVyZmxvdyBpdGVtcyAqL1xuICAgIGhpZGRlbkl0ZW1zOiBPdmVyZmxvd0l0ZW1SZWZbXSA9IFtdO1xuXG4gICAgLyoqIFZpc2libGUgb3ZlcmZsb3cgaXRlbXMgKi9cbiAgICB2aXNpYmxlSXRlbXM6IE92ZXJmbG93SXRlbVJlZltdID0gW107XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBPdmVyZmxvd0xheW91dFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIE92ZXJmbG93IExheW91dCBjb25maWcuXG4gICAgICovXG4gICAgY29uZmlnOiBPdmVyZmxvd0xheW91dENvbmZpZztcblxuICAgIC8qKlxuICAgICAqIE92ZXJmbG93IExheW91dCBjYWxjdWxhdGlvbiByZXN1bHQuXG4gICAgICovXG4gICAgcmVzdWx0ID0gbmV3IE92ZXJmbG93TGF5b3V0TGlzdGVuaW5nUmVzdWx0KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvSXRlbVJlc2l6ZSA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWxsSXRlbXM6IE92ZXJmbG93SXRlbVJlZltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hpZGRlbkl0ZW1zOiBPdmVyZmxvd0l0ZW1SZWZbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZXRlY3RDaGFuZ2VzJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Jlc3VsdCQgPSBuZXcgU3ViamVjdDxPdmVyZmxvd0xheW91dExpc3RlbmluZ1Jlc3VsdD4oKTtcblxuICAgIC8qKlxuICAgICAqIE9ic2VydmFibGUgd2hpY2ggZW1pdHMgd2hlbiBjaGFuZ2VzIGRldGVjdGlvbiBpcyByZXF1aXJlZC5cbiAgICAgKi9cbiAgICBnZXQgZGV0ZWN0Q2hhbmdlcygpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RldGVjdENoYW5nZXMkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9ic2VydmFibGUgd2hpY2ggZW1pdHMgd2hlbiBuZXcgY2FsY3VsYXRpb24gcmVzdWx0IGlzIGF2YWlsYWJsZS5cbiAgICAgKi9cbiAgICBnZXQgb25SZXN1bHQoKTogT2JzZXJ2YWJsZTxPdmVyZmxvd0xheW91dExpc3RlbmluZ1Jlc3VsdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzdWx0JC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsUmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc3RhcnRMaXN0ZW5pbmcoY29uZmlnOiBPdmVyZmxvd0xheW91dENvbmZpZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldENvbmZpZyhjb25maWcpO1xuICAgICAgICB0aGlzLmZpdFZpc2libGVJdGVtcygpO1xuICAgICAgICB0aGlzLl9saXN0ZW5Ub1NpemVDaGFuZ2VzKHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMuY29uZmlnLml0ZW1zV3JhcHBlcik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXRDb25maWcoY29uZmlnOiBPdmVyZmxvd0xheW91dENvbmZpZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIGF2YWlsYWJsZSBzcGFjZSBmb3IgaXRlbXMgYW5kIGhpZGVzIGl0ZW1zIHRoYXQgYXJlIG5vdCBmaXR0aW5nIGludG8gdGhlIGNvbnRhaW5lci5cbiAgICAgKi9cbiAgICBmaXRWaXNpYmxlSXRlbXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xpc3RlblRvSXRlbVJlc2l6ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9hbGxJdGVtcyA9IHRoaXMuY29uZmlnLml0ZW1zO1xuXG4gICAgICAgIGxldCBhbGxJdGVtcyA9IFsuLi50aGlzLmNvbmZpZy5pdGVtc107XG4gICAgICAgIGxldCB2aXNpYmxlQ29udGFpbmVySXRlbXMgPSBbLi4udGhpcy5jb25maWcudmlzaWJsZUl0ZW1zXTtcblxuICAgICAgICB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9IGAke3RoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0fXB4YDtcblxuICAgICAgICBhbGxJdGVtcy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgLy8gU29mdGx5IGhpZGUgcHJldmlvdXNseSBjb21wbGV0ZWx5IGhpZGRlbiBpdGVtIGluIG9yZGVyIHRvIGNvcnJlY3RseSBjYWxjdWxhdGUgaXQncyBzaXplLlxuICAgICAgICAgICAgaXRlbS5zb2Z0SGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgICAgIGl0ZW0uaGlkZGVuID0gZmFsc2U7XG4gICAgICAgICAgICBpdGVtLmluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICBpdGVtLmZpcnN0ID0gaW5kZXggPT09IDA7XG4gICAgICAgICAgICBpdGVtLmxhc3QgPSBpbmRleCA9PT0gYWxsSXRlbXMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIGl0ZW0uZ2xvYmFsSW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgIHZpc2libGVDb250YWluZXJJdGVtc1tpbmRleF0uY29udGFpbmVyUmVmLmhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9kZXRlY3RDaGFuZ2VzJC5uZXh0KCk7XG5cbiAgICAgICAgYWxsSXRlbXMgPSB0aGlzLmNvbmZpZy5kaXJlY3Rpb24gPT09ICdyaWdodCcgPyBhbGxJdGVtcyA6IGFsbEl0ZW1zLnJldmVyc2UoKTtcbiAgICAgICAgdmlzaWJsZUNvbnRhaW5lckl0ZW1zID1cbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmRpcmVjdGlvbiA9PT0gJ3JpZ2h0JyA/IHZpc2libGVDb250YWluZXJJdGVtcyA6IHZpc2libGVDb250YWluZXJJdGVtcy5yZXZlcnNlKCk7XG5cbiAgICAgICAgdGhpcy5yZXN1bHQuc2hvd01vcmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fZW1pdFJlc3VsdCgpO1xuICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICAgIGNvbnN0IGl0ZW1zQ29udGFpbmVyV2lkdGggPSBhbGxJdGVtcy5yZWR1Y2UoXG4gICAgICAgICAgICAodG90YWwsIGl0ZW0pID0+IHRvdGFsICsgKHRoaXMuX2dldEVsZW1lbnRXaWR0aChpdGVtLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkgfHwgMCksXG4gICAgICAgICAgICAwXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgY29udGFpbmVyV2lkdGggPj0gaXRlbXNDb250YWluZXJXaWR0aCAmJlxuICAgICAgICAgICAgdGhpcy5jb25maWcudmlzaWJsZUl0ZW1zLmxlbmd0aCA8PSB0aGlzLmNvbmZpZy5tYXhWaXNpYmxlSXRlbXMgJiZcbiAgICAgICAgICAgIHRoaXMuX2hpZGRlbkl0ZW1zLmxlbmd0aCA9PT0gMFxuICAgICAgICApIHtcbiAgICAgICAgICAgIC8vIE1ha2UgYWxsIGl0ZW1zIGZ1bGx5IHZpc2libGUuXG4gICAgICAgICAgICBhbGxJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbS5zb2Z0SGlkZGVuID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMucmVzdWx0LnNob3dNb3JlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlc3VsdC5oaWRkZW5JdGVtcyA9IHRoaXMuX2hpZGRlbkl0ZW1zO1xuICAgICAgICAgICAgdGhpcy5fZW1pdFJlc3VsdCgpO1xuICAgICAgICAgICAgdGhpcy5fbGlzdGVuVG9JdGVtUmVzaXplID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gJyc7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXN1bHQuc2hvd01vcmUgPSB0cnVlO1xuICAgICAgICB0aGlzLl9lbWl0UmVzdWx0KCk7XG4gICAgICAgIGxldCBmaXR0aW5nRWxtQ291bnQgPSAwO1xuICAgICAgICBsZXQgZml0dGluZ0VsbXNXaWR0aCA9IDA7XG4gICAgICAgIGxldCBzaG91bGRIaWRlSXRlbXMgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCBzaG93TW9yZUNvbnRhaW5lcldpZHRoID0gTWF0aC5jZWlsKHRoaXMuX2dldEVsZW1lbnRXaWR0aCh0aGlzLmNvbmZpZy5zaG93TW9yZUNvbnRhaW5lcikpO1xuICAgICAgICBsZXQgbGF5b3V0V2lkdGggPSBjb250YWluZXJXaWR0aCAtIHNob3dNb3JlQ29udGFpbmVyV2lkdGg7XG5cbiAgICAgICAgLy8gVHJ5IHRvIGZpbmQgYWxsIGZvcmNlZCB2aXNpYmxlIGl0ZW1zXG4gICAgICAgIGNvbnN0IGZvcmNlZEl0ZW1zSW5kZXhlcyA9IHRoaXMuX2dldEZvcmNlZEl0ZW1zSW5kZXhlcygpO1xuXG4gICAgICAgIGZvcmNlZEl0ZW1zSW5kZXhlcy5mb3JFYWNoKChpdGVtSW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuY29uZmlnLnZpc2libGVJdGVtc1tpdGVtSW5kZXhdO1xuICAgICAgICAgICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50U2l6ZSA9IHRoaXMuX2dldEVsZW1lbnRXaWR0aChjb250YWluZXIuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcblxuICAgICAgICAgICAgbGF5b3V0V2lkdGggLT0gZWxlbWVudFNpemU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IG1heFZpc2libGVJdGVtcyA9XG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5tYXhWaXNpYmxlSXRlbXMgLVxuICAgICAgICAgICAgZm9yY2VkSXRlbXNJbmRleGVzLmZpbHRlcigoaW5kZXgpID0+IGluZGV4ID49IHRoaXMuY29uZmlnLm1heFZpc2libGVJdGVtcykubGVuZ3RoO1xuXG4gICAgICAgIGlmIChsYXlvdXRXaWR0aCA8IDAgJiYgZm9yY2VkSXRlbXNJbmRleGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAnVGhlcmUgaXMgbm8gZW5vdWdoIHNwYWNlIHRvIGZpdCBhbGwgZm9yY2VkIHZpc2libGUgaXRlbXMgaW50byB0aGUgY29udGFpbmVyLiBQbGVhc2UgYWRqdXN0IHRoZWlyIHZpc2liaWxpdHkgYWNjb3JkaW5nbHkuJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2RldGVjdENoYW5nZXMkLm5leHQoKTtcblxuICAgICAgICB2aXNpYmxlQ29udGFpbmVySXRlbXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1SZWYgPSBhbGxJdGVtc1tpbmRleF07XG4gICAgICAgICAgICAvLyBJZiBpdGVtIGlzIGZvcmNlZCB0byBiZSB2aXNpYmxlLCBqdXN0IGRpc3BsYXkgdGhlIGl0ZW0gc2luY2UgaXQncyBzaXplIGNhbGN1bGF0aW9uIHdhcyBhbHJlYWR5IHRha2VuIGNhcmUgb2YgaW4gcHJldmlvdXMgaXRlcmF0aW9uLlxuICAgICAgICAgICAgaWYgKGl0ZW1SZWYub3ZlcmZsb3dJdGVtLmZvcmNlVmlzaWJpbGl0eSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzaG91bGRIaWRlSXRlbXMgJiYgIWl0ZW1SZWYub3ZlcmZsb3dJdGVtLmZvcmNlVmlzaWJpbGl0eSkge1xuICAgICAgICAgICAgICAgIGl0ZW0uY29udGFpbmVyUmVmLmhpZGRlbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgaXRlbS5zb2Z0SGlkZGVuID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaXRlbVJlZi5oaWRkZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZWxlbWVudFNpemUgPSB0aGlzLl9nZXRFbGVtZW50V2lkdGgoaXRlbS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgY29tYmluZWRXaWR0aCA9IGZpdHRpbmdFbG1zV2lkdGggKyBlbGVtZW50U2l6ZTtcblxuICAgICAgICAgICAgY29uc3QgY29uZGl0aW9uID1cbiAgICAgICAgICAgICAgICAoY29tYmluZWRXaWR0aCA8PSBsYXlvdXRXaWR0aCB8fFxuICAgICAgICAgICAgICAgICAgICAoaXRlbSA9PT0gdGhpcy5jb25maWcudmlzaWJsZUl0ZW1zW3RoaXMuY29uZmlnLnZpc2libGVJdGVtcy5sZW5ndGggLSAxXSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgY29tYmluZWRXaWR0aCA8PSBsYXlvdXRXaWR0aCArIHNob3dNb3JlQ29udGFpbmVyV2lkdGgpKSAmJlxuICAgICAgICAgICAgICAgIGZpdHRpbmdFbG1Db3VudCA8IG1heFZpc2libGVJdGVtcztcblxuICAgICAgICAgICAgaWYgKGNvbmRpdGlvbikge1xuICAgICAgICAgICAgICAgIGZpdHRpbmdFbG1zV2lkdGggKz0gZWxlbWVudFNpemU7XG4gICAgICAgICAgICAgICAgZml0dGluZ0VsbUNvdW50Kys7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFpdGVtUmVmLm92ZXJmbG93SXRlbS5mb3JjZVZpc2liaWxpdHkpIHtcbiAgICAgICAgICAgICAgICBzaG91bGRIaWRlSXRlbXMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGl0ZW0uc29mdEhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGl0ZW0uY29udGFpbmVyUmVmLmhpZGRlbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgaXRlbVJlZi5oaWRkZW4gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBSZXZlcnNlIG9yaWdpbmFsIG9yZGVyIGJhY2suXG4gICAgICAgIGFsbEl0ZW1zID0gdGhpcy5jb25maWcuZGlyZWN0aW9uID09PSAncmlnaHQnID8gYWxsSXRlbXMgOiBhbGxJdGVtcy5yZXZlcnNlKCk7XG5cbiAgICAgICAgYWxsSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaXRlbS5zb2Z0SGlkZGVuID0gZmFsc2U7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxldCBoaWRkZW5JdGVtcyA9IGFsbEl0ZW1zLmZpbHRlcigoaSkgPT4gaS5oaWRkZW4pO1xuICAgICAgICBoaWRkZW5JdGVtcyA9IHRoaXMuY29uZmlnLnJldmVyc2VIaWRkZW5JdGVtcyA/IGhpZGRlbkl0ZW1zLnJldmVyc2UoKSA6IGhpZGRlbkl0ZW1zO1xuICAgICAgICBjb25zdCB2aXNpYmxlSXRlbXMgPSBhbGxJdGVtcy5maWx0ZXIoKGkpID0+ICFpLmhpZGRlbik7XG5cbiAgICAgICAgdmlzaWJsZUl0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpdGVtLmluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICBpdGVtLmZpcnN0ID0gaW5kZXggPT09IDA7XG4gICAgICAgICAgICBpdGVtLmxhc3QgPSBpbmRleCA9PT0gdmlzaWJsZUl0ZW1zLmxlbmd0aCAtIDE7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2hpZGRlbkl0ZW1zID0gaGlkZGVuSXRlbXMubWFwKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaXRlbS5maXJzdCA9IGluZGV4ID09PSAwO1xuICAgICAgICAgICAgaXRlbS5sYXN0ID0gaW5kZXggPT09IGhpZGRlbkl0ZW1zLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICBpdGVtLmluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5yZXN1bHQuc2hvd01vcmUgPSB0aGlzLl9oaWRkZW5JdGVtcy5sZW5ndGggPiAwO1xuICAgICAgICB0aGlzLnJlc3VsdC5oaWRkZW5JdGVtcyA9IHRoaXMuX2hpZGRlbkl0ZW1zO1xuICAgICAgICB0aGlzLl9lbWl0UmVzdWx0KCk7XG4gICAgICAgIHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gJyc7XG5cbiAgICAgICAgdGhpcy5fbGlzdGVuVG9JdGVtUmVzaXplID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEZvcmNlZEl0ZW1zSW5kZXhlcygpOiBudW1iZXJbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hbGxJdGVtc1xuICAgICAgICAgICAgLm1hcCgoaXRlbSwgaW5kZXgpID0+IChpdGVtLm92ZXJmbG93SXRlbS5mb3JjZVZpc2liaWxpdHkgPyBpbmRleCA6IC0xKSlcbiAgICAgICAgICAgIC5maWx0ZXIoKGkpID0+IGkgPiAtMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFJldHVybnMgY29tYmluZWQgd2lkdGggb2YgdGhlIGVsZW1lbnQgaW5jbHVkaW5nIG1hcmdpbnMuXG4gICAgICogQHBhcmFtIGVsZW1lbnQgRWxlbWVudCB0byBjYWxjdWxhdGUgd2lkdGggb2YuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0RWxlbWVudFdpZHRoKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgZWxlbWVudFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgICAgICAgY29uc3QgZWxlbWVudFdpZHRoID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgICAgY29uc3QgZWxlbWVudFNpemUgPSBlbGVtZW50V2lkdGggKyBwYXJzZUZsb2F0KGVsZW1lbnRTdHlsZS5tYXJnaW5MZWZ0KSArIHBhcnNlRmxvYXQoZWxlbWVudFN0eWxlLm1hcmdpblJpZ2h0KTtcblxuICAgICAgICByZXR1cm4gTWF0aC5jZWlsKGVsZW1lbnRTaXplKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2VtaXRSZXN1bHQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Jlc3VsdCQubmV4dCh0aGlzLnJlc3VsdCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5Ub1NpemVDaGFuZ2VzKC4uLmVsZW1lbnRzOiBIVE1MRWxlbWVudFtdKTogdm9pZCB7XG4gICAgICAgIGVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+XG4gICAgICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgICAgIHJlc2l6ZU9ic2VydmFibGUoZWxlbWVudClcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuX2xpc3RlblRvSXRlbVJlc2l6ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDMwKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maXRWaXNpYmxlSXRlbXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==