@energycap/components 0.39.33-rxjs-7-upgrade.20241025-1554 → 0.39.34-ECAP-26866-table-multi-sort-improvements.20241029-1608

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 (46) hide show
  1. package/esm2020/lib/controls/checkbox/checkbox.component.mjs +3 -3
  2. package/esm2020/lib/controls/combobox/combobox.component.mjs +1 -1
  3. package/esm2020/lib/controls/dropdown/dropdown.component.mjs +1 -1
  4. package/esm2020/lib/controls/file-upload/file-upload.component.mjs +2 -3
  5. package/esm2020/lib/controls/form-control/form-control.component.mjs +2 -2
  6. package/esm2020/lib/controls/form-control-base.mjs +2 -2
  7. package/esm2020/lib/controls/form-control-label/form-control-label.component.mjs +1 -1
  8. package/esm2020/lib/controls/form-group/form-group.component.mjs +3 -3
  9. package/esm2020/lib/controls/popover/popover.component.mjs +1 -1
  10. package/esm2020/lib/controls/select/select.component.mjs +2 -2
  11. package/esm2020/lib/core/validation-message.service.mjs +3 -3
  12. package/esm2020/lib/display/confirm/confirm.component.mjs +7 -5
  13. package/esm2020/lib/display/dialog/dialog.component.mjs +4 -4
  14. package/esm2020/lib/display/hierarchy/hierarchy-base.mjs +1 -1
  15. package/esm2020/lib/display/table/searchable-table.component.mjs +1 -1
  16. package/esm2020/lib/display/table/table.component.mjs +32 -28
  17. package/esm2020/lib/display/toast/toaster/toaster.component.mjs +1 -1
  18. package/esm2020/lib/display/tooltip-directive/tooltip.directive.mjs +2 -2
  19. package/esm2020/lib/display/tour/tour.component.mjs +3 -3
  20. package/esm2020/lib/shared/page/page-base/page-base.component.mjs +3 -3
  21. package/fesm2015/energycap-components.mjs +47 -42
  22. package/fesm2015/energycap-components.mjs.map +1 -1
  23. package/fesm2020/energycap-components.mjs +47 -41
  24. package/fesm2020/energycap-components.mjs.map +1 -1
  25. package/lib/controls/checkbox/checkbox.component.d.ts +2 -2
  26. package/lib/controls/form-control-base.d.ts +1 -1
  27. package/lib/controls/form-group/form-group.component.d.ts +1 -1
  28. package/lib/display/hierarchy/hierarchy-base.d.ts +1 -1
  29. package/lib/display/table/searchable-table.component.d.ts +4 -4
  30. package/lib/display/table/table.component.d.ts +4 -2
  31. package/lib/shared/page/page-base/page-base.component.d.ts +1 -1
  32. package/package.json +2 -3
  33. package/schematics/collection.json +0 -10
  34. package/schematics/rxjs-7-upgrade/index.d.ts +0 -3
  35. package/schematics/rxjs-7-upgrade/index.js +0 -68
  36. package/schematics/rxjs-7-upgrade/index.js.map +0 -1
  37. package/schematics/rxjs-7-upgrade/schema.d.ts +0 -4
  38. package/schematics/rxjs-7-upgrade/schema.js +0 -3
  39. package/schematics/rxjs-7-upgrade/schema.js.map +0 -1
  40. package/schematics/rxjs-7-upgrade/schema.json +0 -14
  41. package/schematics/utilities/typescript.d.ts +0 -7
  42. package/schematics/utilities/typescript.js +0 -42
  43. package/schematics/utilities/typescript.js.map +0 -1
  44. package/schematics/utilities/workspace.d.ts +0 -8
  45. package/schematics/utilities/workspace.js +0 -72
  46. package/schematics/utilities/workspace.js.map +0 -1
@@ -339,4 +339,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
339
339
  }], disablePaginationControls: [{
340
340
  type: Input
341
341
  }] } });
