@senior-agronegocio/angular-components 0.0.9870 → 0.0.9872

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 (109) hide show
  1. package/bundles/senior-agronegocio-angular-components.umd.js +356 -525
  2. package/bundles/senior-agronegocio-angular-components.umd.js.map +1 -1
  3. package/bundles/senior-agronegocio-angular-components.umd.min.js +2 -2
  4. package/bundles/senior-agronegocio-angular-components.umd.min.js.map +1 -1
  5. package/components/event-control-board/service/e001pes/e001pes.service.d.ts +2 -2
  6. package/components/event-control-board/service/e001tns/e001tns.service.d.ts +2 -2
  7. package/components/event-control-board/service/e012fam/e012fam.service.d.ts +2 -2
  8. package/components/event-control-board/service/e070emp/e070emp.service.d.ts +2 -2
  9. package/components/event-control-board/service/e070fil/e070fil.service.d.ts +2 -2
  10. package/components/event-control-board/service/e075der/e075der.service.d.ts +2 -2
  11. package/components/event-control-board/service/e205dep/e205dep.service.d.ts +2 -2
  12. package/components/event-control-board/service/event-control/event-control.service.d.ts +2 -2
  13. package/components/event-control-board/service/event-control-item/event-control-item.service.d.ts +2 -2
  14. package/components/event-control-board/service/external-invoice/external-invoice.service.d.ts +2 -2
  15. package/components/event-control-board/service/fixation-entity/fixation.service.d.ts +2 -2
  16. package/components/event-control-board/service/invoice/invoice.service.d.ts +2 -2
  17. package/components/event-control-board/service/origination/origination.service.d.ts +2 -2
  18. package/components/event-control-board/service/rural-estate/rural-estate.service.d.ts +2 -2
  19. package/components/event-control-board/service/ticket/ticket.service.d.ts +2 -2
  20. package/components/event-control-board/service/transfer/transfer.service.d.ts +2 -2
  21. package/components/financial-title-table/services/financial/agro-financial.service.d.ts +1 -1
  22. package/components/financial-title-table/services/financial/enums.d.ts +1 -1
  23. package/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.component.d.ts +8 -7
  24. package/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.component.d.ts +8 -6
  25. package/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.component.d.ts +8 -17
  26. package/components/modal-invoice-pj/modal-invoice-pj-base.class.d.ts +9 -7
  27. package/components/modal-invoice-pj/modal-shared-imports.d.ts +4 -7
  28. package/components/modal-invoice-pj/services/agro-invoice/agro-invoice.service.d.ts +1 -1
  29. package/esm2015/common/agro-logics.class.js +6 -5
  30. package/esm2015/common/agro-unit-converter.class.js +1 -2
  31. package/esm2015/components/event-control-board/common/event-control-constants.js +2 -2
  32. package/esm2015/components/event-control-board/event-control-board.component.js +2 -2
  33. package/esm2015/components/event-control-board/service/e001pes/e001pes.service.js +3 -3
  34. package/esm2015/components/event-control-board/service/e001tns/e001tns.service.js +3 -3
  35. package/esm2015/components/event-control-board/service/e012fam/e012fam.service.js +3 -3
  36. package/esm2015/components/event-control-board/service/e070emp/e070emp.service.js +3 -3
  37. package/esm2015/components/event-control-board/service/e070fil/e070fil.service.js +3 -3
  38. package/esm2015/components/event-control-board/service/e075der/e075der.service.js +3 -3
  39. package/esm2015/components/event-control-board/service/e205dep/e205dep.service.js +3 -3
  40. package/esm2015/components/event-control-board/service/event-control/event-control.service.js +3 -3
  41. package/esm2015/components/event-control-board/service/event-control-item/event-control-item.service.js +3 -3
  42. package/esm2015/components/event-control-board/service/external-invoice/external-invoice.service.js +3 -3
  43. package/esm2015/components/event-control-board/service/fixation-entity/fixation.service.js +3 -3
  44. package/esm2015/components/event-control-board/service/invoice/invoice.service.js +3 -3
  45. package/esm2015/components/event-control-board/service/origination/origination.service.js +3 -3
  46. package/esm2015/components/event-control-board/service/rural-estate/rural-estate.service.js +3 -3
  47. package/esm2015/components/event-control-board/service/ticket/ticket.service.js +3 -3
  48. package/esm2015/components/event-control-board/service/transfer/transfer.service.js +3 -3
  49. package/esm2015/components/financial-title-table/financial-title-table.component.js +5 -3
  50. package/esm2015/components/financial-title-table/services/financial/agro-financial.service.js +11 -6
  51. package/esm2015/components/financial-title-table/services/financial/enums.js +2 -2
  52. package/esm2015/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.component.js +15 -13
  53. package/esm2015/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.component.js +13 -10
  54. package/esm2015/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.component.js +13 -36
  55. package/esm2015/components/modal-invoice-pj/modal-invoice-pj-base.class.js +13 -10
  56. package/esm2015/components/modal-invoice-pj/services/agro-invoice/agro-invoice.service.js +2 -2
  57. package/esm2015/services/agro-entity-service.js +132 -0
  58. package/esm2015/services/i18n/en-US.js +2 -10
  59. package/esm2015/services/i18n/es-CO.js +4 -12
  60. package/esm2015/services/i18n/pt-BR.js +262 -272
  61. package/esm2015/services/producer-invoice/producer-invoice.service.js +2 -2
  62. package/esm5/common/agro-logics.class.js +6 -5
  63. package/esm5/common/agro-unit-converter.class.js +1 -2
  64. package/esm5/components/event-control-board/common/event-control-constants.js +2 -2
  65. package/esm5/components/event-control-board/event-control-board.component.js +2 -2
  66. package/esm5/components/event-control-board/service/e001pes/e001pes.service.js +3 -3
  67. package/esm5/components/event-control-board/service/e001tns/e001tns.service.js +3 -3
  68. package/esm5/components/event-control-board/service/e012fam/e012fam.service.js +3 -3
  69. package/esm5/components/event-control-board/service/e070emp/e070emp.service.js +3 -3
  70. package/esm5/components/event-control-board/service/e070fil/e070fil.service.js +3 -3
  71. package/esm5/components/event-control-board/service/e075der/e075der.service.js +3 -3
  72. package/esm5/components/event-control-board/service/e205dep/e205dep.service.js +3 -3
  73. package/esm5/components/event-control-board/service/event-control/event-control.service.js +3 -3
  74. package/esm5/components/event-control-board/service/event-control-item/event-control-item.service.js +3 -3
  75. package/esm5/components/event-control-board/service/external-invoice/external-invoice.service.js +3 -3
  76. package/esm5/components/event-control-board/service/fixation-entity/fixation.service.js +3 -3
  77. package/esm5/components/event-control-board/service/invoice/invoice.service.js +3 -3
  78. package/esm5/components/event-control-board/service/origination/origination.service.js +3 -3
  79. package/esm5/components/event-control-board/service/rural-estate/rural-estate.service.js +3 -3
  80. package/esm5/components/event-control-board/service/ticket/ticket.service.js +3 -3
  81. package/esm5/components/event-control-board/service/transfer/transfer.service.js +3 -3
  82. package/esm5/components/financial-title-table/financial-title-table.component.js +6 -3
  83. package/esm5/components/financial-title-table/services/financial/agro-financial.service.js +12 -7
  84. package/esm5/components/financial-title-table/services/financial/enums.js +2 -2
  85. package/esm5/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.component.js +15 -13
  86. package/esm5/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.component.js +13 -10
  87. package/esm5/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.component.js +13 -36
  88. package/esm5/components/modal-invoice-pj/modal-invoice-pj-base.class.js +13 -10
  89. package/esm5/components/modal-invoice-pj/services/agro-invoice/agro-invoice.service.js +2 -2
  90. package/esm5/services/agro-entity-service.js +143 -0
  91. package/esm5/services/i18n/en-US.js +2 -10
  92. package/esm5/services/i18n/es-CO.js +4 -12
  93. package/esm5/services/i18n/pt-BR.js +262 -272
  94. package/esm5/services/producer-invoice/producer-invoice.service.js +2 -2
  95. package/fesm2015/senior-agronegocio-angular-components.js +342 -503
  96. package/fesm2015/senior-agronegocio-angular-components.js.map +1 -1
  97. package/fesm5/senior-agronegocio-angular-components.js +357 -526
  98. package/fesm5/senior-agronegocio-angular-components.js.map +1 -1
  99. package/package.json +1 -1
  100. package/{components/event-control-board/service/entity-service.d.ts → services/agro-entity-service.d.ts} +3 -13
  101. package/services/i18n/en-US.d.ts +1 -9
  102. package/services/i18n/es-CO.d.ts +2 -10
  103. package/services/i18n/pt-BR.d.ts +260 -270
  104. package/services/producer-invoice/producer-invoice.service.d.ts +1 -1
  105. package/esm2015/components/event-control-board/service/entity-service.js +0 -127
  106. package/esm2015/services/entity-service.js +0 -132
  107. package/esm5/components/event-control-board/service/entity-service.js +0 -138
  108. package/esm5/services/entity-service.js +0 -143
  109. package/services/entity-service.d.ts +0 -73
