@colijnit/transaction 12.1.186 → 12.1.188

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 (82) hide show
  1. package/bundles/colijnit-transaction.umd.js +545 -321
  2. package/bundles/colijnit-transaction.umd.js.map +1 -1
  3. package/colijnit-transaction.d.ts +177 -175
  4. package/colijnit-transaction.metadata.json +1 -1
  5. package/esm2015/colijnit-transaction.js +178 -176
  6. package/esm2015/lib/component/checkout/checkout.component.js +1 -2
  7. package/esm2015/lib/component/purchase-confirmation-lines/purchase-confirmation-lines.component.js +101 -59
  8. package/esm2015/lib/component/purchase-confirmation-lines/purchase-confirmation-lines.module.js +2 -2
  9. package/esm2015/lib/component/relation/relation-contact-details/relation-contact-details.component.js +16 -6
  10. package/esm2015/lib/component/transaction-button/transaction-button.component.js +2 -2
  11. package/esm2015/lib/component/transaction-button-bar/transaction-button-bar.component.js +1 -16
  12. package/esm2015/lib/component/transaction-confirmation-history/transaction-confirmation-history.component.js +8 -5
  13. package/esm2015/lib/component/transaction-internal/transaction-internal.component.js +91 -93
  14. package/esm2015/lib/component/transaction-line/transaction-base-line/transaction-base-line.component.js +6 -2
  15. package/esm2015/lib/component/transaction-line/transaction-line/transaction-line.component.js +4 -10
  16. package/esm2015/lib/component/transaction-line/transaction-purchase-order-line/transaction-purchase-order-line-base.component.js +5 -5
  17. package/esm2015/lib/component/transaction-line/transaction-purchase-order-line/transaction-purchase-order-line.component.js +21 -2
  18. package/esm2015/lib/component/transaction-line-purchase-confirmation/transaction-line-purchase-confirmation.component.js +73 -69
  19. package/esm2015/lib/component/transaction-line-side-panel/transaction-line-side-panel.component.js +9 -6
  20. package/esm2015/lib/component/transaction-line-side-panel-planning/transaction-line-side-panel-planning.component.js +69 -57
  21. package/esm2015/lib/component/transaction-lines/transaction-lines.component.js +4 -4
  22. package/esm2015/lib/component/transaction-lines-popup/transaction-lines-popup.component.js +17 -4
  23. package/esm2015/lib/component/transaction-lines-popup/transaction-lines-popup.module.js +4 -2
  24. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access/transaction-quick-access.module.js +4 -2
  25. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-order-confirmation/transaction-quick-access-order-confirmation.component.js +34 -30
  26. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-planning/transaction-quick-access-planning.component.js +67 -0
  27. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-planning/transaction-quick-access-planning.module.js +35 -0
  28. package/esm2015/lib/enum/icon.enum.js +3 -1
  29. package/esm2015/lib/model/icon-svg.js +3 -1
  30. package/esm2015/lib/res/dictionary/dictionaries.js +3 -3
  31. package/esm2015/lib/service/purchase-confirmation.service.js +21 -5
  32. package/esm2015/lib/service/relation-connector.service.js +14 -5
  33. package/esm2015/lib/service/transaction-base.service.js +8 -14
  34. package/esm2015/lib/service/transaction-connector-adapter.service.js +27 -25
  35. package/esm2015/lib/service/transaction-connector.service.js +11 -1
  36. package/esm2015/lib/service/transaction-event.service.js +2 -1
  37. package/esm2015/lib/service/transaction-mapping.service.js +3 -1
  38. package/esm2015/lib/service/transaction.service.js +20 -2
  39. package/esm2015/lib/transaction-version.js +3 -3
  40. package/fesm2015/colijnit-transaction.js +631 -407
  41. package/fesm2015/colijnit-transaction.js.map +1 -1
  42. package/lib/component/purchase-confirmation-lines/purchase-confirmation-lines.component.d.ts +11 -13
  43. package/lib/component/purchase-confirmation-lines/style/_layout.scss +46 -17
  44. package/lib/component/purchase-confirmation-lines/style/_material-definition.scss +7 -2
  45. package/lib/component/relation/relation-contact-details/relation-contact-details.component.d.ts +2 -0
  46. package/lib/component/transaction-button-bar/transaction-button-bar.component.d.ts +0 -3
  47. package/lib/component/transaction-confirmation-history/transaction-confirmation-history.component.d.ts +2 -0
  48. package/lib/component/transaction-internal/style/_layout.scss +1 -4
  49. package/lib/component/transaction-line/transaction-base-line/style/_layout.scss +5 -0
  50. package/lib/component/transaction-line/transaction-base-line/style/_material-definition.scss +1 -0
  51. package/lib/component/transaction-line/transaction-base-line/transaction-base-line.component.d.ts +3 -1
  52. package/lib/component/transaction-line/transaction-line/transaction-line.component.d.ts +0 -1
  53. package/lib/component/transaction-line/transaction-purchase-order-line/transaction-purchase-order-line-base.component.d.ts +2 -1
  54. package/lib/component/transaction-line/transaction-purchase-order-line/transaction-purchase-order-line.component.d.ts +5 -1
  55. package/lib/component/transaction-line-purchase-confirmation/transaction-line-purchase-confirmation.component.d.ts +1 -1
  56. package/lib/component/transaction-line-side-panel/style/_layout.scss +3 -0
  57. package/lib/component/transaction-line-side-panel/style/_material-definition.scss +4 -0
  58. package/lib/component/transaction-line-side-panel/transaction-line-side-panel.component.d.ts +6 -5
  59. package/lib/component/transaction-line-side-panel-planning/style/_layout.scss +98 -46
  60. package/lib/component/transaction-line-side-panel-planning/style/_material-definition.scss +6 -0
  61. package/lib/component/transaction-line-side-panel-planning/transaction-line-side-panel-planning.component.d.ts +6 -4
  62. package/lib/component/transaction-lines/transaction-lines.component.d.ts +1 -1
  63. package/lib/component/transaction-lines-popup/style/_layout.scss +18 -3
  64. package/lib/component/transaction-lines-popup/style/_material-definition.scss +10 -0
  65. package/lib/component/transaction-lines-popup/style/_theme.scss +4 -0
  66. package/lib/component/transaction-quick-access/transaction-quick-access-order-confirmation/transaction-quick-access-order-confirmation.component.d.ts +2 -1
  67. package/lib/component/transaction-quick-access/transaction-quick-access-planning/style/_layout.scss +27 -0
  68. package/lib/component/transaction-quick-access/transaction-quick-access-planning/style/_material-definition.scss +3 -0
  69. package/lib/component/transaction-quick-access/transaction-quick-access-planning/style/_theme.scss +6 -0
  70. package/lib/component/transaction-quick-access/transaction-quick-access-planning/style/material.scss +4 -0
  71. package/lib/component/transaction-quick-access/transaction-quick-access-planning/transaction-quick-access-planning.component.d.ts +28 -0
  72. package/lib/component/transaction-quick-access/transaction-quick-access-planning/transaction-quick-access-planning.module.d.ts +2 -0
  73. package/lib/enum/icon.enum.d.ts +2 -0
  74. package/lib/res/dictionary/dictionaries.d.ts +14 -0
  75. package/lib/service/purchase-confirmation.service.d.ts +4 -0
  76. package/lib/service/relation-connector.service.d.ts +3 -1
  77. package/lib/service/transaction-base.service.d.ts +0 -2
  78. package/lib/service/transaction-connector-adapter.service.d.ts +4 -0
  79. package/lib/service/transaction-connector.service.d.ts +4 -0
  80. package/lib/service/transaction-event.service.d.ts +2 -1
  81. package/lib/service/transaction.service.d.ts +2 -1
  82. package/package.json +8 -8
@@ -142,7 +142,6 @@ export class CheckoutComponent {
142
142
  this.invoiceAddressNawNr = nawNr;
143
143
  }
144
144
  handleTransactionFinished(id) {
145
- this.service.checkInviteRelation();
146
145
  this.service.resetCurrentTransaction();
147
146
  this.transactionFinished.emit({ id: id, fromCheckout: this.showCreateTransactionButton });
148
147
  }
@@ -231,4 +230,4 @@ CheckoutComponent.propDecorators = {
231
230
  editCartClick: [{ type: Output }],
232
231
  showClass: [{ type: HostBinding, args: ["class.co-checkout",] }]
233
232
  };