342
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS90YWJsZS9zZWFyY2hhYmxlLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9kaXNwbGF5L3RhYmxlL3NlYXJjaGFibGUtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBZ0MsTUFBTSxFQUF5QyxNQUFNLGVBQWUsQ0FBQztBQUc3SixPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc1RyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDakUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEUsT0FBTyxFQUFjLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7Ozs7QUFjcEYsTUFBTSxPQUFPLHdCQUF3QjtJQTRLbkMsbUNBQW1DO0lBQ25DLElBQVcsV0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQWlDLENBQUM7SUFDbkUsQ0FBQztJQTBCRCxZQUNVLFlBQTBCLEVBQzFCLGdCQUFrQyxFQUNsQyxZQUEwQjtRQUYxQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENB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bEIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBc0JHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS0csUUFBUTtzQkFBaEIsS0FBSztnQkFLRyxPQUFPO3NCQUFmLEtBQUs7Z0JBS0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFHRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBRTBELGdCQUFnQjtzQkFBL0UsZUFBZTt1QkFBQyx3QkFBd0IsRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUM7Z0JBR3JELG1CQUFtQjtzQkFBM0IsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUlHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUdHLHlCQUF5QjtzQkFBakMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEVNUFRZLCBtZXJnZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWJvdW5jZVRpbWUsIG1hcCwgcGx1Y2ssIHNraXBVbnRpbCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9lcnJvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUm93Q291bnRQaXBlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Rpc3BsYXkvcGlwZXMvcm93LWNvdW50LnBpcGUnO1xyXG5pbXBvcnQgeyBPdmVybGF5IH0gZnJvbSAnLi4vdmlldy1vdmVybGF5L3ZpZXctb3ZlcmxheS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZXNpemFibGVDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuL3Jlc2l6YWJsZS1jb2x1bW4uY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGFnaW5nSW5mbywgVGFibGVQYWdpbmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS1wYWdpbmF0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYmxlU2VsZWN0YWJsZVJvd0NvbnRleHQgfSBmcm9tICcuL3RhYmxlLXNlbGVjdGFibGUtcm93LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYmxlU29ydCB9IGZyb20gJy4vdGFibGUuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCB0eXBlIFRhYmxlU2VhcmNoUmVzdWx0cyA9IHsgaXRlbXM6IHVua25vd25bXSwgdG90YWxJdGVtczogbnVtYmVyLCB0b3RhbEl0ZW1zQmVmb3JlUGFnaW5nPzogbnVtYmVyIH07XHJcbmV4cG9ydCB0eXBlIFNlYXJjaGFibGVUYWJsZVJlZnJlc2hPcHRpb25zID0geyBjbGVhclNlYXJjaD86IGJvb2xlYW4gfTtcclxuXHJcbnR5cGUgU2VhcmNoYWJsZVRhYmxlRm9ybU1vZGVsID0geyBzZWFyY2hNb2RlbD86IHN0cmluZyB9O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlYy1zZWFyY2hhYmxlLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoYWJsZS10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoYWJsZS10YWJsZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZWFyY2hhYmxlVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcclxuXHJcbiAgQElucHV0KCkgaWQgPSAnJztcclxuICBASW5wdXQoKSByZXNpemFibGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzb3J0YWJsZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNvcnQ/OiBUYWJsZVNvcnQ7XHJcbiAgQElucHV0KCkgYXV0b2ZvY3VzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlNldCB0byBhIHNwYWNlLXNlcGFyYXRlZCBzZXQgb2Ygc3RyaW5ncyB0aGF0IHNob3VsZCBiZSBhZGRlZCB0byB0aGUgZWMtdGFibGUgY2xhc3MgYXR0cmlidXRlXHJcbiAgICogdGhpcyBhbGxvd3MgZmluZXIgY29udHJvbCBvdmVyIHN0eWxpbmcuXHJcbiAgICovXHJcbiAgQElucHV0KCkgdGFibGVDbGFzc2VzOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqIEVtaXRzIHdoZW4gdGFibGUgc29ydCBoYXMgY2hhbmdlZCAqL1xyXG4gIEBPdXRwdXQoKSBzb3J0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8VGFibGVTb3J0PiA9IG5ldyBFdmVudEVtaXR0ZXI8VGFibGVTb3J0PigpO1xyXG5cclxuICAvKiogRW1pdHMgd2hlbiB0aGUgdGFibGUgcGFnZSBoYXMgY2hhbmdlZCAqL1xyXG4gIEBPdXRwdXQoJ3BhZ2VDaGFuZ2UnKSBwYWdlQ2hhbmdlRW1pdHRlcjogRXZlbnRFbWl0dGVyPFBhZ2luZ0luZm8+ID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdpbmdJbmZvPigpO1xyXG5cclxuICAvKiogUGxhY2Vob2xkZXIgdGV4dCBmb3IgdGhlIHNlYXJjaGJveCAqL1xyXG4gIEBJbnB1dCgpIHNlYXJjaGJveFBsYWNlaG9sZGVyID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcm1Hcm91cCBmb3IgdGhlIHNlYXJjaGJveFxyXG4gICAqXHJcbiAgICogVGhlIHJlZmVyZW5jZWQgRm9ybUdyb3VwICoqbXVzdCoqIGNvbnRhaW4gYSBGb3JtQ29udHJvbCBjYWxsZWQgJ3NlYXJjaE1vZGVsJy5cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgZm9ybU1vZGVsITogVW50eXBlZEZvcm1Hcm91cDtcclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheWVkIGluIG92ZXJsYXkgd2hlbiBubyBkYXRhIGlzIHJldHVybmVkICh3aXRob3V0IHNlYXJjaGluZykuXHJcbiAgICpcclxuICAgKiBEZWZhdWx0cyB0byBcIlNlYXJjaGFibGVUYWJsZV9EZWZhdWx0X05vRGF0YV9TQ1wiXHJcbiAgICovXHJcbiAgQElucHV0KCkgbm9EYXRhTWVzc2FnZTogc3RyaW5nID0gJ1NlYXJjaGFibGVUYWJsZV9EZWZhdWx0X05vRGF0YV9TQyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIERpc3BsYXllZCBpbiBvdmVybGF5IHdoZW4gbm8gZGF0YSBpcyByZXR1cm5lZCAoYWZ0ZXIgc2VhcmNoaW5nKS5cclxuICAgKiBFbnN1cmUgdHJhbnNsYXRpb24gaGFzIGFuIGludGVycG9sYXRpb24gcGxhY2Vob2xkZXIgZm9yIFwic2VhcmNoVGV4dFwiLlxyXG4gICAqXHJcbiAgICogRGVmYXVsdHMgdG8gXCJTZWFyY2hhYmxlVGFibGVfRGVmYXVsdF9Ob01hdGNoZXNfU0NcIlxyXG4gICAqXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiAvLyA3IHJlcXVpcmVzIHNpbmdsZSBjdXJseSBicmFjZXNcclxuICAgKiBObyBpdGVtcyBmb3VuZCBtYXRjaGluZyA8c3Ryb25nPnt7c2VhcmNoVGV4dH19PC9zdHJvbmc+XHJcbiAgICovXHJcbiAgQElucHV0KCkgbm9TZWFyY2hSZXN1bHRzTWVzc2FnZTogc3RyaW5nID0gJ1NlYXJjaGFibGVUYWJsZV9EZWZhdWx0X05vTWF0Y2hlc19TQyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYXRlcyBob3N0aW5nIHBhZ2UgaXMgcmVhZHkgZm9yIHRoZSB0YWJsZSB0byBsb2FkIGRhdGEuXHJcbiAgICpcclxuICAgKiBOZXh0IGFuZCBDb21wbGV0ZSB0aGlzIG9ic2VydmFibGUgYWZ0ZXIgaG9zdGluZyBwYWdlIGhhcyBtYWRlIGFueSBwcmVsaW1pbmFyeVxyXG4gICAqIEFQSSAob3Igb3RoZXIgYXN5bmNocm9ub3VzKSBjYWxscyB0byBsb2FkIHByZXJlcXVpc2l0ZSBkYXRhIHVwb24gd2hpY2ggdGhlIGNvZGVcclxuICAgKiBpbiB0aGUgYGdldEl0ZW1zYCBmdW5jdGlvbiBkZXBlbmRzLiAgVXNlIGEgYFJlcGxheVN1YmplY3RgIHRvIGVuc3VyZSBldmVyeSBjb21wb25lbnRcclxuICAgKiB0aGF0IHVzZXMgdGhpcyBvYnNlcnZhYmxlIGdldHMgdGhlIE5leHQgYW5kIENvbXBsZXRlIG5vdGlmaWNhdGlvbnMuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcmVhZHkhOiBPYnNlcnZhYmxlPHZvaWQ+O1xyXG5cclxuICAvKipcclxuICAgKiBGdW5jdGlvbiBjYWxsZWQgdG8gZ2V0IGl0ZW1zIHRvIGRpc3BsYXkgaW4gdGhlIHRhYmxlLlxyXG4gICAqIElmIHBhZ2VhYmxlIGlzIHRydWUsIHRoZSBUYWJsZVNlYXJjaFJlc3VsdHMgbmVlZCB0byBpbmNsdWRlIHRvdGFsSXRlbXNCZWZvcmVQYWdpbmcsIHdoaWNoIGlzIHRoZVxyXG4gICAqIGNvdW50IG9mIGl0ZW1zIGJlZm9yZSB5b3UndmUgYXBwbGllZCBhbnkgcGFnaW5hdGlvbiAoaS5lLiB0aGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zIHRoYXQgY2FtZSBiYWNrIGZyb20gdGhlIHNlYXJjaCkuXHJcbiAgICpcclxuICAgKiBNYWtlIHN1cmUgdG8gYmluZCB0aGUgc2NvcGUgaW4gdGhlIHRlbXBsYXRlXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiBbZ2V0SXRlbXNdPVwieW91ckZ1bmN0aW9uLmJpbmQodGhpcylcIlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGdldEl0ZW1zITogKHNlYXJjaD86IHN0cmluZywgcGFnZUNoYW5nZUluZm8/OiBQYWdpbmdJbmZvKSA9PiBPYnNlcnZhYmxlPFRhYmxlU2VhcmNoUmVzdWx0cz47XHJcblxyXG4gIC8qKiBPYnNlcnZhYmxlIHRoYXQgd2lsbCBmb3JjZSB0aGUgZ2V0SXRlbXMgZnVuY3Rpb24gdG8gZ2V0IGNhbGxlZCBhZ2FpbiAqL1xyXG4gIEBJbnB1dCgpIHJlZnJlc2g/OiBPYnNlcnZhYmxlPFNlYXJjaGFibGVUYWJsZVJlZnJlc2hPcHRpb25zIHwgdm9pZD47XHJcblxyXG4gIC8qKiBBbGxvdyB0aGUgaG9zdCBjb21wb25lbnQgdG8gc3VwcGx5IGFuIG92ZXJsYXkgdG8gY29udHJvbCB0aGUgcGVuZGluZyBzdGF0ZSBvZiB0aGUgdGFibGUgKi9cclxuICBASW5wdXQoKSBzdGF0dXM6IE92ZXJsYXkgPSBuZXcgT3ZlcmxheSgnaGFzRGF0YScpO1xyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSB1bmRlcmx5aW5nIHRhYmxlJ3MgbGF5b3V0IHRvIGZpeGVkLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHRhYmxlTGF5b3V0Rml4ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIEVtaXRzIGl0ZW1zIHJldHVybmVkIGJ5IHRoZSBnZXRJdGVtcyBmdW5jdGlvbiwgYWxvbmcgd2l0aCB0b3RhbCBjb3VudCAqL1xyXG4gIEBPdXRwdXQoKSBpdGVtc0NoYW5nZTogRXZlbnRFbWl0dGVyPFRhYmxlU2VhcmNoUmVzdWx0cz4gPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlU2VhcmNoUmVzdWx0cz4oKTtcclxuXHJcbiAgLyoqIE9wdGlvbmFsIHRhYiBpbmRleCBmb3IgdGhlIHNlYXJjaGJveCAqL1xyXG4gIEBJbnB1dCgpIHNlYXJjaGJveFRhYkluZGV4PzogbnVtYmVyO1xyXG5cclxuICAvKiogTWF4aW11bSBudW1iZXIgb2YgaXRlbXMgdG8gc2hvdyBpbiB0aGUgdGFibGUgKGRlZmF1bHQ6IDEwMCkgKi9cclxuICBASW5wdXQoKSBtYXhJdGVtQ291bnQ6IG51bWJlciA9IDEwMDtcclxuXHJcbiAgLyoqIFNldCB0byB0cnVlIHRvIGhpZGUgc2VhcmNoIGJveCAoZG9lcyBub3QgaGlkZSB0aGUgb3RoZXIgc2VhcmNoYWJsZSB0YWJsZSBjb250cm9scyAqL1xyXG4gIEBJbnB1dCgpIGhpZGVTZWFyY2hDb250cm9sOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKiBTZXQgdG8gdHJ1ZSB0byBoaWRlIHRoZSBlbnRpcmUgaGVhZGVyICovXHJcbiAgQElucHV0KCkgaGlkZUhlYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogVHlwZSBvZiBvYmplY3QgaW4gdGhlIHRhYmxlLiBEaXNwbGF5ZWQgaW4gZm9vdGVyIChkZWZhdWx0OiAncmVzdWx0cycpKi9cclxuICBASW5wdXQoKSBvYmplY3RUeXBlOiBzdHJpbmcgPSAncmVzdWx0cyc7XHJcblxyXG4gIC8qKiBTZXQgdG8gdHJ1ZSB0byBoaWRlIHRoZSB0YWJsZSBmb290ZXIgKi9cclxuICBASW5wdXQoKSBoaWRlRm9vdGVyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB0byB0cnVlIHRvIGVuYWJsZSBwYWdpbmcuIElmIHBhZ2luZyBpcyBlbmFibGVkLCBwYWdlU2l6ZSBtdXN0IGJlIHByb3ZpZGVkLlxyXG4gICAqIGdldEl0ZW1zIHdpbGwgYmUgcGFzc2VkIGJvdGggYSBzZWFyY2ggYW5kIGEgUGFnaW5nSW5mbyBvYmplY3Qgd2hlbiBjYWxsZWQuIEl0IG11c3QgaW5jbHVkZSB0b3RhbEl0ZW1zQmVmb3JlUGFnaW5nIGluIHRoZSBUYWJsZVNlYXJjaFJlc3VsdHMgb3V0cHV0LlxyXG4gICAqIEhlcmUgaXMgYSBzaW1wbGUgaW1wbGVtZW50YXRpb246IFxyXG4gICAqIEBleGFtcGxlXHJcbiAgICogZ2V0SXRlbXMoc2VhcmNoPzogc3RyaW5nLCBwYWdlQ2hhbmdlSW5mbz86IFBhZ2luZ0luZm8pOiBPYnNlcnZhYmxlPFRhYmxlU2VhcmNoUmVzdWx0cz4ge1xyXG4gICAgICBsZXQgcmVzdWx0czogU2ltcGxlSXRlbVtdID0gWy4uLnRoaXMucGFnaW5hdGVkVGFibGVJdGVtc107XHJcbiAgICAgIC8vYXBwbHkgc2VhcmNoXHJcbiAgICAgIGlmKHNlYXJjaCkge1xyXG4gICAgICAgIHJlc3VsdHMgPSB0aGlzLnBhZ2luYXRlZFRhYmxlSXRlbXMuZmlsdGVyKGkgPT4gaS5hLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgICAgfVxyXG4gICAgICAvL2dldCBjb3VudCBiZWZvcmUgYXBwbHlpbmcgcGFnaW5nXHJcbiAgICAgIGxldCBjb3VudEJlZm9yZVBhZ2luZyA9IHJlc3VsdHMubGVuZ3RoO1xyXG4gICAgICAvL2FwcGx5IHBhZ2luZ1xyXG4gICAgICBpZihwYWdlQ2hhbmdlSW5mbykge1xyXG4gICAgICAgIHJlc3VsdHMgPSByZXN1bHRzLnNsaWNlKHBhZ2VDaGFuZ2VJbmZvIS5za2lwLCBwYWdlQ2hhbmdlSW5mbyEuc2tpcCArIHBhZ2VDaGFuZ2VJbmZvIS5wYWdlU2l6ZSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG9mKHsgaXRlbXM6IHJlc3VsdHMsIHRvdGFsSXRlbXM6IHJlc3VsdHMubGVuZ3RoLCB0b3RhbEl0ZW1zQmVmb3JlUGFnaW5nOiBjb3VudEJlZm9yZVBhZ2luZyB9KTtcclxuICAgIH1cclxuICAqL1xyXG4gIEBJbnB1dCgpIHBhZ2VhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1heCBzaXplIG9mIGEgcGFnZS5cclxuICAgKi9cclxuICBASW5wdXQoKSBwYWdlU2l6ZT86IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAqIE1heGltdW0gbnVtYmVyIG9mIHBhZ2UgdGFicyB0byBzaG93XHJcbiAqL1xyXG4gIEBJbnB1dCgpIG1heFRhYnM/OiBudW1iZXIgPSAxMDtcclxuXHJcbiAgLyoqXHJcbiAgICogTWFrZXMgdGhlIHNlYXJjaGJveCByZWFkb25seSBpZiB0cnVlLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNlYXJjaGJveFJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKiBQYXNzZWQgdG8gdGhlIGlubmVyIFRhYmxlQ29tcG9uZW50IHRvIGVuYWJsZSByb3cgc2VsZWN0aW9uICovXHJcbiAgQElucHV0KCkgc2VsZWN0aW9uQ29udGV4dD86IFRhYmxlU2VsZWN0YWJsZVJvd0NvbnRleHQ7XHJcblxyXG4gIC8qKiBQYXNzZWQgdG8gdGhlIGlubmVyIFRhYmxlQ29tcG9uZW50IHRvIGRpc3BsYXkgYSB0b29sYmFyIHdoZW4gMSBvciBtb3JlIHJvd3MgYXJlIHNlbGVjdGVkLiBSZXF1aXJlcyBgW3NlbGVjdGlvbkNvbnRleHRdYCB0byBiZSBkZWZpbmVkLiAqL1xyXG4gIEBJbnB1dCgpIHNlbGVjdGlvblRvb2xiYXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgXHJcbiAgQENvbnRlbnRDaGlsZHJlbihSZXNpemFibGVDb2x1bW5Db21wb25lbnQsIHtkZXNjZW5kYW50czogdHJ1ZX0pIHJlc2l6YWJsZUNvbHVtbnMhOiBRdWVyeUxpc3Q8UmVzaXphYmxlQ29sdW1uQ29tcG9uZW50PjtcclxuXHJcbiAgLyoqIE9wdGlvbmFsIHRleHQgdG8gYWRkIHRvIHRoZSByZXN1bHRzIGNvdW50IGluIHRoZSB0YWJsZSBmb290ZXIuIFRoaXMgdGV4dCB3aWxsIGJlIGFkZGVkIGFmdGVyIHRoZSBjb3VudCBhbmQgb2JqZWN0VHlwZS4gKi9cclxuICBASW5wdXQoKSBhZGRpdGlvbmFsQ291bnRUZXh0OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqIEVuYWJsZXMgdGFibGUgcm93IHNlbGVjdGlvbiBhbmQgcm93IGhpZ2hsaWdodGluZyBzdHlsZXMgd2hlbiB0cnVlICovXHJcbiAgQElucHV0KCkgc2VsZWN0YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipEZWZhdWx0cyB0byB1bmRlZmluZWQuIFNwZWNpZnkgeW91ciBvd24gdGVtcGxhdGUgaWYgYW4gZWMtdGFibGUgd3JhcHBlZCBhcm91bmQgeW91ciB0cmFuc2NsdWRlZCBjb250ZW50IHdvbid0IG1lZXQgeW91ciBuZWVkc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGN1c3RvbUNvbnRlbnRUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIC8qKiBXaGVuIHRydWUsIHJlbW92ZXMgdGhlIGNhcmQgc3R5bGVzIGZyb20gdGhlIHRhYmxlIHdyYXBwZXIgKi9cclxuICBASW5wdXQoKSByZW1vdmVDYXJkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKiBDbGFzc2VzIHRvIGFkZCB0byB0aGUgb3ZlcmxheS9jYXJkIGVsZW1lbnQgKi9cclxuICBASW5wdXQoKSBvdmVybGF5Q2xhc3Nlczogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKiBXaGVuIHRydWUgdGhlIG92ZXJsYXkgYW5kIHRhYmxlIHdpbGwgbm90IGhhdmUgZmxleC1zaHJpbmstbWF4IGJ1dCBpbnN0ZWFkIGZsZXgtZ3JvdyAqL1xyXG4gIEBJbnB1dCgpIGZpbGxQYXJlbnRIZWlnaHQ/OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKiBQYXNzZWQgdG8gdGhlIHBhZ2luYXRpb24gY29udHJvbCBjb21wb25lbnQuIFVzZWQgdG8gZGlzYWJsZSB0aGUgcGFnaW5hdGlvbiBjb250cm9scyAqL1xyXG4gIEBJbnB1dCgpIGRpc2FibGVQYWdpbmF0aW9uQ29udHJvbHM/OiBib29sZWFuID0gZmFsc2U7XHJcbiAgLyoqXHJcbiAgICogUGFnaW5nSW5mbyBmb3IgdGhlIGN1cnJlbnQgcGFnZS5cclxuICAgKi9cclxuICBwdWJsaWMgcGFnZUluZm8/OiBQYWdpbmdJbmZvO1xyXG5cclxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBzZWFyY2hNb2RlbCAqL1xyXG4gIHB1YmxpYyBnZXQgc2VhcmNoTW9kZWwoKTogVW50eXBlZEZvcm1Db250cm9sIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1Nb2RlbC5jb250cm9scy5zZWFyY2hNb2RlbCBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUZXh0IGRpc3BsYXllZCBpbiB0aGUgZm9vdGVyLlxyXG4gICAqIFNvbWV0aW1lcyBgbm9EYXRhTWVzc2FnZWAsIHNvbWV0aW1lcyBgbm9TZWFyY2hSZXN1bHRzTWVzc2FnZWBcclxuICAgKi9cclxuICBwdWJsaWMgdGFibGVDYXB0aW9uOiBzdHJpbmcgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0aGlzLm5vRGF0YU1lc3NhZ2UgfHwgJ1NlYXJjaGFibGVUYWJsZV9EZWZhdWx0X05vRGF0YV9TQycpO1xyXG5cclxuICAvKiogY291bnQgb2YgcmVzdWx0cyBkaXNwbGF5ZWQgaW4gdGhlIHRhYmxlICovXHJcbiAgcHVibGljIHJlc3VsdHNDb3VudDogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKiBJdGVtcyByZXR1cm5lZCBieSB0aGUgZ2V0SXRlbXMgZnVuY3Rpb24sIGFsb25nIHdpdGggdG90YWwgY291bnQgKi9cclxuICBwdWJsaWMgc2VhcmNoUmVzdWx0czogVGFibGVTZWFyY2hSZXN1bHRzID0geyBpdGVtczogW10sIHRvdGFsSXRlbXM6IDAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogSWYgcGFzc2VkIGFuIGlucHV0IGZvciByZWZyZXNoLCB0cmlnZ2VycyByZWxvYWRpbmcgaXRlbXMuXHJcbiAgICogT3RoZXJ3aXNlLCBjb21wbGV0ZXMgaW1tZWRpYXRlbHkgKHdpbGwgbmV2ZXIgdHJpZ2dlciByZWxvYWQpLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVmcmVzaFRyaWdnZXI6IE9ic2VydmFibGU8U2VhcmNoYWJsZVRhYmxlRm9ybU1vZGVsIHwgdW5kZWZpbmVkPiA9IEVNUFRZO1xyXG4gIHByaXZhdGUgZGVzdHJveWVkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgcHJpdmF0ZSBwYWdlQ2hhbmdlZDogU3ViamVjdDxTZWFyY2hhYmxlVGFibGVGb3JtTW9kZWw+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgLyoqIFRyaWdnZXJzIHRoZSBpbml0aWFsIGxvYWQgb2YgdGhlIHRhYmxlICovXHJcbiAgcHJpdmF0ZSBpbml0VGFibGUgPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBlcnJvclNlcnZpY2U6IEVycm9yU2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgcm93Q291bnRQaXBlOiBSb3dDb3VudFBpcGVcclxuICApIHsgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlcy5wYWdlU2l6ZSAmJiAhY2hhbmdlcy5wYWdlU2l6ZS5maXJzdENoYW5nZSAmJiB0aGlzLnBhZ2VhYmxlKSB7XHJcbiAgICAgIC8vIElmIHRoZSBwYWdlU2l6ZSBjaGFuZ2VzLCByZXNldCB0byB0aGUgZmlyc3QgcGFnZSBhbmQgcmVmcmVzaC5cclxuICAgICAgdGhpcy5wYWdlSW5mbyA9IFRhYmxlUGFnaW5hdGlvbkNvbXBvbmVudC5nZXRQYWdpbmdJbmZvKDEsIHRoaXMucGFnZVNpemUhKTtcclxuICAgICAgdGhpcy5vblBhZ2VDaGFuZ2UodGhpcy5wYWdlSW5mbyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RhdHVzLnNldFN0YXR1cygncGVuZGluZycsICdMb2FkaW5nJyk7XHJcbiAgICB0aGlzLnNldFVwUmVmcmVzaFRyaWdnZXIoKTtcclxuXHJcbiAgICAvLyBXYXRjaCBmb3Igc2VhcmNoYm94L290aGVyIGNvbnRyb2wgY2hhbmdlcyBvciByZWZyZXNoIHJlcXVlc3RzXHJcbiAgICBjb25zdCBzZWFyY2hPclJlZnJlc2ggPSBtZXJnZShcclxuICAgICAgdGhpcy5mb3JtTW9kZWwudmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgICAgc2tpcFVudGlsKHRoaXMucmVhZHkpLFxyXG4gICAgICAgIGRlYm91bmNlVGltZSgzMDApXHJcbiAgICAgICksXHJcbiAgICAgIHRoaXMucmVmcmVzaFRyaWdnZXIsXHJcbiAgICAgIHRoaXMuaW5pdFRhYmxlXHJcbiAgICApLnBpcGUodGFwKCgpPT4ge1xyXG4gICAgICAvL2EgY2hhbmdlIHRvIGFueSBmb3JtIGNvbnRyb2wgb3IgYSByZWZyZXNoIHNob3VsZCByZXNldCB0aGUgcGFnZUluZm8gdG8gdGhlIGZpcnN0IHBhZ2UgaWYgdGhlIHRhYmxlIGlzIHBhZ2VhYmxlLlxyXG4gICAgICAvLyhpZiB3ZSBkaWRudCByZXNldCB0aGUgcGFnZUluZm8sIHdlJ2QgaGF2ZSB0byBjYWxsIGdldEl0ZW1zIHdpdGggdGhlIHByZXZpb3VzIHBhZ2VJbmZvLCB3aGljaCBtYXkgbm90IGJlIHZhbGlkIGZvciB0aGUgbmV3IHJlc3VsdHMpXHJcbiAgICAgIGlmKHRoaXMucGFnZWFibGUpIHtcclxuICAgICAgICB0aGlzLnBhZ2VJbmZvID0gVGFibGVQYWdpbmF0aW9uQ29tcG9uZW50LmdldFBhZ2luZ0luZm8oMSwgdGhpcy5wYWdlU2l6ZSEpO1xyXG4gICAgICB9XHJcbiAgICB9KSk7XHJcblxyXG4gICAgY29uc3QgdXBkYXRlUmVzdWx0cyA9IG1lcmdlKFxyXG4gICAgICBzZWFyY2hPclJlZnJlc2gsXHJcbiAgICAgIHRoaXMucGFnZUNoYW5nZWQucGlwZShcclxuICAgICAgICAvLyBQcmV2ZW50IGEgY2FsbCB0byBnZXRJdGVtcyB3aGVuIHRoZSBwYWdlU2l6ZSBpcyBzZXQgZHVyaW5nIHBhZ2UgaW5pdCBhbmQgYmVmb3JlIHJlYWR5IGlzIGNvbXBsZXRlZFxyXG4gICAgICAgIHNraXBVbnRpbCh0aGlzLnJlYWR5KVxyXG4gICAgICApXHJcbiAgICApXHJcblxyXG4gICAgLy8gQ2FsbCBnZXRJdGVtcyBhbmQgd2F0Y2ggZm9yIGVycm9yc1xyXG4gICAgY29uc3QgZ2V0RGF0YSA9IHVwZGF0ZVJlc3VsdHMucGlwZShcclxuICAgICAgLy8gUGx1Y2sgdGhlIHNlYXJjaE1vZGVsIHZhbHVlIG91dCBvZiB0aGUgZm9ybU1vZGVsXHJcbiAgICAgIHBsdWNrKCdzZWFyY2hNb2RlbCcpLFxyXG5cclxuICAgICAgLy8gRW5zdXJlIHNlYXJjaCBzdHJpbmcgaXMgZGVmaW5lZFxyXG4gICAgICAvLyBUcmltIGFuZCBsb3dlcmNhc2UgaXQgdG8gYWlkIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoaW5nXHJcbiAgICAgIG1hcCgoc2VhcmNoU3RyaW5nPzogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgbGV0IHNlYXJjaCA9IHNlYXJjaFN0cmluZyB8fCAnJztcclxuICAgICAgICByZXR1cm4gc2VhcmNoLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICB9KSxcclxuXHJcbiAgICAgIC8vIFNob3cgc3RhdHVzIG92ZXJsYXlcclxuICAgICAgdGFwKCgpID0+IHRoaXMuc3RhdHVzLnNldFN0YXR1cygncGVuZGluZycsICdMb2FkaW5nJykpLFxyXG5cclxuICAgICAgLy8gQ2FsbCBwYXNzZWQgZnVuY3Rpb25cclxuICAgICAgc3dpdGNoTWFwKChzZWFyY2hTdHJpbmc6IHN0cmluZykgPT4gXHJcbiAgICAgICAgLy9pZiB0aGUgdGFibGUgaXMgcGFnZWFibGUsIHBhZ2VJbmZvIHdpbGwgYmUgZGVmaW5lZC5cclxuICAgICAgICB0aGlzLmdldEl0ZW1zKHNlYXJjaFN0cmluZywgdGhpcy5wYWdlSW5mbylcclxuICAgICAgKSxcclxuXHJcbiAgICAgIC8vIElmIHBhc3NlZCBmdW5jdGlvbiBmYWlscywgc2hvdyBlcnJvciBzdGF0dXNcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyLCBjYXVnaHQpID0+IHtcclxuICAgICAgICB0aGlzLnN0YXR1cy5zZXRTdGF0dXMoJ2Vycm9yJywgdGhpcy5lcnJvclNlcnZpY2UucGFyc2VBcGlFcnJvcihlcnIpKTtcclxuICAgICAgICAvLyByZXR1cm4gdGhlIGNhdWdodCBvYnNlcnZhYmxlIHNvIHRoZSBzdWJzY3JpcHRpb24gZG9lc24ndCBjb21wbGV0ZVxyXG4gICAgICAgIHJldHVybiBjYXVnaHQ7XHJcbiAgICAgIH0pLFxyXG5cclxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSxcclxuICAgICk7XHJcblxyXG4gICAgLy8gSGFuZGxlIHJldHVybmVkIGRhdGEgYW5kIG5vdGlmeSBwYXJlbnRcclxuICAgIGdldERhdGEuc3Vic2NyaWJlKChyZXN1bHRzOiBUYWJsZVNlYXJjaFJlc3VsdHMpID0+IHtcclxuICAgICAgLy8gTGltaXRpbmcgbnVtYmVyIG9mIHJlc3VsdHMgdG8gc2hvdyBpZiBub3QgcGFnZWFibGUgKGlmIHBhZ2VhYmxlIHRoZSBtYXggbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSB0YWJsZVxyXG4gICAgICAvLyBjYW4gYmUgbW9kaWZpZWQgYnkgaW5jcmVhc2luZy9kZWNyZWFzaW5nIHRoZSBwYWdlU2l6ZS4pXHJcbiAgICAgIGlmKCF0aGlzLnBhZ2VhYmxlKSB7XHJcbiAgICAgICAgcmVzdWx0cy5pdGVtcyA9IHJlc3VsdHMuaXRlbXMuc2xpY2UoMCwgdGhpcy5tYXhJdGVtQ291bnQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBOZWVkIHRvIGtub3cgdGhpcyAoYWxvbmcgd2l0aCBpZiB0aGVyZSdzIGEgdmFsdWUgaW4gdGhlIGZvcm1Nb2RlbCkgdG8gZGV0ZXJtaW5lIHdoYXQgdG8gc2hvdyBpbiB0aGUgZm9vdGVyXHJcbiAgICAgIHRoaXMuc2VhcmNoUmVzdWx0cyA9IHJlc3VsdHM7XHJcbiAgICBcclxuICAgICAgdGhpcy50YWJsZUNhcHRpb24gPSB0aGlzLmdldENhcHRpb24ocmVzdWx0cyk7XHJcbiAgICAgIHRoaXMucmVzdWx0c0NvdW50ID0gdGhpcy5wYWdlYWJsZSA/IHRoaXMucm93Q291bnRQaXBlLnRyYW5zZm9ybShyZXN1bHRzLCB0aGlzLm9iamVjdFR5cGUsIHVuZGVmaW5lZCwgdGhpcy5wYWdlSW5mbyk6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm93Q291bnRQaXBlLnRyYW5zZm9ybShyZXN1bHRzLCB0aGlzLm9iamVjdFR5cGUsIHRoaXMubWF4SXRlbUNvdW50KTtcclxuXHJcbiAgICAgIC8vIERpc2FibGUgc2VhcmNoYm94IHdoZW4gaW4gbm8tZGF0YSBzdGF0ZVxyXG4gICAgICBpZiAoIXJlc3VsdHMuaXRlbXMubGVuZ3RoICYmICF0aGlzLnNlYXJjaE1vZGVsLnZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hNb2RlbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNlYXJjaE1vZGVsLmRpc2FibGVkKSB7XHJcbiAgICAgICAgLy8gcmUtZW5hYmxlIGlmIGl0IHdhcyBkaXNhYmxlZCwgYnV0IG5vdyBoYXMgaXRlbXNcclxuICAgICAgICB0aGlzLnNlYXJjaE1vZGVsLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc3RhdHVzLnNldFN0YXR1cygnaGFzRGF0YScpO1xyXG4gICAgICAvLyBTZW5kIHRoZSByZXN1bHRzIHRvIHRoZSBwYXJlbnQgY29tcG9uZW50XHJcbiAgICAgIHRoaXMuaXRlbXNDaGFuZ2UuZW1pdChyZXN1bHRzKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFdoZW4gJ3JlYWR5JyBpcyBjb21wbGV0ZWQgYnkgdGhlIGhvc3QsIGluaXRpYWxpemUgdGhlIHRhYmxlIHdpdGggdGhlIGN1cnJlbnQgZm9ybSBtb2RlbCB2YWx1ZXNcclxuICAgIHRoaXMucmVhZHkuc3Vic2NyaWJlKHtcclxuICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmluaXRUYWJsZS5uZXh0KHRoaXMuZm9ybU1vZGVsLnZhbHVlKTtcclxuICAgICAgICB0aGlzLmluaXRUYWJsZS5jb21wbGV0ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95ZWQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95ZWQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIC8qKiBQYXNzIGFsb25nIHNvcnQgdG8gcGFyZW50IGNvbXBvbmVudCAqL1xyXG4gIG9uU29ydENoYW5nZShzb3J0OiBUYWJsZVNvcnQpOiB2b2lkIHtcclxuICAgIHRoaXMuc29ydENoYW5nZS5lbWl0KHNvcnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2hlbiBhIHBhZ2UgY2hhbmdlcywgc3RvcmUgdGhlIG5ldyBwYWdpbmdJbmZvIGFuZCBlbWl0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBmb3JtIHRvIHRyaWdnZXIgZ2V0RGF0YS5cclxuICAgKi9cclxuICBvblBhZ2VDaGFuZ2UocGFnaW5nSW5mbzogUGFnaW5nSW5mbykge1xyXG4gICAgdGhpcy5zdGF0dXMuc2V0U3RhdHVzKCdwZW5kaW5nJywgJ0xvYWRpbmcnKTtcclxuICAgIHRoaXMucGFnZUluZm8gPSBwYWdpbmdJbmZvO1xyXG4gICAgdGhpcy5wYWdlQ2hhbmdlRW1pdHRlci5lbWl0KHBhZ2luZ0luZm8pO1xyXG4gICAgdGhpcy5wYWdlQ2hhbmdlZC5uZXh0KHRoaXMuZm9ybU1vZGVsLnZhbHVlKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBXaXJlIHVwIGEgaGFuZGxlciB0byB0aGUgYHJlZnJlc2hgIG9ic2VydmFibGUgc28gdGhhdCB3aGVuXHJcbiAgICogdGhlIGhvc3QgcGFnZSBjb250ZXh0IGNoYW5nZXMgaXQgY2FuIGZvcmNlIHRoZSB0YWJsZSB0byB1cGRhdGUgYXMgd2VsbC5cclxuICAgKlxyXG4gICAqIElmIHRoZSBgcmVmcmVzaGAgb2JzZXJ2YWJsZSBwYXNzZXMgb3B0aW9ucyBhbmQgdGhlIGBjbGVhclNlYXJjaGAgcHJvcGVydHlcclxuICAgKiBpcyBzZXQgdG8gdHJ1ZSwgcmVzZXQgdGhlIHNlYXJjaE1vZGVsIGFuZCBwYXNzIGFuIGVtcHR5IHN0cmluZy5cclxuICAgKlxyXG4gICAqIElmIGByZWZyZXNoYCBvYnNlcnZhYmxlIGRvZXMgbm90IHBhc3Mgb3B0aW9ucyBvciB0aGUgYGNsZWFyU2VhcmNoYCBwcm9wZXJ0eVxyXG4gICAqIGlzIHNldCB0byBmYWxzZSwgcGFzcyBhbG9uZyB0aGUgY3VycmVudCBzZWFyY2hNb2RlbCBWYWx1ZS5cclxuICAgKi9cclxuICBwcml2YXRlIHNldFVwUmVmcmVzaFRyaWdnZXIoKSB7XHJcbiAgICBpZiAodGhpcy5yZWZyZXNoKSB7XHJcbiAgICAgIHRoaXMucmVmcmVzaFRyaWdnZXIgPSB0aGlzLnJlZnJlc2gucGlwZShcclxuICAgICAgICBtYXAob3B0cyA9PiB7XHJcbiAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLmNsZWFyU2VhcmNoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoTW9kZWwucmVzZXQoJycsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHsgLi4udGhpcy5mb3JtTW9kZWwsIHNlYXJjaE1vZGVsOiAnJyB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybU1vZGVsLnZhbHVlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZClcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBHZXQgdGV4dCB0byBkaXNwbGF5IGluIHRoZSBmb290ZXIuICovXHJcbiAgcHJpdmF0ZSBnZXRDYXB0aW9uKHJlc3VsdHM6IFRhYmxlU2VhcmNoUmVzdWx0cyk6IHN0cmluZyB7XHJcbiAgICBpZiAocmVzdWx0cy5pdGVtcy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNlYXJjaE1vZGVsLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0aGlzLm5vU2VhcmNoUmVzdWx0c01lc3NhZ2UgfHwgJ1NlYXJjaGFibGVUYWJsZV9EZWZhdWx0X05vTWF0Y2hlc19TQycsIHsgc2VhcmNoVGV4dDogdGhpcy5zZWFyY2hNb2RlbC52YWx1ZSB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy5ub0RhdGFNZXNzYWdlIHx8ICdTZWFyY2hhYmxlVGFibGVfRGVmYXVsdF9Ob0RhdGFfU0MnKTtcclxuICB9XHJcblxyXG59IiwiPGhlYWRlciAqbmdJZj1cIiFoaWRlSGVhZGVyXCJcclxuICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LXNocmluayBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxyXG4gIDxlYy10ZXh0Ym94IGlkPVwie3tpZH19X3NlYXJjaGJveFwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhaGlkZVNlYXJjaENvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibWItMCBmbGV4LWdyb3cgbXItMlwiXHJcbiAgICAgICAgICAgICAgW2F1dG9mb2N1c109XCJhdXRvZm9jdXNcIlxyXG4gICAgICAgICAgICAgIFtmb3JtTW9kZWxdPVwic2VhcmNoTW9kZWxcIlxyXG4gICAgICAgICAgICAgIFt0YWJpbmRleF09XCJzZWFyY2hib3hUYWJJbmRleFwiXHJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNlYXJjaGJveFBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICBbcmVhZG9ubHldPVwic2VhcmNoYm94UmVhZG9ubHlcIj48L2VjLXRleHRib3g+XHJcbiAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvd1wiPlxyXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiLnNlYXJjaGFibGUtdGFibGUtY29udHJvbHNcIj48L25nLWNvbnRlbnQ+XHJcbiAgPC9kaXY+XHJcbjwvaGVhZGVyPlxyXG48c2VjdGlvbiBpZD1cInt7aWR9fV9jYXJkXCJcclxuICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4ge3tvdmVybGF5Q2xhc3Nlc319XCJcclxuICAgICAgICAgW25nQ2xhc3NdPVwieydpcy10cmFuc2x1Y2VudCc6IHN0YXR1cy5zdGF0dXMgIT09ICdlcnJvcicsICdoYXMtbWFzayc6IHN0YXR1cy5zdGF0dXMgIT09ICdoYXNEYXRhJywgJ2NhcmQgbS0wIGJnLWNvbnRlbnQnOiAhY3VzdG9tQ29udGVudFRlbXBsYXRlICYmICFyZW1vdmVDYXJkfVwiXHJcbiAgICAgICAgIGVjT3ZlcmxheVxyXG4gICAgICAgICBbc3RhdHVzXT1cInN0YXR1cy5zdGF0dXNcIlxyXG4gICAgICAgICBbbWVzc2FnZV09XCJzdGF0dXMubWVzc2FnZVwiXHJcbiAgICAgICAgIFtkaXNwbGF5QXNNYXNrXT1cInRydWVcIj5cclxuICA8bmctY29udGVudCBzZWxlY3Q9XCIuY2FyZC1oZWFkZXJcIj48L25nLWNvbnRlbnQ+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImN1c3RvbUNvbnRlbnRUZW1wbGF0ZSB8fCBkZWZhdWx0Q29udGVudFRlbXBsYXRlXCI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDwhLS0gdGhlIGRlZmF1bHQgdGVtcGxhdGUgaXMgYW4gZWMtdGFibGUgd2l0aCBwcm94aWVkLW92ZXIgc2VhcmNoYWJsZSB0YWJsZSBpbnB1dHMuIFxyXG4gICAgSWYgdGhhdCBkb2Vzbid0IHdvcmsgZm9yIHlvdSB0aGVuIHlvdSBjYW4gc3BlY2lmeSBhIGN1c3RvbUNvbnRlbnRUZW1wbGF0ZSB0byB1c2UgaW5zdGVhZFxyXG4gICAgYW5kIHN0aWxsIHJldGFpbiBhbGwgdGhlIGV2ZW50IGhhbmRsaW5nLCBoZWFkZXIsIGZvb3RlciBwYWdpbmF0aW9uLCBldGMgc3VwcG9ydCAtLT5cclxuICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDb250ZW50VGVtcGxhdGU+XHJcbiAgICA8ZWMtdGFibGUgaWQ9XCJ7e2lkfX1fdGFibGVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwie3t0YWJsZUNsYXNzZXN9fVwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzLWZpeGVkXT1cInRhYmxlTGF5b3V0Rml4ZWRcIlxyXG4gICAgICAgICAgICAgIFtzb3J0YWJsZV09XCJzb3J0YWJsZVwiXHJcbiAgICAgICAgICAgICAgW3NvcnRdPVwic29ydFwiXHJcbiAgICAgICAgICAgICAgKHNvcnRDaGFuZ2UpPVwib25Tb3J0Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIFtyZXNpemFibGVdPVwicmVzaXphYmxlXCJcclxuICAgICAgICAgICAgICBbc2Nyb2xsYWJsZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBbc2VsZWN0YWJsZV09XCJzZWxlY3RhYmxlXCJcclxuICAgICAgICAgICAgICBbc2VsZWN0aW9uQ29udGV4dF09XCJzZWxlY3Rpb25Db250ZXh0XCJcclxuICAgICAgICAgICAgICBbc2VsZWN0aW9uVG9vbGJhclRlbXBsYXRlXT1cInNlbGVjdGlvblRvb2xiYXJUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgW3Jlc2l6YWJsZUNvbHVtbnNdPVwicmVzaXphYmxlQ29sdW1uc1wiPlxyXG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICA8L2VjLXRhYmxlPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDwhLS0gcGFnaW5hdGlvbiBmb290ZXIgdmlzaWJsZSBpZiB0YWJsZSBpcyBwYWdlLWFibGUgYW5kIHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lIHBhZ2Ugb2YgcmVzdWx0cyAtLT5cclxuICA8Zm9vdGVyICpuZ0lmPVwiIWhpZGVGb290ZXIgJiYgcGFnZWFibGUgJiYgc2VhcmNoUmVzdWx0cy50b3RhbEl0ZW1zQmVmb3JlUGFnaW5nISA+IHBhZ2VTaXplIVwiXHJcbiAgICAgICAgICBjbGFzcz1cInBhZ2luYXRpb24tZm9vdGVyXCJcclxuICAgICAgICAgIFtjbGFzcy5ib3JkZXItdG9wXT1cIiFjdXN0b21Db250ZW50VGVtcGxhdGVcIj5cclxuICAgIDxlYy10YWJsZS1wYWdpbmF0aW9uIGlkPVwie3tpZH19X3BhZ2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9udC1jb2xvci1wcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFt0b3RhbEl0ZW1zXT1cInNlYXJjaFJlc3VsdHMudG90YWxJdGVtc0JlZm9yZVBhZ2luZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW21heFRhYnNdPVwibWF4VGFic1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbcGFnZU51bWJlcl09XCJwYWdlSW5mbz8ucGFnZU51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZVBhZ2luYXRpb25Db250cm9sc109XCJkaXNhYmxlUGFnaW5hdGlvbkNvbnRyb2xzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlZCk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgPC9lYy10YWJsZS1wYWdpbmF0aW9uPlxyXG4gICAgPGRpdiBpZD1cInJlc3VsdHNDb3VudFwiXHJcbiAgICAgICAgICpuZ0lmPVwic2VhcmNoUmVzdWx0cz8uaXRlbXM/Lmxlbmd0aFwiXHJcbiAgICAgICAgIGNsYXNzPVwibWwtYXV0byBmb250LWNvbG9yLWhpbnQgdGV4dC10cnVuY2F0ZVwiIFxyXG4gICAgICAgICB0aXRsZT1cInt7cmVzdWx0c0NvdW50fX0ge3thZGRpdGlvbmFsQ291bnRUZXh0fX1cIj57e3Jlc3VsdHNDb3VudH19IHt7YWRkaXRpb25hbENvdW50VGV4dH19PC9kaXY+XHJcbiAgPC9mb290ZXI+XHJcblxyXG4gIDwhLS0gZGVmYXVsdCBmb290ZXI6IHZpc2libGUgaWYgaGlkZUZvb3RlciBpcyBmYWxzZSBhbmQgdGFibGUgaXMgbm90IHBhZ2UtYWJsZSBvciB0aGVyZSBhcmUgb25seSBvbmUgcGFnZSBvZiByZXN1bHRzIChhbHdheXMgc2hvd3MgaWYgdGhlcmUgaXMgYSBjYXB0aW9uIHRvIGluZGljYXRlIG5vIHJlc3VsdHMpIC0tPlxyXG4gIDxmb290ZXIgKm5nSWY9XCIoIWhpZGVGb290ZXIgJiYgKCFwYWdlYWJsZSB8fCBzZWFyY2hSZXN1bHRzLnRvdGFsSXRlbXNCZWZvcmVQYWdpbmchIDw9IHBhZ2VTaXplISkpIHx8IHRhYmxlQ2FwdGlvblwiXHJcbiAgICAgICAgICBjbGFzcz1cImNhcHRpb24tZm9vdGVyXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaGFzLXJlc3VsdHMnOiBzZWFyY2hSZXN1bHRzPy5pdGVtcz8ubGVuZ3RoLCAnYm9yZGVyLXRvcCc6IHNlYXJjaFJlc3VsdHM/Lml0ZW1zPy5sZW5ndGggJiYgIWN1c3RvbUNvbnRlbnRUZW1wbGF0ZX1cIj5cclxuICAgIDxuZy1jb250ZW50ICpuZ0lmPVwiIXRhYmxlQ2FwdGlvblwiXHJcbiAgICAgICAgICAgICAgICBzZWxlY3Q9XCIuc2VhcmNoYWJsZS10YWJsZS1mb290ZXJcIj48L25nLWNvbnRlbnQ+XHJcbiAgICA8ZGl2IGlkPVwidGFibGVDYXB0aW9uXCJcclxuICAgICAgICAgKm5nSWY9XCJ0YWJsZUNhcHRpb25cIlxyXG4gICAgICAgICBbaW5uZXJIVE1MXT1cInRhYmxlQ2FwdGlvblwiPjwvZGl2PlxyXG4gICAgPGRpdiBpZD1cInJlc3VsdHNDb3VudFwiXHJcbiAgICAgICAgICpuZ0lmPVwic2VhcmNoUmVzdWx0cz8uaXRlbXM/Lmxlbmd0aFwiXHJcbiAgICAgICAgIGNsYXNzPVwibWwtYXV0byB0ZXh0LXRydW5jYXRlXCJcclxuICAgICAgICAgdGl0bGU9XCJ7e3Jlc3VsdHNDb3VudH19IHt7YWRkaXRpb25hbENvdW50VGV4dH19XCI+e3tyZXN1bHRzQ291bnR9fSB7e2FkZGl0aW9uYWxDb3VudFRleHR9fTwvZGl2PlxyXG4gIDwvZm9vdGVyPlxyXG48L3NlY3Rpb24+Il19
342
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS90YWJsZS9zZWFyY2hhYmxlLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9kaXNwbGF5L3RhYmxlL3NlYXJjaGFibGUtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBZ0MsTUFBTSxFQUF5QyxNQUFNLGVBQWUsQ0FBQztBQUc3SixPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc1RyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDakUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEUsT0FBTyxFQUFjLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7Ozs7QUFjcEYsTUFBTSxPQUFPLHdCQUF3QjtJQTRLbkMsbUNBQW1DO0lBQ25DLElBQVcsV0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQWlDLENBQUM7SUFDbkUsQ0FBQztJQTBCRCxZQUNVLFlBQTBCLEVBQzFCLGdCQUFrQyxFQUNsQyxZQUEwQjtRQUYxQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENB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QUFsQixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFzQkcsUUFBUTtzQkFBaEIsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLE9BQU87c0JBQWYsS0FBSztnQkFLRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBR0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUdHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFFMEQsZ0JBQWdCO3NCQUEvRSxlQUFlO3VCQUFDLHdCQUF3QixFQUFFLEVBQUMsV0FBVyxFQUFFLElBQUksRUFBQztnQkFHckQsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBSUcscUJBQXFCO3NCQUE3QixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csY0FBYztzQkFBdEIsS0FBSztnQkFHRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBR0cseUJBQXlCO3NCQUFqQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0LCBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgRU1QVFksIG1lcmdlLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgbWFwLCBwbHVjaywgc2tpcFVudGlsLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBFcnJvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2Vycm9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSb3dDb3VudFBpcGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvZGlzcGxheS9waXBlcy9yb3ctY291bnQucGlwZSc7XHJcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICcuLi92aWV3LW92ZXJsYXkvdmlldy1vdmVybGF5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc2l6YWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vcmVzaXphYmxlLWNvbHVtbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQYWdpbmdJbmZvLCBUYWJsZVBhZ2luYXRpb25Db21wb25lbnQgfSBmcm9tICcuL3RhYmxlLXBhZ2luYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFibGVTZWxlY3RhYmxlUm93Q29udGV4dCB9IGZyb20gJy4vdGFibGUtc2VsZWN0YWJsZS1yb3cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFibGVTb3J0IH0gZnJvbSAnLi90YWJsZS5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IHR5cGUgVGFibGVTZWFyY2hSZXN1bHRzID0geyBpdGVtczogdW5rbm93bltdLCB0b3RhbEl0ZW1zOiBudW1iZXIsIHRvdGFsSXRlbXNCZWZvcmVQYWdpbmc/OiBudW1iZXIgfTtcclxuZXhwb3J0IHR5cGUgU2VhcmNoYWJsZVRhYmxlUmVmcmVzaE9wdGlvbnMgPSB7IGNsZWFyU2VhcmNoPzogYm9vbGVhbiB9O1xyXG5cclxudHlwZSBTZWFyY2hhYmxlVGFibGVGb3JtTW9kZWwgPSB7IHNlYXJjaE1vZGVsPzogc3RyaW5nIH07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjLXNlYXJjaGFibGUtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2hhYmxlLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2hhYmxlLXRhYmxlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNlYXJjaGFibGVUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xyXG5cclxuICBASW5wdXQoKSBpZCA9ICcnO1xyXG4gIEBJbnB1dCgpIHJlc2l6YWJsZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNvcnRhYmxlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc29ydD86IFRhYmxlU29ydCB8IFRhYmxlU29ydFtdO1xyXG4gIEBJbnB1dCgpIGF1dG9mb2N1czogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipTZXQgdG8gYSBzcGFjZS1zZXBhcmF0ZWQgc2V0IG9mIHN0cmluZ3MgdGhhdCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGVjLXRhYmxlIGNsYXNzIGF0dHJpYnV0ZVxyXG4gICAqIHRoaXMgYWxsb3dzIGZpbmVyIGNvbnRyb2wgb3ZlciBzdHlsaW5nLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHRhYmxlQ2xhc3Nlczogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKiBFbWl0cyB3aGVuIHRhYmxlIHNvcnQgaGFzIGNoYW5nZWQgKi9cclxuICBAT3V0cHV0KCkgc29ydENoYW5nZTogRXZlbnRFbWl0dGVyPFRhYmxlU29ydCB8IFRhYmxlU29ydFtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8VGFibGVTb3J0IHwgVGFibGVTb3J0W10+KCk7XHJcblxyXG4gIC8qKiBFbWl0cyB3aGVuIHRoZSB0YWJsZSBwYWdlIGhhcyBjaGFuZ2VkICovXHJcbiAgQE91dHB1dCgncGFnZUNoYW5nZScpIHBhZ2VDaGFuZ2VFbWl0dGVyOiBFdmVudEVtaXR0ZXI8UGFnaW5nSW5mbz4gPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2luZ0luZm8+KCk7XHJcblxyXG4gIC8qKiBQbGFjZWhvbGRlciB0ZXh0IGZvciB0aGUgc2VhcmNoYm94ICovXHJcbiAgQElucHV0KCkgc2VhcmNoYm94UGxhY2Vob2xkZXIgPSAnJztcclxuXHJcbiAgLyoqXHJcbiAgICogRm9ybUdyb3VwIGZvciB0aGUgc2VhcmNoYm94XHJcbiAgICpcclxuICAgKiBUaGUgcmVmZXJlbmNlZCBGb3JtR3JvdXAgKiptdXN0KiogY29udGFpbiBhIEZvcm1Db250cm9sIGNhbGxlZCAnc2VhcmNoTW9kZWwnLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtTW9kZWwhOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5ZWQgaW4gb3ZlcmxheSB3aGVuIG5vIGRhdGEgaXMgcmV0dXJuZWQgKHdpdGhvdXQgc2VhcmNoaW5nKS5cclxuICAgKlxyXG4gICAqIERlZmF1bHRzIHRvIFwiU2VhcmNoYWJsZVRhYmxlX0RlZmF1bHRfTm9EYXRhX1NDXCJcclxuICAgKi9cclxuICBASW5wdXQoKSBub0RhdGFNZXNzYWdlOiBzdHJpbmcgPSAnU2VhcmNoYWJsZVRhYmxlX0RlZmF1bHRfTm9EYXRhX1NDJztcclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheWVkIGluIG92ZXJsYXkgd2hlbiBubyBkYXRhIGlzIHJldHVybmVkIChhZnRlciBzZWFyY2hpbmcpLlxyXG4gICAqIEVuc3VyZSB0cmFuc2xhdGlvbiBoYXMgYW4gaW50ZXJwb2xhdGlvbiBwbGFjZWhvbGRlciBmb3IgXCJzZWFyY2hUZXh0XCIuXHJcbiAgICpcclxuICAgKiBEZWZhdWx0cyB0byBcIlNlYXJjaGFibGVUYWJsZV9EZWZhdWx0X05vTWF0Y2hlc19TQ1wiXHJcbiAgICpcclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIC8vIDcgcmVxdWlyZXMgc2luZ2xlIGN1cmx5IGJyYWNlc1xyXG4gICAqIE5vIGl0ZW1zIGZvdW5kIG1hdGNoaW5nIDxzdHJvbmc+e3tzZWFyY2hUZXh0fX08L3N0cm9uZz5cclxuICAgKi9cclxuICBASW5wdXQoKSBub1NlYXJjaFJlc3VsdHNNZXNzYWdlOiBzdHJpbmcgPSAnU2VhcmNoYWJsZVRhYmxlX0RlZmF1bHRfTm9NYXRjaGVzX1NDJztcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhdGVzIGhvc3RpbmcgcGFnZSBpcyByZWFkeSBmb3IgdGhlIHRhYmxlIHRvIGxvYWQgZGF0YS5cclxuICAgKlxyXG4gICAqIE5leHQgYW5kIENvbXBsZXRlIHRoaXMgb2JzZXJ2YWJsZSBhZnRlciBob3N0aW5nIHBhZ2UgaGFzIG1hZGUgYW55IHByZWxpbWluYXJ5XHJcbiAgICogQVBJIChvciBvdGhlciBhc3luY2hyb25vdXMpIGNhbGxzIHRvIGxvYWQgcHJlcmVxdWlzaXRlIGRhdGEgdXBvbiB3aGljaCB0aGUgY29kZVxyXG4gICAqIGluIHRoZSBgZ2V0SXRlbXNgIGZ1bmN0aW9uIGRlcGVuZHMuICBVc2UgYSBgUmVwbGF5U3ViamVjdGAgdG8gZW5zdXJlIGV2ZXJ5IGNvbXBvbmVudFxyXG4gICAqIHRoYXQgdXNlcyB0aGlzIG9ic2VydmFibGUgZ2V0cyB0aGUgTmV4dCBhbmQgQ29tcGxldGUgbm90aWZpY2F0aW9ucy5cclxuICAgKi9cclxuICBASW5wdXQoKSByZWFkeSE6IE9ic2VydmFibGU8dm9pZD47XHJcblxyXG4gIC8qKlxyXG4gICAqIEZ1bmN0aW9uIGNhbGxlZCB0byBnZXQgaXRlbXMgdG8gZGlzcGxheSBpbiB0aGUgdGFibGUuXHJcbiAgICogSWYgcGFnZWFibGUgaXMgdHJ1ZSwgdGhlIFRhYmxlU2VhcmNoUmVzdWx0cyBuZWVkIHRvIGluY2x1ZGUgdG90YWxJdGVtc0JlZm9yZVBhZ2luZywgd2hpY2ggaXMgdGhlXHJcbiAgICogY291bnQgb2YgaXRlbXMgYmVmb3JlIHlvdSd2ZSBhcHBsaWVkIGFueSBwYWdpbmF0aW9uIChpLmUuIHRoZSB0b3RhbCBudW1iZXIgb2YgaXRlbXMgdGhhdCBjYW1lIGJhY2sgZnJvbSB0aGUgc2VhcmNoKS5cclxuICAgKlxyXG4gICAqIE1ha2Ugc3VyZSB0byBiaW5kIHRoZSBzY29wZSBpbiB0aGUgdGVtcGxhdGVcclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIFtnZXRJdGVtc109XCJ5b3VyRnVuY3Rpb24uYmluZCh0aGlzKVwiXHJcbiAgICovXHJcbiAgQElucHV0KCkgZ2V0SXRlbXMhOiAoc2VhcmNoPzogc3RyaW5nLCBwYWdlQ2hhbmdlSW5mbz86IFBhZ2luZ0luZm8pID0+IE9ic2VydmFibGU8VGFibGVTZWFyY2hSZXN1bHRzPjtcclxuXHJcbiAgLyoqIE9ic2VydmFibGUgdGhhdCB3aWxsIGZvcmNlIHRoZSBnZXRJdGVtcyBmdW5jdGlvbiB0byBnZXQgY2FsbGVkIGFnYWluICovXHJcbiAgQElucHV0KCkgcmVmcmVzaD86IE9ic2VydmFibGU8U2VhcmNoYWJsZVRhYmxlUmVmcmVzaE9wdGlvbnMgfCB1bmRlZmluZWQ+O1xyXG5cclxuICAvKiogQWxsb3cgdGhlIGhvc3QgY29tcG9uZW50IHRvIHN1cHBseSBhbiBvdmVybGF5IHRvIGNvbnRyb2wgdGhlIHBlbmRpbmcgc3RhdGUgb2YgdGhlIHRhYmxlICovXHJcbiAgQElucHV0KCkgc3RhdHVzOiBPdmVybGF5ID0gbmV3IE92ZXJsYXkoJ2hhc0RhdGEnKTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgdW5kZXJseWluZyB0YWJsZSdzIGxheW91dCB0byBmaXhlZC5cclxuICAgKi9cclxuICBASW5wdXQoKSB0YWJsZUxheW91dEZpeGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKiBFbWl0cyBpdGVtcyByZXR1cm5lZCBieSB0aGUgZ2V0SXRlbXMgZnVuY3Rpb24sIGFsb25nIHdpdGggdG90YWwgY291bnQgKi9cclxuICBAT3V0cHV0KCkgaXRlbXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxUYWJsZVNlYXJjaFJlc3VsdHM+ID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZVNlYXJjaFJlc3VsdHM+KCk7XHJcblxyXG4gIC8qKiBPcHRpb25hbCB0YWIgaW5kZXggZm9yIHRoZSBzZWFyY2hib3ggKi9cclxuICBASW5wdXQoKSBzZWFyY2hib3hUYWJJbmRleD86IG51bWJlcjtcclxuXHJcbiAgLyoqIE1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIHRvIHNob3cgaW4gdGhlIHRhYmxlIChkZWZhdWx0OiAxMDApICovXHJcbiAgQElucHV0KCkgbWF4SXRlbUNvdW50OiBudW1iZXIgPSAxMDA7XHJcblxyXG4gIC8qKiBTZXQgdG8gdHJ1ZSB0byBoaWRlIHNlYXJjaCBib3ggKGRvZXMgbm90IGhpZGUgdGhlIG90aGVyIHNlYXJjaGFibGUgdGFibGUgY29udHJvbHMgKi9cclxuICBASW5wdXQoKSBoaWRlU2VhcmNoQ29udHJvbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogU2V0IHRvIHRydWUgdG8gaGlkZSB0aGUgZW50aXJlIGhlYWRlciAqL1xyXG4gIEBJbnB1dCgpIGhpZGVIZWFkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIFR5cGUgb2Ygb2JqZWN0IGluIHRoZSB0YWJsZS4gRGlzcGxheWVkIGluIGZvb3RlciAoZGVmYXVsdDogJ3Jlc3VsdHMnKSovXHJcbiAgQElucHV0KCkgb2JqZWN0VHlwZTogc3RyaW5nID0gJ3Jlc3VsdHMnO1xyXG5cclxuICAvKiogU2V0IHRvIHRydWUgdG8gaGlkZSB0aGUgdGFibGUgZm9vdGVyICovXHJcbiAgQElucHV0KCkgaGlkZUZvb3RlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBTZXQgdG8gdHJ1ZSB0byBlbmFibGUgcGFnaW5nLiBJZiBwYWdpbmcgaXMgZW5hYmxlZCwgcGFnZVNpemUgbXVzdCBiZSBwcm92aWRlZC5cclxuICAgKiBnZXRJdGVtcyB3aWxsIGJlIHBhc3NlZCBib3RoIGEgc2VhcmNoIGFuZCBhIFBhZ2luZ0luZm8gb2JqZWN0IHdoZW4gY2FsbGVkLiBJdCBtdXN0IGluY2x1ZGUgdG90YWxJdGVtc0JlZm9yZVBhZ2luZyBpbiB0aGUgVGFibGVTZWFyY2hSZXN1bHRzIG91dHB1dC5cclxuICAgKiBIZXJlIGlzIGEgc2ltcGxlIGltcGxlbWVudGF0aW9uOiBcclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIGdldEl0ZW1zKHNlYXJjaD86IHN0cmluZywgcGFnZUNoYW5nZUluZm8/OiBQYWdpbmdJbmZvKTogT2JzZXJ2YWJsZTxUYWJsZVNlYXJjaFJlc3VsdHM+IHtcclxuICAgICAgbGV0IHJlc3VsdHM6IFNpbXBsZUl0ZW1bXSA9IFsuLi50aGlzLnBhZ2luYXRlZFRhYmxlSXRlbXNdO1xyXG4gICAgICAvL2FwcGx5IHNlYXJjaFxyXG4gICAgICBpZihzZWFyY2gpIHtcclxuICAgICAgICByZXN1bHRzID0gdGhpcy5wYWdpbmF0ZWRUYWJsZUl0ZW1zLmZpbHRlcihpID0+IGkuYS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaC50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICAgIH1cclxuICAgICAgLy9nZXQgY291bnQgYmVmb3JlIGFwcGx5aW5nIHBhZ2luZ1xyXG4gICAgICBsZXQgY291bnRCZWZvcmVQYWdpbmcgPSByZXN1bHRzLmxlbmd0aDtcclxuICAgICAgLy9hcHBseSBwYWdpbmdcclxuICAgICAgaWYocGFnZUNoYW5nZUluZm8pIHtcclxuICAgICAgICByZXN1bHRzID0gcmVzdWx0cy5zbGljZShwYWdlQ2hhbmdlSW5mbyEuc2tpcCwgcGFnZUNoYW5nZUluZm8hLnNraXAgKyBwYWdlQ2hhbmdlSW5mbyEucGFnZVNpemUpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBvZih7IGl0ZW1zOiByZXN1bHRzLCB0b3RhbEl0ZW1zOiByZXN1bHRzLmxlbmd0aCwgdG90YWxJdGVtc0JlZm9yZVBhZ2luZzogY291bnRCZWZvcmVQYWdpbmcgfSk7XHJcbiAgICB9XHJcbiAgKi9cclxuICBASW5wdXQoKSBwYWdlYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBNYXggc2l6ZSBvZiBhIHBhZ2UuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcGFnZVNpemU/OiBudW1iZXI7XHJcblxyXG4gIC8qKlxyXG4gKiBNYXhpbXVtIG51bWJlciBvZiBwYWdlIHRhYnMgdG8gc2hvd1xyXG4gKi9cclxuICBASW5wdXQoKSBtYXhUYWJzPzogbnVtYmVyID0gMTA7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ha2VzIHRoZSBzZWFyY2hib3ggcmVhZG9ubHkgaWYgdHJ1ZS5cclxuICAgKi9cclxuICBASW5wdXQoKSBzZWFyY2hib3hSZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogUGFzc2VkIHRvIHRoZSBpbm5lciBUYWJsZUNvbXBvbmVudCB0byBlbmFibGUgcm93IHNlbGVjdGlvbiAqL1xyXG4gIEBJbnB1dCgpIHNlbGVjdGlvbkNvbnRleHQ/OiBUYWJsZVNlbGVjdGFibGVSb3dDb250ZXh0O1xyXG5cclxuICAvKiogUGFzc2VkIHRvIHRoZSBpbm5lciBUYWJsZUNvbXBvbmVudCB0byBkaXNwbGF5IGEgdG9vbGJhciB3aGVuIDEgb3IgbW9yZSByb3dzIGFyZSBzZWxlY3RlZC4gUmVxdWlyZXMgYFtzZWxlY3Rpb25Db250ZXh0XWAgdG8gYmUgZGVmaW5lZC4gKi9cclxuICBASW5wdXQoKSBzZWxlY3Rpb25Ub29sYmFyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIFxyXG4gIEBDb250ZW50Q2hpbGRyZW4oUmVzaXphYmxlQ29sdW1uQ29tcG9uZW50LCB7ZGVzY2VuZGFudHM6IHRydWV9KSByZXNpemFibGVDb2x1bW5zITogUXVlcnlMaXN0PFJlc2l6YWJsZUNvbHVtbkNvbXBvbmVudD47XHJcblxyXG4gIC8qKiBPcHRpb25hbCB0ZXh0IHRvIGFkZCB0byB0aGUgcmVzdWx0cyBjb3VudCBpbiB0aGUgdGFibGUgZm9vdGVyLiBUaGlzIHRleHQgd2lsbCBiZSBhZGRlZCBhZnRlciB0aGUgY291bnQgYW5kIG9iamVjdFR5cGUuICovXHJcbiAgQElucHV0KCkgYWRkaXRpb25hbENvdW50VGV4dDogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKiBFbmFibGVzIHRhYmxlIHJvdyBzZWxlY3Rpb24gYW5kIHJvdyBoaWdobGlnaHRpbmcgc3R5bGVzIHdoZW4gdHJ1ZSAqL1xyXG4gIEBJbnB1dCgpIHNlbGVjdGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqRGVmYXVsdHMgdG8gdW5kZWZpbmVkLiBTcGVjaWZ5IHlvdXIgb3duIHRlbXBsYXRlIGlmIGFuIGVjLXRhYmxlIHdyYXBwZWQgYXJvdW5kIHlvdXIgdHJhbnNjbHVkZWQgY29udGVudCB3b24ndCBtZWV0IHlvdXIgbmVlZHNcclxuICAgKi9cclxuICBASW5wdXQoKSBjdXN0b21Db250ZW50VGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvKiogV2hlbiB0cnVlLCByZW1vdmVzIHRoZSBjYXJkIHN0eWxlcyBmcm9tIHRoZSB0YWJsZSB3cmFwcGVyICovXHJcbiAgQElucHV0KCkgcmVtb3ZlQ2FyZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogQ2xhc3NlcyB0byBhZGQgdG8gdGhlIG92ZXJsYXkvY2FyZCBlbGVtZW50ICovXHJcbiAgQElucHV0KCkgb3ZlcmxheUNsYXNzZXM6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKiogV2hlbiB0cnVlIHRoZSBvdmVybGF5IGFuZCB0YWJsZSB3aWxsIG5vdCBoYXZlIGZsZXgtc2hyaW5rLW1heCBidXQgaW5zdGVhZCBmbGV4LWdyb3cgKi9cclxuICBASW5wdXQoKSBmaWxsUGFyZW50SGVpZ2h0PzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogUGFzc2VkIHRvIHRoZSBwYWdpbmF0aW9uIGNvbnRyb2wgY29tcG9uZW50LiBVc2VkIHRvIGRpc2FibGUgdGhlIHBhZ2luYXRpb24gY29udHJvbHMgKi9cclxuICBASW5wdXQoKSBkaXNhYmxlUGFnaW5hdGlvbkNvbnRyb2xzPzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKlxyXG4gICAqIFBhZ2luZ0luZm8gZm9yIHRoZSBjdXJyZW50IHBhZ2UuXHJcbiAgICovXHJcbiAgcHVibGljIHBhZ2VJbmZvPzogUGFnaW5nSW5mbztcclxuXHJcbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgc2VhcmNoTW9kZWwgKi9cclxuICBwdWJsaWMgZ2V0IHNlYXJjaE1vZGVsKCk6IFVudHlwZWRGb3JtQ29udHJvbCB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtTW9kZWwuY29udHJvbHMuc2VhcmNoTW9kZWwgYXMgVW50eXBlZEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGV4dCBkaXNwbGF5ZWQgaW4gdGhlIGZvb3Rlci5cclxuICAgKiBTb21ldGltZXMgYG5vRGF0YU1lc3NhZ2VgLCBzb21ldGltZXMgYG5vU2VhcmNoUmVzdWx0c01lc3NhZ2VgXHJcbiAgICovXHJcbiAgcHVibGljIHRhYmxlQ2FwdGlvbjogc3RyaW5nID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy5ub0RhdGFNZXNzYWdlIHx8ICdTZWFyY2hhYmxlVGFibGVfRGVmYXVsdF9Ob0RhdGFfU0MnKTtcclxuXHJcbiAgLyoqIGNvdW50IG9mIHJlc3VsdHMgZGlzcGxheWVkIGluIHRoZSB0YWJsZSAqL1xyXG4gIHB1YmxpYyByZXN1bHRzQ291bnQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKiogSXRlbXMgcmV0dXJuZWQgYnkgdGhlIGdldEl0ZW1zIGZ1bmN0aW9uLCBhbG9uZyB3aXRoIHRvdGFsIGNvdW50ICovXHJcbiAgcHVibGljIHNlYXJjaFJlc3VsdHM6IFRhYmxlU2VhcmNoUmVzdWx0cyA9IHsgaXRlbXM6IFtdLCB0b3RhbEl0ZW1zOiAwIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIHBhc3NlZCBhbiBpbnB1dCBmb3IgcmVmcmVzaCwgdHJpZ2dlcnMgcmVsb2FkaW5nIGl0ZW1zLlxyXG4gICAqIE90aGVyd2lzZSwgY29tcGxldGVzIGltbWVkaWF0ZWx5ICh3aWxsIG5ldmVyIHRyaWdnZXIgcmVsb2FkKS5cclxuICAgKi9cclxuICBwcml2YXRlIHJlZnJlc2hUcmlnZ2VyOiBPYnNlcnZhYmxlPFNlYXJjaGFibGVUYWJsZUZvcm1Nb2RlbCB8IHVuZGVmaW5lZD4gPSBFTVBUWTtcclxuICBwcml2YXRlIGRlc3Ryb3llZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIHByaXZhdGUgcGFnZUNoYW5nZWQ6IFN1YmplY3Q8U2VhcmNoYWJsZVRhYmxlRm9ybU1vZGVsPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIC8qKiBUcmlnZ2VycyB0aGUgaW5pdGlhbCBsb2FkIG9mIHRoZSB0YWJsZSAqL1xyXG4gIHByaXZhdGUgaW5pdFRhYmxlID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZXJyb3JTZXJ2aWNlOiBFcnJvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvd0NvdW50UGlwZTogUm93Q291bnRQaXBlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXMucGFnZVNpemUgJiYgIWNoYW5nZXMucGFnZVNpemUuZmlyc3RDaGFuZ2UgJiYgdGhpcy5wYWdlYWJsZSkge1xyXG4gICAgICAvLyBJZiB0aGUgcGFnZVNpemUgY2hhbmdlcywgcmVzZXQgdG8gdGhlIGZpcnN0IHBhZ2UgYW5kIHJlZnJlc2guXHJcbiAgICAgIHRoaXMucGFnZUluZm8gPSBUYWJsZVBhZ2luYXRpb25Db21wb25lbnQuZ2V0UGFnaW5nSW5mbygxLCB0aGlzLnBhZ2VTaXplISk7XHJcbiAgICAgIHRoaXMub25QYWdlQ2hhbmdlKHRoaXMucGFnZUluZm8pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0YXR1cy5zZXRTdGF0dXMoJ3BlbmRpbmcnLCAnTG9hZGluZycpO1xyXG4gICAgdGhpcy5zZXRVcFJlZnJlc2hUcmlnZ2VyKCk7XHJcblxyXG4gICAgLy8gV2F0Y2ggZm9yIHNlYXJjaGJveC9vdGhlciBjb250cm9sIGNoYW5nZXMgb3IgcmVmcmVzaCByZXF1ZXN0c1xyXG4gICAgY29uc3Qgc2VhcmNoT3JSZWZyZXNoID0gbWVyZ2UoXHJcbiAgICAgIHRoaXMuZm9ybU1vZGVsLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICAgIHNraXBVbnRpbCh0aGlzLnJlYWR5KSxcclxuICAgICAgICBkZWJvdW5jZVRpbWUoMzAwKVxyXG4gICAgICApLFxyXG4gICAgICB0aGlzLnJlZnJlc2hUcmlnZ2VyLFxyXG4gICAgICB0aGlzLmluaXRUYWJsZVxyXG4gICAgKS5waXBlKHRhcCgoKT0+IHtcclxuICAgICAgLy9hIGNoYW5nZSB0byBhbnkgZm9ybSBjb250cm9sIG9yIGEgcmVmcmVzaCBzaG91bGQgcmVzZXQgdGhlIHBhZ2VJbmZvIHRvIHRoZSBmaXJzdCBwYWdlIGlmIHRoZSB0YWJsZSBpcyBwYWdlYWJsZS5cclxuICAgICAgLy8oaWYgd2UgZGlkbnQgcmVzZXQgdGhlIHBhZ2VJbmZvLCB3ZSdkIGhhdmUgdG8gY2FsbCBnZXRJdGVtcyB3aXRoIHRoZSBwcmV2aW91cyBwYWdlSW5mbywgd2hpY2ggbWF5IG5vdCBiZSB2YWxpZCBmb3IgdGhlIG5ldyByZXN1bHRzKVxyXG4gICAgICBpZih0aGlzLnBhZ2VhYmxlKSB7XHJcbiAgICAgICAgdGhpcy5wYWdlSW5mbyA9IFRhYmxlUGFnaW5hdGlvbkNvbXBvbmVudC5nZXRQYWdpbmdJbmZvKDEsIHRoaXMucGFnZVNpemUhKTtcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG5cclxuICAgIGNvbnN0IHVwZGF0ZVJlc3VsdHMgPSBtZXJnZShcclxuICAgICAgc2VhcmNoT3JSZWZyZXNoLFxyXG4gICAgICB0aGlzLnBhZ2VDaGFuZ2VkLnBpcGUoXHJcbiAgICAgICAgLy8gUHJldmVudCBhIGNhbGwgdG8gZ2V0SXRlbXMgd2hlbiB0aGUgcGFnZVNpemUgaXMgc2V0IGR1cmluZyBwYWdlIGluaXQgYW5kIGJlZm9yZSByZWFkeSBpcyBjb21wbGV0ZWRcclxuICAgICAgICBza2lwVW50aWwodGhpcy5yZWFkeSlcclxuICAgICAgKVxyXG4gICAgKVxyXG5cclxuICAgIC8vIENhbGwgZ2V0SXRlbXMgYW5kIHdhdGNoIGZvciBlcnJvcnNcclxuICAgIGNvbnN0IGdldERhdGEgPSB1cGRhdGVSZXN1bHRzLnBpcGUoXHJcbiAgICAgIC8vIFBsdWNrIHRoZSBzZWFyY2hNb2RlbCB2YWx1ZSBvdXQgb2YgdGhlIGZvcm1Nb2RlbFxyXG4gICAgICBwbHVjaygnc2VhcmNoTW9kZWwnKSxcclxuXHJcbiAgICAgIC8vIEVuc3VyZSBzZWFyY2ggc3RyaW5nIGlzIGRlZmluZWRcclxuICAgICAgLy8gVHJpbSBhbmQgbG93ZXJjYXNlIGl0IHRvIGFpZCBjYXNlLWluc2Vuc2l0aXZlIHNlYXJjaGluZ1xyXG4gICAgICBtYXAoKHNlYXJjaFN0cmluZz86IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGxldCBzZWFyY2ggPSBzZWFyY2hTdHJpbmcgfHwgJyc7XHJcbiAgICAgICAgcmV0dXJuIHNlYXJjaC50cmltKCkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgfSksXHJcblxyXG4gICAgICAvLyBTaG93IHN0YXR1cyBvdmVybGF5XHJcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnN0YXR1cy5zZXRTdGF0dXMoJ3BlbmRpbmcnLCAnTG9hZGluZycpKSxcclxuXHJcbiAgICAgIC8vIENhbGwgcGFzc2VkIGZ1bmN0aW9uXHJcbiAgICAgIHN3aXRjaE1hcCgoc2VhcmNoU3RyaW5nOiBzdHJpbmcpID0+IFxyXG4gICAgICAgIC8vaWYgdGhlIHRhYmxlIGlzIHBhZ2VhYmxlLCBwYWdlSW5mbyB3aWxsIGJlIGRlZmluZWQuXHJcbiAgICAgICAgdGhpcy5nZXRJdGVtcyhzZWFyY2hTdHJpbmcsIHRoaXMucGFnZUluZm8pXHJcbiAgICAgICksXHJcblxyXG4gICAgICAvLyBJZiBwYXNzZWQgZnVuY3Rpb24gZmFpbHMsIHNob3cgZXJyb3Igc3RhdHVzXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVyciwgY2F1Z2h0KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zdGF0dXMuc2V0U3RhdHVzKCdlcnJvcicsIHRoaXMuZXJyb3JTZXJ2aWNlLnBhcnNlQXBpRXJyb3IoZXJyKSk7XHJcbiAgICAgICAgLy8gcmV0dXJuIHRoZSBjYXVnaHQgb2JzZXJ2YWJsZSBzbyB0aGUgc3Vic2NyaXB0aW9uIGRvZXNuJ3QgY29tcGxldGVcclxuICAgICAgICByZXR1cm4gY2F1Z2h0O1xyXG4gICAgICB9KSxcclxuXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCksXHJcbiAgICApO1xyXG5cclxuICAgIC8vIEhhbmRsZSByZXR1cm5lZCBkYXRhIGFuZCBub3RpZnkgcGFyZW50XHJcbiAgICBnZXREYXRhLnN1YnNjcmliZSgocmVzdWx0czogVGFibGVTZWFyY2hSZXN1bHRzKSA9PiB7XHJcbiAgICAgIC8vIExpbWl0aW5nIG51bWJlciBvZiByZXN1bHRzIHRvIHNob3cgaWYgbm90IHBhZ2VhYmxlIChpZiBwYWdlYWJsZSB0aGUgbWF4IG51bWJlciBvZiBpdGVtcyBpbiB0aGUgdGFibGVcclxuICAgICAgLy8gY2FuIGJlIG1vZGlmaWVkIGJ5IGluY3JlYXNpbmcvZGVjcmVhc2luZyB0aGUgcGFnZVNpemUuKVxyXG4gICAgICBpZighdGhpcy5wYWdlYWJsZSkge1xyXG4gICAgICAgIHJlc3VsdHMuaXRlbXMgPSByZXN1bHRzLml0ZW1zLnNsaWNlKDAsIHRoaXMubWF4SXRlbUNvdW50KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gTmVlZCB0byBrbm93IHRoaXMgKGFsb25nIHdpdGggaWYgdGhlcmUncyBhIHZhbHVlIGluIHRoZSBmb3JtTW9kZWwpIHRvIGRldGVybWluZSB3aGF0IHRvIHNob3cgaW4gdGhlIGZvb3RlclxyXG4gICAgICB0aGlzLnNlYXJjaFJlc3VsdHMgPSByZXN1bHRzO1xyXG4gICAgXHJcbiAgICAgIHRoaXMudGFibGVDYXB0aW9uID0gdGhpcy5nZXRDYXB0aW9uKHJlc3VsdHMpO1xyXG4gICAgICB0aGlzLnJlc3VsdHNDb3VudCA9IHRoaXMucGFnZWFibGUgPyB0aGlzLnJvd0NvdW50UGlwZS50cmFuc2Zvcm0ocmVzdWx0cywgdGhpcy5vYmplY3RUeXBlLCB1bmRlZmluZWQsIHRoaXMucGFnZUluZm8pOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvd0NvdW50UGlwZS50cmFuc2Zvcm0ocmVzdWx0cywgdGhpcy5vYmplY3RUeXBlLCB0aGlzLm1heEl0ZW1Db3VudCk7XHJcblxyXG4gICAgICAvLyBEaXNhYmxlIHNlYXJjaGJveCB3aGVuIGluIG5vLWRhdGEgc3RhdGVcclxuICAgICAgaWYgKCFyZXN1bHRzLml0ZW1zLmxlbmd0aCAmJiAhdGhpcy5zZWFyY2hNb2RlbC52YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoTW9kZWwuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWFyY2hNb2RlbC5kaXNhYmxlZCkge1xyXG4gICAgICAgIC8vIHJlLWVuYWJsZSBpZiBpdCB3YXMgZGlzYWJsZWQsIGJ1dCBub3cgaGFzIGl0ZW1zXHJcbiAgICAgICAgdGhpcy5zZWFyY2hNb2RlbC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnN0YXR1cy5zZXRTdGF0dXMoJ2hhc0RhdGEnKTtcclxuICAgICAgLy8gU2VuZCB0aGUgcmVzdWx0cyB0byB0aGUgcGFyZW50IGNvbXBvbmVudFxyXG4gICAgICB0aGlzLml0ZW1zQ2hhbmdlLmVtaXQocmVzdWx0cyk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBXaGVuICdyZWFkeScgaXMgY29tcGxldGVkIGJ5IHRoZSBob3N0LCBpbml0aWFsaXplIHRoZSB0YWJsZSB3aXRoIHRoZSBjdXJyZW50IGZvcm0gbW9kZWwgdmFsdWVzXHJcbiAgICB0aGlzLnJlYWR5LnN1YnNjcmliZSh7XHJcbiAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pbml0VGFibGUubmV4dCh0aGlzLmZvcm1Nb2RlbC52YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5pbml0VGFibGUuY29tcGxldGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveWVkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveWVkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAvKiogUGFzcyBhbG9uZyBzb3J0IHRvIHBhcmVudCBjb21wb25lbnQgKi9cclxuICBvblNvcnRDaGFuZ2Uoc29ydDogVGFibGVTb3J0IHwgVGFibGVTb3J0W10pOiB2b2lkIHtcclxuICAgIHRoaXMuc29ydENoYW5nZS5lbWl0KHNvcnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2hlbiBhIHBhZ2UgY2hhbmdlcywgc3RvcmUgdGhlIG5ldyBwYWdpbmdJbmZvIGFuZCBlbWl0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBmb3JtIHRvIHRyaWdnZXIgZ2V0RGF0YS5cclxuICAgKi9cclxuICBvblBhZ2VDaGFuZ2UocGFnaW5nSW5mbzogUGFnaW5nSW5mbykge1xyXG4gICAgdGhpcy5zdGF0dXMuc2V0U3RhdHVzKCdwZW5kaW5nJywgJ0xvYWRpbmcnKTtcclxuICAgIHRoaXMucGFnZUluZm8gPSBwYWdpbmdJbmZvO1xyXG4gICAgdGhpcy5wYWdlQ2hhbmdlRW1pdHRlci5lbWl0KHBhZ2luZ0luZm8pO1xyXG4gICAgdGhpcy5wYWdlQ2hhbmdlZC5uZXh0KHRoaXMuZm9ybU1vZGVsLnZhbHVlKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBXaXJlIHVwIGEgaGFuZGxlciB0byB0aGUgYHJlZnJlc2hgIG9ic2VydmFibGUgc28gdGhhdCB3aGVuXHJcbiAgICogdGhlIGhvc3QgcGFnZSBjb250ZXh0IGNoYW5nZXMgaXQgY2FuIGZvcmNlIHRoZSB0YWJsZSB0byB1cGRhdGUgYXMgd2VsbC5cclxuICAgKlxyXG4gICAqIElmIHRoZSBgcmVmcmVzaGAgb2JzZXJ2YWJsZSBwYXNzZXMgb3B0aW9ucyBhbmQgdGhlIGBjbGVhclNlYXJjaGAgcHJvcGVydHlcclxuICAgKiBpcyBzZXQgdG8gdHJ1ZSwgcmVzZXQgdGhlIHNlYXJjaE1vZGVsIGFuZCBwYXNzIGFuIGVtcHR5IHN0cmluZy5cclxuICAgKlxyXG4gICAqIElmIGByZWZyZXNoYCBvYnNlcnZhYmxlIGRvZXMgbm90IHBhc3Mgb3B0aW9ucyBvciB0aGUgYGNsZWFyU2VhcmNoYCBwcm9wZXJ0eVxyXG4gICAqIGlzIHNldCB0byBmYWxzZSwgcGFzcyBhbG9uZyB0aGUgY3VycmVudCBzZWFyY2hNb2RlbCBWYWx1ZS5cclxuICAgKi9cclxuICBwcml2YXRlIHNldFVwUmVmcmVzaFRyaWdnZXIoKSB7XHJcbiAgICBpZiAodGhpcy5yZWZyZXNoKSB7XHJcbiAgICAgIHRoaXMucmVmcmVzaFRyaWdnZXIgPSB0aGlzLnJlZnJlc2gucGlwZShcclxuICAgICAgICBtYXAob3B0cyA9PiB7XHJcbiAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLmNsZWFyU2VhcmNoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoTW9kZWwucmVzZXQoJycsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHsgLi4udGhpcy5mb3JtTW9kZWwsIHNlYXJjaE1vZGVsOiAnJyB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybU1vZGVsLnZhbHVlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZClcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBHZXQgdGV4dCB0byBkaXNwbGF5IGluIHRoZSBmb290ZXIuICovXHJcbiAgcHJpdmF0ZSBnZXRDYXB0aW9uKHJlc3VsdHM6IFRhYmxlU2VhcmNoUmVzdWx0cyk6IHN0cmluZyB7XHJcbiAgICBpZiAocmVzdWx0cy5pdGVtcy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNlYXJjaE1vZGVsLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0aGlzLm5vU2VhcmNoUmVzdWx0c01lc3NhZ2UgfHwgJ1NlYXJjaGFibGVUYWJsZV9EZWZhdWx0X05vTWF0Y2hlc19TQycsIHsgc2VhcmNoVGV4dDogdGhpcy5zZWFyY2hNb2RlbC52YWx1ZSB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy5ub0RhdGFNZXNzYWdlIHx8ICdTZWFyY2hhYmxlVGFibGVfRGVmYXVsdF9Ob0RhdGFfU0MnKTtcclxuICB9XHJcblxyXG59IiwiPGhlYWRlciAqbmdJZj1cIiFoaWRlSGVhZGVyXCJcclxuICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LXNocmluayBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxyXG4gIDxlYy10ZXh0Ym94IGlkPVwie3tpZH19X3NlYXJjaGJveFwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhaGlkZVNlYXJjaENvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibWItMCBmbGV4LWdyb3cgbXItMlwiXHJcbiAgICAgICAgICAgICAgW2F1dG9mb2N1c109XCJhdXRvZm9jdXNcIlxyXG4gICAgICAgICAgICAgIFtmb3JtTW9kZWxdPVwic2VhcmNoTW9kZWxcIlxyXG4gICAgICAgICAgICAgIFt0YWJpbmRleF09XCJzZWFyY2hib3hUYWJJbmRleFwiXHJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNlYXJjaGJveFBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICBbcmVhZG9ubHldPVwic2VhcmNoYm94UmVhZG9ubHlcIj48L2VjLXRleHRib3g+XHJcbiAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvd1wiPlxyXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiLnNlYXJjaGFibGUtdGFibGUtY29udHJvbHNcIj48L25nLWNvbnRlbnQ+XHJcbiAgPC9kaXY+XHJcbjwvaGVhZGVyPlxyXG48c2VjdGlvbiBpZD1cInt7aWR9fV9jYXJkXCJcclxuICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4ge3tvdmVybGF5Q2xhc3Nlc319XCJcclxuICAgICAgICAgW25nQ2xhc3NdPVwieydpcy10cmFuc2x1Y2VudCc6IHN0YXR1cy5zdGF0dXMgIT09ICdlcnJvcicsICdoYXMtbWFzayc6IHN0YXR1cy5zdGF0dXMgIT09ICdoYXNEYXRhJywgJ2NhcmQgbS0wIGJnLWNvbnRlbnQnOiAhY3VzdG9tQ29udGVudFRlbXBsYXRlICYmICFyZW1vdmVDYXJkfVwiXHJcbiAgICAgICAgIGVjT3ZlcmxheVxyXG4gICAgICAgICBbc3RhdHVzXT1cInN0YXR1cy5zdGF0dXNcIlxyXG4gICAgICAgICBbbWVzc2FnZV09XCJzdGF0dXMubWVzc2FnZVwiXHJcbiAgICAgICAgIFtkaXNwbGF5QXNNYXNrXT1cInRydWVcIj5cclxuICA8bmctY29udGVudCBzZWxlY3Q9XCIuY2FyZC1oZWFkZXJcIj48L25nLWNvbnRlbnQ+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImN1c3RvbUNvbnRlbnRUZW1wbGF0ZSB8fCBkZWZhdWx0Q29udGVudFRlbXBsYXRlXCI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDwhLS0gdGhlIGRlZmF1bHQgdGVtcGxhdGUgaXMgYW4gZWMtdGFibGUgd2l0aCBwcm94aWVkLW92ZXIgc2VhcmNoYWJsZSB0YWJsZSBpbnB1dHMuIFxyXG4gICAgSWYgdGhhdCBkb2Vzbid0IHdvcmsgZm9yIHlvdSB0aGVuIHlvdSBjYW4gc3BlY2lmeSBhIGN1c3RvbUNvbnRlbnRUZW1wbGF0ZSB0byB1c2UgaW5zdGVhZFxyXG4gICAgYW5kIHN0aWxsIHJldGFpbiBhbGwgdGhlIGV2ZW50IGhhbmRsaW5nLCBoZWFkZXIsIGZvb3RlciBwYWdpbmF0aW9uLCBldGMgc3VwcG9ydCAtLT5cclxuICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDb250ZW50VGVtcGxhdGU+XHJcbiAgICA8ZWMtdGFibGUgaWQ9XCJ7e2lkfX1fdGFibGVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwie3t0YWJsZUNsYXNzZXN9fVwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzLWZpeGVkXT1cInRhYmxlTGF5b3V0Rml4ZWRcIlxyXG4gICAgICAgICAgICAgIFtzb3J0YWJsZV09XCJzb3J0YWJsZVwiXHJcbiAgICAgICAgICAgICAgW3NvcnRdPVwic29ydFwiXHJcbiAgICAgICAgICAgICAgKHNvcnRDaGFuZ2UpPVwib25Tb3J0Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIFtyZXNpemFibGVdPVwicmVzaXphYmxlXCJcclxuICAgICAgICAgICAgICBbc2Nyb2xsYWJsZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBbc2VsZWN0YWJsZV09XCJzZWxlY3RhYmxlXCJcclxuICAgICAgICAgICAgICBbc2VsZWN0aW9uQ29udGV4dF09XCJzZWxlY3Rpb25Db250ZXh0XCJcclxuICAgICAgICAgICAgICBbc2VsZWN0aW9uVG9vbGJhclRlbXBsYXRlXT1cInNlbGVjdGlvblRvb2xiYXJUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgW3Jlc2l6YWJsZUNvbHVtbnNdPVwicmVzaXphYmxlQ29sdW1uc1wiPlxyXG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICA8L2VjLXRhYmxlPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDwhLS0gcGFnaW5hdGlvbiBmb290ZXIgdmlzaWJsZSBpZiB0YWJsZSBpcyBwYWdlLWFibGUgYW5kIHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lIHBhZ2Ugb2YgcmVzdWx0cyAtLT5cclxuICA8Zm9vdGVyICpuZ0lmPVwiIWhpZGVGb290ZXIgJiYgcGFnZWFibGUgJiYgc2VhcmNoUmVzdWx0cy50b3RhbEl0ZW1zQmVmb3JlUGFnaW5nISA+IHBhZ2VTaXplIVwiXHJcbiAgICAgICAgICBjbGFzcz1cInBhZ2luYXRpb24tZm9vdGVyXCJcclxuICAgICAgICAgIFtjbGFzcy5ib3JkZXItdG9wXT1cIiFjdXN0b21Db250ZW50VGVtcGxhdGVcIj5cclxuICAgIDxlYy10YWJsZS1wYWdpbmF0aW9uIGlkPVwie3tpZH19X3BhZ2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9udC1jb2xvci1wcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFt0b3RhbEl0ZW1zXT1cInNlYXJjaFJlc3VsdHMudG90YWxJdGVtc0JlZm9yZVBhZ2luZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW21heFRhYnNdPVwibWF4VGFic1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbcGFnZU51bWJlcl09XCJwYWdlSW5mbz8ucGFnZU51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZVBhZ2luYXRpb25Db250cm9sc109XCJkaXNhYmxlUGFnaW5hdGlvbkNvbnRyb2xzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlZCk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgPC9lYy10YWJsZS1wYWdpbmF0aW9uPlxyXG4gICAgPGRpdiBpZD1cInJlc3VsdHNDb3VudFwiXHJcbiAgICAgICAgICpuZ0lmPVwic2VhcmNoUmVzdWx0cz8uaXRlbXM/Lmxlbmd0aFwiXHJcbiAgICAgICAgIGNsYXNzPVwibWwtYXV0byBmb250LWNvbG9yLWhpbnQgdGV4dC10cnVuY2F0ZVwiIFxyXG4gICAgICAgICB0aXRsZT1cInt7cmVzdWx0c0NvdW50fX0ge3thZGRpdGlvbmFsQ291bnRUZXh0fX1cIj57e3Jlc3VsdHNDb3VudH19IHt7YWRkaXRpb25hbENvdW50VGV4dH19PC9kaXY+XHJcbiAgPC9mb290ZXI+XHJcblxyXG4gIDwhLS0gZGVmYXVsdCBmb290ZXI6IHZpc2libGUgaWYgaGlkZUZvb3RlciBpcyBmYWxzZSBhbmQgdGFibGUgaXMgbm90IHBhZ2UtYWJsZSBvciB0aGVyZSBhcmUgb25seSBvbmUgcGFnZSBvZiByZXN1bHRzIChhbHdheXMgc2hvd3MgaWYgdGhlcmUgaXMgYSBjYXB0aW9uIHRvIGluZGljYXRlIG5vIHJlc3VsdHMpIC0tPlxyXG4gIDxmb290ZXIgKm5nSWY9XCIoIWhpZGVGb290ZXIgJiYgKCFwYWdlYWJsZSB8fCBzZWFyY2hSZXN1bHRzLnRvdGFsSXRlbXNCZWZvcmVQYWdpbmchIDw9IHBhZ2VTaXplISkpIHx8IHRhYmxlQ2FwdGlvblwiXHJcbiAgICAgICAgICBjbGFzcz1cImNhcHRpb24tZm9vdGVyXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaGFzLXJlc3VsdHMnOiBzZWFyY2hSZXN1bHRzPy5pdGVtcz8ubGVuZ3RoLCAnYm9yZGVyLXRvcCc6IHNlYXJjaFJlc3VsdHM/Lml0ZW1zPy5sZW5ndGggJiYgIWN1c3RvbUNvbnRlbnRUZW1wbGF0ZX1cIj5cclxuICAgIDxuZy1jb250ZW50ICpuZ0lmPVwiIXRhYmxlQ2FwdGlvblwiXHJcbiAgICAgICAgICAgICAgICBzZWxlY3Q9XCIuc2VhcmNoYWJsZS10YWJsZS1mb290ZXJcIj48L25nLWNvbnRlbnQ+XHJcbiAgICA8ZGl2IGlkPVwidGFibGVDYXB0aW9uXCJcclxuICAgICAgICAgKm5nSWY9XCJ0YWJsZUNhcHRpb25cIlxyXG4gICAgICAgICBbaW5uZXJIVE1MXT1cInRhYmxlQ2FwdGlvblwiPjwvZGl2PlxyXG4gICAgPGRpdiBpZD1cInJlc3VsdHNDb3VudFwiXHJcbiAgICAgICAgICpuZ0lmPVwic2VhcmNoUmVzdWx0cz8uaXRlbXM/Lmxlbmd0aFwiXHJcbiAgICAgICAgIGNsYXNzPVwibWwtYXV0byB0ZXh0LXRydW5jYXRlXCJcclxuICAgICAgICAgdGl0bGU9XCJ7e3Jlc3VsdHNDb3VudH19IHt7YWRkaXRpb25hbENvdW50VGV4dH19XCI+e3tyZXN1bHRzQ291bnR9fSB7e2FkZGl0aW9uYWxDb3VudFRleHR9fTwvZGl2PlxyXG4gIDwvZm9vdGVyPlxyXG48L3NlY3Rpb24+Il19
@@ -1,5 +1,5 @@
1
1
  import { Component, ContentChildren, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from '@angular/core';
2
- import { isEqual } from 'lodash';
2
+ import { cloneDeep, isEqual } from 'lodash';
3
3
  import { Subject } from 'rxjs';
4
4
  import { takeUntil } from 'rxjs/operators';
5
5
  import { ResizableColumnComponent } from './resizable-column.component';
@@ -77,7 +77,7 @@ export class TableComponent {
77
77
  if (this.sortable && changes.sort && changes.sort.currentValue && !changes.sort.firstChange) {
78
78
  const newValue = changes.sort.currentValue;
79
79
  if (!this.currentSort || !isEqual(newValue, this.currentSort)) {
80
- this.onSort(newValue.field, newValue.direction);
80
+ this.onSort(newValue);
81
81
  }
82
82
  }
83
83
  }
@@ -126,7 +126,14 @@ export class TableComponent {
126
126
  if (th.classList.contains('is-resizable') && event.target && event.target.classList.contains('handle')) {
127
127
  return;
128
128
  }
129
- this.onSort(field);
129
+ let direction;
130
+ if (th.classList.contains('is-sorted-desc')) {
131
+ direction = 'asc';
132
+ }
133
+ else {
134
+ direction = 'desc';
135
+ }
136
+ this.onSort({ field, direction });
130
137
  });