@@ -122,7 +122,8 @@ let FinancialTitleTableComponent = class FinancialTitleTableComponent {
122
122
  .listTitles(input)
123
123
  .pipe(takeUntil(this.ngUnsubscribe), catchError((err) => {
124
124
  this.componentLoading = false;
125
- this.addMessage("error", "agro.angular_components.error_loading_accounts_title", "agro.angular_components.error_loading_accounts_description");
125
+ const detailMsg = (err === null || err === void 0 ? void 0 : err.message) || "agro.angular_components.error_loading_accounts_description";
126
+ this.addMessage("warn", "agro.angular_components.error_loading_accounts_title", detailMsg);
126
127
  throw err;
127
128
  }))
128
129
  .subscribe((list) => {
@@ -367,10 +368,11 @@ let FinancialTitleTableComponent = class FinancialTitleTableComponent {
367
368
  getFields(field, header, path, type, fieldOrderBy) {
368
369
  return { field, path, type, header: this.translate.instant(header), orderBy: fieldOrderBy };
369
370
  }
370
- addMessage(severity, summary, detail, sticky = false) {
371
+ addMessage(severity, summary, detail, sticky = false, life = 7000) {
371
372
  this.messageService.add({
372
373
  severity,
373
374
  sticky,
375
+ life,
374
376
  summary: this.translate.instant(summary),
375
377
  detail: this.translate.instant(detail),
376
378
  });
@@ -411,4 +413,4 @@ FinancialTitleTableComponent = __decorate([
411
413
  })
412
414
  ], FinancialTitleTableComponent);
413
415
  export { FinancialTitleTableComponent };
414
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluYW5jaWFsLXRpdGxlLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItYWdyb25lZ29jaW8vYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9maW5hbmNpYWwtdGl0bGUtdGFibGUvZmluYW5jaWFsLXRpdGxlLXRhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxRQUFRLE1BQU0sNEJBQTRCLENBQUM7QUFDbEQsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRS9FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQXNCN0UsSUFBYSw0QkFBNEIsR0FBekMsTUFB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U0FBUyxDQUFDLFlBQVksQ0FBQzsyREFBYztBQUU3QjtJQUFSLEtBQUssRUFBRTs2REFBaUM7QUFDaEM7SUFBUixLQUFLLEVBQUU7OERBQXdDO0FBQ3RDO0lBQVQsTUFBTSxFQUFFO3FFQUE2QztBQUw3Qyw0QkFBNEI7SUFMeEMsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLHlCQUF5QjtRQUNuQyxrMVJBQXFEOztLQUV4RCxDQUFDO0dBQ1csNEJBQTRCLENBMmN4QztTQTNjWSw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWdpc3RlckxvY2FsZURhdGEgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCBsb2NhbGVQdCBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvcHRcIjtcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IEJhZGdlQ29sb3JzLCBCdXR0b25Qcmlvcml0eSwgQnV0dG9uU2l6ZSwgRmllbGRUeXBlIH0gZnJvbSBcIkBzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHNcIjtcclxuaW1wb3J0IHsgTGF6eUxvYWRFdmVudCwgTWVzc2FnZVNlcnZpY2UsIFRhYmxlIH0gZnJvbSBcInByaW1lbmdcIjtcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IEFncm9PYmplY3RVdGlscyB9IGZyb20gXCIuLi8uLi9jb21tb24vYWdyby1vYmplY3QtdXRpbHMuY2xhc3NcIjtcclxuaW1wb3J0IHsgQUdST19OVU1CRVJTIH0gZnJvbSBcIi4uLy4uL2VudW1zXCI7XHJcbmltcG9ydCB7IExpYlRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9saWItdHJhbnNsYXRpb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBGaW5hbmNpYWxUaXRsZU9wdGlvbnMgfSBmcm9tIFwiLi9maW5hbmNpYWwtdGl0bGUtdGFibGUtb3B0aW9ucy5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHsgQWdyb0ZpbmFuY2lhbFNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlcy9maW5hbmNpYWwvYWdyby1maW5hbmNpYWwuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBPcmRlckJ5VHlwZSwgVGl0bGVGaWVsZHNPcmRlckJ5IH0gZnJvbSBcIi4vc2VydmljZXMvZmluYW5jaWFsL2VudW1zXCI7XHJcbmltcG9ydCB7XHJcbiAgICBGaW5hbmNpYWxRdWVyeURhdGFSZXNwb25zZSxcclxuICAgIEZpbmFuY2lhbFRpdGxlTGlzdER0byxcclxuICAgIFJlY09yZGVyQnksXHJcbiAgICBSZWNvcmRUaXRsZUR0byxcclxuICAgIFJlcXVlc3RMaXN0VGl0bGVzSW5wdXQsXHJcbn0gZnJvbSBcIi4vc2VydmljZXMvZmluYW5jaWFsL2ludGVmYWNlc1wiO1xyXG5cclxuaW50ZXJmYWNlIENvbHVtbkNvbmZpZyB7XHJcbiAgICBmaWVsZDogc3RyaW5nO1xyXG4gICAgaGVhZGVyOiBzdHJpbmc7XHJcbiAgICBwYXRoOiBzdHJpbmdbXTtcclxuICAgIHR5cGU6IEZpZWxkVHlwZTtcclxuICAgIG9yZGVyQnk6IFRpdGxlRmllbGRzT3JkZXJCeSB8IG51bGw7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwicy1maW5hbmNpYWwtdGl0bGUtdGFibGVcIixcclxuICAgIHRlbXBsYXRlVXJsOiBcIi4vZmluYW5jaWFsLXRpdGxlLXRhYmxlLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgICBzdHlsZVVybHM6IFtcIi4vZmluYW5jaWFsLXRpdGxlLXRhYmxlLmNvbXBvbmVudC5jc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaW5hbmNpYWxUaXRsZVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgQFZpZXdDaGlsZChcIlRpdGxlVGFibGVcIikgdGFibGU6IFRhYmxlO1xyXG5cclxuICAgIEBJbnB1dCgpIG9wdGlvbnMhOiBGaW5hbmNpYWxUaXRsZU9wdGlvbnM7XHJcbiAgICBASW5wdXQoKSBzZWxlY3RlZDogRmluYW5jaWFsVGl0bGVMaXN0RHRvW10gPSBbXTtcclxuICAgIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xyXG5cclxuICAgIGdyaWREYXRhOiBGaW5hbmNpYWxUaXRsZUxpc3REdG9bXSA9IFtdO1xyXG4gICAgZ3JpZFRvdGFsUmVjb3JkczogbnVtYmVyO1xyXG5cclxuICAgIGVycm9yTWVzc2FnZTogYW55ID0ge1xyXG4gICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZXJyb3JfcmVxdWlyZWRcIiksXHJcbiAgICAgICAgbGVzc1RoYW5aZXJvOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZXJyb3JfbGVzc19vcl9lcXVhbF96ZXJvXCIpLFxyXG4gICAgICAgIGdyZWF0aGVyVGhhbkFsbG93ZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5lcnJvcl9ncmVhdGVyX3RoYW5fYWxsb3dlZFwiKSxcclxuICAgIH07XHJcblxyXG4gICAgdGFibGVJbml0aWFsaXplZCA9IGZhbHNlO1xyXG4gICAgc2hvd1NpZGViYXIgPSBmYWxzZTtcclxuICAgIHNlbGVjdGVkUm93OiBSZWNvcmRUaXRsZUR0bztcclxuXHJcbiAgICBncmlkQ29sdW1uczogQ29sdW1uQ29uZmlnW10gPSBbXTtcclxuICAgIHNpZGViYXJGaWVsZHM6IGFueVtdID0gW107XHJcblxyXG4gICAgY29tcG9uZW50TG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgIGJ1dHRvblNpemUgPSBCdXR0b25TaXplO1xyXG4gICAgYnV0dG9uUHJpb3JpdHkgPSBCdXR0b25Qcmlvcml0eTtcclxuICAgIGJhZGdlQ29sb3JzID0gQmFkZ2VDb2xvcnM7XHJcblxyXG4gICAgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xyXG4gICAgICAgIHRpdGxlc0Zvcm06IG5ldyBGb3JtQXJyYXkoW10sIFtdKSxcclxuICAgIH0pO1xyXG5cclxuICAgIHByaXZhdGUgY3VycmVudExpc3RQYXJhbXM6IExhenlMb2FkRXZlbnQgPSB7IGZpcnN0OiAwLCByb3dzOiAxMCwgc29ydEZpZWxkOiBudWxsLCBzb3J0T3JkZXI6IG51bGwsIGZpbHRlcnM6IHt9IH07XHJcbiAgICByZWFkb25seSBuZ1Vuc3Vic2NyaWJlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIGdldCB0aXRsZXNGb3JtKCk6IEZvcm1BcnJheSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoXCJ0aXRsZXNGb3JtXCIpIGFzIEZvcm1BcnJheTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogTGliVHJhbnNsYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZmluYW5jaWFsU2VydmljZTogQWdyb0ZpbmFuY2lhbFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVQdCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmljaWFsaXphIGNvbHVuYXMgZGEgdGFiZWxhIGUgY2FtcG9zIGV4aWJpZG9zIG5vIHNpZGViYXIsXHJcbiAgICAgKiBkZXBvaXMgZGlzcGFyYSBhIHByaW1laXJhIGJ1c2NhIGRlIHTDrXR1bG9zIGNvbSBvcyBmaWx0cm9zIGluZm9ybWFkb3MgZW0ge0BsaW5rIG9wdGlvbnN9LlxyXG4gICAgICovXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmdyaWRDb2x1bW5zID0gW1xyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcInRpdGxlXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudGl0bGVcIiwgW1wibnVtYmVyVGl0bGVcIl0sIEZpZWxkVHlwZS5TdHJpbmcsIFRpdGxlRmllbGRzT3JkZXJCeS5OVU1CRVJfVElUTEUpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcInR5cGVcIiwgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy50eXBlXCIsIFtcInRpdGxlVHlwZS5jb2RcIiwgXCJ0aXRsZVR5cGUuZGVzY1wiXSwgRmllbGRUeXBlLlN0cmluZywgbnVsbCksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFwiZW50cnlEYXRlXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZW50cnlcIiwgW1wiaXNzdWVEYXRlXCJdLCBGaWVsZFR5cGUuRGF0ZSwgVGl0bGVGaWVsZHNPcmRlckJ5LklTU1VFX0RBVEUpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcImR1ZURhdGVcIiwgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5kdWVfZGF0ZVwiLCBbXCJkdWVEYXRlXCJdLCBGaWVsZFR5cGUuRGF0ZSwgVGl0bGVGaWVsZHNPcmRlckJ5LkRVRV9EQVRFKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXHJcbiAgICAgICAgICAgICAgICBcInZhbHVlT3JpZ2luXCIsXHJcbiAgICAgICAgICAgICAgICBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLm9yaWdpbmFsX3ZhbHVlXCIsXHJcbiAgICAgICAgICAgICAgICBbXCJ2YWx1ZXMub3JpZ2luYWxWYWx1ZVwiXSxcclxuICAgICAgICAgICAgICAgIEZpZWxkVHlwZS5Nb25leSxcclxuICAgICAgICAgICAgICAgIFRpdGxlRmllbGRzT3JkZXJCeS5PUklHSU5BTF9WQUxVRVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcclxuICAgICAgICAgICAgICAgIFwidmFsdWVPcGVuXCIsXHJcbiAgICAgICAgICAgICAgICBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLm9wZW5fdmFsdWVcIixcclxuICAgICAgICAgICAgICAgIFtcInZhbHVlcy5vcGVuVmFsdWVcIl0sXHJcbiAgICAgICAgICAgICAgICBGaWVsZFR5cGUuTW9uZXksXHJcbiAgICAgICAgICAgICAgICBUaXRsZUZpZWxkc09yZGVyQnkuT1BFTl9WQUxVRVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcclxuICAgICAgICAgICAgICAgIFwidmFsdWVOZXRcIixcclxuICAgICAgICAgICAgICAgIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudmFsdWVfbmV0XCIsXHJcbiAgICAgICAgICAgICAgICBbXCJ2YWx1ZXMubmV0VmFsdWVcIl0sXHJcbiAgICAgICAgICAgICAgICBGaWVsZFR5cGUuTW9uZXksXHJcbiAgICAgICAgICAgICAgICBUaXRsZUZpZWxkc09yZGVyQnkuTkVUX1ZBTFVFXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFwidmFsdWVQYWlkXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudmFsdWVfdG9fcGF5XCIsIFtcInZhbHVlUGFpZFwiXSwgRmllbGRUeXBlLk1vbmV5LCBudWxsKSxcclxuICAgICAgICBdO1xyXG4gICAgICAgIHRoaXMuc2lkZWJhckZpZWxkcyA9IFtcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJjb21wYW55XCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuY29tcGFueVwiLCBbXCJjb21wYW55LmNvZFwiLCBcImNvbXBhbnkuZGVzY1wiXSwgRmllbGRUeXBlLlN0cmluZywgbnVsbCksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFwiYnJhbmNoXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuYnJhbmNoXCIsIFtcImJyYW5jaC5jb2RcIiwgXCJicmFuY2guZGVzY1wiXSwgRmllbGRUeXBlLlN0cmluZywgbnVsbCksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFwicHJvZHVjZXJcIiwgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5wcm9kdWNlclwiLCBbXCJwcm9kdWNlci5jb2RcIiwgXCJwcm9kdWNlci5kZXNjXCJdLCBGaWVsZFR5cGUuU3RyaW5nLCBudWxsKSxcclxuICAgICAgICAgICAgLi4udGhpcy5ncmlkQ29sdW1ucy5maWx0ZXIoKGNvbCkgPT4gIVtcInZhbHVlUGFpZFwiLCBcInZhbHVlTmV0XCJdLmluY2x1ZGVzKGNvbC5maWVsZCkpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcInZhbHVlRmVlc1wiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX2ZlZXNcIiwgW1widmFsdWVzLmZlZXNWYWx1ZVwiXSwgRmllbGRUeXBlLk1vbmV5LCBudWxsKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJ2YWx1ZUZpbmVcIiwgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy52YWx1ZV9maW5lXCIsIFtcInZhbHVlcy5maW5lVmFsdWVcIl0sIEZpZWxkVHlwZS5Nb25leSwgbnVsbCksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFwidmFsdWVDaGFyZ2VcIiwgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy52YWx1ZV9jaGFyZ2VcIiwgW1widmFsdWVzLmNoYXJnZVZhbHVlXCJdLCBGaWVsZFR5cGUuTW9uZXksIG51bGwpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcclxuICAgICAgICAgICAgICAgIFwidmFsdWVDb3JyZWN0aW9uXCIsXHJcbiAgICAgICAgICAgICAgICBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX2NvcnJlY3Rpb25cIixcclxuICAgICAgICAgICAgICAgIFtcInZhbHVlcy5tb25ldGFyeUNvcnJlY3Rpb25WYWx1ZVwiXSxcclxuICAgICAgICAgICAgICAgIEZpZWxkVHlwZS5Nb25leSxcclxuICAgICAgICAgICAgICAgIG51bGxcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXHJcbiAgICAgICAgICAgICAgICBcInZhbHVlQWRkaXRpb25hbFwiLFxyXG4gICAgICAgICAgICAgICAgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy52YWx1ZV9hZGRpdGlvbmFsXCIsXHJcbiAgICAgICAgICAgICAgICBbXCJ2YWx1ZXMub3RoZXJBZGRpdGlvblZhbHVlXCJdLFxyXG4gICAgICAgICAgICAgICAgRmllbGRUeXBlLk1vbmV5LFxyXG4gICAgICAgICAgICAgICAgbnVsbFxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcInZhbHVlRGlzY291bnRcIiwgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy52YWx1ZV9kaXNjb3VudFwiLCBbXCJ2YWx1ZXMuZGlzY291bnRWYWx1ZVwiXSwgRmllbGRUeXBlLk1vbmV5LCBudWxsKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXHJcbiAgICAgICAgICAgICAgICBcInZhbHVlT3RoZXJEaXNjb3VudFwiLFxyXG4gICAgICAgICAgICAgICAgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy52YWx1ZV9vdGhlcl9kaXNjb3VudFwiLFxyXG4gICAgICAgICAgICAgICAgW1widmFsdWVzLm90aGVyRGlzY291bnRWYWx1ZVwiXSxcclxuICAgICAgICAgICAgICAgIEZpZWxkVHlwZS5Nb25leSxcclxuICAgICAgICAgICAgICAgIG51bGxcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgLi4udGhpcy5ncmlkQ29sdW1ucy5maWx0ZXIoKGNvbCkgPT4gW1widmFsdWVOZXRcIl0uaW5jbHVkZXMoY29sLmZpZWxkKSksXHJcbiAgICAgICAgXTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUdyaWQodGhpcy5jdXJyZW50TGlzdFBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBcMOzcyBhIHJlbmRlcml6YcOnw6NvIGRhIHRhYmVsYSwgc2luY3Jvbml6YSBvIGVzdGFkbyBkZSBjaGVja2JveC9saW5oYSBlZGl0w6F2ZWxcclxuICAgICAqIGNvbSBvIGFycmF5IGRlIHTDrXR1bG9zIHNlbGVjaW9uYWRvcyBwYXJhIGV2aXRhciBhY2Vzc28gYSByZWZlcsOqbmNpYXMgYWluZGEgbsOjbyBjcmlhZGFzLlxyXG4gICAgICovXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgdGhpcy50YWJsZUluaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnN5bmNocm9uaXplQ2hlY2tib3hBbmRFZGl0YWJsZUZpZWxkU3RhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xyXG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFBhZ2VTaXplKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zPy5yb3dzO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFJvd0luZGV4KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zPy5maXJzdDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTb3J0RmllbGQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudExpc3RQYXJhbXM/LnNvcnRGaWVsZDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTb3J0T3JkZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudExpc3RQYXJhbXM/LnNvcnRPcmRlcjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZheiByZXF1aXNpw6fDo28gcGFnaW5hZGEvb3JkZW5hZGEgcGFyYSBsaXN0YXIgb3MgdMOtdHVsb3MsIG1vbnRhIG8gZm9ybXVsw6FyaW9cclxuICAgICAqIHJlYXRpdm8gcGFyYSBjYWRhIGxpbmhhIGUgdHJhdGEgZXJyb3MgZGUgYmFja2VuZCBleGliaW5kbyBtZW5zYWdlbSBhbyB1c3XDoXJpby5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZXZlbnQgcGFyw6JtZXRyb3MgZGUgcGFnaW5hw6fDo28sIG9yZGVuYcOnw6NvIGUgZmlsdHJvcyB2aW5kb3MgZG8gUHJpbWVORy5cclxuICAgICAqL1xyXG4gICAgdXBkYXRlR3JpZChldmVudDogTGF6eUxvYWRFdmVudCkge1xyXG4gICAgICAgIHRoaXMuY29tcG9uZW50TG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgY29uc3Qgc2l6ZSA9IGV2ZW50LnJvd3M7XHJcbiAgICAgICAgY29uc3QgcGFnZSA9IGV2ZW50LmZpcnN0IC8gc2l6ZTtcclxuICAgICAgICBjb25zdCBmaWVsZCA9IGV2ZW50LnNvcnRGaWVsZDtcclxuICAgICAgICBjb25zdCBzb3J0T3JkZXIgPSBldmVudC5zb3J0T3JkZXI7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TGlzdFBhcmFtcyA9IGV2ZW50O1xyXG5cclxuICAgICAgICBjb25zdCBpbnB1dDogUmVxdWVzdExpc3RUaXRsZXNJbnB1dCA9IHtcclxuICAgICAgICAgICAgcGFnZVJlcXVlc3Q6IHsgb2Zmc2V0OiBwYWdlLCBvcmRlckJ5OiB0aGlzLmdldFJlY09yZGVyQnkoZmllbGQsIHNvcnRPcmRlciksIHNpemUgfSxcclxuICAgICAgICAgICAgZmlsdGVyOiB0aGlzLm9wdGlvbnMsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5maW5hbmNpYWxTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5saXN0VGl0bGVzKGlucHV0KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZE1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZXJyb3JcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5lcnJvcl9sb2FkaW5nX2FjY291bnRzX3RpdGxlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZXJyb3JfbG9hZGluZ19hY2NvdW50c19kZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGxpc3Q6IEZpbmFuY2lhbFF1ZXJ5RGF0YVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWREYXRhID0gbGlzdC50aXRsZXMgfHwgW107XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVGb3JtR3JvdXBGb3JUaXRsZSgpO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZFRvdGFsUmVjb3JkcyA9IGxpc3QudG90YWxFbGVtZW50cztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zeW5jaHJvbml6ZUNoZWNrYm94QW5kRWRpdGFibGVGaWVsZFN0YXRlKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uU2VsZWN0aW9uQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkID0gZXZlbnQ7XHJcbiAgICAgICAgdGhpcy5zeW5jaHJvbml6ZUNoZWNrYm94QW5kRWRpdGFibGVGaWVsZFN0YXRlKCk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFF1YW5kbyB1bSBpdGVtIMOpIGRlc21hcmNhZG8sIGxpbXBhIG8gYHZhbHVlUGFpZGAgY29ycmVzcG9uZGVudGVcclxuICAgICAqIHRhbnRvIG5vIG1vZGVsbyBkYSBsaW5oYSBxdWFudG8gbm8ge0BsaW5rIHRpdGxlc0Zvcm19LCBzZW0gZGlzcGFyYXIgbm92b3MgZXZlbnRvcy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZXZlbnQgZXZlbnRvIGRlIGRlc21hcmNhw6fDo28gZW1pdGlkbyBwZWxvIFByaW1lTkcuXHJcbiAgICAgKi9cclxuICAgIG9uVW5zZWxlY3QoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IHJvdyA9IHRoaXMuZ3JpZERhdGEuZmluZCgocikgPT4gci5pZCA9PT0gZXZlbnQuZGF0YS5pZCk7XHJcbiAgICAgICAgaWYgKHJvdykge1xyXG4gICAgICAgICAgICByb3cudmFsdWVQYWlkID0gbnVsbDtcclxuICAgICAgICAgICAgLy8gYXR1YWxpemEgZm9ybSBjb250cm9sIGNvcnJlc3BvbmRlbnRlXHJcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuZ3JpZERhdGEuZmluZEluZGV4KChnKSA9PiBnLmlkID09PSByb3cuaWQpO1xyXG4gICAgICAgICAgICBjb25zdCBjdHJsID0gdGhpcy50aXRsZXNGb3JtLmF0KGlkeCk/LmdldChcInZhbHVlUGFpZFwiKTtcclxuICAgICAgICAgICAgaWYgKGN0cmwpIHtcclxuICAgICAgICAgICAgICAgIGN0cmwuc2V0VmFsdWUobnVsbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNob3dEZXRhaWxzKHJvd0RhdGE6IGFueSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3cgPSByb3dEYXRhO1xyXG4gICAgICAgIHRoaXMuc2hvd1NpZGViYXIgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlRGV0YWlscygpIHtcclxuICAgICAgICB0aGlzLnNob3dTaWRlYmFyID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaXNMYXN0Q29sdW1uKGluZGV4OiBudW1iZXIsIGNvbHVtbnM6IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIGluZGV4ID09PSBjb2x1bW5zLmxlbmd0aCAtIDE7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U3R5bGVDb2x1bW5zKGZpZWxkOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICAgIGxldCBzdHlsZUNsYXNzID0ge307XHJcbiAgICAgICAgc3dpdGNoIChmaWVsZCkge1xyXG4gICAgICAgICAgICBjYXNlIFwiY2hlY2tib3hcIjpcclxuICAgICAgICAgICAgICAgIHN0eWxlQ2xhc3MgPSB7IHdpZHRoOiBcIjUwcHhcIiB9O1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJ0aXRsZVwiOlxyXG4gICAgICAgICAgICBjYXNlIFwiZHVlRGF0ZVwiOlxyXG4gICAgICAgICAgICAgICAgc3R5bGVDbGFzcyA9IHsgd2lkdGg6IFwiMTUwcHhcIiB9O1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJ0eXBlXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJlbnRyeURhdGVcIjpcclxuICAgICAgICAgICAgICAgIHN0eWxlQ2xhc3MgPSB7IHdpZHRoOiBcIjEyMHB4XCIgfTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgc3R5bGVDbGFzcyA9IHsgd2lkdGg6IFwiMTk4cHhcIiB9O1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdHlsZUNsYXNzO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFByb3Aob2JqOiBhbnksIGNvbDogYW55KTogYW55IHtcclxuICAgICAgICBpZiAoIW9iaiB8fCAhY29sPy5wYXRoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIi1cIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHNlcGFyYXRvciA9IFwiXCI7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IFwiXCI7XHJcbiAgICAgICAgZm9yIChjb25zdCBwYXRoIG9mIGNvbC5wYXRoKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCArPSBzZXBhcmF0b3IgKyBBZ3JvT2JqZWN0VXRpbHMuZ2V0UHJvcEFuZEZvcm1hdFZhbHVlKG9iaiwgcGF0aCwgY29sLnR5cGUpO1xyXG4gICAgICAgICAgICBzZXBhcmF0b3IgPSBcIiAtIFwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlY29uc3Ryw7NpIG8ge0BsaW5rIHRpdGxlc0Zvcm19IGNvbSBiYXNlIG5hIHtAbGluayBncmlkRGF0YX0gYXR1YWwsXHJcbiAgICAgKiBwcmVzZXJ2YW5kbyB2YWxvcmVzIGrDoSBpbmZvcm1hZG9zIGVtIGl0ZW5zIHNlbGVjaW9uYWRvcyBlIHJlZ2lzdHJhbmRvIGxpc3RlbmVycyBkZSBtdWRhbsOnYS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBjcmVhdGVGb3JtR3JvdXBGb3JUaXRsZSgpIHtcclxuICAgICAgICBjb25zdCB0aXRsZXNGb3JtQXJyYXkgPSB0aGlzLmZvcm0uZ2V0KFwidGl0bGVzRm9ybVwiKSBhcyBGb3JtQXJyYXk7XHJcbiAgICAgICAgdGl0bGVzRm9ybUFycmF5LmNsZWFyKCk7XHJcbiAgICAgICAgdGhpcy5ncmlkRGF0YS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IHRoaXMuc2VsZWN0ZWQuZmluZCgoc2VsKSA9PiBzZWwuaWQgPT09IGl0ZW0uaWQpO1xyXG4gICAgICAgICAgICBjb25zdCBncm91cCA9IG5ldyBGb3JtR3JvdXAoe1xyXG4gICAgICAgICAgICAgICAgaWQ6IG5ldyBGb3JtQ29udHJvbChpdGVtLmlkIHx8IG51bGwsIFtdKSxcclxuICAgICAgICAgICAgICAgIHZhbHVlUGFpZDogbmV3IEZvcm1Db250cm9sKHNlbGVjdGVkSXRlbT8udmFsdWVQYWlkID8/IG51bGwsIFtdKSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaWJlVG9WYWx1ZVBhaWRDaGFuZ2VzKGdyb3VwLCBpdGVtKTtcclxuICAgICAgICAgICAgdGl0bGVzRm9ybUFycmF5LnB1c2goZ3JvdXApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogT2JzZXJ2YSBtdWRhbsOnYXMgbm8gY2FtcG8gYHZhbHVlUGFpZGAgZGUgdW1hIGxpbmhhLlxyXG4gICAgICogQXR1YWxpemEgbyBhcnJheSB7QGxpbmsgc2VsZWN0ZWR9IHF1YW5kbyBvIHTDrXR1bG8gZXN0w6Egc2VsZWNpb25hZG8sXHJcbiAgICAgKiBhcGxpY2EgbyBsaW1pdGUgZG8gdmFsb3IgbMOtcXVpZG8gKGBuZXRWYWx1ZWApIGUgZXZpdGEgbG9vcHMgZGUgZXZlbnRvcyB1c2FuZG9cclxuICAgICAqIGBzZXRWYWx1ZWAgY29tIGBlbWl0RXZlbnQ6IGZhbHNlYC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZm9ybUdyb3VwIGdydXBvIGRlIGZvcm11bMOhcmlvIGFzc29jaWFkbyDDoCBsaW5oYSBkYSB0YWJlbGEuXHJcbiAgICAgKiBAcGFyYW0gaXRlbSB0w610dWxvIGZpbmFuY2Vpcm8gY29ycmVzcG9uZGVudGUgw6AgbGluaGEuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc3Vic2NyaWJlVG9WYWx1ZVBhaWRDaGFuZ2VzKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBpdGVtOiBGaW5hbmNpYWxUaXRsZUxpc3REdG8pIHtcclxuICAgICAgICBjb25zdCB2YWx1ZVBhaWRDb250cm9sID0gZm9ybUdyb3VwLmdldChcInZhbHVlUGFpZFwiKTtcclxuICAgICAgICB2YWx1ZVBhaWRDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHJhd1ZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlUGFpZCA9IHRoaXMucGFyc2VOdW1iZXJTYWZlKHJhd1ZhbHVlKTtcclxuICAgICAgICAgICAgY29uc3QgdGl0bGVJZCA9IGZvcm1Hcm91cC5nZXQoXCJpZFwiKT8udmFsdWU7XHJcblxyXG4gICAgICAgICAgICAvLyBhdHVhbGl6YSBzZWxlY3RlZCBzZSBvIHTDrXR1bG8gZXN0aXZlciBzZWxlY2lvbmFkb1xyXG4gICAgICAgICAgICBjb25zdCBzZWxJbmRleCA9IHRoaXMuc2VsZWN0ZWQuZmluZEluZGV4KChzKSA9PiBzLmlkID09PSB0aXRsZUlkKTtcclxuICAgICAgICAgICAgaWYgKHNlbEluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgLy8gZ2FyYW50ZSBxdWUgdmFsdWVQYWlkIHNlamEgbnVtw6lyaWNvIG91IG51bGxcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRbc2VsSW5kZXhdLnZhbHVlUGFpZCA9IHZhbHVlUGFpZDtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXQgPSBOdW1iZXIodGhpcy5zZWxlY3RlZFtzZWxJbmRleF0/LnZhbHVlcz8ubmV0VmFsdWUpIHx8IDA7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWVQYWlkICE9PSBudWxsICYmIHZhbHVlUGFpZCA+IG5ldCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRbc2VsSW5kZXhdLnZhbHVlUGFpZCA9IG5ldDtcclxuICAgICAgICAgICAgICAgICAgICAvLyBVc2FkbyBwYXJhIGV2aXRhciBsb29wIGluZmluaXRvIGRlIGV2ZW50b3NcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZVBhaWRDb250cm9sLnNldFZhbHVlKG5ldCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIGF0dWFsaXphIGZsYWcgZGUgZXJyb1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFtzZWxJbmRleF0uaGFzRXJyb3IgPSB2YWx1ZVBhaWRDb250cm9sLmludmFsaWQ7XHJcbiAgICAgICAgICAgICAgICAvLyBlbWl0ZSBtdWRhbsOnYSBkZSBzZWxlw6fDo29cclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBzZSBuw6NvIGVzdGl2ZXIgc2VsZWNpb25hZG8sIGFwZW5hcyBhcGxpY2EgbGltaXRlIGxvY2FsIGJhc2VhZG8gbm8gaXRlbVxyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV0ID0gTnVtYmVyKGl0ZW0/LnZhbHVlcz8ubmV0VmFsdWUpIHx8IDA7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWVQYWlkICE9PSBudWxsICYmIHZhbHVlUGFpZCA+IG5ldCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlUGFpZENvbnRyb2wuc2V0VmFsdWUobmV0LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHBhcnNlTnVtYmVyU2FmZSh2YWx1ZTogYW55KTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IFwiXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNsZWFuZWQgPSB2YWx1ZS5yZXBsYWNlKC9cXC4vZywgXCJcIikucmVwbGFjZShcIixcIiwgXCIuXCIpO1xyXG4gICAgICAgICAgICBjb25zdCBuID0gcGFyc2VGbG9hdChjbGVhbmVkKTtcclxuICAgICAgICAgICAgcmV0dXJuIGlzTmFOKG4pID8gbnVsbCA6IG47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5pY2lhIG8gbW9kbyBkZSBlZGnDp8OjbyBuYSBsaW5oYSBkYSB0YWJlbGEgUHJpbWVORyBlIGFwbGljYSByZWdyYXMgZGUgdmFsaWRhw6fDo29cclxuICAgICAqIG5vIGZvcm11bMOhcmlvIHJlYXRpdm8gY29ycmVzcG9uZGVudGUgw6BxdWVsYSBsaW5oYS5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gcm93IG9iamV0byBkZSBsaW5oYSByZWNlYmlkbyBkYSB0YWJlbGEuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaW5pdFJvd0VkaXQocm93OiBhbnkpIHtcclxuICAgICAgICBpZiAodGhpcy50YWJsZSkge1xyXG4gICAgICAgICAgICB0aGlzLnRhYmxlLmluaXRSb3dFZGl0KHJvdyk7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwbHlWYWxpZGF0aW9uVG9Sb3dFZGl0KHJvdyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRpY2lvbmEgdmFsaWRhZG9yZXMgZGluYW1pY2FtZW50ZSBhbyBjYW1wbyBgdmFsdWVQYWlkYCBkYSBsaW5oYSBlbSBlZGnDp8OjbyxcclxuICAgICAqIG1hcmNhIG8gY29udHJvbGUgY29tbyBzdWpvIGUgZm9yw6dhIHJldmFsaWRhw6fDo28gaW1lZGlhdGEgcGFyYSBleGliaXIgZXJyb3MgbmEgdGVsYS5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gcm93IG9iamV0byBkZSBsaW5oYSBwYXJhIGFwbGljYXIgdmFsaWRhw6fDo28uXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgYXBwbHlWYWxpZGF0aW9uVG9Sb3dFZGl0KHJvdzogYW55KSB7XHJcbiAgICAgICAgY29uc3Qgcm93SW5kZXggPSB0aGlzLmdyaWREYXRhLmZpbmRJbmRleCgocikgPT4gci5pZCA9PT0gcm93LmlkKTtcclxuICAgICAgICBjb25zdCBmb3JtR3JvdXAgPSB0aGlzLnRpdGxlc0Zvcm0uYXQocm93SW5kZXgpIGFzIEZvcm1Hcm91cDtcclxuICAgICAgICBpZiAoIWZvcm1Hcm91cCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHZhbHVlUGFpZENvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KFwidmFsdWVQYWlkXCIpO1xyXG4gICAgICAgIHZhbHVlUGFpZENvbnRyb2w/LnNldFZhbGlkYXRvcnMoW3RoaXMuZ2V0VmFsaWRhdG9yc0ZvclJvd0VkaXQoKSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xyXG4gICAgICAgIHZhbHVlUGFpZENvbnRyb2w/Lm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgdmFsdWVQYWlkQ29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29uc3Ryw7NpIG8ge0BsaW5rIFZhbGlkYXRvckZufSBxdWUgdmFsaWRhIG8gYHZhbHVlUGFpZGA6XHJcbiAgICAgKiAtIGRldmUgc2VyIG1haW9yIHF1ZSB6ZXJvO1xyXG4gICAgICogLSBuw6NvIHBvZGUgdWx0cmFwYXNzYXIgbyB2YWxvciBsw61xdWlkbyAoYG5ldFZhbHVlYCkgZG8gdMOtdHVsby5cclxuICAgICAqXHJcbiAgICAgKiBSZXRvcm5hIG9zIGVycm9zIGNvbnN1bWlkb3MgcGVsbyBjb21wb25lbnRlIGBzLWNvbnRyb2wtZXJyb3JzYC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBnZXRWYWxpZGF0b3JzRm9yUm93RWRpdCgpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICAgICAgcmV0dXJuIChjb250cm9sOiBGb3JtQ29udHJvbCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBjb250cm9sLnBhcmVudCBhcyBGb3JtR3JvdXA7XHJcbiAgICAgICAgICAgIGNvbnN0IHRpdGxlSWQgPSBwYXJlbnQ/LmdldChcImlkXCIpPy52YWx1ZTtcclxuICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBjb250cm9sLnZhbHVlO1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZVBhaWQgPSB0aGlzLnBhcnNlTnVtYmVyU2FmZShyYXdWYWx1ZSk7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZVBhaWQgPT09IG51bGwgfHwgdmFsdWVQYWlkID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZVBhaWQgPD0gQUdST19OVU1CRVJTLlpFUk8pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IGxlc3NUaGFuWmVybzogdHJ1ZSB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHByb2N1cmEgcGVsbyB0w610dWxvIG5vIHNlbGVjdGVkIG91IG5vIGdyaWREYXRhIChwcmlvcml6YSBzZWxlY3RlZClcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRSb3cgPSB0aGlzLnNlbGVjdGVkLmZpbmQoKHNlbCkgPT4gc2VsLmlkID09PSB0aXRsZUlkKSB8fCB0aGlzLmdyaWREYXRhLmZpbmQoKGcpID0+IGcuaWQgPT09IHRpdGxlSWQpO1xyXG4gICAgICAgICAgICBjb25zdCBuZXRWYWx1ZSA9IE51bWJlcihzZWxlY3RlZFJvdz8udmFsdWVzPy5uZXRWYWx1ZSkgfHwgMDtcclxuICAgICAgICAgICAgaWYgKHZhbHVlUGFpZCA+IG5ldFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyBncmVhdGhlclRoYW5BbGxvd2VkOiB0cnVlIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNhbmNlbFJvd0VkaXQocm93OiBhbnkpIHtcclxuICAgICAgICBpZiAodGhpcy50YWJsZSkge1xyXG4gICAgICAgICAgICB0aGlzLnRhYmxlLmNhbmNlbFJvd0VkaXQocm93KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNYW50w6ltIG8gZXN0YWRvIHZpc3VhbCBkYSB0YWJlbGEgKGNoZWNrYm94IG1hcmNhZG8gZSBsaW5oYSBlZGl0w6F2ZWwpIGVtXHJcbiAgICAgKiBzaW5jcm9uaWEgY29tIG8gYXJyYXkgZGUgdMOtdHVsb3Mgc2VsZWNpb25hZG9zLCBpbmNsdXNpdmUgcmVzdGF1cmFuZG8gdmFsb3Jlc1xyXG4gICAgICogZGlnaXRhZG9zIGFvIHJlY2FycmVnYXIsIG9yZGVuYXIgb3UgcGFnaW5hciBhIGdyaWQuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc3luY2hyb25pemVDaGVja2JveEFuZEVkaXRhYmxlRmllbGRTdGF0ZSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZ3JpZERhdGEgfHwgIXRoaXMudGFibGVJbml0aWFsaXplZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmdyaWREYXRhLmZvckVhY2goKHJvdywgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRSb3cgPSB0aGlzLnNlbGVjdGVkLmZpbmQoKHNlbCkgPT4gc2VsLmlkID09PSByb3cuaWQpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgY3RybCA9IHRoaXMudGl0bGVzRm9ybS5hdChpbmRleCk/LmdldChcInZhbHVlUGFpZFwiKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZFJvdykge1xyXG4gICAgICAgICAgICAgICAgLy8gU2luY3Jvbml6YSBvIHZhbG9yIHBhZ28gZG8gaXRlbSBzZWxlY2lvbmFkb1xyXG4gICAgICAgICAgICAgICAgcm93LnZhbHVlUGFpZCA9IHNlbGVjdGVkUm93LnZhbHVlUGFpZDtcclxuICAgICAgICAgICAgICAgIGlmIChjdHJsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3RybC5zZXRWYWx1ZShzZWxlY3RlZFJvdy52YWx1ZVBhaWQsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFJvd0VkaXQocm93KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIENhbmNlbGEgYSBlZGnDp8OjbyBzZSBuw6NvIGVzdGl2ZXIgc2VsZWNpb25hZG9cclxuICAgICAgICAgICAgICAgIGlmIChjdHJsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3RybC5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhbmNlbFJvd0VkaXQocm93KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0RmllbGRzKGZpZWxkOiBzdHJpbmcsIGhlYWRlcjogc3RyaW5nLCBwYXRoOiBzdHJpbmdbXSwgdHlwZTogRmllbGRUeXBlLCBmaWVsZE9yZGVyQnk6IFRpdGxlRmllbGRzT3JkZXJCeSk6IENvbHVtbkNvbmZpZyB7XHJcbiAgICAgICAgcmV0dXJuIHsgZmllbGQsIHBhdGgsIHR5cGUsIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChoZWFkZXIpLCBvcmRlckJ5OiBmaWVsZE9yZGVyQnkgfTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFkZE1lc3NhZ2Uoc2V2ZXJpdHk6IHN0cmluZywgc3VtbWFyeTogc3RyaW5nLCBkZXRhaWw6IHN0cmluZywgc3RpY2t5ID0gZmFsc2UpIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICAgIHNldmVyaXR5LFxyXG4gICAgICAgICAgICBzdGlja3ksXHJcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoc3VtbWFyeSksXHJcbiAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChkZXRhaWwpLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0UmVjT3JkZXJCeShmaWVsZDogc3RyaW5nLCBvcmRlcjogbnVtYmVyKTogUmVjT3JkZXJCeSB7XHJcbiAgICAgICAgY29uc3QgZ3JpZENvbHVtbkZpZWxkID0gdGhpcy5ncmlkQ29sdW1ucy5maW5kKChjb2wpID0+IGNvbC5maWVsZCA9PT0gZmllbGQpO1xyXG4gICAgICAgIGlmIChncmlkQ29sdW1uRmllbGQ/Lm9yZGVyQnkgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGZpZWxkOiBncmlkQ29sdW1uRmllbGQ/Lm9yZGVyQnkgfHwgVGl0bGVGaWVsZHNPcmRlckJ5Lk5VTUJFUl9USVRMRSxcclxuICAgICAgICAgICAgb3JkZXI6IG9yZGVyID09PSAxID8gT3JkZXJCeVR5cGUuQVNDIDogT3JkZXJCeVR5cGUuREVTQyxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
416
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluYW5jaWFsLXRpdGxlLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItYWdyb25lZ29jaW8vYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9maW5hbmNpYWwtdGl0bGUtdGFibGUvZmluYW5jaWFsLXRpdGxlLXRhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxRQUFRLE1BQU0sNEJBQTRCLENBQUM7QUFDbEQsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRS9FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQXNCN0UsSUFBYSw0QkFBNEIsR0FBekMsTUFB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QUMsQ0FBQyxXQUFXLENBQUMsSUFBSTtTQUMxRCxDQUFDO0lBQ04sQ0FBQztDQUNKLENBQUE7O1lBcGFtQyxxQkFBcUI7WUFDZCxvQkFBb0I7WUFDdEIsY0FBYzs7QUExQzFCO0lBQXhCLFNBQVMsQ0FBQyxZQUFZLENBQUM7MkRBQWM7QUFFN0I7SUFBUixLQUFLLEVBQUU7NkRBQWlDO0FBQ2hDO0lBQVIsS0FBSyxFQUFFOzhEQUF3QztBQUN0QztJQUFULE1BQU0sRUFBRTtxRUFBNkM7QUFMN0MsNEJBQTRCO0lBTHhDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSx5QkFBeUI7UUFDbkMsazFSQUFxRDs7S0FFeEQsQ0FBQztHQUNXLDRCQUE0QixDQTZjeEM7U0E3Y1ksNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVnaXN0ZXJMb2NhbGVEYXRhIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgbG9jYWxlUHQgZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL3B0XCI7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBCYWRnZUNvbG9ycywgQnV0dG9uUHJpb3JpdHksIEJ1dHRvblNpemUsIEZpZWxkVHlwZSB9IGZyb20gXCJAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzXCI7XHJcbmltcG9ydCB7IExhenlMb2FkRXZlbnQsIE1lc3NhZ2VTZXJ2aWNlLCBUYWJsZSB9IGZyb20gXCJwcmltZW5nXCI7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBBZ3JvT2JqZWN0VXRpbHMgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2Fncm8tb2JqZWN0LXV0aWxzLmNsYXNzXCI7XHJcbmltcG9ydCB7IEFHUk9fTlVNQkVSUyB9IGZyb20gXCIuLi8uLi9lbnVtc1wiO1xyXG5pbXBvcnQgeyBMaWJUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvbGliLXRyYW5zbGF0aW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRmluYW5jaWFsVGl0bGVPcHRpb25zIH0gZnJvbSBcIi4vZmluYW5jaWFsLXRpdGxlLXRhYmxlLW9wdGlvbnMuaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7IEFncm9GaW5hbmNpYWxTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvZmluYW5jaWFsL2Fncm8tZmluYW5jaWFsLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgT3JkZXJCeVR5cGUsIFRpdGxlRmllbGRzT3JkZXJCeSB9IGZyb20gXCIuL3NlcnZpY2VzL2ZpbmFuY2lhbC9lbnVtc1wiO1xyXG5pbXBvcnQge1xyXG4gICAgRmluYW5jaWFsUXVlcnlEYXRhUmVzcG9uc2UsXHJcbiAgICBGaW5hbmNpYWxUaXRsZUxpc3REdG8sXHJcbiAgICBSZWNPcmRlckJ5LFxyXG4gICAgUmVjb3JkVGl0bGVEdG8sXHJcbiAgICBSZXF1ZXN0TGlzdFRpdGxlc0lucHV0LFxyXG59IGZyb20gXCIuL3NlcnZpY2VzL2ZpbmFuY2lhbC9pbnRlZmFjZXNcIjtcclxuXHJcbmludGVyZmFjZSBDb2x1bW5Db25maWcge1xyXG4gICAgZmllbGQ6IHN0cmluZztcclxuICAgIGhlYWRlcjogc3RyaW5nO1xyXG4gICAgcGF0aDogc3RyaW5nW107XHJcbiAgICB0eXBlOiBGaWVsZFR5cGU7XHJcbiAgICBvcmRlckJ5OiBUaXRsZUZpZWxkc09yZGVyQnkgfCBudWxsO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcInMtZmluYW5jaWFsLXRpdGxlLXRhYmxlXCIsXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2ZpbmFuY2lhbC10aXRsZS10YWJsZS5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuL2ZpbmFuY2lhbC10aXRsZS10YWJsZS5jb21wb25lbnQuY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmluYW5jaWFsVGl0bGVUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICAgIEBWaWV3Q2hpbGQoXCJUaXRsZVRhYmxlXCIpIHRhYmxlOiBUYWJsZTtcclxuXHJcbiAgICBASW5wdXQoKSBvcHRpb25zITogRmluYW5jaWFsVGl0bGVPcHRpb25zO1xyXG4gICAgQElucHV0KCkgc2VsZWN0ZWQ6IEZpbmFuY2lhbFRpdGxlTGlzdER0b1tdID0gW107XHJcbiAgICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcclxuXHJcbiAgICBncmlkRGF0YTogRmluYW5jaWFsVGl0bGVMaXN0RHRvW10gPSBbXTtcclxuICAgIGdyaWRUb3RhbFJlY29yZHM6IG51bWJlcjtcclxuXHJcbiAgICBlcnJvck1lc3NhZ2U6IGFueSA9IHtcclxuICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmVycm9yX3JlcXVpcmVkXCIpLFxyXG4gICAgICAgIGxlc3NUaGFuWmVybzogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmVycm9yX2xlc3Nfb3JfZXF1YWxfemVyb1wiKSxcclxuICAgICAgICBncmVhdGhlclRoYW5BbGxvd2VkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZXJyb3JfZ3JlYXRlcl90aGFuX2FsbG93ZWRcIiksXHJcbiAgICB9O1xyXG5cclxuICAgIHRhYmxlSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuICAgIHNob3dTaWRlYmFyID0gZmFsc2U7XHJcbiAgICBzZWxlY3RlZFJvdzogUmVjb3JkVGl0bGVEdG87XHJcblxyXG4gICAgZ3JpZENvbHVtbnM6IENvbHVtbkNvbmZpZ1tdID0gW107XHJcbiAgICBzaWRlYmFyRmllbGRzOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGNvbXBvbmVudExvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICBidXR0b25TaXplID0gQnV0dG9uU2l6ZTtcclxuICAgIGJ1dHRvblByaW9yaXR5ID0gQnV0dG9uUHJpb3JpdHk7XHJcbiAgICBiYWRnZUNvbG9ycyA9IEJhZGdlQ29sb3JzO1xyXG5cclxuICAgIGZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcclxuICAgICAgICB0aXRsZXNGb3JtOiBuZXcgRm9ybUFycmF5KFtdLCBbXSksXHJcbiAgICB9KTtcclxuXHJcbiAgICBwcml2YXRlIGN1cnJlbnRMaXN0UGFyYW1zOiBMYXp5TG9hZEV2ZW50ID0geyBmaXJzdDogMCwgcm93czogMTAsIHNvcnRGaWVsZDogbnVsbCwgc29ydE9yZGVyOiBudWxsLCBmaWx0ZXJzOiB7fSB9O1xyXG4gICAgcmVhZG9ubHkgbmdVbnN1YnNjcmliZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICBnZXQgdGl0bGVzRm9ybSgpOiBGb3JtQXJyYXkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KFwidGl0bGVzRm9ybVwiKSBhcyBGb3JtQXJyYXk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGU6IExpYlRyYW5zbGF0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZpbmFuY2lhbFNlcnZpY2U6IEFncm9GaW5hbmNpYWxTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlUHQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5pY2lhbGl6YSBjb2x1bmFzIGRhIHRhYmVsYSBlIGNhbXBvcyBleGliaWRvcyBubyBzaWRlYmFyLFxyXG4gICAgICogZGVwb2lzIGRpc3BhcmEgYSBwcmltZWlyYSBidXNjYSBkZSB0w610dWxvcyBjb20gb3MgZmlsdHJvcyBpbmZvcm1hZG9zIGVtIHtAbGluayBvcHRpb25zfS5cclxuICAgICAqL1xyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5ncmlkQ29sdW1ucyA9IFtcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJ0aXRsZVwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnRpdGxlXCIsIFtcIm51bWJlclRpdGxlXCJdLCBGaWVsZFR5cGUuU3RyaW5nLCBUaXRsZUZpZWxkc09yZGVyQnkuTlVNQkVSX1RJVExFKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJ0eXBlXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudHlwZVwiLCBbXCJ0aXRsZVR5cGUuY29kXCIsIFwidGl0bGVUeXBlLmRlc2NcIl0sIEZpZWxkVHlwZS5TdHJpbmcsIG51bGwpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcImVudHJ5RGF0ZVwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmVudHJ5XCIsIFtcImlzc3VlRGF0ZVwiXSwgRmllbGRUeXBlLkRhdGUsIFRpdGxlRmllbGRzT3JkZXJCeS5JU1NVRV9EQVRFKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJkdWVEYXRlXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZHVlX2RhdGVcIiwgW1wiZHVlRGF0ZVwiXSwgRmllbGRUeXBlLkRhdGUsIFRpdGxlRmllbGRzT3JkZXJCeS5EVUVfREFURSksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFxyXG4gICAgICAgICAgICAgICAgXCJ2YWx1ZU9yaWdpblwiLFxyXG4gICAgICAgICAgICAgICAgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5vcmlnaW5hbF92YWx1ZVwiLFxyXG4gICAgICAgICAgICAgICAgW1widmFsdWVzLm9yaWdpbmFsVmFsdWVcIl0sXHJcbiAgICAgICAgICAgICAgICBGaWVsZFR5cGUuTW9uZXksXHJcbiAgICAgICAgICAgICAgICBUaXRsZUZpZWxkc09yZGVyQnkuT1JJR0lOQUxfVkFMVUVcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXHJcbiAgICAgICAgICAgICAgICBcInZhbHVlT3BlblwiLFxyXG4gICAgICAgICAgICAgICAgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5vcGVuX3ZhbHVlXCIsXHJcbiAgICAgICAgICAgICAgICBbXCJ2YWx1ZXMub3BlblZhbHVlXCJdLFxyXG4gICAgICAgICAgICAgICAgRmllbGRUeXBlLk1vbmV5LFxyXG4gICAgICAgICAgICAgICAgVGl0bGVGaWVsZHNPcmRlckJ5Lk9QRU5fVkFMVUVcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXHJcbiAgICAgICAgICAgICAgICBcInZhbHVlTmV0XCIsXHJcbiAgICAgICAgICAgICAgICBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX25ldFwiLFxyXG4gICAgICAgICAgICAgICAgW1widmFsdWVzLm5ldFZhbHVlXCJdLFxyXG4gICAgICAgICAgICAgICAgRmllbGRUeXBlLk1vbmV5LFxyXG4gICAgICAgICAgICAgICAgVGl0bGVGaWVsZHNPcmRlckJ5Lk5FVF9WQUxVRVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcInZhbHVlUGFpZFwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX3RvX3BheVwiLCBbXCJ2YWx1ZVBhaWRcIl0sIEZpZWxkVHlwZS5Nb25leSwgbnVsbCksXHJcbiAgICAgICAgXTtcclxuICAgICAgICB0aGlzLnNpZGViYXJGaWVsZHMgPSBbXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFwiY29tcGFueVwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmNvbXBhbnlcIiwgW1wiY29tcGFueS5jb2RcIiwgXCJjb21wYW55LmRlc2NcIl0sIEZpZWxkVHlwZS5TdHJpbmcsIG51bGwpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcImJyYW5jaFwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmJyYW5jaFwiLCBbXCJicmFuY2guY29kXCIsIFwiYnJhbmNoLmRlc2NcIl0sIEZpZWxkVHlwZS5TdHJpbmcsIG51bGwpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcInByb2R1Y2VyXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMucHJvZHVjZXJcIiwgW1wicHJvZHVjZXIuY29kXCIsIFwicHJvZHVjZXIuZGVzY1wiXSwgRmllbGRUeXBlLlN0cmluZywgbnVsbCksXHJcbiAgICAgICAgICAgIC4uLnRoaXMuZ3JpZENvbHVtbnMuZmlsdGVyKChjb2wpID0+ICFbXCJ2YWx1ZVBhaWRcIiwgXCJ2YWx1ZU5ldFwiXS5pbmNsdWRlcyhjb2wuZmllbGQpKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJ2YWx1ZUZlZXNcIiwgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy52YWx1ZV9mZWVzXCIsIFtcInZhbHVlcy5mZWVzVmFsdWVcIl0sIEZpZWxkVHlwZS5Nb25leSwgbnVsbCksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFwidmFsdWVGaW5lXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudmFsdWVfZmluZVwiLCBbXCJ2YWx1ZXMuZmluZVZhbHVlXCJdLCBGaWVsZFR5cGUuTW9uZXksIG51bGwpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcInZhbHVlQ2hhcmdlXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudmFsdWVfY2hhcmdlXCIsIFtcInZhbHVlcy5jaGFyZ2VWYWx1ZVwiXSwgRmllbGRUeXBlLk1vbmV5LCBudWxsKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXHJcbiAgICAgICAgICAgICAgICBcInZhbHVlQ29ycmVjdGlvblwiLFxyXG4gICAgICAgICAgICAgICAgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy52YWx1ZV9jb3JyZWN0aW9uXCIsXHJcbiAgICAgICAgICAgICAgICBbXCJ2YWx1ZXMubW9uZXRhcnlDb3JyZWN0aW9uVmFsdWVcIl0sXHJcbiAgICAgICAgICAgICAgICBGaWVsZFR5cGUuTW9uZXksXHJcbiAgICAgICAgICAgICAgICBudWxsXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFxyXG4gICAgICAgICAgICAgICAgXCJ2YWx1ZUFkZGl0aW9uYWxcIixcclxuICAgICAgICAgICAgICAgIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudmFsdWVfYWRkaXRpb25hbFwiLFxyXG4gICAgICAgICAgICAgICAgW1widmFsdWVzLm90aGVyQWRkaXRpb25WYWx1ZVwiXSxcclxuICAgICAgICAgICAgICAgIEZpZWxkVHlwZS5Nb25leSxcclxuICAgICAgICAgICAgICAgIG51bGxcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJ2YWx1ZURpc2NvdW50XCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudmFsdWVfZGlzY291bnRcIiwgW1widmFsdWVzLmRpc2NvdW50VmFsdWVcIl0sIEZpZWxkVHlwZS5Nb25leSwgbnVsbCksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFxyXG4gICAgICAgICAgICAgICAgXCJ2YWx1ZU90aGVyRGlzY291bnRcIixcclxuICAgICAgICAgICAgICAgIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudmFsdWVfb3RoZXJfZGlzY291bnRcIixcclxuICAgICAgICAgICAgICAgIFtcInZhbHVlcy5vdGhlckRpc2NvdW50VmFsdWVcIl0sXHJcbiAgICAgICAgICAgICAgICBGaWVsZFR5cGUuTW9uZXksXHJcbiAgICAgICAgICAgICAgICBudWxsXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIC4uLnRoaXMuZ3JpZENvbHVtbnMuZmlsdGVyKChjb2wpID0+IFtcInZhbHVlTmV0XCJdLmluY2x1ZGVzKGNvbC5maWVsZCkpLFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy51cGRhdGVHcmlkKHRoaXMuY3VycmVudExpc3RQYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQXDDs3MgYSByZW5kZXJpemHDp8OjbyBkYSB0YWJlbGEsIHNpbmNyb25pemEgbyBlc3RhZG8gZGUgY2hlY2tib3gvbGluaGEgZWRpdMOhdmVsXHJcbiAgICAgKiBjb20gbyBhcnJheSBkZSB0w610dWxvcyBzZWxlY2lvbmFkb3MgcGFyYSBldml0YXIgYWNlc3NvIGEgcmVmZXLDqm5jaWFzIGFpbmRhIG7Do28gY3JpYWRhcy5cclxuICAgICAqL1xyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICAgIHRoaXMudGFibGVJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zeW5jaHJvbml6ZUNoZWNrYm94QW5kRWRpdGFibGVGaWVsZFN0YXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcclxuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQYWdlU2l6ZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TGlzdFBhcmFtcz8ucm93cztcclxuICAgIH1cclxuXHJcbiAgICBnZXRSb3dJbmRleCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TGlzdFBhcmFtcz8uZmlyc3Q7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U29ydEZpZWxkKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zPy5zb3J0RmllbGQ7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U29ydE9yZGVyKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zPy5zb3J0T3JkZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGYXogcmVxdWlzacOnw6NvIHBhZ2luYWRhL29yZGVuYWRhIHBhcmEgbGlzdGFyIG9zIHTDrXR1bG9zLCBtb250YSBvIGZvcm11bMOhcmlvXHJcbiAgICAgKiByZWF0aXZvIHBhcmEgY2FkYSBsaW5oYSBlIHRyYXRhIGVycm9zIGRlIGJhY2tlbmQgZXhpYmluZG8gbWVuc2FnZW0gYW8gdXN1w6FyaW8uXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGV2ZW50IHBhcsOibWV0cm9zIGRlIHBhZ2luYcOnw6NvLCBvcmRlbmHDp8OjbyBlIGZpbHRyb3MgdmluZG9zIGRvIFByaW1lTkcuXHJcbiAgICAgKi9cclxuICAgIHVwZGF0ZUdyaWQoZXZlbnQ6IExhenlMb2FkRXZlbnQpIHtcclxuICAgICAgICB0aGlzLmNvbXBvbmVudExvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSBldmVudC5yb3dzO1xyXG4gICAgICAgIGNvbnN0IHBhZ2UgPSBldmVudC5maXJzdCAvIHNpemU7XHJcbiAgICAgICAgY29uc3QgZmllbGQgPSBldmVudC5zb3J0RmllbGQ7XHJcbiAgICAgICAgY29uc3Qgc29ydE9yZGVyID0gZXZlbnQuc29ydE9yZGVyO1xyXG4gICAgICAgIHRoaXMuY3VycmVudExpc3RQYXJhbXMgPSBldmVudDtcclxuXHJcbiAgICAgICAgY29uc3QgaW5wdXQ6IFJlcXVlc3RMaXN0VGl0bGVzSW5wdXQgPSB7XHJcbiAgICAgICAgICAgIHBhZ2VSZXF1ZXN0OiB7IG9mZnNldDogcGFnZSwgb3JkZXJCeTogdGhpcy5nZXRSZWNPcmRlckJ5KGZpZWxkLCBzb3J0T3JkZXIpLCBzaXplIH0sXHJcbiAgICAgICAgICAgIGZpbHRlcjogdGhpcy5vcHRpb25zLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuZmluYW5jaWFsU2VydmljZVxyXG4gICAgICAgICAgICAubGlzdFRpdGxlcyhpbnB1dClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGV0YWlsTXNnID0gZXJyPy5tZXNzYWdlIHx8IFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZXJyb3JfbG9hZGluZ19hY2NvdW50c19kZXNjcmlwdGlvblwiO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkTWVzc2FnZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ3YXJuXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZXJyb3JfbG9hZGluZ19hY2NvdW50c190aXRsZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxNc2dcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycjtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgobGlzdDogRmluYW5jaWFsUXVlcnlEYXRhUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZERhdGEgPSBsaXN0LnRpdGxlcyB8fCBbXTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUZvcm1Hcm91cEZvclRpdGxlKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkVG90YWxSZWNvcmRzID0gbGlzdC50b3RhbEVsZW1lbnRzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN5bmNocm9uaXplQ2hlY2tib3hBbmRFZGl0YWJsZUZpZWxkU3RhdGUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25TZWxlY3Rpb25DaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBldmVudDtcclxuICAgICAgICB0aGlzLnN5bmNocm9uaXplQ2hlY2tib3hBbmRFZGl0YWJsZUZpZWxkU3RhdGUoKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUXVhbmRvIHVtIGl0ZW0gw6kgZGVzbWFyY2FkbywgbGltcGEgbyBgdmFsdWVQYWlkYCBjb3JyZXNwb25kZW50ZVxyXG4gICAgICogdGFudG8gbm8gbW9kZWxvIGRhIGxpbmhhIHF1YW50byBubyB7QGxpbmsgdGl0bGVzRm9ybX0sIHNlbSBkaXNwYXJhciBub3ZvcyBldmVudG9zLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBldmVudCBldmVudG8gZGUgZGVzbWFyY2HDp8OjbyBlbWl0aWRvIHBlbG8gUHJpbWVORy5cclxuICAgICAqL1xyXG4gICAgb25VbnNlbGVjdChldmVudDogYW55KSB7XHJcbiAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5ncmlkRGF0YS5maW5kKChyKSA9PiByLmlkID09PSBldmVudC5kYXRhLmlkKTtcclxuICAgICAgICBpZiAocm93KSB7XHJcbiAgICAgICAgICAgIHJvdy52YWx1ZVBhaWQgPSBudWxsO1xyXG4gICAgICAgICAgICAvLyBhdHVhbGl6YSBmb3JtIGNvbnRyb2wgY29ycmVzcG9uZGVudGVcclxuICAgICAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5ncmlkRGF0YS5maW5kSW5kZXgoKGcpID0+IGcuaWQgPT09IHJvdy5pZCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN0cmwgPSB0aGlzLnRpdGxlc0Zvcm0uYXQoaWR4KT8uZ2V0KFwidmFsdWVQYWlkXCIpO1xyXG4gICAgICAgICAgICBpZiAoY3RybCkge1xyXG4gICAgICAgICAgICAgICAgY3RybC5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0RldGFpbHMocm93RGF0YTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvdyA9IHJvd0RhdGE7XHJcbiAgICAgICAgdGhpcy5zaG93U2lkZWJhciA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VEZXRhaWxzKCkge1xyXG4gICAgICAgIHRoaXMuc2hvd1NpZGViYXIgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpc0xhc3RDb2x1bW4oaW5kZXg6IG51bWJlciwgY29sdW1uczogYW55W10pOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gaW5kZXggPT09IGNvbHVtbnMubGVuZ3RoIC0gMTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTdHlsZUNvbHVtbnMoZmllbGQ6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgbGV0IHN0eWxlQ2xhc3MgPSB7fTtcclxuICAgICAgICBzd2l0Y2ggKGZpZWxkKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJjaGVja2JveFwiOlxyXG4gICAgICAgICAgICAgICAgc3R5bGVDbGFzcyA9IHsgd2lkdGg6IFwiNTBweFwiIH07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcInRpdGxlXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJkdWVEYXRlXCI6XHJcbiAgICAgICAgICAgICAgICBzdHlsZUNsYXNzID0geyB3aWR0aDogXCIxNTBweFwiIH07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcInR5cGVcIjpcclxuICAgICAgICAgICAgY2FzZSBcImVudHJ5RGF0ZVwiOlxyXG4gICAgICAgICAgICAgICAgc3R5bGVDbGFzcyA9IHsgd2lkdGg6IFwiMTIwcHhcIiB9O1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBzdHlsZUNsYXNzID0geyB3aWR0aDogXCIxOThweFwiIH07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHN0eWxlQ2xhc3M7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UHJvcChvYmo6IGFueSwgY29sOiBhbnkpOiBhbnkge1xyXG4gICAgICAgIGlmICghb2JqIHx8ICFjb2w/LnBhdGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiLVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgc2VwYXJhdG9yID0gXCJcIjtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gXCJcIjtcclxuICAgICAgICBmb3IgKGNvbnN0IHBhdGggb2YgY29sLnBhdGgpIHtcclxuICAgICAgICAgICAgcmVzdWx0ICs9IHNlcGFyYXRvciArIEFncm9PYmplY3RVdGlscy5nZXRQcm9wQW5kRm9ybWF0VmFsdWUob2JqLCBwYXRoLCBjb2wudHlwZSk7XHJcbiAgICAgICAgICAgIHNlcGFyYXRvciA9IFwiIC0gXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVjb25zdHLDs2kgbyB7QGxpbmsgdGl0bGVzRm9ybX0gY29tIGJhc2UgbmEge0BsaW5rIGdyaWREYXRhfSBhdHVhbCxcclxuICAgICAqIHByZXNlcnZhbmRvIHZhbG9yZXMgasOhIGluZm9ybWFkb3MgZW0gaXRlbnMgc2VsZWNpb25hZG9zIGUgcmVnaXN0cmFuZG8gbGlzdGVuZXJzIGRlIG11ZGFuw6dhLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNyZWF0ZUZvcm1Hcm91cEZvclRpdGxlKCkge1xyXG4gICAgICAgIGNvbnN0IHRpdGxlc0Zvcm1BcnJheSA9IHRoaXMuZm9ybS5nZXQoXCJ0aXRsZXNGb3JtXCIpIGFzIEZvcm1BcnJheTtcclxuICAgICAgICB0aXRsZXNGb3JtQXJyYXkuY2xlYXIoKTtcclxuICAgICAgICB0aGlzLmdyaWREYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gdGhpcy5zZWxlY3RlZC5maW5kKChzZWwpID0+IHNlbC5pZCA9PT0gaXRlbS5pZCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICAgICAgICAgICAgICBpZDogbmV3IEZvcm1Db250cm9sKGl0ZW0uaWQgfHwgbnVsbCwgW10pLFxyXG4gICAgICAgICAgICAgICAgdmFsdWVQYWlkOiBuZXcgRm9ybUNvbnRyb2woc2VsZWN0ZWRJdGVtPy52YWx1ZVBhaWQgPz8gbnVsbCwgW10pLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVUb1ZhbHVlUGFpZENoYW5nZXMoZ3JvdXAsIGl0ZW0pO1xyXG4gICAgICAgICAgICB0aXRsZXNGb3JtQXJyYXkucHVzaChncm91cCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPYnNlcnZhIG11ZGFuw6dhcyBubyBjYW1wbyBgdmFsdWVQYWlkYCBkZSB1bWEgbGluaGEuXHJcbiAgICAgKiBBdHVhbGl6YSBvIGFycmF5IHtAbGluayBzZWxlY3RlZH0gcXVhbmRvIG8gdMOtdHVsbyBlc3TDoSBzZWxlY2lvbmFkbyxcclxuICAgICAqIGFwbGljYSBvIGxpbWl0ZSBkbyB2YWxvciBsw61xdWlkbyAoYG5ldFZhbHVlYCkgZSBldml0YSBsb29wcyBkZSBldmVudG9zIHVzYW5kb1xyXG4gICAgICogYHNldFZhbHVlYCBjb20gYGVtaXRFdmVudDogZmFsc2VgLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBmb3JtR3JvdXAgZ3J1cG8gZGUgZm9ybXVsw6FyaW8gYXNzb2NpYWRvIMOgIGxpbmhhIGRhIHRhYmVsYS5cclxuICAgICAqIEBwYXJhbSBpdGVtIHTDrXR1bG8gZmluYW5jZWlybyBjb3JyZXNwb25kZW50ZSDDoCBsaW5oYS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzdWJzY3JpYmVUb1ZhbHVlUGFpZENoYW5nZXMoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGl0ZW06IEZpbmFuY2lhbFRpdGxlTGlzdER0bykge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlUGFpZENvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KFwidmFsdWVQYWlkXCIpO1xyXG4gICAgICAgIHZhbHVlUGFpZENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgocmF3VmFsdWUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWVQYWlkID0gdGhpcy5wYXJzZU51bWJlclNhZmUocmF3VmFsdWUpO1xyXG4gICAgICAgICAgICBjb25zdCB0aXRsZUlkID0gZm9ybUdyb3VwLmdldChcImlkXCIpPy52YWx1ZTtcclxuXHJcbiAgICAgICAgICAgIC8vIGF0dWFsaXphIHNlbGVjdGVkIHNlIG8gdMOtdHVsbyBlc3RpdmVyIHNlbGVjaW9uYWRvXHJcbiAgICAgICAgICAgIGNvbnN0IHNlbEluZGV4ID0gdGhpcy5zZWxlY3RlZC5maW5kSW5kZXgoKHMpID0+IHMuaWQgPT09IHRpdGxlSWQpO1xyXG4gICAgICAgICAgICBpZiAoc2VsSW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBnYXJhbnRlIHF1ZSB2YWx1ZVBhaWQgc2VqYSBudW3DqXJpY28gb3UgbnVsbFxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFtzZWxJbmRleF0udmFsdWVQYWlkID0gdmFsdWVQYWlkO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ldCA9IE51bWJlcih0aGlzLnNlbGVjdGVkW3NlbEluZGV4XT8udmFsdWVzPy5uZXRWYWx1ZSkgfHwgMDtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZVBhaWQgIT09IG51bGwgJiYgdmFsdWVQYWlkID4gbmV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFtzZWxJbmRleF0udmFsdWVQYWlkID0gbmV0O1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFVzYWRvIHBhcmEgZXZpdGFyIGxvb3AgaW5maW5pdG8gZGUgZXZlbnRvc1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlUGFpZENvbnRyb2wuc2V0VmFsdWUobmV0LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gYXR1YWxpemEgZmxhZyBkZSBlcnJvXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkW3NlbEluZGV4XS5oYXNFcnJvciA9IHZhbHVlUGFpZENvbnRyb2wuaW52YWxpZDtcclxuICAgICAgICAgICAgICAgIC8vIGVtaXRlIG11ZGFuw6dhIGRlIHNlbGXDp8Ojb1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIHNlIG7Do28gZXN0aXZlciBzZWxlY2lvbmFkbywgYXBlbmFzIGFwbGljYSBsaW1pdGUgbG9jYWwgYmFzZWFkbyBubyBpdGVtXHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXQgPSBOdW1iZXIoaXRlbT8udmFsdWVzPy5uZXRWYWx1ZSkgfHwgMDtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZVBhaWQgIT09IG51bGwgJiYgdmFsdWVQYWlkID4gbmV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVQYWlkQ29udHJvbC5zZXRWYWx1ZShuZXQsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcGFyc2VOdW1iZXJTYWZlKHZhbHVlOiBhbnkpOiBudW1iZXIgfCBudWxsIHtcclxuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gXCJcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgICAgY29uc3QgY2xlYW5lZCA9IHZhbHVlLnJlcGxhY2UoL1xcLi9nLCBcIlwiKS5yZXBsYWNlKFwiLFwiLCBcIi5cIik7XHJcbiAgICAgICAgICAgIGNvbnN0IG4gPSBwYXJzZUZsb2F0KGNsZWFuZWQpO1xyXG4gICAgICAgICAgICByZXR1cm4gaXNOYU4obikgPyBudWxsIDogbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmljaWEgbyBtb2RvIGRlIGVkacOnw6NvIG5hIGxpbmhhIGRhIHRhYmVsYSBQcmltZU5HIGUgYXBsaWNhIHJlZ3JhcyBkZSB2YWxpZGHDp8Ojb1xyXG4gICAgICogbm8gZm9ybXVsw6FyaW8gcmVhdGl2byBjb3JyZXNwb25kZW50ZSDDoHF1ZWxhIGxpbmhhLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSByb3cgb2JqZXRvIGRlIGxpbmhhIHJlY2ViaWRvIGRhIHRhYmVsYS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBpbml0Um93RWRpdChyb3c6IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLnRhYmxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFibGUuaW5pdFJvd0VkaXQocm93KTtcclxuICAgICAgICAgICAgdGhpcy5hcHBseVZhbGlkYXRpb25Ub1Jvd0VkaXQocm93KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGljaW9uYSB2YWxpZGFkb3JlcyBkaW5hbWljYW1lbnRlIGFvIGNhbXBvIGB2YWx1ZVBhaWRgIGRhIGxpbmhhIGVtIGVkacOnw6NvLFxyXG4gICAgICogbWFyY2EgbyBjb250cm9sZSBjb21vIHN1am8gZSBmb3LDp2EgcmV2YWxpZGHDp8OjbyBpbWVkaWF0YSBwYXJhIGV4aWJpciBlcnJvcyBuYSB0ZWxhLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSByb3cgb2JqZXRvIGRlIGxpbmhhIHBhcmEgYXBsaWNhciB2YWxpZGHDp8Ojby5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBhcHBseVZhbGlkYXRpb25Ub1Jvd0VkaXQocm93OiBhbnkpIHtcclxuICAgICAgICBjb25zdCByb3dJbmRleCA9IHRoaXMuZ3JpZERhdGEuZmluZEluZGV4KChyKSA9PiByLmlkID09PSByb3cuaWQpO1xyXG4gICAgICAgIGNvbnN0IGZvcm1Hcm91cCA9IHRoaXMudGl0bGVzRm9ybS5hdChyb3dJbmRleCkgYXMgRm9ybUdyb3VwO1xyXG4gICAgICAgIGlmICghZm9ybUdyb3VwKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdmFsdWVQYWlkQ29udHJvbCA9IGZvcm1Hcm91cC5nZXQoXCJ2YWx1ZVBhaWRcIik7XHJcbiAgICAgICAgdmFsdWVQYWlkQ29udHJvbD8uc2V0VmFsaWRhdG9ycyhbdGhpcy5nZXRWYWxpZGF0b3JzRm9yUm93RWRpdCgpLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XHJcbiAgICAgICAgdmFsdWVQYWlkQ29udHJvbD8ubWFya0FzRGlydHkoKTtcclxuICAgICAgICB2YWx1ZVBhaWRDb250cm9sPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHLDs2kgbyB7QGxpbmsgVmFsaWRhdG9yRm59IHF1ZSB2YWxpZGEgbyBgdmFsdWVQYWlkYDpcclxuICAgICAqIC0gZGV2ZSBzZXIgbWFpb3IgcXVlIHplcm87XHJcbiAgICAgKiAtIG7Do28gcG9kZSB1bHRyYXBhc3NhciBvIHZhbG9yIGzDrXF1aWRvIChgbmV0VmFsdWVgKSBkbyB0w610dWxvLlxyXG4gICAgICpcclxuICAgICAqIFJldG9ybmEgb3MgZXJyb3MgY29uc3VtaWRvcyBwZWxvIGNvbXBvbmVudGUgYHMtY29udHJvbC1lcnJvcnNgLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldFZhbGlkYXRvcnNGb3JSb3dFZGl0KCk6IFZhbGlkYXRvckZuIHtcclxuICAgICAgICByZXR1cm4gKGNvbnRyb2w6IEZvcm1Db250cm9sKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGNvbnRyb2wucGFyZW50IGFzIEZvcm1Hcm91cDtcclxuICAgICAgICAgICAgY29uc3QgdGl0bGVJZCA9IHBhcmVudD8uZ2V0KFwiaWRcIik/LnZhbHVlO1xyXG4gICAgICAgICAgICBjb25zdCByYXdWYWx1ZSA9IGNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlUGFpZCA9IHRoaXMucGFyc2VOdW1iZXJTYWZlKHJhd1ZhbHVlKTtcclxuICAgICAgICAgICAgaWYgKHZhbHVlUGFpZCA9PT0gbnVsbCB8fCB2YWx1ZVBhaWQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhbHVlUGFpZCA8PSBBR1JPX05VTUJFUlMuWkVSTykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgbGVzc1RoYW5aZXJvOiB0cnVlIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gcHJvY3VyYSBwZWxvIHTDrXR1bG8gbm8gc2VsZWN0ZWQgb3Ugbm8gZ3JpZERhdGEgKHByaW9yaXphIHNlbGVjdGVkKVxyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZFJvdyA9IHRoaXMuc2VsZWN0ZWQuZmluZCgoc2VsKSA9PiBzZWwuaWQgPT09IHRpdGxlSWQpIHx8IHRoaXMuZ3JpZERhdGEuZmluZCgoZykgPT4gZy5pZCA9PT0gdGl0bGVJZCk7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ldFZhbHVlID0gTnVtYmVyKHNlbGVjdGVkUm93Py52YWx1ZXM/Lm5ldFZhbHVlKSB8fCAwO1xyXG4gICAgICAgICAgICBpZiAodmFsdWVQYWlkID4gbmV0VmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IGdyZWF0aGVyVGhhbkFsbG93ZWQ6IHRydWUgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2FuY2VsUm93RWRpdChyb3c6IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLnRhYmxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFibGUuY2FuY2VsUm93RWRpdChyb3cpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1hbnTDqW0gbyBlc3RhZG8gdmlzdWFsIGRhIHRhYmVsYSAoY2hlY2tib3ggbWFyY2FkbyBlIGxpbmhhIGVkaXTDoXZlbCkgZW1cclxuICAgICAqIHNpbmNyb25pYSBjb20gbyBhcnJheSBkZSB0w610dWxvcyBzZWxlY2lvbmFkb3MsIGluY2x1c2l2ZSByZXN0YXVyYW5kbyB2YWxvcmVzXHJcbiAgICAgKiBkaWdpdGFkb3MgYW8gcmVjYXJyZWdhciwgb3JkZW5hciBvdSBwYWdpbmFyIGEgZ3JpZC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzeW5jaHJvbml6ZUNoZWNrYm94QW5kRWRpdGFibGVGaWVsZFN0YXRlKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5ncmlkRGF0YSB8fCAhdGhpcy50YWJsZUluaXRpYWxpemVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZ3JpZERhdGEuZm9yRWFjaCgocm93LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZFJvdyA9IHRoaXMuc2VsZWN0ZWQuZmluZCgoc2VsKSA9PiBzZWwuaWQgPT09IHJvdy5pZCk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBjdHJsID0gdGhpcy50aXRsZXNGb3JtLmF0KGluZGV4KT8uZ2V0KFwidmFsdWVQYWlkXCIpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkUm93KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBTaW5jcm9uaXphIG8gdmFsb3IgcGFnbyBkbyBpdGVtIHNlbGVjaW9uYWRvXHJcbiAgICAgICAgICAgICAgICByb3cudmFsdWVQYWlkID0gc2VsZWN0ZWRSb3cudmFsdWVQYWlkO1xyXG4gICAgICAgICAgICAgICAgaWYgKGN0cmwpIHtcclxuICAgICAgICAgICAgICAgICAgICBjdHJsLnNldFZhbHVlKHNlbGVjdGVkUm93LnZhbHVlUGFpZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0Um93RWRpdChyb3cpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gQ2FuY2VsYSBhIGVkacOnw6NvIHNlIG7Do28gZXN0aXZlciBzZWxlY2lvbmFkb1xyXG4gICAgICAgICAgICAgICAgaWYgKGN0cmwpIHtcclxuICAgICAgICAgICAgICAgICAgICBjdHJsLnNldFZhbHVlKG51bGwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuY2FuY2VsUm93RWRpdChyb3cpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRGaWVsZHMoZmllbGQ6IHN0cmluZywgaGVhZGVyOiBzdHJpbmcsIHBhdGg6IHN0cmluZ1tdLCB0eXBlOiBGaWVsZFR5cGUsIGZpZWxkT3JkZXJCeTogVGl0bGVGaWVsZHNPcmRlckJ5KTogQ29sdW1uQ29uZmlnIHtcclxuICAgICAgICByZXR1cm4geyBmaWVsZCwgcGF0aCwgdHlwZSwgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGhlYWRlciksIG9yZGVyQnk6IGZpZWxkT3JkZXJCeSB9O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYWRkTWVzc2FnZShzZXZlcml0eTogc3RyaW5nLCBzdW1tYXJ5OiBzdHJpbmcsIGRldGFpbDogc3RyaW5nLCBzdGlja3kgPSBmYWxzZSwgbGlmZSA9IDcwMDApIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICAgIHNldmVyaXR5LFxyXG4gICAgICAgICAgICBzdGlja3ksXHJcbiAgICAgICAgICAgIGxpZmUsXHJcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoc3VtbWFyeSksXHJcbiAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChkZXRhaWwpLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0UmVjT3JkZXJCeShmaWVsZDogc3RyaW5nLCBvcmRlcjogbnVtYmVyKTogUmVjT3JkZXJCeSB7XHJcbiAgICAgICAgY29uc3QgZ3JpZENvbHVtbkZpZWxkID0gdGhpcy5ncmlkQ29sdW1ucy5maW5kKChjb2wpID0+IGNvbC5maWVsZCA9PT0gZmllbGQpO1xyXG4gICAgICAgIGlmIChncmlkQ29sdW1uRmllbGQ/Lm9yZGVyQnkgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGZpZWxkOiBncmlkQ29sdW1uRmllbGQ/Lm9yZGVyQnkgfHwgVGl0bGVGaWVsZHNPcmRlckJ5Lk5VTUJFUl9USVRMRSxcclxuICAgICAgICAgICAgb3JkZXI6IG9yZGVyID09PSAxID8gT3JkZXJCeVR5cGUuQVNDIDogT3JkZXJCeVR5cGUuREVTQyxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -3,8 +3,8 @@ import { HttpClient } from "@angular/common/http";
3
3
  import { Injectable } from "@angular/core";
4
4
  import { MessageService } from "primeng/api";
5
5
  import { asyncScheduler, scheduled, Subject, timer } from "rxjs";
6
- import { concatMap, defaultIfEmpty, filter, map, scan, switchMap, take, takeUntil, tap } from "rxjs/operators";
7
- import { AgroEntityService } from "../../../../services/entity-service";
6
+ import { concatMap, filter, map, scan, switchMap, take, takeUntil, tap } from "rxjs/operators";
7
+ import { AgroEntityService } from "../../../../services/agro-entity-service";
8
8
  import { LibTranslationService } from "../../../../services/lib-translation.service";
9
9
  import { QueryStatus } from "./enums";
10
10
  import * as i0 from "@angular/core";
@@ -42,11 +42,16 @@ let AgroFinancialService = class AgroFinancialService extends AgroEntityService
42
42
  }
43
43
  return (index + 1) * 1000;
44
44
  });
45
- return scheduled(delays, asyncScheduler).pipe(concatMap((delay) => timer(delay).pipe(switchMap(() => this.getListTitlesResponse({ requestId })), tap((res) => {
46
- if (res.status === QueryStatus.FAILED) {
45
+ return scheduled(delays, asyncScheduler).pipe(concatMap((delay, index) => timer(delay).pipe(switchMap(() => this.getListTitlesResponse({ requestId })), tap((res) => {
46
+ if (res.status === QueryStatus.ERROR) {
47
47
  throw new Error(res.message);
48
48
  }
49
- }))), scan((_, curr) => curr, null), filter((res) => (res === null || res === void 0 ? void 0 : res.status) === QueryStatus.FINISHED), take(1), defaultIfEmpty(null), takeUntil(this.pooling), map((res) => res === null || res === void 0 ? void 0 : res.result));
49
+ }), map((res) => ({ res, isLast: index === delays.length - 1 })))), scan((_, curr) => curr, null), filter((data) => (data === null || data === void 0 ? void 0 : data.res.status) === QueryStatus.FINISHED || (data === null || data === void 0 ? void 0 : data.isLast)), take(1), map((data) => {
50
+ if ((data === null || data === void 0 ? void 0 : data.isLast) && data.res.status === QueryStatus.PENDING) {
51
+ throw new Error("agro.angular_components.timeout_request_error");
52
+ }
53
+ return data === null || data === void 0 ? void 0 : data.res;
54
+ }), takeUntil(this.pooling), map((res) => res === null || res === void 0 ? void 0 : res.result));
50
55
  }
51
56
  };
