ng-easycommerce 0.0.683 → 0.0.684

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 (24) hide show
  1. package/README.md +9 -0
  2. package/bundles/ng-easycommerce.umd.js +427 -38
  3. package/bundles/ng-easycommerce.umd.js.map +1 -1
  4. package/bundles/ng-easycommerce.umd.min.js +1 -1
  5. package/bundles/ng-easycommerce.umd.min.js.map +1 -1
  6. package/esm2015/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.js +317 -8
  7. package/esm2015/lib/ec-component/checkout-ec/payment-ec/payment-ec.component.js +2 -2
  8. package/esm2015/lib/ec-component/widgets-ec/redsys-redirect-ec/redsys-redirect-ec.component.js +41 -24
  9. package/esm2015/lib/services/checkout/addressing.service.js +21 -1
  10. package/esm2015/lib/services/checkout/shipment.service.js +5 -4
  11. package/esm5/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.js +359 -8
  12. package/esm5/lib/ec-component/checkout-ec/payment-ec/payment-ec.component.js +2 -2
  13. package/esm5/lib/ec-component/widgets-ec/redsys-redirect-ec/redsys-redirect-ec.component.js +41 -24
  14. package/esm5/lib/services/checkout/addressing.service.js +21 -1
  15. package/esm5/lib/services/checkout/shipment.service.js +10 -9
  16. package/fesm2015/ng-easycommerce.js +380 -33
  17. package/fesm2015/ng-easycommerce.js.map +1 -1
  18. package/fesm5/ng-easycommerce.js +427 -38
  19. package/fesm5/ng-easycommerce.js.map +1 -1
  20. package/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.d.ts +26 -0
  21. package/lib/ec-component/widgets-ec/redsys-redirect-ec/redsys-redirect-ec.component.d.ts +4 -3
  22. package/lib/services/checkout/addressing.service.d.ts +5 -0
  23. package/ng-easycommerce.metadata.json +1 -1
  24. package/package.json +1 -1
@@ -110,7 +110,7 @@ let PaymentEcComponent = class PaymentEcComponent extends ComponentHelper {
110
110
  };
111
111
  this.verifyValidate = () => {
112
112
  this.setLoading();
113
- setTimeout(r => this.emitResult(), 1000);
113
+ this.emitResult();
114
114
  };
115
115
  this.setMethod = (method) => __awaiter(this, void 0, void 0, function* () {
116
116
  var _a, _b, _c, _d, _e, _f, _g, _h, _j;
@@ -393,4 +393,4 @@ PaymentEcComponent = __decorate([
393
393
  })
394
394
  ], PaymentEcComponent);
395
395
  export { PaymentEcComponent };