131
138
  // Store unlisten function to remove listener when component is destroyed
132
139
  this.unlisteners.push(unlisten);
@@ -138,7 +145,7 @@ export class TableComponent {
138
145
  });
139
146
  // Set the initial sort
140
147
  if (this.sort) {
141
- this.onSort(this.sort.field, this.sort.direction);
148
+ this.onSort(this.sort);
142
149
  }
143
150
  }
144
151
  /**
@@ -147,32 +154,29 @@ export class TableComponent {
147
154
  * Emit the current field and direction of the sorted column
148
155
  * @param field
149
156
  */
150
- onSort(field, direction) {
151
- const th = this.sortableCols[field];
152
- if (!th) {
153
- return;
154
- }
155
- if (this.currentSort && this.currentSort.field !== field) {
156
- this.renderer.removeClass(this.sortableCols[this.currentSort.field], `is-sorted-${this.currentSort.direction}`);
157
- }
158
- if (th.classList.contains('is-sorted-desc')) {
159
- this.renderer.removeClass(th, 'is-sorted-desc');
160
- if (!direction) {
161
- direction = 'asc';
162
- }
157
+ onSort(sort) {
158
+ this.clearSort();
159
+ if (Array.isArray(sort)) {
160
+ sort.forEach(s => this.applySort(s));
163
161
  }
164
162
  else {
165
- if (th.classList.contains('is-sorted-asc')) {
166
- this.renderer.removeClass(th, 'is-sorted-asc');
167
- }
168
- if (!direction) {
169
- direction = 'desc';
170
- }
163
+ this.applySort(sort);
164
+ }
165
+ this.currentSort = cloneDeep(sort);
166
+ this.sortChange.emit(this.currentSort);
167
+ }
168
+ clearSort() {
169
+ Object.values(this.sortableCols).forEach(th => {
170
+ this.renderer.removeClass(th, `is-sorted-asc`);
171
+ this.renderer.removeClass(th, `is-sorted-desc`);
172
+ });
173
+ }
174
+ applySort(sort) {
175
+ const th = this.sortableCols[sort.field];
176
+ if (!th) {
177
+ return;
171
178
  }
172
- this.renderer.addClass(th, `is-sorted-${direction}`);
173
- const sortEvent = { field: field, direction: direction };
174
- this.currentSort = sortEvent;
175
- this.sortChange.emit(sortEvent);
179
+ this.renderer.addClass(th, `is-sorted-${sort.direction}`);
176
180
  }
177
181
  initSelectable() {
178
182
  this.selectionContext.rowCheckboxes.valueChanges.pipe(takeUntil(this.destroyed)).subscribe((value) => {
@@ -241,4 +245,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
241
245
  type: Input,
242
246
  args: ['resizableColumns']
243
247
  }] } });
