@koobiq/components 18.38.0 → 18.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/core/locales/formatters.d.ts +1 -0
  2. package/core/locales/locale-service.d.ts +7 -5
  3. package/core/styles/visual/_layout.scss +10 -0
  4. package/core/validation/validation.d.ts +1 -1
  5. package/esm2022/core/locales/formatters.mjs +4 -3
  6. package/esm2022/core/locales/locale-service.mjs +20 -10
  7. package/esm2022/core/validation/validation.mjs +2 -2
  8. package/esm2022/core/version.mjs +2 -2
  9. package/esm2022/dropdown/dropdown-trigger.directive.mjs +3 -2
  10. package/esm2022/filter-bar/filter-bar.mjs +3 -3
  11. package/esm2022/filter-bar/filter-search.mjs +39 -11
  12. package/esm2022/input/input-number.mjs +17 -12
  13. package/esm2022/list/list-selection.component.mjs +10 -4
  14. package/esm2022/popover/popover-confirm.component.mjs +3 -3
  15. package/esm2022/popover/popover.component.mjs +3 -3
  16. package/esm2022/title/title.directive.mjs +9 -2
  17. package/fesm2022/koobiq-components-core.mjs +25 -14
  18. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  19. package/fesm2022/koobiq-components-dropdown.mjs +2 -1
  20. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  21. package/fesm2022/koobiq-components-filter-bar.mjs +40 -14
  22. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  23. package/fesm2022/koobiq-components-input.mjs +16 -11
  24. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  25. package/fesm2022/koobiq-components-list.mjs +9 -3
  26. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  27. package/fesm2022/koobiq-components-popover.mjs +4 -4
  28. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  29. package/fesm2022/koobiq-components-title.mjs +8 -1
  30. package/fesm2022/koobiq-components-title.mjs.map +1 -1
  31. package/filter-bar/filter-bar.d.ts +1 -1
  32. package/filter-bar/filter-search.d.ts +17 -4
  33. package/input/input-number.d.ts +3 -3
  34. package/list/list-selection.component.d.ts +4 -2
  35. package/package.json +4 -4
  36. package/popover/popover.scss +3 -2
  37. package/schematics/ng-add/index.js +2 -2
  38. package/title/title.directive.d.ts +2 -0
@@ -159,7 +159,7 @@ export class KbqFilterBar {
159
159
  </div>
160
160
 
161
161
  <div class="kbq-filter-bar__right">
162
- <ng-content select="kbq-filter-search, [kbq-filter-search]" />
162
+ <ng-content select="kbq-filter-search, [kbq-filter-search], kbq-search-expandable" />
163
163
 
164
164
  <ng-content select="kbq-filter-refresher, [kbq-filter-refresher]" />
165
165
  </div>
@@ -179,7 +179,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
179
179
  </div>
180
180
 
181
181
  <div class="kbq-filter-bar__right">
182
- <ng-content select="kbq-filter-search, [kbq-filter-search]" />
182
+ <ng-content select="kbq-filter-search, [kbq-filter-search], kbq-search-expandable" />
183
183
 
184
184
  <ng-content select="kbq-filter-refresher, [kbq-filter-refresher]" />
185
185
  </div>
@@ -210,4 +210,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
210
210
  }], onClosePipe: [{
211
211
  type: Output
212
212
  }] } });