52
57
  AgroFinancialService.ctorParameters = () => [
@@ -61,4 +66,4 @@ AgroFinancialService = __decorate([
61
66
  })
62
67
  ], AgroFinancialService);
63
68
  export { AgroFinancialService };
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1maW5hbmNpYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItYWdyb25lZ29jaW8vYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9maW5hbmNpYWwtdGl0bGUtdGFibGUvc2VydmljZXMvZmluYW5jaWFsL2Fncm8tZmluYW5jaWFsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBYyxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDOzs7OztBQWF0QyxJQUFhLG9CQUFvQixHQUFqQyxNQUFhLG9CQUFxQixTQUFRLGlCQUEyQjtJQUdqRSxZQUNjLElBQWdCLEVBQ2hCLGNBQThCLEVBQzlCLFNBQWdDO1FBRTFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFLCtCQUErQixFQUFFLHdCQUF3QixFQUFFLHdCQUF3QixFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBSmxILFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsbUJBQWMsR0FBZCxjQUFj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Z3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSBcInByaW1lbmcvYXBpXCI7XHJcbmltcG9ydCB7IGFzeW5jU2NoZWR1bGVyLCBPYnNlcnZhYmxlLCBzY2hlZHVsZWQsIFN1YmplY3QsIHRpbWVyIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgY29uY2F0TWFwLCBkZWZhdWx0SWZFbXB0eSwgZmlsdGVyLCBtYXAsIHNjYW4sIHN3aXRjaE1hcCwgdGFrZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgQWdyb0VudGl0eVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vLi4vc2VydmljZXMvZW50aXR5LXNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTGliVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uLy4uL3NlcnZpY2VzL2xpYi10cmFuc2xhdGlvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFF1ZXJ5U3RhdHVzIH0gZnJvbSBcIi4vZW51bXNcIjtcclxuaW1wb3J0IHtcclxuICAgIEZpbmFuY2lhbFF1ZXJ5RGF0YVJlc3BvbnNlLFxyXG4gICAgR2V0TGlzdFRpdGxlc1Jlc3BvbnNlSW5wdXQsXHJcbiAgICBHZXRMaXN0VGl0bGVzUmVzcG9uc2VPdXRwdXQsXHJcbiAgICBSZXF1ZXN0TGlzdFRpdGxlc0lucHV0LFxyXG4gICAgUmVxdWVzdExpc3RUaXRsZXNPdXRwdXQsXHJcbiAgICBUaXRsZUR0byxcclxufSBmcm9tIFwiLi9pbnRlZmFjZXNcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWdyb0ZpbmFuY2lhbFNlcnZpY2UgZXh0ZW5kcyBBZ3JvRW50aXR5U2VydmljZTxUaXRsZUR0bz4ge1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBwb29saW5nID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCxcclxuICAgICAgICBwcm90ZWN0ZWQgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IExpYlRyYW5zbGF0aW9uU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoaHR0cCwgbWVzc2FnZVNlcnZpY2UsIFwiYWdyby9maW5hbmNpYWwvZW50aXRpZXMvdGl0bGVcIiwgXCJhZ3JvL2ZpbmFuY2lhbC9hY3Rpb25zXCIsIFwiYWdyby9maW5hbmNpYWwvcXVlcmllc1wiLCB0cmFuc2xhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGxpc3RUaXRsZXMoaW5wdXQ6IFJlcXVlc3RMaXN0VGl0bGVzSW5wdXQpOiBPYnNlcnZhYmxlPEZpbmFuY2lhbFF1ZXJ5RGF0YVJlc3BvbnNlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdExpc3RUaXRsZXMoaW5wdXQpLnBpcGUoc3dpdGNoTWFwKChyZXM6IFJlcXVlc3RMaXN0VGl0bGVzT3V0cHV0KSA9PiB0aGlzLnBvbGxMaXN0VGl0bGVzUmVzdWx0KHJlcy5yZXF1ZXN0SWQpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZXF1ZXN0TGlzdFRpdGxlcyhpbnB1dDogUmVxdWVzdExpc3RUaXRsZXNJbnB1dCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDx7IHJlcXVlc3RJZDogc3RyaW5nIH0+KGAke3RoaXMucXVlcmllc1VybH0vcmVxdWVzdExpc3RUaXRsZXNgLCBpbnB1dCkucGlwZSh0aGlzLmRlZmF1bHRDYXRjaCgpKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldExpc3RUaXRsZXNSZXNwb25zZShpbnB1dDogR2V0TGlzdFRpdGxlc1Jlc3BvbnNlSW5wdXQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8R2V0TGlzdFRpdGxlc1Jlc3BvbnNlT3V0cHV0PihgJHt0aGlzLnF1ZXJpZXNVcmx9L2dldExpc3RUaXRsZXNSZXNwb25zZWAsIGlucHV0KS5waXBlKHRoaXMuZGVmYXVsdENhdGNoKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVhbGl6YSBvIHBvbGxpbmcgcGFyYSBvYnRlciBvIHJlc3VsdGFkbyBkYSBsaXN0YWdlbSBkZSB0w610dWxvcyBmaW5hbmNlaXJvc1xyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSByZXF1ZXN0SWQgSWQgZGEgcmVxdWlzacOnw6NvIHV0bGl6YWRhIG5hIGJ1c2NhIHBlbG8gcmVzdWx0YWRvXHJcbiAgICAgKiBAcmV0dXJuc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHBvbGxMaXN0VGl0bGVzUmVzdWx0KHJlcXVlc3RJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxGaW5hbmNpYWxRdWVyeURhdGFSZXNwb25zZT4ge1xyXG4gICAgICAgIC8vIGRlZmluZSBvIGludGVydmFsbyBkZSBwb2xsaW5nIGVudHJlIGNhZGEgdGVudGF0aXZhIGRlIG1hbmVpcmEgZXhwb25lbmNpYWxcclxuICAgICAgICBjb25zdCBkZWxheXMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiAxMCB9LCAoXywgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMTAwMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gKGluZGV4ICsgMSkgKiAxMDAwO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gc2NoZWR1bGVkKGRlbGF5cywgYXN5bmNTY2hlZHVsZXIpLnBpcGUoXHJcbiAgICAgICAgICAgIGNvbmNhdE1hcCgoZGVsYXkpID0+XHJcbiAgICAgICAgICAgICAgICB0aW1lcihkZWxheSkucGlwZShcclxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5nZXRMaXN0VGl0bGVzUmVzcG9uc2UoeyByZXF1ZXN0SWQgfSkpLFxyXG4gICAgICAgICAgICAgICAgICAgIHRhcCgocmVzOiBHZXRMaXN0VGl0bGVzUmVzcG9uc2VPdXRwdXQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT09IFF1ZXJ5U3RhdHVzLkZBSUxFRCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHJlcy5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIHNjYW4oKF8sIGN1cnIpID0+IGN1cnIsIG51bGwgYXMgR2V0TGlzdFRpdGxlc1Jlc3BvbnNlT3V0cHV0IHwgbnVsbCksXHJcbiAgICAgICAgICAgIGZpbHRlcigocmVzKSA9PiByZXM/LnN0YXR1cyA9PT0gUXVlcnlTdGF0dXMuRklOSVNIRUQpLFxyXG4gICAgICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgICAgICBkZWZhdWx0SWZFbXB0eShudWxsKSxcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMucG9vbGluZyksXHJcbiAgICAgICAgICAgIG1hcCgocmVzOiBHZXRMaXN0VGl0bGVzUmVzcG9uc2VPdXRwdXQgfCBudWxsKSA9PiByZXM/LnJlc3VsdClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1maW5hbmNpYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItYWdyb25lZ29jaW8vYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9maW5hbmNpYWwtdGl0bGUtdGFibGUvc2VydmljZXMvZmluYW5jaWFsL2Fncm8tZmluYW5jaWFsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBYyxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUUsU0FBUyxFQUFrQixNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDOzs7OztBQWF0QyxJQUFhLG9CQUFvQixHQUFqQyxNQUFhLG9CQUFxQixTQUFRLGlCQUEyQjtJQUdqRSxZQUNjLElBQWdCLEVBQ2hCLGNBQThCLEVBQzlCLFNBQWdDO1FBRTFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFLCtCQUErQixFQUFFLHdCQUF3QixFQUFFLHdCQUF3QixFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBSmxILFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FB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LENBQUM7YUFDcEU7WUFDRCxPQUFPLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxHQUFHLENBQUM7UUFDckIsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFDdkIsR0FBRyxDQUFDLENBQUMsR0FBdUMsRUFBRSxFQUFFLENBQUMsR0FBRyxhQUFILEdBQUcsdUJBQUgsR0FBRyxDQUFFLE1BQU0sQ0FBQyxDQUNoRSxDQUFDO0lBQ04sQ0FBQztDQUNKLENBQUE7O1lBM0R1QixVQUFVO1lBQ0EsY0FBYztZQUNuQixxQkFBcUI7OztBQU5yQyxvQkFBb0I7SUFIaEMsVUFBVSxDQUFDO1FBQ1IsVUFBVSxFQUFFLE1BQU07S0FDckIsQ0FBQztHQUNXLG9CQUFvQixDQStEaEM7U0EvRFksb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tIFwicHJpbWVuZy9hcGlcIjtcclxuaW1wb3J0IHsgYXN5bmNTY2hlZHVsZXIsIE9ic2VydmFibGUsIHNjaGVkdWxlZCwgU3ViamVjdCwgdGltZXIgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBjb25jYXRNYXAsIGRlZmF1bHRJZkVtcHR5LCBmaWx0ZXIsIG1hcCwgc2Nhbiwgc3dpdGNoTWFwLCB0YWtlLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBBZ3JvRW50aXR5U2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9zZXJ2aWNlcy9hZ3JvLWVudGl0eS1zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IExpYlRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9zZXJ2aWNlcy9saWItdHJhbnNsYXRpb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBRdWVyeVN0YXR1cyB9IGZyb20gXCIuL2VudW1zXCI7XHJcbmltcG9ydCB7XHJcbiAgICBGaW5hbmNpYWxRdWVyeURhdGFSZXNwb25zZSxcclxuICAgIEdldExpc3RUaXRsZXNSZXNwb25zZUlucHV0LFxyXG4gICAgR2V0TGlzdFRpdGxlc1Jlc3BvbnNlT3V0cHV0LFxyXG4gICAgUmVxdWVzdExpc3RUaXRsZXNJbnB1dCxcclxuICAgIFJlcXVlc3RMaXN0VGl0bGVzT3V0cHV0LFxyXG4gICAgVGl0bGVEdG8sXHJcbn0gZnJvbSBcIi4vaW50ZWZhY2VzXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIEFncm9GaW5hbmNpYWxTZXJ2aWNlIGV4dGVuZHMgQWdyb0VudGl0eVNlcnZpY2U8VGl0bGVEdG8+IHtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcG9vbGluZyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgcHJvdGVjdGVkIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlOiBMaWJUcmFuc2xhdGlvblNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKGh0dHAsIG1lc3NhZ2VTZXJ2aWNlLCBcImFncm8vZmluYW5jaWFsL2VudGl0aWVzL3RpdGxlXCIsIFwiYWdyby9maW5hbmNpYWwvYWN0aW9uc1wiLCBcImFncm8vZmluYW5jaWFsL3F1ZXJpZXNcIiwgdHJhbnNsYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICBsaXN0VGl0bGVzKGlucHV0OiBSZXF1ZXN0TGlzdFRpdGxlc0lucHV0KTogT2JzZXJ2YWJsZTxGaW5hbmNpYWxRdWVyeURhdGFSZXNwb25zZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3RMaXN0VGl0bGVzKGlucHV0KS5waXBlKHN3aXRjaE1hcCgocmVzOiBSZXF1ZXN0TGlzdFRpdGxlc091dHB1dCkgPT4gdGhpcy5wb2xsTGlzdFRpdGxlc1Jlc3VsdChyZXMucmVxdWVzdElkKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVxdWVzdExpc3RUaXRsZXMoaW5wdXQ6IFJlcXVlc3RMaXN0VGl0bGVzSW5wdXQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8eyByZXF1ZXN0SWQ6IHN0cmluZyB9PihgJHt0aGlzLnF1ZXJpZXNVcmx9L3JlcXVlc3RMaXN0VGl0bGVzYCwgaW5wdXQpLnBpcGUodGhpcy5kZWZhdWx0Q2F0Y2goKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRMaXN0VGl0bGVzUmVzcG9uc2UoaW5wdXQ6IEdldExpc3RUaXRsZXNSZXNwb25zZUlucHV0KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEdldExpc3RUaXRsZXNSZXNwb25zZU91dHB1dD4oYCR7dGhpcy5xdWVyaWVzVXJsfS9nZXRMaXN0VGl0bGVzUmVzcG9uc2VgLCBpbnB1dCkucGlwZSh0aGlzLmRlZmF1bHRDYXRjaCgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlYWxpemEgbyBwb2xsaW5nIHBhcmEgb2J0ZXIgbyByZXN1bHRhZG8gZGEgbGlzdGFnZW0gZGUgdMOtdHVsb3MgZmluYW5jZWlyb3NcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gcmVxdWVzdElkIElkIGRhIHJlcXVpc2nDp8OjbyB1dGxpemFkYSBuYSBidXNjYSBwZWxvIHJlc3VsdGFkb1xyXG4gICAgICogQHJldHVybnNcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBwb2xsTGlzdFRpdGxlc1Jlc3VsdChyZXF1ZXN0SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8RmluYW5jaWFsUXVlcnlEYXRhUmVzcG9uc2U+IHtcclxuICAgICAgICAvLyBkZWZpbmUgbyBpbnRlcnZhbG8gZGUgcG9sbGluZyBlbnRyZSBjYWRhIHRlbnRhdGl2YSBkZSBtYW5laXJhIGV4cG9uZW5jaWFsXHJcbiAgICAgICAgY29uc3QgZGVsYXlzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogMTAgfSwgKF8sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDEwMDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIChpbmRleCArIDEpICogMTAwMDtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHNjaGVkdWxlZChkZWxheXMsIGFzeW5jU2NoZWR1bGVyKS5waXBlKFxyXG4gICAgICAgICAgICBjb25jYXRNYXAoKGRlbGF5LCBpbmRleCkgPT5cclxuICAgICAgICAgICAgICAgIHRpbWVyKGRlbGF5KS5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmdldExpc3RUaXRsZXNSZXNwb25zZSh7IHJlcXVlc3RJZCB9KSksXHJcbiAgICAgICAgICAgICAgICAgICAgdGFwKChyZXM6IEdldExpc3RUaXRsZXNSZXNwb25zZU91dHB1dCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzLnN0YXR1cyA9PT0gUXVlcnlTdGF0dXMuRVJST1IpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihyZXMubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICBtYXAoKHJlcykgPT4gKHsgcmVzLCBpc0xhc3Q6IGluZGV4ID09PSBkZWxheXMubGVuZ3RoIC0gMSB9KSlcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgc2NhbigoXywgY3VycikgPT4gY3VyciwgbnVsbCBhcyB7IHJlczogR2V0TGlzdFRpdGxlc1Jlc3BvbnNlT3V0cHV0OyBpc0xhc3Q6IGJvb2xlYW4gfSB8IG51bGwpLFxyXG4gICAgICAgICAgICBmaWx0ZXIoKGRhdGEpID0+IGRhdGE/LnJlcy5zdGF0dXMgPT09IFF1ZXJ5U3RhdHVzLkZJTklTSEVEIHx8IGRhdGE/LmlzTGFzdCksXHJcbiAgICAgICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgICAgIG1hcCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGRhdGE/LmlzTGFzdCAmJiBkYXRhLnJlcy5zdGF0dXMgPT09IFF1ZXJ5U3RhdHVzLlBFTkRJTkcpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy50aW1lb3V0X3JlcXVlc3RfZXJyb3JcIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YT8ucmVzO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMucG9vbGluZyksXHJcbiAgICAgICAgICAgIG1hcCgocmVzOiBHZXRMaXN0VGl0bGVzUmVzcG9uc2VPdXRwdXQgfCBudWxsKSA9PiByZXM/LnJlc3VsdClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -28,6 +28,6 @@ export var QueryStatus;
28
28
  (function (QueryStatus) {
29
29
  QueryStatus["PENDING"] = "PENDING";
30
30
  QueryStatus["FINISHED"] = "FINISHED";
31
- QueryStatus["FAILED"] = "FAILED";
31
+ QueryStatus["ERROR"] = "ERROR";
32
32
  })(QueryStatus || (QueryStatus = {}));
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bXMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWFncm9uZWdvY2lvL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZmluYW5jaWFsLXRpdGxlLXRhYmxlL3NlcnZpY2VzL2ZpbmFuY2lhbC9lbnVtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ25CLGtDQUFtQixDQUFBO0lBQ25CLHdDQUF5QixDQUFBO0FBQzdCLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QjtBQUVELE1BQU0sQ0FBTixJQUFZLFVBSVg7QUFKRCxXQUFZLFVBQVU7SUFDbEIsMkJBQWEsQ0FBQTtJQUNiLDJCQUFhLENBQUE7SUFDYixxQ0FBdUIsQ0FBQTtBQUMzQixDQUFDLEVBSlcsVUFBVSxLQUFWLFVBQVUsUUFJckI7QUFFRCxNQUFNLENBQU4sSUFBWSxrQkFRWDtBQVJELFdBQVksa0JBQWtCO0lBQzFCLG1EQUE2QixDQUFBO0lBQzdCLCtDQUF5QixDQUFBO0lBQ3pCLDJDQUFxQixDQUFBO0lBQ3JCLHVEQUFpQyxDQUFBO0lBQ2pDLCtDQUF5QixDQUFBO0lBQ3pCLDZDQUF1QixDQUFBO0lBQ3ZCLHVDQUFpQixDQUFBO0FBQ3JCLENBQUMsRUFSVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBUTdCO0FBRUQsTUFBTSxDQUFOLElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNuQiwwQkFBVyxDQUFBO0lBQ1gsNEJBQWEsQ0FBQTtBQUNqQixDQUFDLEVBSFcsV0FBVyxLQUFYLFdBQVcsUUFHdEI7QUFFRCxNQUFNLENBQU4sSUFBWSxXQUlYO0FBSkQsV0FBWSxXQUFXO0lBQ25CLGtDQUFtQixDQUFBO0lBQ25CLG9DQUFxQixDQUFBO0lBQ3JCLGdDQUFpQixDQUFBO0FBQ3JCLENBQUMsRUFKVyxXQUFXLEtBQVgsV0FBVyxRQUl0QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFR5cGVBY2NvdW50IHtcclxuICAgIFBBWUFCTEUgPSBcIlBBWUFCTEVcIixcclxuICAgIFJFQ0VJVkFCTEUgPSBcIlJFQ0VJVkFCTEVcIlxyXG59XHJcblxyXG5leHBvcnQgZW51bSBTdGF0dXNUeXBlIHtcclxuICAgIE9QRU4gPSAnT1BFTicsXHJcbiAgICBQQUlEID0gJ1BBSUQnLFxyXG4gICAgQ0FOQ0VMTEVEID0gJ0NBTkNFTExFRCdcclxufVxyXG5cclxuZXhwb3J0IGVudW0gVGl0bGVGaWVsZHNPcmRlckJ5IHtcclxuICAgIE5VTUJFUl9USVRMRSA9IFwiTlVNQkVSX1RJVExFXCIsXHJcbiAgICBJU1NVRV9EQVRFID0gXCJJU1NVRV9EQVRFXCIsXHJcbiAgICBEVUVfREFURSA9IFwiRFVFX0RBVEVcIixcclxuICAgIE9SSUdJTkFMX1ZBTFVFID0gXCJPUklHSU5BTF9WQUxVRVwiLFxyXG4gICAgT1BFTl9WQUxVRSA9IFwiT1BFTl9WQUxVRVwiLFxyXG4gICAgTkVUX1ZBTFVFID0gXCJORVRfVkFMVUVcIixcclxuICAgIFNUQVRVUyA9IFwiU1RBVFVTXCJcclxufVxyXG5cclxuZXhwb3J0IGVudW0gT3JkZXJCeVR5cGUge1xyXG4gICAgQVNDID0gXCJBU0NcIixcclxuICAgIERFU0MgPSBcIkRFU0NcIlxyXG59XHJcblxyXG5leHBvcnQgZW51bSBRdWVyeVN0YXR1cyB7XHJcbiAgICBQRU5ESU5HID0gXCJQRU5ESU5HXCIsXHJcbiAgICBGSU5JU0hFRCA9IFwiRklOSVNIRURcIixcclxuICAgIEZBSUxFRCA9IFwiRkFJTEVEXCJcclxufSJdfQ==
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bXMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWFncm9uZWdvY2lvL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZmluYW5jaWFsLXRpdGxlLXRhYmxlL3NlcnZpY2VzL2ZpbmFuY2lhbC9lbnVtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ25CLGtDQUFtQixDQUFBO0lBQ25CLHdDQUF5QixDQUFBO0FBQzdCLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QjtBQUVELE1BQU0sQ0FBTixJQUFZLFVBSVg7QUFKRCxXQUFZLFVBQVU7SUFDbEIsMkJBQWEsQ0FBQTtJQUNiLDJCQUFhLENBQUE7SUFDYixxQ0FBdUIsQ0FBQTtBQUMzQixDQUFDLEVBSlcsVUFBVSxLQUFWLFVBQVUsUUFJckI7QUFFRCxNQUFNLENBQU4sSUFBWSxrQkFRWDtBQVJELFdBQVksa0JBQWtCO0lBQzFCLG1EQUE2QixDQUFBO0lBQzdCLCtDQUF5QixDQUFBO0lBQ3pCLDJDQUFxQixDQUFBO0lBQ3JCLHVEQUFpQyxDQUFBO0lBQ2pDLCtDQUF5QixDQUFBO0lBQ3pCLDZDQUF1QixDQUFBO0lBQ3ZCLHVDQUFpQixDQUFBO0FBQ3JCLENBQUMsRUFSVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBUTdCO0FBRUQsTUFBTSxDQUFOLElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNuQiwwQkFBVyxDQUFBO0lBQ1gsNEJBQWEsQ0FBQTtBQUNqQixDQUFDLEVBSFcsV0FBVyxLQUFYLFdBQVcsUUFHdEI7QUFFRCxNQUFNLENBQU4sSUFBWSxXQUlYO0FBSkQsV0FBWSxXQUFXO0lBQ25CLGtDQUFtQixDQUFBO0lBQ25CLG9DQUFxQixDQUFBO0lBQ3JCLDhCQUFlLENBQUE7QUFDbkIsQ0FBQyxFQUpXLFdBQVcsS0FBWCxXQUFXLFFBSXRCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gVHlwZUFjY291bnQge1xyXG4gICAgUEFZQUJMRSA9IFwiUEFZQUJMRVwiLFxyXG4gICAgUkVDRUlWQUJMRSA9IFwiUkVDRUlWQUJMRVwiXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFN0YXR1c1R5cGUge1xyXG4gICAgT1BFTiA9ICdPUEVOJyxcclxuICAgIFBBSUQgPSAnUEFJRCcsXHJcbiAgICBDQU5DRUxMRUQgPSAnQ0FOQ0VMTEVEJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBUaXRsZUZpZWxkc09yZGVyQnkge1xyXG4gICAgTlVNQkVSX1RJVExFID0gXCJOVU1CRVJfVElUTEVcIixcclxuICAgIElTU1VFX0RBVEUgPSBcIklTU1VFX0RBVEVcIixcclxuICAgIERVRV9EQVRFID0gXCJEVUVfREFURVwiLFxyXG4gICAgT1JJR0lOQUxfVkFMVUUgPSBcIk9SSUdJTkFMX1ZBTFVFXCIsXHJcbiAgICBPUEVOX1ZBTFVFID0gXCJPUEVOX1ZBTFVFXCIsXHJcbiAgICBORVRfVkFMVUUgPSBcIk5FVF9WQUxVRVwiLFxyXG4gICAgU1RBVFVTID0gXCJTVEFUVVNcIlxyXG59XHJcblxyXG5leHBvcnQgZW51bSBPcmRlckJ5VHlwZSB7XHJcbiAgICBBU0MgPSBcIkFTQ1wiLFxyXG4gICAgREVTQyA9IFwiREVTQ1wiXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFF1ZXJ5U3RhdHVzIHtcclxuICAgIFBFTkRJTkcgPSBcIlBFTkRJTkdcIixcclxuICAgIEZJTklTSEVEID0gXCJGSU5JU0hFRFwiLFxyXG4gICAgRVJST1IgPSBcIkVSUk9SXCJcclxufSJdfQ==
@@ -1,18 +1,18 @@
1
1
  import { __awaiter, __decorate } from "tslib";