244
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvdGFibGUvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQyxTQUFTLEVBQUUsZUFBZSxFQUFjLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUF3QixNQUFNLEVBQW9ELGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdPLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7QUFldkUsTUFBTSxPQUFPLGNBQWM7SUE0R3pCLFlBQW9CLFFBQW1CLEVBQVMsRUFBYztRQUExQyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQVMsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQTFHckQsT0FBRSxHQUFHLEVBQUUsQ0FBQztRQUVqQjs7O1dBR0c7UUFFTSxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRTVCOzs7V0FHRztRQUVNLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFM0I7Ozs7V0FJRztRQUVNLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFM0I7Ozs7Ozs7Ozs7Ozs7Ozs7OztXQWtCRztRQUVNLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFhMUIsaURBQWlEO1FBRXhDLGVBQVUs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b3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT3V0cHV0LCBRdWVyeUxpc3QsIFJlbmRlcmVyMiwgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWYsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUmVzaXphYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9yZXNpemFibGUtY29sdW1uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYmxlTWFzdGVyUm93Q29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS1tYXN0ZXItcm93LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYmxlU2VsZWN0YWJsZVJvd0NvbnRleHQgfSBmcm9tICcuL3RhYmxlLXNlbGVjdGFibGUtcm93LmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgdHlwZSBUYWJsZVNvcnREaXJlY3Rpb24gPSAnZGVzYycgfCAnYXNjJztcclxuZXhwb3J0IGludGVyZmFjZSBUYWJsZVNvcnQge1xyXG4gIGZpZWxkOiBzdHJpbmc7XHJcbiAgZGlyZWN0aW9uOiBUYWJsZVNvcnREaXJlY3Rpb247XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZWMtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBBZnRlckNvbnRlbnRJbml0e1xyXG4gIEBIb3N0QmluZGluZygnYXR0ci5pZCcpXHJcbiAgQElucHV0KCkgaWQgPSAnJztcclxuXHJcbiAgLyoqXHJcbiAgICogRW5hYmxlcyB0YWJsZSBzY3JvbGxpbmcgd2l0aCBhIHN0aWNreSBoZWFkZXIgYW5kIGZvb3Rlci4gVXNlXHJcbiAgICogPHRoZWFkPiBhbmQgPHRmb290PiBlbGVtZW50cyBmb3Igc3R5bGVzIHRvIGJlIGFwcGxpZWQgY29ycmVjdGx5LiBcclxuICAgKi9cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLXNjcm9sbGFibGUnKVxyXG4gIEBJbnB1dCgpIHNjcm9sbGFibGUgPSBmYWxzZTtcclxuICBcclxuICAvKipcclxuICAgKiBFbmFibGVzIHJlc2l6YWJsZSB0YWJsZSBjb2x1bW5zLiBBcHBseSB0aGUgJ2lzLXJlc2l6YWJsZScgY2xhc3NcclxuICAgKiB0byB0aGUgPHRoPiBvZiBhIHRhYmxlIGNvbHVtbiB0aGFuIGNhbiBiZSByZXNpemVkLlxyXG4gICAqL1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXMtcmVzaXphYmxlJylcclxuICBASW5wdXQoKSByZXNpemFibGUgPSBmYWxzZTtcclxuICBcclxuICAvKiogXHJcbiAgICogVHVybnMgb24gY29uZGVuc2VkIHRhYmxlIHN0eWxpbmcuIEJ5IGRlZmF1bHQgYSBjb25kZW5zZWQgdGFibGVcclxuICAgKiBoYXMgbm8gcm93IGJvcmRlcnMuIFRvIHNob3cgYm9yZGVycywgYXBwbHkgdGhlICdoYXMtYm9yZGVycycgY2xhc3NcclxuICAgKiB0byB0aGUgPGVjLXRhYmxlPiBlbGVtZW50XHJcbiAgICovXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1jb25kZW5zZWQnKVxyXG4gIEBJbnB1dCgpIGNvbmRlbnNlZCA9IGZhbHNlO1xyXG4gIFxyXG4gIC8qKiBcclxuICAgKiBFbmFibGVzIHNvcnRpbmcgYnkgY2xpY2tpbmcgb24gdGFibGUgY29sdW1ucy4gVG8gbWFrZSBhIGNvbHVtbiBzb3J0YWJsZVxyXG4gICAqIGFwcGx5IHRoZSBgZGF0YS1zb3J0YWJsZWAgYXR0cmlidXRlIHRvIHRoZSBjb2x1bW5zIGA8dGg+YCBlbGVtZW50IHdpdGggXHJcbiAgICogdGhlIHZhbHVlIG9mIHRoZSBmaWVsZCB1c2VkIHRvIHNvcnQgdGhlIGNvbHVtbi4gV2hlbiBhIGNvbHVtbiBpcyBjbGlja2VkXHJcbiAgICogdGhlIGZpZWxkcyBhbmQgY3VycmVudCBzb3J0IGRpcmVjdGlvbiBpcyBlbWl0dGVkIGZyb20gdGhlIGBzb3J0Q2hhbmdlYFxyXG4gICAqIG91dHB1dFxyXG4gICAqIFxyXG4gICAqIEBleGFtcGxlXHJcbiAgICogYGBgaHRtbFxyXG4gICAqIDxlYy10YWJsZSBbc29ydGFibGVdPVwidHJ1ZVwiIFtzb3J0XT1cImN1cnJlbnRTb3J0XCIgKHNvcnRDaGFuZ2UpPVwib25Tb3J0KCRldmVudClcIj5cclxuICAgKiAgPHRoZWFkPlxyXG4gICAqICAgIDx0aCBkYXRhLXNvcnRhYmxlPVwibmFtZVwiPk5hbWU8L3RoPlxyXG4gICAqICAgIDx0aCBkYXRhLXNvcnRhYmxlPVwicXR5XCI+UXR5LjwvdGg+XHJcbiAgICogICAgPHRoIGRhdGEtc29ydGFibGU9XCJwcmljZVwiPlByaWNlPC90aD5cclxuICAgKiAgPC90aGVhZD5cclxuICAgKiAgLi4uXHJcbiAgICogPC9lYy10YWJsZT5cclxuICAgKiBgYGBcclxuICAgKi9cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLXNvcnRhYmxlJylcclxuICBASW5wdXQoKSBzb3J0YWJsZSA9IGZhbHNlO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIFNoYXJlZCBjb250ZXh0IG9mIFRhYmxlU2VsZWN0YWJsZVJvd0NvbXBvbmVudHMgaW4gdGhlIHRhYmxlLiBXaWxsIHR1cm4gb24gaGlnaGxpZ2h0aW5nIG9uIHJvdyBob3Zlci5cclxuICAgKiBBZGQgdGhlIGBUYWJsZVNlbGVjdGFibGVSb3dDb21wb25lbnRgIHRvIHRoZSB0YWJsZSBjb250ZW50IHRvIGFkZCBjaGVja2JveGVzIHRvIGVhY2ggcm93IGFuZCBhc3NpZ24gYSBcclxuICAgKiBUZW1wbGF0ZVJlZiB0byB0aGUgYFtzZWxlY3Rpb25Ub29sYmFyVGVtcGxhdGVdYCBpbnB1dCB0aGF0IGluY2x1ZGVzIGFjdGlvbnMgdG8gdGFrZSBvbiBzZWxlY3RlZCBpdGVtcyBcclxuICAgKiB0aGF0IHdpbGwgYXBwZWFyIG92ZXIgdGhlIHRhYmxlIGhlYWRlciB3aGVuIDEgb3IgbW9yZSByb3dzIGFyZSBzZWxlY3RlZC5cclxuICAgKi9cclxuICBASW5wdXQoKSBzZWxlY3Rpb25Db250ZXh0PzogVGFibGVTZWxlY3RhYmxlUm93Q29udGV4dDtcclxuXHJcbiAgLyoqIEluY2x1ZGUgYWN0aW9ucyB0byBkaXNwbGF5IGluIGEgYmFyIG92ZXIgdGhlIHRhYmxlIGhlYWRlciB3aGVuIDEgb3IgbW9yZSByb3dzIGFyZSBzZWxlY3RlZC4gUmVxdWlyZXMgYFtzZWxlY3Rpb25Db250ZXh0XWAgdG8gYmUgZGVmaW5lZCAqL1xyXG4gIEBJbnB1dCgpIHNlbGVjdGlvblRvb2xiYXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgXHJcbiAgLyoqIFNldCB0byB0cnVlIGlmIHNlbGVjdGlvbkNvbnRleHQgaXMgZGVmaW5lZCAqL1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXMtc2VsZWN0YWJsZScpXHJcbiAgQElucHV0KCkgc2VsZWN0YWJsZSA9IGZhbHNlO1xyXG5cclxuICAvKiogSGlkZXMvc2hvd3MgdGhlIHNlbGVjdGlvbiB0b29sYmFyIHRlbXBsYXRlIHdoZW4gMSBvciBtb3JlIHJvd3MgaXMgc2VsZWN0ZWQgKi9cclxuICBoYXNTZWxlY3Rpb24gPSBmYWxzZVxyXG5cclxuICAvKipcclxuICAgKiBFbmFibGVzIGZvcm0gdGFibGUgc3R5bGluZyB0byBhbGxvdyBmb3JtIGNvbnRyb2xzIGluc2lkZSB0YWJsZSBjZWxscy5cclxuICAgKi9cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLWZvcm0tdGFibGUnKVxyXG4gIEBJbnB1dCgpIGlzRm9ybSA9IGZhbHNlO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIFRoZSBjdXJyZW50IHNvcnQgZmllbGQgYW5kIGRpcmVjdGlvbiAoJ2Rlc2MnIG9yICdhc2MnKVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNvcnQ/OiBUYWJsZVNvcnQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIHRoZSBuZXcgc29ydCB2YWx1ZSB3aGVuZXZlciBhIHNvcnRhYmxlIGNvbHVtbiBpcyBjbGlja2VkXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIHNvcnRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxUYWJsZVNvcnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAvKipcclxuICAgKiBUcnVlIGlmIGEgVGFibGVNYXN0ZXJSb3dDb21wb25lbnQgZXhpc3RzIGluIHRoZSB0YWJsZSBjb250ZW50XHJcbiAgICovXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1tYXN0ZXItZGV0YWlsJykgaGFzTWFzdGVyRGV0YWlsUm93cyA9IGZhbHNlO1xyXG5cclxuICBAQ29udGVudENoaWxkcmVuKFRhYmxlTWFzdGVyUm93Q29tcG9uZW50LCB7ZGVzY2VuZGFudHM6IHRydWV9KSBtYXN0ZXJSb3dzITogUXVlcnlMaXN0PFRhYmxlTWFzdGVyUm93Q29tcG9uZW50PjtcclxuXHJcbiAgcHVibGljIHJlc2l6YWJsZUNvbHVtbnMhOiBRdWVyeUxpc3Q8UmVzaXphYmxlQ29sdW1uQ29tcG9uZW50PjtcclxuICBAQ29udGVudENoaWxkcmVuKFJlc2l6YWJsZUNvbHVtbkNvbXBvbmVudCwge2Rlc2NlbmRhbnRzOiB0cnVlfSkgX3Jlc2l6YWJsZUNvbHVtbnMhOiBRdWVyeUxpc3Q8UmVzaXphYmxlQ29sdW1uQ29tcG9uZW50PjtcclxuXHJcbiAgQElucHV0KCdyZXNpemFibGVDb2x1bW5zJykgc2VhcmNoYWJsZVRhYmxlUmVzaXphYmxlQ29sdW1ucz86IFF1ZXJ5TGlzdDxSZXNpemFibGVDb2x1bW5Db21wb25lbnQ+O1xyXG5cclxuICAvKipcclxuICAgKiBVbmxpc3RlbiBmdW5jdGlvbiByZXR1cm5lZCBieSBgcmVuZGVyZXIubGlzdGVuKClgIHRoYXQgYXJlIGNhbGxlZFxyXG4gICAqIE9uRGVzdHJveSB0byBjbGVhbiB1cCBhbGwgbGlzdGVuZXJzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1bmxpc3RlbmVyczogKCgpID0+IHZvaWQpW10gPSBbXTtcclxuICBcclxuICAvKiogVGhlIGN1cnJlbnQgc29ydCB2YWx1ZSAqL1xyXG4gIHByaXZhdGUgY3VycmVudFNvcnQ/OiBUYWJsZVNvcnQ7XHJcbiAgXHJcbiAgLyoqIEEgbWFwIG9mIHNvcnRhYmxlIGA8dGg+YCBlbGVtZW50cyAqL1xyXG4gIHByaXZhdGUgc29ydGFibGVDb2xzOiB7W2ZpZWxkOiBzdHJpbmddOiBIVE1MVGFibGVIZWFkZXJDZWxsRWxlbWVudH0gPSB7fTtcclxuXHJcbiAgcHJpdmF0ZSBkZXN0cm95ZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG4gIFxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHVibGljIGVsOiBFbGVtZW50UmVmKSB7fVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zb3J0YWJsZSAmJiBjaGFuZ2VzLnNvcnQgJiYgY2hhbmdlcy5zb3J0LmN1cnJlbnRWYWx1ZSAmJiAhY2hhbmdlcy5zb3J0LmZpcnN0Q2hhbmdlKSB7XHJcbiAgICAgIGNvbnN0IG5ld1ZhbHVlOiBUYWJsZVNvcnQgPSBjaGFuZ2VzLnNvcnQuY3VycmVudFZhbHVlO1xyXG4gICAgICBpZiAoIXRoaXMuY3VycmVudFNvcnQgfHwgIWlzRXF1YWwobmV3VmFsdWUsIHRoaXMuY3VycmVudFNvcnQpKXtcclxuICAgICAgICB0aGlzLm9uU29ydChuZXdWYWx1ZS5maWVsZCwgbmV3VmFsdWUuZGlyZWN0aW9uKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5oYXNNYXN0ZXJEZXRhaWxSb3dzID0gISF0aGlzLm1hc3RlclJvd3MubGVuZ3RoO1xyXG4gICAgXHJcbiAgICB0aGlzLm1hc3RlclJvd3MuY2hhbmdlcy5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpXHJcbiAgICApLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuaGFzTWFzdGVyRGV0YWlsUm93cyA9ICEhdGhpcy5tYXN0ZXJSb3dzLmxlbmd0aDtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucmVzaXphYmxlQ29sdW1ucyA9IHRoaXMuc2VhcmNoYWJsZVRhYmxlUmVzaXphYmxlQ29sdW1ucyB8fCB0aGlzLl9yZXNpemFibGVDb2x1bW5zO1xyXG4gIH1cclxuICBcclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zb3J0YWJsZSkge1xyXG4gICAgICB0aGlzLmluaXRTb3J0YWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGFibGUpIHtcclxuICAgICAgdGhpcy5pbml0U2VsZWN0YWJsZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnVubGlzdGVuZXJzLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnVubGlzdGVuZXJzLmZvckVhY2godW5saXN0ZW4gPT4gdW5saXN0ZW4oKSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMuZGVzdHJveWVkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveWVkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgYWxsIGVsZW1lbnRzIGluc2lkZSB0aGUgaG9zdCBlbGVtZW50IHRoYXQgbWF0Y2ggYSBzZWxlY3RvciBcclxuICAgKiBAcGFyYW0gc2VsZWN0b3IgLSBBbnkgdmFsaWQgc2VsZWN0b3IgZm9yIFtxdWVyeVNlbGVjdG9yQWxsXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRG9jdW1lbnQvcXVlcnlTZWxlY3RvckFsbClcclxuICAgKi9cclxuICBwcml2YXRlIHF1ZXJ5RWxlbWVudHM8VD4oc2VsZWN0b3I6IHN0cmluZyk6IFRbXSB7XHJcbiAgICBjb25zdCB0YWJsZSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcclxuICAgIHJldHVybiBBcnJheS5mcm9tKHRhYmxlLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0b3JlIGEgYDx0aD5gIGZvciBlYWNoIHNvcnRhYmxlIGNvbHVtbiBhbmQgYXR0YWNoIGEgY2xpY2tcclxuICAgKiBldmVudCBsaXN0ZW5lci4gXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpbml0U29ydGFibGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLnF1ZXJ5RWxlbWVudHM8SFRNTFRhYmxlSGVhZGVyQ2VsbEVsZW1lbnQ+KCd0aCcpLmZvckVhY2godGggPT4ge1xyXG4gICAgICBpZiAodGguaGFzQXR0cmlidXRlKCdkYXRhLXNvcnRmaWVsZCcpKSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aC5nZXRBdHRyaWJ1dGUoJ2RhdGEtc29ydGZpZWxkJyk7XHJcbiAgICAgICAgaWYgKGZpZWxkKSB7XHJcbiAgICAgICAgICB0aGlzLnNvcnRhYmxlQ29sc1tmaWVsZF0gPSB0aDtcclxuICAgICAgICAgIGNvbnN0IHVubGlzdGVuID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGgsICdjbGljaycsIChldmVudDogTW91c2VFdmVudCkgPT4ge1xyXG5cclxuICAgICAgICAgICAgLy8gRG8gbm90IHNvcnQgaWYgdGhlIGV2ZW50IHRhcmdldCB3YXMgdGhlIHJlc2l6YWJsZSBoYW5kbGVcclxuICAgICAgICAgICAgaWYgKHRoLmNsYXNzTGlzdC5jb250YWlucygnaXMtcmVzaXphYmxlJykgJiYgZXZlbnQudGFyZ2V0ICYmICg8SFRNTEVsZW1lbnQ+ZXZlbnQudGFyZ2V0KS5jbGFzc0xpc3QuY29udGFpbnMoJ2hhbmRsZScpKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLm9uU29ydChmaWVsZCk7XHJcbiAgICAgICAgICB9KTtcclxuICBcclxuICAgICAgICAgIC8vIFN0b3JlIHVubGlzdGVuIGZ1bmN0aW9uIHRvIHJlbW92ZSBsaXN0ZW5lciB3aGVuIGNvbXBvbmVudCBpcyBkZXN0cm95ZWRcclxuICAgICAgICAgIHRoaXMudW5saXN0ZW5lcnMucHVzaCh1bmxpc3Rlbik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYGRhdGEtc29ydGZpZWxkIGF0dHJpYnV0ZSB3YXMgbm90IGFzc2lnbmVkIGEgdmFsdWUuYCwgdGgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gU2V0IHRoZSBpbml0aWFsIHNvcnRcclxuICAgIGlmICh0aGlzLnNvcnQpIHtcclxuICAgICAgdGhpcy5vblNvcnQodGhpcy5zb3J0LmZpZWxkLCB0aGlzLnNvcnQuZGlyZWN0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbmQgdGhlIHNvcnRlZCBjb2x1bW4gYW5kIGFwcGx5IHRoZSBkZXNjIG9yIGFzYyBjbGFzcyBpbiBvcmRlclxyXG4gICAqIHRvIHNob3cgdGhlIGNvcnJlY3Qgc29ydCBpY29uLiBJZiBhbm90aGVyIGZpZWxkIHdhcyBzb3J0ZWQsIHJlc2V0IGl0LlxyXG4gICAqIEVtaXQgdGhlIGN1cnJlbnQgZmllbGQgYW5kIGRpcmVjdGlvbiBvZiB0aGUgc29ydGVkIGNvbHVtblxyXG4gICAqIEBwYXJhbSBmaWVsZCBcclxuICAgKi9cclxuICBwcml2YXRlIG9uU29ydChmaWVsZDogc3RyaW5nLCBkaXJlY3Rpb24/OiBUYWJsZVNvcnREaXJlY3Rpb24pOiB2b2lkIHtcclxuICAgIGNvbnN0IHRoID0gdGhpcy5zb3J0YWJsZUNvbHNbZmllbGRdO1xyXG4gICAgaWYgKCF0aCkgeyByZXR1cm47IH1cclxuICAgIFxyXG4gICAgaWYgKHRoaXMuY3VycmVudFNvcnQgJiYgdGhpcy5jdXJyZW50U29ydC5maWVsZCAhPT0gZmllbGQpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLnNvcnRhYmxlQ29sc1t0aGlzLmN1cnJlbnRTb3J0LmZpZWxkXSwgYGlzLXNvcnRlZC0ke3RoaXMuY3VycmVudFNvcnQuZGlyZWN0aW9ufWApO1xyXG4gICAgfSBcclxuICAgIFxyXG4gICAgaWYgKHRoLmNsYXNzTGlzdC5jb250YWlucygnaXMtc29ydGVkLWRlc2MnKSkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoLCAnaXMtc29ydGVkLWRlc2MnKTtcclxuXHJcbiAgICAgIGlmICghZGlyZWN0aW9uKSB7XHJcbiAgICAgICAgZGlyZWN0aW9uID0gJ2FzYyc7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGguY2xhc3NMaXN0LmNvbnRhaW5zKCdpcy1zb3J0ZWQtYXNjJykpIHtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoLCAnaXMtc29ydGVkLWFzYycpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIWRpcmVjdGlvbikge1xyXG4gICAgICAgIGRpcmVjdGlvbiA9ICdkZXNjJztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGgsIGBpcy1zb3J0ZWQtJHtkaXJlY3Rpb259YCk7XHJcblxyXG4gICAgY29uc3Qgc29ydEV2ZW50ID0ge2ZpZWxkOiBmaWVsZCwgZGlyZWN0aW9uOiBkaXJlY3Rpb259O1xyXG4gICAgdGhpcy5jdXJyZW50U29ydCA9IHNvcnRFdmVudDtcclxuICAgIHRoaXMuc29ydENoYW5nZS5lbWl0KHNvcnRFdmVudCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRTZWxlY3RhYmxlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3Rpb25Db250ZXh0IS5yb3dDaGVja2JveGVzLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpXHJcbiAgICApLnN1YnNjcmliZSgodmFsdWU6IGJvb2xlYW5bXSkgPT4ge1xyXG4gICAgICB0aGlzLmhhc1NlbGVjdGlvbiA9IHZhbHVlLnNvbWUodiA9PiB2KTtcclxuICAgIH0pO1xyXG4gIH1cclxufSIsIjxkaXYgY2xhc3M9XCJzZWxlY3RhYmxlLXRhYmxlLXRvb2xiYXJcIlxyXG4gICAgICpuZ0lmPVwiaGFzU2VsZWN0aW9uICYmIHNlbGVjdGlvblRvb2xiYXJUZW1wbGF0ZVwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWxlY3Rpb25Ub29sYmFyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcbjxkaXYgaWQ9XCJ7e2lkfX0tc2Nyb2xsLWNvbnRhaW5lclwiIFxyXG4gICAgIGNsYXNzPVwidGFibGUtc2Nyb2xsLWNvbnRhaW5lclwiPlxyXG4gIDx0YWJsZSBjbGFzcz1cIm1haW4tdGFibGVcIlxyXG4gICAgICAgICBpZD1cInt7aWR9fVwiXHJcbiAgICAgICAgIFtlY1Jlc2l6YWJsZVRhYmxlXT1cInJlc2l6YWJsZVwiXHJcbiAgICAgICAgIFtjb250YWluZXJFbF09XCJlbFwiXHJcbiAgICAgICAgIFtzb3J0YWJsZVRhYmxlXT1cInNvcnRhYmxlXCJcclxuICAgICAgICAgW3Jlc2l6YWJsZUNvbHVtbnNdPVwicmVzaXphYmxlQ29sdW1uc1wiPlxyXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gIDwvdGFibGU+XHJcbjwvZGl2PiJdfQ==
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvdGFibGUvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQyxTQUFTLEVBQUUsZUFBZSxFQUFjLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUF3QixNQUFNLEVBQW9ELGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdPLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7O0FBZXZFLE1BQU0sT0FBTyxjQUFjO0lBNEd6QixZQUFvQixRQUFtQixFQUFTLEVBQWM7UUFBMUMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFTLE9BQUUsR0FBRixFQUFFLENBQVk7UUExR3JELE9BQUUsR0FBRyxFQUFFLENBQUM7UUFFakI7OztXQUdHO1FBRU0sZUFBVSxHQUFHLEtBQUssQ0FBQztRQUU1Qjs7O1dBR0c7UUFFTSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRTNCOzs7O1dBSUc7UUFFTSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRTNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7V0FrQkc7UUFFTSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBYTFCLGlEQUFpRDtR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bnRJbml0LCBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgUmVuZGVyZXIyLCBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgY2xvbmVEZWVwLCBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFJlc2l6YWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vcmVzaXphYmxlLWNvbHVtbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZU1hc3RlclJvd0NvbXBvbmVudCB9IGZyb20gJy4vdGFibGUtbWFzdGVyLXJvdy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZVNlbGVjdGFibGVSb3dDb250ZXh0IH0gZnJvbSAnLi90YWJsZS1zZWxlY3RhYmxlLXJvdy5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IHR5cGUgVGFibGVTb3J0RGlyZWN0aW9uID0gJ2Rlc2MnIHwgJ2FzYyc7XHJcbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVTb3J0IHtcclxuICBmaWVsZDogc3RyaW5nO1xyXG4gIGRpcmVjdGlvbjogVGFibGVTb3J0RGlyZWN0aW9uO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgQWZ0ZXJDb250ZW50SW5pdHtcclxuICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxyXG4gIEBJbnB1dCgpIGlkID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEVuYWJsZXMgdGFibGUgc2Nyb2xsaW5nIHdpdGggYSBzdGlja3kgaGVhZGVyIGFuZCBmb290ZXIuIFVzZVxyXG4gICAqIDx0aGVhZD4gYW5kIDx0Zm9vdD4gZWxlbWVudHMgZm9yIHN0eWxlcyB0byBiZSBhcHBsaWVkIGNvcnJlY3RseS4gXHJcbiAgICovXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1zY3JvbGxhYmxlJylcclxuICBASW5wdXQoKSBzY3JvbGxhYmxlID0gZmFsc2U7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogRW5hYmxlcyByZXNpemFibGUgdGFibGUgY29sdW1ucy4gQXBwbHkgdGhlICdpcy1yZXNpemFibGUnIGNsYXNzXHJcbiAgICogdG8gdGhlIDx0aD4gb2YgYSB0YWJsZSBjb2x1bW4gdGhhbiBjYW4gYmUgcmVzaXplZC5cclxuICAgKi9cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLXJlc2l6YWJsZScpXHJcbiAgQElucHV0KCkgcmVzaXphYmxlID0gZmFsc2U7XHJcbiAgXHJcbiAgLyoqIFxyXG4gICAqIFR1cm5zIG9uIGNvbmRlbnNlZCB0YWJsZSBzdHlsaW5nLiBCeSBkZWZhdWx0IGEgY29uZGVuc2VkIHRhYmxlXHJcbiAgICogaGFzIG5vIHJvdyBib3JkZXJzLiBUbyBzaG93IGJvcmRlcnMsIGFwcGx5IHRoZSAnaGFzLWJvcmRlcnMnIGNsYXNzXHJcbiAgICogdG8gdGhlIDxlYy10YWJsZT4gZWxlbWVudFxyXG4gICAqL1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXMtY29uZGVuc2VkJylcclxuICBASW5wdXQoKSBjb25kZW5zZWQgPSBmYWxzZTtcclxuICBcclxuICAvKiogXHJcbiAgICogRW5hYmxlcyBzb3J0aW5nIGJ5IGNsaWNraW5nIG9uIHRhYmxlIGNvbHVtbnMuIFRvIG1ha2UgYSBjb2x1bW4gc29ydGFibGVcclxuICAgKiBhcHBseSB0aGUgYGRhdGEtc29ydGFibGVgIGF0dHJpYnV0ZSB0byB0aGUgY29sdW1ucyBgPHRoPmAgZWxlbWVudCB3aXRoIFxyXG4gICAqIHRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgdXNlZCB0byBzb3J0IHRoZSBjb2x1bW4uIFdoZW4gYSBjb2x1bW4gaXMgY2xpY2tlZFxyXG4gICAqIHRoZSBmaWVsZHMgYW5kIGN1cnJlbnQgc29ydCBkaXJlY3Rpb24gaXMgZW1pdHRlZCBmcm9tIHRoZSBgc29ydENoYW5nZWBcclxuICAgKiBvdXRwdXRcclxuICAgKiBcclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIGBgYGh0bWxcclxuICAgKiA8ZWMtdGFibGUgW3NvcnRhYmxlXT1cInRydWVcIiBbc29ydF09XCJjdXJyZW50U29ydFwiIChzb3J0Q2hhbmdlKT1cIm9uU29ydCgkZXZlbnQpXCI+XHJcbiAgICogIDx0aGVhZD5cclxuICAgKiAgICA8dGggZGF0YS1zb3J0YWJsZT1cIm5hbWVcIj5OYW1lPC90aD5cclxuICAgKiAgICA8dGggZGF0YS1zb3J0YWJsZT1cInF0eVwiPlF0eS48L3RoPlxyXG4gICAqICAgIDx0aCBkYXRhLXNvcnRhYmxlPVwicHJpY2VcIj5QcmljZTwvdGg+XHJcbiAgICogIDwvdGhlYWQ+XHJcbiAgICogIC4uLlxyXG4gICAqIDwvZWMtdGFibGU+XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1zb3J0YWJsZScpXHJcbiAgQElucHV0KCkgc29ydGFibGUgPSBmYWxzZTtcclxuICBcclxuICAvKipcclxuICAgKiBTaGFyZWQgY29udGV4dCBvZiBUYWJsZVNlbGVjdGFibGVSb3dDb21wb25lbnRzIGluIHRoZSB0YWJsZS4gV2lsbCB0dXJuIG9uIGhpZ2hsaWdodGluZyBvbiByb3cgaG92ZXIuXHJcbiAgICogQWRkIHRoZSBgVGFibGVTZWxlY3RhYmxlUm93Q29tcG9uZW50YCB0byB0aGUgdGFibGUgY29udGVudCB0byBhZGQgY2hlY2tib3hlcyB0byBlYWNoIHJvdyBhbmQgYXNzaWduIGEgXHJcbiAgICogVGVtcGxhdGVSZWYgdG8gdGhlIGBbc2VsZWN0aW9uVG9vbGJhclRlbXBsYXRlXWAgaW5wdXQgdGhhdCBpbmNsdWRlcyBhY3Rpb25zIHRvIHRha2Ugb24gc2VsZWN0ZWQgaXRlbXMgXHJcbiAgICogdGhhdCB3aWxsIGFwcGVhciBvdmVyIHRoZSB0YWJsZSBoZWFkZXIgd2hlbiAxIG9yIG1vcmUgcm93cyBhcmUgc2VsZWN0ZWQuXHJcbiAgICovXHJcbiAgQElucHV0KCkgc2VsZWN0aW9uQ29udGV4dD86IFRhYmxlU2VsZWN0YWJsZVJvd0NvbnRleHQ7XHJcblxyXG4gIC8qKiBJbmNsdWRlIGFjdGlvbnMgdG8gZGlzcGxheSBpbiBhIGJhciBvdmVyIHRoZSB0YWJsZSBoZWFkZXIgd2hlbiAxIG9yIG1vcmUgcm93cyBhcmUgc2VsZWN0ZWQuIFJlcXVpcmVzIGBbc2VsZWN0aW9uQ29udGV4dF1gIHRvIGJlIGRlZmluZWQgKi9cclxuICBASW5wdXQoKSBzZWxlY3Rpb25Ub29sYmFyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIFxyXG4gIC8qKiBTZXQgdG8gdHJ1ZSBpZiBzZWxlY3Rpb25Db250ZXh0IGlzIGRlZmluZWQgKi9cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLXNlbGVjdGFibGUnKVxyXG4gIEBJbnB1dCgpIHNlbGVjdGFibGUgPSBmYWxzZTtcclxuXHJcbiAgLyoqIEhpZGVzL3Nob3dzIHRoZSBzZWxlY3Rpb24gdG9vbGJhciB0ZW1wbGF0ZSB3aGVuIDEgb3IgbW9yZSByb3dzIGlzIHNlbGVjdGVkICovXHJcbiAgaGFzU2VsZWN0aW9uID0gZmFsc2VcclxuXHJcbiAgLyoqXHJcbiAgICogRW5hYmxlcyBmb3JtIHRhYmxlIHN0eWxpbmcgdG8gYWxsb3cgZm9ybSBjb250cm9scyBpbnNpZGUgdGFibGUgY2VsbHMuXHJcbiAgICovXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1mb3JtLXRhYmxlJylcclxuICBASW5wdXQoKSBpc0Zvcm0gPSBmYWxzZTtcclxuICBcclxuICAvKipcclxuICAgKiBUaGUgY3VycmVudCBzb3J0IGZpZWxkIGFuZCBkaXJlY3Rpb24gKCdkZXNjJyBvciAnYXNjJylcclxuICAgKi9cclxuICBASW5wdXQoKSBzb3J0PzogVGFibGVTb3J0IHwgVGFibGVTb3J0W107XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIHRoZSBuZXcgc29ydCB2YWx1ZSB3aGVuZXZlciBhIHNvcnRhYmxlIGNvbHVtbiBpcyBjbGlja2VkXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIHNvcnRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxUYWJsZVNvcnQgfCBUYWJsZVNvcnRbXT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRydWUgaWYgYSBUYWJsZU1hc3RlclJvd0NvbXBvbmVudCBleGlzdHMgaW4gdGhlIHRhYmxlIGNvbnRlbnRcclxuICAgKi9cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLW1hc3Rlci1kZXRhaWwnKSBoYXNNYXN0ZXJEZXRhaWxSb3dzID0gZmFsc2U7XHJcblxyXG4gIEBDb250ZW50Q2hpbGRyZW4oVGFibGVNYXN0ZXJSb3dDb21wb25lbnQsIHtkZXNjZW5kYW50czogdHJ1ZX0pIG1hc3RlclJvd3MhOiBRdWVyeUxpc3Q8VGFibGVNYXN0ZXJSb3dDb21wb25lbnQ+O1xyXG5cclxuICBwdWJsaWMgcmVzaXphYmxlQ29sdW1ucyE6IFF1ZXJ5TGlzdDxSZXNpemFibGVDb2x1bW5Db21wb25lbnQ+O1xyXG4gIEBDb250ZW50Q2hpbGRyZW4oUmVzaXphYmxlQ29sdW1uQ29tcG9uZW50LCB7ZGVzY2VuZGFudHM6IHRydWV9KSBfcmVzaXphYmxlQ29sdW1ucyE6IFF1ZXJ5TGlzdDxSZXNpemFibGVDb2x1bW5Db21wb25lbnQ+O1xyXG5cclxuICBASW5wdXQoJ3Jlc2l6YWJsZUNvbHVtbnMnKSBzZWFyY2hhYmxlVGFibGVSZXNpemFibGVDb2x1bW5zPzogUXVlcnlMaXN0PFJlc2l6YWJsZUNvbHVtbkNvbXBvbmVudD47XHJcblxyXG4gIC8qKlxyXG4gICAqIFVubGlzdGVuIGZ1bmN0aW9uIHJldHVybmVkIGJ5IGByZW5kZXJlci5saXN0ZW4oKWAgdGhhdCBhcmUgY2FsbGVkXHJcbiAgICogT25EZXN0cm95IHRvIGNsZWFuIHVwIGFsbCBsaXN0ZW5lcnNcclxuICAgKi9cclxuICBwcml2YXRlIHVubGlzdGVuZXJzOiAoKCkgPT4gdm9pZClbXSA9IFtdO1xyXG4gIFxyXG4gIC8qKiBUaGUgY3VycmVudCBzb3J0IHZhbHVlICovXHJcbiAgcHJpdmF0ZSBjdXJyZW50U29ydD86IFRhYmxlU29ydCB8IFRhYmxlU29ydFtdO1xyXG4gIFxyXG4gIC8qKiBBIG1hcCBvZiBzb3J0YWJsZSBgPHRoPmAgZWxlbWVudHMgKi9cclxuICBwcml2YXRlIHNvcnRhYmxlQ29sczoge1tmaWVsZDogc3RyaW5nXTogSFRNTFRhYmxlSGVhZGVyQ2VsbEVsZW1lbnR9ID0ge307XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveWVkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuICBcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHB1YmxpYyBlbDogRWxlbWVudFJlZikge31cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc29ydGFibGUgJiYgY2hhbmdlcy5zb3J0ICYmIGNoYW5nZXMuc29ydC5jdXJyZW50VmFsdWUgJiYgIWNoYW5nZXMuc29ydC5maXJzdENoYW5nZSkge1xyXG4gICAgICBjb25zdCBuZXdWYWx1ZTogVGFibGVTb3J0IHwgVGFibGVTb3J0W10gPSBjaGFuZ2VzLnNvcnQuY3VycmVudFZhbHVlO1xyXG4gICAgICBpZiAoIXRoaXMuY3VycmVudFNvcnQgfHwgIWlzRXF1YWwobmV3VmFsdWUsIHRoaXMuY3VycmVudFNvcnQpKXtcclxuICAgICAgICB0aGlzLm9uU29ydChuZXdWYWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaGFzTWFzdGVyRGV0YWlsUm93cyA9ICEhdGhpcy5tYXN0ZXJSb3dzLmxlbmd0aDtcclxuICAgIFxyXG4gICAgdGhpcy5tYXN0ZXJSb3dzLmNoYW5nZXMucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKVxyXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmhhc01hc3RlckRldGFpbFJvd3MgPSAhIXRoaXMubWFzdGVyUm93cy5sZW5ndGg7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnJlc2l6YWJsZUNvbHVtbnMgPSB0aGlzLnNlYXJjaGFibGVUYWJsZVJlc2l6YWJsZUNvbHVtbnMgfHwgdGhpcy5fcmVzaXphYmxlQ29sdW1ucztcclxuICB9XHJcbiAgXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc29ydGFibGUpIHtcclxuICAgICAgdGhpcy5pbml0U29ydGFibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RhYmxlKSB7XHJcbiAgICAgIHRoaXMuaW5pdFNlbGVjdGFibGUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy51bmxpc3RlbmVycy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy51bmxpc3RlbmVycy5mb3JFYWNoKHVubGlzdGVuID0+IHVubGlzdGVuKCkpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICB0aGlzLmRlc3Ryb3llZC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3llZC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGFsbCBlbGVtZW50cyBpbnNpZGUgdGhlIGhvc3QgZWxlbWVudCB0aGF0IG1hdGNoIGEgc2VsZWN0b3IgXHJcbiAgICogQHBhcmFtIHNlbGVjdG9yIC0gQW55IHZhbGlkIHNlbGVjdG9yIGZvciBbcXVlcnlTZWxlY3RvckFsbF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0RvY3VtZW50L3F1ZXJ5U2VsZWN0b3JBbGwpXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBxdWVyeUVsZW1lbnRzPFQ+KHNlbGVjdG9yOiBzdHJpbmcpOiBUW10ge1xyXG4gICAgY29uc3QgdGFibGUgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0YWJsZS5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdG9yZSBhIGA8dGg+YCBmb3IgZWFjaCBzb3J0YWJsZSBjb2x1bW4gYW5kIGF0dGFjaCBhIGNsaWNrXHJcbiAgICogZXZlbnQgbGlzdGVuZXIuIFxyXG4gICAqL1xyXG4gIHByaXZhdGUgaW5pdFNvcnRhYmxlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5xdWVyeUVsZW1lbnRzPEhUTUxUYWJsZUhlYWRlckNlbGxFbGVtZW50PigndGgnKS5mb3JFYWNoKHRoID0+IHtcclxuICAgICAgaWYgKHRoLmhhc0F0dHJpYnV0ZSgnZGF0YS1zb3J0ZmllbGQnKSkge1xyXG4gICAgICAgIFxyXG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGguZ2V0QXR0cmlidXRlKCdkYXRhLXNvcnRmaWVsZCcpO1xyXG4gICAgICAgIGlmIChmaWVsZCkge1xyXG4gICAgICAgICAgdGhpcy5zb3J0YWJsZUNvbHNbZmllbGRdID0gdGg7XHJcbiAgICAgICAgICBjb25zdCB1bmxpc3RlbiA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoLCAnY2xpY2snLCAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuXHJcbiAgICAgICAgICAgIC8vIERvIG5vdCBzb3J0IGlmIHRoZSBldmVudCB0YXJnZXQgd2FzIHRoZSByZXNpemFibGUgaGFuZGxlXHJcbiAgICAgICAgICAgIGlmICh0aC5jbGFzc0xpc3QuY29udGFpbnMoJ2lzLXJlc2l6YWJsZScpICYmIGV2ZW50LnRhcmdldCAmJiAoPEhUTUxFbGVtZW50PmV2ZW50LnRhcmdldCkuY2xhc3NMaXN0LmNvbnRhaW5zKCdoYW5kbGUnKSkge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IGRpcmVjdGlvbjogVGFibGVTb3J0RGlyZWN0aW9uO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoLmNsYXNzTGlzdC5jb250YWlucygnaXMtc29ydGVkLWRlc2MnKSkge1xyXG4gICAgICAgICAgICAgIGRpcmVjdGlvbiA9ICdhc2MnO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGRpcmVjdGlvbiA9ICdkZXNjJztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5vblNvcnQoeyBmaWVsZCwgZGlyZWN0aW9uIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgXHJcbiAgICAgICAgICAvLyBTdG9yZSB1bmxpc3RlbiBmdW5jdGlvbiB0byByZW1vdmUgbGlzdGVuZXIgd2hlbiBjb21wb25lbnQgaXMgZGVzdHJveWVkXHJcbiAgICAgICAgICB0aGlzLnVubGlzdGVuZXJzLnB1c2godW5saXN0ZW4pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBkYXRhLXNvcnRmaWVsZCBhdHRyaWJ1dGUgd2FzIG5vdCBhc3NpZ25lZCBhIHZhbHVlLmAsIHRoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFNldCB0aGUgaW5pdGlhbCBzb3J0XHJcbiAgICBpZiAodGhpcy5zb3J0KSB7XHJcbiAgICAgIHRoaXMub25Tb3J0KHRoaXMuc29ydCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaW5kIHRoZSBzb3J0ZWQgY29sdW1uIGFuZCBhcHBseSB0aGUgZGVzYyBvciBhc2MgY2xhc3MgaW4gb3JkZXJcclxuICAgKiB0byBzaG93IHRoZSBjb3JyZWN0IHNvcnQgaWNvbi4gSWYgYW5vdGhlciBmaWVsZCB3YXMgc29ydGVkLCByZXNldCBpdC5cclxuICAgKiBFbWl0IHRoZSBjdXJyZW50IGZpZWxkIGFuZCBkaXJlY3Rpb24gb2YgdGhlIHNvcnRlZCBjb2x1bW5cclxuICAgKiBAcGFyYW0gZmllbGQgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvblNvcnQoc29ydDogVGFibGVTb3J0IHwgVGFibGVTb3J0W10pOiB2b2lkIHtcclxuICAgIHRoaXMuY2xlYXJTb3J0KCk7XHJcblxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc29ydCkpIHtcclxuICAgICAgc29ydC5mb3JFYWNoKHMgPT4gdGhpcy5hcHBseVNvcnQocykpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hcHBseVNvcnQoc29ydCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jdXJyZW50U29ydCA9IGNsb25lRGVlcChzb3J0KTtcclxuICAgIHRoaXMuc29ydENoYW5nZS5lbWl0KHRoaXMuY3VycmVudFNvcnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhclNvcnQoKSB7XHJcbiAgICBPYmplY3QudmFsdWVzKHRoaXMuc29ydGFibGVDb2xzKS5mb3JFYWNoKHRoID0+IHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aCwgYGlzLXNvcnRlZC1hc2NgKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aCwgYGlzLXNvcnRlZC1kZXNjYCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlTb3J0KHNvcnQ6IFRhYmxlU29ydCkge1xyXG4gICAgY29uc3QgdGggPSB0aGlzLnNvcnRhYmxlQ29sc1tzb3J0LmZpZWxkXTtcclxuICAgIGlmICghdGgpIHsgcmV0dXJuOyB9XHJcblxyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aCwgYGlzLXNvcnRlZC0ke3NvcnQuZGlyZWN0aW9ufWApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0U2VsZWN0YWJsZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0aW9uQ29udGV4dCEucm93Q2hlY2tib3hlcy52YWx1ZUNoYW5nZXMucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKVxyXG4gICAgKS5zdWJzY3JpYmUoKHZhbHVlOiBib29sZWFuW10pID0+IHtcclxuICAgICAgdGhpcy5oYXNTZWxlY3Rpb24gPSB2YWx1ZS5zb21lKHYgPT4gdik7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInNlbGVjdGFibGUtdGFibGUtdG9vbGJhclwiXHJcbiAgICAgKm5nSWY9XCJoYXNTZWxlY3Rpb24gJiYgc2VsZWN0aW9uVG9vbGJhclRlbXBsYXRlXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNlbGVjdGlvblRvb2xiYXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuPGRpdiBpZD1cInt7aWR9fS1zY3JvbGwtY29udGFpbmVyXCIgXHJcbiAgICAgY2xhc3M9XCJ0YWJsZS1zY3JvbGwtY29udGFpbmVyXCI+XHJcbiAgPHRhYmxlIGNsYXNzPVwibWFpbi10YWJsZVwiXHJcbiAgICAgICAgIGlkPVwie3tpZH19XCJcclxuICAgICAgICAgW2VjUmVzaXphYmxlVGFibGVdPVwicmVzaXphYmxlXCJcclxuICAgICAgICAgW2NvbnRhaW5lckVsXT1cImVsXCJcclxuICAgICAgICAgW3NvcnRhYmxlVGFibGVdPVwic29ydGFibGVcIlxyXG4gICAgICAgICBbcmVzaXphYmxlQ29sdW1uc109XCJyZXNpemFibGVDb2x1bW5zXCI+XHJcbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgPC90YWJsZT5cclxuPC9kaXY+Il19
@@ -111,4 +111,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
111
111
  type: ViewChild,