234
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvY2hlY2tvdXQvY2hlY2tvdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ25JLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBS25FLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUczRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMkRBQTJELENBQUM7QUFFMUYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBQyxrQ0FBa0MsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBRW5HLE9BQU8sRUFBQyw2QkFBNkIsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzlGLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQTJEbEUsTUFBTSxPQUFPLGlCQUFpQjtJQXlFNUIsWUFDUyxPQUEyQixFQUMxQixnQkFBaUMsRUFDakMsV0FBOEIsRUFDOUIsY0FBNkIsRUFDN0IsMkJBQStEO1FBSmhFLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBQzFCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFDakMsZ0JBQVcsR0FBWCxXQUFXLENBQW1CO1FBQzlCLG1CQUFjLEdBQWQsY0FBYyxD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LENBQUMsRUFBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsMkJBQTJCLEVBQUMsQ0FBQyxDQUFDO0lBQzFGLENBQUM7OztZQXZQRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0RUO2dCQUNELFNBQVMsRUFBRTtvQkFDVCxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUscUJBQXFCLEVBQUM7b0JBQ2hFLEVBQUMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLFdBQVcsRUFBRSxrQ0FBa0MsRUFBQztpQkFDMUY7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OztZQTFFTyxrQkFBa0I7WUFXbEIsZUFBZTtZQVZmLGlCQUFpQjtZQUtqQixhQUFhO1lBTWIsa0NBQWtDOzs7c0JBbUV2QyxTQUFTLFNBQUMsU0FBUzsyQkFHbkIsU0FBUyxTQUFDLGNBQWM7MkJBR3hCLFNBQVMsU0FBQyxjQUFjOzJCQUd4QixTQUFTLFNBQUMsY0FBYztzQkFHeEIsU0FBUyxTQUFDLFNBQVM7K0JBR25CLFNBQVMsU0FBQyxrQkFBa0I7K0JBRzVCLFNBQVMsU0FBQyxrQkFBa0I7OEJBRzVCLFNBQVMsU0FBQyxpQkFBaUI7NkJBRzNCLEtBQUs7eUJBTUwsS0FBSzt1QkFHTCxLQUFLOzhCQUdMLEtBQUs7MENBR0wsS0FBSztrQ0FHTCxNQUFNOzRCQUdOLE1BQU07d0JBR04sV0FBVyxTQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge0RpY3Rpb25hcnlTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2RpY3Rpb25hcnkuc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2V9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1pbmZvLXJlc3BvbnNlLmJvJztcclxuaW1wb3J0IHtDaGVja291dE92ZXJ2aWV3UmVsYXRpb25FZGl0Q29tcG9uZW50fSBmcm9tICcuL2NoZWNrb3V0LW92ZXJ2aWV3LXJlbGF0aW9uLWVkaXQvY2hlY2tvdXQtb3ZlcnZpZXctcmVsYXRpb24tZWRpdC5jb21wb25lbnQnO1xyXG5pbXBvcnQge0NoZWNrb3V0T3ZlcnZpZXdEZWxpdmVyeUVkaXRDb21wb25lbnR9IGZyb20gJy4vY2hlY2tvdXQtb3ZlcnZpZXctZGVsaXZlcnktZWRpdC9jaGVja291dC1vdmVydmlldy1kZWxpdmVyeS1lZGl0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7U3RlcHBlclN0ZXBDb21wb25lbnR9IGZyb20gJy4uL3N0ZXBwZXIvY29tcG9uZW50L3N0ZXBwZXItc3RlcC5jb21wb25lbnQnO1xyXG5pbXBvcnQge0RpYWxvZ1NlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQge1BheW1lbnRDb21wb25lbnR9IGZyb20gJy4uL3BheW1lbnQvcGF5bWVudC5jb21wb25lbnQnO1xyXG5pbXBvcnQge1N0ZXBwZXJDb21wb25lbnR9IGZyb20gJy4uL3N0ZXBwZXIvc3RlcHBlci5jb21wb25lbnQnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uS2luZH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vdHJhbnNhY3Rpb24ta2luZC5lbnVtJztcclxuaW1wb3J0IHtSZWxhdGlvbktpbmR9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9lbnVtL3JlbGF0aW9uLWtpbmQuZW51bSc7XHJcbmltcG9ydCB7UmVsYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3JlbGF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge0NoZWNrb3V0U2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2V9IGZyb20gJy4vc2VydmljZS9jaGVja291dC1zY3JlZW4tY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge0Jhc2VNb2R1bGVTY3JlZW5Db25maWdTZXJ2aWNlLCBCYXNlTW9kdWxlU2VydmljZX0gZnJvbSAnQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMic7XHJcbmltcG9ydCB7Q2hlY2tvdXRNb2R1bGVTZXJ2aWNlfSBmcm9tICcuL3NlcnZpY2UvY2hlY2tvdXQtbW9kdWxlLnNlcnZpY2UnO1xyXG5pbXBvcnQge0NoZWNrb3V0Q2ZnTmFtZX0gZnJvbSAnLi4vLi4vZW51bS9jaGVja291dC1jZmctbmFtZS5lbnVtJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImNvLWNoZWNrb3V0XCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWdMb2FkZWRcIj5cclxuICAgICAgPGNvLXN0ZXBwZXIgI3N0ZXBwZXJcclxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cInNlcnZpY2UudGl0bGVGb3JDaGVja291dFwiXHJcbiAgICAgICAgICAgICAgICAgIFtzaG93U3RlcHBlcl09XCJ0cmFuc2FjdGlvblR5cGUgIT09IHRyYW5zS2luZC5QdXJjaGFzZU9yZGVyXCJcclxuICAgICAgICAgICAgICAgICAgW3RpdGxlSWNvbl09XCJzZXJ2aWNlLmljb25Gb3JDaGVja291dFwiXHJcbiAgICAgICAgICAgICAgICAgIFtmaW5pc2hCdXR0b25MYWJlbF09XCInQ0hFQ0tPVVRfRklOSVNIJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgICAgKGNyZWF0ZUNsaWNrZWQpPVwiaGFuZGxlQ3JlYXRlVHJhbnNhY3Rpb24oJGV2ZW50KVwiXHJcbiAgICAgID5cclxuICAgICAgICA8Y28tc3RlcHBlci1zdGVwICNzdGVwUmVsYXRpb24gW2luZGV4XT1cIjFcIiBbbGFiZWxdPVwiJ1lPVVJfREFUQScgfCBsb2NhbGl6ZVwiICh2YWxpZGF0ZVN0ZXApPVwiaGFuZGxlUmVsYXRpb25WYWxpZGF0aW9uKClcIiAqbmdJZj1cInNob3dZb3VyRGF0YVwiPlxyXG4gICAgICAgICAgPGNvLWNoZWNrb3V0LW92ZXJ2aWV3LXJlbGF0aW9uLWVkaXQgI2NoZWNrb3V0UmVsYXRpb24gKm5nSWY9XCJzdGVwUmVsYXRpb24uc2hvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHJlbGF0aW9uKV09XCJzZXJ2aWNlLnJlbGF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWxhdGlvbktpbmRdPVwicmVsYXRpb25UeXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZWxpdmVyeUFkZHJlc3NOYXdOcl09XCJkZWxpdmVyeUFkZHJlc3NOYXdOclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW52b2ljZUFkZHJlc3NOYXdOcl09XCJpbnZvaWNlQWRkcmVzc05hd05yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWxpdmVyeUFkZHJlc3NDaGFuZ2UpPVwiaGFuZGxlRGVsaXZlcnlBZGRyZXNzQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludm9pY2VBZGRyZXNzQ2hhbmdlKT1cImhhbmRsZUludm9pY2VBZGRyZXNzQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlbGF0aW9uQ2hhbmdlKT1cInNlcnZpY2UucmVsYXRpb24gPSAkZXZlbnRcIlxyXG4gICAgICAgICAgPjwvY28tY2hlY2tvdXQtb3ZlcnZpZXctcmVsYXRpb24tZWRpdD5cclxuICAgICAgICA8L2NvLXN0ZXBwZXItc3RlcD5cclxuICAgICAgICA8Y28tc3RlcHBlci1zdGVwICNzdGVwRGVsaXZlcnkgW2luZGV4XT1cIjJcIiBbbGFiZWxdPVwiJ0RFTElWRVJZJyB8IGxvY2FsaXplXCIgKHZhbGlkYXRlU3RlcCk9XCJoYW5kbGVEZWxpdmVyeVZhbGlkYXRpb24oKVwiICpuZ0lmPVwic2hvd0RlbGl2ZXJ5XCI+XHJcbiAgICAgICAgICA8Y28tY2hlY2tvdXQtb3ZlcnZpZXctZGVsaXZlcnktZWRpdCAjY2hlY2tvdXREZWxpdmVyeSAqbmdJZj1cInN0ZXBEZWxpdmVyeS5zaG93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0cmFuc2FjdGlvbl09XCJzZXJ2aWNlLmN1cnJlbnRUcmFuc2FjdGlvblwiXHJcbiAgICAgICAgICA+PC9jby1jaGVja291dC1vdmVydmlldy1kZWxpdmVyeS1lZGl0PlxyXG4gICAgICAgIDwvY28tc3RlcHBlci1zdGVwPlxyXG4gICAgICAgIDxjby1zdGVwcGVyLXN0ZXAgI3N0ZXBPdmVydmlldyBbaW5kZXhdPVwiM1wiIFtsYWJlbF09XCJzZXJ2aWNlLnBheW1lbnRTdGVwVGl0bGVGb3JDaGVja291dCB8IGxvY2FsaXplXCIgKm5nSWY9XCJzaG93T3ZlcnZpZXdcIj5cclxuICAgICAgICAgIDxjby1jaGVja291dC1vdmVydmlldy1wYXltZW50ICpuZ0lmPVwic3RlcE92ZXJ2aWV3LnNob3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlbGF0aW9uXT1cInNlcnZpY2UucmVsYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RyYW5zYWN0aW9uXT1cInNlcnZpY2UuY3VycmVudFRyYW5zYWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93UGF5bWVudF09XCJ0cmFuc2FjdGlvblR5cGUgPT09IHRyYW5zS2luZC5TYWxlc09yZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2VZb3VyRGF0YUNsaWNrKT1cInN0ZXBwZXIuZ290bygwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlRGVsaXZlcnlDbGljayk9XCJzdGVwcGVyLmdvdG8oMSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBheWVkKT1cImhhbmRsZVRyYW5zYWN0aW9uRmluaXNoZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICA+PC9jby1jaGVja291dC1vdmVydmlldy1wYXltZW50PlxyXG4gICAgICAgIDwvY28tc3RlcHBlci1zdGVwPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjby1jaGVja291dC1yaWdodC1wYW5lbFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWxhYmVsLWNvbHVtblwiPlxyXG4gICAgICAgICAgICA8IS0tY28tYXZhdGFyIFtyZWxhdGlvbklkXT1cInNlbGxlcklkXCI+PC9jby1hdmF0YXItLT5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbC1kZXNjcmlwdGlvblwiIFt0ZXh0Q29udGVudF09XCInQ0FSVCcgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGNvLXNob3BwaW5nLWNhcnQtcHJldmlldyAqbmdJZj1cIiFzaG93Q3JlYXRlVHJhbnNhY3Rpb25CdXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0NoZWNrb3V0QnV0dG9uXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3dpdGhvdXRCb3JkZXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlZGl0Q2FydENsaWNrKT1cImVkaXRDYXJ0Q2xpY2suZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAgID48L2NvLXNob3BwaW5nLWNhcnQtcHJldmlldz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9jby1zdGVwcGVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgYCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtwcm92aWRlOiBCYXNlTW9kdWxlU2VydmljZSwgdXNlRXhpc3Rpbmc6IENoZWNrb3V0TW9kdWxlU2VydmljZX0sXHJcbiAgICB7cHJvdmlkZTogQmFzZU1vZHVsZVNjcmVlbkNvbmZpZ1NlcnZpY2UsIHVzZUV4aXN0aW5nOiBDaGVja291dFNjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlfSxcclxuICBdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIENoZWNrb3V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHB1YmxpYyByZWFkb25seSB0cmFuc0tpbmQ6IHR5cGVvZiBUcmFuc2FjdGlvbktpbmQgPSBUcmFuc2FjdGlvbktpbmQ7XHJcbiAgcHVibGljIHJlYWRvbmx5IGNmZ05hbWVzOiB0eXBlb2YgQ2hlY2tvdXRDZmdOYW1lID0gQ2hlY2tvdXRDZmdOYW1lO1xyXG5cclxuICBAVmlld0NoaWxkKFwic3RlcHBlclwiKVxyXG4gIHB1YmxpYyBzdGVwcGVyOiBTdGVwcGVyQ29tcG9uZW50O1xyXG5cclxuICBAVmlld0NoaWxkKFwic3RlcFJlbGF0aW9uXCIpXHJcbiAgcHVibGljIHN0ZXBSZWxhdGlvbjogU3RlcHBlclN0ZXBDb21wb25lbnQ7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJzdGVwRGVsaXZlcnlcIilcclxuICBwdWJsaWMgc3RlcERlbGl2ZXJ5OiBTdGVwcGVyU3RlcENvbXBvbmVudDtcclxuXHJcbiAgQFZpZXdDaGlsZChcInN0ZXBPdmVydmlld1wiKVxyXG4gIHB1YmxpYyBzdGVwT3ZlcnZpZXc6IFN0ZXBwZXJTdGVwQ29tcG9uZW50O1xyXG5cclxuICBAVmlld0NoaWxkKFwic3RlcFBheVwiKVxyXG4gIHB1YmxpYyBzdGVwUGF5OiBTdGVwcGVyU3RlcENvbXBvbmVudDtcclxuXHJcbiAgQFZpZXdDaGlsZChcImNoZWNrb3V0UmVsYXRpb25cIilcclxuICBwdWJsaWMgY2hlY2tvdXRSZWxhdGlvbjogQ2hlY2tvdXRPdmVydmlld1JlbGF0aW9uRWRpdENvbXBvbmVudDtcclxuXHJcbiAgQFZpZXdDaGlsZChcImNoZWNrb3V0RGVsaXZlcnlcIilcclxuICBwdWJsaWMgY2hlY2tvdXREZWxpdmVyeTogQ2hlY2tvdXRPdmVydmlld0RlbGl2ZXJ5RWRpdENvbXBvbmVudDtcclxuXHJcbiAgQFZpZXdDaGlsZChcImNoZWNrb3V0UGF5bWVudFwiKVxyXG4gIHB1YmxpYyBjaGVja291dFBheW1lbnQ6IFBheW1lbnRDb21wb25lbnQ7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG5ld1RyYW5zYWN0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZW4gc2V0LCB0aGlzIGlzIHRoZSByZWxhdGlvbiBiZSB1c2VkIGZvciB0aGUgY2hlY2tvdXRcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByZWxhdGlvbk5yOiBudW1iZXI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNlbGxlcklkOiBudW1iZXI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHRyYW5zYWN0aW9uVHlwZTogVHJhbnNhY3Rpb25LaW5kID0gVHJhbnNhY3Rpb25LaW5kLlNhbGVzT3JkZXI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dDcmVhdGVUcmFuc2FjdGlvbkJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgdHJhbnNhY3Rpb25GaW5pc2hlZDogRXZlbnRFbWl0dGVyPHtpZDogbnVtYmVyLCBmcm9tQ2hlY2tvdXQ6IGJvb2xlYW59PiA9IG5ldyBFdmVudEVtaXR0ZXI8e2lkOiBudW1iZXIsIGZyb21DaGVja291dDogYm9vbGVhbn0+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBlZGl0Q2FydENsaWNrOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLWNoZWNrb3V0XCIpXHJcbiAgcHVibGljIHNob3dDbGFzcygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCB1c2VySXNBcHBsaWNhdGlvblVzZXIoKTogYm9vbGVhbiB7XHJcbiAgICAvLyBUT0RPOiByZXR1cm4gdGhpcy51c2VyU2VydmljZS5pc0FwcGxpY2F0aW9uVXNlcjtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZTtcclxuICBwdWJsaWMgZGVsaXZlcnlBZGRyZXNzTmF3TnI6IG51bWJlciA9IDA7XHJcbiAgcHVibGljIGludm9pY2VBZGRyZXNzTmF3TnI6IG51bWJlciA9IDA7XHJcbiAgcHVibGljIHJlbGF0aW9uVHlwZTogUmVsYXRpb25LaW5kO1xyXG4gIHB1YmxpYyBjb25maWdMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd1lvdXJEYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dEZWxpdmVyeTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93T3ZlcnZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgc2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcmVsYXRpb25TZXJ2aWNlOiBSZWxhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kaWN0aW9uYXJ5OiBEaWN0aW9uYXJ5U2VydmljZSxcclxuICAgIHByaXZhdGUgX2RpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zY3JlZW5Db25maWd1cmF0aW9uU2VydmljZTogQ2hlY2tvdXRTY3JlZW5Db25maWd1cmF0aW9uU2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zY3JlZW5Db25maWd1cmF0aW9uU2VydmljZS5sb2FkQ29uZmlnKFt0aGlzLnRyYW5zYWN0aW9uVHlwZV0pO1xyXG4gICAgdGhpcy5fc3Vicy5wdXNoKFxyXG4gICAgICAgIHRoaXMuX3NjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlLmNvbmZpZ1NldC5zdWJzY3JpYmUoKGNvbmZpZ09iamVjdHM6IHN0cmluZ1tdKSA9PiB7XHJcbiAgICAgICAgICBpZiAoY29uZmlnT2JqZWN0cyAmJiBjb25maWdPYmplY3RzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5zaG93WW91ckRhdGEgPSB0aGlzLl9zY3JlZW5Db25maWd1cmF0aW9uU2VydmljZS5nZXRPYmplY3RDb25maWd1cmF0aW9uRm9yKHRoaXMuY2ZnTmFtZXMuWW91ckRhdGFIZWFkZXIpLmltbWVkaWF0ZWx5VmlzaWJsZSgpO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dEZWxpdmVyeSA9IHRoaXMuX3NjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlLmdldE9iamVjdENvbmZpZ3VyYXRpb25Gb3IodGhpcy5jZmdOYW1lcy5EZWxpdmVyeUhlYWRlcikuaW1tZWRpYXRlbHlWaXNpYmxlKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd092ZXJ2aWV3ID0gdGhpcy5fc2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2UuZ2V0T2JqZWN0Q29uZmlndXJhdGlvbkZvcih0aGlzLmNmZ05hbWVzLk92ZXJ2aWV3QW5kUGF5bWVudEhlYWRlcikuaW1tZWRpYXRlbHlWaXNpYmxlKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlnTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgKVxyXG4gICAgaWYgKHRoaXMubmV3VHJhbnNhY3Rpb24pIHtcclxuICAgICAgdGhpcy5zZXJ2aWNlLnJlc2V0Q3VycmVudFRyYW5zYWN0aW9uKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlcnZpY2UudHJhbnNhY3Rpb25LaW5kID0gdGhpcy50cmFuc2FjdGlvblR5cGU7XHJcbiAgICB0aGlzLnJlbGF0aW9uVHlwZSA9IHRoaXMuc2VydmljZS5nZXRSZWxhdGlvbktpbmRGcm9tVHJhbnNhY3Rpb25LaW5kKCk7XHJcbiAgICB0aGlzLnNlcnZpY2UuY3JlYXRlTmV3UmVsYXRpb24oKTtcclxuICAgIGlmICh0aGlzLnJlbGF0aW9uTnIpIHtcclxuICAgICAgdGhpcy5zZXJ2aWNlLnNldFJlbGF0aW9uT25UcmFuc2FjdGlvbih0aGlzLnJlbGF0aW9uTnIsIHRoaXMucmVsYXRpb25UeXBlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fc3Vicy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcclxuICAgIGlmICh0aGlzLl9yZWxhdGlvblNlcnZpY2UucmVsYXRpb25Mb2NrZWQgfHwgdGhpcy5zZXJ2aWNlLnRyYW5zYWN0aW9uTG9ja2VkKSB7XHJcbiAgICAgIHRoaXMuc2VydmljZS5yZXNldExvY2tUcmFuc2FjdGlvbigpO1xyXG4gICAgICB0aGlzLnNlcnZpY2Uucm9sbGJhY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVDcmVhdGVUcmFuc2FjdGlvbihldmVudDogTW91c2VFdmVudCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHRoaXMuc3RlcHBlci5hY3RpdmVTdGVwID09PSAwKSB7XHJcbiAgICAgIGlmIChhd2FpdCB0aGlzLmhhbmRsZVJlbGF0aW9uVmFsaWRhdGlvbigpKSB7XHJcbiAgICAgICAgLy8gc3VjY2VzcyA9IGF3YWl0IHRoaXMuc2VydmljZS5zYXZlUmVsYXRpb24oKTtcclxuICAgICAgICBpZiAodGhpcy50cmFuc2FjdGlvblR5cGUgIT09IHRoaXMudHJhbnNLaW5kLlNhbGVzUXVvdGF0aW9uKSB7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLnNlcnZpY2UudXBkYXRlSGVhZGVyVHJhbnNhY3Rpb25EZWZpbml0aXZlKHRoaXMuc2VydmljZS5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnV1aWQsIHRydWUsIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IHNhdmVTdWNjZXNzOiBib29sZWFuID0gYXdhaXQgdGhpcy5zZXJ2aWNlLnNhdmVUcmFuc2FjdGlvbkFuZENvbW1pdCgpO1xyXG4gICAgaWYgKHNhdmVTdWNjZXNzKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlVHJhbnNhY3Rpb25GaW5pc2hlZCh0aGlzLnNlcnZpY2UuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby50cmFuc2FjdGlvbk5yKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVSZWxhdGlvblZhbGlkYXRpb24oKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBpZiAodGhpcy5jaGVja291dFJlbGF0aW9uICYmIHRoaXMuc3RlcFJlbGF0aW9uKSB7XHJcbiAgICAgIGNvbnN0IHZhbGlkID0gdGhpcy5jaGVja291dFJlbGF0aW9uLnN1Ym1pdCgpO1xyXG4gICAgICBpZiAodmFsaWQpIHtcclxuICAgICAgICB0aGlzLnN0ZXBSZWxhdGlvbi5jb21wbGV0ZWQgPSBhd2FpdCB0aGlzLnNhdmVSZWxhdGlvbigpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB2YWxpZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVEZWxpdmVyeVZhbGlkYXRpb24oKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBpZiAodGhpcy5jaGVja291dERlbGl2ZXJ5ICYmIHRoaXMuc3RlcERlbGl2ZXJ5KSB7XHJcbiAgICAgIGNvbnN0IHZhbGlkID0gdGhpcy5jaGVja291dERlbGl2ZXJ5LnN1Ym1pdCgpO1xyXG4gICAgICBpZiAodmFsaWQpIHtcclxuICAgICAgICBjb25zdCBzYXZlU3VjY2VzczogYm9vbGVhbiA9IGF3YWl0IHRoaXMuc2VydmljZS5zYXZlVHJhbnNhY3Rpb25BbmRDb21taXQoKTtcclxuICAgICAgICBpZiAoc2F2ZVN1Y2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnN0IGxvY2tTdWNjZXNzOiBib29sZWFuID1cclxuICAgICAgICAgICAgICBhd2FpdCB0aGlzLnNlcnZpY2UudHJ5VG9Mb2NrVHJhbnNhY3Rpb24odGhpcy5zZXJ2aWNlLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8uaWQsIHRoaXMuc2VydmljZS5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnZlcnNpb24pO1xyXG4gICAgICAgICAgaWYgKGxvY2tTdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RlcERlbGl2ZXJ5LmNvbXBsZXRlZCA9IGF3YWl0IHRoaXMuaGFuZGxlU2F2ZURlbGl2ZXJ5KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB2YWxpZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzYXZlUmVsYXRpb24oKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBjb25zdCBzdWNjZXNzOiBib29sZWFuID0gYXdhaXQgdGhpcy5zZXJ2aWNlLnNhdmVSZWxhdGlvbigpO1xyXG4gICAgaWYgKHN1Y2Nlc3MpIHtcclxuICAgICAgaWYgKHRoaXMuZGVsaXZlcnlBZGRyZXNzTmF3TnIgPT09IG51bGwgfHwgdGhpcy5kZWxpdmVyeUFkZHJlc3NOYXdOciA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuZGVsaXZlcnlBZGRyZXNzTmF3TnIgPT09IDAgJiYgdGhpcy5zZXJ2aWNlLnJlbGF0aW9uLmFkZHJlc3NlcyAmJiB0aGlzLnNlcnZpY2UucmVsYXRpb24uYWRkcmVzc2VzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgIHRoaXMuZGVsaXZlcnlBZGRyZXNzTmF3TnIgPSB0aGlzLnNlcnZpY2UucmVsYXRpb24uYWRkcmVzc2VzWzBdLm5hd05yO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnNlcnZpY2UuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby50cmFuc2FjdGlvbkFkZHJlc3MgIT09IHRoaXMuZGVsaXZlcnlBZGRyZXNzTmF3TnIpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLnNlcnZpY2UudXBkYXRlSGVhZGVyRGVsaXZlcnlBZGRyZXNzKHRoaXMuc2VydmljZS5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnV1aWQsIHRoaXMuZGVsaXZlcnlBZGRyZXNzTmF3TnIpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGludm9pY2VBZGRyZXNzTmF3TnI6IG51bWJlciA9IHRoaXMuaW52b2ljZUFkZHJlc3NOYXdOciA/IHRoaXMuaW52b2ljZUFkZHJlc3NOYXdOciA6IHRoaXMuZGVsaXZlcnlBZGRyZXNzTmF3TnI7XHJcbiAgICAgIGlmICh0aGlzLnNlcnZpY2UuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5pbnZvaWNlQWRkcmVzcyAhPT0gaW52b2ljZUFkZHJlc3NOYXdOcikge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuc2VydmljZS51cGRhdGVIZWFkZXJJbnZvaWNlQWRkcmVzcyh0aGlzLnNlcnZpY2UuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby51dWlkLCBpbnZvaWNlQWRkcmVzc05hd05yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN1Y2Nlc3M7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlU2F2ZURlbGl2ZXJ5KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlRGVsaXZlcnlBZGRyZXNzQ2hhbmdlKG5hd05yOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVsaXZlcnlBZGRyZXNzTmF3TnIgPSBuYXdOcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVJbnZvaWNlQWRkcmVzc0NoYW5nZShuYXdOcjogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmludm9pY2VBZGRyZXNzTmF3TnIgPSBuYXdOcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVUcmFuc2FjdGlvbkZpbmlzaGVkKGlkOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VydmljZS5jaGVja0ludml0ZVJlbGF0aW9uKCk7XHJcbiAgICB0aGlzLnNlcnZpY2UucmVzZXRDdXJyZW50VHJhbnNhY3Rpb24oKTtcclxuICAgIHRoaXMudHJhbnNhY3Rpb25GaW5pc2hlZC5lbWl0KHtpZDogaWQsIGZyb21DaGVja291dDogdGhpcy5zaG93Q3JlYXRlVHJhbnNhY3Rpb25CdXR0b259KTtcclxuICB9XHJcbn1cclxuIl19
233
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvY2hlY2tvdXQvY2hlY2tvdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ25JLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBS25FLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUczRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMkRBQTJELENBQUM7QUFFMUYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBQyxrQ0FBa0MsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBRW5HLE9BQU8sRUFBQyw2QkFBNkIsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzlGLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQTJEbEUsTUFBTSxPQUFPLGlCQUFpQjtJQXlFNUIsWUFDUyxPQUEyQixFQUMxQixnQkFBaUMsRUFDakMsV0FBOEIsRUFDOUIsY0FBNkIsRUFDN0IsMkJBQStEO1FBSmhFLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBQzFCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFDakMsZ0JBQVcsR0FBWCxXQUFXLENBQW1CO1FBQzlCLG1CQUFjLEdBQWQsY0FBYyxD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QUksQ0FBQywyQkFBMkIsRUFBQyxDQUFDLENBQUM7SUFDMUYsQ0FBQzs7O1lBdFBGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsYUFBYTtnQkFDdkIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnRFQ7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULEVBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBQztvQkFDaEUsRUFBQyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsV0FBVyxFQUFFLGtDQUFrQyxFQUFDO2lCQUMxRjtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBMUVPLGtCQUFrQjtZQVdsQixlQUFlO1lBVmYsaUJBQWlCO1lBS2pCLGFBQWE7WUFNYixrQ0FBa0M7OztzQkFtRXZDLFNBQVMsU0FBQyxTQUFTOzJCQUduQixTQUFTLFNBQUMsY0FBYzsyQkFHeEIsU0FBUyxTQUFDLGNBQWM7MkJBR3hCLFNBQVMsU0FBQyxjQUFjO3NCQUd4QixTQUFTLFNBQUMsU0FBUzsrQkFHbkIsU0FBUyxTQUFDLGtCQUFrQjsrQkFHNUIsU0FBUyxTQUFDLGtCQUFrQjs4QkFHNUIsU0FBUyxTQUFDLGlCQUFpQjs2QkFHM0IsS0FBSzt5QkFNTCxLQUFLO3VCQUdMLEtBQUs7OEJBR0wsS0FBSzswQ0FHTCxLQUFLO2tDQUdMLE1BQU07NEJBR04sTUFBTTt3QkFHTixXQUFXLFNBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7RGljdGlvbmFyeVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvZGljdGlvbmFyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm9SZXNwb25zZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWluZm8tcmVzcG9uc2UuYm8nO1xyXG5pbXBvcnQge0NoZWNrb3V0T3ZlcnZpZXdSZWxhdGlvbkVkaXRDb21wb25lbnR9IGZyb20gJy4vY2hlY2tvdXQtb3ZlcnZpZXctcmVsYXRpb24tZWRpdC9jaGVja291dC1vdmVydmlldy1yZWxhdGlvbi1lZGl0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7Q2hlY2tvdXRPdmVydmlld0RlbGl2ZXJ5RWRpdENvbXBvbmVudH0gZnJvbSAnLi9jaGVja291dC1vdmVydmlldy1kZWxpdmVyeS1lZGl0L2NoZWNrb3V0LW92ZXJ2aWV3LWRlbGl2ZXJ5LWVkaXQuY29tcG9uZW50JztcclxuaW1wb3J0IHtTdGVwcGVyU3RlcENvbXBvbmVudH0gZnJvbSAnLi4vc3RlcHBlci9jb21wb25lbnQvc3RlcHBlci1zdGVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7RGlhbG9nU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7UGF5bWVudENvbXBvbmVudH0gZnJvbSAnLi4vcGF5bWVudC9wYXltZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7U3RlcHBlckNvbXBvbmVudH0gZnJvbSAnLi4vc3RlcHBlci9zdGVwcGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25LaW5kfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS90cmFuc2FjdGlvbi1raW5kLmVudW0nO1xyXG5pbXBvcnQge1JlbGF0aW9uS2luZH0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL2VudW0vcmVsYXRpb24ta2luZC5lbnVtJztcclxuaW1wb3J0IHtSZWxhdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvcmVsYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7Q2hlY2tvdXRTY3JlZW5Db25maWd1cmF0aW9uU2VydmljZX0gZnJvbSAnLi9zZXJ2aWNlL2NoZWNrb3V0LXNjcmVlbi1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7QmFzZU1vZHVsZVNjcmVlbkNvbmZpZ1NlcnZpY2UsIEJhc2VNb2R1bGVTZXJ2aWNlfSBmcm9tICdAY29saWpuaXQvY29yZWNvbXBvbmVudHNfdjEyJztcclxuaW1wb3J0IHtDaGVja291dE1vZHVsZVNlcnZpY2V9IGZyb20gJy4vc2VydmljZS9jaGVja291dC1tb2R1bGUuc2VydmljZSc7XHJcbmltcG9ydCB7Q2hlY2tvdXRDZmdOYW1lfSBmcm9tICcuLi8uLi9lbnVtL2NoZWNrb3V0LWNmZy1uYW1lLmVudW0nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiY28tY2hlY2tvdXRcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZ0xvYWRlZFwiPlxyXG4gICAgICA8Y28tc3RlcHBlciAjc3RlcHBlclxyXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwic2VydmljZS50aXRsZUZvckNoZWNrb3V0XCJcclxuICAgICAgICAgICAgICAgICAgW3Nob3dTdGVwcGVyXT1cInRyYW5zYWN0aW9uVHlwZSAhPT0gdHJhbnNLaW5kLlB1cmNoYXNlT3JkZXJcIlxyXG4gICAgICAgICAgICAgICAgICBbdGl0bGVJY29uXT1cInNlcnZpY2UuaWNvbkZvckNoZWNrb3V0XCJcclxuICAgICAgICAgICAgICAgICAgW2ZpbmlzaEJ1dHRvbkxhYmVsXT1cIidDSEVDS09VVF9GSU5JU0gnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgICAgICAoY3JlYXRlQ2xpY2tlZCk9XCJoYW5kbGVDcmVhdGVUcmFuc2FjdGlvbigkZXZlbnQpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjby1zdGVwcGVyLXN0ZXAgI3N0ZXBSZWxhdGlvbiBbaW5kZXhdPVwiMVwiIFtsYWJlbF09XCInWU9VUl9EQVRBJyB8IGxvY2FsaXplXCIgKHZhbGlkYXRlU3RlcCk9XCJoYW5kbGVSZWxhdGlvblZhbGlkYXRpb24oKVwiICpuZ0lmPVwic2hvd1lvdXJEYXRhXCI+XHJcbiAgICAgICAgICA8Y28tY2hlY2tvdXQtb3ZlcnZpZXctcmVsYXRpb24tZWRpdCAjY2hlY2tvdXRSZWxhdGlvbiAqbmdJZj1cInN0ZXBSZWxhdGlvbi5zaG93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsocmVsYXRpb24pXT1cInNlcnZpY2UucmVsYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlbGF0aW9uS2luZF09XCJyZWxhdGlvblR5cGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RlbGl2ZXJ5QWRkcmVzc05hd05yXT1cImRlbGl2ZXJ5QWRkcmVzc05hd05yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbnZvaWNlQWRkcmVzc05hd05yXT1cImludm9pY2VBZGRyZXNzTmF3TnJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGl2ZXJ5QWRkcmVzc0NoYW5nZSk9XCJoYW5kbGVEZWxpdmVyeUFkZHJlc3NDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW52b2ljZUFkZHJlc3NDaGFuZ2UpPVwiaGFuZGxlSW52b2ljZUFkZHJlc3NDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVsYXRpb25DaGFuZ2UpPVwic2VydmljZS5yZWxhdGlvbiA9ICRldmVudFwiXHJcbiAgICAgICAgICA+PC9jby1jaGVja291dC1vdmVydmlldy1yZWxhdGlvbi1lZGl0PlxyXG4gICAgICAgIDwvY28tc3RlcHBlci1zdGVwPlxyXG4gICAgICAgIDxjby1zdGVwcGVyLXN0ZXAgI3N0ZXBEZWxpdmVyeSBbaW5kZXhdPVwiMlwiIFtsYWJlbF09XCInREVMSVZFUlknIHwgbG9jYWxpemVcIiAodmFsaWRhdGVTdGVwKT1cImhhbmRsZURlbGl2ZXJ5VmFsaWRhdGlvbigpXCIgKm5nSWY9XCJzaG93RGVsaXZlcnlcIj5cclxuICAgICAgICAgIDxjby1jaGVja291dC1vdmVydmlldy1kZWxpdmVyeS1lZGl0ICNjaGVja291dERlbGl2ZXJ5ICpuZ0lmPVwic3RlcERlbGl2ZXJ5LnNob3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RyYW5zYWN0aW9uXT1cInNlcnZpY2UuY3VycmVudFRyYW5zYWN0aW9uXCJcclxuICAgICAgICAgID48L2NvLWNoZWNrb3V0LW92ZXJ2aWV3LWRlbGl2ZXJ5LWVkaXQ+XHJcbiAgICAgICAgPC9jby1zdGVwcGVyLXN0ZXA+XHJcbiAgICAgICAgPGNvLXN0ZXBwZXItc3RlcCAjc3RlcE92ZXJ2aWV3IFtpbmRleF09XCIzXCIgW2xhYmVsXT1cInNlcnZpY2UucGF5bWVudFN0ZXBUaXRsZUZvckNoZWNrb3V0IHwgbG9jYWxpemVcIiAqbmdJZj1cInNob3dPdmVydmlld1wiPlxyXG4gICAgICAgICAgPGNvLWNoZWNrb3V0LW92ZXJ2aWV3LXBheW1lbnQgKm5nSWY9XCJzdGVwT3ZlcnZpZXcuc2hvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVsYXRpb25dPVwic2VydmljZS5yZWxhdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHJhbnNhY3Rpb25dPVwic2VydmljZS5jdXJyZW50VHJhbnNhY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dQYXltZW50XT1cInRyYW5zYWN0aW9uVHlwZSA9PT0gdHJhbnNLaW5kLlNhbGVzT3JkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZVlvdXJEYXRhQ2xpY2spPVwic3RlcHBlci5nb3RvKDApXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2VEZWxpdmVyeUNsaWNrKT1cInN0ZXBwZXIuZ290bygxKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGF5ZWQpPVwiaGFuZGxlVHJhbnNhY3Rpb25GaW5pc2hlZCgkZXZlbnQpXCJcclxuICAgICAgICAgID48L2NvLWNoZWNrb3V0LW92ZXJ2aWV3LXBheW1lbnQ+XHJcbiAgICAgICAgPC9jby1zdGVwcGVyLXN0ZXA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvLWNoZWNrb3V0LXJpZ2h0LXBhbmVsXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtbGFiZWwtY29sdW1uXCI+XHJcbiAgICAgICAgICAgIDwhLS1jby1hdmF0YXIgW3JlbGF0aW9uSWRdPVwic2VsbGVySWRcIj48L2NvLWF2YXRhci0tPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsLWRlc2NyaXB0aW9uXCIgW3RleHRDb250ZW50XT1cIidDQVJUJyB8IGxvY2FsaXplXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8Y28tc2hvcHBpbmctY2FydC1wcmV2aWV3ICpuZ0lmPVwiIXNob3dDcmVhdGVUcmFuc2FjdGlvbkJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93Q2hlY2tvdXRCdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbd2l0aG91dEJvcmRlcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVkaXRDYXJ0Q2xpY2spPVwiZWRpdENhcnRDbGljay5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgPjwvY28tc2hvcHBpbmctY2FydC1wcmV2aWV3PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2NvLXN0ZXBwZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICBgLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge3Byb3ZpZGU6IEJhc2VNb2R1bGVTZXJ2aWNlLCB1c2VFeGlzdGluZzogQ2hlY2tvdXRNb2R1bGVTZXJ2aWNlfSxcclxuICAgIHtwcm92aWRlOiBCYXNlTW9kdWxlU2NyZWVuQ29uZmlnU2VydmljZSwgdXNlRXhpc3Rpbmc6IENoZWNrb3V0U2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2V9LFxyXG4gIF0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hlY2tvdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHVibGljIHJlYWRvbmx5IHRyYW5zS2luZDogdHlwZW9mIFRyYW5zYWN0aW9uS2luZCA9IFRyYW5zYWN0aW9uS2luZDtcclxuICBwdWJsaWMgcmVhZG9ubHkgY2ZnTmFtZXM6IHR5cGVvZiBDaGVja291dENmZ05hbWUgPSBDaGVja291dENmZ05hbWU7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJzdGVwcGVyXCIpXHJcbiAgcHVibGljIHN0ZXBwZXI6IFN0ZXBwZXJDb21wb25lbnQ7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJzdGVwUmVsYXRpb25cIilcclxuICBwdWJsaWMgc3RlcFJlbGF0aW9uOiBTdGVwcGVyU3RlcENvbXBvbmVudDtcclxuXHJcbiAgQFZpZXdDaGlsZChcInN0ZXBEZWxpdmVyeVwiKVxyXG4gIHB1YmxpYyBzdGVwRGVsaXZlcnk6IFN0ZXBwZXJTdGVwQ29tcG9uZW50O1xyXG5cclxuICBAVmlld0NoaWxkKFwic3RlcE92ZXJ2aWV3XCIpXHJcbiAgcHVibGljIHN0ZXBPdmVydmlldzogU3RlcHBlclN0ZXBDb21wb25lbnQ7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJzdGVwUGF5XCIpXHJcbiAgcHVibGljIHN0ZXBQYXk6IFN0ZXBwZXJTdGVwQ29tcG9uZW50O1xyXG5cclxuICBAVmlld0NoaWxkKFwiY2hlY2tvdXRSZWxhdGlvblwiKVxyXG4gIHB1YmxpYyBjaGVja291dFJlbGF0aW9uOiBDaGVja291dE92ZXJ2aWV3UmVsYXRpb25FZGl0Q29tcG9uZW50O1xyXG5cclxuICBAVmlld0NoaWxkKFwiY2hlY2tvdXREZWxpdmVyeVwiKVxyXG4gIHB1YmxpYyBjaGVja291dERlbGl2ZXJ5OiBDaGVja291dE92ZXJ2aWV3RGVsaXZlcnlFZGl0Q29tcG9uZW50O1xyXG5cclxuICBAVmlld0NoaWxkKFwiY2hlY2tvdXRQYXltZW50XCIpXHJcbiAgcHVibGljIGNoZWNrb3V0UGF5bWVudDogUGF5bWVudENvbXBvbmVudDtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbmV3VHJhbnNhY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogV2hlbiBzZXQsIHRoaXMgaXMgdGhlIHJlbGF0aW9uIGJlIHVzZWQgZm9yIHRoZSBjaGVja291dFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHJlbGF0aW9uTnI6IG51bWJlcjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2VsbGVySWQ6IG51bWJlcjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdHJhbnNhY3Rpb25UeXBlOiBUcmFuc2FjdGlvbktpbmQgPSBUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlcjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hvd0NyZWF0ZVRyYW5zYWN0aW9uQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyB0cmFuc2FjdGlvbkZpbmlzaGVkOiBFdmVudEVtaXR0ZXI8e2lkOiBudW1iZXIsIGZyb21DaGVja291dDogYm9vbGVhbn0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7aWQ6IG51bWJlciwgZnJvbUNoZWNrb3V0OiBib29sZWFufT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGVkaXRDYXJ0Q2xpY2s6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tY2hlY2tvdXRcIilcclxuICBwdWJsaWMgc2hvd0NsYXNzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHVzZXJJc0FwcGxpY2F0aW9uVXNlcigpOiBib29sZWFuIHtcclxuICAgIC8vIFRPRE86IHJldHVybiB0aGlzLnVzZXJTZXJ2aWNlLmlzQXBwbGljYXRpb25Vc2VyO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlO1xyXG4gIHB1YmxpYyBkZWxpdmVyeUFkZHJlc3NOYXdOcjogbnVtYmVyID0gMDtcclxuICBwdWJsaWMgaW52b2ljZUFkZHJlc3NOYXdOcjogbnVtYmVyID0gMDtcclxuICBwdWJsaWMgcmVsYXRpb25UeXBlOiBSZWxhdGlvbktpbmQ7XHJcbiAgcHVibGljIGNvbmZpZ0xvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93WW91ckRhdGE6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd0RlbGl2ZXJ5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dPdmVydmlldzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBzZXJ2aWNlOiBUcmFuc2FjdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9yZWxhdGlvblNlcnZpY2U6IFJlbGF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX2RpY3Rpb25hcnk6IERpY3Rpb25hcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlOiBDaGVja291dFNjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3NjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlLmxvYWRDb25maWcoW3RoaXMudHJhbnNhY3Rpb25UeXBlXSk7XHJcbiAgICB0aGlzLl9zdWJzLnB1c2goXHJcbiAgICAgICAgdGhpcy5fc2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2UuY29uZmlnU2V0LnN1YnNjcmliZSgoY29uZmlnT2JqZWN0czogc3RyaW5nW10pID0+IHtcclxuICAgICAgICAgIGlmIChjb25maWdPYmplY3RzICYmIGNvbmZpZ09iamVjdHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnNob3dZb3VyRGF0YSA9IHRoaXMuX3NjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlLmdldE9iamVjdENvbmZpZ3VyYXRpb25Gb3IodGhpcy5jZmdOYW1lcy5Zb3VyRGF0YUhlYWRlcikuaW1tZWRpYXRlbHlWaXNpYmxlKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0RlbGl2ZXJ5ID0gdGhpcy5fc2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2UuZ2V0T2JqZWN0Q29uZmlndXJhdGlvbkZvcih0aGlzLmNmZ05hbWVzLkRlbGl2ZXJ5SGVhZGVyKS5pbW1lZGlhdGVseVZpc2libGUoKTtcclxuICAgICAgICAgICAgdGhpcy5zaG93T3ZlcnZpZXcgPSB0aGlzLl9zY3JlZW5Db25maWd1cmF0aW9uU2VydmljZS5nZXRPYmplY3RDb25maWd1cmF0aW9uRm9yKHRoaXMuY2ZnTmFtZXMuT3ZlcnZpZXdBbmRQYXltZW50SGVhZGVyKS5pbW1lZGlhdGVseVZpc2libGUoKTtcclxuICAgICAgICAgICAgdGhpcy5jb25maWdMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICApXHJcbiAgICBpZiAodGhpcy5uZXdUcmFuc2FjdGlvbikge1xyXG4gICAgICB0aGlzLnNlcnZpY2UucmVzZXRDdXJyZW50VHJhbnNhY3Rpb24oKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2VydmljZS50cmFuc2FjdGlvbktpbmQgPSB0aGlzLnRyYW5zYWN0aW9uVHlwZTtcclxuICAgIHRoaXMucmVsYXRpb25UeXBlID0gdGhpcy5zZXJ2aWNlLmdldFJlbGF0aW9uS2luZEZyb21UcmFuc2FjdGlvbktpbmQoKTtcclxuICAgIHRoaXMuc2VydmljZS5jcmVhdGVOZXdSZWxhdGlvbigpO1xyXG4gICAgaWYgKHRoaXMucmVsYXRpb25Ocikge1xyXG4gICAgICB0aGlzLnNlcnZpY2Uuc2V0UmVsYXRpb25PblRyYW5zYWN0aW9uKHRoaXMucmVsYXRpb25OciwgdGhpcy5yZWxhdGlvblR5cGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLl9zdWJzLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgaWYgKHRoaXMuX3JlbGF0aW9uU2VydmljZS5yZWxhdGlvbkxvY2tlZCB8fCB0aGlzLnNlcnZpY2UudHJhbnNhY3Rpb25Mb2NrZWQpIHtcclxuICAgICAgdGhpcy5zZXJ2aWNlLnJlc2V0TG9ja1RyYW5zYWN0aW9uKCk7XHJcbiAgICAgIHRoaXMuc2VydmljZS5yb2xsYmFjaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZUNyZWF0ZVRyYW5zYWN0aW9uKGV2ZW50OiBNb3VzZUV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy5zdGVwcGVyLmFjdGl2ZVN0ZXAgPT09IDApIHtcclxuICAgICAgaWYgKGF3YWl0IHRoaXMuaGFuZGxlUmVsYXRpb25WYWxpZGF0aW9uKCkpIHtcclxuICAgICAgICAvLyBzdWNjZXNzID0gYXdhaXQgdGhpcy5zZXJ2aWNlLnNhdmVSZWxhdGlvbigpO1xyXG4gICAgICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uVHlwZSAhPT0gdGhpcy50cmFuc0tpbmQuU2FsZXNRdW90YXRpb24pIHtcclxuICAgICAgICAgIGF3YWl0IHRoaXMuc2VydmljZS51cGRhdGVIZWFkZXJUcmFuc2FjdGlvbkRlZmluaXRpdmUodGhpcy5zZXJ2aWNlLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udXVpZCwgdHJ1ZSwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3Qgc2F2ZVN1Y2Nlc3M6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLnNlcnZpY2Uuc2F2ZVRyYW5zYWN0aW9uQW5kQ29tbWl0KCk7XHJcbiAgICBpZiAoc2F2ZVN1Y2Nlc3MpIHtcclxuICAgICAgdGhpcy5oYW5kbGVUcmFuc2FjdGlvbkZpbmlzaGVkKHRoaXMuc2VydmljZS5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnRyYW5zYWN0aW9uTnIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZVJlbGF0aW9uVmFsaWRhdGlvbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGlmICh0aGlzLmNoZWNrb3V0UmVsYXRpb24gJiYgdGhpcy5zdGVwUmVsYXRpb24pIHtcclxuICAgICAgY29uc3QgdmFsaWQgPSB0aGlzLmNoZWNrb3V0UmVsYXRpb24uc3VibWl0KCk7XHJcbiAgICAgIGlmICh2YWxpZCkge1xyXG4gICAgICAgIHRoaXMuc3RlcFJlbGF0aW9uLmNvbXBsZXRlZCA9IGF3YWl0IHRoaXMuc2F2ZVJlbGF0aW9uKCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHZhbGlkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZURlbGl2ZXJ5VmFsaWRhdGlvbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGlmICh0aGlzLmNoZWNrb3V0RGVsaXZlcnkgJiYgdGhpcy5zdGVwRGVsaXZlcnkpIHtcclxuICAgICAgY29uc3QgdmFsaWQgPSB0aGlzLmNoZWNrb3V0RGVsaXZlcnkuc3VibWl0KCk7XHJcbiAgICAgIGlmICh2YWxpZCkge1xyXG4gICAgICAgIGNvbnN0IHNhdmVTdWNjZXNzOiBib29sZWFuID0gYXdhaXQgdGhpcy5zZXJ2aWNlLnNhdmVUcmFuc2FjdGlvbkFuZENvbW1pdCgpO1xyXG4gICAgICAgIGlmIChzYXZlU3VjY2Vzcykge1xyXG4gICAgICAgICAgY29uc3QgbG9ja1N1Y2Nlc3M6IGJvb2xlYW4gPVxyXG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2VydmljZS50cnlUb0xvY2tUcmFuc2FjdGlvbih0aGlzLnNlcnZpY2UuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5pZCwgdGhpcy5zZXJ2aWNlLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udmVyc2lvbik7XHJcbiAgICAgICAgICBpZiAobG9ja1N1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgdGhpcy5zdGVwRGVsaXZlcnkuY29tcGxldGVkID0gYXdhaXQgdGhpcy5oYW5kbGVTYXZlRGVsaXZlcnkoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHZhbGlkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNhdmVSZWxhdGlvbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGNvbnN0IHN1Y2Nlc3M6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLnNlcnZpY2Uuc2F2ZVJlbGF0aW9uKCk7XHJcbiAgICBpZiAoc3VjY2Vzcykge1xyXG4gICAgICBpZiAodGhpcy5kZWxpdmVyeUFkZHJlc3NOYXdOciA9PT0gbnVsbCB8fCB0aGlzLmRlbGl2ZXJ5QWRkcmVzc05hd05yID09PSB1bmRlZmluZWQgfHwgdGhpcy5kZWxpdmVyeUFkZHJlc3NOYXdOciA9PT0gMCAmJiB0aGlzLnNlcnZpY2UucmVsYXRpb24uYWRkcmVzc2VzICYmIHRoaXMuc2VydmljZS5yZWxhdGlvbi5hZGRyZXNzZXMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgdGhpcy5kZWxpdmVyeUFkZHJlc3NOYXdOciA9IHRoaXMuc2VydmljZS5yZWxhdGlvbi5hZGRyZXNzZXNbMF0ubmF3TnI7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuc2VydmljZS5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnRyYW5zYWN0aW9uQWRkcmVzcyAhPT0gdGhpcy5kZWxpdmVyeUFkZHJlc3NOYXdOcikge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuc2VydmljZS51cGRhdGVIZWFkZXJEZWxpdmVyeUFkZHJlc3ModGhpcy5zZXJ2aWNlLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udXVpZCwgdGhpcy5kZWxpdmVyeUFkZHJlc3NOYXdOcik7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgaW52b2ljZUFkZHJlc3NOYXdOcjogbnVtYmVyID0gdGhpcy5pbnZvaWNlQWRkcmVzc05hd05yID8gdGhpcy5pbnZvaWNlQWRkcmVzc05hd05yIDogdGhpcy5kZWxpdmVyeUFkZHJlc3NOYXdOcjtcclxuICAgICAgaWYgKHRoaXMuc2VydmljZS5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmludm9pY2VBZGRyZXNzICE9PSBpbnZvaWNlQWRkcmVzc05hd05yKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnVwZGF0ZUhlYWRlckludm9pY2VBZGRyZXNzKHRoaXMuc2VydmljZS5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnV1aWQsIGludm9pY2VBZGRyZXNzTmF3TnIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3VjY2VzcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVTYXZlRGVsaXZlcnkoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEZWxpdmVyeUFkZHJlc3NDaGFuZ2UobmF3TnI6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5kZWxpdmVyeUFkZHJlc3NOYXdOciA9IG5hd05yO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUludm9pY2VBZGRyZXNzQ2hhbmdlKG5hd05yOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuaW52b2ljZUFkZHJlc3NOYXdOciA9IG5hd05yO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVRyYW5zYWN0aW9uRmluaXNoZWQoaWQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5zZXJ2aWNlLnJlc2V0Q3VycmVudFRyYW5zYWN0aW9uKCk7XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uRmluaXNoZWQuZW1pdCh7aWQ6IGlkLCBmcm9tQ2hlY2tvdXQ6IHRoaXMuc2hvd0NyZWF0ZVRyYW5zYWN0aW9uQnV0dG9ufSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -5,7 +5,7 @@ import { Icon } from '../../enum/icon.enum';
5
5
  import { TransactionEventService } from '../../service/transaction-event.service';