2
+ import { CurrencyPipe, DatePipe } from '@angular/common';
2
3
  import { Component, EventEmitter, Input, Output } from '@angular/core';
3
- import { LibTranslationService } from '../../../services/lib-translation.service';
4
- import { AgroInvoiceService } from '../services/agro-invoice';
5
4
  import { Column, LocaleService } from '@seniorsistemas/angular-components';
6
- import { KilogramPipe } from '../../../pipe/kilogram';
7
- import { CurrencyPipe } from '@angular/common';
8
- import { ModalInvoicePjBase } from '../modal-invoice-pj-base.class';
9
- import { ProducerInvoiceService } from '../../../services/producer-invoice/producer-invoice.service';
10
- import { finalize, takeUntil } from 'rxjs/operators';
11
5
  import { MessageService } from 'primeng';
12
6
  import { EMPTY, of } from 'rxjs';
7
+ import { finalize, takeUntil } from 'rxjs/operators';
8
+ import { KilogramPipe } from '../../../pipe/kilogram';
9
+ import { LibTranslationService } from '../../../services/lib-translation.service';
10
+ import { ProducerInvoiceService } from '../../../services/producer-invoice/producer-invoice.service';
11
+ import { ModalInvoicePjBase } from '../modal-invoice-pj-base.class';
12
+ import { AgroInvoiceService } from '../services/agro-invoice';
13
13
  let ModalInvoicePjForFixationComponent = class ModalInvoicePjForFixationComponent extends ModalInvoicePjBase {
14
- constructor(translationService, invoiceService, localeService, kilogramPipe, currencyPipe, producerInvoiceService, messageService) {
15
- super(translationService, invoiceService, localeService, kilogramPipe, messageService);
14
+ constructor(translationService, invoiceService, localeService, kilogramPipe, currencyPipe, producerInvoiceService, messageService, datePipe) {
15
+ super(translationService, invoiceService, localeService, kilogramPipe, messageService, datePipe);
16
16
  this.translationService = translationService;
17
17
  this.invoiceService = invoiceService;
18
18
  this.localeService = localeService;
@@ -20,6 +20,7 @@ let ModalInvoicePjForFixationComponent = class ModalInvoicePjForFixationComponen
20
20
  this.currencyPipe = currencyPipe;
21
21
  this.producerInvoiceService = producerInvoiceService;
22
22
  this.messageService = messageService;
23
+ this.datePipe = datePipe;
23
24
  this.whenSelectInvoices = new EventEmitter();
24
25
  }
25
26
  ngOnInit() {
@@ -51,7 +52,7 @@ let ModalInvoicePjForFixationComponent = class ModalInvoicePjForFixationComponen
51
52
  return of(EMPTY).toPromise();
52
53
  }
53
54
  open() {
54
- if (this.options.fixationItems.filter((item) => item.requiredValue > item.totalValueInvoices).length == 0) {
55
+ if (this.options.fixationItems.filter((item) => item.requiredValue > item.totalValueInvoices).length === 0) {
55
56
  this.messageService.add({
56
57
  severity: 'warn',
57
58
  summary: this.translate.instant('agro.fixation.max_linked_invoices'),
@@ -170,7 +171,8 @@ ModalInvoicePjForFixationComponent.ctorParameters = () => [
170
171
  { type: KilogramPipe },
171
172
  { type: CurrencyPipe },
172
173
  { type: ProducerInvoiceService },
173
- { type: MessageService }
174
+ { type: MessageService },
175
+ { type: DatePipe }
174
176
  ];
175
177
  __decorate([
176
178
  Input()
@@ -181,9 +183,9 @@ __decorate([
181
183
  ModalInvoicePjForFixationComponent = __decorate([
182
184
  Component({
183
185
  selector: 's-modal-invoice-pj-for-fixation',
184
- template: "<p-dialog\r\n header=\"{{ 'agro.angular_components.panel_title_external_invoice_add_external_invoice' | libTranslate }}\"\r\n [(visible)]=\"visible\"\r\n [modal]=\"true\"\r\n class=\"add-invoice-modal\"\r\n [closeOnEscape]=\"false\"\r\n (onHide)=\"cancelPooling()\"\r\n [dismissableMask]=\"false\"\r\n>\r\n <ng-container *ngIf=\"!dontHaveAnyInvoice\">\r\n <div class=\"ui-g\">\r\n <label for=\"invoiceSearchInput\">{{ 'agro.angular_components.number_or_series' | libTranslate }}</label>\r\n <input\r\n type=\"text\"\r\n id=\"invoiceSearchInput\"\r\n pInputText\r\n [formControl]=\"searchValue\"\r\n [placeholder]=\"'' | libTranslate\"\r\n [required]=\"false\"\r\n />\r\n <div class=\"ui-g-12\">\r\n <p-table\r\n [(selection)]=\"selected\"\r\n [value]=\"gridData\"\r\n [columns]=\"gridColumns\"\r\n [scrollable]=\"true\"\r\n dataKey=\"externalInvoiceId\"\r\n [rows]=\"10\"\r\n [paginator]=\"true\"\r\n [lazyLoadOnInit]=\"false\"\r\n [totalRecords]=\"gridTotalRecords\"\r\n [lazy]=\"true\"\r\n (onLazyLoad)=\"updateGridData($event)\"\r\n [resizableColumns]=\"true\"\r\n *sLoadingState=\"gridLoading\"\r\n sortMode=\"multiple\"\r\n [selectionMode]=\"'multiple'\"\r\n >\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th class=\"checkbox\" scope=\"col\">\r\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </th>\r\n <ng-container *ngFor=\"let col of columns\">\r\n <th *ngIf=\"col.sortable === undefined || col.sortable\" [pSortableColumn]=\"col.field\" scope=\"col\">\r\n {{ col.header }}\r\n <p-sortIcon [field]=\"col.field\"></p-sortIcon>\r\n </th>\r\n <th *ngIf=\"col.sortable === false || col.sortable === null\" scope=\"col\">\r\n {{ col.header }}\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\" let-rowData let-columns=\"columns\" let-rowIndex=\"rowIndex\">\r\n <tr>\r\n <td class=\"checkbox\" tabindex=\"0\">\r\n <p-tableCheckbox [value]=\"rowData\"></p-tableCheckbox>\r\n </td>\r\n <td\r\n [pSelectableRow]=\"rowData\"\r\n [pSelectableRowIndex]=\"rowIndex\"\r\n *ngFor=\"let col of columns\"\r\n class=\"column\"\r\n tabindex=\"0\"\r\n >\r\n <ng-container>\r\n {{\r\n gridFieldValuesMap[col.field]\r\n ? gridFieldValuesMap[col.field](rowData)\r\n : rowData[col.field]\r\n }}\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"paginatorright\">\r\n <span>{{ gridTotalRecords }} registros encontrados</span>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"dontHaveAnyInvoice\">\r\n <s-empty-state\r\n iconClass=\"fa fa-exclamation-triangle\"\r\n title=\"{{ 'agro.angular_components.add_pj_invoice_modal_no_invoices_found' | libTranslate }}\"\r\n primaryActionLabel=\"{{ 'agro.angular_components.error_server_try_again' | libTranslate }}\"\r\n (primaryAction)=\"tryToSearchAgain()\"\r\n description=\"{{ 'agro.angular_components.no_register_found_for_external_invoices_summary' | libTranslate }}\"\r\n >\r\n </s-empty-state>\r\n </ng-container>\r\n\r\n <p-footer class=\"footer\" *ngIf=\"!dontHaveAnyInvoice\">\r\n <s-button\r\n [priority]=\"buttonPriority.Primary\"\r\n label=\"{{ 'agro.angular_components.panel_title_external_invoice_add_external_invoice' | libTranslate }}\"\r\n [disabled]=\"!selected?.length\"\r\n (click)=\"add()\"\r\n (keydown.enter)=\"add()\"\r\n ></s-button>\r\n <s-button\r\n [priority]=\"buttonPriority.Link\"\r\n label=\"{{ 'agro.angular_components.cancel' | libTranslate }}\"\r\n (click)=\"cancel()\"\r\n (keydown.enter)=\"cancel()\"\r\n ></s-button>\r\n </p-footer>\r\n</p-dialog>\r\n",
186
+ template: "<p-dialog\r\n header=\"{{ 'agro.angular_components.panel_title_external_invoice_add_external_invoice' | libTranslate }}\"\r\n [(visible)]=\"visible\"\r\n [modal]=\"true\"\r\n class=\"add-invoice-modal\"\r\n [closeOnEscape]=\"false\"\r\n (onHide)=\"cancelPooling()\"\r\n [dismissableMask]=\"false\"\r\n>\r\n <ng-container *ngIf=\"!dontHaveAnyInvoice\">\r\n <div class=\"ui-g\">\r\n <label for=\"invoiceSearchInput\">{{ 'agro.angular_components.number' | libTranslate }}</label>\r\n <input\r\n type=\"text\"\r\n id=\"invoiceSearchInput\"\r\n pInputText\r\n [formControl]=\"searchValue\"\r\n [placeholder]=\"'' | libTranslate\"\r\n [required]=\"false\"\r\n />\r\n <div class=\"ui-g-12\">\r\n <p-table\r\n [(selection)]=\"selected\"\r\n [value]=\"gridData\"\r\n [columns]=\"gridColumns\"\r\n [scrollable]=\"true\"\r\n dataKey=\"externalInvoiceId\"\r\n [rows]=\"10\"\r\n [paginator]=\"true\"\r\n [lazyLoadOnInit]=\"false\"\r\n [totalRecords]=\"gridTotalRecords\"\r\n [lazy]=\"true\"\r\n (onLazyLoad)=\"updateGridData($event)\"\r\n [resizableColumns]=\"true\"\r\n *sLoadingState=\"gridLoading\"\r\n sortMode=\"multiple\"\r\n [selectionMode]=\"'multiple'\"\r\n >\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th class=\"checkbox\" scope=\"col\">\r\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </th>\r\n <ng-container *ngFor=\"let col of columns\">\r\n <th\r\n *ngIf=\"col.sortable === undefined || col.sortable\"\r\n [pSortableColumn]=\"col.field\"\r\n scope=\"col\"\r\n >\r\n {{ col.header }}\r\n <p-sortIcon [field]=\"col.field\"></p-sortIcon>\r\n </th>\r\n <th *ngIf=\"col.sortable === false || col.sortable === null\" scope=\"col\">\r\n {{ col.header }}\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\" let-rowData let-columns=\"columns\" let-rowIndex=\"rowIndex\">\r\n <tr>\r\n <td class=\"checkbox\" tabindex=\"0\">\r\n <p-tableCheckbox [value]=\"rowData\"></p-tableCheckbox>\r\n </td>\r\n <td\r\n [pSelectableRow]=\"rowData\"\r\n [pSelectableRowIndex]=\"rowIndex\"\r\n *ngFor=\"let col of columns\"\r\n class=\"column\"\r\n tabindex=\"0\"\r\n >\r\n <ng-container>\r\n {{ gridFieldValuesMap[col.field] ? gridFieldValuesMap[col.field](rowData) :\r\n rowData[col.field] }}\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"paginatorright\">\r\n <span>{{ gridTotalRecords }} registros encontrados</span>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"dontHaveAnyInvoice\">\r\n <s-empty-state\r\n iconClass=\"fa fa-exclamation-triangle\"\r\n title=\"{{ 'agro.angular_components.add_pj_invoice_modal_no_invoices_found' | libTranslate }}\"\r\n primaryActionLabel=\"{{ 'agro.angular_components.error_server_try_again' | libTranslate }}\"\r\n (primaryAction)=\"tryToSearchAgain()\"\r\n description=\"{{ 'agro.angular_components.no_register_found_for_external_invoices_summary' | libTranslate }}\"\r\n >\r\n </s-empty-state>\r\n </ng-container>\r\n\r\n <p-footer class=\"footer\" *ngIf=\"!dontHaveAnyInvoice\">\r\n <s-button\r\n [priority]=\"buttonPriority.Primary\"\r\n label=\"{{ 'agro.angular_components.panel_title_external_invoice_add_external_invoice' | libTranslate }}\"\r\n [disabled]=\"!selected?.length\"\r\n (click)=\"add()\"\r\n (keydown.enter)=\"add()\"\r\n ></s-button>\r\n <s-button\r\n [priority]=\"buttonPriority.Link\"\r\n label=\"{{ 'agro.angular_components.cancel' | libTranslate }}\"\r\n (click)=\"cancel()\"\r\n (keydown.enter)=\"cancel()\"\r\n ></s-button>\r\n </p-footer>\r\n</p-dialog>\r\n",
185
187
  styles: [".footer{width:100%;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center}.add-invoice-modal{width:480px;max-width:480px}.add-invoice-modal input[type=text]{width:100%}.add-invoice-modal .ui-dialog{width:480px!important}.add-invoice-modal .ui-dialog .ui-dialog-content{min-height:175px}td.checkbox,th.checkbox{width:50px}td.column,th.column{min-width:150px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}"]
186
188
  })
187
189
  ], ModalInvoicePjForFixationComponent);
188
190
  export { ModalInvoicePjForFixationComponent };
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtaW52b2ljZS1wai1mb3ItZml4YXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvci1hZ3JvbmVnb2Npby9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL21vZGFsLWludm9pY2UtcGovZm9yLWZpeGF0aW9uL21vZGFsLWludm9pY2UtcGotZm9yLWZpeGF0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUV6QyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQU9qQyxJQUFhLGtDQUFrQyxHQUEvQyxNQUFhLGtDQUFtQyxTQUFRLGtCQUFrQjtJQU10RSxZQUNhLGtCQUF5QyxFQUN6QyxjQUFrQyxFQUNsQyxhQUE0QixFQUM1QixZQUEwQixFQUMxQixZQUEwQixFQUMx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S0FBSyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ3JGLElBQUksV0FBVyxFQUFFO3dCQUNiLFdBQVcsQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztxQkFDakQ7Z0JBQ0wsQ0FBQyxFQUFFO1lBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDO0tBQUE7Q0FDSixDQUFBOztZQXZLb0MscUJBQXFCO1lBQ3pCLGtCQUFrQjtZQUNuQixhQUFhO1lBQ2QsWUFBWTtZQUNaLFlBQVk7WUFDRixzQkFBc0I7WUFDOUIsY0FBYzs7QUFabEM7SUFBUixLQUFLLEVBQUU7bUVBQTJDO0FBQ3pDO0lBQVQsTUFBTSxFQUFFOzhFQUFnRDtBQUZoRCxrQ0FBa0M7SUFMOUMsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLGlDQUFpQztRQUMzQyxrNEtBQStCOztLQUVsQyxDQUFDO0dBQ1csa0NBQWtDLENBOEs5QztTQTlLWSxrQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSUludm9pY2VMb29rdXBSZXNwb25zZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Fncm8taW52b2ljZS9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgTGliVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbGliLXRyYW5zbGF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBZ3JvSW52b2ljZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hZ3JvLWludm9pY2UnO1xyXG5pbXBvcnQgeyBDb2x1bW4sIExvY2FsZVNlcnZpY2UgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzJztcclxuaW1wb3J0IHsgS2lsb2dyYW1QaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZS9raWxvZ3JhbSc7XHJcbmltcG9ydCB7IEN1cnJlbmN5UGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1vZGFsSW52b2ljZVBqQmFzZSB9IGZyb20gJy4uL21vZGFsLWludm9pY2UtcGotYmFzZS5jbGFzcyc7XHJcbmltcG9ydCB7IE1vZGFsSW52b2ljZVBqRm9yRml4YXRpb25PcHRpb25zIH0gZnJvbSAnLi9tb2RhbC1maXhhdGlvbi1vcHRpb25zLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFByb2R1Y2VySW52b2ljZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wcm9kdWNlci1pbnZvaWNlL3Byb2R1Y2VyLWludm9pY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IGZpbmFsaXplLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZyc7XHJcbmltcG9ydCB7IExpc3RQYXJhbXMgfSBmcm9tICcuLi8uLi9ldmVudC1jb250cm9sLWJvYXJkL3NlcnZpY2UvZW50aXR5LXNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFTVBUWSwgb2YgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzLW1vZGFsLWludm9pY2UtcGotZm9yLWZpeGF0aW9uJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi4vdGVtcGxhdGUuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi4vc3R5bGUuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTW9kYWxJbnZvaWNlUGpGb3JGaXhhdGlvbkNvbXBvbmVudCBleHRlbmRzIE1vZGFsSW52b2ljZVBqQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAgIEBJbnB1dCgpIG9wdGlvbnM6IE1vZGFsSW52b2ljZVBqRm9yRml4YXRpb25PcHRpb25zO1xyXG4gICAgQE91dHB1dCgpIHdoZW5TZWxlY3RJbnZvaWNlcyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XHJcblxyXG4gICAgcHVibGljIGdyaWRDb2x1bW5zOiBQYXJ0aWFsPENvbHVtbiAmIHsgc29ydGFibGU/OiBib29sZWFuIH0+W107XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcmVhZG9ubHkgdHJhbnNsYXRpb25TZXJ2aWNlOiBMaWJUcmFuc2xhdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcmVhZG9ubHkgaW52b2ljZVNlcnZpY2U6IEFncm9JbnZvaWNlU2VydmljZSxcclxuICAgICAgICByZWFkb25seSBsb2NhbGVTZXJ2aWNlOiBMb2NhbGVTZXJ2aWNlLFxyXG4gICAgICAgIHJlYWRvbmx5IGtpbG9ncmFtUGlwZTogS2lsb2dyYW1QaXBlLFxyXG4gICAgICAgIHJlYWRvbmx5IGN1cnJlbmN5UGlwZTogQ3VycmVuY3lQaXBlLFxyXG4gICAgICAgIHJlYWRvbmx5IHByb2R1Y2VySW52b2ljZVNlcnZpY2U6IFByb2R1Y2VySW52b2ljZVNlcnZpY2UsXHJcbiAgICAgICAgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcih0cmFuc2xhdGlvblNlcnZpY2UsIGludm9pY2VTZXJ2aWNlLCBsb2NhbGVTZXJ2aWNlLCBraWxvZ3JhbVBpcGUsIG1lc3NhZ2VTZXJ2aWNlKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRlZmluZUdyaWRDb2x1bW5zKCk7XHJcbiAgICAgICAgdGhpcy5ncmlkRmllbGRWYWx1ZXNNYXAgPSB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZ3JpZEZpZWxkVmFsdWVzTWFwLFxyXG4gICAgICAgICAgICBzZXJpZXM6IChyb3cpID0+IHJvdz8uc2VyaWVzTGVnYWwgfHwgcm93Py5zZXJpZXMgfHwgcm93LnNlcmllcyxcclxuICAgICAgICAgICAgdG90YWxWYWx1ZTogKHJvdykgPT4gdGhpcy5jdXJyZW5jeVBpcGUudHJhbnNmb3JtKHJvdz8ubmV0VG90YWxWYWx1ZSB8fCAwLCAnQlJMJyksXHJcbiAgICAgICAgfTtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlZmluZUdyaWRDb2x1bW5zKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZ3JpZENvbHVtbnMgPSBbXHJcbiAgICAgICAgICAgIHsgZmllbGQ6ICdudW1iZXInLCBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLm51bWJlcicpIH0sXHJcbiAgICAgICAgICAgIHsgZmllbGQ6ICdzZXJpZXMnLCBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLnNlcmllcycpIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAndG90YWxWYWx1ZScsXHJcbiAgICAgICAgICAgICAgICBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLnRvdGFsX3ZhbHVlJyksXHJcbiAgICAgICAgICAgICAgICBzb3J0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnbGlua2VkVmFsdWUnLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy52YWx1ZV9saW5rZWQnKSxcclxuICAgICAgICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBmaWVsZDogJ2lzc3VhbmNlRGF0ZScsIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuaXNzdWFuY2VfZGF0ZScpIH0sXHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBiZWZvcmVBZGQoc2VsZWN0ZWRJbnZvaWNlczogYW55W10pOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIGlmIChzZWxlY3RlZEludm9pY2VzPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5saW5rU2VsZWN0ZWRJbnZvaWNlc0luRml4YXRpb25JdGVtKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBvZihFTVBUWSkudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9wZW4oKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5maXhhdGlvbkl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5yZXF1aXJlZFZhbHVlID4gaXRlbS50b3RhbFZhbHVlSW52b2ljZXMpLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnd2FybicsXHJcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhZ3JvLmZpeGF0aW9uLm1heF9saW5rZWRfaW52b2ljZXMnKSxcclxuICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdyby5maXhhdGlvbi5tYXhfbGlua2VkX2ludm9pY2VzX2Rlc2NyaXB0aW9uJyksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN1cGVyLm9wZW4oKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgbGlua1NlbGVjdGVkSW52b2ljZXNJbkZpeGF0aW9uSXRlbSgpIHtcclxuICAgICAgICBpZiAoIShhd2FpdCB0aGlzLmlzVmFsaWRBbmRTZXRMaW5rZWRWYWx1ZUluSW52b2ljZXMoKSkpIHtcclxuICAgICAgICAgICAgdGhpcy5ncmlkTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGVudGl0aWVzID0gW11cclxuICAgICAgICAgICAgLmNvbmNhdChcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMuc2VsZWN0ZWQubWFwKChpbnZvaWNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmZpeGF0aW9uSXRlbXMubWFwKChmaXhhdGlvbkl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXF1aXJlZFZhbHVlID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaXhhdGlvbkl0ZW0ucmVxdWlyZWRWYWx1ZSB8fCAwKSAtIChmaXhhdGlvbkl0ZW0udG90YWxWYWx1ZUludm9pY2VzIHx8IDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW52b2ljZS5yZW1haW5pbmdWYWx1ZSA8PSAwIHx8IHJlcXVpcmVkVmFsdWUgPD0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWVUb0JlTGlua2VkID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkVmFsdWUgPiBpbnZvaWNlLnJlbWFpbmluZ1ZhbHVlID8gaW52b2ljZS5yZW1haW5pbmdWYWx1ZSA6IHJlcXVpcmVkVmFsdWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnZvaWNlLnJlbWFpbmluZ1ZhbHVlIC09IHZhbHVlVG9CZUxpbmtlZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllczogaW52b2ljZT8uc2VyaWVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyOiBTdHJpbmcoaW52b2ljZT8ubnVtYmVyKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludm9pY2VJZDogaW52b2ljZT8uaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rZWRWYWx1ZTogdmFsdWVUb0JlTGlua2VkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxWYWx1ZTogaW52b2ljZT8udG90YWxWYWx1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzc3VhbmNlRGF0ZTogaW52b2ljZT8uaXNzdWFuY2VEYXRlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4YXRpb25JdGVtLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgZml4YXRpb25JdGVtLnRvdGFsVmFsdWVJbnZvaWNlcyA9IChmaXhhdGlvbkl0ZW0udG90YWxWYWx1ZUludm9pY2VzIHx8IDApICsgdmFsdWVUb0JlTGlua2VkO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJvZHk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGVudGl0eTogYW55KSA9PiBlbnRpdHkgIT09IG51bGwpO1xyXG4gICAgICAgIHRoaXMuZ3JpZExvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucHJvZHVjZXJJbnZvaWNlU2VydmljZVxyXG4gICAgICAgICAgICAuaW5zZXJ0QnVsayhlbnRpdGllcylcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcclxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdyaWRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53aGVuU2VsZWN0SW52b2ljZXMuZW1pdCh0aGlzLnNlbGVjdGVkKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICdzdWNjZXNzJyxcclxuICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhZ3JvLmZpeGF0aW9uLnN1Y2Nlc3MnKSxcclxuICAgICAgICAgICAgICAgICAgICBkZXRhaWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2Fncm8uZml4YXRpb24uaW52b2ljZV9jcmVhdGVkX3N1Y2Nlc3NmdWxseScpLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhbmNlbCgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBpc1ZhbGlkQW5kU2V0TGlua2VkVmFsdWVJbkludm9pY2VzKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGNvbnN0IHZhbG9yTGlua2VkID0gYXdhaXQgdGhpcy5wcm9kdWNlckludm9pY2VTZXJ2aWNlLmdldFRvdGFsTGlua2VkSW5JbnZvaWNlcyhcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZC5tYXAoKGludm9pY2U6IGFueSkgPT4gaW52b2ljZS5pZCksXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5maXhhdGlvbklkXHJcbiAgICAgICAgKTtcclxuICAgICAgICBsZXQgaXNWYWxpZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5mb3JFYWNoKChpbnZvaWNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaW52b2ljZS5saW5rZWRWYWx1ZSA9IHZhbG9yTGlua2VkLmZpbmQoKGxpbmtlZDogYW55KSA9PiBsaW5rZWQuaW52b2ljZUlkID09PSBpbnZvaWNlLmlkKT8udG90YWxMaW5rZWQgfHwgMDtcclxuICAgICAgICAgICAgaWYgKGludm9pY2UubGlua2VkVmFsdWUgPj0gaW52b2ljZS50b3RhbFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICd3YXJuJyxcclxuICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhZ3JvLmZpeGF0aW9uLmxpbmtfaW52b2ljZScpLFxyXG4gICAgICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdyby5maXhhdGlvbi5pbnZvaWNlX2FscmVhZHlfbGlua2VkJyksXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGlzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpbnZvaWNlLnJlbWFpbmluZ1ZhbHVlID0gaW52b2ljZS50b3RhbFZhbHVlIC0gaW52b2ljZS5saW5rZWRWYWx1ZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gaXNWYWxpZDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBhZGFwdFJlc3VsdChyZXN1bHQ6IElJbnZvaWNlTG9va3VwUmVzcG9uc2UpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0IGFzIGFueSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2FuY2VsKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5maXhhdGlvbkl0ZW1zID0gW107XHJcbiAgICAgICAgcmV0dXJuIHN1cGVyLmNhbmNlbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVwZGF0ZUxpbmtlZFZhbHVlSW5HcmlkKHJvd3M6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGNvbnN0IGludm9pY2VJZCA9IHRoaXMuZ3JpZERhdGEubWFwKChpbnZvaWNlOiBhbnkpID0+IGludm9pY2UuaWQpO1xyXG4gICAgICAgIGxldCBmaWx0ZXIgPSBgZml4YXRpb25JdGVtLmZpeGF0aW9uLmlkIGVxICcke3RoaXMub3B0aW9ucy5maXhhdGlvbklkfSdgO1xyXG4gICAgICAgIGlmIChpbnZvaWNlSWQgJiYgaW52b2ljZUlkLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgZmlsdGVyICs9IGBhbmQgaW52b2ljZUlkIGluICgnJHtpbnZvaWNlSWQuam9pbihcIicsJ1wiKX0nKSBgO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBsaXN0UGFyYW1zOiBQYXJ0aWFsPExpc3RQYXJhbXM+ID0ge1xyXG4gICAgICAgICAgICBwYWdlOiAwLFxyXG4gICAgICAgICAgICBzaXplOiByb3dzLFxyXG4gICAgICAgICAgICBmaWx0ZXJRdWVyeTogZmlsdGVyLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgYXdhaXQgdGhpcy5wcm9kdWNlckludm9pY2VTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5saXN0KGxpc3RQYXJhbXMpXHJcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxyXG4gICAgICAgICAgICAudG9Qcm9taXNlKClcclxuICAgICAgICAgICAgLnRoZW4oKHByb2R1Y2VySW52b2ljZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcHJvZHVjZXJJbnZvaWNlcz8uY29udGVudHMuZm9yRWFjaCgoaW52b2ljZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JpZEludm9pY2UgPSB0aGlzLmdyaWREYXRhLmZpbmQoKGl0ZW06IGFueSkgPT4gaXRlbS5pZCA9PT0gaW52b2ljZS5pbnZvaWNlSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChncmlkSW52b2ljZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBncmlkSW52b2ljZS5saW5rZWRWYWx1ZSA9IGludm9pY2UubGlua2VkVmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtaW52b2ljZS1wai1mb3ItZml4YXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvci1hZ3JvbmVnb2Npby9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL21vZGFsLWludm9pY2UtcGovZm9yLWZpeGF0aW9uL21vZGFsLWludm9pY2UtcGotZm9yLWZpeGF0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDekMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDckcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFVOUQsSUFBYSxrQ0FBa0MsR0FBL0MsTUFBYSxrQ0FBbUMsU0FBUSxrQkFBa0I7SUFNdEUsWUFDYSxrQkFBeUMsRUFDekMsY0FBa0MsRUFDbEMsYUFBNEIsRUFDNUIsWUFBMEIsRUFDMUIs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QVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUNyRixJQUFJLFdBQVcsRUFBRTt3QkFDYixXQUFXLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7cUJBQ2pEO2dCQUNMLENBQUMsRUFBRTtZQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQztLQUFBO0NBQ0osQ0FBQTs7WUF4S29DLHFCQUFxQjtZQUN6QixrQkFBa0I7WUFDbkIsYUFBYTtZQUNkLFlBQVk7WUFDWixZQUFZO1lBQ0Ysc0JBQXNCO1lBQzlCLGNBQWM7WUFDdEIsUUFBUTs7QUFicEI7SUFBUixLQUFLLEVBQUU7bUVBQTJDO0FBQ3pDO0lBQVQsTUFBTSxFQUFFOzhFQUFnRDtBQUZoRCxrQ0FBa0M7SUFMOUMsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLGlDQUFpQztRQUMzQyx3NEtBQStCOztLQUVsQyxDQUFDO0dBQ1csa0NBQWtDLENBK0s5QztTQS9LWSxrQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXJyZW5jeVBpcGUsIERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbHVtbiwgTG9jYWxlU2VydmljZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcnO1xyXG5pbXBvcnQgeyBFTVBUWSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmluYWxpemUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgS2lsb2dyYW1QaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZS9raWxvZ3JhbSc7XHJcbmltcG9ydCB7IExpYlRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xpYi10cmFuc2xhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJvZHVjZXJJbnZvaWNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3Byb2R1Y2VyLWludm9pY2UvcHJvZHVjZXItaW52b2ljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTW9kYWxJbnZvaWNlUGpCYXNlIH0gZnJvbSAnLi4vbW9kYWwtaW52b2ljZS1wai1iYXNlLmNsYXNzJztcclxuaW1wb3J0IHsgQWdyb0ludm9pY2VTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYWdyby1pbnZvaWNlJztcclxuaW1wb3J0IHsgSUludm9pY2VMb29rdXBSZXNwb25zZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Fncm8taW52b2ljZS9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgTW9kYWxJbnZvaWNlUGpGb3JGaXhhdGlvbk9wdGlvbnMgfSBmcm9tICcuL21vZGFsLWZpeGF0aW9uLW9wdGlvbnMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgTGlzdFBhcmFtcyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Fncm8tZW50aXR5LXNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3MtbW9kYWwtaW52b2ljZS1wai1mb3ItZml4YXRpb24nLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuLi90ZW1wbGF0ZS5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuLi9zdHlsZS5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNb2RhbEludm9pY2VQakZvckZpeGF0aW9uQ29tcG9uZW50IGV4dGVuZHMgTW9kYWxJbnZvaWNlUGpCYXNlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgQElucHV0KCkgb3B0aW9uczogTW9kYWxJbnZvaWNlUGpGb3JGaXhhdGlvbk9wdGlvbnM7XHJcbiAgICBAT3V0cHV0KCkgd2hlblNlbGVjdEludm9pY2VzID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcclxuXHJcbiAgICBwdWJsaWMgZ3JpZENvbHVtbnM6IFBhcnRpYWw8Q29sdW1uICYgeyBzb3J0YWJsZT86IGJvb2xlYW4gfT5bXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICByZWFkb25seSB0cmFuc2xhdGlvblNlcnZpY2U6IExpYlRyYW5zbGF0aW9uU2VydmljZSxcclxuICAgICAgICByZWFkb25seSBpbnZvaWNlU2VydmljZTogQWdyb0ludm9pY2VTZXJ2aWNlLFxyXG4gICAgICAgIHJlYWRvbmx5IGxvY2FsZVNlcnZpY2U6IExvY2FsZVNlcnZpY2UsXHJcbiAgICAgICAgcmVhZG9ubHkga2lsb2dyYW1QaXBlOiBLaWxvZ3JhbVBpcGUsXHJcbiAgICAgICAgcmVhZG9ubHkgY3VycmVuY3lQaXBlOiBDdXJyZW5jeVBpcGUsXHJcbiAgICAgICAgcmVhZG9ubHkgcHJvZHVjZXJJbnZvaWNlU2VydmljZTogUHJvZHVjZXJJbnZvaWNlU2VydmljZSxcclxuICAgICAgICByZWFkb25seSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIGRhdGVQaXBlOiBEYXRlUGlwZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIodHJhbnNsYXRpb25TZXJ2aWNlLCBpbnZvaWNlU2VydmljZSwgbG9jYWxlU2VydmljZSwga2lsb2dyYW1QaXBlLCBtZXNzYWdlU2VydmljZSwgZGF0ZVBpcGUpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGVmaW5lR3JpZENvbHVtbnMoKTtcclxuICAgICAgICB0aGlzLmdyaWRGaWVsZFZhbHVlc01hcCA9IHtcclxuICAgICAgICAgICAgLi4udGhpcy5ncmlkRmllbGRWYWx1ZXNNYXAsXHJcbiAgICAgICAgICAgIHNlcmllczogKHJvdykgPT4gcm93Py5zZXJpZXNMZWdhbCB8fCByb3c/LnNlcmllcyB8fCByb3cuc2VyaWVzLFxyXG4gICAgICAgICAgICB0b3RhbFZhbHVlOiAocm93KSA9PiB0aGlzLmN1cnJlbmN5UGlwZS50cmFuc2Zvcm0ocm93Py5uZXRUb3RhbFZhbHVlIHx8IDAsICdCUkwnKSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVmaW5lR3JpZENvbHVtbnMoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5ncmlkQ29sdW1ucyA9IFtcclxuICAgICAgICAgICAgeyBmaWVsZDogJ251bWJlcicsIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMubnVtYmVyJykgfSxcclxuICAgICAgICAgICAgeyBmaWVsZDogJ3NlcmllcycsIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuc2VyaWVzJykgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICd0b3RhbFZhbHVlJyxcclxuICAgICAgICAgICAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudG90YWxfdmFsdWUnKSxcclxuICAgICAgICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdsaW5rZWRWYWx1ZScsXHJcbiAgICAgICAgICAgICAgICBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX2xpbmtlZCcpLFxyXG4gICAgICAgICAgICAgICAgc29ydGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7IGZpZWxkOiAnaXNzdWFuY2VEYXRlJywgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5pc3N1YW5jZV9kYXRlJykgfSxcclxuICAgICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIGJlZm9yZUFkZChzZWxlY3RlZEludm9pY2VzOiBhbnlbXSk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkSW52b2ljZXM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmxpbmtTZWxlY3RlZEludm9pY2VzSW5GaXhhdGlvbkl0ZW0oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9mKEVNUFRZKS50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmZpeGF0aW9uSXRlbXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLnJlcXVpcmVkVmFsdWUgPiBpdGVtLnRvdGFsVmFsdWVJbnZvaWNlcykubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnd2FybicsXHJcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhZ3JvLmZpeGF0aW9uLm1heF9saW5rZWRfaW52b2ljZXMnKSxcclxuICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdyby5maXhhdGlvbi5tYXhfbGlua2VkX2ludm9pY2VzX2Rlc2NyaXB0aW9uJyksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN1cGVyLm9wZW4oKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgbGlua1NlbGVjdGVkSW52b2ljZXNJbkZpeGF0aW9uSXRlbSgpIHtcclxuICAgICAgICBpZiAoIShhd2FpdCB0aGlzLmlzVmFsaWRBbmRTZXRMaW5rZWRWYWx1ZUluSW52b2ljZXMoKSkpIHtcclxuICAgICAgICAgICAgdGhpcy5ncmlkTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGVudGl0aWVzID0gW11cclxuICAgICAgICAgICAgLmNvbmNhdChcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMuc2VsZWN0ZWQubWFwKChpbnZvaWNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmZpeGF0aW9uSXRlbXMubWFwKChmaXhhdGlvbkl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXF1aXJlZFZhbHVlID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaXhhdGlvbkl0ZW0ucmVxdWlyZWRWYWx1ZSB8fCAwKSAtIChmaXhhdGlvbkl0ZW0udG90YWxWYWx1ZUludm9pY2VzIHx8IDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW52b2ljZS5yZW1haW5pbmdWYWx1ZSA8PSAwIHx8IHJlcXVpcmVkVmFsdWUgPD0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWVUb0JlTGlua2VkID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkVmFsdWUgPiBpbnZvaWNlLnJlbWFpbmluZ1ZhbHVlID8gaW52b2ljZS5yZW1haW5pbmdWYWx1ZSA6IHJlcXVpcmVkVmFsdWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnZvaWNlLnJlbWFpbmluZ1ZhbHVlIC09IHZhbHVlVG9CZUxpbmtlZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllczogaW52b2ljZT8uc2VyaWVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyOiBTdHJpbmcoaW52b2ljZT8ubnVtYmVyKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludm9pY2VJZDogaW52b2ljZT8uaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rZWRWYWx1ZTogdmFsdWVUb0JlTGlua2VkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxWYWx1ZTogaW52b2ljZT8udG90YWxWYWx1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzc3VhbmNlRGF0ZTogaW52b2ljZT8uaXNzdWFuY2VEYXRlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4YXRpb25JdGVtLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgZml4YXRpb25JdGVtLnRvdGFsVmFsdWVJbnZvaWNlcyA9IChmaXhhdGlvbkl0ZW0udG90YWxWYWx1ZUludm9pY2VzIHx8IDApICsgdmFsdWVUb0JlTGlua2VkO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJvZHk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGVudGl0eTogYW55KSA9PiBlbnRpdHkgIT09IG51bGwpO1xyXG4gICAgICAgIHRoaXMuZ3JpZExvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucHJvZHVjZXJJbnZvaWNlU2VydmljZVxyXG4gICAgICAgICAgICAuaW5zZXJ0QnVsayhlbnRpdGllcylcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcclxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdyaWRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53aGVuU2VsZWN0SW52b2ljZXMuZW1pdCh0aGlzLnNlbGVjdGVkKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICdzdWNjZXNzJyxcclxuICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhZ3JvLmZpeGF0aW9uLnN1Y2Nlc3MnKSxcclxuICAgICAgICAgICAgICAgICAgICBkZXRhaWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2Fncm8uZml4YXRpb24uaW52b2ljZV9jcmVhdGVkX3N1Y2Nlc3NmdWxseScpLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhbmNlbCgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBpc1ZhbGlkQW5kU2V0TGlua2VkVmFsdWVJbkludm9pY2VzKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGNvbnN0IHZhbG9yTGlua2VkID0gYXdhaXQgdGhpcy5wcm9kdWNlckludm9pY2VTZXJ2aWNlLmdldFRvdGFsTGlua2VkSW5JbnZvaWNlcyhcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZC5tYXAoKGludm9pY2U6IGFueSkgPT4gaW52b2ljZS5pZCksXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5maXhhdGlvbklkXHJcbiAgICAgICAgKTtcclxuICAgICAgICBsZXQgaXNWYWxpZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5mb3JFYWNoKChpbnZvaWNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaW52b2ljZS5saW5rZWRWYWx1ZSA9IHZhbG9yTGlua2VkLmZpbmQoKGxpbmtlZDogYW55KSA9PiBsaW5rZWQuaW52b2ljZUlkID09PSBpbnZvaWNlLmlkKT8udG90YWxMaW5rZWQgfHwgMDtcclxuICAgICAgICAgICAgaWYgKGludm9pY2UubGlua2VkVmFsdWUgPj0gaW52b2ljZS50b3RhbFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICd3YXJuJyxcclxuICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhZ3JvLmZpeGF0aW9uLmxpbmtfaW52b2ljZScpLFxyXG4gICAgICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYWdyby5maXhhdGlvbi5pbnZvaWNlX2FscmVhZHlfbGlua2VkJyksXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGlzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpbnZvaWNlLnJlbWFpbmluZ1ZhbHVlID0gaW52b2ljZS50b3RhbFZhbHVlIC0gaW52b2ljZS5saW5rZWRWYWx1ZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gaXNWYWxpZDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBhZGFwdFJlc3VsdChyZXN1bHQ6IElJbnZvaWNlTG9va3VwUmVzcG9uc2UpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0IGFzIGFueSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2FuY2VsKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5maXhhdGlvbkl0ZW1zID0gW107XHJcbiAgICAgICAgcmV0dXJuIHN1cGVyLmNhbmNlbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVwZGF0ZUxpbmtlZFZhbHVlSW5HcmlkKHJvd3M6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGNvbnN0IGludm9pY2VJZCA9IHRoaXMuZ3JpZERhdGEubWFwKChpbnZvaWNlOiBhbnkpID0+IGludm9pY2UuaWQpO1xyXG4gICAgICAgIGxldCBmaWx0ZXIgPSBgZml4YXRpb25JdGVtLmZpeGF0aW9uLmlkIGVxICcke3RoaXMub3B0aW9ucy5maXhhdGlvbklkfSdgO1xyXG4gICAgICAgIGlmIChpbnZvaWNlSWQgJiYgaW52b2ljZUlkLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgZmlsdGVyICs9IGBhbmQgaW52b2ljZUlkIGluICgnJHtpbnZvaWNlSWQuam9pbihcIicsJ1wiKX0nKSBgO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBsaXN0UGFyYW1zOiBQYXJ0aWFsPExpc3RQYXJhbXM+ID0ge1xyXG4gICAgICAgICAgICBwYWdlOiAwLFxyXG4gICAgICAgICAgICBzaXplOiByb3dzLFxyXG4gICAgICAgICAgICBmaWx0ZXJRdWVyeTogZmlsdGVyLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgYXdhaXQgdGhpcy5wcm9kdWNlckludm9pY2VTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5saXN0KGxpc3RQYXJhbXMpXHJcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxyXG4gICAgICAgICAgICAudG9Qcm9taXNlKClcclxuICAgICAgICAgICAgLnRoZW4oKHByb2R1Y2VySW52b2ljZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcHJvZHVjZXJJbnZvaWNlcz8uY29udGVudHMuZm9yRWFjaCgoaW52b2ljZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JpZEludm9pY2UgPSB0aGlzLmdyaWREYXRhLmZpbmQoKGl0ZW06IGFueSkgPT4gaXRlbS5pZCA9PT0gaW52b2ljZS5pbnZvaWNlSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChncmlkSW52b2ljZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBncmlkSW52b2ljZS5saW5rZWRWYWx1ZSA9IGludm9pY2UubGlua2VkVmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==