112
112
  args: ['timedToast', { static: false, read: ElementRef }]
113
113
  }] } });
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Rlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS90b2FzdC90b2FzdGVyL3RvYXN0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvdG9hc3QvdG9hc3Rlci90b2FzdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBUzNDLE1BQU0sT0FBTyxnQkFBZ0I7SUFVM0IsWUFDVSxZQUEwQixFQUMxQixnQkFBa0M7UUFEbEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQVJyQywyQkFBc0IsR0FBVyxDQUFDLENBQUM7UUFHbEMsa0JBQWEsR0FBZ0IsRUFBRSxDQUFDO1FBQ2hDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBS3BDLENBQUM7SUFFTCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDekUsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUssRUFBRTtnQkFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNCLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO2dCQUNw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Q0FBQztJQUNMLENBQUM7OzZHQTNHVSxnQkFBZ0I7aUdBQWhCLGdCQUFnQix5SUFLcUIsVUFBVSw2QkNoQjVELDRVQVFXOzJGREdFLGdCQUFnQjtrQkFKNUIsU0FBUzsrQkFDRSxZQUFZO2tJQVF3QyxZQUFZO3NCQUF6RSxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVGVsZW1ldHJ5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdGVsZW1ldHJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdEV2ZW50LCBUb2FzdEl0ZW0gfSBmcm9tICcuLi90b2FzdC10eXBlcyc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uL3RvYXN0LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlYy10b2FzdGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdG9hc3Rlci5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRvYXN0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIHB1YmxpYyBjdXJyZW50VGltZWRUb2FzdD86IFRvYXN0SXRlbTtcclxuICBwdWJsaWMgY3VycmVudERpc21pc3NpYmxlVG9hc3Q/OiBUb2FzdEl0ZW07XHJcbiAgcHVibGljIGRpc21pc3NpYmxlVG9hc3RCb3R0b206IG51bWJlciA9IDA7XHJcbiAgQFZpZXdDaGlsZCgndGltZWRUb2FzdCcsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogRWxlbWVudFJlZiB9KSB0aW1lZFRvYXN0RWw/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBcclxuICBwcml2YXRlIHBlbmRpbmdUb2FzdHM6IFRvYXN0SXRlbVtdID0gW107XHJcbiAgcHJpdmF0ZSBkZXN0cm95ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRlbGVtZXRyeVNlcnZpY2U6IFRlbGVtZXRyeVNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudG9hc3RTZXJ2aWNlLmV2ZW50cy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCkpLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgIGlmIChldmVudC5hY3Rpb24gPT0gJ2FkZCcpIHtcclxuICAgICAgICB0aGlzLmFkZFRvYXN0KGV2ZW50LnRvYXN0KTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURpc21pc3NpYmxlVG9hc3RCb3R0b20oKTtcclxuICAgICAgICB0aGlzLnRyYWNrRXZlbnQoZXZlbnQpO1xyXG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LmFjdGlvbiA9PSAncmVtb3ZlJyAmJiBldmVudC50b2FzdCAhPT0gdGhpcy5jdXJyZW50RGlzbWlzc2libGVUb2FzdCAmJiBldmVudC50b2FzdCAhPT0gdGhpcy5jdXJyZW50VGltZWRUb2FzdCkge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlUGVuZGluZ1RvYXN0KGV2ZW50LnRvYXN0KTtcclxuICAgICAgICB0aGlzLnRyYWNrRXZlbnQoZXZlbnQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95ZWQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95ZWQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVWaXNpYmxlVG9hc3QoZXZlbnQ6IFRvYXN0RXZlbnQpIHtcclxuICAgIGlmIChldmVudC50b2FzdC5kaXNtaXNzaWJsZSkge1xyXG4gICAgICB0aGlzLmN1cnJlbnREaXNtaXNzaWJsZVRvYXN0ID0gdGhpcy5nZXROZXh0VG9hc3QodHJ1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRUaW1lZFRvYXN0ID0gdGhpcy5nZXROZXh0VG9hc3QoZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudXBkYXRlRGlzbWlzc2libGVUb2FzdEJvdHRvbSgpO1xyXG4gICAgdGhpcy50cmFja0V2ZW50KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkVG9hc3QodG9hc3Q6IFRvYXN0SXRlbSkge1xyXG4gICAgaWYgKCh0b2FzdC5kaXNtaXNzaWJsZSAmJiB0aGlzLmN1cnJlbnREaXNtaXNzaWJsZVRvYXN0KSB8fCAoIXRvYXN0LmRpc21pc3NpYmxlICYmIHRoaXMuY3VycmVudFRpbWVkVG9hc3QpKSB7XHJcbiAgICAgIHRoaXMuYWRkUGVuZGluZ1RvYXN0KHRvYXN0KTtcclxuICAgIH0gZWxzZSBpZiAodG9hc3QuZGlzbWlzc2libGUpIHtcclxuICAgICAgdGhpcy5jdXJyZW50RGlzbWlzc2libGVUb2FzdCA9IHRvYXN0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50VGltZWRUb2FzdCA9IHRvYXN0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIFJldHVybnMgdGhlIG5leHQgcGVuZGluZyB0b2FzdCBvZiB0aGUgc3BlY2lmaWVkIHR5cGUgYW5kIHJlbW92ZXMgaXQgZnJvbSB0aGUgbGlzdCBvZiBwZW5kaW5nIHRvYXN0cy4gKi9cclxuICBwcml2YXRlIGdldE5leHRUb2FzdChkaXNtaXNzaWJsZTogYm9vbGVhbik6IFRvYXN0SXRlbSB8IHVuZGVmaW5lZCB7XHJcbiAgICBjb25zdCB0b2FzdCA9IHRoaXMucGVuZGluZ1RvYXN0cy5maW5kKHQgPT4gdC5kaXNtaXNzaWJsZSA9PT0gZGlzbWlzc2libGUpO1xyXG4gICAgaWYgKHRvYXN0KSB7XHJcbiAgICAgIHRoaXMucmVtb3ZlUGVuZGluZ1RvYXN0KHRvYXN0KTtcclxuICAgIH1cclxuICAgIHJldHVybiB0b2FzdDtcclxuICB9XHJcblxyXG4gIC8qKiBBZGQgYSB0b2FzdCB0byB0aGUgbGlzdCBvZiBwZW5kaW5nIHRvYXN0cyAqL1xyXG4gIHByaXZhdGUgYWRkUGVuZGluZ1RvYXN0KHRvYXN0OiBUb2FzdEl0ZW0pIHtcclxuICAgIHRoaXMucGVuZGluZ1RvYXN0cy5wdXNoKHRvYXN0KTtcclxuICB9XHJcblxyXG4gIC8qKiBSZW1vdmVzIHRoZSBzcGVjaWZpZWQgdG9hc3QgZnJvbSB0aGUgbGlzdCBvZiBwZW5kaW5nIHRvYXN0cyAqL1xyXG4gIHByaXZhdGUgcmVtb3ZlUGVuZGluZ1RvYXN0KHRvYXN0OiBUb2FzdEl0ZW0pIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wZW5kaW5nVG9hc3RzLmluZGV4T2YodG9hc3QpO1xyXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgdGhpcy5wZW5kaW5nVG9hc3RzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogXHJcbiAgICogSWYgdGhlIHRpbWVkIHRvYXN0IGlzIHByZXNlbnQsIHNldHMgdGhlIGJvdHRvbSBoZWlnaHQgb2YgdGhlIGRpc21pc3NpYmxlIHRvYXN0IHRvXHJcbiAgICogdGhlIGN1cnJlbnQgaGVpZ2h0IG9mIHRoZSB0aW1lZCB0b2FzdCBwbHVzIC41cmVtIGZvciBzcGFjaW5nLlxyXG4gICAqIFJldHVybnMgMCBpZiB0aGVyZSBpc24ndCBhIHZpc2libGUgdGltZWQgdG9hc3QuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1cGRhdGVEaXNtaXNzaWJsZVRvYXN0Qm90dG9tKCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFRpbWVkVG9hc3QgJiYgdGhpcy50aW1lZFRvYXN0RWwpIHtcclxuICAgICAgdGhpcy5kaXNtaXNzaWJsZVRvYXN0Qm90dG9tID0gKHRoaXMudGltZWRUb2FzdEVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgOCkgLyAxNjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGlzbWlzc2libGVUb2FzdEJvdHRvbSA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRyYWNrRXZlbnQoZXZlbnQ6IFRvYXN0RXZlbnQpIHtcclxuICAgIGNvbnN0IGRpc21pc3NpYmxlID0gdGhpcy5wZW5kaW5nVG9hc3RzLmZpbHRlcih0ID0+IHQuZGlzbWlzc2libGUpO1xyXG4gICAgY29uc3QgdHJhbnNpZW50ID0gdGhpcy5wZW5kaW5nVG9hc3RzLmZpbHRlcih0ID0+ICF0LmRpc21pc3NpYmxlKTtcclxuXHJcbiAgICB0aGlzLnRlbGVtZXRyeVNlcnZpY2UudHJhY2tFdmVudChgJHtldmVudC5hY3Rpb259IHRvYXN0YCwge1xyXG4gICAgICBhY3Rpb246IGV2ZW50LmFjdGlvbixcclxuICAgICAgc291cmNlOiBldmVudC5zb3VyY2UsXHJcbiAgICAgIGhhc0Rpc21pc3NpYmxlUGVuZGluZzogZGlzbWlzc2libGUubGVuZ3RoID4gMCA/ICd5ZXMnIDogJ25vJyxcclxuICAgICAgZGlzbWlzc2libGVQZW5kaW5nTGVuZ3RoOiBgJHtkaXNtaXNzaWJsZS5sZW5ndGh9YCxcclxuICAgICAgaGFzVHJhbnNpZW50UGVuZGluZzogdHJhbnNpZW50Lmxlbmd0aCA+IDAgPyAneWVzJyA6ICdubycsXHJcbiAgICAgIHRyYW5zaWVudFBlbmRpbmdMZW5ndGg6IGAke3RyYW5zaWVudC5sZW5ndGh9YCxcclxuICAgICAgdG9hc3RJZDogZXZlbnQudG9hc3QuaWQgPz8gJycsXHJcbiAgICAgIHRvYXN0VHlwZTogZXZlbnQudG9hc3QudHlwZSxcclxuICAgICAgdG9hc3RNZXNzYWdlOiBldmVudC50b2FzdC5tZXNzYWdlLFxyXG4gICAgICB0b2FzdERpc21pc3NpYmxlOiBgJHtldmVudC50b2FzdC5kaXNtaXNzaWJsZX1gLFxyXG4gICAgICB0b2FzdEljb246IGV2ZW50LnRvYXN0Lmljb24gPz8gJycsXHJcbiAgICAgIHRvYXN0QWN0aW9uOiBldmVudC50b2FzdC5hY3Rpb25MYWJlbCA/PyAnJyxcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZWMtdG9hc3QgW3RvYXN0SXRlbV09XCJjdXJyZW50RGlzbWlzc2libGVUb2FzdFwiXHJcbiAgICAgICAgICBbc3R5bGUuLS10b2FzdC1ib3R0b20ucmVtXT1cImRpc21pc3NpYmxlVG9hc3RCb3R0b21cIlxyXG4gICAgICAgICAgKGNsb3NlZCk9XCJ1cGRhdGVWaXNpYmxlVG9hc3QoJGV2ZW50KVwiPlxyXG48L2VjLXRvYXN0PlxyXG5cclxuPGVjLXRvYXN0ICN0aW1lZFRvYXN0XHJcbiAgICAgICAgICBbdG9hc3RJdGVtXT1cImN1cnJlbnRUaW1lZFRvYXN0XCJcclxuICAgICAgICAgIChjbG9zZWQpPVwidXBkYXRlVmlzaWJsZVRvYXN0KCRldmVudClcIj5cclxuPC9lYy10b2FzdD4iXX0=
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Rlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS90b2FzdC90b2FzdGVyL3RvYXN0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvdG9hc3QvdG9hc3Rlci90b2FzdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBUzNDLE1BQU0sT0FBTyxnQkFBZ0I7SUFVM0IsWUFDVSxZQUEwQixFQUMxQixnQkFBa0M7UUFEbEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQVJyQywyQkFBc0IsR0FBVyxDQUFDLENBQUM7UUFHbEMsa0JBQWEsR0FBZ0IsRUFBRSxDQUFDO1FBQ2hDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBSzlCLENBQUM7SUFFTCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDekUsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUssRUFBRTtnQkFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNCLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO2dCQUNw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Q0FBQztJQUNMLENBQUM7OzZHQTNHVSxnQkFBZ0I7aUdBQWhCLGdCQUFnQix5SUFLcUIsVUFBVSw2QkNoQjVELDRVQVFXOzJGREdFLGdCQUFnQjtrQkFKNUIsU0FBUzsrQkFDRSxZQUFZO2tJQVF3QyxZQUFZO3NCQUF6RSxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVGVsZW1ldHJ5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdGVsZW1ldHJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdEV2ZW50LCBUb2FzdEl0ZW0gfSBmcm9tICcuLi90b2FzdC10eXBlcyc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uL3RvYXN0LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlYy10b2FzdGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdG9hc3Rlci5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRvYXN0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIHB1YmxpYyBjdXJyZW50VGltZWRUb2FzdD86IFRvYXN0SXRlbTtcclxuICBwdWJsaWMgY3VycmVudERpc21pc3NpYmxlVG9hc3Q/OiBUb2FzdEl0ZW07XHJcbiAgcHVibGljIGRpc21pc3NpYmxlVG9hc3RCb3R0b206IG51bWJlciA9IDA7XHJcbiAgQFZpZXdDaGlsZCgndGltZWRUb2FzdCcsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogRWxlbWVudFJlZiB9KSB0aW1lZFRvYXN0RWw/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBcclxuICBwcml2YXRlIHBlbmRpbmdUb2FzdHM6IFRvYXN0SXRlbVtdID0gW107XHJcbiAgcHJpdmF0ZSBkZXN0cm95ZWQgPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRlbGVtZXRyeVNlcnZpY2U6IFRlbGVtZXRyeVNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudG9hc3RTZXJ2aWNlLmV2ZW50cy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCkpLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgIGlmIChldmVudC5hY3Rpb24gPT0gJ2FkZCcpIHtcclxuICAgICAgICB0aGlzLmFkZFRvYXN0KGV2ZW50LnRvYXN0KTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURpc21pc3NpYmxlVG9hc3RCb3R0b20oKTtcclxuICAgICAgICB0aGlzLnRyYWNrRXZlbnQoZXZlbnQpO1xyXG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LmFjdGlvbiA9PSAncmVtb3ZlJyAmJiBldmVudC50b2FzdCAhPT0gdGhpcy5jdXJyZW50RGlzbWlzc2libGVUb2FzdCAmJiBldmVudC50b2FzdCAhPT0gdGhpcy5jdXJyZW50VGltZWRUb2FzdCkge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlUGVuZGluZ1RvYXN0KGV2ZW50LnRvYXN0KTtcclxuICAgICAgICB0aGlzLnRyYWNrRXZlbnQoZXZlbnQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95ZWQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95ZWQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVWaXNpYmxlVG9hc3QoZXZlbnQ6IFRvYXN0RXZlbnQpIHtcclxuICAgIGlmIChldmVudC50b2FzdC5kaXNtaXNzaWJsZSkge1xyXG4gICAgICB0aGlzLmN1cnJlbnREaXNtaXNzaWJsZVRvYXN0ID0gdGhpcy5nZXROZXh0VG9hc3QodHJ1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRUaW1lZFRvYXN0ID0gdGhpcy5nZXROZXh0VG9hc3QoZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudXBkYXRlRGlzbWlzc2libGVUb2FzdEJvdHRvbSgpO1xyXG4gICAgdGhpcy50cmFja0V2ZW50KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkVG9hc3QodG9hc3Q6IFRvYXN0SXRlbSkge1xyXG4gICAgaWYgKCh0b2FzdC5kaXNtaXNzaWJsZSAmJiB0aGlzLmN1cnJlbnREaXNtaXNzaWJsZVRvYXN0KSB8fCAoIXRvYXN0LmRpc21pc3NpYmxlICYmIHRoaXMuY3VycmVudFRpbWVkVG9hc3QpKSB7XHJcbiAgICAgIHRoaXMuYWRkUGVuZGluZ1RvYXN0KHRvYXN0KTtcclxuICAgIH0gZWxzZSBpZiAodG9hc3QuZGlzbWlzc2libGUpIHtcclxuICAgICAgdGhpcy5jdXJyZW50RGlzbWlzc2libGVUb2FzdCA9IHRvYXN0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50VGltZWRUb2FzdCA9IHRvYXN0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIFJldHVybnMgdGhlIG5leHQgcGVuZGluZyB0b2FzdCBvZiB0aGUgc3BlY2lmaWVkIHR5cGUgYW5kIHJlbW92ZXMgaXQgZnJvbSB0aGUgbGlzdCBvZiBwZW5kaW5nIHRvYXN0cy4gKi9cclxuICBwcml2YXRlIGdldE5leHRUb2FzdChkaXNtaXNzaWJsZTogYm9vbGVhbik6IFRvYXN0SXRlbSB8IHVuZGVmaW5lZCB7XHJcbiAgICBjb25zdCB0b2FzdCA9IHRoaXMucGVuZGluZ1RvYXN0cy5maW5kKHQgPT4gdC5kaXNtaXNzaWJsZSA9PT0gZGlzbWlzc2libGUpO1xyXG4gICAgaWYgKHRvYXN0KSB7XHJcbiAgICAgIHRoaXMucmVtb3ZlUGVuZGluZ1RvYXN0KHRvYXN0KTtcclxuICAgIH1cclxuICAgIHJldHVybiB0b2FzdDtcclxuICB9XHJcblxyXG4gIC8qKiBBZGQgYSB0b2FzdCB0byB0aGUgbGlzdCBvZiBwZW5kaW5nIHRvYXN0cyAqL1xyXG4gIHByaXZhdGUgYWRkUGVuZGluZ1RvYXN0KHRvYXN0OiBUb2FzdEl0ZW0pIHtcclxuICAgIHRoaXMucGVuZGluZ1RvYXN0cy5wdXNoKHRvYXN0KTtcclxuICB9XHJcblxyXG4gIC8qKiBSZW1vdmVzIHRoZSBzcGVjaWZpZWQgdG9hc3QgZnJvbSB0aGUgbGlzdCBvZiBwZW5kaW5nIHRvYXN0cyAqL1xyXG4gIHByaXZhdGUgcmVtb3ZlUGVuZGluZ1RvYXN0KHRvYXN0OiBUb2FzdEl0ZW0pIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wZW5kaW5nVG9hc3RzLmluZGV4T2YodG9hc3QpO1xyXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgdGhpcy5wZW5kaW5nVG9hc3RzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogXHJcbiAgICogSWYgdGhlIHRpbWVkIHRvYXN0IGlzIHByZXNlbnQsIHNldHMgdGhlIGJvdHRvbSBoZWlnaHQgb2YgdGhlIGRpc21pc3NpYmxlIHRvYXN0IHRvXHJcbiAgICogdGhlIGN1cnJlbnQgaGVpZ2h0IG9mIHRoZSB0aW1lZCB0b2FzdCBwbHVzIC41cmVtIGZvciBzcGFjaW5nLlxyXG4gICAqIFJldHVybnMgMCBpZiB0aGVyZSBpc24ndCBhIHZpc2libGUgdGltZWQgdG9hc3QuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1cGRhdGVEaXNtaXNzaWJsZVRvYXN0Qm90dG9tKCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFRpbWVkVG9hc3QgJiYgdGhpcy50aW1lZFRvYXN0RWwpIHtcclxuICAgICAgdGhpcy5kaXNtaXNzaWJsZVRvYXN0Qm90dG9tID0gKHRoaXMudGltZWRUb2FzdEVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgOCkgLyAxNjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGlzbWlzc2libGVUb2FzdEJvdHRvbSA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRyYWNrRXZlbnQoZXZlbnQ6IFRvYXN0RXZlbnQpIHtcclxuICAgIGNvbnN0IGRpc21pc3NpYmxlID0gdGhpcy5wZW5kaW5nVG9hc3RzLmZpbHRlcih0ID0+IHQuZGlzbWlzc2libGUpO1xyXG4gICAgY29uc3QgdHJhbnNpZW50ID0gdGhpcy5wZW5kaW5nVG9hc3RzLmZpbHRlcih0ID0+ICF0LmRpc21pc3NpYmxlKTtcclxuXHJcbiAgICB0aGlzLnRlbGVtZXRyeVNlcnZpY2UudHJhY2tFdmVudChgJHtldmVudC5hY3Rpb259IHRvYXN0YCwge1xyXG4gICAgICBhY3Rpb246IGV2ZW50LmFjdGlvbixcclxuICAgICAgc291cmNlOiBldmVudC5zb3VyY2UsXHJcbiAgICAgIGhhc0Rpc21pc3NpYmxlUGVuZGluZzogZGlzbWlzc2libGUubGVuZ3RoID4gMCA/ICd5ZXMnIDogJ25vJyxcclxuICAgICAgZGlzbWlzc2libGVQZW5kaW5nTGVuZ3RoOiBgJHtkaXNtaXNzaWJsZS5sZW5ndGh9YCxcclxuICAgICAgaGFzVHJhbnNpZW50UGVuZGluZzogdHJhbnNpZW50Lmxlbmd0aCA+IDAgPyAneWVzJyA6ICdubycsXHJcbiAgICAgIHRyYW5zaWVudFBlbmRpbmdMZW5ndGg6IGAke3RyYW5zaWVudC5sZW5ndGh9YCxcclxuICAgICAgdG9hc3RJZDogZXZlbnQudG9hc3QuaWQgPz8gJycsXHJcbiAgICAgIHRvYXN0VHlwZTogZXZlbnQudG9hc3QudHlwZSxcclxuICAgICAgdG9hc3RNZXNzYWdlOiBldmVudC50b2FzdC5tZXNzYWdlLFxyXG4gICAgICB0b2FzdERpc21pc3NpYmxlOiBgJHtldmVudC50b2FzdC5kaXNtaXNzaWJsZX1gLFxyXG4gICAgICB0b2FzdEljb246IGV2ZW50LnRvYXN0Lmljb24gPz8gJycsXHJcbiAgICAgIHRvYXN0QWN0aW9uOiBldmVudC50b2FzdC5hY3Rpb25MYWJlbCA/PyAnJyxcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZWMtdG9hc3QgW3RvYXN0SXRlbV09XCJjdXJyZW50RGlzbWlzc2libGVUb2FzdFwiXHJcbiAgICAgICAgICBbc3R5bGUuLS10b2FzdC1ib3R0b20ucmVtXT1cImRpc21pc3NpYmxlVG9hc3RCb3R0b21cIlxyXG4gICAgICAgICAgKGNsb3NlZCk9XCJ1cGRhdGVWaXNpYmxlVG9hc3QoJGV2ZW50KVwiPlxyXG48L2VjLXRvYXN0PlxyXG5cclxuPGVjLXRvYXN0ICN0aW1lZFRvYXN0XHJcbiAgICAgICAgICBbdG9hc3RJdGVtXT1cImN1cnJlbnRUaW1lZFRvYXN0XCJcclxuICAgICAgICAgIChjbG9zZWQpPVwidXBkYXRlVmlzaWJsZVRvYXN0KCRldmVudClcIj5cclxuPC9lYy10b2FzdD4iXX0=
@@ -1,5 +1,5 @@
1
1
  import { Directive, HostListener, Input } from '@angular/core';