396
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvZWMtY29tcG9uZW50L2NoZWNrb3V0LWVjL3BheW1lbnQtZWMvcGF5bWVudC1lYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFpQixNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQVNqRCxJQUFhLGtCQUFrQixHQUEvQixNQUFhLGtCQUFtQixTQUFRLGVBQWU7SUFxQ25ELFlBQXNCLFFBQW1CLEVBQVksTUFBb0IsRUFDOUQsY0FBOEIsRUFBUyxlQUFnQyxFQUN0RSxXQUF3QixFQUFVLE1BQWlCLEVBQVUsTUFBYztRQUNuRixLQUFLLEVBQUUsQ0FBQztRQUhVLGFBQVEsR0FBUixRQUFRLENBQVc7UUFBWSxXQUFNLEdBQU4sTUFBTSxDQUFjO1FBQzlELG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFTLG9C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QUFBOztZQXRWbUMsU0FBUztZQUFvQixZQUFZO1lBQzlDLGNBQWM7WUFBMEIsZUFBZTtZQUN6RCxXQUFXO1lBQWtCLFNBQVM7WUFBa0IsTUFBTTs7QUFyQzlFO0lBQVIsS0FBSyxFQUFFO21EQUFTO0FBQ1I7SUFBUixLQUFLLEVBQUU7OERBQXFDO0FBQ25DO0lBQVQsTUFBTSxFQUFFO3VEQUEyQztBQUN4QjtJQUEzQixTQUFTLENBQUMsZUFBZSxDQUFDOzhEQUEwQztBQUw1RCxrQkFBa0I7SUFQOUIsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLGdCQUFnQjtRQUMxQixncnJCQUF3QztRQUV4QyxTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUM7O0tBRTlCLENBQUM7R0FDVyxrQkFBa0IsQ0EyWDlCO1NBM1hZLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgUmVuZGVyZXIyLCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbXBvbmVudEhlbHBlciB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvY29tcG9uZW50LWhlbHBlcic7XG5pbXBvcnQgeyBDaGVja291dERhdGEgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2NoZWNrb3V0LWRhdGEnO1xuaW1wb3J0IHsgQ2hlY2tvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2hlY2tvdXQvY2hlY2tvdXQuc2VydmljZSc7XG5pbXBvcnQgeyBQYXltZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NoZWNrb3V0L3BheW1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi91dGlscy90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2FydC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uLy4uLy4uL2NvcmUuY29uc3RzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtcGF5bWVudC1lYycsXG4gICAgdGVtcGxhdGVVcmw6ICdwYXltZW50LWVjLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsncGF5bWVudC1lYy5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1BheW1lbnRTZXJ2aWNlXVxuXG59KVxuZXhwb3J0IGNsYXNzIFBheW1lbnRFY0NvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEhlbHBlciBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0IHtcblxuICAgIEBJbnB1dCgpIHN0ZXBfaWQ7XG4gICAgQElucHV0KCkgY29tcGFjdFBheW1lbnRWaWV3OiBib29sZWFuID0gZmFsc2U7XG4gICAgQE91dHB1dCgpIGRpcnR5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBWaWV3Q2hpbGQoJ2Zvcm1Db250YWluZXInKSBwcm90ZWN0ZWQgbWVyY2Fkb3BhZ29fYnV0dG9uOiBFbGVtZW50UmVmO1xuICAgIHByb3RlY3RlZCBtZXRob2REYXRhU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgICBwcml2YXRlIGxvYWRpbmdTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJvdGVjdGVkIHByZWZlcmVuY2U7XG5cblxuICAgIHB1YmxpYyBsb2FkaW5nX2ludGVybmFsID0gZmFsc2U7XG4gICAgcHVibGljIG9yZGVyX2lkO1xuICAgIHB1YmxpYyBlcnJvcjtcbiAgICBwdWJsaWMgbG9hZGluZyA9IHRydWU7XG4gICAgcHVibGljIGxvYWRpbmdfaW50ZXJuYWxfbXAgPSBmYWxzZTtcbiAgICBwdWJsaWMgbWV0aG9kX2RhdGEkID0gdGhpcy5tZXRob2REYXRhU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgbG9hZGluZyQgPSB0aGlzLmxvYWRpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyB0b3RhbF9hbW91bnQ7XG4gICAgcHVibGljIGFsbG93QW55UGF5bWVudE1ldGhvZDogYm9vbGVhbiB8IG51bGwgPSBudWxsO1xuICAgIHB1YmxpYyBiYWxhbmNlTWV0aG9kUmVqZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgc2hvd01ldGhvZEVycm9yID0gZmFsc2U7XG4gICAgcHVibGljIHNlbGVjdGVkTWV0aG9kQ29kZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgcHVibGljIGN1cnJlbnRNZXRob2Q6IGFueSA9IG51bGw7XG4gICAgcHJpdmF0ZSBsYXN0QWRkcmVzc0tleTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgcHVibGljIHZhbGlkYXRpbmdNZXRob2RDb2RlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBwdWJsaWMgaW52YWxpZE1ldGhvZHNCYWxhbmNlOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xuICAgIHB1YmxpYyBpbnZhbGlkTWV0aG9kc0JhY2tlbmQ6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XG4gICAgcHJpdmF0ZSBwYXltZW50TWV0aG9kczogYW55W10gPSBbXTtcbiAgICBwcml2YXRlIGJhbGFuY2VDdXN0b21lcjogYW55ID0gbnVsbDtcbiAgICBwdWJsaWMgcGF5bWVudExvY2tlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgYXV0b0NvbXBsZXRpbmcgPSBmYWxzZTtcbiAgICBwcml2YXRlIGxhc3RTYXZlZE1ldGhvZENvZGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgaXNEaXJ0eSA9IGZhbHNlO1xuICAgIHByaXZhdGUgc3VwcHJlc3NEaXJ0eSA9IGZhbHNlO1xuXG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJvdGVjdGVkIHRvYXN0cjogVG9hc3RTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgcGF5bWVudFNlcnZpY2U6IFBheW1lbnRTZXJ2aWNlLCBwdWJsaWMgY2hlY2tvdXRTZXJ2aWNlOiBDaGVja291dFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlLCBwcml2YXRlIGNvbnN0czogQ29uc3RhbnRzLCBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZWNPbkNvbnN0cnVjdCgpXG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoKSB7IH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnBheW1lbnRTZXJ2aWNlLmluaXRpYWxpemUodGhpcy5zdGVwX2lkKTtcbiAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UuYXNvY2lhdGVkRGF0YSQuc3Vic2NyaWJlKChkYXRhOiBDaGVja291dERhdGFbXSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdG90YWxJdGVtID0gKGRhdGEgfHwgW10pLmZpbmQoaXRlbSA9PiBpdGVtLnR5cGUgPT0gJ3RvdGFsJyk7XG4gICAgICAgICAgICB0aGlzLnRvdGFsX2Ftb3VudCA9IHRvdGFsSXRlbSA/IHRvdGFsSXRlbS5hbW91bnQgOiAwO1xuICAgICAgICB9KVxuXG4gICAgICAgIGlmICghdGhpcy5jb21wYWN0UGF5bWVudFZpZXcpIHtcbiAgICAgICAgICAgIHRoaXMucGF5bWVudFNlcnZpY2UuZ2V0UGF5bWVudE1ldGhvZHMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLnN0YXRlJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkZHJlc3NEYXRhID0gdGhpcy5jaGVja291dFNlcnZpY2UuZ2V0U3RlcERhdGEoJ2FkZHJlc3MnKTtcbiAgICAgICAgICAgICAgICBpZiAoIWFkZHJlc3NEYXRhKSByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoYWRkcmVzc0RhdGEpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxhc3RBZGRyZXNzS2V5ID09PSBrZXkpIHJldHVybjtcbiAgICAgICAgICAgICAgICB0aGlzLmxhc3RBZGRyZXNzS2V5ID0ga2V5O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS5zdGF0ZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5jb21wYWN0UGF5bWVudFZpZXcpIHJldHVybjtcbiAgICAgICAgICAgIHRoaXMucGF5bWVudExvY2tlZCA9ICF0aGlzLmNoZWNrb3V0U2VydmljZS5pc1N0ZXBSZWFkeSgnc2hpcG1lbnQnKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLnN0YXRlJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbXBhY3RQYXltZW50VmlldykgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmNoZWNrb3V0U2VydmljZS5pc1N0ZXBSZWFkeSgncGF5bWVudCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTYXZlZE1ldGhvZENvZGUobnVsbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc3RlcERhdGE6IGFueSA9IHRoaXMuY2hlY2tvdXRTZXJ2aWNlLmdldFN0ZXBEYXRhKCdwYXltZW50JyBhcyBhbnkpO1xuICAgICAgICAgICAgY29uc3QgY29kZSA9IHN0ZXBEYXRhPy5jb2RlIHx8IHN0ZXBEYXRhPy5tZXRob2Q/LmNvZGUgfHwgc3RlcERhdGE/Lm1ldGhvZF9jb2RlIHx8IG51bGw7XG4gICAgICAgICAgICBpZiAoY29kZSAmJiB0aGlzLmxhc3RTYXZlZE1ldGhvZENvZGUgIT09IGNvZGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFNhdmVkTWV0aG9kQ29kZShjb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5hbGxvd0FueVBheW1lbnRNZXRob2QkLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWxsb3dBbnlQYXltZW50TWV0aG9kID0gdmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnBheW1lbnRTZXJ2aWNlLm1ldGhvZHMkLnN1YnNjcmliZShtZXRob2RzID0+IHtcbiAgICAgICAgICAgIHRoaXMucGF5bWVudE1ldGhvZHMgPSBtZXRob2RzIHx8IFtdO1xuICAgICAgICAgICAgaWYgKHRoaXMuY29tcGFjdFBheW1lbnRWaWV3KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnZhbGlkTWV0aG9kc0JhY2tlbmQgPSB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudXBkYXRlQmFsYW5jZUJhc2VkSW52YWxpZE1ldGhvZHMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY2FydFNlcnZpY2UuYmFsYW5jZUN1c3RvbWVyJC5zdWJzY3JpYmUoYmFsYW5jZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmJhbGFuY2VDdXN0b21lciA9IGJhbGFuY2U7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUJhbGFuY2VCYXNlZEludmFsaWRNZXRob2RzKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm1ldGhvZF9kYXRhJC5zdWJzY3JpYmUobWV0aG9kID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudE1ldGhvZCA9IG1ldGhvZDtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZWNPbkluaXQoKVxuXG4gICAgfVxuXG4gICAgYWxsRGF0YSA9ICgpID0+ICh7XG4gICAgICAgIC4uLnRoaXMucGF5bWVudFNlcnZpY2UuZ2V0VXNlckRhdGEoKS5zaGlwcGluZ0FkZHJlc3MsXG4gICAgICAgIC4uLnRoaXMucGF5bWVudFNlcnZpY2UuZ2V0U2hpcG1lbnREYXRhKCksXG4gICAgfSk7XG5cbiAgICBnZXRQYXltZW50SW1hZ2VVcmwgPSAoaW1hZ2U6IGFueSk6IHN0cmluZyA9PiB7XG4gICAgICAgIGNvbnN0IHJhd1BhdGggPSBpbWFnZT8ucGF0aCB8fCBpbWFnZT8udXJsIHx8IGltYWdlPy5zcmMgfHwgaW1hZ2U7XG4gICAgICAgIGlmICghcmF3UGF0aCB8fCB0eXBlb2YgcmF3UGF0aCAhPT0gJ3N0cmluZycpIHJldHVybiAnJztcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSByYXdQYXRoLnN0YXJ0c1dpdGgoJy9tZWRpYS9pbWFnZS8nKVxuICAgICAgICAgICAgPyByYXdQYXRoLnJlcGxhY2UoJy9tZWRpYS9pbWFnZS8nLCAnJylcbiAgICAgICAgICAgIDogcmF3UGF0aDtcbiAgICAgICAgaWYgKC9eaHR0cHM/OlxcL1xcLy9pLnRlc3Qobm9ybWFsaXplZFBhdGgpKSByZXR1cm4gbm9ybWFsaXplZFBhdGg7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnN0cy5tZWRpYVVybCgpICsgbm9ybWFsaXplZFBhdGg7XG4gICAgfVxuXG4gICAgc2V0RXJyb3IgPSAobWVzc2FnZSkgPT4ge1xuICAgICAgICB0aGlzLmVycm9yID0gbWVzc2FnZTtcbiAgICB9XG5cbiAgICBlbWl0UmVzdWx0ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBtZXRob2REYXRhID0gdGhpcy5tZXRob2REYXRhU3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBhdXRvQ29tcGxldGUgPSB0aGlzLmNvbXBhY3RQYXltZW50VmlldyAmJiB0aGlzLmlzQXV0b0NvbXBsZXRlTWV0aG9kKG1ldGhvZERhdGEpO1xuICAgICAgICBjb25zdCBzdGVwRGF0YSA9IG1ldGhvZERhdGEgPyB7IC4uLm1ldGhvZERhdGEsIGF1dG9Db21wbGV0ZSB9IDogbWV0aG9kRGF0YTtcbiAgICAgICAgdGhpcy5wYXltZW50U2VydmljZS5zZXRTdGVwUmVhZHkoc3RlcERhdGEsIG51bGwpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMuc2V0U2F2ZWRNZXRob2RDb2RlKG1ldGhvZERhdGE/LmNvZGUgfHwgbnVsbCk7XG4gICAgICAgICAgICBpZiAoYXV0b0NvbXBsZXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maW5hbGl6ZUNoZWNrb3V0RnJvbVBheW1lbnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5hbGl6ZUNoZWNrb3V0RnJvbVBheW1lbnQgPSAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmF1dG9Db21wbGV0aW5nKSByZXR1cm47XG4gICAgICAgIHRoaXMuYXV0b0NvbXBsZXRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS5jb21wbGV0ZSgpLnRoZW4oXG4gICAgICAgICAgICByZXMgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXM/Lm9rKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnY2hlY2tvdXQvb3JkZXJfc3VjY2VzcyddKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5zaG93KCdvcGVyYXRpb24tZXJyb3InKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRvQ29tcGxldGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdygnb3BlcmF0aW9uLWVycm9yJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5hdXRvQ29tcGxldGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHNldExvYWRpbmcgPSAoZXN0YWRvID0gdHJ1ZSkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZXN0YWRvKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgdmVyaWZ5VmFsaWRhdGUgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0TG9hZGluZygpXG4gICAgICAgIHNldFRpbWVvdXQociA9PiB0aGlzLmVtaXRSZXN1bHQoKSwgMTAwMCk7XG4gICAgfVxuXG4gICAgc2V0TWV0aG9kID0gYXN5bmMgKG1ldGhvZCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jb21wYWN0UGF5bWVudFZpZXcgJiYgdGhpcy5zZWxlY3RlZE1ldGhvZENvZGUgPT09IG1ldGhvZD8uY29kZSAmJiAhdGhpcy5sb2FkaW5nX2ludGVybmFsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY29tcGFjdFBheW1lbnRWaWV3ICYmIHRoaXMucGF5bWVudExvY2tlZCkge1xuICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdygnc2hpcG1lbnQtbWV0aG9kLXJlcXVpcmVkJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY29tcGFjdFBheW1lbnRWaWV3ICYmIHRoaXMuaXNQYXltZW50TWV0aG9kRGlzYWJsZWQobWV0aG9kKSkge1xuICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdygndGhpcy1wYXltZW50LW1ldGhvZC1jYW5ub3QtYmUtdXNlZCcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9hZGluZ19pbnRlcm5hbCA9IHRydWU7XG4gICAgICAgIHRoaXMudmFsaWRhdGluZ01ldGhvZENvZGUgPSBtZXRob2Q/LmNvZGUgfHwgbnVsbDtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1ldGhvZENvZGUgPSBtZXRob2Q/LmNvZGUgfHwgbnVsbDtcbiAgICAgICAgdGhpcy5ldmFsdWF0ZURpcnR5Rm9yU2VsZWN0aW9uKG1ldGhvZD8uY29kZSB8fCBudWxsKTtcbiAgICAgICAgdGhpcy5tZXRob2REYXRhU3ViamVjdC5uZXh0KG51bGwpO1xuICAgICAgICB0aGlzLnNob3dNZXRob2RFcnJvciA9IGZhbHNlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5wYXltZW50U2VydmljZS5wdXRQYXltZW50KG1ldGhvZC5jb2RlKTtcblxuICAgICAgICAgICAgY29uc3QgYmFsYW5jZUN1c3RvbWVyID0gcmVzdWx0Py5iYWxhbmNlQ3VzdG9tZXI7XG5cbiAgICAgICAgICAgIGNvbnN0IHRvdGFscyA9IHJlc3VsdD8udG90YWxzO1xuXG4gICAgICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLnVwZGF0ZUJhbGFuY2VBdHRyaWJ1dGVzKGJhbGFuY2VDdXN0b21lciwgdG90YWxzPy50b3RhbCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGlzQmFsYW5jZU1ldGhvZCA9IHRoaXMuaXNCYWxhbmNlSW5BY2NvdW50KG1ldGhvZC5jb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IGFsbG93QW55ID0gYmFsYW5jZUN1c3RvbWVyPy5hbGxvd0FueVBheW1lbnRNZXRob2Q7XG5cbiAgICAgICAgICAgIC8vIFZhbGlkYWNpb25lcyBkZSBlcnJvclxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIChiYWxhbmNlQ3VzdG9tZXIgJiYgYWxsb3dBbnkgPT09IGZhbHNlICYmICFpc0JhbGFuY2VNZXRob2QpIHx8IC8vIG5vIHBlcm1pdGUgb3RybyBtw6l0b2RvXG4gICAgICAgICAgICAgICAgKGlzQmFsYW5jZU1ldGhvZCAmJiAhYmFsYW5jZUN1c3RvbWVyKSAvLyBzZWxlY2Npb27DsyBjdWVudGEgY29ycmllbnRlIHBlcm8gbm8gaGF5IGJhbGFuY2VcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlTWV0aG9kRXJyb3IoJ3RoaXMtcGF5bWVudC1tZXRob2QtY2Fubm90LWJlLXVzZWQnLCBtZXRob2QpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbXBhY3RQYXltZW50VmlldyAmJiBtZXRob2Q/LmNvZGUpIHtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBWYWxpZGFjacOzbiBkZSBjcsOpZGl0byBpbnN1ZmljaWVudGUgKHNpIG5vIHNlIHB1ZWRlIGV4Y2VkZXIpXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgaXNCYWxhbmNlTWV0aG9kICYmXG4gICAgICAgICAgICAgICAgYmFsYW5jZUN1c3RvbWVyICYmXG4gICAgICAgICAgICAgICAgdG90YWxzICYmXG4gICAgICAgICAgICAgICAgYmFsYW5jZUN1c3RvbWVyLmFsbG93RXhjZWVkQmFsYW5jZSA9PT0gZmFsc2UgJiZcbiAgICAgICAgICAgICAgICBiYWxhbmNlQ3VzdG9tZXIuY3JlZGl0QW1vdW50IDwgdG90YWxzLnRvdGFsXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5zaG93KCdpbnN1ZmZpY2llbnRfY3JlZGl0Jyk7XG4gICAgICAgICAgICAgICAgdGhpcy5iYWxhbmNlTWV0aG9kUmVqZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0JhbGFuY2VNZXRob2QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJhbGFuY2VNZXRob2RSZWplY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm1ldGhvZERhdGFTdWJqZWN0Lm5leHQobWV0aG9kKTtcbiAgICAgICAgICAgIC8vIHRoaXMuaXNNUChtZXRob2QuY29kZSkgJiYgdGhpcy5nZXRQcmVmZXJlbmNlKCk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdfaW50ZXJuYWwgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGluZ01ldGhvZENvZGUgPSBudWxsO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHByaXZhdGUgc2V0RGlydHlTdGF0ZSA9IChuZXh0RGlydHk6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNEaXJ0eSA9PT0gbmV4dERpcnR5KSByZXR1cm47XG4gICAgICAgIHRoaXMuaXNEaXJ0eSA9IG5leHREaXJ0eTtcbiAgICAgICAgdGhpcy5kaXJ0eUNoYW5nZS5lbWl0KHRoaXMuaXNEaXJ0eSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRTYXZlZE1ldGhvZENvZGUgPSAoY29kZTogc3RyaW5nIHwgbnVsbCkgPT4ge1xuICAgICAgICB0aGlzLmxhc3RTYXZlZE1ldGhvZENvZGUgPSBjb2RlO1xuICAgICAgICB0aGlzLnNldERpcnR5U3RhdGUoZmFsc2UpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXZhbHVhdGVEaXJ0eUZvclNlbGVjdGlvbiA9IChjb2RlOiBzdHJpbmcgfCBudWxsKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5jb21wYWN0UGF5bWVudFZpZXcgfHwgdGhpcy5zdXBwcmVzc0RpcnR5KSByZXR1cm47XG4gICAgICAgIGlmICghdGhpcy5jaGVja291dFNlcnZpY2UuaXNTdGVwUmVhZHkoJ3BheW1lbnQnKSkge1xuICAgICAgICAgICAgdGhpcy5zZXREaXJ0eVN0YXRlKGZhbHNlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWNvZGUgfHwgIXRoaXMubGFzdFNhdmVkTWV0aG9kQ29kZSkge1xuICAgICAgICAgICAgdGhpcy5zZXREaXJ0eVN0YXRlKGZhbHNlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldERpcnR5U3RhdGUoY29kZSAhPT0gdGhpcy5sYXN0U2F2ZWRNZXRob2RDb2RlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGlzY2FyZENoYW5nZXMgPSAoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5jb21wYWN0UGF5bWVudFZpZXcpIHJldHVybjtcbiAgICAgICAgaWYgKCF0aGlzLmxhc3RTYXZlZE1ldGhvZENvZGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RGlydHlTdGF0ZShmYWxzZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWV0aG9kID0gdGhpcy5wYXltZW50TWV0aG9kcy5maW5kKG0gPT4gbT8uY29kZSA9PT0gdGhpcy5sYXN0U2F2ZWRNZXRob2RDb2RlKSB8fCBudWxsO1xuICAgICAgICB0aGlzLnN1cHByZXNzRGlydHkgPSB0cnVlO1xuICAgICAgICB0aGlzLnNlbGVjdGVkTWV0aG9kQ29kZSA9IHRoaXMubGFzdFNhdmVkTWV0aG9kQ29kZTtcbiAgICAgICAgdGhpcy5tZXRob2REYXRhU3ViamVjdC5uZXh0KG1ldGhvZCk7XG4gICAgICAgIHRoaXMuY3VycmVudE1ldGhvZCA9IG1ldGhvZDtcbiAgICAgICAgdGhpcy5zaG93TWV0aG9kRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5iYWxhbmNlTWV0aG9kUmVqZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy52YWxpZGF0aW5nTWV0aG9kQ29kZSA9IG51bGw7XG4gICAgICAgIGlmIChtZXRob2Q/LmNvZGUpIHtcbiAgICAgICAgICAgIHRoaXMucGF5bWVudFNlcnZpY2UucHV0UGF5bWVudChtZXRob2QuY29kZSlcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VwcHJlc3NEaXJ0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldERpcnR5U3RhdGUoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdXBwcmVzc0RpcnR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RGlydHlTdGF0ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdXBwcmVzc0RpcnR5ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2V0RGlydHlTdGF0ZShmYWxzZSk7XG4gICAgfVxuXG4gICAgaXNQYXltZW50TWV0aG9kRGlzYWJsZWQgPSAobWV0aG9kOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKCFtZXRob2Q/LmNvZGUpIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuICEhKHRoaXMuaW52YWxpZE1ldGhvZHNCYWxhbmNlW21ldGhvZC5jb2RlXSB8fCB0aGlzLmludmFsaWRNZXRob2RzQmFja2VuZFttZXRob2QuY29kZV0pO1xuICAgIH1cblxuICAgIHVwZGF0ZUJhbGFuY2VCYXNlZEludmFsaWRNZXRob2RzID0gKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuY29tcGFjdFBheW1lbnRWaWV3KSByZXR1cm47XG4gICAgICAgIGNvbnN0IGJhbGFuY2UgPSB0aGlzLmJhbGFuY2VDdXN0b21lcjtcbiAgICAgICAgY29uc3QgbmV4dDogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcbiAgICAgICAgaWYgKGJhbGFuY2UpIHtcbiAgICAgICAgICAgIGlmIChiYWxhbmNlLmFsbG93QW55UGF5bWVudE1ldGhvZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBheW1lbnRNZXRob2RzLmZvckVhY2gobWV0aG9kID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzQmFsYW5jZUluQWNjb3VudChtZXRob2QuY29kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRbbWV0aG9kLmNvZGVdID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW52YWxpZE1ldGhvZHNCYWxhbmNlID0gbmV4dDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZU1ldGhvZEVycm9yKG1lc3NhZ2U6IHN0cmluZywgbWV0aG9kOiBhbnkpIHtcbiAgICAgICAgdGhpcy5zaG93TWV0aG9kRXJyb3IgPSB0cnVlO1xuICAgICAgICB0aGlzLnRvYXN0ci5zaG93KG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLm1ldGhvZERhdGFTdWJqZWN0Lm5leHQobWV0aG9kKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1ldGhvZENvZGUgPSBtZXRob2Q/LmNvZGUgfHwgbnVsbDtcbiAgICB9XG5cbiAgICBzZXRBY3RpdmUoZSkge1xuICAgICAgICBjb25zdCBwYXJlbnQgPSBlLnRhcmdldC5wYXJlbnRFbGVtZW50LmNoaWxkcmVuO1xuICAgICAgICBmb3IgKGNvbnN0IGJ1dHRvbiBvZiBwYXJlbnQpIHtcbiAgICAgICAgICAgIGlmIChidXR0b24uY2xhc3NMaXN0LmNvbnRhaW5zKCdhY3RpdmUnKSkge1xuICAgICAgICAgICAgICAgIGJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGUudGFyZ2V0LmNsYXNzTGlzdC5hZGQoXCJhY3RpdmVcIilcbiAgICB9XG5cbiAgICBzdWJtaXRGb3JtID0gKGV2ZW50KSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiRVZFTlRcIiwgZXZlbnQpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZygnU0UgUk9NT1BJTyBFTCBQUkVWRU5UIERFRkFVTFQnKVxuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBnZXRQSyA9IChtZXRob2QpID0+IChtZXRob2QuY29uZmlnLnB1YmxpY19rZXkgfHwgbWV0aG9kLnB1YmxpY19rZXkpO1xuXG4gICAgaXNSZWRpcmVjdFJlZHN5cyA9IChjb2RlOiBzdHJpbmcpID0+IGNvZGUgJiYgY29kZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKCdyZWRzeXNfcmVkaXJlY3QnKTtcblxuICAgIGlzUmVkaXJlY3RDZWNhQmFuayA9IChjb2RlOiBzdHJpbmcpID0+IGNvZGUgJiYgY29kZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKCdjZWNhX2JhbmtfcmVkaXJlY3QnKTtcblxuICAgIGlzTVAgPSAoY29kZTogc3RyaW5nKSA9PiBjb2RlICYmIGNvZGUudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcygnbWVyY2Fkb19wYWdvJykgJiYgIWNvZGUudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcygnY3JlZGl0Jyk7XG5cbiAgICBpc01QVGFyamV0YURlQ3JlZGl0byA9IChjb2RlOiBzdHJpbmcpID0+IGNvZGUgJiYgY29kZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKCdjcmVkaXQnKTtcblxuICAgIGlzTWV0aG9kT2ZmbGluZSA9IChjb2RlOiBzdHJpbmcpID0+IGNvZGUgJiYgY29kZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKCdvZmZsaW5lJyk7XG5cbiAgICBpc1BleVBhbEV4cHJlc3MgPSAoY29kZTogc3RyaW5nKSA9PiBjb2RlICYmIGNvZGUudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcygncGF5cGFsJykgJiYgY29kZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKCdleHByZXNzJyk7XG5cbiAgICBpc01vYmJleCA9IChjb2RlOiBzdHJpbmcpID0+IGNvZGUgJiYgY29kZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKCdtb2JiZXgnKTtcblxuICAgIGlzQmFuY2FyZCA9IChjb2RlOiBzdHJpbmcpID0+IGNvZGUgJiYgY29kZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKCdiYW5jYXJkJyk7XG5cbiAgICBpc0RlY2lkaXIgPSAoY29kZTogc3RyaW5nKSA9PiBjb2RlICYmIGNvZGUudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcygnZGVjaWRpcicpO1xuXG4gICAgaXNDdWxxaSA9IChjb2RlOiBzdHJpbmcpID0+IGNvZGUgJiYgY29kZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKCdjdWxxaScpO1xuXG4gICAgaXNCYW5rVHJhbnNmZXIgPSAoY29kZTogc3RyaW5nKSA9PiBjb2RlICYmIGNvZGUudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcygnYmFua190cmFuc2ZlcicpXG5cbiAgICBpc0NhdGFzdHJvID0gKGNvZGU6IHN0cmluZykgPT4gY29kZSAmJiBjb2RlLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2NhdGFzdHJvJylcblxuICAgIGlzQmFtYm9vID0gKGNvZGU6IHN0cmluZykgPT4gY29kZSAmJiBjb2RlLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2JhbWJvbycpXG5cbiAgICBpc1BsYWNlVG9QYXkgPSAoY29kZTogc3RyaW5nKSA9PiBjb2RlICYmIGNvZGUudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcygncGxhY2VfdG9fcGF5JylcblxuICAgIGlzQmFsYW5jZUluQWNjb3VudCA9IChjb2RlOiBzdHJpbmcpID0+IGNvZGUgJiYgY29kZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKCdiYWxhbmNlX2luX2FjY291bnQnKVxuXG4gICAgZ2V0UEtDdWxxaSA9IG1ldGhvZCA9PiB7XG4gICAgICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnZWFzeWNvbW1lcmNldGVjaCcpXG4gICAgICAgICAgICA/IG1ldGhvZC5jb25maWcucHVibGljX3Rlc3Rpbmdfa2V5XG4gICAgICAgICAgICA6IG1ldGhvZC5jb25maWcucHVibGljX3Byb2R1Y3Rpb25fa2V5XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0F1dG9Db21wbGV0ZU1ldGhvZCA9IChtZXRob2Q6IGFueSkgPT4ge1xuICAgICAgICBpZiAoIW1ldGhvZD8uY29kZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjb25zdCBjb2RlID0gbWV0aG9kLmNvZGU7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLmlzTVAoY29kZSkgfHxcbiAgICAgICAgICAgIHRoaXMuaXNSZWRpcmVjdFJlZHN5cyhjb2RlKSB8fFxuICAgICAgICAgICAgdGhpcy5pc1JlZGlyZWN0Q2VjYUJhbmsoY29kZSkgfHxcbiAgICAgICAgICAgIHRoaXMuaXNQZXlQYWxFeHByZXNzKGNvZGUpIHx8XG4gICAgICAgICAgICB0aGlzLmlzUGxhY2VUb1BheShjb2RlKVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
396
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvZWMtY29tcG9uZW50L2NoZWNrb3V0LWVjL3BheW1lbnQtZWMvcGF5bWVudC1lYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFpQixNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQVNqRCxJQUFhLGtCQUFrQixHQUEvQixNQUFhLGtCQUFtQixTQUFRLGVBQWU7SUFxQ25ELFlBQXNCLFFBQW1CLEVBQVksTUFBb0IsRUFDOUQsY0FBOEIsRUFBUyxlQUFnQyxFQUN0RSxXQUF3QixFQUFVLE1BQWlCLEVBQVUsTUFBYztRQUNuRixLQUFLLEVBQUUsQ0FBQztRQUhVLGFBQVEsR0FBUixRQUFRLENBQVc7UUFBWSxXQUFNLEdBQU4sTUFBTSxDQUFjO1FBQzlELG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFTLG9C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ZUFBZTtZQUN6RCxXQUFXO1lBQWtCLFNBQVM7WUFBa0IsTUFBTTs7QUFyQzlFO0lBQVIsS0FBSyxFQUFFO21EQUFTO0FBQ1I7SUFBUixLQUFLLEVBQUU7OERBQXFDO0FBQ25DO0lBQVQsTUFBTSxFQUFFO3VEQUEyQztBQUN4QjtJQUEzQixTQUFTLENBQUMsZUFBZSxDQUFDOzhEQUEwQztBQUw1RCxrQkFBa0I7SUFQOUIsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLGdCQUFnQjtRQUMxQixncnJCQUF3QztRQUV4QyxTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUM7O0tBRTlCLENBQUM7R0FDVyxrQkFBa0IsQ0EyWDlCO1NBM1hZLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgUmVuZGVyZXIyLCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbXBvbmVudEhlbHBlciB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvY29tcG9uZW50LWhlbHBlcic7XG5pbXBvcnQgeyBDaGVja291dERhdGEgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2NoZWNrb3V0LWRhdGEnO1xuaW1wb3J0IHsgQ2hlY2tvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2hlY2tvdXQvY2hlY2tvdXQuc2VydmljZSc7XG5pbXBvcnQgeyBQYXltZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NoZWNrb3V0L3BheW1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi91dGlscy90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2FydC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uLy4uLy4uL2NvcmUuY29uc3RzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtcGF5bWVudC1lYycsXG4gICAgdGVtcGxhdGVVcmw6ICdwYXltZW50LWVjLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsncGF5bWVudC1lYy5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1BheW1lbnRTZXJ2aWNlXVxuXG59KVxuZXhwb3J0IGNsYXNzIFBheW1lbnRFY0NvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEhlbHBlciBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0IHtcblxuICAgIEBJbnB1dCgpIHN0ZXBfaWQ7XG4gICAgQElucHV0KCkgY29tcGFjdFBheW1lbnRWaWV3OiBib29sZWFuID0gZmFsc2U7XG4gICAgQE91dHB1dCgpIGRpcnR5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBWaWV3Q2hpbGQoJ2Zvcm1Db250YWluZXInKSBwcm90ZWN0ZWQgbWVyY2Fkb3BhZ29fYnV0dG9uOiBFbGVtZW50UmVmO1xuICAgIHByb3RlY3RlZCBtZXRob2REYXRhU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgICBwcml2YXRlIGxvYWRpbmdTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJvdGVjdGVkIHByZWZlcmVuY2U7XG5cblxuICAgIHB1YmxpYyBsb2FkaW5nX2ludGVybmFsID0gZmFsc2U7XG4gICAgcHVibGljIG9yZGVyX2lkO1xuICAgIHB1YmxpYyBlcnJvcjtcbiAgICBwdWJsaWMgbG9hZGluZyA9IHRydWU7XG4gICAgcHVibGljIGxvYWRpbmdfaW50ZXJuYWxfbXAgPSBmYWxzZTtcbiAgICBwdWJsaWMgbWV0aG9kX2RhdGEkID0gdGhpcy5tZXRob2REYXRhU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgbG9hZGluZyQgPSB0aGlzLmxvYWRpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyB0b3RhbF9hbW91bnQ7XG4gICAgcHVibGljIGFsbG93QW55UGF5bWVudE1ldGhvZDogYm9vbGVhbiB8IG51bGwgPSBudWxsO1xuICAgIHB1YmxpYyBiYWxhbmNlTWV0aG9kUmVqZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgc2hvd01ldGhvZEVycm9yID0gZmFsc2U7XG4gICAgcHVibGljIHNlbGVjdGVkTWV0aG9kQ29kZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgcHVibGljIGN1cnJlbnRNZXRob2Q6IGFueSA9IG51bGw7XG4gICAgcHJpdmF0ZSBsYXN0QWRkcmVzc0tleTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgcHVibGljIHZhbGlkYXRpbmdNZXRob2RDb2RlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBwdWJsaWMgaW52YWxpZE1ldGhvZHNCYWxhbmNlOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xuICAgIHB1YmxpYyBpbnZhbGlkTWV0aG9kc0JhY2tlbmQ6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XG4gICAgcHJpdmF0ZSBwYXltZW50TWV0aG9kczogYW55W10gPSBbXTtcbiAgICBwcml2YXRlIGJhbGFuY2VDdXN0b21lcjogYW55ID0gbnVsbDtcbiAgICBwdWJsaWMgcGF5bWVudExvY2tlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgYXV0b0NvbXBsZXRpbmcgPSBmYWxzZTtcbiAgICBwcml2YXRlIGxhc3RTYXZlZE1ldGhvZENvZGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgaXNEaXJ0eSA9IGZhbHNlO1xuICAgIHByaXZhdGUgc3VwcHJlc3NEaXJ0eSA9IGZhbHNlO1xuXG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJvdGVjdGVkIHRvYXN0cjogVG9hc3RTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgcGF5bWVudFNlcnZpY2U6IFBheW1lbnRTZXJ2aWNlLCBwdWJsaWMgY2hlY2tvdXRTZXJ2aWNlOiBDaGVja291dFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlLCBwcml2YXRlIGNvbnN0czogQ29uc3RhbnRzLCBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZWNPbkNvbnN0cnVjdCgpXG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoKSB7IH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnBheW1lbnRTZXJ2aWNlLmluaXRpYWxpemUodGhpcy5zdGVwX2lkKTtcbiAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UuYXNvY2lhdGVkRGF0YSQuc3Vic2NyaWJlKChkYXRhOiBDaGVja291dERhdGFbXSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdG90YWxJdGVtID0gKGRhdGEgfHwgW10pLmZpbmQoaXRlbSA9PiBpdGVtLnR5cGUgPT0gJ3RvdGFsJyk7XG4gICAgICAgICAgICB0aGlzLnRvdGFsX2Ftb3VudCA9IHRvdGFsSXRlbSA/IHRvdGFsSXRlbS5hbW91bnQgOiAwO1xuICAgICAgICB9KVxuXG4gICAgICAgIGlmICghdGhpcy5jb21wYWN0UGF5bWVudFZpZXcpIHtcbiAgICAgICAgICAgIHRoaXMucGF5bWVudFNlcnZpY2UuZ2V0UGF5bWVudE1ldGhvZHMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLnN0YXRlJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkZHJlc3NEYXRhID0gdGhpcy5jaGVja291dFNlcnZpY2UuZ2V0U3RlcERhdGEoJ2FkZHJlc3MnKTtcbiAgICAgICAgICAgICAgICBpZiAoIWFkZHJlc3NEYXRhKSByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoYWRkcmVzc0RhdGEpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxhc3RBZGRyZXNzS2V5ID09PSBrZXkpIHJldHVybjtcbiAgICAgICAgICAgICAgICB0aGlzLmxhc3RBZGRyZXNzS2V5ID0ga2V5O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS5zdGF0ZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5jb21wYWN0UGF5bWVudFZpZXcpIHJldHVybjtcbiAgICAgICAgICAgIHRoaXMucGF5bWVudExvY2tlZCA9ICF0aGlzLmNoZWNrb3V0U2VydmljZS5pc1N0ZXBSZWFkeSgnc2hpcG1lbnQnKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLnN0YXRlJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbXBhY3RQYXltZW50VmlldykgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmNoZWNrb3V0U2VydmljZS5pc1N0ZXBSZWFkeSgncGF5bWVudCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTYXZlZE1ldGhvZENvZGUobnVsbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc3RlcERhdGE6IGFueSA9IHRoaXMuY2hlY2tvdXRTZXJ2aWNlLmdldFN0ZXBEYXRhKCdwYXltZW50JyBhcyBhbnkpO1xuICAgICAgICAgICAgY29uc3QgY29kZSA9IHN0ZXBEYXRhPy5jb2RlIHx8IHN0ZXBEYXRhPy5tZXRob2Q/LmNvZGUgfHwgc3RlcERhdGE/Lm1ldGhvZF9jb2RlIHx8IG51bGw7XG4gICAgICAgICAgICBpZiAoY29kZSAmJiB0aGlzLmxhc3RTYXZlZE1ldGhvZENvZGUgIT09IGNvZGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFNhdmVkTWV0aG9kQ29kZShjb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5hbGxvd0FueVBheW1lbnRNZXRob2QkLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWxsb3dBbnlQYXltZW50TWV0aG9kID0gdmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnBheW1lbnRTZXJ2aWNlLm1ldGhvZHMkLnN1YnNjcmliZShtZXRob2RzID0+IHtcbiAgICAgICAgICAgIHRoaXMucGF5bWVudE1ldGhvZHMgPSBtZXRob2RzIHx8IFtdO1xuICAgICAgICAgICAgaWYgKHRoaXMuY29tcGFjdFBheW1lbnRWaWV3KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnZhbGlkTWV0aG9kc0JhY2tlbmQgPSB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudXBkYXRlQmFsYW5jZUJhc2VkSW52YWxpZE1ldGhvZHMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY2FydFNlcnZpY2UuYmFsYW5jZUN1c3RvbWVyJC5zdWJzY3JpYmUoYmFsYW5jZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmJhbGFuY2VDdXN0b21lciA9IGJhbGFuY2U7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUJhbGFuY2VCYXNlZEludmFsaWRNZXRob2RzKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm1ldGhvZF9kYXRhJC5zdWJzY3JpYmUobWV0aG9kID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudE1ldGhvZCA9IG1ldGhvZDtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZWNPbkluaXQoKVxuXG4gICAgfVxuXG4gICAgYWxsRGF0YSA9ICgpID0+ICh7XG4gICAgICAgIC4uLnRoaXMucGF5bWVudFNlcnZpY2UuZ2V0VXNlckRhdGEoKS5zaGlwcGluZ0FkZHJlc3MsXG4gICAgICAgIC4uLnRoaXMucGF5bWVudFNlcnZpY2UuZ2V0U2hpcG1lbnREYXRhKCksXG4gICAgfSk7XG5cbiAgICBnZXRQYXltZW50SW1hZ2VVcmwgPSAoaW1hZ2U6IGFueSk6IHN0cmluZyA9PiB7XG4gICAgICAgIGNvbnN0IHJhd1BhdGggPSBpbWFnZT8ucGF0aCB8fCBpbWFnZT8udXJsIHx8IGltYWdlPy5zcmMgfHwgaW1hZ2U7XG4gICAgICAgIGlmICghcmF3UGF0aCB8fCB0eXBlb2YgcmF3UGF0aCAhPT0gJ3N0cmluZycpIHJldHVybiAnJztcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSByYXdQYXRoLnN0YXJ0c1dpdGgoJy9tZWRpYS9pbWFnZS8nKVxuICAgICAgICAgICAgPyByYXdQYXRoLnJlcGxhY2UoJy9tZWRpYS9pbWFnZS8nLCAnJylcbiAgICAgICAgICAgIDogcmF3UGF0aDtcbiAgICAgICAgaWYgKC9eaHR0cHM/OlxcL1xcLy9pLnRlc3Qobm9ybWFsaXplZFBhdGgpKSByZXR1cm4gbm9ybWFsaXplZFBhdGg7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnN0cy5tZWRpYVVybCgpICsgbm9ybWFsaXplZFBhdGg7XG4gICAgfVxuXG4gICAgc2V0RXJyb3IgPSAobWVzc2FnZSkgPT4ge1xuICAgICAgICB0aGlzLmVycm9yID0gbWVzc2FnZTtcbiAgICB9XG5cbiAgICBlbWl0UmVzdWx0ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBtZXRob2REYXRhID0gdGhpcy5tZXRob2REYXRhU3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBhdXRvQ29tcGxldGUgPSB0aGlzLmNvbXBhY3RQYXltZW50VmlldyAmJiB0aGlzLmlzQXV0b0NvbXBsZXRlTWV0aG9kKG1ldGhvZERhdGEpO1xuICAgICAgICBjb25zdCBzdGVwRGF0YSA9IG1ldGhvZERhdGEgPyB7IC4uLm1ldGhvZERhdGEsIGF1dG9Db21wbGV0ZSB9IDogbWV0aG9kRGF0YTtcbiAgICAgICAgdGhpcy5wYXltZW50U2VydmljZS5zZXRTdGVwUmVhZHkoc3RlcERhdGEsIG51bGwpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMuc2V0U2F2ZWRNZXRob2RDb2RlKG1ldGhvZERhdGE/LmNvZGUgfHwgbnVsbCk7XG4gICAgICAgICAgICBpZiAoYXV0b0NvbXBsZXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maW5hbGl6ZUNoZWNrb3V0RnJvbVBheW1lbnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5hbGl6ZUNoZWNrb3V0RnJvbVBheW1lbnQgPSAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmF1dG9Db21wbGV0aW5nKSByZXR1cm47XG4gICAgICAgIHRoaXMuYXV0b0NvbXBsZXRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS5jb21wbGV0ZSgpLnRoZW4oXG4gICAgICAgICAgICByZXMgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXM/Lm9rKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnY2hlY2tvdXQvb3JkZXJfc3VjY2VzcyddKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5zaG93KCdvcGVyYXRpb24tZXJyb3InKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRvQ29tcGxldGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdygnb3BlcmF0aW9uLWVycm9yJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5hdXRvQ29tcGxldGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHNldExvYWRpbmcgPSAoZXN0YWRvID0gdHJ1ZSkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZXN0YWRvKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgdmVyaWZ5VmFsaWRhdGUgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0TG9hZGluZygpO1xuICAgICAgICB0aGlzLmVtaXRSZXN1bHQoKTtcbiAgICB9XG5cbiAgICBzZXRNZXRob2QgPSBhc3luYyAobWV0aG9kKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmNvbXBhY3RQYXltZW50VmlldyAmJiB0aGlzLnNlbGVjdGVkTWV0aG9kQ29kZSA9PT0gbWV0aG9kPy5jb2RlICYmICF0aGlzLmxvYWRpbmdfaW50ZXJuYWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jb21wYWN0UGF5bWVudFZpZXcgJiYgdGhpcy5wYXltZW50TG9ja2VkKSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0ci5zaG93KCdzaGlwbWVudC1tZXRob2QtcmVxdWlyZWQnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jb21wYWN0UGF5bWVudFZpZXcgJiYgdGhpcy5pc1BheW1lbnRNZXRob2REaXNhYmxlZChtZXRob2QpKSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0ci5zaG93KCd0aGlzLXBheW1lbnQtbWV0aG9kLWNhbm5vdC1iZS11c2VkJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2FkaW5nX2ludGVybmFsID0gdHJ1ZTtcbiAgICAgICAgdGhpcy52YWxpZGF0aW5nTWV0aG9kQ29kZSA9IG1ldGhvZD8uY29kZSB8fCBudWxsO1xuICAgICAgICB0aGlzLnNlbGVjdGVkTWV0aG9kQ29kZSA9IG1ldGhvZD8uY29kZSB8fCBudWxsO1xuICAgICAgICB0aGlzLmV2YWx1YXRlRGlydHlGb3JTZWxlY3Rpb24obWV0aG9kPy5jb2RlIHx8IG51bGwpO1xuICAgICAgICB0aGlzLm1ldGhvZERhdGFTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICAgIHRoaXMuc2hvd01ldGhvZEVycm9yID0gZmFsc2U7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnBheW1lbnRTZXJ2aWNlLnB1dFBheW1lbnQobWV0aG9kLmNvZGUpO1xuXG4gICAgICAgICAgICBjb25zdCBiYWxhbmNlQ3VzdG9tZXIgPSByZXN1bHQ/LmJhbGFuY2VDdXN0b21lcjtcblxuICAgICAgICAgICAgY29uc3QgdG90YWxzID0gcmVzdWx0Py50b3RhbHM7XG5cbiAgICAgICAgICAgIHRoaXMuY2FydFNlcnZpY2UudXBkYXRlQmFsYW5jZUF0dHJpYnV0ZXMoYmFsYW5jZUN1c3RvbWVyLCB0b3RhbHM/LnRvdGFsKTtcblxuICAgICAgICAgICAgY29uc3QgaXNCYWxhbmNlTWV0aG9kID0gdGhpcy5pc0JhbGFuY2VJbkFjY291bnQobWV0aG9kLmNvZGUpO1xuICAgICAgICAgICAgY29uc3QgYWxsb3dBbnkgPSBiYWxhbmNlQ3VzdG9tZXI/LmFsbG93QW55UGF5bWVudE1ldGhvZDtcblxuICAgICAgICAgICAgLy8gVmFsaWRhY2lvbmVzIGRlIGVycm9yXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgKGJhbGFuY2VDdXN0b21lciAmJiBhbGxvd0FueSA9PT0gZmFsc2UgJiYgIWlzQmFsYW5jZU1ldGhvZCkgfHwgLy8gbm8gcGVybWl0ZSBvdHJvIG3DqXRvZG9cbiAgICAgICAgICAgICAgICAoaXNCYWxhbmNlTWV0aG9kICYmICFiYWxhbmNlQ3VzdG9tZXIpIC8vIHNlbGVjY2lvbsOzIGN1ZW50YSBjb3JyaWVudGUgcGVybyBubyBoYXkgYmFsYW5jZVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVNZXRob2RFcnJvcigndGhpcy1wYXltZW50LW1ldGhvZC1jYW5ub3QtYmUtdXNlZCcsIG1ldGhvZCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tcGFjdFBheW1lbnRWaWV3ICYmIG1ldGhvZD8uY29kZSkge1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFZhbGlkYWNpw7NuIGRlIGNyw6lkaXRvIGluc3VmaWNpZW50ZSAoc2kgbm8gc2UgcHVlZGUgZXhjZWRlcilcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBpc0JhbGFuY2VNZXRob2QgJiZcbiAgICAgICAgICAgICAgICBiYWxhbmNlQ3VzdG9tZXIgJiZcbiAgICAgICAgICAgICAgICB0b3RhbHMgJiZcbiAgICAgICAgICAgICAgICBiYWxhbmNlQ3VzdG9tZXIuYWxsb3dFeGNlZWRCYWxhbmNlID09PSBmYWxzZSAmJlxuICAgICAgICAgICAgICAgIGJhbGFuY2VDdXN0b21lci5jcmVkaXRBbW91bnQgPCB0b3RhbHMudG90YWxcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyLnNob3coJ2luc3VmZmljaWVudF9jcmVkaXQnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJhbGFuY2VNZXRob2RSZWplY3RlZCA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzQmFsYW5jZU1ldGhvZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYmFsYW5jZU1ldGhvZFJlamVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubWV0aG9kRGF0YVN1YmplY3QubmV4dChtZXRob2QpO1xuICAgICAgICAgICAgLy8gdGhpcy5pc01QKG1ldGhvZC5jb2RlKSAmJiB0aGlzLmdldFByZWZlcmVuY2UoKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ19pbnRlcm5hbCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW5nTWV0aG9kQ29kZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBzZXREaXJ0eVN0YXRlID0gKG5leHREaXJ0eTogYm9vbGVhbikgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc0RpcnR5ID09PSBuZXh0RGlydHkpIHJldHVybjtcbiAgICAgICAgdGhpcy5pc0RpcnR5ID0gbmV4dERpcnR5O1xuICAgICAgICB0aGlzLmRpcnR5Q2hhbmdlLmVtaXQodGhpcy5pc0RpcnR5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFNhdmVkTWV0aG9kQ29kZSA9IChjb2RlOiBzdHJpbmcgfCBudWxsKSA9PiB7XG4gICAgICAgIHRoaXMubGFzdFNhdmVkTWV0aG9kQ29kZSA9IGNvZGU7XG4gICAgICAgIHRoaXMuc2V0RGlydHlTdGF0ZShmYWxzZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBldmFsdWF0ZURpcnR5Rm9yU2VsZWN0aW9uID0gKGNvZGU6IHN0cmluZyB8IG51bGwpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbXBhY3RQYXltZW50VmlldyB8fCB0aGlzLnN1cHByZXNzRGlydHkpIHJldHVybjtcbiAgICAgICAgaWYgKCF0aGlzLmNoZWNrb3V0U2VydmljZS5pc1N0ZXBSZWFkeSgncGF5bWVudCcpKSB7XG4gICAgICAgICAgICB0aGlzLnNldERpcnR5U3RhdGUoZmFsc2UpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY29kZSB8fCAhdGhpcy5sYXN0U2F2ZWRNZXRob2RDb2RlKSB7XG4gICAgICAgICAgICB0aGlzLnNldERpcnR5U3RhdGUoZmFsc2UpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0RGlydHlTdGF0ZShjb2RlICE9PSB0aGlzLmxhc3RTYXZlZE1ldGhvZENvZGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkaXNjYXJkQ2hhbmdlcyA9ICgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbXBhY3RQYXltZW50VmlldykgcmV0dXJuO1xuICAgICAgICBpZiAoIXRoaXMubGFzdFNhdmVkTWV0aG9kQ29kZSkge1xuICAgICAgICAgICAgdGhpcy5zZXREaXJ0eVN0YXRlKGZhbHNlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtZXRob2QgPSB0aGlzLnBheW1lbnRNZXRob2RzLmZpbmQobSA9PiBtPy5jb2RlID09PSB0aGlzLmxhc3RTYXZlZE1ldGhvZENvZGUpIHx8IG51bGw7XG4gICAgICAgIHRoaXMuc3VwcHJlc3NEaXJ0eSA9IHRydWU7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNZXRob2RDb2RlID0gdGhpcy5sYXN0U2F2ZWRNZXRob2RDb2RlO1xuICAgICAgICB0aGlzLm1ldGhvZERhdGFTdWJqZWN0Lm5leHQobWV0aG9kKTtcbiAgICAgICAgdGhpcy5jdXJyZW50TWV0aG9kID0gbWV0aG9kO1xuICAgICAgICB0aGlzLnNob3dNZXRob2RFcnJvciA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJhbGFuY2VNZXRob2RSZWplY3RlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnZhbGlkYXRpbmdNZXRob2RDb2RlID0gbnVsbDtcbiAgICAgICAgaWYgKG1ldGhvZD8uY29kZSkge1xuICAgICAgICAgICAgdGhpcy5wYXltZW50U2VydmljZS5wdXRQYXltZW50KG1ldGhvZC5jb2RlKVxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdXBwcmVzc0RpcnR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RGlydHlTdGF0ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1cHByZXNzRGlydHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXREaXJ0eVN0YXRlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN1cHByZXNzRGlydHkgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZXREaXJ0eVN0YXRlKGZhbHNlKTtcbiAgICB9XG5cbiAgICBpc1BheW1lbnRNZXRob2REaXNhYmxlZCA9IChtZXRob2Q6IGFueSkgPT4ge1xuICAgICAgICBpZiAoIW1ldGhvZD8uY29kZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gISEodGhpcy5pbnZhbGlkTWV0aG9kc0JhbGFuY2VbbWV0aG9kLmNvZGVdIHx8IHRoaXMuaW52YWxpZE1ldGhvZHNCYWNrZW5kW21ldGhvZC5jb2RlXSk7XG4gICAgfVxuXG4gICAgdXBkYXRlQmFsYW5jZUJhc2VkSW52YWxpZE1ldGhvZHMgPSAoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5jb21wYWN0UGF5bWVudFZpZXcpIHJldHVybjtcbiAgICAgICAgY29uc3QgYmFsYW5jZSA9IHRoaXMuYmFsYW5jZUN1c3RvbWVyO1xuICAgICAgICBjb25zdCBuZXh0OiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xuICAgICAgICBpZiAoYmFsYW5jZSkge1xuICAgICAgICAgICAgaWYgKGJhbGFuY2UuYWxsb3dBbnlQYXltZW50TWV0aG9kID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHRoaXMucGF5bWVudE1ldGhvZHMuZm9yRWFjaChtZXRob2QgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNCYWxhbmNlSW5BY2NvdW50KG1ldGhvZC5jb2RlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFttZXRob2QuY29kZV0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbnZhbGlkTWV0aG9kc0JhbGFuY2UgPSBuZXh0O1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlTWV0aG9kRXJyb3IobWVzc2FnZTogc3RyaW5nLCBtZXRob2Q6IGFueSkge1xuICAgICAgICB0aGlzLnNob3dNZXRob2RFcnJvciA9IHRydWU7XG4gICAgICAgIHRoaXMudG9hc3RyLnNob3cobWVzc2FnZSk7XG4gICAgICAgIHRoaXMubWV0aG9kRGF0YVN1YmplY3QubmV4dChtZXRob2QpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkTWV0aG9kQ29kZSA9IG1ldGhvZD8uY29kZSB8fCBudWxsO1xuICAgIH1cblxuICAgIHNldEFjdGl2ZShlKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IGUudGFyZ2V0LnBhcmVudEVsZW1lbnQuY2hpbGRyZW47XG4gICAgICAgIGZvciAoY29uc3QgYnV0dG9uIG9mIHBhcmVudCkge1xuICAgICAgICAgICAgaWYgKGJ1dHRvbi5jbGFzc0xpc3QuY29udGFpbnMoJ2FjdGl2ZScpKSB7XG4gICAgICAgICAgICAgICAgYnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZS50YXJnZXQuY2xhc3NMaXN0LmFkZChcImFjdGl2ZVwiKVxuICAgIH1cblxuICAgIHN1Ym1pdEZvcm0gPSAoZXZlbnQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJFVkVOVFwiLCBldmVudCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdTRSBST01PUElPIEVMIFBSRVZFTlQgREVGQVVMVCcpXG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGdldFBLID0gKG1ldGhvZCkgPT4gKG1ldGhvZC5jb25maWcucHVibGljX2tleSB8fCBtZXRob2QucHVibGljX2tleSk7XG5cbiAgICBpc1JlZGlyZWN0UmVkc3lzID0gKGNvZGU6IHN0cmluZykgPT4gY29kZSAmJiBjb2RlLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ3JlZHN5c19yZWRpcmVjdCcpO1xuXG4gICAgaXNSZWRpcmVjdENlY2FCYW5rID0gKGNvZGU6IHN0cmluZykgPT4gY29kZSAmJiBjb2RlLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2NlY2FfYmFua19yZWRpcmVjdCcpO1xuXG4gICAgaXNNUCA9IChjb2RlOiBzdHJpbmcpID0+IGNvZGUgJiYgY29kZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKCdtZXJjYWRvX3BhZ28nKSAmJiAhY29kZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKCdjcmVkaXQnKTtcblxuICAgIGlzTVBUYXJqZXRhRGVDcmVkaXRvID0gKGNvZGU6IHN0cmluZykgPT4gY29kZSAmJiBjb2RlLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2NyZWRpdCcpO1xuXG4gICAgaXNNZXRob2RPZmZsaW5lID0gKGNvZGU6IHN0cmluZykgPT4gY29kZSAmJiBjb2RlLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ29mZmxpbmUnKTtcblxuICAgIGlzUGV5UGFsRXhwcmVzcyA9IChjb2RlOiBzdHJpbmcpID0+IGNvZGUgJiYgY29kZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKCdwYXlwYWwnKSAmJiBjb2RlLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2V4cHJlc3MnKTtcblxuICAgIGlzTW9iYmV4ID0gKGNvZGU6IHN0cmluZykgPT4gY29kZSAmJiBjb2RlLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ21vYmJleCcpO1xuXG4gICAgaXNCYW5jYXJkID0gKGNvZGU6IHN0cmluZykgPT4gY29kZSAmJiBjb2RlLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2JhbmNhcmQnKTtcblxuICAgIGlzRGVjaWRpciA9IChjb2RlOiBzdHJpbmcpID0+IGNvZGUgJiYgY29kZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKCdkZWNpZGlyJyk7XG5cbiAgICBpc0N1bHFpID0gKGNvZGU6IHN0cmluZykgPT4gY29kZSAmJiBjb2RlLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2N1bHFpJyk7XG5cbiAgICBpc0JhbmtUcmFuc2ZlciA9IChjb2RlOiBzdHJpbmcpID0+IGNvZGUgJiYgY29kZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKCdiYW5rX3RyYW5zZmVyJylcblxuICAgIGlzQ2F0YXN0cm8gPSAoY29kZTogc3RyaW5nKSA9PiBjb2RlICYmIGNvZGUudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcygnY2F0YXN0cm8nKVxuXG4gICAgaXNCYW1ib28gPSAoY29kZTogc3RyaW5nKSA9PiBjb2RlICYmIGNvZGUudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcygnYmFtYm9vJylcblxuICAgIGlzUGxhY2VUb1BheSA9IChjb2RlOiBzdHJpbmcpID0+IGNvZGUgJiYgY29kZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKCdwbGFjZV90b19wYXknKVxuXG4gICAgaXNCYWxhbmNlSW5BY2NvdW50ID0gKGNvZGU6IHN0cmluZykgPT4gY29kZSAmJiBjb2RlLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2JhbGFuY2VfaW5fYWNjb3VudCcpXG5cbiAgICBnZXRQS0N1bHFpID0gbWV0aG9kID0+IHtcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCdlYXN5Y29tbWVyY2V0ZWNoJylcbiAgICAgICAgICAgID8gbWV0aG9kLmNvbmZpZy5wdWJsaWNfdGVzdGluZ19rZXlcbiAgICAgICAgICAgIDogbWV0aG9kLmNvbmZpZy5wdWJsaWNfcHJvZHVjdGlvbl9rZXlcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQXV0b0NvbXBsZXRlTWV0aG9kID0gKG1ldGhvZDogYW55KSA9PiB7XG4gICAgICAgIGlmICghbWV0aG9kPy5jb2RlKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGNvbnN0IGNvZGUgPSBtZXRob2QuY29kZTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuaXNNUChjb2RlKSB8fFxuICAgICAgICAgICAgdGhpcy5pc1JlZGlyZWN0UmVkc3lzKGNvZGUpIHx8XG4gICAgICAgICAgICB0aGlzLmlzUmVkaXJlY3RDZWNhQmFuayhjb2RlKSB8fFxuICAgICAgICAgICAgdGhpcy5pc1BleVBhbEV4cHJlc3MoY29kZSkgfHxcbiAgICAgICAgICAgIHRoaXMuaXNQbGFjZVRvUGF5KGNvZGUpXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
@@ -4,7 +4,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { Component, Output, OnInit, ViewChild, ElementRef, Input, Renderer2, Inject, OnChanges, EventEmitter, OnDestroy, TemplateRef } from '@angular/core';
7
+ import { Component, Output, OnInit, ViewChild, Input, Renderer2, OnChanges, EventEmitter, OnDestroy, TemplateRef, HostListener } from '@angular/core';
8
8
  import { ActivatedRoute } from '@angular/router';