213
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWJhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZmlsdGVyLWJhci9maWx0ZXItYmFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUNILDRCQUE0QixFQUM1QixvQ0FBb0MsRUFJdkMsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBOEIxQyxNQUFNLE9BQU8sWUFBWTtJQXFCckIsd0NBQXdDO0lBQ3hDLElBQ0ksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsS0FBdUI7UUFDOUIsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUs7WUFBRSxPQUFPO1FBRW5DLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBRXJCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENB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XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEtCUV9MT0NBTEVfU0VSVklDRSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9jb3JlJztcbmltcG9ydCB7IEticURpdmlkZXJNb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvZGl2aWRlcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1lcmdlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIEtCUV9GSUxURVJfQkFSX0NPTkZJR1VSQVRJT04sXG4gICAgS0JRX0ZJTFRFUl9CQVJfREVGQVVMVF9DT05GSUdVUkFUSU9OLFxuICAgIEticUZpbHRlcixcbiAgICBLYnFQaXBlLFxuICAgIEticVBpcGVUZW1wbGF0ZVxufSBmcm9tICcuL2ZpbHRlci1iYXIudHlwZXMnO1xuaW1wb3J0IHsgS2JxRmlsdGVyUmVzZXQgfSBmcm9tICcuL2ZpbHRlci1yZXNldCc7XG5pbXBvcnQgeyBLYnFGaWx0ZXJzIH0gZnJvbSAnLi9maWx0ZXJzJztcbmltcG9ydCB7IGdldElkIH0gZnJvbSAnLi9waXBlcy9iYXNlLXBpcGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAna2JxLWZpbHRlci1iYXIsIFtrYnEtZmlsdGVyLWJhcl0nLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtZmlsdGVyLWJhcl9fbGVmdFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwia2JxLWZpbHRlcnNcIiAvPlxuXG4gICAgICAgICAgICA8bmctY29udGVudCAvPlxuXG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJrYnEtcGlwZS1hZGRcIiAvPlxuXG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJrYnEtZmlsdGVyLXJlc2V0XCIgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImticS1maWx0ZXItYmFyX19yaWdodFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwia2JxLWZpbHRlci1zZWFyY2gsIFtrYnEtZmlsdGVyLXNlYXJjaF1cIiAvPlxuXG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJrYnEtZmlsdGVyLXJlZnJlc2hlciwgW2ticS1maWx0ZXItcmVmcmVzaGVyXVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgc3R5bGVVcmxzOiBbJ2ZpbHRlci1iYXIuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaW1wb3J0czogW0ticURpdmlkZXJNb2R1bGVdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdrYnEtZmlsdGVyLWJhcidcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEticUZpbHRlckJhciB7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvY2FsZVNlcnZpY2UgPSBpbmplY3QoS0JRX0xPQ0FMRV9TRVJWSUNFLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gICAgcmVhZG9ubHkgZXh0ZXJuYWxDb25maWd1cmF0aW9uID0gaW5qZWN0KEtCUV9GSUxURVJfQkFSX0NPTkZJR1VSQVRJT04sIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgICBjb25maWd1cmF0aW9uO1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBAQ29udGVudENoaWxkKEticUZpbHRlcnMpIGZpbHRlcnM6IEticUZpbHRlcnM7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBAQ29udGVudENoaWxkKEticUZpbHRlclJlc2V0KSBmaWx0ZXJSZXNldDogS2JxRmlsdGVyUmVzZXQ7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIHNwZWNpYWwgbG9naWMgdGhhdCB1bnNlbGVjdCBhbGwgaXRlbXMgd2hlbiBhbGwgc2VsZWN0ZWQgYmVjYXVzZSBcImFsbCBzZWxlY3RlZCA9IG5vdGhpbmcgc2VsZWN0ZWRcIi5cbiAgICAgKiBEZWZhdWx0IGlzIHRydWVcbiAgICAgKiAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZWxlY3RlZEFsbEVxdWFsc1NlbGVjdGVkTm90aGluZzogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKiogRmlsdGVyIHRoYXQgaXMgY3VycmVudGx5IHNlbGVjdGVkICovXG4gICAgQElucHV0KClcbiAgICBnZXQgZmlsdGVyKCk6IEticUZpbHRlciB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsdGVyO1xuICAgIH1cblxuICAgIHNldCBmaWx0ZXIodmFsdWU6IEticUZpbHRlciB8IG51bGwpIHtcbiAgICAgICAgaWYgKHRoaXMuX2ZpbHRlciA9PT0gdmFsdWUpIHJldHVybjtcblxuICAgICAgICB0aGlzLl9maWx0ZXIgPSB2YWx1ZTtcblxuICAgICAgICB0aGlzLmNoYW5nZXMubmV4dCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2ZpbHRlcjogS2JxRmlsdGVyIHwgbnVsbDtcblxuICAgIC8qKiBBbiBhcnJheSBvZiB0ZW1wbGF0ZXMgdGhhdCBhcmUgdXNlZCB3aGVuIGFkZGluZyBhIHBpcGUuIEFsc28gY29udGFpbnMgbGlzdHMgb2Ygb3B0aW9ucyB0byBzZWxlY3QgKHZhbHVlcykuICovXG4gICAgQElucHV0KClcbiAgICBnZXQgcGlwZVRlbXBsYXRlcygpOiBLYnFQaXBlVGVtcGxhdGVbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90ZW1wbGF0ZXM7XG4gICAgfVxuXG4gICAgc2V0IHBpcGVUZW1wbGF0ZXModmFsdWU6IEticVBpcGVUZW1wbGF0ZVtdKSB7XG4gICAgICAgIHRoaXMuX3RlbXBsYXRlcyA9IHZhbHVlO1xuXG4gICAgICAgIHRoaXMuaW50ZXJuYWxUZW1wbGF0ZXNDaGFuZ2VzLm5leHQodGhpcy5fdGVtcGxhdGVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF90ZW1wbGF0ZXM6IEticVBpcGVUZW1wbGF0ZVtdID0gW107XG4gICAgLyoqXG4gICAgICogRXZlbnQgdGhhdCBlbWl0cyB3aGVuZXZlciB0aGUgcmF3IHZhbHVlIG9mIHRoZSBmaWx0ZXIgY2hhbmdlcy4gVGhpcyBpcyBoZXJlIHByaW1hcmlseVxuICAgICAqIHRvIGZhY2lsaXRhdGUgdGhlIHR3by13YXkgYmluZGluZyBmb3IgdGhlIGBmaWx0ZXJgIGlucHV0LlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgZmlsdGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxLYnFGaWx0ZXIgfCBudWxsPigpO1xuICAgIC8qKiBFdmVudCB0aGF0IGVtaXRzIHdoZW5ldmVyIHRoZSB2YWx1ZSBvZiB0aGUgcGlwZSBjaGFuZ2VzLiAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBvbkNoYW5nZVBpcGUgPSBuZXcgRXZlbnRFbWl0dGVyPEticVBpcGU+KCk7XG4gICAgLyoqIEV2ZW50IHRoYXQgZW1pdHMgd2hlbmV2ZXIgdGhlIHBpcGUgZGVsZXRlZC4gKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgb25SZW1vdmVQaXBlID0gbmV3IEV2ZW50RW1pdHRlcjxLYnFQaXBlPigpO1xuICAgIC8qKiBFdmVudCB0aGF0IGVtaXRzIHdoZW5ldmVyIHRoZSBwaXBlIGNsZWFyZWQuICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IG9uQ2xlYXJQaXBlID0gbmV3IEV2ZW50RW1pdHRlcjxLYnFQaXBlPigpO1xuICAgIC8qKiBFdmVudCB0aGF0IGVtaXRzIHdoZW5ldmVyIHRoZSBzZWxlY3Qgb3IgbXVsdGlzZWxlY3QgcGlwZSBjbG9zZWQuICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IG9uQ2xvc2VQaXBlID0gbmV3IEV2ZW50RW1pdHRlcjxLYnFQaXBlPigpO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGN1cnJlbnQgZmlsdGVyIGlzIHNhdmVkIGFuZCBjaGFuZ2VkICovXG4gICAgZ2V0IGlzU2F2ZWRBbmRDaGFuZ2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1NhdmVkICYmIHRoaXMuaXNDaGFuZ2VkO1xuICAgIH1cblxuICAgIC8qKiBXaGV0aGVyIHRoZSBjdXJyZW50IGZpbHRlciBpcyBzYXZlZCAqL1xuICAgIGdldCBpc1NhdmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmZpbHRlcj8uc2F2ZWQ7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGN1cnJlbnQgZmlsdGVyIGlzIGNoYW5nZWQgKi9cbiAgICBnZXQgaXNDaGFuZ2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmZpbHRlcj8uY2hhbmdlZDtcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciB0aGUgY3VycmVudCBmaWx0ZXIgaXMgcmVhZG9ubHkgKi9cbiAgICBnZXQgaXNSZWFkT25seSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5maWx0ZXI/LnJlYWRvbmx5O1xuICAgIH1cblxuICAgIC8qKiBXaGV0aGVyIHRoZSBjdXJyZW50IGZpbHRlciBpcyBkaXNhYmxlZCAqL1xuICAgIGdldCBpc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmZpbHRlcj8uZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzYXZlZEZpbHRlcjogS2JxRmlsdGVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogRXZlbnQgdGhhdCBlbWl0cyB3aGVuZXZlciB0aGUgZmlsdGVyIGlzIHJlc2V0LiAqL1xuICAgIHJlYWRvbmx5IG9uUmVzZXRGaWx0ZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICAvKiogYWxsIGNoYW5nZXMgKi9cbiAgICByZWFkb25seSBjaGFuZ2VzID0gbmV3IEJlaGF2aW9yU3ViamVjdDx2b2lkPih1bmRlZmluZWQpO1xuICAgIC8qKiBpbnRlcm5hbCBmaWx0ZXIgY2hhbmdlcyAqL1xuICAgIHJlYWRvbmx5IGludGVybmFsRmlsdGVyQ2hhbmdlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8S2JxRmlsdGVyIHwgbnVsbD4obnVsbCk7XG4gICAgLyoqIGludGVybmFsIGNoYW5nZXMgaW4gdGVtcGxhdGVzICovXG4gICAgcmVhZG9ubHkgaW50ZXJuYWxUZW1wbGF0ZXNDaGFuZ2VzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxLYnFQaXBlVGVtcGxhdGVbXSB8IG51bGw+KG51bGwpO1xuICAgIC8qKiB0aGlzIHN1YmplY3QgbmVlZCBmb3Igb3BlbnMgcGlwZSBhZnRlciBhZGRpbmdcbiAgICAgKiBAZG9jcy1wcml2YXRlICovXG4gICAgcmVhZG9ubHkgb3BlblBpcGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IG51bWJlciB8IG51bGw+KG51bGwpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxGaWx0ZXJDaGFuZ2VzLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgoZmlsdGVyKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9maWx0ZXIgPSBmaWx0ZXI7XG5cbiAgICAgICAgICAgIHRoaXMuZmlsdGVyQ2hhbmdlLmVtaXQodGhpcy5maWx0ZXIpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2U/LmNoYW5nZXMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKHRoaXMudXBkYXRlTG9jYWxlUGFyYW1zKTtcblxuICAgICAgICBpZiAoIXRoaXMubG9jYWxlU2VydmljZSkge1xuICAgICAgICAgICAgdGhpcy5pbml0RGVmYXVsdFBhcmFtcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgbWVyZ2UodGhpcy5vbkNoYW5nZVBpcGUsIHRoaXMub25SZW1vdmVQaXBlKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChjaGFuZ2VkUGlwZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlci5jaGFuZ2VkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBuZWVkIHRvIGdpdmUgb3V0IGZha2UgZGF0YS4gRGF0YSB3aWxsIGJlIHN5bmNocm9uaXplZCBhZnRlciBwaXBlIGNsb3NpbmdcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIucGlwZXMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGlwZSkgPT4gZ2V0SWQocGlwZSkgPT09IGdldElkKGNoYW5nZWRQaXBlKSAmJiBwaXBlLnZhbHVlICE9PSBjaGFuZ2VkUGlwZS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlciA9IHsgLi4udGhpcy5maWx0ZXIgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLnBpcGVzID0gZmlsdGVyLnBpcGVzLm1hcCgocGlwZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRJZChwaXBlKSA9PT0gZ2V0SWQoY2hhbmdlZFBpcGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGFuZ2VkUGlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KGZpbHRlcik7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KHRoaXMuZmlsdGVyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIG1lcmdlKHRoaXMuZmlsdGVyQ2hhbmdlLCB0aGlzLm9uQ2hhbmdlUGlwZSwgdGhpcy5vblJlbW92ZVBpcGUsIHRoaXMuaW50ZXJuYWxGaWx0ZXJDaGFuZ2VzKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZXMubmV4dCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogUmVtb3ZlIHBpcGUgZnJvbSBjdXJyZW50IGZpbHRlciBhbmQgZW1pdCBldmVudCAqL1xuICAgIHJlbW92ZVBpcGUocGlwZTogS2JxUGlwZSkge1xuICAgICAgICB0aGlzLmZpbHRlcj8ucGlwZXMuc3BsaWNlKHRoaXMuZmlsdGVyPy5waXBlcy5pbmRleE9mKHBpcGUpLCAxKTtcblxuICAgICAgICB0aGlzLm9uUmVtb3ZlUGlwZS5uZXh0KHBpcGUpO1xuICAgICAgICB0aGlzLmNoYW5nZXMubmV4dCgpO1xuICAgIH1cblxuICAgIC8qKiBTYXZlIGN1cnJlbnQgc3RhdGUgb2YgZmlsdGVyICovXG4gICAgc2F2ZUZpbHRlclN0YXRlKGZpbHRlcj86IEticUZpbHRlcikge1xuICAgICAgICB0aGlzLnNhdmVkRmlsdGVyID0gc3RydWN0dXJlZENsb25lKGZpbHRlciA/PyB0aGlzLmZpbHRlcik7XG4gICAgfVxuXG4gICAgLyoqIFJlc3RvcmUgcHJldmlvdXNseSBzYXZlZCBmaWx0ZXIgc3RhdGUgKi9cbiAgICByZXN0b3JlRmlsdGVyU3RhdGUoZmlsdGVyPzogS2JxRmlsdGVyKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyID0gc3RydWN0dXJlZENsb25lKGZpbHRlciA/PyB0aGlzLnNhdmVkRmlsdGVyKTtcbiAgICB9XG5cbiAgICAvKiogU2V0IHRoZSBmaWx0ZXIgc3RhdGUgXCJjaGFuZ2VkXCIgdG8gZmFsc2UgKi9cbiAgICByZXNldEZpbHRlckNoYW5nZWRTdGF0ZSgpIHtcbiAgICAgICAgdGhpcy5maWx0ZXIhLmNoYW5nZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUxvY2FsZVBhcmFtcyA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gdGhpcy5leHRlcm5hbENvbmZpZ3VyYXRpb24gfHwgdGhpcy5sb2NhbGVTZXJ2aWNlPy5nZXRQYXJhbXMoJ2ZpbHRlckJhcicpO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgaW5pdERlZmF1bHRQYXJhbXMoKSB7XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IEtCUV9GSUxURVJfQkFSX0RFRkFVTFRfQ09ORklHVVJBVElPTjtcbiAgICB9XG59XG4iXX0=
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWJhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZmlsdGVyLWJhci9maWx0ZXItYmFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUNILDRCQUE0QixFQUM1QixvQ0FBb0MsRUFJdkMsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBOEIxQyxNQUFNLE9BQU8sWUFBWTtJQXFCckIsd0NBQXdDO0lBQ3hDLElBQ0ksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsS0FBdUI7UUFDOUIsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUs7WUFBRSxPQUFPO1FBRW5DLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBRXJCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUlELGlIQUFpSDtJQUNqSCxJQUNJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksYUFBYSxDQUFDLEtBQXdCO1FBQ3RDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBRXhCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFrQkQsc0RBQXNEO0lBQ3RELElBQUksaUJBQWlCO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFDLENBQUM7SUFFRCwwQ0FBMEM7SUFDMUMsSUFBSSxPQUFPO1FBQ1AsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7SUFDaEMsQ0FBQztJQUVELDRDQUE0QztJQUM1QyxJQUFJLFNBQVM7UUFDVCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQztJQUNsQyxDQUFDO0lBRUQsNkNBQTZDO0lBQzdDLElBQUksVUFBVTtRQUNWLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDO0lBQ25DLENBQUM7SUFFRCw2Q0FBNkM7SUFDN0MsSUFBSSxVQUFVO1FBQ1YsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUM7SUFDbkMsQ0FBQztJQWdCRDtRQXZHQSxvQkFBb0I7UUFDRCxzQkFBaUIsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNqRSxvQkFBb0I7UUFDRCxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXpFLDBCQUFxQixHQUFHLE1BQU0sQ0FBQyw0QkFBNEIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBUzFGOzs7YUFHSztRQUNtQyxxQ0FBZ0MsR0FBWSxJQUFJLENBQUM7UUE4QmpGLGVBQVUsR0FBc0IsRUFBRSxDQUFDO1FBQzNDOzs7O1dBSUc7UUFDZ0IsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUN2RSwrREFBK0Q7UUFDNUMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQzlELGtEQUFrRDtRQUMvQixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDOUQsa0RBQWtEO1FBQy9CLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUM3RCx1RUFBdUU7UUFDcEQsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBMkJyRCxnQkFBVyxHQUFxQixJQUFJLENBQUM7UUFFN0MscURBQXFEO1FBQzVDLGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDN0Qsa0JBQWtCO1FBQ1QsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFPLFNBQVMsQ0FBQyxDQUFDO1FBQ3hELDhCQUE4QjtRQUNyQiwwQkFBcUIsR0FBRyxJQUFJLGVBQWUsQ0FBbUIsSUFBSSxDQUFDLENBQUM7UUFDN0Usb0NBQW9DO1FBQzNCLDZCQUF3QixHQUFHLElBQUksZUFBZSxDQUEyQixJQUFJLENBQUMsQ0FBQztRQUN4RjsyQkFDbUI7UUFDVixhQUFRLEdBQUcsSUFBSSxlQUFlLENBQXlCLElBQUksQ0FBQyxDQUFDO1FBMkU5RCx1QkFBa0IsR0FBRyxHQUFHLEVBQUU7WUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMscUJBQXFCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFOUYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFDLENBQUMsQ0FBQztRQTVFRSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN2RSxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztZQUV0QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUUxRixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzdCLENBQUM7UUFFRCxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO2FBQ3RDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2FBQzFCLFNBQVMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3ZCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztnQkFFM0IsMkVBQTJFO2dCQUMzRSxJQUNJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDbEIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxXQUFXLENBQUMsS0FBSyxDQUNuRixFQUNILENBQUM7b0JBQ0MsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFFbEMsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO3dCQUNyQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQzs0QkFDckMsT0FBTyxXQUFXLENBQUM7d0JBQ3ZCLENBQUM7d0JBRUQsT0FBTyxJQUFJLENBQUM7b0JBQ2hCLENBQUMsQ0FBQyxDQUFDO29CQUVILElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNuQyxDQUFDO3FCQUFNLENBQUM7b0JBQ0osSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN4QyxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRVAsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQzthQUNyRixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzthQUMxQixTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQscURBQXFEO0lBQ3JELFVBQVUsQ0FBQyxJQUFhO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFL0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsbUNBQW1DO0lBQ25DLGVBQWUsQ0FBQyxNQUFrQjtRQUM5QixJQUFJLENBQUMsV0FBVyxHQUFHLGVBQWUsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCw0Q0FBNEM7SUFDNUMsa0JBQWtCLENBQUMsTUFBa0I7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsOENBQThDO0lBQzlDLHVCQUF1QjtRQUNuQixJQUFJLENBQUMsTUFBTyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDakMsQ0FBQztJQVFPLGlCQUFpQjtRQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLG9DQUFvQyxDQUFDO0lBQzlELENBQUM7a0lBekxRLFlBQVk7c0hBQVosWUFBWSx5TEFtQkQsZ0JBQWdCLCtUQVJ0QixVQUFVLDhFQUVWLGNBQWMsZ0RBdENsQjs7Ozs7Ozs7Ozs7Ozs7OztLQWdCVCxtMkhBSVMsZ0JBQWdCOzs0RkFLakIsWUFBWTtrQkE1QnhCLFNBQVM7aUNBQ00sSUFBSSxZQUNOLGtDQUFrQyxZQUNsQzs7Ozs7Ozs7Ozs7Ozs7OztLQWdCVCxtQkFFZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxXQUM1QixDQUFDLGdCQUFnQixDQUFDLFFBQ3JCO3dCQUNGLEtBQUssRUFBRSxnQkFBZ0I7cUJBQzFCO3dEQWF5QixPQUFPO3NCQUFoQyxZQUFZO3VCQUFDLFVBQVU7Z0JBRU0sV0FBVztzQkFBeEMsWUFBWTt1QkFBQyxjQUFjO2dCQU1ZLGdDQUFnQztzQkFBdkUsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFJbEMsTUFBTTtzQkFEVCxLQUFLO2dCQWlCRixhQUFhO3NCQURoQixLQUFLO2dCQWlCYSxZQUFZO3NCQUE5QixNQUFNO2dCQUVZLFlBQVk7c0JBQTlCLE1BQU07Z0JBRVksWUFBWTtzQkFBOUIsTUFBTTtnQkFFWSxXQUFXO3NCQUE3QixNQUFNO2dCQUVZLFdBQVc7c0JBQTdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEtCUV9MT0NBTEVfU0VSVklDRSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9jb3JlJztcbmltcG9ydCB7IEticURpdmlkZXJNb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvZGl2aWRlcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1lcmdlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIEtCUV9GSUxURVJfQkFSX0NPTkZJR1VSQVRJT04sXG4gICAgS0JRX0ZJTFRFUl9CQVJfREVGQVVMVF9DT05GSUdVUkFUSU9OLFxuICAgIEticUZpbHRlcixcbiAgICBLYnFQaXBlLFxuICAgIEticVBpcGVUZW1wbGF0ZVxufSBmcm9tICcuL2ZpbHRlci1iYXIudHlwZXMnO1xuaW1wb3J0IHsgS2JxRmlsdGVyUmVzZXQgfSBmcm9tICcuL2ZpbHRlci1yZXNldCc7XG5pbXBvcnQgeyBLYnFGaWx0ZXJzIH0gZnJvbSAnLi9maWx0ZXJzJztcbmltcG9ydCB7IGdldElkIH0gZnJvbSAnLi9waXBlcy9iYXNlLXBpcGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAna2JxLWZpbHRlci1iYXIsIFtrYnEtZmlsdGVyLWJhcl0nLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtZmlsdGVyLWJhcl9fbGVmdFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwia2JxLWZpbHRlcnNcIiAvPlxuXG4gICAgICAgICAgICA8bmctY29udGVudCAvPlxuXG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJrYnEtcGlwZS1hZGRcIiAvPlxuXG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJrYnEtZmlsdGVyLXJlc2V0XCIgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImticS1maWx0ZXItYmFyX19yaWdodFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwia2JxLWZpbHRlci1zZWFyY2gsIFtrYnEtZmlsdGVyLXNlYXJjaF0sIGticS1zZWFyY2gtZXhwYW5kYWJsZVwiIC8+XG5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImticS1maWx0ZXItcmVmcmVzaGVyLCBba2JxLWZpbHRlci1yZWZyZXNoZXJdXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBzdHlsZVVybHM6IFsnZmlsdGVyLWJhci5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBpbXBvcnRzOiBbS2JxRGl2aWRlck1vZHVsZV0sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ticS1maWx0ZXItYmFyJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxRmlsdGVyQmFyIHtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9jYWxlU2VydmljZSA9IGluamVjdChLQlFfTE9DQUxFX1NFUlZJQ0UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgICByZWFkb25seSBleHRlcm5hbENvbmZpZ3VyYXRpb24gPSBpbmplY3QoS0JRX0ZJTFRFUl9CQVJfQ09ORklHVVJBVElPTiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAgIGNvbmZpZ3VyYXRpb247XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIEBDb250ZW50Q2hpbGQoS2JxRmlsdGVycykgZmlsdGVyczogS2JxRmlsdGVycztcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIEBDb250ZW50Q2hpbGQoS2JxRmlsdGVyUmVzZXQpIGZpbHRlclJlc2V0OiBLYnFGaWx0ZXJSZXNldDtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgc3BlY2lhbCBsb2dpYyB0aGF0IHVuc2VsZWN0IGFsbCBpdGVtcyB3aGVuIGFsbCBzZWxlY3RlZCBiZWNhdXNlIFwiYWxsIHNlbGVjdGVkID0gbm90aGluZyBzZWxlY3RlZFwiLlxuICAgICAqIERlZmF1bHQgaXMgdHJ1ZVxuICAgICAqICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNlbGVjdGVkQWxsRXF1YWxzU2VsZWN0ZWROb3RoaW5nOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKiBGaWx0ZXIgdGhhdCBpcyBjdXJyZW50bHkgc2VsZWN0ZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBmaWx0ZXIoKTogS2JxRmlsdGVyIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWx0ZXI7XG4gICAgfVxuXG4gICAgc2V0IGZpbHRlcih2YWx1ZTogS2JxRmlsdGVyIHwgbnVsbCkge1xuICAgICAgICBpZiAodGhpcy5fZmlsdGVyID09PSB2YWx1ZSkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuX2ZpbHRlciA9IHZhbHVlO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZmlsdGVyOiBLYnFGaWx0ZXIgfCBudWxsO1xuXG4gICAgLyoqIEFuIGFycmF5IG9mIHRlbXBsYXRlcyB0aGF0IGFyZSB1c2VkIHdoZW4gYWRkaW5nIGEgcGlwZS4gQWxzbyBjb250YWlucyBsaXN0cyBvZiBvcHRpb25zIHRvIHNlbGVjdCAodmFsdWVzKS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBwaXBlVGVtcGxhdGVzKCk6IEticVBpcGVUZW1wbGF0ZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RlbXBsYXRlcztcbiAgICB9XG5cbiAgICBzZXQgcGlwZVRlbXBsYXRlcyh2YWx1ZTogS2JxUGlwZVRlbXBsYXRlW10pIHtcbiAgICAgICAgdGhpcy5fdGVtcGxhdGVzID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5pbnRlcm5hbFRlbXBsYXRlc0NoYW5nZXMubmV4dCh0aGlzLl90ZW1wbGF0ZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3RlbXBsYXRlczogS2JxUGlwZVRlbXBsYXRlW10gPSBbXTtcbiAgICAvKipcbiAgICAgKiBFdmVudCB0aGF0IGVtaXRzIHdoZW5ldmVyIHRoZSByYXcgdmFsdWUgb2YgdGhlIGZpbHRlciBjaGFuZ2VzLiBUaGlzIGlzIGhlcmUgcHJpbWFyaWx5XG4gICAgICogdG8gZmFjaWxpdGF0ZSB0aGUgdHdvLXdheSBiaW5kaW5nIGZvciB0aGUgYGZpbHRlcmAgaW5wdXQuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBmaWx0ZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEticUZpbHRlciB8IG51bGw+KCk7XG4gICAgLyoqIEV2ZW50IHRoYXQgZW1pdHMgd2hlbmV2ZXIgdGhlIHZhbHVlIG9mIHRoZSBwaXBlIGNoYW5nZXMuICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IG9uQ2hhbmdlUGlwZSA9IG5ldyBFdmVudEVtaXR0ZXI8S2JxUGlwZT4oKTtcbiAgICAvKiogRXZlbnQgdGhhdCBlbWl0cyB3aGVuZXZlciB0aGUgcGlwZSBkZWxldGVkLiAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBvblJlbW92ZVBpcGUgPSBuZXcgRXZlbnRFbWl0dGVyPEticVBpcGU+KCk7XG4gICAgLyoqIEV2ZW50IHRoYXQgZW1pdHMgd2hlbmV2ZXIgdGhlIHBpcGUgY2xlYXJlZC4gKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgb25DbGVhclBpcGUgPSBuZXcgRXZlbnRFbWl0dGVyPEticVBpcGU+KCk7XG4gICAgLyoqIEV2ZW50IHRoYXQgZW1pdHMgd2hlbmV2ZXIgdGhlIHNlbGVjdCBvciBtdWx0aXNlbGVjdCBwaXBlIGNsb3NlZC4gKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgb25DbG9zZVBpcGUgPSBuZXcgRXZlbnRFbWl0dGVyPEticVBpcGU+KCk7XG5cbiAgICAvKiogV2hldGhlciB0aGUgY3VycmVudCBmaWx0ZXIgaXMgc2F2ZWQgYW5kIGNoYW5nZWQgKi9cbiAgICBnZXQgaXNTYXZlZEFuZENoYW5nZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzU2F2ZWQgJiYgdGhpcy5pc0NoYW5nZWQ7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGN1cnJlbnQgZmlsdGVyIGlzIHNhdmVkICovXG4gICAgZ2V0IGlzU2F2ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuZmlsdGVyPy5zYXZlZDtcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciB0aGUgY3VycmVudCBmaWx0ZXIgaXMgY2hhbmdlZCAqL1xuICAgIGdldCBpc0NoYW5nZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuZmlsdGVyPy5jaGFuZ2VkO1xuICAgIH1cblxuICAgIC8qKiBXaGV0aGVyIHRoZSBjdXJyZW50IGZpbHRlciBpcyByZWFkb25seSAqL1xuICAgIGdldCBpc1JlYWRPbmx5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmZpbHRlcj8ucmVhZG9ubHk7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGN1cnJlbnQgZmlsdGVyIGlzIGRpc2FibGVkICovXG4gICAgZ2V0IGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuZmlsdGVyPy5kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNhdmVkRmlsdGVyOiBLYnFGaWx0ZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBFdmVudCB0aGF0IGVtaXRzIHdoZW5ldmVyIHRoZSBmaWx0ZXIgaXMgcmVzZXQuICovXG4gICAgcmVhZG9ubHkgb25SZXNldEZpbHRlciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIC8qKiBhbGwgY2hhbmdlcyAqL1xuICAgIHJlYWRvbmx5IGNoYW5nZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHZvaWQ+KHVuZGVmaW5lZCk7XG4gICAgLyoqIGludGVybmFsIGZpbHRlciBjaGFuZ2VzICovXG4gICAgcmVhZG9ubHkgaW50ZXJuYWxGaWx0ZXJDaGFuZ2VzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxLYnFGaWx0ZXIgfCBudWxsPihudWxsKTtcbiAgICAvKiogaW50ZXJuYWwgY2hhbmdlcyBpbiB0ZW1wbGF0ZXMgKi9cbiAgICByZWFkb25seSBpbnRlcm5hbFRlbXBsYXRlc0NoYW5nZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEticVBpcGVUZW1wbGF0ZVtdIHwgbnVsbD4obnVsbCk7XG4gICAgLyoqIHRoaXMgc3ViamVjdCBuZWVkIGZvciBvcGVucyBwaXBlIGFmdGVyIGFkZGluZ1xuICAgICAqIEBkb2NzLXByaXZhdGUgKi9cbiAgICByZWFkb25seSBvcGVuUGlwZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVtYmVyIHwgbnVsbD4obnVsbCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbEZpbHRlckNoYW5nZXMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKChmaWx0ZXIpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2ZpbHRlciA9IGZpbHRlcjtcblxuICAgICAgICAgICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdCh0aGlzLmZpbHRlcik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubG9jYWxlU2VydmljZT8uY2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUodGhpcy51cGRhdGVMb2NhbGVQYXJhbXMpO1xuXG4gICAgICAgIGlmICghdGhpcy5sb2NhbGVTZXJ2aWNlKSB7XG4gICAgICAgICAgICB0aGlzLmluaXREZWZhdWx0UGFyYW1zKCk7XG4gICAgICAgIH1cblxuICAgICAgICBtZXJnZSh0aGlzLm9uQ2hhbmdlUGlwZSwgdGhpcy5vblJlbW92ZVBpcGUpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZWRQaXBlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyLmNoYW5nZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIG5lZWQgdG8gZ2l2ZSBvdXQgZmFrZSBkYXRhLiBEYXRhIHdpbGwgYmUgc3luY2hyb25pemVkIGFmdGVyIHBpcGUgY2xvc2luZ1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlci5waXBlcy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwaXBlKSA9PiBnZXRJZChwaXBlKSA9PT0gZ2V0SWQoY2hhbmdlZFBpcGUpICYmIHBpcGUudmFsdWUgIT09IGNoYW5nZWRQaXBlLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyID0geyAuLi50aGlzLmZpbHRlciB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIucGlwZXMgPSBmaWx0ZXIucGlwZXMubWFwKChwaXBlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldElkKHBpcGUpID09PSBnZXRJZChjaGFuZ2VkUGlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoYW5nZWRQaXBlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwaXBlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyQ2hhbmdlLmVtaXQoZmlsdGVyKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyQ2hhbmdlLmVtaXQodGhpcy5maWx0ZXIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgbWVyZ2UodGhpcy5maWx0ZXJDaGFuZ2UsIHRoaXMub25DaGFuZ2VQaXBlLCB0aGlzLm9uUmVtb3ZlUGlwZSwgdGhpcy5pbnRlcm5hbEZpbHRlckNoYW5nZXMpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlcy5uZXh0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBSZW1vdmUgcGlwZSBmcm9tIGN1cnJlbnQgZmlsdGVyIGFuZCBlbWl0IGV2ZW50ICovXG4gICAgcmVtb3ZlUGlwZShwaXBlOiBLYnFQaXBlKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyPy5waXBlcy5zcGxpY2UodGhpcy5maWx0ZXI/LnBpcGVzLmluZGV4T2YocGlwZSksIDEpO1xuXG4gICAgICAgIHRoaXMub25SZW1vdmVQaXBlLm5leHQocGlwZSk7XG4gICAgICAgIHRoaXMuY2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIFNhdmUgY3VycmVudCBzdGF0ZSBvZiBmaWx0ZXIgKi9cbiAgICBzYXZlRmlsdGVyU3RhdGUoZmlsdGVyPzogS2JxRmlsdGVyKSB7XG4gICAgICAgIHRoaXMuc2F2ZWRGaWx0ZXIgPSBzdHJ1Y3R1cmVkQ2xvbmUoZmlsdGVyID8/IHRoaXMuZmlsdGVyKTtcbiAgICB9XG5cbiAgICAvKiogUmVzdG9yZSBwcmV2aW91c2x5IHNhdmVkIGZpbHRlciBzdGF0ZSAqL1xuICAgIHJlc3RvcmVGaWx0ZXJTdGF0ZShmaWx0ZXI/OiBLYnFGaWx0ZXIpIHtcbiAgICAgICAgdGhpcy5maWx0ZXIgPSBzdHJ1Y3R1cmVkQ2xvbmUoZmlsdGVyID8/IHRoaXMuc2F2ZWRGaWx0ZXIpO1xuICAgIH1cblxuICAgIC8qKiBTZXQgdGhlIGZpbHRlciBzdGF0ZSBcImNoYW5nZWRcIiB0byBmYWxzZSAqL1xuICAgIHJlc2V0RmlsdGVyQ2hhbmdlZFN0YXRlKCkge1xuICAgICAgICB0aGlzLmZpbHRlciEuY2hhbmdlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTG9jYWxlUGFyYW1zID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSB0aGlzLmV4dGVybmFsQ29uZmlndXJhdGlvbiB8fCB0aGlzLmxvY2FsZVNlcnZpY2U/LmdldFBhcmFtcygnZmlsdGVyQmFyJyk7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBpbml0RGVmYXVsdFBhcmFtcygpIHtcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gS0JRX0ZJTFRFUl9CQVJfREVGQVVMVF9DT05GSUdVUkFUSU9OO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, inject, Output, ViewChild, ViewEncapsulation } from '@angular/core';
1
+ import { booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, EventEmitter, inject, input, numberAttribute, Output, ViewChild, ViewEncapsulation } from '@angular/core';
2
2
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
3
  import { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';
4
4
  import { KbqButton, KbqButtonModule } from '@koobiq/components/button';
@@ -7,6 +7,8 @@ import { KbqFormFieldModule } from '@koobiq/components/form-field';
7
7
  import { KbqIconModule } from '@koobiq/components/icon';
8
8
  import { KbqInput, KbqInputModule } from '@koobiq/components/input';
9
9
  import { KbqToolTipModule, KbqTooltipTrigger } from '@koobiq/components/tooltip';
10
+ import { debounceTime, distinctUntilChanged } from 'rxjs';
11
+ import { filter } from 'rxjs/operators';
10
12
  import { KbqFilterBar } from './filter-bar';
11
13
  import * as i0 from "@angular/core";
12
14
  import * as i1 from "@koobiq/components/button";
@@ -15,28 +17,46 @@ import * as i3 from "@koobiq/components/icon";
15
17
  import * as i4 from "@koobiq/components/form-field";
16
18
  import * as i5 from "@koobiq/components/input";
17
19
  import * as i6 from "@angular/forms";
20
+ export const defaultOnSearchTimeout = 0;
18
21
  export class KbqFilterBarSearch {
19
- /** localized data
20
- * @docs-private */
21
- get localeData() {
22
- return this.filterBar.configuration.search;
23
- }
24
22
  constructor() {
25
23
  /** KbqFilterBar instance */
26
24
  this.filterBar = inject(KbqFilterBar);
27
25
  this.changeDetectorRef = inject(ChangeDetectorRef);
26
+ this.destroyRef = inject(DestroyRef);
28
27
  /** control for search */
29
28
  this.searchControl = new UntypedFormControl();
30
29
  /** Whether the search active */
31
30
  this.isSearchActive = false;
31
+ /**
32
+ /** Timeout in milliseconds for emit event. The default value is taken from defaultOnSearchTimeout
33
+ * @default 0
34
+ */
35
+ this.onSearchTimeout = input(defaultOnSearchTimeout, { transform: numberAttribute });
36
+ /** Emit event by enter or not. Default is false */
37
+ this.emitValueByEnter = input(false, { transform: booleanAttribute });
38
+ /** Value of the field after initialization */
39
+ this.initialValue = input();
32
40
  /** event that is generated whenever a user performs a search. */
33
41
  this.onSearch = new EventEmitter();
34
42
  /** @docs-private */
35
43
  this.onReset = () => {
36
44
  this.changeDetectorRef.markForCheck();
37
45
  };
38
- this.searchControl.valueChanges.subscribe(this.onSearch);
39
- this.filterBar.filterReset?.onResetFilter.pipe(takeUntilDestroyed()).subscribe(this.onReset);
46
+ }
47
+ /** localized data
48
+ * @docs-private */
49
+ get localeData() {
50
+ return this.filterBar.configuration.search;
51
+ }
52
+ ngAfterViewInit() {
53
+ this.filterBar.filterReset?.onResetFilter.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.onReset);
54
+ if (this.initialValue()) {
55
+ this.searchControl.setValue(this.initialValue(), { emitEvent: false });
56
+ }
57
+ this.searchControl.valueChanges
58
+ .pipe(distinctUntilChanged(), filter(() => !this.emitValueByEnter()), debounceTime(this.onSearchTimeout()), takeUntilDestroyed(this.destroyRef))
59
+ .subscribe(this.onSearch);
40
60
  }
41
61
  openSearch() {
42
62
  this.isSearchActive = true;
@@ -55,6 +75,12 @@ export class KbqFilterBarSearch {
55
75
  this.tooltip.hide();
56
76
  }
57
77
  /** @docs-private */
78
+ onEnter() {
79
+ if (this.emitValueByEnter()) {
80
+ this.onSearch.emit(this.searchControl.value);
81
+ }
82
+ }
83
+ /** @docs-private */
58
84
  onClear() {
59
85
  this.isSearchActive = false;
60
86
  setTimeout(() => {
@@ -63,7 +89,7 @@ export class KbqFilterBarSearch {
63
89
  });
64
90
  }
65
91
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqFilterBarSearch, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
66
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: KbqFilterBarSearch, isStandalone: true, selector: "kbq-filter-search, [kbq-filter-search]", outputs: { onSearch: "onSearch" }, host: { classAttribute: "kbq-filter-search" }, viewQueries: [{ propertyName: "input", first: true, predicate: KbqInput, descendants: true }, { propertyName: "button", first: true, predicate: KbqButton, descendants: true }, { propertyName: "tooltip", first: true, predicate: KbqTooltipTrigger, descendants: true }], ngImport: i0, template: `
92
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: KbqFilterBarSearch, isStandalone: true, selector: "kbq-filter-search, [kbq-filter-search]", inputs: { onSearchTimeout: { classPropertyName: "onSearchTimeout", publicName: "onSearchTimeout", isSignal: true, isRequired: false, transformFunction: null }, emitValueByEnter: { classPropertyName: "emitValueByEnter", publicName: "emitValueByEnter", isSignal: true, isRequired: false, transformFunction: null }, initialValue: { classPropertyName: "initialValue", publicName: "initialValue", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSearch: "onSearch" }, host: { classAttribute: "kbq-filter-search" }, viewQueries: [{ propertyName: "input", first: true, predicate: KbqInput, descendants: true }, { propertyName: "button", first: true, predicate: KbqButton, descendants: true }, { propertyName: "tooltip", first: true, predicate: KbqTooltipTrigger, descendants: true }], ngImport: i0, template: `
67
93
  <button
68
94
  kbq-button
69
95
  [class.kbq-filter_hidden]="isSearchActive"
@@ -85,6 +111,7 @@ export class KbqFilterBarSearch {
85
111
  placeholder="{{ localeData.placeholder }}"
86
112
  (blur)="onBlur()"
87
113
  (keydown.escape)="onEscape()"
114
+ (keydown.enter)="onEnter()"
88
115
  />
89
116
 
90
117
  <kbq-cleaner (click)="onClear()" />
@@ -115,6 +142,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
115
142
  placeholder="{{ localeData.placeholder }}"
116
143
  (blur)="onBlur()"
117
144
  (keydown.escape)="onEscape()"
145
+ (keydown.enter)="onEnter()"
118
146
  />
119
147
 
120
148
  <kbq-cleaner (click)="onClear()" />
@@ -130,7 +158,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
130
158
  ], host: {
131
159
  class: 'kbq-filter-search'
132
160
  }, styles: [".kbq-filter-search{display:flex;align-items:start}.kbq-filter-search .kbq-form-field{width:260px}.kbq-filter-search .kbq-filter_hidden{display:none}\n"] }]
133
- }], ctorParameters: () => [], propDecorators: { input: [{
161
+ }], propDecorators: { input: [{
134
162
  type: ViewChild,
135
163
  args: [KbqInput]
136
164
  }], button: [{
@@ -142,4 +170,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
142
170
  }], onSearch: [{
143
171
  type: Output
144
172
  }] } });
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXNlYXJjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZmlsdGVyLWJhci9maWx0ZXItc2VhcmNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7QUFnRDVDLE1BQU0sT0FBTyxrQkFBa0I7SUFlM0I7dUJBQ21CO0lBQ25CLElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO0lBQy9DLENBQUM7SUFLRDtRQXZCQSw0QkFBNEI7UUFDWCxjQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pDLHNCQUFpQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBTS9ELHlCQUF5QjtRQUN6QixrQkFBYSxHQUF1QixJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFFN0QsZ0NBQWdDO1FBQ2hDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBUWhDLGlFQUFpRTtRQUM5QyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQXlDekQsb0JBQW9CO1FBQ3BCLFlBQU8sR0FBRyxHQUFHLEVBQUU7WUFDWCxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUMsQ0FBQyxDQUFDO1FBekNFLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFekQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBRTNCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELG9CQUFvQjtJQUNwQixNQUFNO1FBQ0YsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUs7WUFBRSxPQUFPO1FBRXJDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCLFFBQVE7UUFDSixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUU1QixJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCLE9BQU87UUFDSCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUU1QixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUVwQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztrSUE3RFEsa0JBQWtCO3NIQUFsQixrQkFBa0IsMk5BS2hCLFFBQVEseUVBQ1IsU0FBUywwRUFDVCxpQkFBaUIsZ0RBbERsQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0EwQlQsK05BS0csZ0JBQWdCLDhCQUNoQixlQUFlLCtOQUNmLGdCQUFnQiwyZEFDaEIsYUFBYSwySUFDYixrQkFBa0IsOHdCQUNsQixjQUFjLGdQQUNkLG1CQUFtQjs7NEZBTWQsa0JBQWtCO2tCQTlDOUIsU0FBUztpQ0FDTSxJQUFJLFlBQ04sd0NBQXdDLFlBQ3hDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQTBCVCxtQkFFZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxXQUM1Qjt3QkFDTCxnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxtQkFBbUI7cUJBQ3RCLFFBQ0s7d0JBQ0YsS0FBSyxFQUFFLG1CQUFtQjtxQkFDN0I7d0RBTzRCLEtBQUs7c0JBQWpDLFNBQVM7dUJBQUMsUUFBUTtnQkFDVyxNQUFNO3NCQUFuQyxTQUFTO3VCQUFDLFNBQVM7Z0JBQ2tCLE9BQU87c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCO2dCQWVULFFBQVE7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBLYnFCdXR0b24sIEticUJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgS2JxRGl2aWRlck1vZHVsZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9kaXZpZGVyJztcbmltcG9ydCB7IEticUZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9mb3JtLWZpZWxkJztcbmltcG9ydCB7IEticUljb25Nb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvaWNvbic7XG5pbXBvcnQgeyBLYnFJbnB1dCwgS2JxSW5wdXRNb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvaW5wdXQnO1xuaW1wb3J0IHsgS2JxVG9vbFRpcE1vZHVsZSwgS2JxVG9vbHRpcFRyaWdnZXIgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvdG9vbHRpcCc7XG5pbXBvcnQgeyBLYnFGaWx0ZXJCYXIgfSBmcm9tICcuL2ZpbHRlci1iYXInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAna2JxLWZpbHRlci1zZWFyY2gsIFtrYnEtZmlsdGVyLXNlYXJjaF0nLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGticS1idXR0b25cbiAgICAgICAgICAgIFtjbGFzcy5rYnEtZmlsdGVyX2hpZGRlbl09XCJpc1NlYXJjaEFjdGl2ZVwiXG4gICAgICAgICAgICBbY29sb3JdPVwiJ2NvbnRyYXN0J1wiXG4gICAgICAgICAgICBba2JxU3R5bGVdPVwiJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgICAgICBrYnFUb29sdGlwPVwie3sgbG9jYWxlRGF0YS50b29sdGlwIH19XCJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuU2VhcmNoKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aSBrYnEtaWNvbj1cImticS1tYWduaWZ5aW5nLWdsYXNzXzE2XCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8a2JxLWZvcm0tZmllbGQgW2NsYXNzLmticS1maWx0ZXJfaGlkZGVuXT1cIiFpc1NlYXJjaEFjdGl2ZVwiPlxuICAgICAgICAgICAgPGkga2JxLWljb249XCJrYnEtbWFnbmlmeWluZy1nbGFzc18xNlwiIGticVByZWZpeD48L2k+XG5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAga2JxSW5wdXRcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2VhcmNoQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBsb2NhbGVEYXRhLnBsYWNlaG9sZGVyIH19XCJcbiAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uZXNjYXBlKT1cIm9uRXNjYXBlKClcIlxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgPGticS1jbGVhbmVyIChjbGljayk9XCJvbkNsZWFyKClcIiAvPlxuICAgICAgICA8L2ticS1mb3JtLWZpZWxkPlxuICAgIGAsXG4gICAgc3R5bGVVcmw6ICdmaWx0ZXItc2VhcmNoLnNjc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBLYnFEaXZpZGVyTW9kdWxlLFxuICAgICAgICBLYnFCdXR0b25Nb2R1bGUsXG4gICAgICAgIEticVRvb2xUaXBNb2R1bGUsXG4gICAgICAgIEticUljb25Nb2R1bGUsXG4gICAgICAgIEticUZvcm1GaWVsZE1vZHVsZSxcbiAgICAgICAgS2JxSW5wdXRNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGVcbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdrYnEtZmlsdGVyLXNlYXJjaCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEticUZpbHRlckJhclNlYXJjaCB7XG4gICAgLyoqIEticUZpbHRlckJhciBpbnN0YW5jZSAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmlsdGVyQmFyID0gaW5qZWN0KEticUZpbHRlckJhcik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICBAVmlld0NoaWxkKEticUlucHV0KSBwcml2YXRlIGlucHV0OiBLYnFJbnB1dDtcbiAgICBAVmlld0NoaWxkKEticUJ1dHRvbikgcHJpdmF0ZSBidXR0b246IEticUJ1dHRvbjtcbiAgICBAVmlld0NoaWxkKEticVRvb2x0aXBUcmlnZ2VyKSBwcml2YXRlIHRvb2x0aXA6IEticVRvb2x0aXBUcmlnZ2VyO1xuXG4gICAgLyoqIGNvbnRyb2wgZm9yIHNlYXJjaCAqL1xuICAgIHNlYXJjaENvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBzZWFyY2ggYWN0aXZlICovXG4gICAgaXNTZWFyY2hBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBsb2NhbGl6ZWQgZGF0YVxuICAgICAqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBnZXQgbG9jYWxlRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyQmFyLmNvbmZpZ3VyYXRpb24uc2VhcmNoO1xuICAgIH1cblxuICAgIC8qKiBldmVudCB0aGF0IGlzIGdlbmVyYXRlZCB3aGVuZXZlciBhIHVzZXIgcGVyZm9ybXMgYSBzZWFyY2guICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IG9uU2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodGhpcy5vblNlYXJjaCk7XG5cbiAgICAgICAgdGhpcy5maWx0ZXJCYXIuZmlsdGVyUmVzZXQ/Lm9uUmVzZXRGaWx0ZXIucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKHRoaXMub25SZXNldCk7XG4gICAgfVxuXG4gICAgb3BlblNlYXJjaCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1NlYXJjaEFjdGl2ZSA9IHRydWU7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmlucHV0LmZvY3VzKCkpO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgb25CbHVyKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zZWFyY2hDb250cm9sLnZhbHVlKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5vbkVzY2FwZSgpO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgb25Fc2NhcGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNTZWFyY2hBY3RpdmUgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmJ1dHRvbi5mb2N1c1ZpYUtleWJvYXJkKCk7XG5cbiAgICAgICAgdGhpcy50b29sdGlwLmhpZGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIG9uQ2xlYXIoKSB7XG4gICAgICAgIHRoaXMuaXNTZWFyY2hBY3RpdmUgPSBmYWxzZTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYnV0dG9uLmZvY3VzKCk7XG5cbiAgICAgICAgICAgIHRoaXMudG9vbHRpcC5oaWRlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgb25SZXNldCA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9O1xufVxuIl19
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXNlYXJjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZmlsdGVyLWJhci9maWx0ZXItc2VhcmNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLGVBQWUsRUFDZixNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7O0FBRTVDLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsQ0FBQztB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akQsQ0FBQztJQUNMLENBQUM7SUFFRCxvQkFBb0I7SUFDcEIsT0FBTztRQUNILElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBRTVCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRXBCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO2tJQTVGUSxrQkFBa0I7c0hBQWxCLGtCQUFrQixtcUJBTWhCLFFBQVEseUVBQ1IsU0FBUywwRUFDVCxpQkFBaUIsZ0RBcERsQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBMkJULCtOQUtHLGdCQUFnQiw4QkFDaEIsZUFBZSwrTkFDZixnQkFBZ0IsMmRBQ2hCLGFBQWEsMklBQ2Isa0JBQWtCLDh3QkFDbEIsY0FBYyxnUEFDZCxtQkFBbUI7OzRGQU1kLGtCQUFrQjtrQkEvQzlCLFNBQVM7aUNBQ00sSUFBSSxZQUNOLHdDQUF3QyxZQUN4Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBMkJULG1CQUVnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCO3dCQUNMLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLG1CQUFtQjtxQkFDdEIsUUFDSzt3QkFDRixLQUFLLEVBQUUsbUJBQW1CO3FCQUM3Qjs4QkFRNEIsS0FBSztzQkFBakMsU0FBUzt1QkFBQyxRQUFRO2dCQUNXLE1BQU07c0JBQW5DLFNBQVM7dUJBQUMsU0FBUztnQkFDa0IsT0FBTztzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBMkJULFFBQVE7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRGVzdHJveVJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIGlucHV0LFxuICAgIG51bWJlckF0dHJpYnV0ZSxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgS2JxQnV0dG9uLCBLYnFCdXR0b25Nb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEticURpdmlkZXJNb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvZGl2aWRlcic7XG5pbXBvcnQgeyBLYnFGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBLYnFJY29uTW9kdWxlIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHsgS2JxSW5wdXQsIEticUlucHV0TW9kdWxlIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2lucHV0JztcbmltcG9ydCB7IEticVRvb2xUaXBNb2R1bGUsIEticVRvb2x0aXBUcmlnZ2VyIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL3Rvb2x0aXAnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgS2JxRmlsdGVyQmFyIH0gZnJvbSAnLi9maWx0ZXItYmFyJztcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRPblNlYXJjaFRpbWVvdXQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAna2JxLWZpbHRlci1zZWFyY2gsIFtrYnEtZmlsdGVyLXNlYXJjaF0nLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGticS1idXR0b25cbiAgICAgICAgICAgIFtjbGFzcy5rYnEtZmlsdGVyX2hpZGRlbl09XCJpc1NlYXJjaEFjdGl2ZVwiXG4gICAgICAgICAgICBbY29sb3JdPVwiJ2NvbnRyYXN0J1wiXG4gICAgICAgICAgICBba2JxU3R5bGVdPVwiJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgICAgICBrYnFUb29sdGlwPVwie3sgbG9jYWxlRGF0YS50b29sdGlwIH19XCJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuU2VhcmNoKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aSBrYnEtaWNvbj1cImticS1tYWduaWZ5aW5nLWdsYXNzXzE2XCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8a2JxLWZvcm0tZmllbGQgW2NsYXNzLmticS1maWx0ZXJfaGlkZGVuXT1cIiFpc1NlYXJjaEFjdGl2ZVwiPlxuICAgICAgICAgICAgPGkga2JxLWljb249XCJrYnEtbWFnbmlmeWluZy1nbGFzc18xNlwiIGticVByZWZpeD48L2k+XG5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAga2JxSW5wdXRcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2VhcmNoQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBsb2NhbGVEYXRhLnBsYWNlaG9sZGVyIH19XCJcbiAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uZXNjYXBlKT1cIm9uRXNjYXBlKClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uRW50ZXIoKVwiXG4gICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICA8a2JxLWNsZWFuZXIgKGNsaWNrKT1cIm9uQ2xlYXIoKVwiIC8+XG4gICAgICAgIDwva2JxLWZvcm0tZmllbGQ+XG4gICAgYCxcbiAgICBzdHlsZVVybDogJ2ZpbHRlci1zZWFyY2guc2NzcycsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIEticURpdmlkZXJNb2R1bGUsXG4gICAgICAgIEticUJ1dHRvbk1vZHVsZSxcbiAgICAgICAgS2JxVG9vbFRpcE1vZHVsZSxcbiAgICAgICAgS2JxSWNvbk1vZHVsZSxcbiAgICAgICAgS2JxRm9ybUZpZWxkTW9kdWxlLFxuICAgICAgICBLYnFJbnB1dE1vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ticS1maWx0ZXItc2VhcmNoJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxRmlsdGVyQmFyU2VhcmNoIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqIEticUZpbHRlckJhciBpbnN0YW5jZSAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmlsdGVyQmFyID0gaW5qZWN0KEticUZpbHRlckJhcik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgQFZpZXdDaGlsZChLYnFJbnB1dCkgcHJpdmF0ZSBpbnB1dDogS2JxSW5wdXQ7XG4gICAgQFZpZXdDaGlsZChLYnFCdXR0b24pIHByaXZhdGUgYnV0dG9uOiBLYnFCdXR0b247XG4gICAgQFZpZXdDaGlsZChLYnFUb29sdGlwVHJpZ2dlcikgcHJpdmF0ZSB0b29sdGlwOiBLYnFUb29sdGlwVHJpZ2dlcjtcblxuICAgIC8qKiBjb250cm9sIGZvciBzZWFyY2ggKi9cbiAgICBzZWFyY2hDb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XG5cbiAgICAvKiogV2hldGhlciB0aGUgc2VhcmNoIGFjdGl2ZSAqL1xuICAgIGlzU2VhcmNoQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKiogbG9jYWxpemVkIGRhdGFcbiAgICAgKiBAZG9jcy1wcml2YXRlICovXG4gICAgZ2V0IGxvY2FsZURhdGEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlckJhci5jb25maWd1cmF0aW9uLnNlYXJjaDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAvKiogVGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIGVtaXQgZXZlbnQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHRha2VuIGZyb20gZGVmYXVsdE9uU2VhcmNoVGltZW91dFxuICAgICAqIEBkZWZhdWx0IDBcbiAgICAgKi9cbiAgICByZWFkb25seSBvblNlYXJjaFRpbWVvdXQgPSBpbnB1dChkZWZhdWx0T25TZWFyY2hUaW1lb3V0LCB7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pO1xuXG4gICAgLyoqIEVtaXQgZXZlbnQgYnkgZW50ZXIgb3Igbm90LiBEZWZhdWx0IGlzIGZhbHNlICovXG4gICAgcmVhZG9ubHkgZW1pdFZhbHVlQnlFbnRlciA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAgIC8qKiBWYWx1ZSBvZiB0aGUgZmllbGQgYWZ0ZXIgaW5pdGlhbGl6YXRpb24gKi9cbiAgICByZWFkb25seSBpbml0aWFsVmFsdWUgPSBpbnB1dCgpO1xuXG4gICAgLyoqIGV2ZW50IHRoYXQgaXMgZ2VuZXJhdGVkIHdoZW5ldmVyIGEgdXNlciBwZXJmb3JtcyBhIHNlYXJjaC4gKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgb25TZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXJCYXIuZmlsdGVyUmVzZXQ/Lm9uUmVzZXRGaWx0ZXIucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKHRoaXMub25SZXNldCk7XG5cbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbFZhbHVlKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmluaXRpYWxWYWx1ZSgpLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiAhdGhpcy5lbWl0VmFsdWVCeUVudGVyKCkpLFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSh0aGlzLm9uU2VhcmNoVGltZW91dCgpKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh0aGlzLm9uU2VhcmNoKTtcbiAgICB9XG5cbiAgICBvcGVuU2VhcmNoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzU2VhcmNoQWN0aXZlID0gdHJ1ZTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuaW5wdXQuZm9jdXMoKSk7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBvbkJsdXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlYXJjaENvbnRyb2wudmFsdWUpIHJldHVybjtcblxuICAgICAgICB0aGlzLm9uRXNjYXBlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBvbkVzY2FwZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1NlYXJjaEFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuYnV0dG9uLmZvY3VzVmlhS2V5Ym9hcmQoKTtcblxuICAgICAgICB0aGlzLnRvb2x0aXAuaGlkZSgpO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgb25FbnRlcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZW1pdFZhbHVlQnlFbnRlcigpKSB7XG4gICAgICAgICAgICB0aGlzLm9uU2VhcmNoLmVtaXQodGhpcy5zZWFyY2hDb250cm9sLnZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgb25DbGVhcigpIHtcbiAgICAgICAgdGhpcy5pc1NlYXJjaEFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5idXR0b24uZm9jdXMoKTtcblxuICAgICAgICAgICAgdGhpcy50b29sdGlwLmhpZGUoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBvblJlc2V0ID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH07XG59XG4iXX0=
@@ -3,7 +3,7 @@ import { Attribute, booleanAttribute, Directive, ElementRef, EventEmitter, forwa
3
3
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
4
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
5
5
  import { BACKSPACE, DASH, DELETE, DOWN_ARROW, END, ENTER, ESCAPE, FF_MINUS, HOME, isCopy, isFunctionKey, isNumberKey, isNumpadKey, isSelectAll, LEFT_ARROW, NUMPAD_MINUS, RIGHT_ARROW, TAB, UP_ARROW, V, X, Z } from '@koobiq/cdk/keycodes';
6
- import { checkAndNormalizeLocalizedNumber, formatNumberWithLocale, KBQ_LOCALE_SERVICE, KbqLocaleService, normalizeNumber, ruRUFormattersData } from '@koobiq/components/core';
6
+ import { checkAndNormalizeLocalizedNumber, formatNumberWithLocale, KBQ_DEFAULT_PRECISION_SEPARATOR, KBQ_LOCALE_SERVICE, KbqLocaleService, normalizeNumber, ruRUFormattersData } from '@koobiq/components/core';
7
7
  import { Subject } from 'rxjs';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@koobiq/components/core";
@@ -11,7 +11,7 @@ export const KBQ_INPUT_NUMBER_DEFAULT_CONFIGURATION = ruRUFormattersData.input.n
11
11
  export const BIG_STEP = 10;
12
12
  export const SMALL_STEP = 1;
13
13
  export function normalizeSplitter(value) {
14
- return value ? value.replace(/,/g, '.') : value;
14
+ return value ? value.replace(/,/g, KBQ_DEFAULT_PRECISION_SEPARATOR) : value;
15
15
  }
16
16
  export function isFloat(value) {
17
17
  return /^-?\d+\.\d+$/.test(value);
@@ -23,7 +23,7 @@ export function isDigit(value) {
23
23
  return isFloat(value) || isInt(value);
24
24
  }
25
25
  export function getPrecision(value) {
26
- const arr = value.toString().split('.');
26
+ const arr = value.toString().split(KBQ_DEFAULT_PRECISION_SEPARATOR);
27
27
  return arr.length === 1 ? 1 : Math.pow(10, arr[1].length);
28
28
  }
29
29
  export function add(value1, value2) {
@@ -107,7 +107,8 @@ export class KbqNumberInput {
107
107
  return event.keyCode === Z && (event.ctrlKey || event.metaKey);
108
108
  };
109
109
  this.isPeriod = (event) => {
110
- return this.groupSeparator.includes(event.key) || [this.fractionSeparator, '.'].includes(event.key);
110
+ return (this.groupSeparator.includes(event.key) ||
111
+ [this.fractionSeparator, KBQ_DEFAULT_PRECISION_SEPARATOR].includes(event.key));
111
112
  };
112
113
  this.cvaOnChange = () => { };
113
114
  this.updateLocaleParams = () => {
@@ -169,11 +170,14 @@ export class KbqNumberInput {
169
170
  const serviceKeys = [DELETE, BACKSPACE, TAB, ESCAPE, ENTER];
170
171
  const arrows = [LEFT_ARROW, RIGHT_ARROW];
171
172
  const allowedKeys = [HOME, END].concat(arrows).concat(serviceKeys).concat(minuses);
172
- if ((this.integer && this.isPeriod(event)) ||
173
- (minuses.includes(keyCode) && (this.viewValue.includes(event.key) || this.min >= 0)) ||
174
- (this.isPeriod(event) &&
175
- event.key === this.fractionSeparator &&
176
- this.viewValue.indexOf(this.fractionSeparator) !== -1)) {
173
+ // should parse normalized fractionSeparator
174
+ const viewValueToBeChecked = normalizeNumber(this.viewValue, this.config);
175
+ const shouldSkipForIntegerMode = this.integer && this.isPeriod(event);
176
+ const isMinusAllowed = minuses.includes(keyCode) && (this.viewValue.includes(event.key) || this.min >= 0);
177
+ const isSignAndFractionSepAlreadyExists = this.isPeriod(event) &&
178
+ [this.fractionSeparator, KBQ_DEFAULT_PRECISION_SEPARATOR].includes(event.key) &&
179
+ viewValueToBeChecked.indexOf(KBQ_DEFAULT_PRECISION_SEPARATOR) !== -1;
180
+ if (shouldSkipForIntegerMode || isMinusAllowed || isSignAndFractionSepAlreadyExists) {
177
181
  event.preventDefault();
178
182
  return;
179
183
  }
@@ -189,8 +193,9 @@ export class KbqNumberInput {
189
193
  // let it happen, don't do anything
190
194
  return;
191
195
  }
196
+ const isLetter = !isNumberKey(event) && !isNumpadKey(event);
192
197
  // Ensure that it is not a number and stop the keypress
193
- if (event.shiftKey || (!isNumberKey(event) && !isNumpadKey(event))) {
198
+ if (event.shiftKey || isLetter) {
194
199
  event.preventDefault();
195
200
  // process steps
196
201
  const step = event.shiftKey ? this.bigStep : this.step;
@@ -300,7 +305,7 @@ export class KbqNumberInput {
300
305
  formatNumber(value) {
301
306
  if (value === null || value === undefined)
302
307
  return null;
303
- const [intPart, fractionPart] = value.toString().split('.');
308
+ const [intPart, fractionPart] = value.toString().split(KBQ_DEFAULT_PRECISION_SEPARATOR);
304
309
  return this.createLocalizedNumberFromParts(+intPart, fractionPart);
305
310
  }
306
311
  createLocalizedNumberFromParts(intPart, fractionPart) {
@@ -378,4 +383,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
378
383
  }], disabled: [{
379
384
  type: Input
380
385
  }] } });
381
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9pbnB1dC9pbnB1dC1udW1iZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUNILFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBRUwsUUFBUSxFQUNSLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQXlDLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUYsT0FBTyxFQUNILFNBQVMsRUFDVCxJQUFJLEVBQ0osTUFBTSxFQUNOLFVBQVUsRUFDVixHQUFHLEVBQ0gsS0FBSyxFQUNMLE1BQU0sRUFDTixRQUFRLEVBQ1IsSUFBSSxFQUNKLE1BQU0sRUFDTixhQUFhLEVBQ2IsV0FBVyxFQUNYLFdBQVcsRUFDWCxXQUFXLEVBQ1gsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsR0FBRyxFQUNILFFBQVEsRUFDUixDQUFDLEVBQ0QsQ0FBQyxFQUNELENBQUMsRUFDSixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFDSCxnQ0FBZ0MsRUFDaEMsc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFFaEIsZUFBZSxFQUNmLGtCQUFrQixFQUNyQixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUUvQixNQUFNLENBQUMsTUFBTSxzQ0FBc0MsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBRXRGLE1BQU0sQ0FBQyxN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aUJBQWlCO3FCQUMvQjtpQkFDSjs7MEJBNEhRLFNBQVM7MkJBQUMsTUFBTTs7MEJBQ2hCLFNBQVM7MkJBQUMsVUFBVTs7MEJBQ3BCLFNBQVM7MkJBQUMsS0FBSzs7MEJBQ2YsU0FBUzsyQkFBQyxLQUFLOzswQkFDZixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQjt5Q0F0RzFDLE9BQU87c0JBRE4sS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFJdEMsT0FBTztzQkFETixLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSztnQkFJTixHQUFHO3NCQURGLEtBQUs7Z0JBSU4sR0FBRztzQkFERixLQUFLO2dCQUlOLHFCQUFxQjtzQkFEcEIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFPdEMsbUJBQW1CO3NCQURsQixLQUFLO2dCQUlGLEtBQUs7c0JBRFIsS0FBSztnQkFvQkYsUUFBUTtzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gICAgQXR0cmlidXRlLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBSZW5kZXJlcjJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgQkFDS1NQQUNFLFxuICAgIERBU0gsXG4gICAgREVMRVRFLFxuICAgIERPV05fQVJST1csXG4gICAgRU5ELFxuICAgIEVOVEVSLFxuICAgIEVTQ0FQRSxcbiAgICBGRl9NSU5VUyxcbiAgICBIT01FLFxuICAgIGlzQ29weSxcbiAgICBpc0Z1bmN0aW9uS2V5LFxuICAgIGlzTnVtYmVyS2V5LFxuICAgIGlzTnVtcGFkS2V5LFxuICAgIGlzU2VsZWN0QWxsLFxuICAgIExFRlRfQVJST1csXG4gICAgTlVNUEFEX01JTlVTLFxuICAgIFJJR0hUX0FSUk9XLFxuICAgIFRBQixcbiAgICBVUF9BUlJPVyxcbiAgICBWLFxuICAgIFgsXG4gICAgWlxufSBmcm9tICdAa29vYmlxL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQge1xuICAgIGNoZWNrQW5kTm9ybWFsaXplTG9jYWxpemVkTnVtYmVyLFxuICAgIGZvcm1hdE51bWJlcldpdGhMb2NhbGUsXG4gICAgS0JRX0xPQ0FMRV9TRVJWSUNFLFxuICAgIEticUxvY2FsZVNlcnZpY2UsXG4gICAgS2JxTnVtYmVySW5wdXRMb2NhbGVDb25maWcsXG4gICAgbm9ybWFsaXplTnVtYmVyLFxuICAgIHJ1UlVGb3JtYXR0ZXJzRGF0YVxufSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvY29yZSc7XG5pbXBvcnQgeyBLYnFGb3JtRmllbGRDb250cm9sIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY29uc3QgS0JRX0lOUFVUX05VTUJFUl9ERUZBVUxUX0NPTkZJR1VSQVRJT04gPSBydVJVRm9ybWF0dGVyc0RhdGEuaW5wdXQubnVtYmVyO1xuXG5leHBvcnQgY29uc3QgQklHX1NURVAgPSAxMDtcbmV4cG9ydCBjb25zdCBTTUFMTF9TVEVQID0gMTtcblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVNwbGl0dGVyKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWx1ZSA/IHZhbHVlLnJlcGxhY2UoLywvZywgJy4nKSA6IHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNGbG9hdCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIC9eLT9cXGQrXFwuXFxkKyQvLnRlc3QodmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNJbnQodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAvXi0/XFxkKyQvLnRlc3QodmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEaWdpdCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzRmxvYXQodmFsdWUpIHx8IGlzSW50KHZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByZWNpc2lvbih2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBhcnIgPSB2YWx1ZS50b1N0cmluZygpLnNwbGl0KCcuJyk7XG5cbiAgICByZXR1cm4gYXJyLmxlbmd0aCA9PT0gMSA/IDEgOiBNYXRoLnBvdygxMCwgYXJyWzFdLmxlbmd0aCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGQodmFsdWUxOiBudW1iZXIsIHZhbHVlMjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBwcmVjaXNpb24gPSBNYXRoLm1heChnZXRQcmVjaXNpb24odmFsdWUxKSwgZ2V0UHJlY2lzaW9uKHZhbHVlMikpO1xuXG4gICAgcmV0dXJuICh2YWx1ZTEgKiBwcmVjaXNpb24gKyB2YWx1ZTIgKiBwcmVjaXNpb24pIC8gcHJlY2lzaW9uO1xufVxuXG5leHBvcnQgY29uc3QgS0JRX05VTUJFUl9JTlBVVF9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEticU51bWJlcklucHV0KSxcbiAgICBtdWx0aTogdHJ1ZVxufTtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6IGBpbnB1dFtrYnFOdW1iZXJJbnB1dF1gLFxuICAgIGV4cG9ydEFzOiAna2JxTnVtZXJpY2FsSW5wdXQnLFxuICAgIHByb3ZpZGVyczogW0tCUV9OVU1CRVJfSU5QVVRfVkFMVUVfQUNDRVNTT1JdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhibHVyKSc6ICdmb2N1c0NoYW5nZWQoZmFsc2UpJyxcbiAgICAgICAgJyhmb2N1cyknOiAnZm9jdXNDaGFuZ2VkKHRydWUpJyxcbiAgICAgICAgJyhwYXN0ZSknOiAnb25QYXN0ZSgkZXZlbnQpJyxcbiAgICAgICAgJyhrZXlkb3duKSc6ICdvbktleURvd24oJGV2ZW50KScsXG4gICAgICAgICcoaW5wdXQpJzogJ29uSW5wdXQoJGV2ZW50KSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEticU51bWJlcklucHV0IGltcGxlbWVudHMgS2JxRm9ybUZpZWxkQ29udHJvbDxhbnk+LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95IHtcbiAgICAvKiogRW1pdHMgd2hlbiB0aGUgdmFsdWUgY2hhbmdlcyAoZWl0aGVyIGR1ZSB0byB1c2VyIGlucHV0IG9yIHByb2dyYW1tYXRpYyBjaGFuZ2UpLiAqL1xuICAgIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXIgfCBudWxsPigpO1xuXG4gICAgLyoqIEVtaXRzIHdoZW4gdGhlIGRpc2FibGVkIHN0YXRlIGhhcyBjaGFuZ2VkICovXG4gICAgZGlzYWJsZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICByZWFkb25seSBzdGF0ZUNoYW5nZXM6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgaWQ6IHN0cmluZztcblxuICAgIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICBlbXB0eTogYm9vbGVhbjtcblxuICAgIHJlcXVpcmVkOiBib29sZWFuO1xuXG4gICAgZXJyb3JTdGF0ZTogYm9vbGVhbjtcblxuICAgIGNvbnRyb2xUeXBlPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogQWxsb3dzIGlucHV0IGFuZCBwYXN0aW5nIG9mIGludGVnZXJzIG9ubHkuXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgaW50ZWdlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBiaWdTdGVwOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKVxuICAgIHN0ZXA6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpXG4gICAgbWluOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKVxuICAgIG1heDogbnVtYmVyO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgd2l0aFRob3VzYW5kU2VwYXJhdG9yOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEluY2x1ZGUgdGhvdXNhbmQgc2VwYXJhdG9yIGZyb20gY3VzdG9tIGluZGV4LiBGb3IgZXhhbXBsZSwgaXQgd2lsbCBiZSB1c2VmdWwgaW4gdGFibGVzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RhcnRGb3JtYXR0aW5nRnJvbT86IG51bWJlcjtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHZhbHVlKCk6IG51bWJlciB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBudW1iZXIgfCBudWxsKSB7XG4gICAgICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy52YWx1ZTtcblxuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuXG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Vmlld1ZhbHVlKHRoaXMuZm9ybWF0TnVtYmVyKHZhbHVlKSk7XG5cbiAgICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF92YWx1ZTogbnVtYmVyIHwgbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMubmF0aXZlRWxlbWVudDtcblxuICAgICAgICBpZiAodGhpcy5fZGlzYWJsZWQgIT09IG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlZENoYW5nZS5lbWl0KG5ld1ZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFdlIG5lZWQgdG8gbnVsbCBjaGVjayB0aGUgYGJsdXJgIG1ldGhvZCwgYmVjYXVzZSBpdCdzIHVuZGVmaW5lZCBkdXJpbmcgU1NSLlxuICAgICAgICBpZiAobmV3VmFsdWUgJiYgZWxlbWVudC5ibHVyKSB7XG4gICAgICAgICAgICAvLyBOb3JtYWxseSwgbmF0aXZlIGlucHV0IGVsZW1lbnRzIGF1dG9tYXRpY2FsbHkgYmx1ciBpZiB0aGV5IHR1cm4gZGlzYWJsZWQuIFRoaXMgYmVoYXZpb3JcbiAgICAgICAgICAgIC8vIGlzIHByb2JsZW1hdGljLCBiZWNhdXNlIGl0IHdvdWxkIG1lYW4gdGhhdCBpdCB0cmlnZ2VycyBhbm90aGVyIGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUsXG4gICAgICAgICAgICAvLyB3aGljaCB0aGVuIGNhdXNlcyBhIGNoYW5nZWQgYWZ0ZXIgY2hlY2tlZCBlcnJvciBpZiB0aGUgaW5wdXQgZWxlbWVudCB3YXMgZm9jdXNlZCBiZWZvcmUuXG4gICAgICAgICAgICBlbGVtZW50LmJsdXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBmb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBnZXQgbmF0aXZlRWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIGdldCB2aWV3VmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgbmdDb250cm9sKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2w7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBmcmFjdGlvblNlcGFyYXRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmZyYWN0aW9uU2VwYXJhdG9yO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgZ3JvdXBTZXBhcmF0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5ncm91cFNlcGFyYXRvcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcblxuICAgIHByaXZhdGUgY29uZmlnOiBLYnFOdW1iZXJJbnB1dExvY2FsZUNvbmZpZztcblxuICAgIHByaXZhdGUgdmFsdWVGcm9tUGFzdGU6IG51bWJlciB8IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ3N0ZXAnKSBzdGVwOiBzdHJpbmcsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ2JpZy1zdGVwJykgYmlnU3RlcDogc3RyaW5nLFxuICAgICAgICBAQXR0cmlidXRlKCdtaW4nKSBtaW46IHN0cmluZyxcbiAgICAgICAgQEF0dHJpYnV0ZSgnbWF4JykgbWF4OiBzdHJpbmcsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX0xPQ0FMRV9TRVJWSUNFKSBwcml2YXRlIGxvY2FsZVNlcnZpY2U/OiBLYnFMb2NhbGVTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuc3RlcCA9IGlzRGlnaXQoc3RlcCkgPyBwYXJzZUZsb2F0KHN0ZXApIDogU01BTExfU1RFUDtcbiAgICAgICAgdGhpcy5iaWdTdGVwID0gaXNEaWdpdChiaWdTdGVwKSA/IHBhcnNlRmxvYXQoYmlnU3RlcCkgOiBCSUdfU1RFUDtcbiAgICAgICAgdGhpcy5taW4gPSBpc0RpZ2l0KG1pbikgPyBwYXJzZUZsb2F0KG1pbikgOiAtSW5maW5pdHk7XG4gICAgICAgIHRoaXMubWF4ID0gaXNEaWdpdChtYXgpID8gcGFyc2VGbG9hdChtYXgpIDogSW5maW5pdHk7XG5cbiAgICAgICAgaWYgKCd2YWx1ZUFzTnVtYmVyJyBpbiB0aGlzLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcy5uYXRpdmVFbGVtZW50KSwgJ3ZhbHVlQXNOdW1iZXInLCB7XG4gICAgICAgICAgICAgICAgZ2V0KCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBwYXJzZUZsb2F0KG5vcm1hbGl6ZVNwbGl0dGVyKHRoaXMudmFsdWUpKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXNOYU4ocmVzKSA/IG51bGwgOiByZXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2U/LmNoYW5nZXMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKHRoaXMudXBkYXRlTG9jYWxlUGFyYW1zKTtcblxuICAgICAgICBpZiAoIWxvY2FsZVNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdERlZmF1bHRQYXJhbXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuZGlzYWJsZWRDaGFuZ2UuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBvbkNvbnRhaW5lckNsaWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgfVxuXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogbnVtYmVyIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLmN2YU9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIGZvY3VzQ2hhbmdlZChpc0ZvY3VzZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKGlzRm9jdXNlZCAhPT0gdGhpcy5mb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWQgPSBpc0ZvY3VzZWQ7XG4gICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICAgIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBjb25zdCBrZXlDb2RlID0gZXZlbnQua2V5Q29kZTtcbiAgICAgICAgY29uc3QgbWludXNlcyA9IFtOVU1QQURfTUlOVVMsIERBU0gsIEZGX01JTlVTXTtcbiAgICAgICAgY29uc3Qgc2VydmljZUtleXMgPSBbREVMRVRFLCBCQUNLU1BBQ0UsIFRBQiwgRVNDQVBFLCBFTlRFUl07XG4gICAgICAgIGNvbnN0IGFycm93cyA9IFtMRUZUX0FSUk9XLCBSSUdIVF9BUlJPV107XG4gICAgICAgIGNvbnN0IGFsbG93ZWRLZXlzID0gW0hPTUUsIEVORF0uY29uY2F0KGFycm93cykuY29uY2F0KHNlcnZpY2VLZXlzKS5jb25jYXQobWludXNlcyk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKHRoaXMuaW50ZWdlciAmJiB0aGlzLmlzUGVyaW9kKGV2ZW50KSkgfHxcbiAgICAgICAgICAgIChtaW51c2VzLmluY2x1ZGVzKGtleUNvZGUpICYmICh0aGlzLnZpZXdWYWx1ZS5pbmNsdWRlcyhldmVudC5rZXkpIHx8IHRoaXMubWluID49IDApKSB8fFxuICAgICAgICAgICAgKHRoaXMuaXNQZXJpb2QoZXZlbnQpICYmXG4gICAgICAgICAgICAgICAgZXZlbnQua2V5ID09PSB0aGlzLmZyYWN0aW9uU2VwYXJhdG9yICYmXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3VmFsdWUuaW5kZXhPZih0aGlzLmZyYWN0aW9uU2VwYXJhdG9yKSAhPT0gLTEpXG4gICAgICAgICkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFsbG93ZWRLZXlzLmluZGV4T2Yoa2V5Q29kZSkgIT09IC0xIHx8IFtcbiAgICAgICAgICAgICAgICBpc1NlbGVjdEFsbCxcbiAgICAgICAgICAgICAgICBpc0NvcHksXG4gICAgICAgICAgICAgICAgdGhpcy5pc0N0cmxWLFxuICAgICAgICAgICAgICAgIHRoaXMuaXNDdHJsWCxcbiAgICAgICAgICAgICAgICB0aGlzLmlzQ3RybFosXG4gICAgICAgICAgICAgICAgaXNGdW5jdGlvbktleSxcbiAgICAgICAgICAgICAgICB0aGlzLmlzUGVyaW9kXG4gICAgICAgICAgICBdLnNvbWUoKGZuKSA9PiBmbihldmVudCkpKSB7XG4gICAgICAgICAgICAvLyBsZXQgaXQgaGFwcGVuLCBkb24ndCBkbyBhbnl0aGluZ1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRW5zdXJlIHRoYXQgaXQgaXMgbm90IGEgbnVtYmVyIGFuZCBzdG9wIHRoZSBrZXlwcmVzc1xuICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkgfHwgKCFpc051bWJlcktleShldmVudCkgJiYgIWlzTnVtcGFkS2V5KGV2ZW50KSkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgIC8vIHByb2Nlc3Mgc3RlcHNcbiAgICAgICAgICAgIGNvbnN0IHN0ZXAgPSBldmVudC5zaGlmdEtleSA/IHRoaXMuYmlnU3RlcCA6IHRoaXMuc3RlcDtcblxuICAgICAgICAgICAgaWYgKGtleUNvZGUgPT09IFVQX0FSUk9XKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwVXAoc3RlcCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChrZXlDb2RlID09PSBET1dOX0FSUk9XKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwRG93bihzdGVwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uSW5wdXQoZXZlbnQ6IElucHV0RXZlbnQpIHtcbiAgICAgICAgY29uc3QgY3VycmVudFZhbHVlTGVuZ3RoID0gdGhpcy5mb3JtYXROdW1iZXIodGhpcy52YWx1ZSk/Lmxlbmd0aCB8fCAwO1xuICAgICAgICBjb25zdCBwcmV2aW91c1NlbGVjdGlvblN0YXJ0ID0gdGhpcy5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0IHx8IDA7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmcm9tUGFzdGUgPSBldmVudC5pbnB1dFR5cGUgPT09ICdpbnNlcnRGcm9tUGFzdGUnO1xuICAgICAgICAgICAgbGV0IGZvcm1hdHRlZFZhbHVlOiBzdHJpbmcgfCBudWxsO1xuXG4gICAgICAgICAgICBpZiAoZnJvbVBhc3RlKSB7XG4gICAgICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUgPSB0aGlzLmZvcm1hdE51bWJlcih0aGlzLnZhbHVlRnJvbVBhc3RlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLyp0aGlzLnZpZXdWYWx1ZSBpcyByYXcgYW5kIHNob3VsZCBiZSByZWZvcm1hdHRlZCB0byBsb2NhbGl6ZWQgbnVtYmVyICovXG4gICAgICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUgPSB0aGlzLmZvcm1hdFZpZXdWYWx1ZSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMud2l0aFRob3VzYW5kU2VwYXJhdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9mZnNldFdoZW5TZXBhcmF0b3JBZGRlZCA9IDI7XG5cbiAgICAgICAgICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGguYWJzKHRoaXMudmFsdWUpID49IDEwMDAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmFicyh0aGlzLnZpZXdWYWx1ZS5sZW5ndGggLSBjdXJyZW50VmFsdWVMZW5ndGgpID09PSBvZmZzZXRXaGVuU2VwYXJhdG9yQWRkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vdmUgc2VsZWN0aW9uIHRvIHRoZSBsZWZ0L3JpZ2h0IGlmIHNlcGFyYXRvciB3YXMgYWRkZWQvcmVtb3ZlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnNvclBvc2l0aW9uID0gTWF0aC5tYXgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzU2VsZWN0aW9uU3RhcnQgKyBNYXRoLnNpZ24odGhpcy52aWV3VmFsdWUubGVuZ3RoIC0gY3VycmVudFZhbHVlTGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMubmF0aXZlRWxlbWVudCwgJ3NlbGVjdGlvblN0YXJ0JywgY3Vyc29yUG9zaXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5uYXRpdmVFbGVtZW50LCAnc2VsZWN0aW9uRW5kJywgY3Vyc29yUG9zaXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2V0Vmlld1ZhbHVlKGZvcm1hdHRlZFZhbHVlLCAhZnJvbVBhc3RlKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMudmlld1ZhbHVlICE9PSAnLScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdUb01vZGVsVXBkYXRlKGZvcm1hdHRlZFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy52YWx1ZUZyb21QYXN0ZSA9IGNoZWNrQW5kTm9ybWFsaXplTG9jYWxpemVkTnVtYmVyKFxuICAgICAgICAgICAgZXZlbnQuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dCcpLFxuICAgICAgICAgICAgdGhpcy5sb2NhbGVTZXJ2aWNlPy5pZFxuICAgICAgICApO1xuXG4gICAgICAgIGlmICh0aGlzLnZhbHVlRnJvbVBhc3RlID09PSBudWxsIHx8IGlzTmFOKHRoaXMudmFsdWVGcm9tUGFzdGUpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaW50ZWdlciAmJiBpc0Zsb2F0KHRoaXMudmFsdWVGcm9tUGFzdGUudG9TdHJpbmcoKSkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZFZhbHVlID0gTnVtYmVyLnBhcnNlSW50KHRoaXMudmFsdWVGcm9tUGFzdGUudG9TdHJpbmcoKSk7XG5cbiAgICAgICAgICAgIHRoaXMuc2V0Vmlld1ZhbHVlKHRoaXMuZm9ybWF0TnVtYmVyKHBhcnNlZFZhbHVlKSk7XG4gICAgICAgICAgICB0aGlzLnZpZXdUb01vZGVsVXBkYXRlKHBhcnNlZFZhbHVlLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RlcFVwKHN0ZXA6IG51bWJlcikge1xuICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcblxuICAgICAgICBjb25zdCByZXMgPSBNYXRoLm1heChNYXRoLm1pbihhZGQodGhpcy52YWx1ZSB8fCAwLCBzdGVwKSwgdGhpcy5tYXgpLCB0aGlzLm1pbik7XG5cbiAgICAgICAgdGhpcy5zZXRWaWV3VmFsdWUodGhpcy5mb3JtYXROdW1iZXIocmVzKSk7XG5cbiAgICAgICAgdGhpcy5fdmFsdWUgPSByZXM7XG4gICAgICAgIHRoaXMuY3ZhT25DaGFuZ2UocmVzKTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHJlcyk7XG4gICAgfVxuXG4gICAgc3RlcERvd24oc3RlcDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXG4gICAgICAgIGNvbnN0IHJlcyA9IE1hdGgubWluKE1hdGgubWF4KGFkZCh0aGlzLnZhbHVlIHx8IDAsIC1zdGVwKSwgdGhpcy5taW4pLCB0aGlzLm1heCk7XG5cbiAgICAgICAgdGhpcy5zZXRWaWV3VmFsdWUodGhpcy5mb3JtYXROdW1iZXIocmVzKSk7XG5cbiAgICAgICAgdGhpcy5fdmFsdWUgPSByZXM7XG4gICAgICAgIHRoaXMuY3ZhT25DaGFuZ2UocmVzKTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHJlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0RGVmYXVsdFBhcmFtcygpIHtcbiAgICAgICAgdGhpcy5jb25maWcgPSBLQlFfSU5QVVRfTlVNQkVSX0RFRkFVTFRfQ09ORklHVVJBVElPTjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQ3RybFYgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIGV2ZW50LmtleUNvZGUgPT09IFYgJiYgKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgaXNDdHJsWCA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICByZXR1cm4gZXZlbnQua2V5Q29kZSA9PT0gWCAmJiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBpc0N0cmxaID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBldmVudC5rZXlDb2RlID09PSBaICYmIChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIGlzUGVyaW9kID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyb3VwU2VwYXJhdG9yLmluY2x1ZGVzKGV2ZW50LmtleSkgfHwgW3RoaXMuZnJhY3Rpb25TZXBhcmF0b3IsICcuJ10uaW5jbHVkZXMoZXZlbnQua2V5KTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBjdmFPbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIHByaXZhdGUgc2V0Vmlld1ZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudWxsLCBzYXZlUG9zaXRpb246IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBjdXJzb3JQb3NpdGlvbiA9IHRoaXMubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydDtcblxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgdmFsdWUpO1xuXG4gICAgICAgIGlmIChzYXZlUG9zaXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5uYXRpdmVFbGVtZW50LCAnc2VsZWN0aW9uU3RhcnQnLCBjdXJzb3JQb3NpdGlvbik7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMubmF0aXZlRWxlbWVudCwgJ3NlbGVjdGlvbkVuZCcsIGN1cnNvclBvc2l0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdmlld1RvTW9kZWxVcGRhdGUobmV3VmFsdWU6IHN0cmluZyB8IG51bGwpIHtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZFZhbHVlID0gbmV3VmFsdWUgPT09IG51bGwgPyBudWxsIDogK25vcm1hbGl6ZU51bWJlcihuZXdWYWx1ZSwgdGhpcy5jb25maWcpO1xuXG4gICAgICAgIGlmIChub3JtYWxpemVkVmFsdWUgIT09IHRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gbm9ybWFsaXplZFZhbHVlO1xuICAgICAgICAgICAgdGhpcy5jdmFPbkNoYW5nZShub3JtYWxpemVkVmFsdWUpO1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm5nQ29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXRWaWV3VmFsdWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIC8vIHdlIGp1c3QgbmVlZCB0byBza2lwIHRoZSBtaW51cyBzaWduIGFuZCBub3QgZG8gYW55IGZvcm1hdHRpbmdcbiAgICAgICAgaWYgKHRoaXMudmlld1ZhbHVlID09PSAnLScpIHJldHVybiB0aGlzLnZpZXdWYWx1ZTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnZpZXdWYWx1ZSA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgdGhpcy52aWV3VmFsdWUgPT09ICcnIHx8XG4gICAgICAgICAgICBOdW1iZXIuaXNOYU4oK25vcm1hbGl6ZU51bWJlcih0aGlzLnZpZXdWYWx1ZSwgdGhpcy5jb25maWcpKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VwYXJhdG9yID1cbiAgICAgICAgICAgIHRoaXMuZ3JvdXBTZXBhcmF0b3IuaW5jbHVkZXMoJyAnKSAmJiB0aGlzLmZyYWN0aW9uU2VwYXJhdG9yID09PSAnLCcgPyAvWywuXS8gOiB0aGlzLmZyYWN0aW9uU2VwYXJhdG9yO1xuXG4gICAgICAgIGNvbnN0IFtpbnRQYXJ0LCBmcmFjdGlvblBhcnRdID0gdGhpcy52aWV3VmFsdWVcbiAgICAgICAgICAgIC5zcGxpdChzZXBhcmF0b3IpXG4gICAgICAgICAgICAubWFwKCh2YWx1ZVBhcnQpID0+IG5vcm1hbGl6ZU51bWJlcih2YWx1ZVBhcnQsIHRoaXMuY29uZmlnKSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlTG9jYWxpemVkTnVtYmVyRnJvbVBhcnRzKCtpbnRQYXJ0LCBmcmFjdGlvblBhcnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0TnVtYmVyKHZhbHVlOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBjb25zdCBbaW50UGFydCwgZnJhY3Rpb25QYXJ0XSA9IHZhbHVlLnRvU3RyaW5nKCkuc3BsaXQoJy4nKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVMb2NhbGl6ZWROdW1iZXJGcm9tUGFydHMoK2ludFBhcnQsIGZyYWN0aW9uUGFydCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVMb2NhbGl6ZWROdW1iZXJGcm9tUGFydHMoaW50UGFydDogbnVtYmVyLCBmcmFjdGlvblBhcnQ/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBmb3JtYXRPcHRpb25zID0ge1xuICAgICAgICAgICAgdXNlR3JvdXBpbmc6IHRoaXMud2l0aFRob3VzYW5kU2VwYXJhdG9yLFxuICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyMFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLndpdGhUaG91c2FuZFNlcGFyYXRvciAmJiB0aGlzLmNvbmZpZy5zdGFydEZvcm1hdHRpbmdGcm9tKSB7XG4gICAgICAgICAgICBmb3JtYXRPcHRpb25zLnVzZUdyb3VwaW5nID0gaW50UGFydCA+PSBNYXRoLnBvdygxMCwgdGhpcy5jb25maWcuc3RhcnRGb3JtYXR0aW5nRnJvbSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsb2NhbGVJZCA9ICF0aGlzLmxvY2FsZVNlcnZpY2UgfHwgdGhpcy5sb2NhbGVTZXJ2aWNlLmlkID09PSAnZXMtTEEnID8gJ3J1LVJVJyA6IHRoaXMubG9jYWxlU2VydmljZS5pZDtcblxuICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlSWQsIGZvcm1hdE9wdGlvbnMpO1xuXG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZEludFBhcnQgPSBmb3JtYXROdW1iZXJXaXRoTG9jYWxlKGludFBhcnQsIGZvcm1hdHRlciwgdGhpcy5jb25maWcpO1xuXG4gICAgICAgIGlmIChmcmFjdGlvblBhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZEludFBhcnQ7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZm9ybWF0dGVkRnJhY3Rpb25QYXJ0OiBzdHJpbmcgPSAnJztcblxuICAgICAgICBmb3IgKGNvbnN0IG51bUNoYXIgb2YgZnJhY3Rpb25QYXJ0KSB7XG4gICAgICAgICAgICBmb3JtYXR0ZWRGcmFjdGlvblBhcnQgKz0gZm9ybWF0dGVyLmZvcm1hdCgrbnVtQ2hhcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYCR7Zm9ybWF0dGVkSW50UGFydH0ke3RoaXMuZnJhY3Rpb25TZXBhcmF0b3J9JHtmb3JtYXR0ZWRGcmFjdGlvblBhcnR9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUxvY2FsZVBhcmFtcyA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5jb25maWcgPSB0aGlzLmxvY2FsZVNlcnZpY2UhLmdldFBhcmFtcygnaW5wdXQnKS5udW1iZXI7XG5cbiAgICAgICAgdGhpcy5zZXRWaWV3VmFsdWUodGhpcy5mb3JtYXROdW1iZXIodGhpcy52YWx1ZSkpO1xuICAgIH07XG59XG4iXX0=
386
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9pbnB1dC9pbnB1dC1udW1iZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUNILFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBRUwsUUFBUSxFQUNSLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQXlDLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUYsT0FBTyxFQUNILFNBQVMsRUFDVCxJQUFJLEVBQ0osTUFBTSxFQUNOLFVBQVUsRUFDVixHQUFHLEVBQ0gsS0FBSyxFQUNMLE1BQU0sRUFDTixRQUFRLEVBQ1IsSUFBSSxFQUNKLE1BQU0sRUFDTixhQUFhLEVBQ2IsV0FBVyxFQUNYLFdBQVcsRUFDWCxXQUFXLEVBQ1gsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsR0FBRyxFQUNILFFBQVEsRUFDUixDQUFDLEVBQ0QsQ0FBQyxFQUNELENBQUMsRUFDSixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFDSCxnQ0FBZ0MsRUFDaEMsc0JBQXNCLEVBQ3RCLCtCQUErQixFQUMvQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBRWhCLGVBQWUsRUFDZixrQkFBa0IsRUFDckIsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFFL0IsTUFBTSxDQUFDLE1BQU0sc0NBQXNDLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUV0RixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQzNCLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUM7QUFFNUIsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQWE7SUFDM0MsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLCtCQUErQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNoRixDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxLQUFhO0lBQ2pDLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRUQsTUFBTSxVQUFVLEtBQUssQ0FBQyxLQUFhO0lBQy9CLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxLQUFhO0lBQ2pDLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFhO0lBQ3RDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUVwRSxPQUFPLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM5RCxDQUFDO0FBRUQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxNQUFjLEVBQUUsTUFBYztJQUM5QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUV2RSxPQUFPLENBQUMsTUFBTSxHQUFHLFNBQVMsR0FBRyxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQ2pFLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBUTtJQUNoRCxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDO0lBQzdDLEtBQUssRUFBRSxJQUFJO0NBQ2QsQ0FBQztBQWNGLE1BQU0sT0FBTyxjQUFjO0lBZ0R2QixJQUNJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLEtBQW9CO1FBQzFCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFFNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFFcEIsSUFBSSxRQUFRLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFFNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQztJQUNMLENBQUM7SUFJRCxJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLEtBQWM7UUFDdkIsTUFBTSxRQUFRLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUVuQyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7WUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUVELDhFQUE4RTtRQUM5RSxJQUFJLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0IsMEZBQTBGO1lBQzFGLHlGQUF5RjtZQUN6RiwyRkFBMkY7WUFDM0YsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25CLENBQUM7SUFDTCxDQUFDO0lBTUQsSUFBSSxhQUFhO1FBQ2IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFjLGlCQUFpQjtRQUMzQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUM7SUFDekMsQ0FBQztJQUVELElBQWMsY0FBYztRQUN4QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDO0lBQ3RDLENBQUM7SUFRRCxZQUNZLFVBQXdDLEVBQy9CLFFBQW1CLEVBQ2pCLElBQVksRUFDUixPQUFlLEVBQ3BCLEdBQVcsRUFDWCxHQUFXLEVBQ21CLGFBQWdDO1FBTnhFLGVBQVUsR0FBVixVQUFVLENBQThCO1FBQy9CLGFBQVEsR0FBUixRQUFRLENBQVc7UUFLWSxrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7UUE5SHBGLHNGQUFzRjtRQUN0RixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBRWhELGdEQUFnRDtRQUNoRCxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFFcEMsaUJBQVksR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQWMzRDs7V0FFRztRQUVILFlBQU8sR0FBWSxLQUFLLENBQUM7UUFlekIsMEJBQXFCLEdBQVksSUFBSSxDQUFDO1FBa0Q5QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBRW5DLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFtR3pCLGNBQVMsR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFtSmIsWUFBTyxHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFO1lBQ3ZDLE9BQU8sS0FBSyxDQUFDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuRSxDQUFDLENBQUM7UUFFTSxZQUFPLEdBQUcsQ0FBQyxLQUFvQixFQUFFLEVBQUU7WUFDdkMsT0FBTyxLQUFLLENBQUMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25FLENBQUMsQ0FBQztRQUVNLFlBQU8sR0FBRyxDQUFDLEtBQW9CLEVBQUUsRUFBRTtZQUN2QyxPQUFPLEtBQUssQ0FBQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkUsQ0FBQyxDQUFDO1FBRU0sYUFBUSxHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFO1lBQ3hDLE9BQU8sQ0FDSCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUN2QyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSwrQkFBK0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQ2hGLENBQUM7UUFDTixDQUFDLENBQUM7UUFFTSxnQkFBVyxHQUF5QixHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFvRjdDLHVCQUFrQixHQUFHLEdBQUcsRUFBRTtZQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFjLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUU1RCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDO1FBNVRFLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUMxRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDakUsSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDdEQsSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBRXJELElBQUksZUFBZSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN4QyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLGVBQWUsRUFBRTtnQkFDOUUsR0FBRztvQkFDQyxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBRXRELE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFDbkMsQ0FBQzthQUNKLENBQUMsQ0FBQztRQUNQLENBQUM7UUFFRCxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUUxRixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELEtBQUs7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCwrQ0FBK0M7SUFDL0MsVUFBVSxDQUFDLEtBQW9CO1FBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCwrQ0FBK0M7SUFDL0MsZ0JBQWdCLENBQUMsRUFBd0I7UUFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELCtDQUErQztJQUMvQyxpQkFBaUIsQ0FBQyxFQUFjO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCwrQ0FBK0M7SUFDL0MsZ0JBQWdCLENBQUMsVUFBbUI7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUVELFlBQVksQ0FBQyxTQUFrQjtRQUMzQixJQUFJLFNBQVMsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7WUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3QixDQUFDO0lBQ0wsQ0FBQztJQUlELFNBQVMsQ0FBQyxLQUFvQjtRQUMxQixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzlCLE1BQU0sT0FBTyxHQUFHLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvQyxNQUFNLFdBQVcsR0FBRyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1RCxNQUFNLE1BQU0sR0FBRyxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN6QyxNQUFNLFdBQVcsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVuRiw0Q0FBNEM7UUFDNUMsTUFBTSxvQkFBb0IsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFMUUsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEUsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzFHLE1BQU0saUNBQWlDLEdBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQ3BCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLCtCQUErQixDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7WUFDN0Usb0JBQW9CLENBQUMsT0FBTyxDQUFDLCtCQUErQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFekUsSUFBSSx3QkFBd0IsSUFBSSxjQUFjLElBQUksaUNBQWlDLEVBQUUsQ0FBQztZQUNsRixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFFdkIsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUk7WUFDbkMsV0FBVztZQUNYLE1BQU07WUFDTixJQUFJLENBQUMsT0FBTztZQUNaLElBQUksQ0FBQyxPQUFPO1lBQ1osSUFBSSxDQUFDLE9BQU87WUFDWixhQUFhO1lBQ2IsSUFBSSxDQUFDLFFBQVE7U0FDaEIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDNUIsbUNBQW1DO1lBQ25DLE9BQU87UUFDWCxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFNUQsdURBQXVEO1FBQ3ZELElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUM3QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFFdkIsZ0JBQWdCO1lBQ2hCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFFdkQsSUFBSSxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEIsQ0FBQztZQUVELElBQUksT0FBTyxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hCLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFpQjtRQUNyQixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFDdEUsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUM7UUFFdEUsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLEtBQUssaUJBQWlCLENBQUM7WUFDeEQsSUFBSSxjQUE2QixDQUFDO1lBRWxDLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ1osY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzVELENBQUM7aUJBQU0sQ0FBQztnQkFDSix3RUFBd0U7Z0JBQ3hFLGNBQWMsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBRXhDLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7b0JBQzdCLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxDQUFDO29CQUVuQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTt3QkFDeEIsSUFDSSxJQUFJLENBQUMsS0FBSzs0QkFDVixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJOzRCQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLGtCQUFrQixDQUFDLEtBQUssd0JBQXdCLEVBQ25GLENBQUM7NEJBQ0Msa0VBQWtFOzRCQUNsRSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUMzQixDQUFDLEVBQ0Qsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxDQUNqRixDQUFDOzRCQUVGLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLENBQUM7NEJBQ2hGLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDO3dCQUNsRixDQUFDO29CQUNMLENBQUMsQ0FBQyxDQUFDO2dCQUNQLENBQUM7WUFDTCxDQUFDO1lBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUU5QyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMzQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQXFCO1FBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsZ0NBQWdDLENBQ2xELEtBQUssQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUNwQyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FDekIsQ0FBQztRQUVGLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQzdELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMzQixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNqRSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFFdkIsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFFcEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQVk7UUFDZixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTNCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUvRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUUxQyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBWTtRQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTNCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWhGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVPLGlCQUFpQjtRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLHNDQUFzQyxDQUFDO0lBQ3pELENBQUM7SUF1Qk8sWUFBWSxDQUFDLEtBQW9CLEVBQUUsZUFBd0IsS0FBSztRQUNwRSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQztRQUV6RCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUU5RCxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLENBQUMsQ0FBQztZQUNoRixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLGNBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUNsRixDQUFDO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQixDQUFDLFFBQXVCO1FBQzdDLE1BQU0sZUFBZSxHQUFHLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUzRixJQUFJLGVBQWUsS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUM7WUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsRUFBRSxzQkFBc0IsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFTyxlQUFlO1FBQ25CLGdFQUFnRTtRQUNoRSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssR0FBRztZQUFFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUVsRCxJQUNJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSTtZQUN2QixJQUFJLENBQUMsU0FBUyxLQUFLLEVBQUU7WUFDckIsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUM3RCxDQUFDO1lBQ0MsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUNYLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBRTFHLE1BQU0sQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVM7YUFDekMsS0FBSyxDQUFDLFNBQVMsQ0FBQzthQUNoQixHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFakUsT0FBTyxJQUFJLENBQUMsOEJBQThCLENBQUMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVPLFlBQVksQ0FBQyxLQUFnQztRQUNqRCxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUV2RCxNQUFNLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUV4RixPQUFPLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRU8sOEJBQThCLENBQUMsT0FBZSxFQUFFLFlBQXFCO1FBQ3pFLE1BQU0sYUFBYSxHQUFHO1lBQ2xCLFdBQVcsRUFBRSxJQUFJLENBQUMscUJBQXFCO1lBQ3ZDLHFCQUFxQixFQUFFLEVBQUU7U0FDNUIsQ0FBQztRQUVGLElBQUksSUFBSSxDQUFDLHFCQUFxQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUNoRSxhQUFhLENBQUMsV0FBVyxHQUFHLE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDekYsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7UUFFNUcsTUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUVqRSxNQUFNLGdCQUFnQixHQUFHLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWpGLElBQUksWUFBWSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sZ0JBQWdCLENBQUM7UUFDNUIsQ0FBQztRQUVELElBQUkscUJBQXFCLEdBQVcsRUFBRSxDQUFDO1FBRXZDLEtBQUssTUFBTSxPQUFPLElBQUksWUFBWSxFQUFFLENBQUM7WUFDakMscUJBQXFCLElBQUksU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFFRCxPQUFPLEdBQUcsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixHQUFHLHFCQUFxQixFQUFFLENBQUM7SUFDbEYsQ0FBQztrSUF2YlEsY0FBYyxxRUEySFIsTUFBTSw4QkFDTixVQUFVLDhCQUNWLEtBQUssOEJBQ0wsS0FBSyw4QkFDSSxrQkFBa0I7c0hBL0hqQyxjQUFjLCtFQXdCSCxnQkFBZ0IsdUlBZWhCLGdCQUFnQixpUkFoRHpCLENBQUMsK0JBQStCLENBQUM7OzRGQVNuQyxjQUFjO2tCQVoxQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFNBQVMsRUFBRSxDQUFDLCtCQUErQixDQUFDO29CQUM1QyxJQUFJLEVBQUU7d0JBQ0YsUUFBUSxFQUFFLHFCQUFxQjt3QkFDL0IsU0FBUyxFQUFFLG9CQUFvQjt3QkFDL0IsU0FBUyxFQUFFLGlCQUFpQjt3QkFDNUIsV0FBVyxFQUFFLG1CQUFtQjt3QkFDaEMsU0FBUyxFQUFFLGlCQUFpQjtxQkFDL0I7aUJBQ0o7OzBCQTRIUSxTQUFTOzJCQUFDLE1BQU07OzBCQUNoQixTQUFTOzJCQUFDLFVBQVU7OzBCQUNwQixTQUFTOzJCQUFDLEtBQUs7OzBCQUNmLFNBQVM7MkJBQUMsS0FBSzs7MEJBQ2YsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxrQkFBa0I7eUNBdEcxQyxPQUFPO3NCQUROLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBSXRDLE9BQU87c0JBRE4sS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBSU4sR0FBRztzQkFERixLQUFLO2dCQUlOLEdBQUc7c0JBREYsS0FBSztnQkFJTixxQkFBcUI7c0JBRHBCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBT3RDLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFJRixLQUFLO3NCQURSLEtBQUs7Z0JBb0JGLFFBQVE7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIEF0dHJpYnV0ZSxcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgUmVuZGVyZXIyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIEJBQ0tTUEFDRSxcbiAgICBEQVNILFxuICAgIERFTEVURSxcbiAgICBET1dOX0FSUk9XLFxuICAgIEVORCxcbiAgICBFTlRFUixcbiAgICBFU0NBUEUsXG4gICAgRkZfTUlOVVMsXG4gICAgSE9NRSxcbiAgICBpc0NvcHksXG4gICAgaXNGdW5jdGlvbktleSxcbiAgICBpc051bWJlcktleSxcbiAgICBpc051bXBhZEtleSxcbiAgICBpc1NlbGVjdEFsbCxcbiAgICBMRUZUX0FSUk9XLFxuICAgIE5VTVBBRF9NSU5VUyxcbiAgICBSSUdIVF9BUlJPVyxcbiAgICBUQUIsXG4gICAgVVBfQVJST1csXG4gICAgVixcbiAgICBYLFxuICAgIFpcbn0gZnJvbSAnQGtvb2JpcS9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHtcbiAgICBjaGVja0FuZE5vcm1hbGl6ZUxvY2FsaXplZE51bWJlcixcbiAgICBmb3JtYXROdW1iZXJXaXRoTG9jYWxlLFxuICAgIEtCUV9ERUZBVUxUX1BSRUNJU0lPTl9TRVBBUkFUT1IsXG4gICAgS0JRX0xPQ0FMRV9TRVJWSUNFLFxuICAgIEticUxvY2FsZVNlcnZpY2UsXG4gICAgS2JxTnVtYmVySW5wdXRMb2NhbGVDb25maWcsXG4gICAgbm9ybWFsaXplTnVtYmVyLFxuICAgIHJ1UlVGb3JtYXR0ZXJzRGF0YVxufSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvY29yZSc7XG5pbXBvcnQgeyBLYnFGb3JtRmllbGRDb250cm9sIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY29uc3QgS0JRX0lOUFVUX05VTUJFUl9ERUZBVUxUX0NPTkZJR1VSQVRJT04gPSBydVJVRm9ybWF0dGVyc0RhdGEuaW5wdXQubnVtYmVyO1xuXG5leHBvcnQgY29uc3QgQklHX1NURVAgPSAxMDtcbmV4cG9ydCBjb25zdCBTTUFMTF9TVEVQID0gMTtcblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVNwbGl0dGVyKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWx1ZSA/IHZhbHVlLnJlcGxhY2UoLywvZywgS0JRX0RFRkFVTFRfUFJFQ0lTSU9OX1NFUEFSQVRPUikgOiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRmxvYXQodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAvXi0/XFxkK1xcLlxcZCskLy50ZXN0KHZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSW50KHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gL14tP1xcZCskLy50ZXN0KHZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGlnaXQodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc0Zsb2F0KHZhbHVlKSB8fCBpc0ludCh2YWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcmVjaXNpb24odmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgYXJyID0gdmFsdWUudG9TdHJpbmcoKS5zcGxpdChLQlFfREVGQVVMVF9QUkVDSVNJT05fU0VQQVJBVE9SKTtcblxuICAgIHJldHVybiBhcnIubGVuZ3RoID09PSAxID8gMSA6IE1hdGgucG93KDEwLCBhcnJbMV0ubGVuZ3RoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZCh2YWx1ZTE6IG51bWJlciwgdmFsdWUyOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHByZWNpc2lvbiA9IE1hdGgubWF4KGdldFByZWNpc2lvbih2YWx1ZTEpLCBnZXRQcmVjaXNpb24odmFsdWUyKSk7XG5cbiAgICByZXR1cm4gKHZhbHVlMSAqIHByZWNpc2lvbiArIHZhbHVlMiAqIHByZWNpc2lvbikgLyBwcmVjaXNpb247XG59XG5cbmV4cG9ydCBjb25zdCBLQlFfTlVNQkVSX0lOUFVUX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gS2JxTnVtYmVySW5wdXQpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogYGlucHV0W2ticU51bWJlcklucHV0XWAsXG4gICAgZXhwb3J0QXM6ICdrYnFOdW1lcmljYWxJbnB1dCcsXG4gICAgcHJvdmlkZXJzOiBbS0JRX05VTUJFUl9JTlBVVF9WQUxVRV9BQ0NFU1NPUl0sXG4gICAgaG9zdDoge1xuICAgICAgICAnKGJsdXIpJzogJ2ZvY3VzQ2hhbmdlZChmYWxzZSknLFxuICAgICAgICAnKGZvY3VzKSc6ICdmb2N1c0NoYW5nZWQodHJ1ZSknLFxuICAgICAgICAnKHBhc3RlKSc6ICdvblBhc3RlKCRldmVudCknLFxuICAgICAgICAnKGtleWRvd24pJzogJ29uS2V5RG93bigkZXZlbnQpJyxcbiAgICAgICAgJyhpbnB1dCknOiAnb25JbnB1dCgkZXZlbnQpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxTnVtYmVySW5wdXQgaW1wbGVtZW50cyBLYnFGb3JtRmllbGRDb250cm9sPGFueT4sIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3kge1xuICAgIC8qKiBFbWl0cyB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzIChlaXRoZXIgZHVlIHRvIHVzZXIgaW5wdXQgb3IgcHJvZ3JhbW1hdGljIGNoYW5nZSkuICovXG4gICAgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlciB8IG51bGw+KCk7XG5cbiAgICAvKiogRW1pdHMgd2hlbiB0aGUgZGlzYWJsZWQgc3RhdGUgaGFzIGNoYW5nZWQgKi9cbiAgICBkaXNhYmxlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIHJlYWRvbmx5IHN0YXRlQ2hhbmdlczogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBpZDogc3RyaW5nO1xuXG4gICAgcGxhY2Vob2xkZXI6IHN0cmluZztcblxuICAgIGVtcHR5OiBib29sZWFuO1xuXG4gICAgcmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgICBlcnJvclN0YXRlOiBib29sZWFuO1xuXG4gICAgY29udHJvbFR5cGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBBbGxvd3MgaW5wdXQgYW5kIHBhc3Rpbmcgb2YgaW50ZWdlcnMgb25seS5cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBpbnRlZ2VyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGJpZ1N0ZXA6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpXG4gICAgc3RlcDogbnVtYmVyO1xuXG4gICAgQElucHV0KClcbiAgICBtaW46IG51bWJlcjtcblxuICAgIEBJbnB1dCgpXG4gICAgbWF4OiBudW1iZXI7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICB3aXRoVGhvdXNhbmRTZXBhcmF0b3I6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogSW5jbHVkZSB0aG91c2FuZCBzZXBhcmF0b3IgZnJvbSBjdXN0b20gaW5kZXguIEZvciBleGFtcGxlLCBpdCB3aWxsIGJlIHVzZWZ1bCBpbiB0YWJsZXMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzdGFydEZvcm1hdHRpbmdGcm9tPzogbnVtYmVyO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgdmFsdWUoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG5cbiAgICBzZXQgdmFsdWUodmFsdWU6IG51bWJlciB8IG51bGwpIHtcbiAgICAgICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLnZhbHVlO1xuXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKG9sZFZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5zZXRWaWV3VmFsdWUodGhpcy5mb3JtYXROdW1iZXIodmFsdWUpKTtcblxuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3ZhbHVlOiBudW1iZXIgfCBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc2FibGVkID0gbmV3VmFsdWU7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkQ2hhbmdlLmVtaXQobmV3VmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2UgbmVlZCB0byBudWxsIGNoZWNrIHRoZSBgYmx1cmAgbWV0aG9kLCBiZWNhdXNlIGl0J3MgdW5kZWZpbmVkIGR1cmluZyBTU1IuXG4gICAgICAgIGlmIChuZXdWYWx1ZSAmJiBlbGVtZW50LmJsdXIpIHtcbiAgICAgICAgICAgIC8vIE5vcm1hbGx5LCBuYXRpdmUgaW5wdXQgZWxlbWVudHMgYXV0b21hdGljYWxseSBibHVyIGlmIHRoZXkgdHVybiBkaXNhYmxlZC4gVGhpcyBiZWhhdmlvclxuICAgICAgICAgICAgLy8gaXMgcHJvYmxlbWF0aWMsIGJlY2F1c2UgaXQgd291bGQgbWVhbiB0aGF0IGl0IHRyaWdnZXJzIGFub3RoZXIgY2hhbmdlIGRldGVjdGlvbiBjeWNsZSxcbiAgICAgICAgICAgIC8vIHdoaWNoIHRoZW4gY2F1c2VzIGEgY2hhbmdlZCBhZnRlciBjaGVja2VkIGVycm9yIGlmIHRoZSBpbnB1dCBlbGVtZW50IHdhcyBmb2N1c2VkIGJlZm9yZS5cbiAgICAgICAgICAgIGVsZW1lbnQuYmx1cigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGZvY3VzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGdldCBuYXRpdmVFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgZ2V0IHZpZXdWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgIH1cblxuICAgIGdldCBuZ0NvbnRyb2woKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGZyYWN0aW9uU2VwYXJhdG9yKCk6IEticU51bWJlcklucHV0TG9jYWxlQ29uZmlnWydmcmFjdGlvblNlcGFyYXRvciddIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmZyYWN0aW9uU2VwYXJhdG9yO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgZ3JvdXBTZXBhcmF0b3IoKTogS2JxTnVtYmVySW5wdXRMb2NhbGVDb25maWdbJ2dyb3VwU2VwYXJhdG9yJ10ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcuZ3JvdXBTZXBhcmF0b3I7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb250cm9sOiBBYnN0cmFjdENvbnRyb2w7XG5cbiAgICBwcml2YXRlIGNvbmZpZzogS2JxTnVtYmVySW5wdXRMb2NhbGVDb25maWc7XG5cbiAgICBwcml2YXRlIHZhbHVlRnJvbVBhc3RlOiBudW1iZXIgfCBudWxsO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBAQXR0cmlidXRlKCdzdGVwJykgc3RlcDogc3RyaW5nLFxuICAgICAgICBAQXR0cmlidXRlKCdiaWctc3RlcCcpIGJpZ1N0ZXA6IHN0cmluZyxcbiAgICAgICAgQEF0dHJpYnV0ZSgnbWluJykgbWluOiBzdHJpbmcsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ21heCcpIG1heDogc3RyaW5nLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEtCUV9MT0NBTEVfU0VSVklDRSkgcHJpdmF0ZSBsb2NhbGVTZXJ2aWNlPzogS2JxTG9jYWxlU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLnN0ZXAgPSBpc0RpZ2l0KHN0ZXApID8gcGFyc2VGbG9hdChzdGVwKSA6IFNNQUxMX1NURVA7XG4gICAgICAgIHRoaXMuYmlnU3RlcCA9IGlzRGlnaXQoYmlnU3RlcCkgPyBwYXJzZUZsb2F0KGJpZ1N0ZXApIDogQklHX1NURVA7XG4gICAgICAgIHRoaXMubWluID0gaXNEaWdpdChtaW4pID8gcGFyc2VGbG9hdChtaW4pIDogLUluZmluaXR5O1xuICAgICAgICB0aGlzLm1heCA9IGlzRGlnaXQobWF4KSA/IHBhcnNlRmxvYXQobWF4KSA6IEluZmluaXR5O1xuXG4gICAgICAgIGlmICgndmFsdWVBc051bWJlcicgaW4gdGhpcy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMubmF0aXZlRWxlbWVudCksICd2YWx1ZUFzTnVtYmVyJywge1xuICAgICAgICAgICAgICAgIGdldCgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzID0gcGFyc2VGbG9hdChub3JtYWxpemVTcGxpdHRlcih0aGlzLnZhbHVlKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlzTmFOKHJlcykgPyBudWxsIDogcmVzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sb2NhbGVTZXJ2aWNlPy5jaGFuZ2VzLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSh0aGlzLnVwZGF0ZUxvY2FsZVBhcmFtcyk7XG5cbiAgICAgICAgaWYgKCFsb2NhbGVTZXJ2aWNlKSB7XG4gICAgICAgICAgICB0aGlzLmluaXREZWZhdWx0UGFyYW1zKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLmRpc2FibGVkQ2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgb25Db250YWluZXJDbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgIH1cblxuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgIHdyaXRlVmFsdWUodmFsdWU6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdmFPbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICBmb2N1c0NoYW5nZWQoaXNGb2N1c2VkOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChpc0ZvY3VzZWQgIT09IHRoaXMuZm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkID0gaXNGb2N1c2VkO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgY29uc3Qga2V5Q29kZSA9IGV2ZW50LmtleUNvZGU7XG4gICAgICAgIGNvbnN0IG1pbnVzZXMgPSBbTlVNUEFEX01JTlVTLCBEQVNILCBGRl9NSU5VU107XG4gICAgICAgIGNvbnN0IHNlcnZpY2VLZXlzID0gW0RFTEVURSwgQkFDS1NQQUNFLCBUQUIsIEVTQ0FQRSwgRU5URVJdO1xuICAgICAgICBjb25zdCBhcnJvd3MgPSBbTEVGVF9BUlJPVywgUklHSFRfQVJST1ddO1xuICAgICAgICBjb25zdCBhbGxvd2VkS2V5cyA9IFtIT01FLCBFTkRdLmNvbmNhdChhcnJvd3MpLmNvbmNhdChzZXJ2aWNlS2V5cykuY29uY2F0KG1pbnVzZXMpO1xuXG4gICAgICAgIC8vIHNob3VsZCBwYXJzZSBub3JtYWxpemVkIGZyYWN0aW9uU2VwYXJhdG9yXG4gICAgICAgIGNvbnN0IHZpZXdWYWx1ZVRvQmVDaGVja2VkID0gbm9ybWFsaXplTnVtYmVyKHRoaXMudmlld1ZhbHVlLCB0aGlzLmNvbmZpZyk7XG5cbiAgICAgICAgY29uc3Qgc2hvdWxkU2tpcEZvckludGVnZXJNb2RlID0gdGhpcy5pbnRlZ2VyICYmIHRoaXMuaXNQZXJpb2QoZXZlbnQpO1xuICAgICAgICBjb25zdCBpc01pbnVzQWxsb3dlZCA9IG1pbnVzZXMuaW5jbHVkZXMoa2V5Q29kZSkgJiYgKHRoaXMudmlld1ZhbHVlLmluY2x1ZGVzKGV2ZW50LmtleSkgfHwgdGhpcy5taW4gPj0gMCk7XG4gICAgICAgIGNvbnN0IGlzU2lnbkFuZEZyYWN0aW9uU2VwQWxyZWFkeUV4aXN0cyA9XG4gICAgICAgICAgICB0aGlzLmlzUGVyaW9kKGV2ZW50KSAmJlxuICAgICAgICAgICAgW3RoaXMuZnJhY3Rpb25TZXBhcmF0b3IsIEtCUV9ERUZBVUxUX1BSRUNJU0lPTl9TRVBBUkFUT1JdLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICAgICAgICAgIHZpZXdWYWx1ZVRvQmVDaGVja2VkLmluZGV4T2YoS0JRX0RFRkFVTFRfUFJFQ0lTSU9OX1NFUEFSQVRPUikgIT09IC0xO1xuXG4gICAgICAgIGlmIChzaG91bGRTa2lwRm9ySW50ZWdlck1vZGUgfHwgaXNNaW51c0FsbG93ZWQgfHwgaXNTaWduQW5kRnJhY3Rpb25TZXBBbHJlYWR5RXhpc3RzKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWxsb3dlZEtleXMuaW5kZXhPZihrZXlDb2RlKSAhPT0gLTEgfHwgW1xuICAgICAgICAgICAgICAgIGlzU2VsZWN0QWxsLFxuICAgICAgICAgICAgICAgIGlzQ29weSxcbiAgICAgICAgICAgICAgICB0aGlzLmlzQ3RybFYsXG4gICAgICAgICAgICAgICAgdGhpcy5pc0N0cmxYLFxuICAgICAgICAgICAgICAgIHRoaXMuaXNDdHJsWixcbiAgICAgICAgICAgICAgICBpc0Z1bmN0aW9uS2V5LFxuICAgICAgICAgICAgICAgIHRoaXMuaXNQZXJpb2RcbiAgICAgICAgICAgIF0uc29tZSgoZm4pID0+IGZuKGV2ZW50KSkpIHtcbiAgICAgICAgICAgIC8vIGxldCBpdCBoYXBwZW4sIGRvbid0IGRvIGFueXRoaW5nXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc0xldHRlciA9ICFpc051bWJlcktleShldmVudCkgJiYgIWlzTnVtcGFkS2V5KGV2ZW50KTtcblxuICAgICAgICAvLyBFbnN1cmUgdGhhdCBpdCBpcyBub3QgYSBudW1iZXIgYW5kIHN0b3AgdGhlIGtleXByZXNzXG4gICAgICAgIGlmIChldmVudC5zaGlmdEtleSB8fCBpc0xldHRlcikge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgLy8gcHJvY2VzcyBzdGVwc1xuICAgICAgICAgICAgY29uc3Qgc3RlcCA9IGV2ZW50LnNoaWZ0S2V5ID8gdGhpcy5iaWdTdGVwIDogdGhpcy5zdGVwO1xuXG4gICAgICAgICAgICBpZiAoa2V5Q29kZSA9PT0gVVBfQVJST1cpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXBVcChzdGVwKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGtleUNvZGUgPT09IERPV05fQVJST1cpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXBEb3duKHN0ZXApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JbnB1dChldmVudDogSW5wdXRFdmVudCkge1xuICAgICAgICBjb25zdCBjdXJyZW50VmFsdWVMZW5ndGggPSB0aGlzLmZvcm1hdE51bWJlcih0aGlzLnZhbHVlKT8ubGVuZ3RoIHx8IDA7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzU2VsZWN0aW9uU3RhcnQgPSB0aGlzLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgfHwgMDtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZyb21QYXN0ZSA9IGV2ZW50LmlucHV0VHlwZSA9PT0gJ2luc2VydEZyb21QYXN0ZSc7XG4gICAgICAgICAgICBsZXQgZm9ybWF0dGVkVmFsdWU6IHN0cmluZyB8IG51bGw7XG5cbiAgICAgICAgICAgIGlmIChmcm9tUGFzdGUpIHtcbiAgICAgICAgICAgICAgICBmb3JtYXR0ZWRWYWx1ZSA9IHRoaXMuZm9ybWF0TnVtYmVyKHRoaXMudmFsdWVGcm9tUGFzdGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvKnRoaXMudmlld1ZhbHVlIGlzIHJhdyBhbmQgc2hvdWxkIGJlIHJlZm9ybWF0dGVkIHRvIGxvY2FsaXplZCBudW1iZXIgKi9cbiAgICAgICAgICAgICAgICBmb3JtYXR0ZWRWYWx1ZSA9IHRoaXMuZm9ybWF0Vmlld1ZhbHVlKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy53aXRoVGhvdXNhbmRTZXBhcmF0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2V0V2hlblNlcGFyYXRvckFkZGVkID0gMjtcblxuICAgICAgICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5hYnModGhpcy52YWx1ZSkgPj0gMTAwMCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGguYWJzKHRoaXMudmlld1ZhbHVlLmxlbmd0aCAtIGN1cnJlbnRWYWx1ZUxlbmd0aCkgPT09IG9mZnNldFdoZW5TZXBhcmF0b3JBZGRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW92ZSBzZWxlY3Rpb24gdG8gdGhlIGxlZnQvcmlnaHQgaWYgc2VwYXJhdG9yIHdhcyBhZGRlZC9yZW1vdmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3Vyc29yUG9zaXRpb24gPSBNYXRoLm1heChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNTZWxlY3Rpb25TdGFydCArIE1hdGguc2lnbih0aGlzLnZpZXdWYWx1ZS5sZW5ndGggLSBjdXJyZW50VmFsdWVMZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5uYXRpdmVFbGVtZW50LCAnc2VsZWN0aW9uU3RhcnQnLCBjdXJzb3JQb3NpdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLm5hdGl2ZUVsZW1lbnQsICdzZWxlY3Rpb25FbmQnLCBjdXJzb3JQb3NpdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zZXRWaWV3VmFsdWUoZm9ybWF0dGVkVmFsdWUsICFmcm9tUGFzdGUpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy52aWV3VmFsdWUgIT09ICctJykge1xuICAgICAgICAgICAgICAgIHRoaXMudmlld1RvTW9kZWxVcGRhdGUoZm9ybWF0dGVkVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLnZhbHVlRnJvbVBhc3RlID0gY2hlY2tBbmROb3JtYWxpemVMb2NhbGl6ZWROdW1iZXIoXG4gICAgICAgICAgICBldmVudC5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCd0ZXh0JyksXG4gICAgICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2U/LmlkXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRoaXMudmFsdWVGcm9tUGFzdGUgPT09IG51bGwgfHwgaXNOYU4odGhpcy52YWx1ZUZyb21QYXN0ZSkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pbnRlZ2VyICYmIGlzRmxvYXQodGhpcy52YWx1ZUZyb21QYXN0ZS50b1N0cmluZygpKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgY29uc3QgcGFyc2VkVmFsdWUgPSBOdW1iZXIucGFyc2VJbnQodGhpcy52YWx1ZUZyb21QYXN0ZS50b1N0cmluZygpKTtcblxuICAgICAgICAgICAgdGhpcy5zZXRWaWV3VmFsdWUodGhpcy5mb3JtYXROdW1iZXIocGFyc2VkVmFsdWUpKTtcbiAgICAgICAgICAgIHRoaXMudmlld1RvTW9kZWxVcGRhdGUocGFyc2VkVmFsdWUudG9TdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGVwVXAoc3RlcDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXG4gICAgICAgIGNvbnN0IHJlcyA9IE1hdGgubWF4KE1hdGgubWluKGFkZCh0aGlzLnZhbHVlIHx8IDAsIHN0ZXApLCB0aGlzLm1heCksIHRoaXMubWluKTtcblxuICAgICAgICB0aGlzLnNldFZpZXdWYWx1ZSh0aGlzLmZvcm1hdE51bWJlcihyZXMpKTtcblxuICAgICAgICB0aGlzLl92YWx1ZSA9IHJlcztcbiAgICAgICAgdGhpcy5jdmFPbkNoYW5nZShyZXMpO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQocmVzKTtcbiAgICB9XG5cbiAgICBzdGVwRG93bihzdGVwOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG5cbiAgICAgICAgY29uc3QgcmVzID0gTWF0aC5taW4oTWF0aC5tYXgoYWRkKHRoaXMudmFsdWUgfHwgMCwgLXN0ZXApLCB0aGlzLm1pbiksIHRoaXMubWF4KTtcblxuICAgICAgICB0aGlzLnNldFZpZXdWYWx1ZSh0aGlzLmZvcm1hdE51bWJlcihyZXMpKTtcblxuICAgICAgICB0aGlzLl92YWx1ZSA9IHJlcztcbiAgICAgICAgdGhpcy5jdmFPbkNoYW5nZShyZXMpO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQocmVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXREZWZhdWx0UGFyYW1zKCkge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IEtCUV9JTlBVVF9OVU1CRVJfREVGQVVMVF9DT05GSUdVUkFUSU9OO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNDdHJsViA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICByZXR1cm4gZXZlbnQua2V5Q29kZSA9PT0gViAmJiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBpc0N0cmxYID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBldmVudC5rZXlDb2RlID09PSBYICYmIChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIGlzQ3RybFogPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIGV2ZW50LmtleUNvZGUgPT09IFogJiYgKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgaXNQZXJpb2QgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBTZXBhcmF0b3IuaW5jbHVkZXMoZXZlbnQua2V5KSB8fFxuICAgICAgICAgICAgW3RoaXMuZnJhY3Rpb25TZXBhcmF0b3IsIEtCUV9ERUZBVUxUX1BSRUNJU0lPTl9TRVBBUkFUT1JdLmluY2x1ZGVzKGV2ZW50LmtleSlcbiAgICAgICAgKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBjdmFPbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIHByaXZhdGUgc2V0Vmlld1ZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudWxsLCBzYXZlUG9zaXRpb246IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBjdXJzb3JQb3NpdGlvbiA9IHRoaXMubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydDtcblxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgdmFsdWUpO1xuXG4gICAgICAgIGlmIChzYXZlUG9zaXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5uYXRpdmVFbGVtZW50LCAnc2VsZWN0aW9uU3RhcnQnLCBjdXJzb3JQb3NpdGlvbik7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMubmF0aXZlRWxlbWVudCwgJ3NlbGVjdGlvbkVuZCcsIGN1cnNvclBvc2l0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdmlld1RvTW9kZWxVcGRhdGUobmV3VmFsdWU6IHN0cmluZyB8IG51bGwpIHtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZFZhbHVlID0gbmV3VmFsdWUgPT09IG51bGwgPyBudWxsIDogK25vcm1hbGl6ZU51bWJlcihuZXdWYWx1ZSwgdGhpcy5jb25maWcpO1xuXG4gICAgICAgIGlmIChub3JtYWxpemVkVmFsdWUgIT09IHRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gbm9ybWFsaXplZFZhbHVlO1xuICAgICAgICAgICAgdGhpcy5jdmFPbkNoYW5nZShub3JtYWxpemVkVmFsdWUpO1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm5nQ29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXRWaWV3VmFsdWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIC8vIHdlIGp1c3QgbmVlZCB0byBza2lwIHRoZSBtaW51cyBzaWduIGFuZCBub3QgZG8gYW55IGZvcm1hdHRpbmdcbiAgICAgICAgaWYgKHRoaXMudmlld1ZhbHVlID09PSAnLScpIHJldHVybiB0aGlzLnZpZXdWYWx1ZTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnZpZXdWYWx1ZSA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgdGhpcy52aWV3VmFsdWUgPT09ICcnIHx8XG4gICAgICAgICAgICBOdW1iZXIuaXNOYU4oK25vcm1hbGl6ZU51bWJlcih0aGlzLnZpZXdWYWx1ZSwgdGhpcy5jb25maWcpKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VwYXJhdG9yID1cbiAgICAgICAgICAgIHRoaXMuZ3JvdXBTZXBhcmF0b3IuaW5jbHVkZXMoJyAnKSAmJiB0aGlzLmZyYWN0aW9uU2VwYXJhdG9yID09PSAnLCcgPyAvWywuXS8gOiB0aGlzLmZyYWN0aW9uU2VwYXJhdG9yO1xuXG4gICAgICAgIGNvbnN0IFtpbnRQYXJ0LCBmcmFjdGlvblBhcnRdID0gdGhpcy52aWV3VmFsdWVcbiAgICAgICAgICAgIC5zcGxpdChzZXBhcmF0b3IpXG4gICAgICAgICAgICAubWFwKCh2YWx1ZVBhcnQpID0+IG5vcm1hbGl6ZU51bWJlcih2YWx1ZVBhcnQsIHRoaXMuY29uZmlnKSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlTG9jYWxpemVkTnVtYmVyRnJvbVBhcnRzKCtpbnRQYXJ0LCBmcmFjdGlvblBhcnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0TnVtYmVyKHZhbHVlOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBjb25zdCBbaW50UGFydCwgZnJhY3Rpb25QYXJ0XSA9IHZhbHVlLnRvU3RyaW5nKCkuc3BsaXQoS0JRX0RFRkFVTFRfUFJFQ0lTSU9OX1NFUEFSQVRPUik7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlTG9jYWxpemVkTnVtYmVyRnJvbVBhcnRzKCtpbnRQYXJ0LCBmcmFjdGlvblBhcnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlTG9jYWxpemVkTnVtYmVyRnJvbVBhcnRzKGludFBhcnQ6IG51bWJlciwgZnJhY3Rpb25QYXJ0Pzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZm9ybWF0T3B0aW9ucyA9IHtcbiAgICAgICAgICAgIHVzZUdyb3VwaW5nOiB0aGlzLndpdGhUaG91c2FuZFNlcGFyYXRvcixcbiAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMjBcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy53aXRoVGhvdXNhbmRTZXBhcmF0b3IgJiYgdGhpcy5jb25maWcuc3RhcnRGb3JtYXR0aW5nRnJvbSkge1xuICAgICAgICAgICAgZm9ybWF0T3B0aW9ucy51c2VHcm91cGluZyA9IGludFBhcnQgPj0gTWF0aC5wb3coMTAsIHRoaXMuY29uZmlnLnN0YXJ0Rm9ybWF0dGluZ0Zyb20pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbG9jYWxlSWQgPSAhdGhpcy5sb2NhbGVTZXJ2aWNlIHx8IHRoaXMubG9jYWxlU2VydmljZS5pZCA9PT0gJ2VzLUxBJyA/ICdydS1SVScgOiB0aGlzLmxvY2FsZVNlcnZpY2UuaWQ7XG5cbiAgICAgICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZUlkLCBmb3JtYXRPcHRpb25zKTtcblxuICAgICAgICBjb25zdCBmb3JtYXR0ZWRJbnRQYXJ0ID0gZm9ybWF0TnVtYmVyV2l0aExvY2FsZShpbnRQYXJ0LCBmb3JtYXR0ZXIsIHRoaXMuY29uZmlnKTtcblxuICAgICAgICBpZiAoZnJhY3Rpb25QYXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXR0ZWRJbnRQYXJ0O1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGZvcm1hdHRlZEZyYWN0aW9uUGFydDogc3RyaW5nID0gJyc7XG5cbiAgICAgICAgZm9yIChjb25zdCBudW1DaGFyIG9mIGZyYWN0aW9uUGFydCkge1xuICAgICAgICAgICAgZm9ybWF0dGVkRnJhY3Rpb25QYXJ0ICs9IGZvcm1hdHRlci5mb3JtYXQoK251bUNoYXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGAke2Zvcm1hdHRlZEludFBhcnR9JHt0aGlzLmZyYWN0aW9uU2VwYXJhdG9yfSR7Zm9ybWF0dGVkRnJhY3Rpb25QYXJ0fWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVMb2NhbGVQYXJhbXMgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuY29uZmlnID0gdGhpcy5sb2NhbGVTZXJ2aWNlIS5nZXRQYXJhbXMoJ2lucHV0JykubnVtYmVyO1xuXG4gICAgICAgIHRoaXMuc2V0Vmlld1ZhbHVlKHRoaXMuZm9ybWF0TnVtYmVyKHRoaXMudmFsdWUpKTtcbiAgICB9O1xufVxuIl19