2
- import { of, Subject } from 'rxjs';
2
+ import { Subject, of } from 'rxjs';
3
3
  import { delay, switchMap, takeUntil } from 'rxjs/operators';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "./../tooltip/tooltip.service";
@@ -170,4 +170,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
170
170
  type: HostListener,
171
171
  args: ['mouseleave']
172
172
  }] } });
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS90b29sdGlwLWRpcmVjdGl2ZS90b29sdGlwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQWtDLE1BQU0sZUFBZSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFRN0QsTUFBTSxPQUFPLGdCQUFnQjtJQTJDM0IsWUFDVSxjQUE4QixFQUM5QixPQUFtQixFQUNuQixTQUFvQjtRQUZwQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBNUM5QixrRUFBa0U7UUFDbEUsc0NBQXNDO1FBQ3RCLGtCQUFhLEdBQW9CLFNBQVMsQ0FBQTtRQUUxRCxvRUFBb0U7UUFDcEQsZ0JBQVcsR0FBWSxTQUFTLENBQUM7UUFFakQsZ0VBQWdFO1FBQ2hFLDBCQUEwQjtRQUNWLHlCQUFvQixHQUFzQixTQUFTLENBQUM7UUFHcEUscUVBQXFFO1FBQ3JFLGtDQUFrQztRQUNsQixvQkFBZSxHQUFvQixZQUFZLENBQUM7UUFJaEUsZ0VBQWdFO1FBRWhFLGdCQUFnQjtRQUNSLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ2hDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ2hDLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVE1QyxtRUFBbUU7UUFDbkUsdUNBQXVDO1FBQy9CLG1CQUFjLEdBQW1CLEVBQUUsQ0FB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Vix1REFBdUQ7UUFDdkQsMkNBQTJDO1FBQzNDLGtDQUFrQztRQUNsQyxJQUFHLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZiw0Q0FBNEM7WUFDNUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztZQUV6QixJQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBQztnQkFDM0IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7YUFDN0I7U0FDRjtRQUVELGdFQUFnRTtRQUNoRSx3Q0FBd0M7UUFDeEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0Qix5RUFBeUU7UUFDekUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsMkRBQTJEO0lBQzNELHlDQUF5QztJQUN6QyxXQUFXO1FBQ1YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDOzs2R0EzTFUsZ0JBQWdCO2lHQUFoQixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFKNUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtpQkFDeEI7c0pBTWlCLGFBQWE7c0JBQTVCLEtBQUs7Z0JBR1UsV0FBVztzQkFBMUIsS0FBSztnQkFJVSxvQkFBb0I7c0JBQW5DLEtBQUs7Z0JBS1UsZUFBZTtzQkFBOUIsS0FBSztnQkFvRkMsV0FBVztzQkFEakIsWUFBWTt1QkFBQyxXQUFXO2dCQVFsQixPQUFPO3NCQURiLFlBQVk7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0LCBSZW5kZXJlcjIsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlbGF5LCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVG9vbHRpcENvbXBvbmVudCwgVG9vbHRpcE9wdGlvbnMsIFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJy4vLi4vdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvb2x0aXBTZXJ2aWNlIH0gZnJvbSAnLi8uLi90b29sdGlwL3Rvb2x0aXAuc2VydmljZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tlY1Rvb2x0aXBdJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFRvb2x0aXBEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAvL1Rvb2x0aXBDb25maWc6IHJlY2VpdmVzIGFsbCB0aGUgdG9vbHRpcCBvcHRpb25zIHRvIG92ZXJ3cml0ZSB0aGVcclxuICAvL2RlZmF1bHQgY29uZmlndXJhdGlvbiBvZiB0aGUgdG9vbHRpcFxyXG4gIEBJbnB1dCgpIHB1YmxpYyB0b29sdGlwQ29uZmlnPzogVG9vbHRpcE9wdGlvbnMgPSB1bmRlZmluZWRcclxuXHJcbiAgLy9Ub29sdGlwVGV4dDogcmVjZWl2ZXMgcGxhaW4gdGV4dCB0byBkaXNwbGF5IGluIHRoZSBkZWZhdWx0IHRvb2x0aXBcclxuICBASW5wdXQoKSBwdWJsaWMgdG9vbHRpcFRleHQ/OiBzdHJpbmcgPSB1bmRlZmluZWQ7IFxyXG5cclxuICAvL1Rvb2x0aXBDdXN0b21Db250ZW50OiByZWNlaXZlcyBhIHRlbXBsYXRlIHJlZmVyZW5jZSB0byBkaXNwbGF5XHJcbiAgLy9pbnRvIHRoZSB0b29sdGlwIGNvbnRlbnRcclxuICBASW5wdXQoKSBwdWJsaWMgdG9vbHRpcEN1c3RvbUNvbnRlbnQ/OiBUZW1wbGF0ZVJlZjxhbnk+ID0gdW5kZWZpbmVkO1xyXG4gIFxyXG4gIFxyXG4gIC8vVGhpcyBJbnB1dCB3aWxsIHJlbWFpbiBhcyBJbnB1dCBiZWNhdXNlIHRvb2x0aXBQb3NpdGlvbiBpcyBub3QgcGFydFxyXG4gIC8vb2YgVG9vbHRpcE9wdGlvbnMgdHlwZSBvZiBvYmplY3RcclxuICBASW5wdXQoKSBwdWJsaWMgdG9vbHRpcFBvc2l0aW9uOiBUb29sdGlwUG9zaXRpb24gPSBcInRvcC1jZW50ZXJcIjtcclxuXHJcblxyXG5cclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXHJcblxyXG4gIC8vRXZlbnRzIHJlbGF0ZWRcclxuICBwcml2YXRlIG1vdXNlT3ZlciA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBpbnRlcnJ1cHQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgaGlkZUNvbXBsZXRlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBjb250ZW50UmVjdDogRE9NUmVjdCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG5cclxuICAvL1JlZmVyZW5jZSB0byBUb29sdGlwQ29tcG9uZW50LCB3aWxsIGJlIGRlZmluZWQgYmVsb3cgaW4gdGhpcy5zaG93KClcclxuICBwcml2YXRlIHRvb2x0aXA/OiBUb29sdGlwQ29tcG9uZW50O1xyXG5cclxuICAvL09iamVjdCB3aXRoIHRoZSB0b29sdGlwIG9wdGlvbnMgYnVpbGRlZCB3aXRoIHRoZSBJbnB1dCBwYXJhbWV0ZXJzXHJcbiAgLy9hbmQgdXNlIGl0IGluIHRvb2x0aXBTZXJ2aWNlIC0gc2hvdygpXHJcbiAgcHJpdmF0ZSB0b29sdGlwT3B0aW9ucz86VG9vbHRpcE9wdGlvbnMgPSB7fVxyXG4gIFxyXG5cclxuICAvKipTZXQgd2hlbiB3ZSBzaG93IGEgdG9vbHRpcCwgdG8gYWxsb3cgdXMgdG8gdW5zdWJzY3JpYmUgdG8gbW91c2UgbW92ZSB3aGVuIGhpZGUgZmlyZXMuXHJcbiAgICogaWYgd2UgbmV2ZXIgc2hvd2VkIHRoZSB0b29sdGlwIHRoaXMgd2lsbCByZW1haW4gbnVsbCBhbmQgd2Ugd29uJ3QgaGF2ZSBhbiBldmVudCB0byB1bnN1YnNjcmliZSB0b1xyXG4gICAqL1xyXG4gIHByaXZhdGUgbW91c2VNb3ZlVW5zdWJzY3JpYmU6ICgoKT0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB0b29sdGlwU2VydmljZTogVG9vbHRpcFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsIFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjI6IFJlbmRlcmVyMlxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvL2NoZWNrSW5wdXRzVmFsdWUoKTogaWYgdGhlcmUgaXMgYW4gZXJyb3IgaXQgd2lsbCBwcmV2ZW50IHRvIGV4ZWN1dGVcclxuICAgIC8vYW55IGNvZGUgcmVsYXRlZCB3aXRoIHRoZSB0b29sdGlwIHNldHVwXHJcbiAgICBpZih0aGlzLmNoZWNrSW5wdXRzVmFsdWUoKSkge1xyXG4gICAgICAvL0NyZWF0ZSB0aGUgb2JqZWN0IHdpdGggdGhlIHRvb2x0aXAgb3B0aW9ucyBwcm92aWRlZCBhcyBASW5wdXRzXHJcbiAgICAgIHRoaXMuY3JlYXRlVG9vbHRpcE9wdGlvbnMoKTtcclxuXHJcbiAgICAgIC8vTW91c2VPdmVyIGZsb3c6IHN0YXJ0IHRoZSBwcm9jZXNzIG9mIHNob3dpbmcgdGhlIHRvb2x0aXBcclxuICAgICAgLy91bnRpbCB0aGUgbW91c2UgbGVhdmVzIHRoZSBhbmNob3IgZWxlbWVudCB3aXRoIHRoaXMuaW50ZXJydXB0XHJcbiAgICAgIHRoaXMubW91c2VPdmVyXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcCh2ID0+XHJcbiAgICAgICAgICBvZih2KS5waXBlKFxyXG4gICAgICAgICAgICBkZWxheSgzMDApLCAvL2RlbGF5cyB0aGUgdGltZSBwcmV2aW91cyBvZiBzaG93aW5nIHRoZSB0b29sdGlwXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmludGVycnVwdClcclxuICAgICAgICAgIClcclxuICAgICAgICApXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNob3coKSk7IC8vQ2FsbHMgdGhlIGZ1bmN0aW9uIHJlc3BvbnNhYmxlIG9mIHVzaW5nIHRoZSB0b29sdGlwU2VydmljZVxyXG4gIFxyXG4gICAgICAvL01vdXNlIGxlYXZlIGZsb3c6IHN0YXJ0IHRoZSBwcm9jZXNzIG9mIHJlbW92aW5nIHRoZSB0b29sdGlwIHdoZW4gdGhlIG1vdXNlIGlzIGF3YXkgb2YgdGhlIGFuY2hvciBlbGVtZW50XHJcbiAgICAgIHRoaXMuaW50ZXJydXB0LnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKHYgPT4gXHJcbiAgICAgICAgICBvZih2KS5waXBlKFxyXG4gICAgICAgICAgICBkZWxheSg1MCksXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmhpZGVDb21wbGV0ZWQpXHJcbiAgICAgICAgICApKVxyXG4gICAgICApLnN1YnNjcmliZSgoKSA9PiB0aGlzLmhpZGUoKSk7IC8vaGlkZSB0aGUgdG9vbHRpcCBhbmQgdHJpZ2dlcnMgdGhlIGNvbXBsZXRlZCBjeWNsZSBmbGFnIHRoaXMuaGlkZUNvbXBsZXRlZFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcignVGhlcmUgYXJlIHRvbyBtYW55IHBhcmFtZXRlcnMgb3Igbm9uZSBwYXJhbWV0ZXIgdG8gY29uZmlnIHRoZSB0b29sdGlwIG9wdGlvbnMnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKkRldGVjdHMgd2hlcmUgdGhlIG1vdXNlIGlzIHRvIHRyaWdnZXIgdGhlIGxlYXZlL2hpZGUgcHJvY2Vzc1xyXG4gICAqIFRoaXMgaXMgYSBiYWNrc3RvcCBwcm90ZWN0aW9uIGFnYWluc3QgdXMgbWlzc2luZyB0aGUgbW91c2VsZWF2ZSBldmVudCBhbmQgbGVhdmluZyBhIGhhbmdpbmcgY2hhZC5cclxuICAgKiBPbiBzb21lIGJyb3dzZXJzLCBhbmQgb24gc29tZSBhY3Rpb25zIChlc3BlY2lhbGx5IHNjcm9sbCkgdGhlIG1vdXNlTGVhdmUgc2VlbXMgdG8gbmV2ZXIgZmlyZSAqL1xyXG4gIHB1YmxpYyBvbk1vdXNlTW92ZShldmVudDpNb3VzZUV2ZW50KSB7XHJcbiAgICBsZXQgY2FsbENhbGxiYWNrID0gZmFsc2U7XHJcbiAgICBpZih0aGlzLmNvbnRlbnRSZWN0KSB7XHJcbiAgICAgIGNhbGxDYWxsYmFjayA9IHRoaXMudG9vbHRpcFNlcnZpY2Uub25Nb3ZlKGV2ZW50LCB0aGlzLmNvbnRlbnRSZWN0ISk7XHJcbiAgICAgIGlmKGNhbGxDYWxsYmFjaykge1xyXG4gICAgICAgIC8vdHJpZ2dlciBvbiBoaWRlIHByb2Nlc3NcclxuICAgICAgICB0aGlzLmludGVycnVwdC5uZXh0KCk7IFxyXG4gICAgICAgIC8vcmVzZXQgdGhlIGNvbnRlbnRSZWMgZm9yIGEgbmV3IHRvb2x0aXBcclxuICAgICAgICB0aGlzLmNvbnRlbnRSZWN0ID0gdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL1RyaWdnZXIgdGhlIHByb2Nlc3MgdG8gc2hvdyB0aGUgdG9vbHRpcFxyXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlb3ZlcicpXHJcbiAgcHVibGljIG9uTW91c2VPdmVyKCkge1xyXG4gICAgdGhpcy5tb3VzZU92ZXIubmV4dCgpO1xyXG4gIH1cclxuICBcclxuICAvL1RyaWdnZXIgdGhlIHByb2Nlc3MgdG8gaGlkZSBhbmQgbGF0ZXIgdGhlIHByb2Nlc3NcclxuICAvL3RvIG1hcmsgYXMgY29tcGxldGUgdGhlIGN5Y2xlIG9mIHNob3cgYW5kIGhpZGUgdGhlIHRvb2x0aXBcclxuICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJylcclxuICBwdWJsaWMgb25MZWF2ZSgpIHtcclxuICAgIHRoaXMuaW50ZXJydXB0Lm5leHQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tJbnB1dHNWYWx1ZSgpOmJvb2xlYW4ge1xyXG4gICAgbGV0IHBhcmFtZXRlcnNXaXRoVmFsdWUgPSAwO1xyXG4gICAgaWYodGhpcy50b29sdGlwVGV4dCkge1xyXG4gICAgICBwYXJhbWV0ZXJzV2l0aFZhbHVlID0gcGFyYW1ldGVyc1dpdGhWYWx1ZSArIDFcclxuICAgIH0gXHJcbiAgICBpZih0aGlzLnRvb2x0aXBDdXN0b21Db250ZW50KSB7XHJcbiAgICAgIHBhcmFtZXRlcnNXaXRoVmFsdWUgPSBwYXJhbWV0ZXJzV2l0aFZhbHVlICsgMVxyXG4gICAgfVxyXG4gICAgaWYodGhpcy50b29sdGlwQ29uZmlnKSB7XHJcbiAgICAgIHBhcmFtZXRlcnNXaXRoVmFsdWUgPSBwYXJhbWV0ZXJzV2l0aFZhbHVlICsgMVxyXG4gICAgfVxyXG4gICAgaWYocGFyYW1ldGVyc1dpdGhWYWx1ZSA9PT0gMSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogY3JlYXRlVG9vbHRpcE9wdGlvbnNcclxuICAgKiB3aWxsIG9ubHkgYmUgZXhlY3V0ZWQgYWZ0ZXIgbWFuYWdlRXJyb3IoKSB2ZXJpZmllcyBcclxuICAgKiBpZiB0aGUgcGFyYW1ldGVycyBhcmUgbm90IG92ZXJsYXBwaW5nIGVhY2ggb3RoZXJcclxuICAgKiBhbmQgaXQgd2lsbCBidWlsZCB0aGUgdG9vbHRpcE9wdGlvbnMgb2JqZWN0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjcmVhdGVUb29sdGlwT3B0aW9ucygpOiB2b2lkIHtcclxuICAgIHRoaXMudG9vbHRpcE9wdGlvbnMgPSB7XHJcbiAgICAgIGlkOiBgdG9vbHRpcF8ke3RoaXMudG9vbHRpcENvbmZpZz8uaWQ/IHRoaXMudG9vbHRpcENvbmZpZz8uaWQ6ICcnfWAsXHJcbiAgICAgIHRleHQ6IHRoaXMudG9vbHRpcENvbmZpZz8udGV4dCB8fCB0aGlzLnRvb2x0aXBUZXh0LFxyXG4gICAgICB0aXRsZTogdGhpcy50b29sdGlwQ29uZmlnPy50aXRsZSxcclxuICAgICAgc3VidGl0bGU6IHRoaXMudG9vbHRpcENvbmZpZz8uc3VidGl0bGUsXHJcbiAgICAgIGN1c3RvbUNvbnRlbnQ6IHRoaXMudG9vbHRpcENvbmZpZz8uY3VzdG9tQ29udGVudCB8fCB0aGlzLnRvb2x0aXBDdXN0b21Db250ZW50LFxyXG4gICAgICBkaXNtaXNzaWJsZTogdGhpcy50b29sdGlwQ29uZmlnPy5kaXNtaXNzaWJsZSB8fCBmYWxzZSxcclxuICAgICAgbWF4V2lkdGg6IHRoaXMudG9vbHRpcENvbmZpZz8ubWF4V2lkdGgsXHJcbiAgICAgIHdpZHRoOiB0aGlzLnRvb2x0aXBDb25maWc/LndpZHRoLFxyXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMudG9vbHRpcENvbmZpZz8uYmFja2dyb3VuZENvbG9yLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIHNob3coKTp2b2lkIHtcclxuICAgIC8vUmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IHdoZXJlIHRvIHRvb2x0aXAgaXMgYXR0YWNoZWRcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuICAgIC8vY29udGVudFJlY3Qgd2lsbCBiZSBhc3Npbmcgb25seSBhZnRlciBzaG93aW5nIGEgdG9vbHRpcC9wb3BvdmVyIGFuZCBpdCB3aWxsIGJlXHJcbiAgICAvL3Jlc2V0IGFmdGVyIGhpZGUgdGhlIHNhbWUgdG9vbHRpcC9wb3BvdmVyXHJcbiAgICB0aGlzLmNvbnRlbnRSZWN0ID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAvL3Rvb2x0aXBQb3NpdGlvbiBpcyBuZXZlciB1bmRlZmluZWQsIGRlZmF1bHQgdmFsdWUgPSBcInRvcC1jZW50ZXJcIlxyXG4gICAgaWYoIXRoaXMudG9vbHRpcCkge1xyXG4gICAgICB0aGlzLnRvb2x0aXAgPSB0aGlzLnRvb2x0aXBTZXJ2aWNlLnNob3coZWxlbWVudCBhcyBIVE1MRWxlbWVudCwgdGhpcy50b29sdGlwUG9zaXRpb24sIHRoaXMudG9vbHRpcE9wdGlvbnMpO1xyXG4gICAgICB0aGlzLm1vdXNlTW92ZVVuc3Vic2NyaWJlID0gdGhpcy5yZW5kZXJlcjIubGlzdGVuKGRvY3VtZW50LCAnbW91c2Vtb3ZlJywgdGhpcy5vbk1vdXNlTW92ZS5iaW5kKHRoaXMpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGlkZSgpOnZvaWQge1xyXG4gICAgLy9UaGVyZSBpcyBhIHRpbWluZyBpc3N1ZSBiZXR3ZWVuIHRoZSBzaG93IC0gaGlkZSB3aXRoIFxyXG4gICAgLy9saW5lciB0b29sdGlwIGVsZW1lbnRzLCBzbyB0aGUgYmVsb3cgbGluZVxyXG4gICAgLy9tYWtlcyBzdXJlIHRoZSBhcHAgZG9lc24ndCBicmVha1xyXG4gICAgaWYodGhpcy50b29sdGlwKSB7XHJcbiAgICAgIC8vQ2FsbCB0aGUgaGlkZSgpIGZyb20gdGhlIHRvb2x0aXAgY29tcG9uZW50XHJcbiAgICAgIHRoaXMudG9vbHRpcC5oaWRlKCk7XHJcbiAgICAgIHRoaXMudG9vbHRpcCA9IHVuZGVmaW5lZDtcclxuICAgICAgXHJcbiAgICAgIGlmKHRoaXMubW91c2VNb3ZlVW5zdWJzY3JpYmUpe1xyXG4gICAgICAgIHRoaXMubW91c2VNb3ZlVW5zdWJzY3JpYmUoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vSW50ZXJydXB0IHRoZSBmbG93IG9mIG1vdXNlb3ZlciB3aXRoIGEgZGVsYXkgYW5kIHRyaWdnZXJzIHRoZSBcclxuICAgIC8vZmxvdyB0byBoaWRlIHRoZSB0b29sdGlwIHdpdGggYSBkZWxheSBcclxuICAgIHRoaXMuaW50ZXJydXB0Lm5leHQoKTtcclxuICAgIC8vV29yayBhcyBhIGZsYWcgdG8gaW5kaWNhdGUgdGhlIGZsb3cgb2Ygc2hvdyBhbmQgaGlkZSBoYXMgYmVlbiBjb21wbGV0ZWRcclxuICAgIHRoaXMuaGlkZUNvbXBsZXRlZC5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICAvL1doZW4gdGhlIGVsZW1lbnQgd2hlcmUgdGhlIHRvb2x0aXAgaXMgYXR0YWNoZWQgZGlzYXBwZWFyc1xyXG4gIC8vdGhlIHRvb2x0aXAgc2hvdWxkIGJlIGRlc3Ryb3kgYXMgd2VsbCAgXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgIHRoaXMuaW50ZXJydXB0Lm5leHQoKTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS90b29sdGlwLWRpcmVjdGl2ZS90b29sdGlwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQWlDLE1BQU0sZUFBZSxDQUFDO0FBRzFHLE9BQU8sRUFBRSxPQUFPLEVBQUMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFNN0QsTUFBTSxPQUFPLGdCQUFnQjtJQTJDM0IsWUFDVSxjQUE4QixFQUM5QixPQUFtQixFQUNuQixTQUFvQjtRQUZwQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBNUM5QixrRUFBa0U7UUFDbEUsc0NBQXNDO1FBQ3RCLGtCQUFhLEdBQW9CLFNBQVMsQ0FBQTtRQUUxRCxvRUFBb0U7UUFDcEQsZ0JBQVcsR0FBWSxTQUFTLENBQUM7UUFFakQsZ0VBQWdFO1FBQ2hFLDBCQUEwQjtRQUNWLHlCQUFvQixHQUFzQixTQUFTLENBQUM7UUFHcEUscUVBQXFFO1FBQ3JFLGtDQUFrQztRQUNsQixvQkFBZSxHQUFvQixZQUFZLENBQUM7UUFJaEUsZ0VBQWdFO1FBRWhFLGdCQUFnQjtRQUNSLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQ2xDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzFCLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQVF0QyxtRUFBbUU7UUFDbkUsdUNBQXVDO1FBQy9CLG1CQUFjLEdBQW1CLEVBQUUsQ0FBQTtRQUczQzs7V0FFRztRQUNLLHlCQUFvQixHQUF1QixJQUFJLENBQUM7SUFNckQsQ0FBQztJQUVKLFFBQVE7UUFDTixxRUFBcUU7UUFDckUseUNBQXlDO1FBQ3pDLElBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUU7WUFDMUIsZ0VBQWdFO1lBQ2hFLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBRTVCLDBEQUEwRDtZQUMxRCwrREFBK0Q7WUFDL0QsSUFBSSxDQUFDLFNBQVM7aUJBQ2IsSUFBSSxDQUNILFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNaLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ1IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLGlEQUFpRDtZQUM3RCxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQixDQUNGLENBQ0Y7aUJBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsNERBQTREO1lBRTNGLDBHQUEwRztZQUMxRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDakIsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ1osRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDUixLQUFLLENBQUMsRUFBRSxDQUFDLEVBQ1QsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FDOUIsQ0FBQyxDQUNMLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsMkVBQTJFO1NBQzVHO2FBQU07WUFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLCtFQUErRSxDQUFDLENBQUM7U0FDaEc7SUFDSCxDQUFDO0lBRUQ7O3NHQUVrRztJQUMzRixXQUFXLENBQUMsS0FBZ0I7UUFDakMsSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNuQixZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFZLENBQUMsQ0FBQztZQUNwRSxJQUFHLFlBQVksRUFBRTtnQkFDZix5QkFBeUI7Z0JBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3RCLHdDQUF3QztnQkFDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7YUFDOUI7U0FDRjtJQUNILENBQUM7SUFFRCx5Q0FBeUM7SUFFbEMsV0FBVztRQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxtREFBbUQ7SUFDbkQsNERBQTREO0lBRXJELE9BQU87UUFDWixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsSUFBSSxtQkFBbUIsR0FBRyxDQUFDLENBQUM7UUFDNUIsSUFBRyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ25CLG1CQUFtQixHQUFHLG1CQUFtQixHQUFHLENBQUMsQ0FBQTtTQUM5QztRQUNELElBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQzVCLG1CQUFtQixHQUFHLG1CQUFtQixHQUFHLENBQUMsQ0FBQTtTQUM5QztRQUNELElBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNyQixtQkFBbUIsR0FBRyxtQkFBbUIsR0FBRyxDQUFDLENBQUE7U0FDOUM7UUFDRCxJQUFHLG1CQUFtQixLQUFLLENBQUMsRUFBRTtZQUM1QixPQUFPLElBQUksQ0FBQztTQUNiO2FBQU07WUFDTCxPQUFPLEtBQUssQ0FBQztTQUNkO0lBQ0gsQ0FBQztJQUNEOzs7OztPQUtHO0lBQ0ssb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxjQUFjLEdBQUc7WUFDcEIsRUFBRSxFQUFFLFdBQVcsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFBLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDbkUsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXO1lBQ2xELEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLEtBQUs7WUFDaEMsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUTtZQUN0QyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxhQUFhLElBQUksSUFBSSxDQUFDLG9CQUFvQjtZQUM3RSxXQUFXLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxXQUFXLElBQUksS0FBSztZQUNyRCxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxRQUFRO1lBQ3RDLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLEtBQUs7WUFDaEMsZUFBZSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsZUFBZTtTQUNyRCxDQUFDO0lBQ0osQ0FBQztJQUdPLElBQUk7UUFDVix1REFBdUQ7UUFDdkQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDM0MsZ0ZBQWdGO1FBQ2hGLDJDQUEyQztRQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDdEUsa0VBQWtFO1FBQ2xFLElBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBc0IsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMzRyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ3ZHO0lBQ0gsQ0FBQztJQUVPLElBQUk7UUFDVix1REFBdUQ7UUFDdkQsMkNBQTJDO1FBQzNDLGtDQUFrQztRQUNsQyxJQUFHLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZiw0Q0FBNEM7WUFDNUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztZQUV6QixJQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBQztnQkFDM0IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7YUFDN0I7U0FDRjtRQUVELGdFQUFnRTtRQUNoRSx3Q0FBd0M7UUFDeEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0Qix5RUFBeUU7UUFDekUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsMkRBQTJEO0lBQzNELHlDQUF5QztJQUN6QyxXQUFXO1FBQ1YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDOzs2R0EzTFUsZ0JBQWdCO2lHQUFoQixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFKNUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtpQkFDeEI7c0pBTWlCLGFBQWE7c0JBQTVCLEtBQUs7Z0JBR1UsV0FBVztzQkFBMUIsS0FBSztnQkFJVSxvQkFBb0I7c0JBQW5DLEtBQUs7Z0JBS1UsZUFBZTtzQkFBOUIsS0FBSztnQkFvRkMsV0FBVztzQkFEakIsWUFBWTt1QkFBQyxXQUFXO2dCQVFsQixPQUFPO3NCQURiLFlBQVk7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0LCBSZW5kZXJlcjIsIFRlbXBsYXRlUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVG9vbHRpcENvbXBvbmVudCwgVG9vbHRpcE9wdGlvbnMsIFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJy4vLi4vdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvb2x0aXBTZXJ2aWNlIH0gZnJvbSAnLi8uLi90b29sdGlwL3Rvb2x0aXAuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YmplY3Qsb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVsYXksIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbZWNUb29sdGlwXSdcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBUb29sdGlwRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgLy9Ub29sdGlwQ29uZmlnOiByZWNlaXZlcyBhbGwgdGhlIHRvb2x0aXAgb3B0aW9ucyB0byBvdmVyd3JpdGUgdGhlXHJcbiAgLy9kZWZhdWx0IGNvbmZpZ3VyYXRpb24gb2YgdGhlIHRvb2x0aXBcclxuICBASW5wdXQoKSBwdWJsaWMgdG9vbHRpcENvbmZpZz86IFRvb2x0aXBPcHRpb25zID0gdW5kZWZpbmVkXHJcblxyXG4gIC8vVG9vbHRpcFRleHQ6IHJlY2VpdmVzIHBsYWluIHRleHQgdG8gZGlzcGxheSBpbiB0aGUgZGVmYXVsdCB0b29sdGlwXHJcbiAgQElucHV0KCkgcHVibGljIHRvb2x0aXBUZXh0Pzogc3RyaW5nID0gdW5kZWZpbmVkOyBcclxuXHJcbiAgLy9Ub29sdGlwQ3VzdG9tQ29udGVudDogcmVjZWl2ZXMgYSB0ZW1wbGF0ZSByZWZlcmVuY2UgdG8gZGlzcGxheVxyXG4gIC8vaW50byB0aGUgdG9vbHRpcCBjb250ZW50XHJcbiAgQElucHV0KCkgcHVibGljIHRvb2x0aXBDdXN0b21Db250ZW50PzogVGVtcGxhdGVSZWY8YW55PiA9IHVuZGVmaW5lZDtcclxuICBcclxuICBcclxuICAvL1RoaXMgSW5wdXQgd2lsbCByZW1haW4gYXMgSW5wdXQgYmVjYXVzZSB0b29sdGlwUG9zaXRpb24gaXMgbm90IHBhcnRcclxuICAvL29mIFRvb2x0aXBPcHRpb25zIHR5cGUgb2Ygb2JqZWN0XHJcbiAgQElucHV0KCkgcHVibGljIHRvb2x0aXBQb3NpdGlvbjogVG9vbHRpcFBvc2l0aW9uID0gXCJ0b3AtY2VudGVyXCI7XHJcblxyXG5cclxuXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG5cclxuICAvL0V2ZW50cyByZWxhdGVkXHJcbiAgcHJpdmF0ZSBtb3VzZU92ZXIgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XHJcbiAgcHJpdmF0ZSBpbnRlcnJ1cHQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIHByaXZhdGUgaGlkZUNvbXBsZXRlZCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgcHJpdmF0ZSBjb250ZW50UmVjdDogRE9NUmVjdCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG5cclxuICAvL1JlZmVyZW5jZSB0byBUb29sdGlwQ29tcG9uZW50LCB3aWxsIGJlIGRlZmluZWQgYmVsb3cgaW4gdGhpcy5zaG93KClcclxuICBwcml2YXRlIHRvb2x0aXA/OiBUb29sdGlwQ29tcG9uZW50O1xyXG5cclxuICAvL09iamVjdCB3aXRoIHRoZSB0b29sdGlwIG9wdGlvbnMgYnVpbGRlZCB3aXRoIHRoZSBJbnB1dCBwYXJhbWV0ZXJzXHJcbiAgLy9hbmQgdXNlIGl0IGluIHRvb2x0aXBTZXJ2aWNlIC0gc2hvdygpXHJcbiAgcHJpdmF0ZSB0b29sdGlwT3B0aW9ucz86VG9vbHRpcE9wdGlvbnMgPSB7fVxyXG4gIFxyXG5cclxuICAvKipTZXQgd2hlbiB3ZSBzaG93IGEgdG9vbHRpcCwgdG8gYWxsb3cgdXMgdG8gdW5zdWJzY3JpYmUgdG8gbW91c2UgbW92ZSB3aGVuIGhpZGUgZmlyZXMuXHJcbiAgICogaWYgd2UgbmV2ZXIgc2hvd2VkIHRoZSB0b29sdGlwIHRoaXMgd2lsbCByZW1haW4gbnVsbCBhbmQgd2Ugd29uJ3QgaGF2ZSBhbiBldmVudCB0byB1bnN1YnNjcmliZSB0b1xyXG4gICAqL1xyXG4gIHByaXZhdGUgbW91c2VNb3ZlVW5zdWJzY3JpYmU6ICgoKT0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB0b29sdGlwU2VydmljZTogVG9vbHRpcFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsIFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjI6IFJlbmRlcmVyMlxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvL2NoZWNrSW5wdXRzVmFsdWUoKTogaWYgdGhlcmUgaXMgYW4gZXJyb3IgaXQgd2lsbCBwcmV2ZW50IHRvIGV4ZWN1dGVcclxuICAgIC8vYW55IGNvZGUgcmVsYXRlZCB3aXRoIHRoZSB0b29sdGlwIHNldHVwXHJcbiAgICBpZih0aGlzLmNoZWNrSW5wdXRzVmFsdWUoKSkge1xyXG4gICAgICAvL0NyZWF0ZSB0aGUgb2JqZWN0IHdpdGggdGhlIHRvb2x0aXAgb3B0aW9ucyBwcm92aWRlZCBhcyBASW5wdXRzXHJcbiAgICAgIHRoaXMuY3JlYXRlVG9vbHRpcE9wdGlvbnMoKTtcclxuXHJcbiAgICAgIC8vTW91c2VPdmVyIGZsb3c6IHN0YXJ0IHRoZSBwcm9jZXNzIG9mIHNob3dpbmcgdGhlIHRvb2x0aXBcclxuICAgICAgLy91bnRpbCB0aGUgbW91c2UgbGVhdmVzIHRoZSBhbmNob3IgZWxlbWVudCB3aXRoIHRoaXMuaW50ZXJydXB0XHJcbiAgICAgIHRoaXMubW91c2VPdmVyXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcCh2ID0+XHJcbiAgICAgICAgICBvZih2KS5waXBlKFxyXG4gICAgICAgICAgICBkZWxheSgzMDApLCAvL2RlbGF5cyB0aGUgdGltZSBwcmV2aW91cyBvZiBzaG93aW5nIHRoZSB0b29sdGlwXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmludGVycnVwdClcclxuICAgICAgICAgIClcclxuICAgICAgICApXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNob3coKSk7IC8vQ2FsbHMgdGhlIGZ1bmN0aW9uIHJlc3BvbnNhYmxlIG9mIHVzaW5nIHRoZSB0b29sdGlwU2VydmljZVxyXG4gIFxyXG4gICAgICAvL01vdXNlIGxlYXZlIGZsb3c6IHN0YXJ0IHRoZSBwcm9jZXNzIG9mIHJlbW92aW5nIHRoZSB0b29sdGlwIHdoZW4gdGhlIG1vdXNlIGlzIGF3YXkgb2YgdGhlIGFuY2hvciBlbGVtZW50XHJcbiAgICAgIHRoaXMuaW50ZXJydXB0LnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKHYgPT4gXHJcbiAgICAgICAgICBvZih2KS5waXBlKFxyXG4gICAgICAgICAgICBkZWxheSg1MCksXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmhpZGVDb21wbGV0ZWQpXHJcbiAgICAgICAgICApKVxyXG4gICAgICApLnN1YnNjcmliZSgoKSA9PiB0aGlzLmhpZGUoKSk7IC8vaGlkZSB0aGUgdG9vbHRpcCBhbmQgdHJpZ2dlcnMgdGhlIGNvbXBsZXRlZCBjeWNsZSBmbGFnIHRoaXMuaGlkZUNvbXBsZXRlZFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcignVGhlcmUgYXJlIHRvbyBtYW55IHBhcmFtZXRlcnMgb3Igbm9uZSBwYXJhbWV0ZXIgdG8gY29uZmlnIHRoZSB0b29sdGlwIG9wdGlvbnMnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKkRldGVjdHMgd2hlcmUgdGhlIG1vdXNlIGlzIHRvIHRyaWdnZXIgdGhlIGxlYXZlL2hpZGUgcHJvY2Vzc1xyXG4gICAqIFRoaXMgaXMgYSBiYWNrc3RvcCBwcm90ZWN0aW9uIGFnYWluc3QgdXMgbWlzc2luZyB0aGUgbW91c2VsZWF2ZSBldmVudCBhbmQgbGVhdmluZyBhIGhhbmdpbmcgY2hhZC5cclxuICAgKiBPbiBzb21lIGJyb3dzZXJzLCBhbmQgb24gc29tZSBhY3Rpb25zIChlc3BlY2lhbGx5IHNjcm9sbCkgdGhlIG1vdXNlTGVhdmUgc2VlbXMgdG8gbmV2ZXIgZmlyZSAqL1xyXG4gIHB1YmxpYyBvbk1vdXNlTW92ZShldmVudDpNb3VzZUV2ZW50KSB7XHJcbiAgICBsZXQgY2FsbENhbGxiYWNrID0gZmFsc2U7XHJcbiAgICBpZih0aGlzLmNvbnRlbnRSZWN0KSB7XHJcbiAgICAgIGNhbGxDYWxsYmFjayA9IHRoaXMudG9vbHRpcFNlcnZpY2Uub25Nb3ZlKGV2ZW50LCB0aGlzLmNvbnRlbnRSZWN0ISk7XHJcbiAgICAgIGlmKGNhbGxDYWxsYmFjaykge1xyXG4gICAgICAgIC8vdHJpZ2dlciBvbiBoaWRlIHByb2Nlc3NcclxuICAgICAgICB0aGlzLmludGVycnVwdC5uZXh0KCk7IFxyXG4gICAgICAgIC8vcmVzZXQgdGhlIGNvbnRlbnRSZWMgZm9yIGEgbmV3IHRvb2x0aXBcclxuICAgICAgICB0aGlzLmNvbnRlbnRSZWN0ID0gdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL1RyaWdnZXIgdGhlIHByb2Nlc3MgdG8gc2hvdyB0aGUgdG9vbHRpcFxyXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlb3ZlcicpXHJcbiAgcHVibGljIG9uTW91c2VPdmVyKCkge1xyXG4gICAgdGhpcy5tb3VzZU92ZXIubmV4dCgpO1xyXG4gIH1cclxuICBcclxuICAvL1RyaWdnZXIgdGhlIHByb2Nlc3MgdG8gaGlkZSBhbmQgbGF0ZXIgdGhlIHByb2Nlc3NcclxuICAvL3RvIG1hcmsgYXMgY29tcGxldGUgdGhlIGN5Y2xlIG9mIHNob3cgYW5kIGhpZGUgdGhlIHRvb2x0aXBcclxuICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJylcclxuICBwdWJsaWMgb25MZWF2ZSgpIHtcclxuICAgIHRoaXMuaW50ZXJydXB0Lm5leHQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tJbnB1dHNWYWx1ZSgpOmJvb2xlYW4ge1xyXG4gICAgbGV0IHBhcmFtZXRlcnNXaXRoVmFsdWUgPSAwO1xyXG4gICAgaWYodGhpcy50b29sdGlwVGV4dCkge1xyXG4gICAgICBwYXJhbWV0ZXJzV2l0aFZhbHVlID0gcGFyYW1ldGVyc1dpdGhWYWx1ZSArIDFcclxuICAgIH0gXHJcbiAgICBpZih0aGlzLnRvb2x0aXBDdXN0b21Db250ZW50KSB7XHJcbiAgICAgIHBhcmFtZXRlcnNXaXRoVmFsdWUgPSBwYXJhbWV0ZXJzV2l0aFZhbHVlICsgMVxyXG4gICAgfVxyXG4gICAgaWYodGhpcy50b29sdGlwQ29uZmlnKSB7XHJcbiAgICAgIHBhcmFtZXRlcnNXaXRoVmFsdWUgPSBwYXJhbWV0ZXJzV2l0aFZhbHVlICsgMVxyXG4gICAgfVxyXG4gICAgaWYocGFyYW1ldGVyc1dpdGhWYWx1ZSA9PT0gMSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogY3JlYXRlVG9vbHRpcE9wdGlvbnNcclxuICAgKiB3aWxsIG9ubHkgYmUgZXhlY3V0ZWQgYWZ0ZXIgbWFuYWdlRXJyb3IoKSB2ZXJpZmllcyBcclxuICAgKiBpZiB0aGUgcGFyYW1ldGVycyBhcmUgbm90IG92ZXJsYXBwaW5nIGVhY2ggb3RoZXJcclxuICAgKiBhbmQgaXQgd2lsbCBidWlsZCB0aGUgdG9vbHRpcE9wdGlvbnMgb2JqZWN0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjcmVhdGVUb29sdGlwT3B0aW9ucygpOiB2b2lkIHtcclxuICAgIHRoaXMudG9vbHRpcE9wdGlvbnMgPSB7XHJcbiAgICAgIGlkOiBgdG9vbHRpcF8ke3RoaXMudG9vbHRpcENvbmZpZz8uaWQ/IHRoaXMudG9vbHRpcENvbmZpZz8uaWQ6ICcnfWAsXHJcbiAgICAgIHRleHQ6IHRoaXMudG9vbHRpcENvbmZpZz8udGV4dCB8fCB0aGlzLnRvb2x0aXBUZXh0LFxyXG4gICAgICB0aXRsZTogdGhpcy50b29sdGlwQ29uZmlnPy50aXRsZSxcclxuICAgICAgc3VidGl0bGU6IHRoaXMudG9vbHRpcENvbmZpZz8uc3VidGl0bGUsXHJcbiAgICAgIGN1c3RvbUNvbnRlbnQ6IHRoaXMudG9vbHRpcENvbmZpZz8uY3VzdG9tQ29udGVudCB8fCB0aGlzLnRvb2x0aXBDdXN0b21Db250ZW50LFxyXG4gICAgICBkaXNtaXNzaWJsZTogdGhpcy50b29sdGlwQ29uZmlnPy5kaXNtaXNzaWJsZSB8fCBmYWxzZSxcclxuICAgICAgbWF4V2lkdGg6IHRoaXMudG9vbHRpcENvbmZpZz8ubWF4V2lkdGgsXHJcbiAgICAgIHdpZHRoOiB0aGlzLnRvb2x0aXBDb25maWc/LndpZHRoLFxyXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMudG9vbHRpcENvbmZpZz8uYmFja2dyb3VuZENvbG9yLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIHNob3coKTp2b2lkIHtcclxuICAgIC8vUmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IHdoZXJlIHRvIHRvb2x0aXAgaXMgYXR0YWNoZWRcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuICAgIC8vY29udGVudFJlY3Qgd2lsbCBiZSBhc3Npbmcgb25seSBhZnRlciBzaG93aW5nIGEgdG9vbHRpcC9wb3BvdmVyIGFuZCBpdCB3aWxsIGJlXHJcbiAgICAvL3Jlc2V0IGFmdGVyIGhpZGUgdGhlIHNhbWUgdG9vbHRpcC9wb3BvdmVyXHJcbiAgICB0aGlzLmNvbnRlbnRSZWN0ID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAvL3Rvb2x0aXBQb3NpdGlvbiBpcyBuZXZlciB1bmRlZmluZWQsIGRlZmF1bHQgdmFsdWUgPSBcInRvcC1jZW50ZXJcIlxyXG4gICAgaWYoIXRoaXMudG9vbHRpcCkge1xyXG4gICAgICB0aGlzLnRvb2x0aXAgPSB0aGlzLnRvb2x0aXBTZXJ2aWNlLnNob3coZWxlbWVudCBhcyBIVE1MRWxlbWVudCwgdGhpcy50b29sdGlwUG9zaXRpb24sIHRoaXMudG9vbHRpcE9wdGlvbnMpO1xyXG4gICAgICB0aGlzLm1vdXNlTW92ZVVuc3Vic2NyaWJlID0gdGhpcy5yZW5kZXJlcjIubGlzdGVuKGRvY3VtZW50LCAnbW91c2Vtb3ZlJywgdGhpcy5vbk1vdXNlTW92ZS5iaW5kKHRoaXMpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGlkZSgpOnZvaWQge1xyXG4gICAgLy9UaGVyZSBpcyBhIHRpbWluZyBpc3N1ZSBiZXR3ZWVuIHRoZSBzaG93IC0gaGlkZSB3aXRoIFxyXG4gICAgLy9saW5lciB0b29sdGlwIGVsZW1lbnRzLCBzbyB0aGUgYmVsb3cgbGluZVxyXG4gICAgLy9tYWtlcyBzdXJlIHRoZSBhcHAgZG9lc24ndCBicmVha1xyXG4gICAgaWYodGhpcy50b29sdGlwKSB7XHJcbiAgICAgIC8vQ2FsbCB0aGUgaGlkZSgpIGZyb20gdGhlIHRvb2x0aXAgY29tcG9uZW50XHJcbiAgICAgIHRoaXMudG9vbHRpcC5oaWRlKCk7XHJcbiAgICAgIHRoaXMudG9vbHRpcCA9IHVuZGVmaW5lZDtcclxuICAgICAgXHJcbiAgICAgIGlmKHRoaXMubW91c2VNb3ZlVW5zdWJzY3JpYmUpe1xyXG4gICAgICAgIHRoaXMubW91c2VNb3ZlVW5zdWJzY3JpYmUoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vSW50ZXJydXB0IHRoZSBmbG93IG9mIG1vdXNlb3ZlciB3aXRoIGEgZGVsYXkgYW5kIHRyaWdnZXJzIHRoZSBcclxuICAgIC8vZmxvdyB0byBoaWRlIHRoZSB0b29sdGlwIHdpdGggYSBkZWxheSBcclxuICAgIHRoaXMuaW50ZXJydXB0Lm5leHQoKTtcclxuICAgIC8vV29yayBhcyBhIGZsYWcgdG8gaW5kaWNhdGUgdGhlIGZsb3cgb2Ygc2hvdyBhbmQgaGlkZSBoYXMgYmVlbiBjb21wbGV0ZWRcclxuICAgIHRoaXMuaGlkZUNvbXBsZXRlZC5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICAvL1doZW4gdGhlIGVsZW1lbnQgd2hlcmUgdGhlIHRvb2x0aXAgaXMgYXR0YWNoZWQgZGlzYXBwZWFyc1xyXG4gIC8vdGhlIHRvb2x0aXAgc2hvdWxkIGJlIGRlc3Ryb3kgYXMgd2VsbCAgXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgIHRoaXMuaW50ZXJydXB0Lm5leHQoKTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==