6
6
  import { OverlayService } from '@colijnit/corecomponents_v12';
7
7
  import { TransactionLinesPopupComponent } from '../transaction-lines-popup/transaction-lines-popup.component';
8
- export class confirmationViewModel {
8
+ export class ConfirmationViewModel {
9
9
  constructor() {
10
10
  this.temp = false;
11
11
  }
@@ -20,7 +20,7 @@ export class PurchaseConfirmationLinesComponent {
20
20
  this.icons = Icon;
21
21
  this.purchaseConfirmations = [];
22
22
  this.transactionLines = [];
23
- this.showPopup = false;
23
+ this.hasPdfFileUrl = false;
24
24
  this._subs = [];
25
25
  }
26
26
  showClass() {
@@ -31,15 +31,19 @@ export class PurchaseConfirmationLinesComponent {
31
31
  if (needed) {
32
32
  this.purchaseConfirmations.length = 0;
33
33
  this._purchaseConfirmationService.confirmationAnalysisResult.forEach(ca => {
34
- const viewModel = new confirmationViewModel();
34
+ const viewModel = new ConfirmationViewModel();
35
35
  viewModel.confirmation = ca;
36
36
  this.purchaseConfirmations.push(viewModel);
37
37
  });
38
+ this.hasPdfFileUrl = this._purchaseConfirmationService.analyzedConfirmation &&
39
+ this._purchaseConfirmationService.analyzedConfirmation.fileUrl !== null &&
40
+ this._purchaseConfirmationService.analyzedConfirmation.fileUrl !== undefined;
38
41
  }
39
42
  }), this._transactionEventService.orderConfirmationDropped.subscribe((data) => {
40
- const viewModel = this.purchaseConfirmations.find(pc => pc.confirmation.id === data.analysisId);
41
- if (viewModel) {
42
- viewModel.cssBoxShadow = `inset 0 0 2px 1px ${data.color}`;
43
+ this.purchaseConfirmations.filter(p => p.lineNr === data.lineNr).forEach(p => p.color = "");
44
+ if (this.currentConfirmationViewModel) {
45
+ this.currentConfirmationViewModel.lineNr = data.lineNr;
46
+ this.currentConfirmationViewModel.color = data.color;
43
47
  }
44
48
  this._changeDetector.markForCheck();
45
49
  }));
@@ -50,48 +54,42 @@ export class PurchaseConfirmationLinesComponent {
50
54
  ngOnDestroy() {
51
55
  this._subs.forEach(s => s.unsubscribe());
52
56
  }
57
+ openPdf() {
58
+ window.open(this._purchaseConfirmationService.analyzedConfirmation.fileUrl, "_blank");
59
+ }
53
60
  handleClearAnalysis() {
54
61
  this._purchaseConfirmationService.confirmationAnalysisId = undefined;
55
62
  }
56
- handleShowHideClick(confirmation) {
57
- // this.showPopup = !this.showPopup;
58
- // if (this.showPopup) {
59
- // this._showPopup(confirmation);
60
- // } else {
61
- // this._hidePopup();
62
- // }
63
- }
64
- handleDragStart(event, confirmation) {
65
- if (confirmation) {
63
+ handleDragStart(event, confirmationVM) {
64
+ if (confirmationVM && confirmationVM.confirmation) {
66
65
  event.dataTransfer.dropEffect = "link";
67
- event.dataTransfer.setData("orderConfirmationAnalysis", JSON.stringify(confirmation));
66
+ event.dataTransfer.setData("orderConfirmationAnalysis", JSON.stringify(confirmationVM.confirmation));
67
+ this.currentConfirmationViewModel = confirmationVM;
68
+ }
69
+ else {
70
+ this.currentConfirmationViewModel = undefined;
68
71
  }
69
- }
70
- noReturnPredicate(drag, drop) {
71
- return false;
72
- }
73
- handleDropListExit(event) {
74
- this.purchaseConfirmations.splice(this.purchaseConfirmations.findIndex(pc => pc.confirmation.id === event.item.data.id) + 1, 0, Object.assign(Object.assign({}, event.item.data), { temp: true }));
75
- }
76
- handleDropListEntered(event) {
77
- // @ts-ignore
78
- this.purchaseConfirmations.splice(this.purchaseConfirmations.findIndex(pc => pc.temp === true), 1);
79
72
  }
80
73
  trackByFn(index, line) {
81
74
  return line.confirmation.id;
82
75
  }
83
- _showPopup(confirmation) {
84
- this.showPopup = true;
85
- this._popupComponentRef = this._overlayService.createComponent(TransactionLinesPopupComponent, { parentForOverlay: this.parentElementForPopup, transactionLines: this.transactionLines }, {
86
- transactionLineClick: (line) => this._handleTransactionLineClick(line, confirmation),
87
- clickOutside: () => this.handleShowHideClick(confirmation)
88
- });
76
+ showPopup(element, confirmationVM) {
77
+ if (confirmationVM && confirmationVM.confirmation) {
78
+ this.currentConfirmationViewModel = confirmationVM;
79
+ this._popupComponentRef = this._overlayService.createComponent(TransactionLinesPopupComponent, { parentForOverlay: element, transactionLines: this.transactionLines }, {
80
+ transactionLineClick: (line) => this._handleTransactionLineClick(line, this.currentConfirmationViewModel.confirmation),
81
+ clickOutside: () => this.hidePopup()
82
+ });
83
+ }
84
+ else {
85
+ this.currentConfirmationViewModel = undefined;
86
+ }
89
87
  }
90
- _hidePopup() {
91
- this.showPopup = false;
88
+ hidePopup() {
92
89
  this._overlayService.removeComponent(this._popupComponentRef);
93
90
  }
94
91
  _handleTransactionLineClick(line, confirmation) {
92
+ this.hidePopup();
95
93
  this._purchaseConfirmationService.linkAnalysisToTransactionLine(line, confirmation);
96
94
  }
97
95
  }
@@ -99,30 +97,74 @@ PurchaseConfirmationLinesComponent.decorators = [
99
97
  { type: Component, args: [{
100
98
  selector: 'co-purchase-confirmation-lines',
101
99
  template: `
102
- <co-icon class="delete-confirmation-icon" [iconData]="iconCacheService.getIcon(icons.TrashBin)" (click)="handleClearAnalysis()"></co-icon>
100
+ <div class="confirmation-button-wrapper">
101
+ <co-icon *ngIf="hasPdfFileUrl" class="open-confirmation-pdf-icon" [iconData]="iconCacheService.getIcon(icons.Pdf)"
102
+ (click)="openPdf()"></co-icon>
103
+ <co-icon class="delete-confirmation-icon" [iconData]="iconCacheService.getIcon(icons.TrashBin)"
104
+ (click)="handleClearAnalysis()"></co-icon>
105
+ </div>
103
106
  <div class="purchase-confirmation-lines-drag-drop-list">
104
- <div class="purchase-confirmation-header">
105
- <div class="purchase-confirmation-drag-handle"></div>
106
- <div class="purchase-confirmation-quantity co-transaction-flex-right-align" [textContent]="'AMOUNT' | localize"></div>
107
- <div class="purchase-confirmation-description" [textContent]="'DESCRIPTION' | localize"></div>
108
- <div class="purchase-confirmation-date co-transaction-flex-right-align" [textContent]="'DELIVERY_DATE' | localize"></div>
109
- <div class="purchase-confirmation-price co-transaction-flex-right-align" [textContent]="'PRICE' | localize"></div>
110
- <div class="purchase-confirmation-link-button" [textContent]="'LINK' | localize"></div>
111
- </div>
112
- <div class="draggable-purchase-confirmation-line" *ngFor="let confirmationViewModel of purchaseConfirmations; trackBy:trackByFn;"
113
- draggable="true"
114
- [style.box-shadow]="confirmationViewModel.cssBoxShadow"
115
- (dragstart)="handleDragStart($event, confirmationViewModel.confirmation)">
116
- <co-icon class="purchase-confirmation-line-drag-handle" [iconData]="iconCacheService.getIcon(icons.GripDotsVerticalSolid)">
117
- </co-icon>
118
- <div class="confirmation-wrapper">
119
- <div class="co-transaction-flex-right-align" [textContent]="confirmationViewModel.confirmation.productQuantity"></div>
120
- <div [textContent]="confirmationViewModel.confirmation.productDescription"></div>
121
- <div class="co-transaction-flex-right-align" [textContent]="confirmationViewModel.confirmation.orderConfirmationDate | date: 'dd-MM-yyyy'"></div>
122
- <div class="co-transaction-flex-right-align" [textContent]="confirmationViewModel.confirmation.price | coCurrency"></div>
123
- <div #parentForOverlay class="link-button" [textContent]="'...'" (click)="handleShowHideClick(confirmationViewModel.confirmation)"></div>
124
- </div>
125
- </div>
107
+ <table class="purchase-confirmation-table">
108
+ <colgroup>
109
+ <col class="purchase-confirmation-linked-color" />
110
+ <col class="purchase-confirmation-line-drag-handle" />
111
+ <col />
112
+ <col />
113
+ <col />
114
+ <col />
115
+ <col />
116
+ <col />
117
+ </colgroup>
118
+ <tr>
119
+ <th></th>
120
+ <th></th>
121
+ <th class="right-align" [textContent]="'AMOUNT' | localize"></th>
122
+ <th [textContent]="'ARTICLE_NO_SUPPLIER' | localize"></th>
123
+ <th [textContent]="'DESCRIPTION' | localize"></th>
124
+ <th [textContent]="'DELIVERY_DATE' | localize"></th>
125
+ <th class="right-align" [textContent]="'PRICE' | localize"></th>
126
+ <th [textContent]="'LINK' | localize"></th>
127
+ </tr>
128
+ <tr class="draggable-purchase-confirmation-line" *ngFor="let confirmationViewModel of purchaseConfirmations; trackBy:trackByFn;" draggable="true"
129
+ (dragstart)="handleDragStart($event, confirmationViewModel)">
130
+ <td [style.background-color]="confirmationViewModel.color"></td>
131
+ <td><co-icon class="purchase-confirmation-line-drag-handle" [iconData]="iconCacheService.getIcon(icons.GripDotsVerticalSolid)"></co-icon></td>
132
+ <td class="right-align" [textContent]="confirmationViewModel.confirmation.productQuantity"></td>
133
+ <td [textContent]="confirmationViewModel.confirmation.supplierProductCode"></td>
134
+ <td [textContent]="confirmationViewModel.confirmation.productDescription"></td>
135
+ <td [textContent]="confirmationViewModel.confirmation.orderConfirmationDate | date: 'dd-MM-yyyy'"></td>
136
+ <td class="right-align" [textContent]="confirmationViewModel.confirmation.price | coCurrency"></td>
137
+ <td #parentForOverlay class="link-button" [textContent]="'...'" (click)="showPopup(parentForOverlay, confirmationViewModel)"></td>
138
+ </tr>
139
+ </table>
140
+ <!--
141
+ <div class="purchase-confirmation-header">
142
+ <div class="purchase-confirmation-drag-handle"></div>
143
+ <div class="purchase-confirmation-quantity co-transaction-flex-right-align" [textContent]="'AMOUNT' | localize"></div>
144
+ <div class="purchase-confirmation-article-nr" [textContent]="'ARTICLE_NO_SUPPLIER' | localize"></div>
145
+ <div class="purchase-confirmation-description" [textContent]="'DESCRIPTION' | localize"></div>
146
+ <div class="purchase-confirmation-date co-transaction-flex-right-align" [textContent]="'DELIVERY_DATE' | localize"></div>
147
+ <div class="purchase-confirmation-price co-transaction-flex-right-align" [textContent]="'PRICE' | localize"></div>
148
+ <div class="purchase-confirmation-link-button" [textContent]="'LINK' | localize"></div>
149
+ </div>
150
+ <div class="draggable-purchase-confirmation-line" *ngFor="let confirmationViewModel of purchaseConfirmations; trackBy:trackByFn;" draggable="true"
151
+ (dragstart)="handleDragStart($event, confirmationViewModel)">
152
+ <div class="purchase-confirmation-linked-color" [style.background-color]="confirmationViewModel.color"></div>
153
+ <co-icon class="purchase-confirmation-line-drag-handle"
154
+ [iconData]="iconCacheService.getIcon(icons.GripDotsVerticalSolid)"></co-icon>
155
+ <div class="confirmation-wrapper">
156
+ <div class="co-transaction-flex-right-align" [textContent]="confirmationViewModel.confirmation.productQuantity"></div>
157
+ <div [textContent]="confirmationViewModel.confirmation.supplierProductCode"></div>
158
+ <div [textContent]="confirmationViewModel.confirmation.productDescription"></div>
159
+ <div class="co-transaction-flex-right-align"
160
+ [textContent]="confirmationViewModel.confirmation.orderConfirmationDate | date: 'dd-MM-yyyy'"></div>
161
+ <div class="co-transaction-flex-right-align"
162
+ [textContent]="confirmationViewModel.confirmation.price | coCurrency"></div>
163
+ <div #parentForOverlay class="link-button" [textContent]="'...'"
164
+ (click)="showPopup(parentForOverlay, confirmationViewModel)"></div>
165
+ </div>
166
+ </div>
167
+ -->
126
168
  </div>
127
169
  `,
128
170
  providers: [
@@ -143,4 +185,4 @@ PurchaseConfirmationLinesComponent.propDecorators = {
143
185
  transaction: [{ type: Input }],
144
186
  showClass: [{ type: HostBinding, args: ['class.co-purchase-confirmation-lines',] }]
145
187
  };
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyY2hhc2UtY29uZmlybWF0aW9uLWxpbmVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvY29tcG9uZW50L3B1cmNoYXNlLWNvbmZpcm1hdGlvbi1saW5lcy9wdXJjaGFzZS1jb25maXJtYXRpb24tbGluZXMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU1SSxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQztBQUN4RixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFMUMsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFJaEYsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBQyw4QkFBOEIsRUFBQyxNQUFNLDhEQUE4RCxDQUFDO0FBRTVHLE1BQU0sT0FBTyxxQkFBcUI7SUFBbEM7UUFFVyxTQUFJLEdBQVksS0FBSyxDQUFDO0lBRWpDLENBQUM7Q0FBQTtBQW9DRCxNQUFNLE9BQU8sa0NBQWtDO0lBcUIzQyxZQUNXLGdCQUFrQyxFQUNqQyw0QkFBeUQsRUFDekQsd0JBQWlELEVBQ2pELGVBQWtDLEVBQ2xDLGVBQStCO1FBSmhDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDakMsaUNBQTRCLEdBQTVCLDRCQUE0QixDQUE2QjtRQUN6RCw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQXlCO1FBQ2pELG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtR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Q0FBQztRQUN2QixJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRU8sMkJBQTJCLENBQUMsSUFBeUIsRUFBRSxZQUE2QztRQUN4RyxJQUFJLENBQUMsNEJBQTRCLENBQUMsNkJBQTZCLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3hGLENBQUM7OztZQWxKSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLGdDQUFnQztnQkFDMUMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQTBCVDtnQkFDRCxTQUFTLEVBQUU7b0JBQ1AsY0FBYztpQkFDakI7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDeEM7OztZQWpETyxnQkFBZ0I7WUFEaEIsMkJBQTJCO1lBSTNCLHVCQUF1QjtZQU52QixpQkFBaUI7WUFVakIsY0FBYzs7O29DQThDakIsU0FBUyxTQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTswQkFHbEQsS0FBSzt3QkFHTCxXQUFXLFNBQUMsc0NBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtPcmRlckNvbmZpcm1hdGlvbkFuYWx5c2lzUmVzdWx0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb3JkZXItY29uZmlybWF0aW9uLWFuYWx5c2lzLXJlc3VsdC5ibyc7XHJcbmltcG9ydCB7UHVyY2hhc2VDb25maXJtYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3B1cmNoYXNlLWNvbmZpcm1hdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2ljb24tY2FjaGUuc2VydmljZSc7XHJcbmltcG9ydCB7SWNvbn0gZnJvbSAnLi4vLi4vZW51bS9pY29uLmVudW0nO1xyXG5pbXBvcnQge0Nka0RyYWcsIENka0RyYWdFbnRlciwgQ2RrRHJhZ0V4aXQsIENka0Ryb3BMaXN0fSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkV2ZW50U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi1ldmVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm9SZXNwb25zZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWluZm8tcmVzcG9uc2UuYm8nO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lSW5mb30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWxpbmUtaW5mby5ibyc7XHJcbmltcG9ydCB7T3ZlcmxheVNlcnZpY2V9IGZyb20gJ0Bjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTInO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uTGluZXNQb3B1cENvbXBvbmVudH0gZnJvbSAnLi4vdHJhbnNhY3Rpb24tbGluZXMtcG9wdXAvdHJhbnNhY3Rpb24tbGluZXMtcG9wdXAuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCBjbGFzcyBjb25maXJtYXRpb25WaWV3TW9kZWwge1xyXG4gICAgcHVibGljIGNvbmZpcm1hdGlvbjogT3JkZXJDb25maXJtYXRpb25BbmFseXNpc1Jlc3VsdDtcclxuICAgIHB1YmxpYyB0ZW1wOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgY3NzQm94U2hhZG93OiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjby1wdXJjaGFzZS1jb25maXJtYXRpb24tbGluZXMnLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8Y28taWNvbiBjbGFzcz1cImRlbGV0ZS1jb25maXJtYXRpb24taWNvblwiIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuVHJhc2hCaW4pXCIgKGNsaWNrKT1cImhhbmRsZUNsZWFyQW5hbHlzaXMoKVwiPjwvY28taWNvbj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHVyY2hhc2UtY29uZmlybWF0aW9uLWxpbmVzLWRyYWctZHJvcC1saXN0XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdXJjaGFzZS1jb25maXJtYXRpb24taGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHVyY2hhc2UtY29uZmlybWF0aW9uLWRyYWctaGFuZGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHVyY2hhc2UtY29uZmlybWF0aW9uLXF1YW50aXR5IGNvLXRyYW5zYWN0aW9uLWZsZXgtcmlnaHQtYWxpZ25cIiBbdGV4dENvbnRlbnRdPVwiJ0FNT1VOVCcgfCBsb2NhbGl6ZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB1cmNoYXNlLWNvbmZpcm1hdGlvbi1kZXNjcmlwdGlvblwiIFt0ZXh0Q29udGVudF09XCInREVTQ1JJUFRJT04nIHwgbG9jYWxpemVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdXJjaGFzZS1jb25maXJtYXRpb24tZGF0ZSBjby10cmFuc2FjdGlvbi1mbGV4LXJpZ2h0LWFsaWduXCIgW3RleHRDb250ZW50XT1cIidERUxJVkVSWV9EQVRFJyB8IGxvY2FsaXplXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHVyY2hhc2UtY29uZmlybWF0aW9uLXByaWNlIGNvLXRyYW5zYWN0aW9uLWZsZXgtcmlnaHQtYWxpZ25cIiBbdGV4dENvbnRlbnRdPVwiJ1BSSUNFJyB8IGxvY2FsaXplXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHVyY2hhc2UtY29uZmlybWF0aW9uLWxpbmstYnV0dG9uXCIgW3RleHRDb250ZW50XT1cIidMSU5LJyB8IGxvY2FsaXplXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJhZ2dhYmxlLXB1cmNoYXNlLWNvbmZpcm1hdGlvbi1saW5lXCIgKm5nRm9yPVwibGV0IGNvbmZpcm1hdGlvblZpZXdNb2RlbCBvZiBwdXJjaGFzZUNvbmZpcm1hdGlvbnM7IHRyYWNrQnk6dHJhY2tCeUZuO1wiIFxyXG4gICAgICAgICAgICAgICAgIGRyYWdnYWJsZT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgIFtzdHlsZS5ib3gtc2hhZG93XT1cImNvbmZpcm1hdGlvblZpZXdNb2RlbC5jc3NCb3hTaGFkb3dcIlxyXG4gICAgICAgICAgICAgICAgIChkcmFnc3RhcnQpPVwiaGFuZGxlRHJhZ1N0YXJ0KCRldmVudCwgY29uZmlybWF0aW9uVmlld01vZGVsLmNvbmZpcm1hdGlvbilcIj5cclxuICAgICAgICAgICAgICAgIDxjby1pY29uIGNsYXNzPVwicHVyY2hhc2UtY29uZmlybWF0aW9uLWxpbmUtZHJhZy1oYW5kbGVcIiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkdyaXBEb3RzVmVydGljYWxTb2xpZClcIj5cclxuICAgICAgICAgICAgICAgIDwvY28taWNvbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maXJtYXRpb24td3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjby10cmFuc2FjdGlvbi1mbGV4LXJpZ2h0LWFsaWduXCIgW3RleHRDb250ZW50XT1cImNvbmZpcm1hdGlvblZpZXdNb2RlbC5jb25maXJtYXRpb24ucHJvZHVjdFF1YW50aXR5XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbdGV4dENvbnRlbnRdPVwiY29uZmlybWF0aW9uVmlld01vZGVsLmNvbmZpcm1hdGlvbi5wcm9kdWN0RGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tdHJhbnNhY3Rpb24tZmxleC1yaWdodC1hbGlnblwiIFt0ZXh0Q29udGVudF09XCJjb25maXJtYXRpb25WaWV3TW9kZWwuY29uZmlybWF0aW9uLm9yZGVyQ29uZmlybWF0aW9uRGF0ZSB8IGRhdGU6ICdkZC1NTS15eXl5J1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjby10cmFuc2FjdGlvbi1mbGV4LXJpZ2h0LWFsaWduXCIgW3RleHRDb250ZW50XT1cImNvbmZpcm1hdGlvblZpZXdNb2RlbC5jb25maXJtYXRpb24ucHJpY2UgfCBjb0N1cnJlbmN5XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAjcGFyZW50Rm9yT3ZlcmxheSBjbGFzcz1cImxpbmstYnV0dG9uXCIgW3RleHRDb250ZW50XT1cIicuLi4nXCIgKGNsaWNrKT1cImhhbmRsZVNob3dIaWRlQ2xpY2soY29uZmlybWF0aW9uVmlld01vZGVsLmNvbmZpcm1hdGlvbilcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIGAsXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICBPdmVybGF5U2VydmljZVxyXG4gICAgXSxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIFB1cmNoYXNlQ29uZmlybWF0aW9uTGluZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdwYXJlbnRGb3JPdmVybGF5JywgeyByZWFkOiBFbGVtZW50UmVmIH0pXHJcbiAgICBwdWJsaWMgcGFyZW50RWxlbWVudEZvclBvcHVwOiBFbGVtZW50UmVmO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlO1xyXG5cclxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuY28tcHVyY2hhc2UtY29uZmlybWF0aW9uLWxpbmVzJylcclxuICAgIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHB1cmNoYXNlQ29uZmlybWF0aW9uczogY29uZmlybWF0aW9uVmlld01vZGVsW10gPSBbXTtcclxuICAgIHB1YmxpYyB0cmFuc2FjdGlvbkxpbmVzOiBUcmFuc2FjdGlvbkxpbmVJbmZvW10gPSBbXTtcclxuICAgIHB1YmxpYyBzaG93UG9wdXA6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gICAgcHJpdmF0ZSBfcG9wdXBDb21wb25lbnRSZWY7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIGljb25DYWNoZVNlcnZpY2U6IEljb25DYWNoZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfcHVyY2hhc2VDb25maXJtYXRpb25TZXJ2aWNlOiBQdXJjaGFzZUNvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfdHJhbnNhY3Rpb25FdmVudFNlcnZpY2U6IFRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICBwcml2YXRlIF9vdmVybGF5U2VydmljZTogT3ZlcmxheVNlcnZpY2VcclxuICAgICkge1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuX3N1YnMucHVzaChcclxuICAgICAgICAgICAgdGhpcy5fcHVyY2hhc2VDb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm1hdGlvbk5lZWRlZC5zdWJzY3JpYmUoKG5lZWRlZDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKG5lZWRlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHVyY2hhc2VDb25maXJtYXRpb25zLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHVyY2hhc2VDb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm1hdGlvbkFuYWx5c2lzUmVzdWx0LmZvckVhY2goY2EgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2aWV3TW9kZWw6IGNvbmZpcm1hdGlvblZpZXdNb2RlbCA9IG5ldyBjb25maXJtYXRpb25WaWV3TW9kZWwoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmlld01vZGVsLmNvbmZpcm1hdGlvbiA9IGNhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnB1cmNoYXNlQ29uZmlybWF0aW9ucy5wdXNoKHZpZXdNb2RlbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICB0aGlzLl90cmFuc2FjdGlvbkV2ZW50U2VydmljZS5vcmRlckNvbmZpcm1hdGlvbkRyb3BwZWQuc3Vic2NyaWJlKChkYXRhOiB7bGluZU5yOiBudW1iZXIsIGFuYWx5c2lzSWQ6IG51bWJlciwgY29sb3I6IHN0cmluZ30pID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZpZXdNb2RlbDogY29uZmlybWF0aW9uVmlld01vZGVsID0gdGhpcy5wdXJjaGFzZUNvbmZpcm1hdGlvbnMuZmluZChwYyA9PiBwYy5jb25maXJtYXRpb24uaWQgPT09IGRhdGEuYW5hbHlzaXNJZCk7XHJcbiAgICAgICAgICAgICAgICBpZiAodmlld01vZGVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmlld01vZGVsLmNzc0JveFNoYWRvdyA9IGBpbnNldCAwIDAgMnB4IDFweCAke2RhdGEuY29sb3J9YDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMudHJhbnNhY3Rpb24gJiYgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkxpbmVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25MaW5lcyA9IHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25MaW5lcy5maWx0ZXIodGwgPT4gdGwuaXNBcnRpY2xlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5fc3Vicy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlQ2xlYXJBbmFseXNpcygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9wdXJjaGFzZUNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybWF0aW9uQW5hbHlzaXNJZCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlU2hvd0hpZGVDbGljayhjb25maXJtYXRpb246IE9yZGVyQ29uZmlybWF0aW9uQW5hbHlzaXNSZXN1bHQpOiB2b2lkIHtcclxuICAgICAgICAvLyB0aGlzLnNob3dQb3B1cCA9ICF0aGlzLnNob3dQb3B1cDtcclxuICAgICAgICAvLyBpZiAodGhpcy5zaG93UG9wdXApIHtcclxuICAgICAgICAvLyAgICAgdGhpcy5fc2hvd1BvcHVwKGNvbmZpcm1hdGlvbik7XHJcbiAgICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgICAvLyAgICAgdGhpcy5faGlkZVBvcHVwKCk7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBoYW5kbGVEcmFnU3RhcnQoZXZlbnQ6IERyYWdFdmVudCwgY29uZmlybWF0aW9uOiBPcmRlckNvbmZpcm1hdGlvbkFuYWx5c2lzUmVzdWx0KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGNvbmZpcm1hdGlvbikge1xyXG4gICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9IFwibGlua1wiO1xyXG4gICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YShcIm9yZGVyQ29uZmlybWF0aW9uQW5hbHlzaXNcIiwgSlNPTi5zdHJpbmdpZnkoY29uZmlybWF0aW9uKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBub1JldHVyblByZWRpY2F0ZShkcmFnOiBDZGtEcmFnLCBkcm9wOiBDZGtEcm9wTGlzdCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVEcm9wTGlzdEV4aXQoZXZlbnQ6IENka0RyYWdFeGl0PGFueT4pIHtcclxuICAgICAgICB0aGlzLnB1cmNoYXNlQ29uZmlybWF0aW9ucy5zcGxpY2UodGhpcy5wdXJjaGFzZUNvbmZpcm1hdGlvbnMuZmluZEluZGV4KHBjID0+IHBjLmNvbmZpcm1hdGlvbi5pZCA9PT0gZXZlbnQuaXRlbS5kYXRhLmlkKSArIDEsIDAsIHsgLi4uIGV2ZW50Lml0ZW0uZGF0YSwgdGVtcDogdHJ1ZSB9KTtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVEcm9wTGlzdEVudGVyZWQoZXZlbnQ6IENka0RyYWdFbnRlcjxhbnk+KSB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIHRoaXMucHVyY2hhc2VDb25maXJtYXRpb25zLnNwbGljZSh0aGlzLnB1cmNoYXNlQ29uZmlybWF0aW9ucy5maW5kSW5kZXgocGMgPT4gcGMudGVtcCA9PT0gdHJ1ZSksIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgbGluZTogY29uZmlybWF0aW9uVmlld01vZGVsKTogYW55IHtcclxuICAgICAgICByZXR1cm4gbGluZS5jb25maXJtYXRpb24uaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfc2hvd1BvcHVwKGNvbmZpcm1hdGlvbjogT3JkZXJDb25maXJtYXRpb25BbmFseXNpc1Jlc3VsdCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2hvd1BvcHVwID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLl9wb3B1cENvbXBvbmVudFJlZiA9IHRoaXMuX292ZXJsYXlTZXJ2aWNlLmNyZWF0ZUNvbXBvbmVudChUcmFuc2FjdGlvbkxpbmVzUG9wdXBDb21wb25lbnQsXHJcbiAgICAgICAgICAgIHtwYXJlbnRGb3JPdmVybGF5OiB0aGlzLnBhcmVudEVsZW1lbnRGb3JQb3B1cCwgdHJhbnNhY3Rpb25MaW5lczogdGhpcy50cmFuc2FjdGlvbkxpbmVzfSwge1xyXG4gICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25MaW5lQ2xpY2s6IChsaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvKSA9PiB0aGlzLl9oYW5kbGVUcmFuc2FjdGlvbkxpbmVDbGljayhsaW5lLCBjb25maXJtYXRpb24pLFxyXG4gICAgICAgICAgICAgICAgY2xpY2tPdXRzaWRlOiAoKSA9PiB0aGlzLmhhbmRsZVNob3dIaWRlQ2xpY2soY29uZmlybWF0aW9uKVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9oaWRlUG9wdXAoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zaG93UG9wdXAgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl9vdmVybGF5U2VydmljZS5yZW1vdmVDb21wb25lbnQodGhpcy5fcG9wdXBDb21wb25lbnRSZWYpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2hhbmRsZVRyYW5zYWN0aW9uTGluZUNsaWNrKGxpbmU6IFRyYW5zYWN0aW9uTGluZUluZm8sIGNvbmZpcm1hdGlvbjogT3JkZXJDb25maXJtYXRpb25BbmFseXNpc1Jlc3VsdCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3B1cmNoYXNlQ29uZmlybWF0aW9uU2VydmljZS5saW5rQW5hbHlzaXNUb1RyYW5zYWN0aW9uTGluZShsaW5lLCBjb25maXJtYXRpb24pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyY2hhc2UtY29uZmlybWF0aW9uLWxpbmVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvY29tcG9uZW50L3B1cmNoYXNlLWNvbmZpcm1hdGlvbi1saW5lcy9wdXJjaGFzZS1jb25maXJtYXRpb24tbGluZXMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU1SSxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQztBQUN4RixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDMUMsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFJaEYsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBQyw4QkFBOEIsRUFBQyxNQUFNLDhEQUE4RCxDQUFDO0FBRTVHLE1BQU0sT0FBTyxxQkFBcUI7SUFBbEM7UUFFVyxTQUFJLEdBQVksS0FBSyxDQUFDO0lBR2pDLENBQUM7Q0FBQTtBQWdGRCxNQUFNLE9BQU8sa0NBQWtDO0lBc0IzQyxZQUNXLGdCQUFrQyxFQUNqQyw0QkFBeUQsRUFDekQsd0JBQWlELEVBQ2pELGVBQWtDLEVBQ2xDLGVBQStCO1FBSmhDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDakMsaUNBQTRCLEdBQTVCLDRCQUE0QixDQUE2QjtRQUN6RCw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQXlCO1FBQ2pELG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtR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QkFBa0IsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTywyQkFBMkIsQ0FBQyxJQUF5QixFQUFFLFlBQTZDO1FBQ3hHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsNEJBQTRCLENBQUMsNkJBQTZCLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3hGLENBQUM7OztZQXhMSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLGdDQUFnQztnQkFDMUMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBc0VUO2dCQUNELFNBQVMsRUFBRTtvQkFDUCxjQUFjO2lCQUNqQjtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN4Qzs7O1lBN0ZPLGdCQUFnQjtZQURoQiwyQkFBMkI7WUFHM0IsdUJBQXVCO1lBTHZCLGlCQUFpQjtZQVNqQixjQUFjOzs7b0NBMkZqQixTQUFTLFNBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFOzBCQUdsRCxLQUFLO3dCQUdMLFdBQVcsU0FBQyxzQ0FBc0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge09yZGVyQ29uZmlybWF0aW9uQW5hbHlzaXNSZXN1bHR9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9vcmRlci1jb25maXJtYXRpb24tYW5hbHlzaXMtcmVzdWx0LmJvJztcclxuaW1wb3J0IHtQdXJjaGFzZUNvbmZpcm1hdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvcHVyY2hhc2UtY29uZmlybWF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtJY29ufSBmcm9tICcuLi8uLi9lbnVtL2ljb24uZW51bSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25FdmVudFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tZXZlbnQuc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2V9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1pbmZvLXJlc3BvbnNlLmJvJztcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uTGluZUluZm99IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1saW5lLWluZm8uYm8nO1xyXG5pbXBvcnQge092ZXJsYXlTZXJ2aWNlfSBmcm9tICdAY29saWpuaXQvY29yZWNvbXBvbmVudHNfdjEyJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVzUG9wdXBDb21wb25lbnR9IGZyb20gJy4uL3RyYW5zYWN0aW9uLWxpbmVzLXBvcHVwL3RyYW5zYWN0aW9uLWxpbmVzLXBvcHVwLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgY2xhc3MgQ29uZmlybWF0aW9uVmlld01vZGVsIHtcclxuICAgIHB1YmxpYyBjb25maXJtYXRpb246IE9yZGVyQ29uZmlybWF0aW9uQW5hbHlzaXNSZXN1bHQ7XHJcbiAgICBwdWJsaWMgdGVtcDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGxpbmVOcjogbnVtYmVyO1xyXG4gICAgcHVibGljIGNvbG9yOiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjby1wdXJjaGFzZS1jb25maXJtYXRpb24tbGluZXMnLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlybWF0aW9uLWJ1dHRvbi13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgIDxjby1pY29uICpuZ0lmPVwiaGFzUGRmRmlsZVVybFwiIGNsYXNzPVwib3Blbi1jb25maXJtYXRpb24tcGRmLWljb25cIiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLlBkZilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlblBkZigpXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cImRlbGV0ZS1jb25maXJtYXRpb24taWNvblwiIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuVHJhc2hCaW4pXCJcclxuICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUNsZWFyQW5hbHlzaXMoKVwiPjwvY28taWNvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHVyY2hhc2UtY29uZmlybWF0aW9uLWxpbmVzLWRyYWctZHJvcC1saXN0XCI+XHJcbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInB1cmNoYXNlLWNvbmZpcm1hdGlvbi10YWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgPGNvbGdyb3VwPlxyXG4gICAgICAgICAgICAgICAgICAgIDxjb2wgY2xhc3M9XCJwdXJjaGFzZS1jb25maXJtYXRpb24tbGlua2VkLWNvbG9yXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8Y29sIGNsYXNzPVwicHVyY2hhc2UtY29uZmlybWF0aW9uLWxpbmUtZHJhZy1oYW5kbGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxjb2wgLz5cclxuICAgICAgICAgICAgICAgICAgICA8Y29sIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNvbCAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxjb2wgLz5cclxuICAgICAgICAgICAgICAgICAgICA8Y29sIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNvbCAvPlxyXG4gICAgICAgICAgICAgICAgPC9jb2xncm91cD5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGg+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGg+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJyaWdodC1hbGlnblwiIFt0ZXh0Q29udGVudF09XCInQU1PVU5UJyB8IGxvY2FsaXplXCI+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGggW3RleHRDb250ZW50XT1cIidBUlRJQ0xFX05PX1NVUFBMSUVSJyB8IGxvY2FsaXplXCI+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGggW3RleHRDb250ZW50XT1cIidERVNDUklQVElPTicgfCBsb2NhbGl6ZVwiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoIFt0ZXh0Q29udGVudF09XCInREVMSVZFUllfREFURScgfCBsb2NhbGl6ZVwiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwicmlnaHQtYWxpZ25cIiBbdGV4dENvbnRlbnRdPVwiJ1BSSUNFJyB8IGxvY2FsaXplXCI+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGggW3RleHRDb250ZW50XT1cIidMSU5LJyB8IGxvY2FsaXplXCI+PC90aD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJkcmFnZ2FibGUtcHVyY2hhc2UtY29uZmlybWF0aW9uLWxpbmVcIiAqbmdGb3I9XCJsZXQgY29uZmlybWF0aW9uVmlld01vZGVsIG9mIHB1cmNoYXNlQ29uZmlybWF0aW9uczsgdHJhY2tCeTp0cmFja0J5Rm47XCIgZHJhZ2dhYmxlPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGRyYWdzdGFydCk9XCJoYW5kbGVEcmFnU3RhcnQoJGV2ZW50LCBjb25maXJtYXRpb25WaWV3TW9kZWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImNvbmZpcm1hdGlvblZpZXdNb2RlbC5jb2xvclwiPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPjxjby1pY29uIGNsYXNzPVwicHVyY2hhc2UtY29uZmlybWF0aW9uLWxpbmUtZHJhZy1oYW5kbGVcIiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkdyaXBEb3RzVmVydGljYWxTb2xpZClcIj48L2NvLWljb24+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJyaWdodC1hbGlnblwiIFt0ZXh0Q29udGVudF09XCJjb25maXJtYXRpb25WaWV3TW9kZWwuY29uZmlybWF0aW9uLnByb2R1Y3RRdWFudGl0eVwiPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIFt0ZXh0Q29udGVudF09XCJjb25maXJtYXRpb25WaWV3TW9kZWwuY29uZmlybWF0aW9uLnN1cHBsaWVyUHJvZHVjdENvZGVcIj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBbdGV4dENvbnRlbnRdPVwiY29uZmlybWF0aW9uVmlld01vZGVsLmNvbmZpcm1hdGlvbi5wcm9kdWN0RGVzY3JpcHRpb25cIj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBbdGV4dENvbnRlbnRdPVwiY29uZmlybWF0aW9uVmlld01vZGVsLmNvbmZpcm1hdGlvbi5vcmRlckNvbmZpcm1hdGlvbkRhdGUgfCBkYXRlOiAnZGQtTU0teXl5eSdcIj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInJpZ2h0LWFsaWduXCIgW3RleHRDb250ZW50XT1cImNvbmZpcm1hdGlvblZpZXdNb2RlbC5jb25maXJtYXRpb24ucHJpY2UgfCBjb0N1cnJlbmN5XCI+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgI3BhcmVudEZvck92ZXJsYXkgY2xhc3M9XCJsaW5rLWJ1dHRvblwiIFt0ZXh0Q29udGVudF09XCInLi4uJ1wiIChjbGljayk9XCJzaG93UG9wdXAocGFyZW50Rm9yT3ZlcmxheSwgY29uZmlybWF0aW9uVmlld01vZGVsKVwiPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICA8IS0tXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdXJjaGFzZS1jb25maXJtYXRpb24taGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHVyY2hhc2UtY29uZmlybWF0aW9uLWRyYWctaGFuZGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHVyY2hhc2UtY29uZmlybWF0aW9uLXF1YW50aXR5IGNvLXRyYW5zYWN0aW9uLWZsZXgtcmlnaHQtYWxpZ25cIiBbdGV4dENvbnRlbnRdPVwiJ0FNT1VOVCcgfCBsb2NhbGl6ZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB1cmNoYXNlLWNvbmZpcm1hdGlvbi1hcnRpY2xlLW5yXCIgW3RleHRDb250ZW50XT1cIidBUlRJQ0xFX05PX1NVUFBMSUVSJyB8IGxvY2FsaXplXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHVyY2hhc2UtY29uZmlybWF0aW9uLWRlc2NyaXB0aW9uXCIgW3RleHRDb250ZW50XT1cIidERVNDUklQVElPTicgfCBsb2NhbGl6ZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB1cmNoYXNlLWNvbmZpcm1hdGlvbi1kYXRlIGNvLXRyYW5zYWN0aW9uLWZsZXgtcmlnaHQtYWxpZ25cIiBbdGV4dENvbnRlbnRdPVwiJ0RFTElWRVJZX0RBVEUnIHwgbG9jYWxpemVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdXJjaGFzZS1jb25maXJtYXRpb24tcHJpY2UgY28tdHJhbnNhY3Rpb24tZmxleC1yaWdodC1hbGlnblwiIFt0ZXh0Q29udGVudF09XCInUFJJQ0UnIHwgbG9jYWxpemVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdXJjaGFzZS1jb25maXJtYXRpb24tbGluay1idXR0b25cIiBbdGV4dENvbnRlbnRdPVwiJ0xJTksnIHwgbG9jYWxpemVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcmFnZ2FibGUtcHVyY2hhc2UtY29uZmlybWF0aW9uLWxpbmVcIiAqbmdGb3I9XCJsZXQgY29uZmlybWF0aW9uVmlld01vZGVsIG9mIHB1cmNoYXNlQ29uZmlybWF0aW9uczsgdHJhY2tCeTp0cmFja0J5Rm47XCIgZHJhZ2dhYmxlPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRyYWdzdGFydCk9XCJoYW5kbGVEcmFnU3RhcnQoJGV2ZW50LCBjb25maXJtYXRpb25WaWV3TW9kZWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHVyY2hhc2UtY29uZmlybWF0aW9uLWxpbmtlZC1jb2xvclwiIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImNvbmZpcm1hdGlvblZpZXdNb2RlbC5jb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWljb24gY2xhc3M9XCJwdXJjaGFzZS1jb25maXJtYXRpb24tbGluZS1kcmFnLWhhbmRsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkdyaXBEb3RzVmVydGljYWxTb2xpZClcIj48L2NvLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlybWF0aW9uLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tdHJhbnNhY3Rpb24tZmxleC1yaWdodC1hbGlnblwiIFt0ZXh0Q29udGVudF09XCJjb25maXJtYXRpb25WaWV3TW9kZWwuY29uZmlybWF0aW9uLnByb2R1Y3RRdWFudGl0eVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW3RleHRDb250ZW50XT1cImNvbmZpcm1hdGlvblZpZXdNb2RlbC5jb25maXJtYXRpb24uc3VwcGxpZXJQcm9kdWN0Q29kZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW3RleHRDb250ZW50XT1cImNvbmZpcm1hdGlvblZpZXdNb2RlbC5jb25maXJtYXRpb24ucHJvZHVjdERlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvLXRyYW5zYWN0aW9uLWZsZXgtcmlnaHQtYWxpZ25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRDb250ZW50XT1cImNvbmZpcm1hdGlvblZpZXdNb2RlbC5jb25maXJtYXRpb24ub3JkZXJDb25maXJtYXRpb25EYXRlIHwgZGF0ZTogJ2RkLU1NLXl5eXknXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvLXRyYW5zYWN0aW9uLWZsZXgtcmlnaHQtYWxpZ25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRDb250ZW50XT1cImNvbmZpcm1hdGlvblZpZXdNb2RlbC5jb25maXJtYXRpb24ucHJpY2UgfCBjb0N1cnJlbmN5XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAjcGFyZW50Rm9yT3ZlcmxheSBjbGFzcz1cImxpbmstYnV0dG9uXCIgW3RleHRDb250ZW50XT1cIicuLi4nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93UG9wdXAocGFyZW50Rm9yT3ZlcmxheSwgY29uZmlybWF0aW9uVmlld01vZGVsKVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIGAsXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICBPdmVybGF5U2VydmljZVxyXG4gICAgXSxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIFB1cmNoYXNlQ29uZmlybWF0aW9uTGluZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdwYXJlbnRGb3JPdmVybGF5JywgeyByZWFkOiBFbGVtZW50UmVmIH0pXHJcbiAgICBwdWJsaWMgcGFyZW50RWxlbWVudEZvclBvcHVwOiBFbGVtZW50UmVmO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlO1xyXG5cclxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuY28tcHVyY2hhc2UtY29uZmlybWF0aW9uLWxpbmVzJylcclxuICAgIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHB1cmNoYXNlQ29uZmlybWF0aW9uczogQ29uZmlybWF0aW9uVmlld01vZGVsW10gPSBbXTtcclxuICAgIHB1YmxpYyBjdXJyZW50Q29uZmlybWF0aW9uVmlld01vZGVsOiBDb25maXJtYXRpb25WaWV3TW9kZWw7XHJcbiAgICBwdWJsaWMgdHJhbnNhY3Rpb25MaW5lczogVHJhbnNhY3Rpb25MaW5lSW5mb1tdID0gW107XHJcbiAgICBwdWJsaWMgaGFzUGRmRmlsZVVybDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgICBwcml2YXRlIF9wb3B1cENvbXBvbmVudFJlZjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwdWJsaWMgaWNvbkNhY2hlU2VydmljZTogSWNvbkNhY2hlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9wdXJjaGFzZUNvbmZpcm1hdGlvblNlcnZpY2U6IFB1cmNoYXNlQ29uZmlybWF0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF90cmFuc2FjdGlvbkV2ZW50U2VydmljZTogVHJhbnNhY3Rpb25FdmVudFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIHByaXZhdGUgX292ZXJsYXlTZXJ2aWNlOiBPdmVybGF5U2VydmljZVxyXG4gICAgKSB7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5fc3Vicy5wdXNoKFxyXG4gICAgICAgICAgICB0aGlzLl9wdXJjaGFzZUNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybWF0aW9uTmVlZGVkLnN1YnNjcmliZSgobmVlZGVkOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAobmVlZGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wdXJjaGFzZUNvbmZpcm1hdGlvbnMubGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9wdXJjaGFzZUNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybWF0aW9uQW5hbHlzaXNSZXN1bHQuZm9yRWFjaChjYSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZpZXdNb2RlbDogQ29uZmlybWF0aW9uVmlld01vZGVsID0gbmV3IENvbmZpcm1hdGlvblZpZXdNb2RlbCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2aWV3TW9kZWwuY29uZmlybWF0aW9uID0gY2E7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHVyY2hhc2VDb25maXJtYXRpb25zLnB1c2godmlld01vZGVsKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhc1BkZkZpbGVVcmwgPSB0aGlzLl9wdXJjaGFzZUNvbmZpcm1hdGlvblNlcnZpY2UuYW5hbHl6ZWRDb25maXJtYXRpb24gJiZcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3B1cmNoYXNlQ29uZmlybWF0aW9uU2VydmljZS5hbmFseXplZENvbmZpcm1hdGlvbi5maWxlVXJsICE9PSBudWxsICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wdXJjaGFzZUNvbmZpcm1hdGlvblNlcnZpY2UuYW5hbHl6ZWRDb25maXJtYXRpb24uZmlsZVVybCAhPT0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgdGhpcy5fdHJhbnNhY3Rpb25FdmVudFNlcnZpY2Uub3JkZXJDb25maXJtYXRpb25Ecm9wcGVkLnN1YnNjcmliZSgoZGF0YToge2xpbmVOcjogbnVtYmVyLCBhbmFseXNpc1Jlc3VsdElkOiBudW1iZXIsIGNvbG9yOiBzdHJpbmd9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnB1cmNoYXNlQ29uZmlybWF0aW9ucy5maWx0ZXIocCA9PiBwLmxpbmVOciA9PT0gZGF0YS5saW5lTnIpLmZvckVhY2gocCA9PiBwLmNvbG9yID0gXCJcIik7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50Q29uZmlybWF0aW9uVmlld01vZGVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Q29uZmlybWF0aW9uVmlld01vZGVsLmxpbmVOciA9IGRhdGEubGluZU5yO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudENvbmZpcm1hdGlvblZpZXdNb2RlbC5jb2xvciA9IGRhdGEuY29sb3I7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uICYmIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25MaW5lcykge1xyXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uTGluZXMgPSB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uTGluZXMuZmlsdGVyKHRsID0+IHRsLmlzQXJ0aWNsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9wZW5QZGYoKTogdm9pZCB7XHJcbiAgICAgICAgd2luZG93Lm9wZW4odGhpcy5fcHVyY2hhc2VDb25maXJtYXRpb25TZXJ2aWNlLmFuYWx5emVkQ29uZmlybWF0aW9uLmZpbGVVcmwsIFwiX2JsYW5rXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBoYW5kbGVDbGVhckFuYWx5c2lzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3B1cmNoYXNlQ29uZmlybWF0aW9uU2VydmljZS5jb25maXJtYXRpb25BbmFseXNpc0lkID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBoYW5kbGVEcmFnU3RhcnQoZXZlbnQ6IERyYWdFdmVudCwgY29uZmlybWF0aW9uVk06IENvbmZpcm1hdGlvblZpZXdNb2RlbCk6IHZvaWQge1xyXG4gICAgICAgIGlmIChjb25maXJtYXRpb25WTSAmJiBjb25maXJtYXRpb25WTS5jb25maXJtYXRpb24pIHtcclxuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSBcImxpbmtcIjtcclxuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLnNldERhdGEoXCJvcmRlckNvbmZpcm1hdGlvbkFuYWx5c2lzXCIsIEpTT04uc3RyaW5naWZ5KGNvbmZpcm1hdGlvblZNLmNvbmZpcm1hdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRDb25maXJtYXRpb25WaWV3TW9kZWwgPSBjb25maXJtYXRpb25WTTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRDb25maXJtYXRpb25WaWV3TW9kZWwgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgbGluZTogQ29uZmlybWF0aW9uVmlld01vZGVsKTogYW55IHtcclxuICAgICAgICByZXR1cm4gbGluZS5jb25maXJtYXRpb24uaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNob3dQb3B1cChlbGVtZW50OiBIVE1MRWxlbWVudCwgY29uZmlybWF0aW9uVk06IENvbmZpcm1hdGlvblZpZXdNb2RlbCk6IHZvaWQge1xyXG4gICAgICAgIGlmIChjb25maXJtYXRpb25WTSAmJiBjb25maXJtYXRpb25WTS5jb25maXJtYXRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Q29uZmlybWF0aW9uVmlld01vZGVsID0gY29uZmlybWF0aW9uVk07XHJcbiAgICAgICAgICAgIHRoaXMuX3BvcHVwQ29tcG9uZW50UmVmID0gdGhpcy5fb3ZlcmxheVNlcnZpY2UuY3JlYXRlQ29tcG9uZW50KFRyYW5zYWN0aW9uTGluZXNQb3B1cENvbXBvbmVudCxcclxuICAgICAgICAgICAgICB7cGFyZW50Rm9yT3ZlcmxheTogZWxlbWVudCwgdHJhbnNhY3Rpb25MaW5lczogdGhpcy50cmFuc2FjdGlvbkxpbmVzfSwge1xyXG4gICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbkxpbmVDbGljazogKGxpbmU6IFRyYW5zYWN0aW9uTGluZUluZm8pID0+IHRoaXMuX2hhbmRsZVRyYW5zYWN0aW9uTGluZUNsaWNrKGxpbmUsIHRoaXMuY3VycmVudENvbmZpcm1hdGlvblZpZXdNb2RlbC5jb25maXJtYXRpb24pLFxyXG4gICAgICAgICAgICAgICAgICBjbGlja091dHNpZGU6ICgpID0+IHRoaXMuaGlkZVBvcHVwKClcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRDb25maXJtYXRpb25WaWV3TW9kZWwgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBoaWRlUG9wdXAoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fb3ZlcmxheVNlcnZpY2UucmVtb3ZlQ29tcG9uZW50KHRoaXMuX3BvcHVwQ29tcG9uZW50UmVmKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9oYW5kbGVUcmFuc2FjdGlvbkxpbmVDbGljayhsaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvLCBjb25maXJtYXRpb246IE9yZGVyQ29uZmlybWF0aW9uQW5hbHlzaXNSZXN1bHQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmhpZGVQb3B1cCgpO1xyXG4gICAgICAgIHRoaXMuX3B1cmNoYXNlQ29uZmlybWF0aW9uU2VydmljZS5saW5rQW5hbHlzaXNUb1RyYW5zYWN0aW9uTGluZShsaW5lLCBjb25maXJtYXRpb24pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -3,8 +3,8 @@ import { CommonModule } from '@angular/common';
3
3
  import { PurchaseConfirmationLinesComponent } from './purchase-confirmation-lines.component';
4
4
  import { PipeModule } from '../../pipe/pipe.module';
5
5
  import { DragDropModule } from '@angular/cdk/drag-drop';
6
- import { IconModule } from '@colijnit/corecomponents';
7
6
  import { TransactionLinesPopupModule } from '../transaction-lines-popup/transaction-lines-popup.module';
7
+ import { IconModule } from '@colijnit/corecomponents_v12';
8
8
  export class PurchaseConfirmationLinesModule {
9
9
  }
10
10
  PurchaseConfirmationLinesModule.decorators = [
@@ -24,4 +24,4 @@ PurchaseConfirmationLinesModule.decorators = [
24
24
  ]
25
25
  },] }
26
26
  ];
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyY2hhc2UtY29uZmlybWF0aW9uLWxpbmVzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvY29tcG9uZW50L3B1cmNoYXNlLWNvbmZpcm1hdGlvbi1saW5lcy9wdXJjaGFzZS1jb25maXJtYXRpb24tbGluZXMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxrQ0FBa0MsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQzNGLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBaUJ0RyxNQUFNLE9BQU8sK0JBQStCOzs7WUFmM0MsUUFBUSxTQUFDO2dCQUNOLE9BQU8sRUFBRTtvQkFDTCxZQUFZO29CQUNaLFVBQVU7b0JBQ1YsY0FBYztvQkFDZCxVQUFVO29CQUNWLDJCQUEyQjtpQkFDOUI7Z0JBQ0QsWUFBWSxFQUFFO29CQUNWLGtDQUFrQztpQkFDckM7Z0JBQ0QsT0FBTyxFQUFFO29CQUNMLGtDQUFrQztpQkFDckM7YUFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtQdXJjaGFzZUNvbmZpcm1hdGlvbkxpbmVzQ29tcG9uZW50fSBmcm9tICcuL3B1cmNoYXNlLWNvbmZpcm1hdGlvbi1saW5lcy5jb21wb25lbnQnO1xyXG5pbXBvcnQge1BpcGVNb2R1bGV9IGZyb20gJy4uLy4uL3BpcGUvcGlwZS5tb2R1bGUnO1xyXG5pbXBvcnQge0RyYWdEcm9wTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHtJY29uTW9kdWxlfSBmcm9tICdAY29saWpuaXQvY29yZWNvbXBvbmVudHMnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uTGluZXNQb3B1cE1vZHVsZX0gZnJvbSAnLi4vdHJhbnNhY3Rpb24tbGluZXMtcG9wdXAvdHJhbnNhY3Rpb24tbGluZXMtcG9wdXAubW9kdWxlJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBpbXBvcnRzOiBbXHJcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgICAgIFBpcGVNb2R1bGUsXHJcbiAgICAgICAgRHJhZ0Ryb3BNb2R1bGUsXHJcbiAgICAgICAgSWNvbk1vZHVsZSxcclxuICAgICAgICBUcmFuc2FjdGlvbkxpbmVzUG9wdXBNb2R1bGVcclxuICAgIF0sXHJcbiAgICBkZWNsYXJhdGlvbnM6IFtcclxuICAgICAgICBQdXJjaGFzZUNvbmZpcm1hdGlvbkxpbmVzQ29tcG9uZW50XHJcbiAgICBdLFxyXG4gICAgZXhwb3J0czogW1xyXG4gICAgICAgIFB1cmNoYXNlQ29uZmlybWF0aW9uTGluZXNDb21wb25lbnRcclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFB1cmNoYXNlQ29uZmlybWF0aW9uTGluZXNNb2R1bGUge1xyXG59XHJcbiJdfQ==
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyY2hhc2UtY29uZmlybWF0aW9uLWxpbmVzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvY29tcG9uZW50L3B1cmNoYXNlLWNvbmZpcm1hdGlvbi1saW5lcy9wdXJjaGFzZS1jb25maXJtYXRpb24tbGluZXMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxrQ0FBa0MsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQzNGLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sMkRBQTJELENBQUM7QUFDdEcsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBaUJ4RCxNQUFNLE9BQU8sK0JBQStCOzs7WUFmM0MsUUFBUSxTQUFDO2dCQUNOLE9BQU8sRUFBRTtvQkFDTCxZQUFZO29CQUNaLFVBQVU7b0JBQ1YsY0FBYztvQkFDZCxVQUFVO29CQUNWLDJCQUEyQjtpQkFDOUI7Z0JBQ0QsWUFBWSxFQUFFO29CQUNWLGtDQUFrQztpQkFDckM7Z0JBQ0QsT0FBTyxFQUFFO29CQUNMLGtDQUFrQztpQkFDckM7YUFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtQdXJjaGFzZUNvbmZpcm1hdGlvbkxpbmVzQ29tcG9uZW50fSBmcm9tICcuL3B1cmNoYXNlLWNvbmZpcm1hdGlvbi1saW5lcy5jb21wb25lbnQnO1xyXG5pbXBvcnQge1BpcGVNb2R1bGV9IGZyb20gJy4uLy4uL3BpcGUvcGlwZS5tb2R1bGUnO1xyXG5pbXBvcnQge0RyYWdEcm9wTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVzUG9wdXBNb2R1bGV9IGZyb20gJy4uL3RyYW5zYWN0aW9uLWxpbmVzLXBvcHVwL3RyYW5zYWN0aW9uLWxpbmVzLXBvcHVwLm1vZHVsZSc7XHJcbmltcG9ydCB7SWNvbk1vZHVsZX0gZnJvbSAnQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMic7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIENvbW1vbk1vZHVsZSxcclxuICAgICAgICBQaXBlTW9kdWxlLFxyXG4gICAgICAgIERyYWdEcm9wTW9kdWxlLFxyXG4gICAgICAgIEljb25Nb2R1bGUsXHJcbiAgICAgICAgVHJhbnNhY3Rpb25MaW5lc1BvcHVwTW9kdWxlXHJcbiAgICBdLFxyXG4gICAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICAgICAgUHVyY2hhc2VDb25maXJtYXRpb25MaW5lc0NvbXBvbmVudFxyXG4gICAgXSxcclxuICAgIGV4cG9ydHM6IFtcclxuICAgICAgICBQdXJjaGFzZUNvbmZpcm1hdGlvbkxpbmVzQ29tcG9uZW50XHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQdXJjaGFzZUNvbmZpcm1hdGlvbkxpbmVzTW9kdWxlIHtcclxufVxyXG4iXX0=
@@ -4,6 +4,7 @@ import { RelationBaseComponent } from '../relation-base.component';
4
4
  import { CommunicationType } from '@colijnit/relationapi/build/enum/communication-type.enum';
5
5
  import { isNill } from '@colijnit/ioneconnector/build/utils/function/is-nill.function';
6
6
  import { RelationKind } from '@colijnit/relationapi/build/enum/relation-kind.enum';
7
+ import { CustomerFullObject } from "@colijnit/relationapi/build/model/customer-full-object.bo";
7
8
  export class RelationContactDetailsComponent extends RelationBaseComponent {
8
9
  constructor() {
9
10
  super(...arguments);
@@ -12,6 +13,7 @@ export class RelationContactDetailsComponent extends RelationBaseComponent {
12
13
  this.relationKind = RelationKind.Customer;
13
14
  this.emailAddress = new ContactOption();
14
15
  this.phoneNumber = new ContactOption();
16
+ this.inviteRelation = false;
15
17
  }
16
18
  showClass() {
17
19
  return true;
@@ -52,6 +54,13 @@ export class RelationContactDetailsComponent extends RelationBaseComponent {
52
54
  }
53
55
  }
54
56
  }
57
+ handleCreateCustomerUserAndInviteMark(checkMark) {
58
+ this.inviteRelation = checkMark;
59
+ if (this.relation instanceof CustomerFullObject) {
60
+ this.relation.createUserAndSendInvite = this.inviteRelation;
61
+ }
62
+ this.inviteRelation = false;
63
+ }
55
64
  relationSet() {
56
65
  this.preparePrimaryEmail();
57
66
  this.preparePrimaryPhone();
@@ -78,9 +87,9 @@ RelationContactDetailsComponent.decorators = [
78
87
  <co-input-text
79
88
  [(model)]="emailAddress.value"
80
89
  [screenConfigurationObject]="configNames?.relationEmailAddress"
81
- [readonly]="readonly"
90
+ [readonly]="readonly"
82
91
  [placeholder]="'EMAIL_ADDRESS' | localize"
83
- [type]="'email'"
92
+ [type]="'email'"
84
93
  [required]="true"
85
94
  (modelChange)="handleEmailChange()"
86
95
  ></co-input-text>
@@ -88,9 +97,10 @@ RelationContactDetailsComponent.decorators = [
88
97
  <div class="default-data-row" *ngIf="relationKind === relKind.Customer">
89
98
  <co-input-checkbox
90
99
  [screenConfigurationObject]="configNames?.relationInviteToAccount"
91
- [readonly]="readonly"
92
- [label]="'INVITE_TO_ACCOUNT' | localize"
93
- [(model)]="transactionService.inviteRelation"></co-input-checkbox>
100
+ [readonly]="readonly"
101
+ [label]="'INVITE_TO_ACCOUNT' | localize"
102
+ [(model)]="inviteRelation"
103
+ (modelChange)="handleCreateCustomerUserAndInviteMark($event)"></co-input-checkbox>
94
104
  </div>
95
105
  `,
96
106
  encapsulation: ViewEncapsulation.None
@@ -103,4 +113,4 @@ RelationContactDetailsComponent.propDecorators = {
103
113
  relationKind: [{ type: Input }],
104
114
  showClass: [{ type: HostBinding, args: ["class.co-relation-contact-details",] }]
105
115
  };
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb24tY29udGFjdC1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvY29tcG9uZW50L3JlbGF0aW9uL3JlbGF0aW9uLWNvbnRhY3QtZGV0YWlscy9yZWxhdGlvbi1jb250YWN0LWRldGFpbHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0scURBQXFELENBQUM7QUFDbEYsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDakUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sMERBQTBELENBQUM7QUFDM0YsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLCtEQUErRCxDQUFDO0FBQ3JGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxxREFBcUQsQ0FBQztBQW1DakYsTUFBTSxPQUFPLCtCQUFnQyxTQUFRLHFCQUFxQjtJQWhDMUU7O1FBc0NTLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFHMUIsY0FBUyxHQUFZLElBQUksQ0FBQztRQUcxQixpQkFBWSxHQUFpQixZQUFZLENBQUMsUUFBUSxDQUFDO1FBT25ELGlCQUFZLEdBQWtCLElBQUksYUFBYSxFQUFFLENBQUM7UUFDbEQsZ0JBQVcsR0FBa0IsSUFBSSxhQUFhLEVBQUUsQ0FBQztJQXFEMUQsQ0FBQztJQTFEUSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBS00saUJBQWlCO1FBQ3RCLE1BQU0sUUFBUSxHQUFrQixJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENB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LElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUM5RCxDQUFDOzs7WUF2R0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSw2QkFBNkI7Z0JBQ3ZDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7MEJBR0UsS0FBSzt1QkFHTCxLQUFLO3dCQUdMLEtBQUs7MkJBR0wsS0FBSzt3QkFHTCxXQUFXLFNBQUMsbUNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0NvbnRhY3RPcHRpb259IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9jb250YWN0LW9wdGlvbi5ibyc7XHJcbmltcG9ydCB7UmVsYXRpb25CYXNlQ29tcG9uZW50fSBmcm9tICcuLi9yZWxhdGlvbi1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7Q29tbXVuaWNhdGlvblR5cGV9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9lbnVtL2NvbW11bmljYXRpb24tdHlwZS5lbnVtJztcclxuaW1wb3J0IHtpc05pbGx9IGZyb20gJ0Bjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL3V0aWxzL2Z1bmN0aW9uL2lzLW5pbGwuZnVuY3Rpb24nO1xyXG5pbXBvcnQge1JlbGF0aW9uS2luZH0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL2VudW0vcmVsYXRpb24ta2luZC5lbnVtJztcclxuaW1wb3J0IHtSZWxhdGlvbkNvbnRhY3REZXRhaWxzQ2ZnTmFtZXN9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZS9yZWxhdGlvbi1jb250YWN0LWRldGFpbHMtY2ZnLW5hbWVzLmludGVyZmFjZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJjby1yZWxhdGlvbi1jb250YWN0LWRldGFpbHNcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cImRlZmF1bHQtZGF0YS1yb3dcIj5cclxuICAgICAgPGNvLWlucHV0LXRleHQgKm5nSWY9XCJzaG93UGhvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdF09XCJjb25maWdOYW1lcz8ucmVsYXRpb25QaG9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInBob25lTnVtYmVyLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidQSE9ORV9OTycgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZVBob25lQ2hhbmdlKClcIlxyXG4gICAgICA+PC9jby1pbnB1dC10ZXh0PlxyXG4gICAgICA8Y28taW5wdXQtdGV4dFxyXG4gICAgICAgICAgWyhtb2RlbCldPVwiZW1haWxBZGRyZXNzLnZhbHVlXCJcclxuICAgICAgICAgIFtzY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0XT1cImNvbmZpZ05hbWVzPy5yZWxhdGlvbkVtYWlsQWRkcmVzc1wiXHJcbiAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBcclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInRU1BSUxfQUREUkVTUycgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICBbdHlwZV09XCInZW1haWwnXCIgXHJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlRW1haWxDaGFuZ2UoKVwiXHJcbiAgICAgID48L2NvLWlucHV0LXRleHQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkZWZhdWx0LWRhdGEtcm93XCIgKm5nSWY9XCJyZWxhdGlvbktpbmQgPT09IHJlbEtpbmQuQ3VzdG9tZXJcIj5cclxuICAgICAgPGNvLWlucHV0LWNoZWNrYm94XHJcbiAgICAgICAgICBbc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdF09XCJjb25maWdOYW1lcz8ucmVsYXRpb25JbnZpdGVUb0FjY291bnRcIlxyXG4gICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgXHJcbiAgICAgICAgICBbbGFiZWxdPVwiJ0lOVklURV9UT19BQ0NPVU5UJyB8IGxvY2FsaXplXCIgXHJcbiAgICAgICAgICBbKG1vZGVsKV09XCJ0cmFuc2FjdGlvblNlcnZpY2UuaW52aXRlUmVsYXRpb25cIj48L2NvLWlucHV0LWNoZWNrYm94PlxyXG4gICAgPC9kaXY+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWxhdGlvbkNvbnRhY3REZXRhaWxzQ29tcG9uZW50IGV4dGVuZHMgUmVsYXRpb25CYXNlQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY29uZmlnTmFtZXM6IFJlbGF0aW9uQ29udGFjdERldGFpbHNDZmdOYW1lcztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hvd1Bob25lOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcmVsYXRpb25LaW5kOiBSZWxhdGlvbktpbmQgPSBSZWxhdGlvbktpbmQuQ3VzdG9tZXI7XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLXJlbGF0aW9uLWNvbnRhY3QtZGV0YWlsc1wiKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBlbWFpbEFkZHJlc3M6IENvbnRhY3RPcHRpb24gPSBuZXcgQ29udGFjdE9wdGlvbigpO1xyXG4gIHB1YmxpYyBwaG9uZU51bWJlcjogQ29udGFjdE9wdGlvbiA9IG5ldyBDb250YWN0T3B0aW9uKCk7XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVQaG9uZUNoYW5nZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbVBob25lOiBDb250YWN0T3B0aW9uID0gdGhpcy5yZWxhdGlvbi5jb250YWN0T3B0aW9ucy5maW5kKGMgPT4gYy5jb21OciA9PT0gdGhpcy5waG9uZU51bWJlci5jb21OciAmJiBjLnR5cGUgPT09IENvbW11bmljYXRpb25UeXBlLlRlbGVwaG9uZSk7XHJcbiAgICBpZiAoY29tUGhvbmUpIHtcclxuICAgICAgY29tUGhvbmUudmFsdWUgPSB0aGlzLnBob25lTnVtYmVyLnZhbHVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fdXBkYXRlU3VnZ2VzdGlvbkdlbmVyYWxSZXF1ZXN0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlRW1haWxDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb21FbWFpbDogQ29udGFjdE9wdGlvbiA9IHRoaXMucmVsYXRpb24uY29udGFjdE9wdGlvbnMuZmluZChjID0+IGMuY29tTnIgPT09IHRoaXMuZW1haWxBZGRyZXNzLmNvbU5yICYmIGMudHlwZSA9PT0gQ29tbXVuaWNhdGlvblR5cGUuRW1haWwpO1xyXG4gICAgaWYgKGNvbUVtYWlsKSB7XHJcbiAgICAgIGNvbUVtYWlsLnZhbHVlID0gdGhpcy5lbWFpbEFkZHJlc3MudmFsdWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLl91cGRhdGVTdWdnZXN0aW9uR2VuZXJhbFJlcXVlc3QoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwcmVwYXJlUHJpbWFyeUVtYWlsKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucmVsYXRpb24pIHtcclxuICAgICAgdGhpcy5lbWFpbEFkZHJlc3MgPSB0aGlzLnJlbGF0aW9uLmdldExvd2VzdFNlcXVlbmNlT2ZDb250YWN0T3B0aW9uc1dpdGhUeXBlKENvbW11bmljYXRpb25UeXBlLkVtYWlsKTtcclxuICAgICAgaWYgKGlzTmlsbCh0aGlzLmVtYWlsQWRkcmVzcykpIHtcclxuICAgICAgICB0aGlzLmVtYWlsQWRkcmVzcyA9IG5ldyBDb250YWN0T3B0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5lbWFpbEFkZHJlc3MudHlwZSA9IENvbW11bmljYXRpb25UeXBlLkVtYWlsO1xyXG4gICAgICAgIHRoaXMuZW1haWxBZGRyZXNzLnNlcXVlbmNlID0gMDtcclxuICAgICAgICB0aGlzLnJlbGF0aW9uLmFkZENvbnRhY3RPcHRpb24odGhpcy5lbWFpbEFkZHJlc3MpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcHJlcGFyZVByaW1hcnlQaG9uZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnJlbGF0aW9uKSB7XHJcbiAgICAgIHRoaXMucGhvbmVOdW1iZXIgPSB0aGlzLnJlbGF0aW9uLmdldExvd2VzdFNlcXVlbmNlT2ZDb250YWN0T3B0aW9uc1dpdGhUeXBlKENvbW11bmljYXRpb25UeXBlLlRlbGVwaG9uZSk7XHJcbiAgICAgIGlmIChpc05pbGwodGhpcy5waG9uZU51bWJlcikpIHtcclxuICAgICAgICB0aGlzLnBob25lTnVtYmVyID0gbmV3IENvbnRhY3RPcHRpb24oKTtcclxuICAgICAgICB0aGlzLnBob25lTnVtYmVyLnR5cGUgPSBDb21tdW5pY2F0aW9uVHlwZS5UZWxlcGhvbmU7XHJcbiAgICAgICAgdGhpcy5waG9uZU51bWJlci5zZXF1ZW5jZSA9IDA7XHJcbiAgICAgICAgdGhpcy5yZWxhdGlvbi5hZGRDb250YWN0T3B0aW9uKHRoaXMucGhvbmVOdW1iZXIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgcmVsYXRpb25TZXQoKSB7XHJcbiAgICB0aGlzLnByZXBhcmVQcmltYXJ5RW1haWwoKTtcclxuICAgIHRoaXMucHJlcGFyZVByaW1hcnlQaG9uZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlU3VnZ2VzdGlvbkdlbmVyYWxSZXF1ZXN0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWdnZXN0aW9uUmVxdWVzdC5nZW5lcmFsID1cclxuICAgICAgICAodGhpcy5waG9uZU51bWJlci52YWx1ZSA/IHRoaXMucGhvbmVOdW1iZXIudmFsdWUgOiBcIlwiKSArICh0aGlzLmVtYWlsQWRkcmVzcy52YWx1ZSA/IFwiIFwiIDogXCJcIikgKyAodGhpcy5lbWFpbEFkZHJlc3MudmFsdWUgPyB0aGlzLmVtYWlsQWRkcmVzcy52YWx1ZSA6IFwiXCIpO1xyXG4gICAgdGhpcy5pbnB1dENoYW5nZUZvclN1Z2dlc3Rpb25zLm5leHQodGhpcy5zdWdnZXN0aW9uUmVxdWVzdCk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb24tY29udGFjdC1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvY29tcG9uZW50L3JlbGF0aW9uL3JlbGF0aW9uLWNvbnRhY3QtZGV0YWlscy9yZWxhdGlvbi1jb250YWN0LWRldGFpbHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0scURBQXFELENBQUM7QUFDbEYsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDakUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sMERBQTBELENBQUM7QUFDM0YsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLCtEQUErRCxDQUFDO0FBQ3JGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxxREFBcUQsQ0FBQztBQUVqRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQW1DN0YsTUFBTSxPQUFPLCtCQUFnQyxTQUFRLHFCQUFxQjtJQWpDMUU7O1FBdUNTLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFHMUIsY0FBUyxHQUFZLElBQUksQ0FBQztRQUcxQixpQkFBWSxHQUFpQixZQUFZLENBQUMsUUFBUSxDQUFDO1FBT25ELGlCQUFZLEdBQWtCLElBQUksYUFBYSxFQUFFLENBQUM7UUFDbEQsZ0JBQVcsR0FBa0IsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNqRCxtQkFBYyxHQUFZLEtBQUssQ0FBQztJQTZEekMsQ0FBQztJQW5FUSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBTU0saUJBQWlCO1FBQ3RCLE1BQU0sUUFBUSxH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QyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3SixJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzlELENBQUM7OztZQWpIRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLDZCQUE2QjtnQkFDdkMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7MEJBR0UsS0FBSzt1QkFHTCxLQUFLO3dCQUdMLEtBQUs7MkJBR0wsS0FBSzt3QkFHTCxXQUFXLFNBQUMsbUNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0NvbnRhY3RPcHRpb259IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9jb250YWN0LW9wdGlvbi5ibyc7XHJcbmltcG9ydCB7UmVsYXRpb25CYXNlQ29tcG9uZW50fSBmcm9tICcuLi9yZWxhdGlvbi1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7Q29tbXVuaWNhdGlvblR5cGV9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9lbnVtL2NvbW11bmljYXRpb24tdHlwZS5lbnVtJztcclxuaW1wb3J0IHtpc05pbGx9IGZyb20gJ0Bjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL3V0aWxzL2Z1bmN0aW9uL2lzLW5pbGwuZnVuY3Rpb24nO1xyXG5pbXBvcnQge1JlbGF0aW9uS2luZH0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL2VudW0vcmVsYXRpb24ta2luZC5lbnVtJztcclxuaW1wb3J0IHtSZWxhdGlvbkNvbnRhY3REZXRhaWxzQ2ZnTmFtZXN9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZS9yZWxhdGlvbi1jb250YWN0LWRldGFpbHMtY2ZnLW5hbWVzLmludGVyZmFjZSc7XHJcbmltcG9ydCB7Q3VzdG9tZXJGdWxsT2JqZWN0fSBmcm9tIFwiQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL2N1c3RvbWVyLWZ1bGwtb2JqZWN0LmJvXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJjby1yZWxhdGlvbi1jb250YWN0LWRldGFpbHNcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cImRlZmF1bHQtZGF0YS1yb3dcIj5cclxuICAgICAgPGNvLWlucHV0LXRleHQgKm5nSWY9XCJzaG93UGhvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdF09XCJjb25maWdOYW1lcz8ucmVsYXRpb25QaG9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInBob25lTnVtYmVyLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidQSE9ORV9OTycgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZVBob25lQ2hhbmdlKClcIlxyXG4gICAgICA+PC9jby1pbnB1dC10ZXh0PlxyXG4gICAgICA8Y28taW5wdXQtdGV4dFxyXG4gICAgICAgICAgWyhtb2RlbCldPVwiZW1haWxBZGRyZXNzLnZhbHVlXCJcclxuICAgICAgICAgIFtzY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0XT1cImNvbmZpZ05hbWVzPy5yZWxhdGlvbkVtYWlsQWRkcmVzc1wiXHJcbiAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidFTUFJTF9BRERSRVNTJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgIFt0eXBlXT1cIidlbWFpbCdcIlxyXG4gICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxyXG4gICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZUVtYWlsQ2hhbmdlKClcIlxyXG4gICAgICA+PC9jby1pbnB1dC10ZXh0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGVmYXVsdC1kYXRhLXJvd1wiICpuZ0lmPVwicmVsYXRpb25LaW5kID09PSByZWxLaW5kLkN1c3RvbWVyXCI+XHJcbiAgICAgIDxjby1pbnB1dC1jaGVja2JveFxyXG4gICAgICAgICAgW3NjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3RdPVwiY29uZmlnTmFtZXM/LnJlbGF0aW9uSW52aXRlVG9BY2NvdW50XCJcclxuICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgICBbbGFiZWxdPVwiJ0lOVklURV9UT19BQ0NPVU5UJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgIFsobW9kZWwpXT1cImludml0ZVJlbGF0aW9uXCJcclxuICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJoYW5kbGVDcmVhdGVDdXN0b21lclVzZXJBbmRJbnZpdGVNYXJrKCRldmVudClcIj48L2NvLWlucHV0LWNoZWNrYm94PlxyXG4gICAgPC9kaXY+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWxhdGlvbkNvbnRhY3REZXRhaWxzQ29tcG9uZW50IGV4dGVuZHMgUmVsYXRpb25CYXNlQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY29uZmlnTmFtZXM6IFJlbGF0aW9uQ29udGFjdERldGFpbHNDZmdOYW1lcztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hvd1Bob25lOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcmVsYXRpb25LaW5kOiBSZWxhdGlvbktpbmQgPSBSZWxhdGlvbktpbmQuQ3VzdG9tZXI7XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLXJlbGF0aW9uLWNvbnRhY3QtZGV0YWlsc1wiKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBlbWFpbEFkZHJlc3M6IENvbnRhY3RPcHRpb24gPSBuZXcgQ29udGFjdE9wdGlvbigpO1xyXG4gIHB1YmxpYyBwaG9uZU51bWJlcjogQ29udGFjdE9wdGlvbiA9IG5ldyBDb250YWN0T3B0aW9uKCk7XHJcbiAgcHVibGljIGludml0ZVJlbGF0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVQaG9uZUNoYW5nZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbVBob25lOiBDb250YWN0T3B0aW9uID0gdGhpcy5yZWxhdGlvbi5jb250YWN0T3B0aW9ucy5maW5kKGMgPT4gYy5jb21OciA9PT0gdGhpcy5waG9uZU51bWJlci5jb21OciAmJiBjLnR5cGUgPT09IENvbW11bmljYXRpb25UeXBlLlRlbGVwaG9uZSk7XHJcbiAgICBpZiAoY29tUGhvbmUpIHtcclxuICAgICAgY29tUGhvbmUudmFsdWUgPSB0aGlzLnBob25lTnVtYmVyLnZhbHVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fdXBkYXRlU3VnZ2VzdGlvbkdlbmVyYWxSZXF1ZXN0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlRW1haWxDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb21FbWFpbDogQ29udGFjdE9wdGlvbiA9IHRoaXMucmVsYXRpb24uY29udGFjdE9wdGlvbnMuZmluZChjID0+IGMuY29tTnIgPT09IHRoaXMuZW1haWxBZGRyZXNzLmNvbU5yICYmIGMudHlwZSA9PT0gQ29tbXVuaWNhdGlvblR5cGUuRW1haWwpO1xyXG4gICAgaWYgKGNvbUVtYWlsKSB7XHJcbiAgICAgIGNvbUVtYWlsLnZhbHVlID0gdGhpcy5lbWFpbEFkZHJlc3MudmFsdWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLl91cGRhdGVTdWdnZXN0aW9uR2VuZXJhbFJlcXVlc3QoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwcmVwYXJlUHJpbWFyeUVtYWlsKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucmVsYXRpb24pIHtcclxuICAgICAgdGhpcy5lbWFpbEFkZHJlc3MgPSB0aGlzLnJlbGF0aW9uLmdldExvd2VzdFNlcXVlbmNlT2ZDb250YWN0T3B0aW9uc1dpdGhUeXBlKENvbW11bmljYXRpb25UeXBlLkVtYWlsKTtcclxuICAgICAgaWYgKGlzTmlsbCh0aGlzLmVtYWlsQWRkcmVzcykpIHtcclxuICAgICAgICB0aGlzLmVtYWlsQWRkcmVzcyA9IG5ldyBDb250YWN0T3B0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5lbWFpbEFkZHJlc3MudHlwZSA9IENvbW11bmljYXRpb25UeXBlLkVtYWlsO1xyXG4gICAgICAgIHRoaXMuZW1haWxBZGRyZXNzLnNlcXVlbmNlID0gMDtcclxuICAgICAgICB0aGlzLnJlbGF0aW9uLmFkZENvbnRhY3RPcHRpb24odGhpcy5lbWFpbEFkZHJlc3MpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcHJlcGFyZVByaW1hcnlQaG9uZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnJlbGF0aW9uKSB7XHJcbiAgICAgIHRoaXMucGhvbmVOdW1iZXIgPSB0aGlzLnJlbGF0aW9uLmdldExvd2VzdFNlcXVlbmNlT2ZDb250YWN0T3B0aW9uc1dpdGhUeXBlKENvbW11bmljYXRpb25UeXBlLlRlbGVwaG9uZSk7XHJcbiAgICAgIGlmIChpc05pbGwodGhpcy5waG9uZU51bWJlcikpIHtcclxuICAgICAgICB0aGlzLnBob25lTnVtYmVyID0gbmV3IENvbnRhY3RPcHRpb24oKTtcclxuICAgICAgICB0aGlzLnBob25lTnVtYmVyLnR5cGUgPSBDb21tdW5pY2F0aW9uVHlwZS5UZWxlcGhvbmU7XHJcbiAgICAgICAgdGhpcy5waG9uZU51bWJlci5zZXF1ZW5jZSA9IDA7XHJcbiAgICAgICAgdGhpcy5yZWxhdGlvbi5hZGRDb250YWN0T3B0aW9uKHRoaXMucGhvbmVOdW1iZXIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQ3JlYXRlQ3VzdG9tZXJVc2VyQW5kSW52aXRlTWFyayhjaGVja01hcms6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuaW52aXRlUmVsYXRpb24gPSBjaGVja01hcms7XHJcbiAgICBpZiAodGhpcy5yZWxhdGlvbiBpbnN0YW5jZW9mIEN1c3RvbWVyRnVsbE9iamVjdCkge1xyXG4gICAgICB0aGlzLnJlbGF0aW9uLmNyZWF0ZVVzZXJBbmRTZW5kSW52aXRlID0gdGhpcy5pbnZpdGVSZWxhdGlvbjtcclxuICAgIH1cclxuICAgIHRoaXMuaW52aXRlUmVsYXRpb24gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCByZWxhdGlvblNldCgpIHtcclxuICAgIHRoaXMucHJlcGFyZVByaW1hcnlFbWFpbCgpO1xyXG4gICAgdGhpcy5wcmVwYXJlUHJpbWFyeVBob25lKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91cGRhdGVTdWdnZXN0aW9uR2VuZXJhbFJlcXVlc3QoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1Z2dlc3Rpb25SZXF1ZXN0LmdlbmVyYWwgPVxyXG4gICAgICAgICh0aGlzLnBob25lTnVtYmVyLnZhbHVlID8gdGhpcy5waG9uZU51bWJlci52YWx1ZSA6IFwiXCIpICsgKHRoaXMuZW1haWxBZGRyZXNzLnZhbHVlID8gXCIgXCIgOiBcIlwiKSArICh0aGlzLmVtYWlsQWRkcmVzcy52YWx1ZSA/IHRoaXMuZW1haWxBZGRyZXNzLnZhbHVlIDogXCJcIik7XHJcbiAgICB0aGlzLmlucHV0Q2hhbmdlRm9yU3VnZ2VzdGlvbnMubmV4dCh0aGlzLnN1Z2dlc3Rpb25SZXF1ZXN0KTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==