9
9
  import { BsModalService, BsModalRef } from 'ngx-bootstrap/modal';
10
10
  import { ConnectionService } from '../../../api/connection.service';
@@ -13,14 +13,13 @@ import { Constants } from '../../../core.consts';
13
13
  import { CartService } from '../../../services/cart.service';
14
14
  import { ComponentHelper } from '../../../classes/component-helper';
15
15
  let RedSysRedirectEcComponent = class RedSysRedirectEcComponent extends ComponentHelper {
16
- constructor(renderer, connection, toastrService, consts, cartService, toastr, activedRoute, modalService) {
16
+ constructor(renderer, connection, toastrService, consts, cartService, activedRoute, modalService) {
17
17
  super();
18
18
  this.renderer = renderer;
19
19
  this.connection = connection;
20
20
  this.toastrService = toastrService;
21
21
  this.consts = consts;
22
22
  this.cartService = cartService;
23
- this.toastr = toastr;
24
23
  this.activedRoute = activedRoute;
25
24
  this.modalService = modalService;
26
25
  this.method = null;
@@ -30,41 +29,44 @@ let RedSysRedirectEcComponent = class RedSysRedirectEcComponent extends Componen
30
29
  this.loading = true;
31
30
  this.isDobleAuth = false;
32
31
  this.urls = [];
33
- this.closeModal = '';
32
+ this.closeModalReason = ''; // Renombrado para evitar confusión
34
33
  this.dataRedirect = () => this.consts.getUrlBase() + 'shop-api/' + this.consts.getChannel() + '/redsys/redirect/' + this.cartService.cart_token + '/process-payment';
35
34
  this.clearStorageState = () => {
36
35
  sessionStorage.removeItem('state');
37
36
  localStorage.removeItem('state');
38
37
  };
38
+ // Método que se llama desde la X de la cabecera del modal en el HTML
39
39
  this.clickClose = () => {
40
- this.closeModal = 'cancel';
41
- this.modalRef.hide();
42
- this.processError('Se cancelo el pago con tarjeta');
40
+ this.closeModalReason = 'cancel';
41
+ if (this.modalRef) {
42
+ this.modalRef.hide();
43
+ }
44
+ this.processError('Se canceló el pago con tarjeta');
43
45
  };
44
46
  this.callState = () => {
45
- let state = this.closeModal != '' ? this.closeModal : sessionStorage.getItem('state');
46
- console.log(state);
47
+ var _a, _b, _c;
48
+ let state = this.closeModalReason != '' ? this.closeModalReason : sessionStorage.getItem('state');
47
49
  if (state) {
48
- sessionStorage.removeItem('state');
49
- localStorage.removeItem('state');
50
+ this.clearStorageState();
50
51
  if (state == 'ok') {
51
- this.modalRef.hide();
52
+ (_a = this.modalRef) === null || _a === void 0 ? void 0 : _a.hide();
52
53
  this.ready.emit(true);
53
54
  return;
54
55
  }
55
56
  if (state == 'menosuno') {
56
- this.modalRef.hide();
57
- this.processError('');
57
+ (_b = this.modalRef) === null || _b === void 0 ? void 0 : _b.hide();
58
+ this.processError('Error en el pago');
58
59
  return;
59
60
  }
60
61
  if (state == 'cancel') {
61
- return;
62
+ return; // El modal ya se escondió dentro de clickClose()
62
63
  }
63
- this.modalRef.hide();
64
- this.processError('');
64
+ (_c = this.modalRef) === null || _c === void 0 ? void 0 : _c.hide();
65
+ this.processError('Error desconocido en la transacción');
65
66
  return;
66
67
  }
67
- setTimeout(() => {
68
+ // Guardamos el timeout en una variable de clase
69
+ this.stateTimeout = setTimeout(() => {
68
70
  this.callState();
69
71
  }, 6000);
70
72
  };
@@ -79,6 +81,10 @@ let RedSysRedirectEcComponent = class RedSysRedirectEcComponent extends Componen
79
81
  }
80
82
  ngOnDestroy() {
81
83
  console.log("SE DESTROZA");
84
+ // Limpiar el setTimeout al salir del componente
85
+ if (this.stateTimeout) {
86
+ clearTimeout(this.stateTimeout);
87
+ }
82
88
  }
83
89
  ngOnChanges() {
84
90
  console.log("SE CAMBIO");
@@ -86,10 +92,20 @@ let RedSysRedirectEcComponent = class RedSysRedirectEcComponent extends Componen
86
92
  openModal(template) {
87
93
  this.clearStorageState();
88
94
  sessionStorage.setItem('dataRedirect', this.dataRedirect());
89
- this.modalRef = this.modalService.show(template, { class: 'modal-lg modal-dialog-centered ', keyboard: false, backdrop: 'static', animated: true });
90
- this.closeModal = '';
95
+ // Abrimos el modal y guardamos la referencia en this.modalRef
96
+ this.modalRef = this.modalService.show(template, { class: 'modal-lg modal-dialog-centered', keyboard: false, backdrop: 'static', animated: true });
97
+ this.closeModalReason = '';
91
98
  this.callState();
92
99
  }
100
+ // Opcional pero recomendado: Capturar mensajes enviados desde el Iframe de Redsys
101
+ onMessage(event) {
102
+ if (event.data === 'pago_completado' || event.data === 'ok') {
103
+ sessionStorage.setItem('state', 'ok');
104
+ }
105
+ else if (event.data === 'pago_error' || event.data === 'menosuno') {
106
+ sessionStorage.setItem('state', 'menosuno');
107
+ }
108
+ }
93
109
  };
94
110
  RedSysRedirectEcComponent.ctorParameters = () => [
95
111
  { type: Renderer2 },
@@ -97,7 +113,6 @@ RedSysRedirectEcComponent.ctorParameters = () => [
97
113
  { type: ToastService },
98
114
  { type: Constants },
99
115
  { type: CartService },
100
- { type: ToastService },
101
116
  { type: ActivatedRoute },
102
117
  { type: BsModalService }
103
118
  ];
@@ -116,13 +131,15 @@ __decorate([
116
131
  __decorate([
117
132
  ViewChild('template')
118
133
  ], RedSysRedirectEcComponent.prototype, "template", void 0);
134
+ __decorate([
135
+ HostListener('window:message', ['$event'])
136
+ ], RedSysRedirectEcComponent.prototype, "onMessage", null);
119
137
  RedSysRedirectEcComponent = __decorate([
120
138
  Component({
121
139
  selector: 'app-redsys-redirect-ec',
122
- template: "<div class=\"text-center\">\n <h3>Continuar con el pago</h3>\n <p *ngIf=\"method\" class=\"px-5\">{{ method?.description }}</p>\n <p *ngIf=\"method\" class=\"px-5\">{{ method?.instructions }}</p>\n <button class=\"btn btn-outline-secondary comprar\" (click)=\"openModal(template)\">Pagar con tarjeta</button>\n</div>\n\n<ng-template #template>\n <div class=\"modal-content\">\n </div>\n <div class=\"modal-body\">\n <iframe src=\"../../../assets/redsysFrameRedirectBase.html\" frameborder=\"0\" class=\"iframeStyle\"></iframe>\n </div>\n \n</ng-template>",
123
- providers: [BsModalService],
140
+ template: "<div class=\"text-center\">\n <h3>Continuar con el pago</h3>\n <p *ngIf=\"method\" class=\"px-5\">{{ method?.description }}</p>\n <p *ngIf=\"method\" class=\"px-5\">{{ method?.instructions }}</p>\n <button class=\"btn btn-outline-secondary comprar\" (click)=\"openModal(template)\">\n Pagar con tarjeta\n </button>\n</div>\n\n<ng-template #template>\n <div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">Pasarela de pago</h4>\n <button type=\"button\" class=\"btn-close close pull-right\" aria-label=\"Close\" (click)=\"clickClose()\">\n </button>\n </div>\n \n <div class=\"modal-body p-0\">\n <iframe src=\"../../../assets/redsysFrameRedirectBase.html\" \n frameborder=\"0\" \n class=\"iframeStyle\"\n style=\"width: 100%; height: 600px; min-height: 60vh;\">\n </iframe>\n </div>\n</ng-template>",
124
141
  styles: [".half-width{width:49%!important}.ml-1{margin-left:1%}#card-form{height:450px}.iframeStyle{height:800px;width:100%;max-height:800px}"]
125
142
  })
126
143
  ], RedSysRedirectEcComponent);
127
144
  export { RedSysRedirectEcComponent };
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkc3lzLXJlZGlyZWN0LWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9lYy1jb21wb25lbnQvd2lkZ2V0cy1lYy9yZWRzeXMtcmVkaXJlY3QtZWMvcmVkc3lzLXJlZGlyZWN0LWVjLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUosT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBUXBFLElBQWEseUJBQXlCLEdBQXRDLE1BQWEseUJBQTBCLFNBQVEsZUFBZTtJQWUxRCxZQUFtQixRQUFtQixFQUMzQixVQUE2QixFQUM3QixhQUEyQixFQUMzQixNQUFpQixFQUNqQixXQUF3QixFQUN4QixNQUFvQixFQUNwQixZQUE0QixFQUM1QixZQUE0QjtRQUNuQyxLQUFLLEVBQUUsQ0FBQztRQVJPLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDM0IsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFD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U0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLHdCQUF3QjtRQUNsQyx3bEJBQWdEO1FBRWhELFNBQVMsRUFBRSxDQUFDLGNBQWMsQ0FBQzs7S0FDOUIsQ0FBQztHQUNXLHlCQUF5QixDQTRGckM7U0E1RlkseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPdXRwdXQsIE9uSW5pdCwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBJbnB1dCwgUmVuZGVyZXIyLCBJbmplY3QsIE9uQ2hhbmdlcywgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3ksIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSwgQnNNb2RhbFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcGkvY29ubmVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vLi4vY29yZS5jb25zdHMnO1xuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcG9uZW50SGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9jb21wb25lbnQtaGVscGVyJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtcmVkc3lzLXJlZGlyZWN0LWVjJyxcbiAgICB0ZW1wbGF0ZVVybDogJ3JlZHN5cy1yZWRpcmVjdC1lYy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJ3JlZHN5cy1yZWRpcmVjdC1lYy5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW0JzTW9kYWxTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBSZWRTeXNSZWRpcmVjdEVjQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50SGVscGVyIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG5cbiAgICBASW5wdXQoKSBtZXRob2QgPSBudWxsO1xuICAgIEBJbnB1dCgpIHRvdGFsX2Ftb3VudCA9IDA7XG4gICAgQE91dHB1dCgpIHJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBJbnB1dCgpIHVzZXJfZGF0YSA9IG51bGw7XG4gICAgQFZpZXdDaGlsZCgndGVtcGxhdGUnKSBwcm90ZWN0ZWQgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgcHJvdGVjdGVkIG1vZGFsUmVmOiBCc01vZGFsUmVmIHwgbnVsbDtcblxuICAgIHB1YmxpYyBsb2FkaW5nID0gdHJ1ZTtcbiAgICBwdWJsaWMgaXNEb2JsZUF1dGggPSBmYWxzZTtcbiAgICBwdWJsaWMgdXJscyA9IFtdO1xuICAgIHB1YmxpYyBjbG9zZU1vZGFsID0gJydcbiAgICBwcm90ZWN0ZWQgZGF0YVJlZGlyZWN0ID0gKCkgPT4gdGhpcy5jb25zdHMuZ2V0VXJsQmFzZSgpICsnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvcmVkc3lzL3JlZGlyZWN0LycgKyB0aGlzLmNhcnRTZXJ2aWNlLmNhcnRfdG9rZW4gKyAnL3Byb2Nlc3MtcGF5bWVudCc7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMiwgXG4gICAgICAgIHB1YmxpYyBjb25uZWN0aW9uOiBDb25uZWN0aW9uU2VydmljZSwgXG4gICAgICAgIHB1YmxpYyB0b2FzdHJTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBjb25zdHM6IENvbnN0YW50cywgXG4gICAgICAgIHB1YmxpYyBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsIFxuICAgICAgICBwdWJsaWMgdG9hc3RyOiBUb2FzdFNlcnZpY2UsIFxuICAgICAgICBwdWJsaWMgYWN0aXZlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHVibGljIG1vZGFsU2VydmljZTogQnNNb2RhbFNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5lY09uQ29uc3RydWN0KClcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5lY09uSW5pdCgpXG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiU0UgREVTVFJPWkFcIik7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiU0UgQ0FNQklPXCIpO1xuICAgIH1cbiAgICBcbiAgICBvcGVuTW9kYWwodGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICAgICAgdGhpcy5jbGVhclN0b3JhZ2VTdGF0ZSgpXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2RhdGFSZWRpcmVjdCcsdGhpcy5kYXRhUmVkaXJlY3QoKSlcbiAgICAgICAgdGhpcy5tb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLnNob3codGVtcGxhdGUsIHsgY2xhc3M6ICdtb2RhbC1sZyBtb2RhbC1kaWFsb2ctY2VudGVyZWQgJywga2V5Ym9hcmQ6IGZhbHNlLCBiYWNrZHJvcDogJ3N0YXRpYycsIGFuaW1hdGVkOiB0cnVlIH0pO1xuICAgICAgICB0aGlzLmNsb3NlTW9kYWwgPSAnJ1xuICAgICAgICB0aGlzLmNhbGxTdGF0ZSgpXG4gICAgfVxuXG4gICAgY2xlYXJTdG9yYWdlU3RhdGUgPSAoKSA9PiB7XG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ3N0YXRlJylcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3N0YXRlJylcbiAgICB9XG5cbiAgICBjbGlja0Nsb3NlID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmNsb3NlTW9kYWwgPSAnY2FuY2VsJ1xuICAgICAgICB0aGlzLm1vZGFsUmVmLmhpZGUoKVxuICAgICAgICB0aGlzLnByb2Nlc3NFcnJvcignU2UgY2FuY2VsbyBlbCBwYWdvIGNvbiB0YXJqZXRhJylcbiAgICB9XG5cbiAgICBjYWxsU3RhdGUgPSAoKSA9PiB7XG4gICAgICAgIGxldCBzdGF0ZSA9IHRoaXMuY2xvc2VNb2RhbCAhPSAnJyA/IHRoaXMuY2xvc2VNb2RhbCA6IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3N0YXRlJylcbiAgICAgICAgY29uc29sZS5sb2coc3RhdGUpO1xuICAgICAgICBpZiAoc3RhdGUpIHtcbiAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ3N0YXRlJylcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdzdGF0ZScpXG4gICAgICAgICAgICBpZiAoc3RhdGUgPT0gJ29rJykge1xuICAgICAgICAgICAgICAgIHRoaXMubW9kYWxSZWYuaGlkZSgpXG4gICAgICAgICAgICAgICAgdGhpcy5yZWFkeS5lbWl0KHRydWUpXG4gICAgICAgICAgICAgICAgcmV0dXJuICAgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3RhdGUgPT0gJ21lbm9zdW5vJykge1xuICAgICAgICAgICAgICAgIHRoaXMubW9kYWxSZWYuaGlkZSgpXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzRXJyb3IoJycpXG4gICAgICAgICAgICAgICAgcmV0dXJuICAgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3RhdGUgPT0gJ2NhbmNlbCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubW9kYWxSZWYuaGlkZSgpXG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NFcnJvcignJylcbiAgICAgICAgICAgIHJldHVybiAgXG4gICAgICAgIH1cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNhbGxTdGF0ZSgpXG4gICAgICAgIH0sIDYwMDApOyAgICBcbiAgICAgICAgXG4gICAgfVxuXG4gICAgcHJvY2Vzc0Vycm9yID0gKGVycikgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0clNlcnZpY2Uuc2hvdyhlcnIgIT0gJycgPyBlcnIgOiAncGF5bWVudC1lcnJvcicpO1xuICAgICAgICBjb25zb2xlLmxvZyhcIkVSUk9SIEVOVklPIEJBQ0sgIFwiLCBlcnIpO1xuICAgIH1cblxufSJdfQ==
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkc3lzLXJlZGlyZWN0LWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9lYy1jb21wb25lbnQvd2lkZ2V0cy1lYy9yZWRzeXMtcmVkaXJlY3QtZWMvcmVkc3lzLXJlZGlyZWN0LWVjLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0SixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFRcEUsSUFBYSx5QkFBeUIsR0FBdEMsTUFBYSx5QkFBMEIsU0FBUSxlQUFlO0lBaUIxRCxZQUNXLFFBQW1CLEVBQ25CLFVBQTZCLEVBQzdCLGFBQTJCLEVBQzNCLE1BQWlCLEVBQ2pCLFdBQXdCLEVBQ3hCLFlBQTRCLEVBQzVCLFlBQTRCO1FBRW5DLEtBQUssRUFBRSxDQUFDO1FBUkQsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixrQkFBYSxHQUFiLGFBQWEsQ0FB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QUFLLENBQUMsSUFBSSxLQUFLLFlBQVksSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRTtZQUNqRSxjQUFjLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztTQUMvQztJQUNMLENBQUM7Q0FDSixDQUFBOztZQWhHd0IsU0FBUztZQUNQLGlCQUFpQjtZQUNkLFlBQVk7WUFDbkIsU0FBUztZQUNKLFdBQVc7WUFDVixjQUFjO1lBQ2QsY0FBYzs7QUF0QjlCO0lBQVIsS0FBSyxFQUFFO3lEQUFlO0FBQ2Q7SUFBUixLQUFLLEVBQUU7K0RBQWtCO0FBQ2hCO0lBQVQsTUFBTSxFQUFFO3dEQUE0QjtBQUM1QjtJQUFSLEtBQUssRUFBRTs0REFBa0I7QUFDSDtJQUF0QixTQUFTLENBQUMsVUFBVSxDQUFDOzJEQUFzQztBQXFHNUQ7SUFEQyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQzswREFPMUM7QUFqSFEseUJBQXlCO0lBTnJDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSx3QkFBd0I7UUFDbEMsNjZCQUFnRDs7S0FHbkQsQ0FBQztHQUNXLHlCQUF5QixDQWtIckM7U0FsSFkseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPdXRwdXQsIE9uSW5pdCwgVmlld0NoaWxkLCBJbnB1dCwgUmVuZGVyZXIyLCBPbkNoYW5nZXMsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95LCBUZW1wbGF0ZVJlZiwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSwgQnNNb2RhbFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcGkvY29ubmVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vLi4vY29yZS5jb25zdHMnO1xuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcG9uZW50SGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9jb21wb25lbnQtaGVscGVyJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtcmVkc3lzLXJlZGlyZWN0LWVjJyxcbiAgICB0ZW1wbGF0ZVVybDogJ3JlZHN5cy1yZWRpcmVjdC1lYy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJ3JlZHN5cy1yZWRpcmVjdC1lYy5jb21wb25lbnQuc2NzcyddXG4gICAgLy8gwqFJTVBPUlRBTlRFOiBTZSBoYSBlbGltaW5hZG8gXCJwcm92aWRlcnM6IFtCc01vZGFsU2VydmljZV1cIiBkZSBhcXXDrSFcbn0pXG5leHBvcnQgY2xhc3MgUmVkU3lzUmVkaXJlY3RFY0NvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEhlbHBlciBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuXG4gICAgQElucHV0KCkgbWV0aG9kID0gbnVsbDtcbiAgICBASW5wdXQoKSB0b3RhbF9hbW91bnQgPSAwO1xuICAgIEBPdXRwdXQoKSByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBASW5wdXQoKSB1c2VyX2RhdGEgPSBudWxsO1xuICAgIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlJykgcHJvdGVjdGVkIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIFxuICAgIHByb3RlY3RlZCBtb2RhbFJlZjogQnNNb2RhbFJlZiB8IG51bGw7XG4gICAgcHVibGljIGxvYWRpbmcgPSB0cnVlO1xuICAgIHB1YmxpYyBpc0RvYmxlQXV0aCA9IGZhbHNlO1xuICAgIHB1YmxpYyB1cmxzID0gW107XG4gICAgcHVibGljIGNsb3NlTW9kYWxSZWFzb24gPSAnJzsgLy8gUmVub21icmFkbyBwYXJhIGV2aXRhciBjb25mdXNpw7NuXG4gICAgcHJpdmF0ZSBzdGF0ZVRpbWVvdXQ6IGFueTsgLy8gUmVmZXJlbmNpYSBwYXJhIGV2aXRhciBtZW1vcnkgbGVha3NcblxuICAgIHByb3RlY3RlZCBkYXRhUmVkaXJlY3QgPSAoKSA9PiB0aGlzLmNvbnN0cy5nZXRVcmxCYXNlKCkgKydzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9yZWRzeXMvcmVkaXJlY3QvJyArIHRoaXMuY2FydFNlcnZpY2UuY2FydF90b2tlbiArICcvcHJvY2Vzcy1wYXltZW50JztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMiwgXG4gICAgICAgIHB1YmxpYyBjb25uZWN0aW9uOiBDb25uZWN0aW9uU2VydmljZSwgXG4gICAgICAgIHB1YmxpYyB0b2FzdHJTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBjb25zdHM6IENvbnN0YW50cywgXG4gICAgICAgIHB1YmxpYyBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsIFxuICAgICAgICBwdWJsaWMgYWN0aXZlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHVibGljIG1vZGFsU2VydmljZTogQnNNb2RhbFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5lY09uQ29uc3RydWN0KCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZWNPbkluaXQoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJTRSBERVNUUk9aQVwiKTtcbiAgICAgICAgLy8gTGltcGlhciBlbCBzZXRUaW1lb3V0IGFsIHNhbGlyIGRlbCBjb21wb25lbnRlXG4gICAgICAgIGlmICh0aGlzLnN0YXRlVGltZW91dCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc3RhdGVUaW1lb3V0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIlNFIENBTUJJT1wiKTtcbiAgICB9XG4gICAgXG4gICAgb3Blbk1vZGFsKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgICAgIHRoaXMuY2xlYXJTdG9yYWdlU3RhdGUoKTtcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnZGF0YVJlZGlyZWN0JywgdGhpcy5kYXRhUmVkaXJlY3QoKSk7XG4gICAgICAgIC8vIEFicmltb3MgZWwgbW9kYWwgeSBndWFyZGFtb3MgbGEgcmVmZXJlbmNpYSBlbiB0aGlzLm1vZGFsUmVmXG4gICAgICAgIHRoaXMubW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5zaG93KHRlbXBsYXRlLCB7IGNsYXNzOiAnbW9kYWwtbGcgbW9kYWwtZGlhbG9nLWNlbnRlcmVkJywga2V5Ym9hcmQ6IGZhbHNlLCBiYWNrZHJvcDogJ3N0YXRpYycsIGFuaW1hdGVkOiB0cnVlIH0pO1xuICAgICAgICB0aGlzLmNsb3NlTW9kYWxSZWFzb24gPSAnJztcbiAgICAgICAgdGhpcy5jYWxsU3RhdGUoKTtcbiAgICB9XG5cbiAgICBjbGVhclN0b3JhZ2VTdGF0ZSA9ICgpID0+IHtcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnc3RhdGUnKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3N0YXRlJyk7XG4gICAgfVxuXG4gICAgLy8gTcOpdG9kbyBxdWUgc2UgbGxhbWEgZGVzZGUgbGEgWCBkZSBsYSBjYWJlY2VyYSBkZWwgbW9kYWwgZW4gZWwgSFRNTFxuICAgIGNsaWNrQ2xvc2UgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuY2xvc2VNb2RhbFJlYXNvbiA9ICdjYW5jZWwnO1xuICAgICAgICBpZiAodGhpcy5tb2RhbFJlZikge1xuICAgICAgICAgICAgdGhpcy5tb2RhbFJlZi5oaWRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcm9jZXNzRXJyb3IoJ1NlIGNhbmNlbMOzIGVsIHBhZ28gY29uIHRhcmpldGEnKTtcbiAgICB9XG5cbiAgICBjYWxsU3RhdGUgPSAoKSA9PiB7XG4gICAgICAgIGxldCBzdGF0ZSA9IHRoaXMuY2xvc2VNb2RhbFJlYXNvbiAhPSAnJyA/IHRoaXMuY2xvc2VNb2RhbFJlYXNvbiA6IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3N0YXRlJyk7XG4gICAgICAgIFxuICAgICAgICBpZiAoc3RhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJTdG9yYWdlU3RhdGUoKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKHN0YXRlID09ICdvaycpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGFsUmVmPy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWFkeS5lbWl0KHRydWUpO1xuICAgICAgICAgICAgICAgIHJldHVybjsgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdGF0ZSA9PSAnbWVub3N1bm8nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb2RhbFJlZj8uaGlkZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0Vycm9yKCdFcnJvciBlbiBlbCBwYWdvJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuOyAgIFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0YXRlID09ICdjYW5jZWwnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBFbCBtb2RhbCB5YSBzZSBlc2NvbmRpw7MgZGVudHJvIGRlIGNsaWNrQ2xvc2UoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICB0aGlzLm1vZGFsUmVmPy5oaWRlKCk7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NFcnJvcignRXJyb3IgZGVzY29ub2NpZG8gZW4gbGEgdHJhbnNhY2Npw7NuJyk7XG4gICAgICAgICAgICByZXR1cm47ICBcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8gR3VhcmRhbW9zIGVsIHRpbWVvdXQgZW4gdW5hIHZhcmlhYmxlIGRlIGNsYXNlXG4gICAgICAgIHRoaXMuc3RhdGVUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNhbGxTdGF0ZSgpO1xuICAgICAgICB9LCA2MDAwKTsgICAgXG4gICAgfVxuXG4gICAgcHJvY2Vzc0Vycm9yID0gKGVycikgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0clNlcnZpY2Uuc2hvdyhlcnIgIT0gJycgPyBlcnIgOiAncGF5bWVudC1lcnJvcicpO1xuICAgICAgICBjb25zb2xlLmxvZyhcIkVSUk9SIEVOVklPIEJBQ0sgIFwiLCBlcnIpO1xuICAgIH1cblxuICAgIC8vIE9wY2lvbmFsIHBlcm8gcmVjb21lbmRhZG86IENhcHR1cmFyIG1lbnNhamVzIGVudmlhZG9zIGRlc2RlIGVsIElmcmFtZSBkZSBSZWRzeXNcbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bWVzc2FnZScsIFsnJGV2ZW50J10pXG4gICAgb25NZXNzYWdlKGV2ZW50OiBNZXNzYWdlRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmRhdGEgPT09ICdwYWdvX2NvbXBsZXRhZG8nIHx8IGV2ZW50LmRhdGEgPT09ICdvaycpIHtcbiAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ3N0YXRlJywgJ29rJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PT0gJ3BhZ29fZXJyb3InIHx8IGV2ZW50LmRhdGEgPT09ICdtZW5vc3VubycpIHtcbiAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ3N0YXRlJywgJ21lbm9zdW5vJyk7XG4gICAgICAgIH1cbiAgICB9XG59Il19
@@ -68,6 +68,26 @@ let AddressingService = class AddressingService extends StepService {
68
68
  return new Promise((resolve, reject) => reject(new Error(err.error)));
69
69
  }).catch(err => console.error(err));
70
70
  };
71
+ this.setHeadquarterByIds = (data) => {
72
+ return this.connection.put(this.headquarterApi(), data)
73
+ .pipe(map(order => {
74
+ var _a;
75
+ if (order && order.error) {
76
+ this.cartService.changeHaveToUpdate(false);
77
+ return false;
78
+ }
79
+ this.checkoutService.updateAsociatedData(order);
80
+ this.checkoutService.setCheckoutNotes(((_a = data) === null || _a === void 0 ? void 0 : _a.notes) || '');
81
+ this.setStepReady(data, order);
82
+ if (this.consts.getCheckoutView() === 'single') {
83
+ this.checkoutService.prefetchPaymentMethods();
84
+ }
85
+ this.analyticsService.callEvent('payment_info', order);
86
+ return order;
87
+ })).toPromise().then(res => res, err => {
88
+ return new Promise((resolve, reject) => reject(new Error(err.error)));
89
+ }).catch(err => console.error(err));
90
+ };
71
91
  this.setAddress = (user_data) => {
72
92
  user_data.locale = this.consts.getLocale();
73
93
  // se modifica el código postal para castearlo a String antes de enviarlo
@@ -258,4 +278,4 @@ AddressingService = __decorate([
258
278
  })
259
279
  ], AddressingService);
260
280
  export { AddressingService };
261
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzc2luZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2NoZWNrb3V0L2FkZHJlc3Npbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7QUFRakUsSUFBYSxpQkFBaUIsR0FBOUIsTUFBYSxpQkFBa0IsU0FBUSxXQUFXO0lBaUI5QyxZQUFvQixVQUE2QixFQUFVLE1BQWlCLEVBQVUsV0FBd0IsRUFBVSxlQUFnQyxFQUM1SSxnQkFBa0MsRUFBVSxhQUFtQztRQUN2RixLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFGUCxlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVc7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUM1SSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtC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WUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQzs0QkFDdEIsY0FBYyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQzs0QkFDeEIsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7NEJBQzdELFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs0QkFDMUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7NEJBQy9CLFlBQVksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs0QkFDM0MsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7NEJBQ25DLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDOzRCQUNsQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7eUJBQ2Q7d0JBQ0QsV0FBVyxFQUFFOzRCQUNULFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs0QkFDdEMsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzRCQUNyQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzs0QkFDdEUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQ3BELFlBQVksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7NEJBQ3RCLGNBQWMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7NEJBQ3hC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L2NvcmUnO1xuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcGkvY29ubmVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvcmUuY29uc3RzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vY2FydC5zZXJ2aWNlJztcbmltcG9ydCB7IENoZWNrb3V0U2VydmljZSB9IGZyb20gJy4vY2hlY2tvdXQuc2VydmljZSc7XG5pbXBvcnQgeyBTdGVwU2VydmljZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvY2hlY2tvdXQvc3RlcC1zZXJ2aWNlJztcbmltcG9ydCB7IFBhcmFtZXRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vcGFyYW1ldGVycy5zZXJ2aWNlJztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuLi9hbmFseXRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ2hhbm5lbENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9jaGFubmVsLWNvbmZpZy5zZXJ2aWNlJztcblxudHlwZSB0eXBlRm9ybXMgPSAnRVVSJyB8ICdBUkcnO1xudHlwZSB0eXBlU2VsZWN0QWRkcmVzcyA9ICdPTkxZX0xPQURfQUREUkVTUycgfCAnT05MWV9BRERSRVNTX1NFTEVDVElPTicgfCAnTE9BRF9BRERSRVNTX0FORF9TRUxFQ1RJT04nO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFkZHJlc3NpbmdTZXJ2aWNlIGV4dGVuZHMgU3RlcFNlcnZpY2Uge1xuXG4gICAgYmFzZUFwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy8nICsgJ2NoZWNrb3V0LycgKyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpO1xuICAgIGNvdW50cmllc0FwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9jb3VudHJpZXMnO1xuICAgIHpvbmVzQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL3pvbmVzJztcbiAgICBwcm92aW5jZXNBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvcHJvdmluY2VzJztcbiAgICBwdXRBZGRyZXNzQXBpID0gKCkgPT4gdGhpcy5iYXNlQXBpKCkgKyAnL2FkZHJlc3MnO1xuICAgIGFkZHJlc3NCb29rQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL2FkZHJlc3MtYm9vayc7XG4gICAgaGVhZHF1YXJ0ZXJBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvY2hlY2tvdXQvJyArIHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCkgKycvaGVhZHF1YXJ0ZXInO1xuXG4gICAgcHVibGljIHR5cGVGb3JtczogdHlwZUZvcm1zID0gJ0FSRyc7XG4gICAgcHVibGljIG1vZGVTZWxlY3RBZGRyZXNzOiB0eXBlU2VsZWN0QWRkcmVzcyA9ICdMT0FEX0FERFJFU1NfQU5EX1NFTEVDVElPTic7XG4gICAgcHVibGljIGNvdW50cmllc0xpc3QgPSBbXTtcbiAgICBwdWJsaWMgZG9jdW1lbnRUeXBlcyA9IFtdO1xuICAgIHB1YmxpYyBwcm92aW5jZUxpc3QgPSBbXTtcbiAgICBwdWJsaWMgY2hlY2tvdXROb3Rlc0ZpZWxkOiAnc2hvdyd8J3JlcXVpcmVkJ3wnaGlkZSd8dW5kZWZpbmVkO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25uZWN0aW9uOiBDb25uZWN0aW9uU2VydmljZSwgcHJpdmF0ZSBjb25zdHM6IENvbnN0YW50cywgcHJpdmF0ZSBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsIHByaXZhdGUgY2hlY2tvdXRTZXJ2aWNlOiBDaGVja291dFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSwgcHJpdmF0ZSBjaGFubmVsQ29uZmlnOiBDaGFubmVsQ29uZmlnU2VydmljZSkge1xuICAgICAgICBzdXBlcihjaGVja291dFNlcnZpY2UpO1xuICAgICAgICB0aGlzLmdldEFkZHJlc3NpbmdEYXRhKCkudGhlbihyZXMgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRUeXBlcyA9IChyZXMuZmluZChwYWlzZXMgPT4gdGhpcy5jb25zdHMuZ2V0TG9jYWxlKCkudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcyhwYWlzZXMuY29kZS50b0xvY2FsZUxvd2VyQ2FzZSgpKSkpPy5kb2N1bWVudFR5cGVzIHx8IFtdXG4gICAgICAgICAgICAgICAgdGhpcy5wcm92aW5jZUxpc3QgPSAocmVzLmZpbmQocGFpc2VzID0+IHRoaXMuY29uc3RzLmdldExvY2FsZSgpLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMocGFpc2VzLmNvZGUudG9Mb2NhbGVMb3dlckNhc2UoKSkpKT8ucHJvdmluY2VzIHx8IFtdXG4gICAgICAgICAgICAgICAgdGhpcy5jb3VudHJpZXNMaXN0ID0gcmVzXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIHRoaXMuY2hhbm5lbENvbmZpZy5jaGFubmVsQ29uZmlnJFxuICAgICAgICAgICAgLnN1YnNjcmliZShjZmcgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tvdXROb3Rlc0ZpZWxkID0gY2ZnPy5jaGVja291dE5vdGVzRmllbGQ7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcblxuICAgIH1cblxuICAgIGdldEFkZHJlc3NpbmdEYXRhID0gYXN5bmMgKCkgPT5cbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmNvdW50cmllc0FwaSgpKS5waXBlKG1hcChyZXMgPT4gcmVzPy5fZW1iZWRkZWQ/Lml0ZW1zKSkudG9Qcm9taXNlKCk7XG5cbiAgICBnZXRBZGRyZXNzQm9vayA9IGFzeW5jICgpID0+XG4gICAgICAgIHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5hZGRyZXNzQm9va0FwaSgpKS5waXBlKG1hcChyZXMgPT4gcmVzPy5sZW5ndGggJiYgcmVzLm1hcChhZGRyZXMgPT4geyByZXR1cm4gYWRkcmVzICYmIHsgLi4uYWRkcmVzLCBzZWxlY3RlZDogYWRkcmVzLmRlZmF1bHQgfSB9KSB8fCBudWxsICkpLnRvUHJvbWlzZSgpO1xuXG4gICAgc2V0SGVhZHF1YXJ0ZXIgPSAoc2VkZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24ucHV0KHRoaXMuaGVhZHF1YXJ0ZXJBcGkoKSwgc2VkZS5zZWxlY3RlZClcbiAgICAgICAgICAgIC5waXBlKG1hcChvcmRlciA9PiB7XG4gICAgICAgICAgICBpZiAob3JkZXIgJiYgb3JkZXIuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmNoYW5nZUhhdmVUb1VwZGF0ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UudXBkYXRlQXNvY2lhdGVkRGF0YShvcmRlcik7XG4gICAgICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS5zZXRDaGVja291dE5vdGVzKHNlZGU/LnNlbGVjdGVkPy5ub3RlcyB8fCAnJyk7XG4gICAgICAgICAgICB0aGlzLnNldFN0ZXBSZWFkeShzZWRlLCBvcmRlcik7XG4gICAgICAgICAgICBpZiAodGhpcy5jb25zdHMuZ2V0Q2hlY2tvdXRWaWV3KCkgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UucHJlZmV0Y2hQYXltZW50TWV0aG9kcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgncGF5bWVudF9pbmZvJywgb3JkZXIpO1xuICAgICAgICAgICAgICAgIHJldHVybiBvcmRlcjtcbiAgICAgICAgICAgIH0pKS50b1Byb21pc2UoKS50aGVuKFxuICAgICAgICAgICAgICAgIHJlcyA9PiByZXMsXG4gICAgICAgICAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHJlamVjdChuZXcgRXJyb3IoZXJyLmVycm9yKSkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKS5jYXRjaChlcnIgPT4gY29uc29sZS5lcnJvcihlcnIpKVxuICAgIH1cblxuICAgIHNldEFkZHJlc3MgPSAodXNlcl9kYXRhOiBhbnkpID0+IHtcbiAgICAgICAgdXNlcl9kYXRhLmxvY2FsZSA9IHRoaXMuY29uc3RzLmdldExvY2FsZSgpO1xuXG4gICAgICAgIC8vIHNlIG1vZGlmaWNhIGVsIGPDs2RpZ28gcG9zdGFsIHBhcmEgY2FzdGVhcmxvIGEgU3RyaW5nIGFudGVzIGRlIGVudmlhcmxvXG4gICAgICAgIHVzZXJfZGF0YS5zaGlwcGluZ0FkZHJlc3MucG9zdGNvZGUgPSB1c2VyX2RhdGEuc2hpcHBpbmdBZGRyZXNzLnBvc3Rjb2RlLnRvU3RyaW5nKCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5wdXQodGhpcy5wdXRBZGRyZXNzQXBpKCksIHVzZXJfZGF0YSkucGlwZShtYXAob3JkZXIgPT4ge1xuICAgICAgICAgICAgaWYgKG9yZGVyICYmIG9yZGVyLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5jaGFuZ2VIYXZlVG9VcGRhdGUoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLnVwZGF0ZUFzb2NpYXRlZERhdGEob3JkZXIpO1xuICAgICAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2Uuc2V0Q2hlY2tvdXROb3Rlcyh1c2VyX2RhdGE/Lm5vdGVzIHx8ICcnKTtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RlcFJlYWR5KHVzZXJfZGF0YSwgb3JkZXIpO1xuICAgICAgICAgICAgaWYgKHRoaXMuY29uc3RzLmdldENoZWNrb3V0VmlldygpID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLnByZWZldGNoUGF5bWVudE1ldGhvZHMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5jYWxsRXZlbnQoJ3BheW1lbnRfaW5mbycsIG9yZGVyKTtcbiAgICAgICAgICAgIHJldHVybiBvcmRlcjtcbiAgICAgICAgfSkpLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgICAgICByZXMgPT4gcmVzLFxuICAgICAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gcmVqZWN0KG5ldyBFcnJvcihlcnIuZXJyb3IpKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgKS5jYXRjaChlcnIgPT4gY29uc29sZS5lcnJvcihlcnIpKVxuICAgIH1cblxuICAgIHB1dEFkZHJlc3NBbmRIYW5kbGUgPSAodXNlcl9kYXRhLCBuZXh0Pywgb25FcnJvcj8pID0+IHtcbiAgICAgICAgdXNlcl9kYXRhLmxvY2FsZSA9IHRoaXMuY29uc3RzLmdldExvY2FsZSgpO1xuICAgICAgICBsZXQgZGF0YSA9IHsgc2hpcHBpbmdBZGRyZXNzOiB7IC4uLnVzZXJfZGF0YS5kYXRhIH0gfTtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLnB1dCh0aGlzLnB1dEFkZHJlc3NBcGkoKSwgZGF0YSkudG9Qcm9taXNlKCkudGhlbihcbiAgICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGVwUmVhZHkodXNlcl9kYXRhLCByZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5jYWxsRXZlbnQoJ3BheW1lbnRfaW5mbycsIHJlcyk7XG4gICAgICAgICAgICAgICAgbmV4dCAmJiBuZXh0KCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyID0+IG9uRXJyb3IgJiYgb25FcnJvcihlcnIpXG4gICAgICAgIClcbiAgICB9XG5cbiAgICBnZXRUeXBlRm9ybSA9ICgpID0+IHtcbiAgICAgICAgbGV0IGZvcm1zVHlwZUNvZmlnID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvZGU6ICdFVVInLFxuICAgICAgICAgICAgICAgIGNvbmZpZ0Zvcm06IHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybUFkZHJlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3ROYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0TmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmVOdW1iZXI6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybignWzAtOV0rJyldXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudFR5cGU6IFsnJywgW11dLFxuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnROdW1iZXI6IFsnJywgW11dLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWV0OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCldXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnlDb2RlOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm92aW5jZUNvZGU6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zdGNvZGU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXJtczogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZXM6IFsnJ11cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZm9ybUJpbGxpbmc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0TmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE5hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBob25lTnVtYmVyOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oJ1swLTldKycpXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWFpbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRUeXBlOiBbJycsIFtdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50TnVtYmVyOiBbJycsIFtdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVldDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTApXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5Q29kZTogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjaXR5OiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmluY2VDb2RlOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc3Rjb2RlOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZXM6IFsnJ11cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdmlld0Zvcm1zOiB7XG4gICAgICAgICAgICAgICAgICAgIGZpcnN0TmFtZTogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICBsYXN0TmFtZTogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICBwaG9uZU51bWJlcjogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICBlbWFpbDogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudFR5cGU6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlLCB2YWx1ZXM6IHRoaXMuZG9jdW1lbnRUeXBlcyB9LFxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudE51bWJlcjogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogZmFsc2UsIHZhbHVlczogW10gfSxcbiAgICAgICAgICAgICAgICAgICAgc3RyZWV0OiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIGNvdW50cnlDb2RlOiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIGNpdHk6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUsIHZhbHVlczogW10gfSxcbiAgICAgICAgICAgICAgICAgICAgcHJvdmluY2VDb2RlOiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIHBvc3Rjb2RlOiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIHRlcm1zOiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIG5vdGVzOiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiBmYWxzZSwgdmFsdWVzOiBbXSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2RlOiAnQVJHJyxcbiAgICAgICAgICAgICAgICBjb25maWdGb3JtOiB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1BZGRyZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0TmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE5hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBob25lTnVtYmVyOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oJ1swLTldKycpXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWFpbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRUeXBlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudE51bWJlcjogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWV0OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCldXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnlDb2RlOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm92aW5jZUNvZGU6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zdGNvZGU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlczogWycnXVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBmb3JtQmlsbGluZzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3ROYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0TmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmVOdW1iZXI6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybignWzAtOV0rJyldXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudFR5cGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50TnVtYmVyOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJlZXQ6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKV1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeUNvZGU6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2l0eTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpbmNlQ29kZTogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3N0Y29kZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGVzOiBbJyddXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHZpZXdGb3Jtczoge1xuICAgICAgICAgICAgICAgICAgICBmaXJzdE5hbWU6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUsIHZhbHVlczogW10gfSxcbiAgICAgICAgICAgICAgICAgICAgbGFzdE5hbWU6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUsIHZhbHVlczogW10gfSxcbiAgICAgICAgICAgICAgICAgICAgcGhvbmVOdW1iZXI6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUsIHZhbHVlczogW10gfSxcbiAgICAgICAgICAgICAgICAgICAgZW1haWw6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUsIHZhbHVlczogW10gfSxcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRUeXBlOiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCB2YWx1ZXM6IHRoaXMuZG9jdW1lbnRUeXBlc30sXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50TnVtYmVyOiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIHN0cmVldDogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICBjb3VudHJ5Q29kZTogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICBjaXR5OiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIHByb3ZpbmNlQ29kZTogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICBwb3N0Y29kZTogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICB0ZXJtczogeyBlbmFibGVkOiBmYWxzZSwgcmVxdWlyZWQ6IGZhbHNlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIG5vdGVzOiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiBmYWxzZSwgdmFsdWVzOiBbXSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICBdXG5cbiAgICAgICAgY29uc3QgdHlwZUNvbmZpZyA9IGZvcm1zVHlwZUNvZmlnLmZpbmQoY3QgPT4gY3QuY29kZSA9PSB0aGlzLnR5cGVGb3Jtcyk7XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLmNoZWNrb3V0Tm90ZXNGaWVsZCkge1xuICAgICAgICAgICAgY2FzZSAnaGlkZSc6XG4gICAgICAgICAgICAgICAgdHlwZUNvbmZpZy52aWV3Rm9ybXMubm90ZXMuZW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHR5cGVDb25maWcudmlld0Zvcm1zLm5vdGVzLnJlcXVpcmVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdyZXF1aXJlZCc6XG4gICAgICAgICAgICAgICAgdHlwZUNvbmZpZy52aWV3Rm9ybXMubm90ZXMuZW5hYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdHlwZUNvbmZpZy52aWV3Rm9ybXMubm90ZXMucmVxdWlyZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDogLy8gJ3Nob3cnIG8gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgdHlwZUNvbmZpZy52aWV3Rm9ybXMubm90ZXMuZW5hYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdHlwZUNvbmZpZy52aWV3Rm9ybXMubm90ZXMucmVxdWlyZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5vdGVWYWxpZGF0b3JzID0gdHlwZUNvbmZpZy52aWV3Rm9ybXMubm90ZXMucmVxdWlyZWRcbiAgICAgICAgICAgID8gW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICAgICAgICA6IFtdO1xuICAgICAgICBcbiAgICAgICAgKHR5cGVDb25maWcuY29uZmlnRm9ybS5mb3JtQWRkcmVzIGFzIGFueSkubm90ZXMgID0gWyAnJywgbm90ZVZhbGlkYXRvcnMgXTtcbiAgICAgICAgKHR5cGVDb25maWcuY29uZmlnRm9ybS5mb3JtQmlsbGluZyBhcyBhbnkpLm5vdGVzID0gWyAnJywgbm90ZVZhbGlkYXRvcnMgXTtcblxuICAgICAgICByZXR1cm4gdHlwZUNvbmZpZztcbiAgICB9XG5cbiAgICBzZXRUeXBlU2VsZWN0QWRkcmVzcyA9ICh0eXBlOiB0eXBlU2VsZWN0QWRkcmVzcykgPT4ge1xuICAgICAgICB0aGlzLm1vZGVTZWxlY3RBZGRyZXNzID0gdHlwZSAmJiB0eXBlIHx8ICdMT0FEX0FERFJFU1NfQU5EX1NFTEVDVElPTidcbiAgICB9XG5cbiAgICBzZXRUeXBlRm9ybXMgPSAodHlwZTogdHlwZUZvcm1zKSA9PiB7XG4gICAgICAgIHRoaXMudHlwZUZvcm1zID0gdHlwZSAmJiB0eXBlIHx8ICdBUkcnXG4gICAgfVxufVxuIl19
281
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzc2luZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2NoZWNrb3V0L2FkZHJlc3Npbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7QUFRakUsSUFBYSxpQkFBaUIsR0FBOUIsTUFBYSxpQkFBa0IsU0FBUSxXQUFXO0lBaUI5QyxZQUFvQixVQUE2QixFQUFVLE1BQWlCLEVBQVUsV0FBd0IsRUFBVSxlQUFnQyxFQUM1SSxnQkFBa0MsRUFBVSxhQUFtQztRQUN2RixLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFGUCxlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVc7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUM1SSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtC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RSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQzs0QkFDcEQsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQzs0QkFDdEIsY0FBYyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQzs0QkFDeEIsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7NEJBQzdELFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs0QkFDMUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7NEJBQy9CLFlBQVksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs0QkFDM0MsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7NEJBQ25DLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDOzRCQUNsQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7eUJBQ2Q7d0JBQ0QsV0FBVyxFQUFFOzRCQUNULFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs0QkFDdEMsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzRCQUNyQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzs0QkFDdEUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQ3BE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T0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7NEJBQ3RFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUNwRCxZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7NEJBQ3pDLGNBQWMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs0QkFDM0MsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7NEJBQzdELFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs0QkFDMUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7NEJBQy9CLFlBQVksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs0QkFDM0MsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7NEJBQ25DLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQzt5QkFDZDt3QkFDRCxXQUFXLEVBQUU7NEJBQ1QsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzRCQUN0QyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7NEJBQ3JDLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDOzRCQUN0RSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQzs0QkFDcEQsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzRCQUN6QyxjQUFjLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7NEJBQzNDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOzRCQUM3RCxXQUFXLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7NEJBQzFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDOzRCQUMvQixZQUFZLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7NEJBQzNDLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDOzRCQUNuQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7eUJBQ2Q7cUJBQ0o7b0JBQ0QsU0FBUyxFQUFFO3dCQUNQLFNBQVMsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO3dCQUN4RCxRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTt3QkFDdkQsV0FBVyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7d0JBQzFELEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO3dCQUNwRCxZQUFZLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUM7d0JBQzFFLGNBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO3dCQUM3RCxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTt3QkFDckQsV0FBVyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7d0JBQzFELElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO3dCQUNuRCxZQUFZLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTt3QkFDM0QsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7d0JBQ3ZELEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO3dCQUN0RCxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTtxQkFDeEQ7aUJBQ0o7YUFDSixDQUFBO1lBRUQsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRXhFLFFBQVEsSUFBSSxDQUFDLGtCQUFrQixFQUFFO2dCQUM3QixLQUFLLE1BQU07b0JBQ1AsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztvQkFDM0MsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztvQkFDNUMsTUFBTTtnQkFDVixLQUFLLFVBQVU7b0JBQ1gsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztvQkFDMUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztvQkFDM0MsTUFBTTtnQkFDVixTQUFTLHFCQUFxQjtvQkFDMUIsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztvQkFDMUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQzthQUNuRDtZQUVELE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVE7Z0JBQ3RELENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQ3ZCLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFFUixVQUFVLENBQUMsVUFBVSxDQUFDLFVBQWtCLENBQUMsS0FBSyxHQUFJLENBQUUsRUFBRSxFQUFFLGNBQWMsQ0FBRSxDQUFDO1lBQ3pFLFVBQVUsQ0FBQyxVQUFVLENBQUMsV0FBbUIsQ0FBQyxLQUFLLEdBQUcsQ0FBRSxFQUFFLEVBQUUsY0FBYyxDQUFFLENBQUM7WUFFMUUsT0FBTyxVQUFVLENBQUM7UUFDdEIsQ0FBQyxDQUFBO1FBRUQseUJBQW9CLEdBQUcsQ0FBQyxJQUF1QixFQUFFLEVBQUU7WUFDL0MsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksSUFBSSxJQUFJLElBQUksNEJBQTRCLENBQUE7UUFDekUsQ0FBQyxDQUFBO1FBRUQsaUJBQVksR0FBRyxDQUFDLElBQWUsRUFBRSxFQUFFO1lBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLENBQUE7UUFDMUMsQ0FBQyxDQUFBO1FBbFBHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTs7WUFDaEMsSUFBSSxHQUFHLEVBQUU7Z0JBQ0wsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFBLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQywwQ0FBRSxhQUFhLEtBQUksRUFBRSxDQUFBO2dCQUNySixJQUFJLENBQUMsWUFBWSxHQUFHLE9BQUEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDLDBDQUFFLFNBQVMsS0FBSSxFQUFFLENBQUE7Z0JBQ2hKLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFBO2FBQzNCO1FBQ0wsQ0FBQyxDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWM7YUFDNUIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFOztZQUNiLElBQUksQ0FBQyxrQkFBa0IsU0FBRyxHQUFHLDBDQUFFLGtCQUFrQixDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELFFBQVE7SUFFUixDQUFDO0NBb09KLENBQUE7O1lBdFBtQyxpQkFBaUI7WUFBa0IsU0FBUztZQUF1QixXQUFXO1lBQTJCLGVBQWU7WUFDMUgsZ0JBQWdCO1lBQXlCLG9CQUFvQjs7O0FBbEJsRixpQkFBaUI7SUFIN0IsVUFBVSxDQUFDO1FBQ1IsVUFBVSxFQUFFLE1BQU07S0FDckIsQ0FBQztHQUNXLGlCQUFpQixDQXVRN0I7U0F2UVksaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcGkvY29ubmVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvcmUuY29uc3RzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vY2FydC5zZXJ2aWNlJztcbmltcG9ydCB7IENoZWNrb3V0U2VydmljZSB9IGZyb20gJy4vY2hlY2tvdXQuc2VydmljZSc7XG5pbXBvcnQgeyBTdGVwU2VydmljZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvY2hlY2tvdXQvc3RlcC1zZXJ2aWNlJztcbmltcG9ydCB7IFBhcmFtZXRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vcGFyYW1ldGVycy5zZXJ2aWNlJztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuLi9hbmFseXRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ2hhbm5lbENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9jaGFubmVsLWNvbmZpZy5zZXJ2aWNlJztcblxudHlwZSB0eXBlRm9ybXMgPSAnRVVSJyB8ICdBUkcnO1xudHlwZSB0eXBlU2VsZWN0QWRkcmVzcyA9ICdPTkxZX0xPQURfQUREUkVTUycgfCAnT05MWV9BRERSRVNTX1NFTEVDVElPTicgfCAnTE9BRF9BRERSRVNTX0FORF9TRUxFQ1RJT04nO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFkZHJlc3NpbmdTZXJ2aWNlIGV4dGVuZHMgU3RlcFNlcnZpY2Uge1xuXG4gICAgYmFzZUFwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy8nICsgJ2NoZWNrb3V0LycgKyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpO1xuICAgIGNvdW50cmllc0FwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9jb3VudHJpZXMnO1xuICAgIHpvbmVzQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL3pvbmVzJztcbiAgICBwcm92aW5jZXNBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvcHJvdmluY2VzJztcbiAgICBwdXRBZGRyZXNzQXBpID0gKCkgPT4gdGhpcy5iYXNlQXBpKCkgKyAnL2FkZHJlc3MnO1xuICAgIGFkZHJlc3NCb29rQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL2FkZHJlc3MtYm9vayc7XG4gICAgaGVhZHF1YXJ0ZXJBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvY2hlY2tvdXQvJyArIHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCkgKycvaGVhZHF1YXJ0ZXInO1xuXG4gICAgcHVibGljIHR5cGVGb3JtczogdHlwZUZvcm1zID0gJ0FSRyc7XG4gICAgcHVibGljIG1vZGVTZWxlY3RBZGRyZXNzOiB0eXBlU2VsZWN0QWRkcmVzcyA9ICdMT0FEX0FERFJFU1NfQU5EX1NFTEVDVElPTic7XG4gICAgcHVibGljIGNvdW50cmllc0xpc3QgPSBbXTtcbiAgICBwdWJsaWMgZG9jdW1lbnRUeXBlcyA9IFtdO1xuICAgIHB1YmxpYyBwcm92aW5jZUxpc3QgPSBbXTtcbiAgICBwdWJsaWMgY2hlY2tvdXROb3Rlc0ZpZWxkOiAnc2hvdyd8J3JlcXVpcmVkJ3wnaGlkZSd8dW5kZWZpbmVkO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25uZWN0aW9uOiBDb25uZWN0aW9uU2VydmljZSwgcHJpdmF0ZSBjb25zdHM6IENvbnN0YW50cywgcHJpdmF0ZSBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsIHByaXZhdGUgY2hlY2tvdXRTZXJ2aWNlOiBDaGVja291dFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSwgcHJpdmF0ZSBjaGFubmVsQ29uZmlnOiBDaGFubmVsQ29uZmlnU2VydmljZSkge1xuICAgICAgICBzdXBlcihjaGVja291dFNlcnZpY2UpO1xuICAgICAgICB0aGlzLmdldEFkZHJlc3NpbmdEYXRhKCkudGhlbihyZXMgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRUeXBlcyA9IChyZXMuZmluZChwYWlzZXMgPT4gdGhpcy5jb25zdHMuZ2V0TG9jYWxlKCkudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcyhwYWlzZXMuY29kZS50b0xvY2FsZUxvd2VyQ2FzZSgpKSkpPy5kb2N1bWVudFR5cGVzIHx8IFtdXG4gICAgICAgICAgICAgICAgdGhpcy5wcm92aW5jZUxpc3QgPSAocmVzLmZpbmQocGFpc2VzID0+IHRoaXMuY29uc3RzLmdldExvY2FsZSgpLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMocGFpc2VzLmNvZGUudG9Mb2NhbGVMb3dlckNhc2UoKSkpKT8ucHJvdmluY2VzIHx8IFtdXG4gICAgICAgICAgICAgICAgdGhpcy5jb3VudHJpZXNMaXN0ID0gcmVzXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIHRoaXMuY2hhbm5lbENvbmZpZy5jaGFubmVsQ29uZmlnJFxuICAgICAgICAgICAgLnN1YnNjcmliZShjZmcgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tvdXROb3Rlc0ZpZWxkID0gY2ZnPy5jaGVja291dE5vdGVzRmllbGQ7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcblxuICAgIH1cblxuICAgIGdldEFkZHJlc3NpbmdEYXRhID0gYXN5bmMgKCkgPT5cbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmNvdW50cmllc0FwaSgpKS5waXBlKG1hcChyZXMgPT4gcmVzPy5fZW1iZWRkZWQ/Lml0ZW1zKSkudG9Qcm9taXNlKCk7XG5cbiAgICBnZXRBZGRyZXNzQm9vayA9IGFzeW5jICgpID0+XG4gICAgICAgIHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5hZGRyZXNzQm9va0FwaSgpKS5waXBlKG1hcChyZXMgPT4gcmVzPy5sZW5ndGggJiYgcmVzLm1hcChhZGRyZXMgPT4geyByZXR1cm4gYWRkcmVzICYmIHsgLi4uYWRkcmVzLCBzZWxlY3RlZDogYWRkcmVzLmRlZmF1bHQgfSB9KSB8fCBudWxsICkpLnRvUHJvbWlzZSgpO1xuXG4gICAgc2V0SGVhZHF1YXJ0ZXIgPSAoc2VkZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24ucHV0KHRoaXMuaGVhZHF1YXJ0ZXJBcGkoKSwgc2VkZS5zZWxlY3RlZClcbiAgICAgICAgICAgIC5waXBlKG1hcChvcmRlciA9PiB7XG4gICAgICAgICAgICBpZiAob3JkZXIgJiYgb3JkZXIuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmNoYW5nZUhhdmVUb1VwZGF0ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UudXBkYXRlQXNvY2lhdGVkRGF0YShvcmRlcik7XG4gICAgICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS5zZXRDaGVja291dE5vdGVzKHNlZGU/LnNlbGVjdGVkPy5ub3RlcyB8fCAnJyk7XG4gICAgICAgICAgICB0aGlzLnNldFN0ZXBSZWFkeShzZWRlLCBvcmRlcik7XG4gICAgICAgICAgICBpZiAodGhpcy5jb25zdHMuZ2V0Q2hlY2tvdXRWaWV3KCkgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UucHJlZmV0Y2hQYXltZW50TWV0aG9kcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgncGF5bWVudF9pbmZvJywgb3JkZXIpO1xuICAgICAgICAgICAgICAgIHJldHVybiBvcmRlcjtcbiAgICAgICAgICAgIH0pKS50b1Byb21pc2UoKS50aGVuKFxuICAgICAgICAgICAgICAgIHJlcyA9PiByZXMsXG4gICAgICAgICAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHJlamVjdChuZXcgRXJyb3IoZXJyLmVycm9yKSkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKS5jYXRjaChlcnIgPT4gY29uc29sZS5lcnJvcihlcnIpKVxuICAgIH1cblxuICAgIHNldEhlYWRxdWFydGVyQnlJZHMgPSAoZGF0YTogeyBzaGlwcGluZ0FkZHJlc3NJZDogbnVtYmVyLCBiaWxsaW5nQWRkcmVzc0lkOiBudW1iZXIsIG5vdGVzOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9uLnB1dCh0aGlzLmhlYWRxdWFydGVyQXBpKCksIGRhdGEpXG4gICAgICAgICAgICAucGlwZShtYXAob3JkZXIgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChvcmRlciAmJiBvcmRlci5lcnJvcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmNoYW5nZUhhdmVUb1VwZGF0ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UudXBkYXRlQXNvY2lhdGVkRGF0YShvcmRlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2Uuc2V0Q2hlY2tvdXROb3RlcyhkYXRhPy5ub3RlcyB8fCAnJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGVwUmVhZHkoZGF0YSwgb3JkZXIpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnN0cy5nZXRDaGVja291dFZpZXcoKSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UucHJlZmV0Y2hQYXltZW50TWV0aG9kcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UuY2FsbEV2ZW50KCdwYXltZW50X2luZm8nLCBvcmRlcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9yZGVyO1xuICAgICAgICAgICAgfSkpLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgICAgICAgICAgcmVzID0+IHJlcyxcbiAgICAgICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gcmVqZWN0KG5ldyBFcnJvcihlcnIuZXJyb3IpKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApLmNhdGNoKGVyciA9PiBjb25zb2xlLmVycm9yKGVycikpXG4gICAgfVxuXG4gICAgc2V0QWRkcmVzcyA9ICh1c2VyX2RhdGE6IGFueSkgPT4ge1xuICAgICAgICB1c2VyX2RhdGEubG9jYWxlID0gdGhpcy5jb25zdHMuZ2V0TG9jYWxlKCk7XG5cbiAgICAgICAgLy8gc2UgbW9kaWZpY2EgZWwgY8OzZGlnbyBwb3N0YWwgcGFyYSBjYXN0ZWFybG8gYSBTdHJpbmcgYW50ZXMgZGUgZW52aWFybG9cbiAgICAgICAgdXNlcl9kYXRhLnNoaXBwaW5nQWRkcmVzcy5wb3N0Y29kZSA9IHVzZXJfZGF0YS5zaGlwcGluZ0FkZHJlc3MucG9zdGNvZGUudG9TdHJpbmcoKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9uLnB1dCh0aGlzLnB1dEFkZHJlc3NBcGkoKSwgdXNlcl9kYXRhKS5waXBlKG1hcChvcmRlciA9PiB7XG4gICAgICAgICAgICBpZiAob3JkZXIgJiYgb3JkZXIuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmNoYW5nZUhhdmVUb1VwZGF0ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UudXBkYXRlQXNvY2lhdGVkRGF0YShvcmRlcik7XG4gICAgICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS5zZXRDaGVja291dE5vdGVzKHVzZXJfZGF0YT8ubm90ZXMgfHwgJycpO1xuICAgICAgICAgICAgdGhpcy5zZXRTdGVwUmVhZHkodXNlcl9kYXRhLCBvcmRlcik7XG4gICAgICAgICAgICBpZiAodGhpcy5jb25zdHMuZ2V0Q2hlY2tvdXRWaWV3KCkgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UucHJlZmV0Y2hQYXltZW50TWV0aG9kcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgncGF5bWVudF9pbmZvJywgb3JkZXIpO1xuICAgICAgICAgICAgcmV0dXJuIG9yZGVyO1xuICAgICAgICB9KSkudG9Qcm9taXNlKCkudGhlbihcbiAgICAgICAgICAgIHJlcyA9PiByZXMsXG4gICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiByZWplY3QobmV3IEVycm9yKGVyci5lcnJvcikpKVxuICAgICAgICAgICAgfVxuICAgICAgICApLmNhdGNoKGVyciA9PiBjb25zb2xlLmVycm9yKGVycikpXG4gICAgfVxuXG4gICAgcHV0QWRkcmVzc0FuZEhhbmRsZSA9ICh1c2VyX2RhdGEsIG5leHQ/LCBvbkVycm9yPykgPT4ge1xuICAgICAgICB1c2VyX2RhdGEubG9jYWxlID0gdGhpcy5jb25zdHMuZ2V0TG9jYWxlKCk7XG4gICAgICAgIGxldCBkYXRhID0geyBzaGlwcGluZ0FkZHJlc3M6IHsgLi4udXNlcl9kYXRhLmRhdGEgfSB9O1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb24ucHV0KHRoaXMucHV0QWRkcmVzc0FwaSgpLCBkYXRhKS50b1Byb21pc2UoKS50aGVuKFxuICAgICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0ZXBSZWFkeSh1c2VyX2RhdGEsIHJlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgncGF5bWVudF9pbmZvJywgcmVzKTtcbiAgICAgICAgICAgICAgICBuZXh0ICYmIG5leHQoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnIgPT4gb25FcnJvciAmJiBvbkVycm9yKGVycilcbiAgICAgICAgKVxuICAgIH1cblxuICAgIGdldFR5cGVGb3JtID0gKCkgPT4ge1xuICAgICAgICBsZXQgZm9ybXNUeXBlQ29maWcgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29kZTogJ0VVUicsXG4gICAgICAgICAgICAgICAgY29uZmlnRm9ybToge1xuICAgICAgICAgICAgICAgICAgICBmb3JtQWRkcmVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaXJzdE5hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3ROYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwaG9uZU51bWJlcjogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5wYXR0ZXJuKCdbMC05XSsnKV1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW1haWw6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50VHlwZTogWycnLCBbXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudE51bWJlcjogWycnLCBbXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJlZXQ6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKV1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeUNvZGU6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2l0eTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpbmNlQ29kZTogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3N0Y29kZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlcm1zOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlczogWycnXVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBmb3JtQmlsbGluZzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3ROYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0TmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmVOdW1iZXI6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybignWzAtOV0rJyldXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudFR5cGU6IFsnJywgW11dLFxuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnROdW1iZXI6IFsnJywgW11dLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWV0OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCldXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnlDb2RlOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm92aW5jZUNvZGU6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zdGNvZGU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlczogWycnXVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB2aWV3Rm9ybXM6IHtcbiAgICAgICAgICAgICAgICAgICAgZmlyc3ROYW1lOiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIGxhc3ROYW1lOiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIHBob25lTnVtYmVyOiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIGVtYWlsOiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50VHlwZTogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogZmFsc2UsIHZhbHVlczogdGhpcy5kb2N1bWVudFR5cGVzIH0sXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50TnVtYmVyOiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiBmYWxzZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICBzdHJlZXQ6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUsIHZhbHVlczogW10gfSxcbiAgICAgICAgICAgICAgICAgICAgY291bnRyeUNvZGU6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUsIHZhbHVlczogW10gfSxcbiAgICAgICAgICAgICAgICAgICAgY2l0eTogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICBwcm92aW5jZUNvZGU6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUsIHZhbHVlczogW10gfSxcbiAgICAgICAgICAgICAgICAgICAgcG9zdGNvZGU6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUsIHZhbHVlczogW10gfSxcbiAgICAgICAgICAgICAgICAgICAgdGVybXM6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUsIHZhbHVlczogW10gfSxcbiAgICAgICAgICAgICAgICAgICAgbm90ZXM6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlLCB2YWx1ZXM6IFtdIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvZGU6ICdBUkcnLFxuICAgICAgICAgICAgICAgIGNvbmZpZ0Zvcm06IHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybUFkZHJlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3ROYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0TmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmVOdW1iZXI6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybignWzAtOV0rJyldXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudFR5cGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50TnVtYmVyOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJlZXQ6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKV1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeUNvZGU6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2l0eTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpbmNlQ29kZTogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3N0Y29kZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGVzOiBbJyddXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGZvcm1CaWxsaW5nOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaXJzdE5hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3ROYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwaG9uZU51bWJlcjogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5wYXR0ZXJuKCdbMC05XSsnKV1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW1haWw6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50VHlwZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnROdW1iZXI6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVldDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTApXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5Q29kZTogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjaXR5OiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmluY2VDb2RlOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc3Rjb2RlOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZXM6IFsnJ11cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdmlld0Zvcm1zOiB7XG4gICAgICAgICAgICAgICAgICAgIGZpcnN0TmFtZTogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICBsYXN0TmFtZTogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICBwaG9uZU51bWJlcjogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICBlbWFpbDogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudFR5cGU6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUsIHZhbHVlczogdGhpcy5kb2N1bWVudFR5cGVzfSxcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnROdW1iZXI6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUsIHZhbHVlczogW10gfSxcbiAgICAgICAgICAgICAgICAgICAgc3RyZWV0OiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIGNvdW50cnlDb2RlOiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIGNpdHk6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUsIHZhbHVlczogW10gfSxcbiAgICAgICAgICAgICAgICAgICAgcHJvdmluY2VDb2RlOiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIHBvc3Rjb2RlOiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIHRlcm1zOiB7IGVuYWJsZWQ6IGZhbHNlLCByZXF1aXJlZDogZmFsc2UsIHZhbHVlczogW10gfSxcbiAgICAgICAgICAgICAgICAgICAgbm90ZXM6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlLCB2YWx1ZXM6IFtdIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIF1cblxuICAgICAgICBjb25zdCB0eXBlQ29uZmlnID0gZm9ybXNUeXBlQ29maWcuZmluZChjdCA9PiBjdC5jb2RlID09IHRoaXMudHlwZUZvcm1zKTtcblxuICAgICAgICBzd2l0Y2ggKHRoaXMuY2hlY2tvdXROb3Rlc0ZpZWxkKSB7XG4gICAgICAgICAgICBjYXNlICdoaWRlJzpcbiAgICAgICAgICAgICAgICB0eXBlQ29uZmlnLnZpZXdGb3Jtcy5ub3Rlcy5lbmFibGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdHlwZUNvbmZpZy52aWV3Rm9ybXMubm90ZXMucmVxdWlyZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3JlcXVpcmVkJzpcbiAgICAgICAgICAgICAgICB0eXBlQ29uZmlnLnZpZXdGb3Jtcy5ub3Rlcy5lbmFibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0eXBlQ29uZmlnLnZpZXdGb3Jtcy5ub3Rlcy5yZXF1aXJlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OiAvLyAnc2hvdycgbyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB0eXBlQ29uZmlnLnZpZXdGb3Jtcy5ub3Rlcy5lbmFibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0eXBlQ29uZmlnLnZpZXdGb3Jtcy5ub3Rlcy5yZXF1aXJlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgbm90ZVZhbGlkYXRvcnMgPSB0eXBlQ29uZmlnLnZpZXdGb3Jtcy5ub3Rlcy5yZXF1aXJlZFxuICAgICAgICAgICAgPyBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgICAgICAgIDogW107XG4gICAgICAgIFxuICAgICAgICAodHlwZUNvbmZpZy5jb25maWdGb3JtLmZvcm1BZGRyZXMgYXMgYW55KS5ub3RlcyAgPSBbICcnLCBub3RlVmFsaWRhdG9ycyBdO1xuICAgICAgICAodHlwZUNvbmZpZy5jb25maWdGb3JtLmZvcm1CaWxsaW5nIGFzIGFueSkubm90ZXMgPSBbICcnLCBub3RlVmFsaWRhdG9ycyBdO1xuXG4gICAgICAgIHJldHVybiB0eXBlQ29uZmlnO1xuICAgIH1cblxuICAgIHNldFR5cGVTZWxlY3RBZGRyZXNzID0gKHR5cGU6IHR5cGVTZWxlY3RBZGRyZXNzKSA9PiB7XG4gICAgICAgIHRoaXMubW9kZVNlbGVjdEFkZHJlc3MgPSB0eXBlICYmIHR5cGUgfHwgJ0xPQURfQUREUkVTU19BTkRfU0VMRUNUSU9OJ1xuICAgIH1cblxuICAgIHNldFR5cGVGb3JtcyA9ICh0eXBlOiB0eXBlRm9ybXMpID0+IHtcbiAgICAgICAgdGhpcy50eXBlRm9ybXMgPSB0eXBlICYmIHR5cGUgfHwgJ0FSRydcbiAgICB9XG59XG4iXX0=