vcomply-workflow-engine 3.7.2 → 3.7.4

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.
@@ -391,8 +391,8 @@ export class AddMultipleResponsibilityWithTabComponent {
391
391
  : month);
392
392
  date_value.setFullYear(Number(20 + month.split("'")[1]));
393
393
  date_value.setDate(Number(day));
394
- if (currentDate.toJSON().split('T')[0] !=
395
- date_value.toJSON().split('T')[0] &&
394
+ if (currentDate?.toJSON()?.split('T')[0] !=
395
+ date_value?.toJSON()?.split('T')[0] &&
396
396
  currentDate > date_value) {
397
397
  return false;
398
398
  }
@@ -1566,4 +1566,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1566
1566
  }], featureflag: [{
1567
1567
  type: Input
1568
1568
  }] } });
1569
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LXdpdGgtdGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS13aXRoLXRhYi9hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHktd2l0aC10YWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LXdpdGgtdGFiL2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS13aXRoLXRhYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxHQUliLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBQ25DLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7QUFpQjdCLE1BQU0sT0FBTyx5Q0FBeUM7SUFzQnBELElBQTJCLGdCQUFnQixDQUFDLElBQVM7UUFDbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBdUZELFlBQ1UsV0FBMkIsRUFDM0IscUJBQTRDLEVBQzVDLFdBQXdCLEVBQ3hCLGdCQUFzQyxFQUN0QyxRQUF5QjtRQUp6QixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXNCO1FBQ3RDLGFBQVEsR0FB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QU8sRUFBRTtZQUM5RCxJQUNFLFNBQVMsQ0FBQyxZQUFZLElBQUksSUFBSTtnQkFDOUIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3JELE9BQU8sU0FBUyxFQUFFLFlBQVksSUFBSSxRQUFRLEVBQzFDO2dCQUNBLE9BQU8sR0FBRyxJQUFJLENBQUM7YUFDaEI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7K0dBbnFEVSx5Q0FBeUM7bUdBQXpDLHlDQUF5Qyw0Y0M3QnRELCtxRkErQ2dNOzs0RkRsQm5MLHlDQUF5QztrQkFSckQsU0FBUzsrQkFDRSwwQ0FBMEM7b09BUTFDLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFFRyw4QkFBOEI7c0JBQXZDLE1BQU07Z0JBZ0JvQixnQkFBZ0I7c0JBQTFDLEtBQUs7dUJBQUMsY0FBYztnQkFHWixVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFrRkcsV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XHJcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50L21vbWVudCc7XHJcbmltcG9ydCAqIGFzIFhMU1ggZnJvbSAneGxzeCc7XHJcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBZGRSaXNrU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2FkZC1yaXNrLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IEZyZXF1ZW5jeUJ1bGtTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvZnJlcXVlbmN5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZXNwb25zaWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9yZXNwb25zaWJpbGl0eS5zZXJ2aWNlJztcclxuXHJcbnR5cGUgQU9BID0gYW55W11bXTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWFkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS13aXRoLXRhYicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS13aXRoLXRhYi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbXHJcbiAgICAnLi9hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHktd2l0aC10YWIuY29tcG9uZW50Lmxlc3MnLFxyXG4gICAgJy4uL2Zvcm1zLmxlc3MnLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZGRNdWx0aXBsZVJlc3BvbnNpYmlsaXR5V2l0aFRhYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQE91dHB1dCgpIHBpY2tlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHBvcHVsYXRlT3B0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjbG9zZVdvcmtmbG93ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkaXNjb25uZWN0UmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBpc05vdGlmaWNhdGlvblBlbmRpbmcgPSAwO1xyXG4gIEBPdXRwdXQoKSBjbG9zZUFkZE11bHRpcGxlUmVzcG9uc2liaWxpdHkgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgcXVlcnlQYXJhbTogc3RyaW5nID0gJyc7XHJcbiAgcmVjZW50UmVzcG9uc2liaWxpdHlVcmw6IGFueSA9IHtcclxuICAgIGJ5UmVzcG9uc2liaWxpdGllczogeyB0eXBlOiBbJ3JlY2VudF9yZXNwb25zaWJpbGl0aWVzJ10sIHN1YlR5cGU6IFsnQ0MnXSB9LFxyXG4gICAgYnlTdGF0dXM6IHsgdHlwZTogW10sIHN1YlR5cGU6IFtdIH0sXHJcbiAgICBmaWx0ZXJPYmplY3Q6IHtcclxuICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IFtdLFxyXG4gICAgICBlbnRydXN0ZWRCeTogW10sXHJcbiAgICAgIGVudHJ1c3RlZFRvOiBbXSxcclxuICAgICAgcmlza0lkczogW10sXHJcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IFtdLFxyXG4gICAgfSxcclxuICAgIHRpbWVQZXJpb2REZXRhaWxzOiB7IHR5cGU6ICcnLCBzZWxlY3RlZFBlcmlvZDogJycsIHNlbGVjdGVkWWVhcjogJycgfSxcclxuICAgIHN0YXR1czogJycsXHJcbiAgfTtcclxuXHJcbiAgQElucHV0KCd1cGxvYWRlZEZpbGUnKSBzZXQgdXBsb2FkZWRGaWxlRGF0YShkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMudXBsb2FkZWRGaWxlKGRhdGEpO1xyXG4gIH1cclxuICBASW5wdXQoKSBvcmdEZXRhaWxzITogYW55O1xyXG4gIEBJbnB1dCgpIGZlYXR1cmUhOiBhbnk7XHJcblxyXG4gIHVybCA9XHJcbiAgICAncT17XCJieVJlc3BvbnNpYmlsaXRpZXNcIjp7XCJ0eXBlXCI6W1wicmVzcG9uc2liaWxpdGllc19pbl9xdWV1ZVwiXSxcInN1YlR5cGVcIjpbXCJDQ1wiXX0sXCJieVN0YXR1c1wiOntcInR5cGVcIjpbXCJyZXNwb25zaWJpbGl0aWVzX2luX3F1ZXVlXCJdLFwic3ViVHlwZVwiOltdfSxcImZpbHRlck9iamVjdFwiOntcInJlc3BvbnNpYmlsaXR5Q2VudGVyXCI6W10sXCJlbnRydXN0ZWRCeVwiOltdLFwiZW50cnVzdGVkVG9cIjpbXSxcInJpc2tJZHNcIjpbXSxcInJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnlcIjpbXX0sXCJ0aW1lUGVyaW9kRGV0YWlsc1wiOntcInR5cGVcIjpcIlwiLFwic2VsZWN0ZWRQZXJpb2RcIjpcIlwiLFwic2VsZWN0ZWRZZWFyXCI6XCJcIn0sXCJzdGF0dXNcIjpcIlwifSc7XHJcbiAgcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkOiBhbnkgPSB7XHJcbiAgICBoZWFkZXI6IFtdLFxyXG4gICAgcmVwb3J0czogW10sXHJcbiAgfTtcclxuICB0YWJUeXBlOiAnZnJlcXVlbmN5JyB8ICdvbmdvaW5nJyB8ICdvbkNvbXBsZXRpb24nID0gJ2ZyZXF1ZW5jeSc7XHJcbiAgdGFiSW5kZXg6IGFueSA9IHtcclxuICAgIGZyZXF1ZW5jeTogMCxcclxuICAgIG9uZ29pbmc6IDEsXHJcbiAgICBvbkNvbXBsZXRpb246IDIsXHJcbiAgfTtcclxuXHJcbiAgYnVsa1VwbG9hZDogYW55ID0ge1xyXG4gICAgZnJlcXVlbmN5OiB7XHJcbiAgICAgIGhlYWRlcjogW10sXHJcbiAgICAgIHN1YkhlYWRpbmc6IFtdLFxyXG4gICAgICByZXBvcnRzOiBbXSxcclxuICAgIH0sXHJcbiAgICBvbmdvaW5nOiB7XHJcbiAgICAgIGhlYWRlcjogW10sXHJcbiAgICAgIHN1YkhlYWRpbmc6IFtdLFxyXG4gICAgICByZXBvcnRzOiBbXSxcclxuICAgIH0sXHJcbiAgICBvbkNvbXBsZXRpb246IHtcclxuICAgICAgaGVhZGVyOiBbXSxcclxuICAgICAgc3ViSGVhZGluZzogW10sXHJcbiAgICAgIHJlcG9ydHM6IFtdLFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICB0ZW1wbGF0ZUluZm86IGFueSA9IHtcclxuICAgIGNhdGVnb3J5TGlzdDogW10sXHJcbiAgICByY0xpc3Q6IFtdLFxyXG4gICAgYXNzaWdub3JzTGlzdDogW10sXHJcbiAgICBhc3NpZ25lZXNMaXN0OiBbXSxcclxuICAgIHJldmlld2VyTGlzdDogW10sXHJcbiAgICBwYXJlbnRSZXNwb25zaWJpbGl0eTogW10sXHJcbiAgICBtZW1iZXJJZDogJycsXHJcbiAgfTtcclxuICBpc0xvYWRlciA9IGZhbHNlO1xyXG4gIHNob3dDYXRlZ29yeUxpc3QgPSBmYWxzZTtcclxuICB0ZW1wbGF0ZURvd25sb2FkZWQgPSBmYWxzZTtcclxuICBkb3dubG9hZEluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICBsb2FkZXIgPSBmYWxzZTtcclxuICBpc0ZpbGVFbXB0eSA9IGZhbHNlO1xyXG4gIGlzV3JvbmdGaWxlID0gZmFsc2U7XHJcbiAgaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xyXG4gIGZpbGVOYW1lOiBhbnk7XHJcbiAgZGF0YTogYW55O1xyXG4gIHNob3dFeGNlbCA9IGZhbHNlO1xyXG4gIHVwbG9hZGVkRmlsZXM6IGFueSA9IFtdO1xyXG4gIGZpbGVSZXNwb25zZTogYW55ID0gW107XHJcbiAgZmlsZVZhbHVlOiBhbnk7XHJcbiAgbWVtYmVySWQgPSAwO1xyXG4gIG9yZ2FuaXphdGlvbklkID0gMDtcclxuICBlcnJvck1lc3NhZ2UgPSAnIGludmFsaWQgZmlsZSBlcnJvcic7XHJcbiAgZG93bmxvYWRTdGF0dXM6IHN0cmluZyA9ICdOT1RfRE9XTkxPQURJTkcnO1xyXG4gIGRvd25sb2FkUGVyY2VudCA9IDA7XHJcbiAgZGVmYXVsdE93bmVyID0gJyc7XHJcbiAgc21pbGV5TWVzc2FnZSA9IGBZb3UncmUgQWxsIFNldCEgV2UncmUgcHJvY2Vzc2luZyB5b3VyIHJlcXVlc3QgYW5kIHlvdSB3aWxsIGJlIG5vdGlmaWVkIHZpYSBlbWFpbCB1cG9uIGNvbXBsZXRpb24uYDtcclxuICBhY3Rpb25CdXR0b25zID0gW1xyXG4gICAge1xyXG4gICAgICBidXR0b25UZXh0OiAnRW50cnVzdCBNb3JlIFJlc3BvbnNpYmlsaXRpZXMnLFxyXG4gICAgICBjbGFzczogJ3doaXRlLWJ0bicsXHJcbiAgICAgIGlkOiAnYWRkTW9yZScsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBidXR0b25UZXh0OiB0aGlzLmlzTm90aWZpY2F0aW9uUGVuZGluZ1xyXG4gICAgICAgID8gJ1ZpZXcgUmVzcG9uc2liaWxpdGllcyBJbiBRdWV1ZSdcclxuICAgICAgICA6ICdWaWV3IFJlc3BvbnNpYmlsaXRpZXMnLFxyXG4gICAgICBjbGFzczogJ2JsdWUtYnRuJyxcclxuICAgICAgaWQ6ICd2aWV3JyxcclxuICAgIH0sXHJcbiAgXTtcclxuICBzaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgbWVtYmVyX29ial9pZCA9ICcnO1xyXG4gIHJpc2tDbGFzc0VuYWJsZWQ6IGFueTtcclxuICB1c2VySW5mbyE6IGFueTtcclxuICByZXNwb25zaWJpbGl0eURhdGEhOiBhbnk7XHJcbiAgQElucHV0KCkgZmVhdHVyZWZsYWc6IGFueTtcclxuICBmZkJ1bGtVcGxvYWRPcHRpbWl6YXRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJpc2tTZXJ2aWNlOiBBZGRSaXNrU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVzcG9uc2liaWxpdHlTZXJ2aWNlOiBSZXNwb25zaWJpbGl0eVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgZnJlcXVlbmN5U2VydmljZTogRnJlcXVlbmN5QnVsa1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBTbmFja0JhclNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHt9XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgICB0aGlzLm9yZ2FuaXphdGlvbklkID0gdGhpcy5hdXRoU2VydmljZS5nZXRPcmdhbml6YXRpb25JZCgpO1xyXG4gICAgdGhpcy5tZW1iZXJJZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0TWVtYmVySWQoKTtcclxuICAgIHRoaXMubWVtYmVyX29ial9pZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlckRldGFpbHMoKS5faWQ7XHJcbiAgICB0aGlzLnVzZXJJbmZvID0gdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyRGV0YWlscygpLnVzZXI7XHJcbiAgICB0aGlzLmRlZmF1bHRPd25lciA9IHRoaXMudXNlckluZm9cclxuICAgICAgPyB0aGlzLnVzZXJJbmZvLm5hbWUgKyAnICgnICsgdGhpcy51c2VySW5mby5lbWFpbCArICcpJ1xyXG4gICAgICA6ICcnO1xyXG4gICAgdGhpcy5nZXRVc2VyRGV0YWlscygpO1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5nZXRPcmdhbml6YXRpb25EZXRhaWxzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnJpc2tDbGFzc0VuYWJsZWQgPSByZXMuZW5hYmxlX3Jpc2tjbGFzcztcclxuICAgIH0pO1xyXG4gICAgdGhpcy5mZkJ1bGtVcGxvYWRPcHRpbWl6YXRpb24gPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcclxuICAgICAgJ2ZmX2J1bGtfdXBsb2FkX29wdGltaXphdGlvbidcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB0cmlnZ2VyQnJvd3NlRmlsZSgpIHtcclxuICAgIGNvbnN0IGdldEZpbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmlsZUlucHV0Jyk7XHJcbiAgICBpZiAoZ2V0RmlsZSkge1xyXG4gICAgICBnZXRGaWxlLmNsaWNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldFVzZXJEZXRhaWxzKCkge1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5nZXRVc2VySW5mbygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5pc05vdGlmaWNhdGlvblBlbmRpbmcgPSByZXMubm90aWZpY2F0aW9uX3BlbmRpbmdfZmxhZztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkZWRGaWxlKGV2ZW50OiBhbnksIHRhYlR5cGU/OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkID0ge1xyXG4gICAgICAgIGhlYWRlcjogW10sXHJcbiAgICAgICAgcmVwb3J0czogW10sXHJcbiAgICAgIH07XHJcblxyXG4gICAgICB0aGlzLnRlbXBsYXRlSW5mbyA9IHtcclxuICAgICAgICBjYXRlZ29yeUxpc3Q6IFtdLFxyXG4gICAgICAgIHJjTGlzdDogW10sXHJcbiAgICAgICAgYXNzaWdub3JzTGlzdDogW10sXHJcbiAgICAgICAgYXNzaWduZWVzTGlzdDogW10sXHJcbiAgICAgICAgcmV2aWV3ZXJMaXN0OiBbXSxcclxuICAgICAgICBwYXJlbnRSZXNwb25zaWJpbGl0eTogW10sXHJcbiAgICAgICAgbWVtYmVySWQ6ICcnLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBbXTtcclxuICAgICAgY29uc3QgcmVmZXJlbmNlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3Njcm9sbFJlZmVyZW5jZScpO1xyXG4gICAgICBpZiAocmVmZXJlbmNlKSB7XHJcbiAgICAgICAgcmVmZXJlbmNlLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5pc0ZpbGVFbXB0eSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzV3JvbmdGaWxlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmZpbGVOYW1lID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdLm5hbWU7XHJcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlcy5wdXNoKGV2ZW50LnRhcmdldC5maWxlcyk7XHJcbiAgICAgIGNvbnN0IHRhcmdldDogRGF0YVRyYW5zZmVyID0gZXZlbnQudGFyZ2V0IGFzIERhdGFUcmFuc2ZlcjtcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBjdXJseVxyXG4gICAgICBpZiAodGFyZ2V0LmZpbGVzLmxlbmd0aCAhPT0gMSlcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCB1c2UgbXVsdGlwbGUgZmlsZXMnKTtcclxuICAgICAgY29uc3QgcmVhZGVyOiBGaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgcmVhZGVyLm9ubG9hZCA9IChlOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBic3RyOiBzdHJpbmcgPSBlLnRhcmdldC5yZXN1bHQ7XHJcbiAgICAgICAgY29uc3Qgd2I6IFhMU1guV29ya0Jvb2sgPSBYTFNYLnJlYWQoYnN0ciwgeyB0eXBlOiAnYmluYXJ5JyB9KTtcclxuICAgICAgICBjb25zdCB3c25hbWU6IHN0cmluZyA9IHdiLlNoZWV0TmFtZXNbMV07XHJcbiAgICAgICAgY29uc3Qgc2hlZXQyOiBzdHJpbmcgPSB3Yi5TaGVldE5hbWVzWzJdO1xyXG4gICAgICAgIGNvbnN0IHNoZWV0Mzogc3RyaW5nID0gd2IuU2hlZXROYW1lc1szXTtcclxuICAgICAgICBjb25zdCB3c25hbWUxOiBzdHJpbmcgPSB3Yi5TaGVldE5hbWVzWzRdO1xyXG4gICAgICAgIGNvbnN0IHdzOiBYTFNYLldvcmtTaGVldCA9IHdiLlNoZWV0c1t3c25hbWVdO1xyXG4gICAgICAgIGNvbnN0IHNoZWV0UmVwb3J0MjogWExTWC5Xb3JrU2hlZXQgPSB3Yi5TaGVldHNbc2hlZXQyXTtcclxuICAgICAgICBjb25zdCBzaGVldFJlcG9ydDM6IFhMU1guV29ya1NoZWV0ID0gd2IuU2hlZXRzW3NoZWV0M107XHJcbiAgICAgICAgY29uc3QgdGVtcERhdGE6IFhMU1guV29ya1NoZWV0ID0gd2IuU2hlZXRzW3dzbmFtZTFdO1xyXG4gICAgICAgIGNvbnN0IHREYXRhID0gWExTWC51dGlscy5zaGVldF90b19qc29uKHRlbXBEYXRhLCB7IGhlYWRlcjogMSB9KSBhcyBBT0E7XHJcbiAgICAgICAgY29uc3QgdGVtcExpc3QgPSB0RGF0YS5maWx0ZXIoXHJcbiAgICAgICAgICAoZGF0YUVsZW1lbnQ6IGFueSkgPT4gZGF0YUVsZW1lbnQubGVuZ3RoID4gMFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5zZXRPcmdhbml6YXRpb25EZXRhaWxzKHRlbXBMaXN0KTtcclxuICAgICAgICB3Yi5TaGVldE5hbWVzLmZvckVhY2goKHNoZWV0OiBhbnkpID0+IHtcclxuICAgICAgICAgIHN3aXRjaCAoc2hlZXQ/LnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY2FzZSAnZnJlcXVlbmN5IHJlc3BvbnNpYmlsaXRpZXMnOlxyXG4gICAgICAgICAgICAgIHRoaXMuc2V0RGF0YUZvckRpZmZlcmVudFRhYnMod3MsIHNoZWV0KTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnb25nb2luZyByZXNwb25zaWJpbGl0aWVzJzpcclxuICAgICAgICAgICAgICB0aGlzLnNldERhdGFGb3JEaWZmZXJlbnRUYWJzKHNoZWV0UmVwb3J0Miwgc2hlZXQpO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdvbiBjb21wbGV0aW9uIHJlc3BvbnNpYmlsaXRpZXMnOlxyXG4gICAgICAgICAgICAgIHRoaXMuc2V0RGF0YUZvckRpZmZlcmVudFRhYnMoc2hlZXRSZXBvcnQzLCBzaGVldCk7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH07XHJcbiAgICAgIHJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcodGFyZ2V0LmZpbGVzWzBdKTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEl0IHRha2VzIGEgd29ya3NoZWV0IGFuZCBhIHNoZWV0IG5hbWUsIGFuZCB0aGVuIGl0IHNldHMgdGhlIGRhdGEgZm9yIGRpZmZlcmVudCB0YWJzLlxyXG4gICAqIEBwYXJhbSB3cyAtIFhMU1guV29ya1NoZWV0LCBzaGVldDogc3RyaW5nXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNoZWV0IC0gc3RyaW5nIC0gdGhlIG5hbWUgb2YgdGhlIHNoZWV0IGluIHRoZSBleGNlbCBmaWxlXHJcbiAgICogQHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZSBcInJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZFwiIHdoaWNoIGlzIGFuIG9iamVjdC5cclxuICAgKi9cclxuICBzZXREYXRhRm9yRGlmZmVyZW50VGFicyh3czogWExTWC5Xb3JrU2hlZXQsIHNoZWV0OiBzdHJpbmcpIHtcclxuICAgIGxldCByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQ6IGFueSA9IHtcclxuICAgICAgaGVhZGVyOiBbXSxcclxuICAgICAgcmVwb3J0czogW10sXHJcbiAgICAgIHN1YkhlYWRpbmc6IFtdLFxyXG4gICAgfTtcclxuICAgIGxldCBzaGVldFZhbHVlID0gWExTWC51dGlscy5zaGVldF90b19qc29uKHdzLCB7XHJcbiAgICAgIGhlYWRlcjogMSxcclxuICAgICAgcmF3OiBmYWxzZSxcclxuICAgIH0pIGFzIEFPQTtcclxuICAgIGxldCBkYXRhID0gc2hlZXRWYWx1ZS5maWx0ZXIoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGxldCBpc1VuZGVmaW5lZCA9ICcnO1xyXG4gICAgICByZXMuZm9yRWFjaCgoZWw6IGFueSkgPT4ge1xyXG4gICAgICAgIGlzVW5kZWZpbmVkID0gaXNVbmRlZmluZWQgKyBlbDtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChzaGVldFZhbHVlWzJdICYmIHNoZWV0VmFsdWVbMl1bMV0gPT09ICdQcm9ncmFtJykge1xyXG4gICAgICAgIHJldHVybiAhKHJlcz8ubGVuZ3RoID09PSA5ICYmIHJlc1s4XSA9PT0gJycgJiYgIWlzVW5kZWZpbmVkLmxlbmd0aCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuICEocmVzPy5sZW5ndGggPT09IDYgJiYgcmVzWzVdID09PSAnJyAmJiAhaXNVbmRlZmluZWQubGVuZ3RoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMuZmlsZU5hbWUuc3Vic3RyKC01KSAhPT0gJy54bHN4Jykge1xyXG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9XHJcbiAgICAgICAgJ1RoZSBpbmNvcnJlY3QgZmlsZSBoYXMgYmVlbiB1cGxvYWRlZC4gUGxlYXNlIHVwbG9hZCB0aGUgdGVtcGxhdGUgd2hpY2ggeW91IGRvd25sb2FkZWQgZnJvbSBoZXJlLicgK1xyXG4gICAgICAgICcgUkVUUlknO1xyXG4gICAgICB0aGlzLmlzV3JvbmdGaWxlID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXIgPSBjbG9uZURlZXAoZGF0YVsyXSk7XHJcbiAgICByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuc3ViSGVhZGluZyA9IGNsb25lRGVlcChkYXRhWzNdKTtcclxuXHJcbiAgICBkYXRhID0gZGF0YS5zbGljZSg1KTtcclxuICAgIGlmICh0aGlzLm1lbWJlcl9vYmpfaWQgIT0gdGhpcy50ZW1wbGF0ZUluZm8ubWVtYmVySWQpIHtcclxuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPVxyXG4gICAgICAgICdUaGUgaW5jb3JyZWN0IGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQuIFBsZWFzZSB1cGxvYWQgdGhlIHRlbXBsYXRlIHdoaWNoIHlvdSBkb3dubG9hZGVkIGZyb20gaGVyZS4nICtcclxuICAgICAgICAnIFJFVFJZJztcclxuICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IHRydWU7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCByZXNwb25zaWJpbGl0eURhdGEgPSBkYXRhLmZpbHRlcihcclxuICAgICAgKGRhdGFFbGVtZW50OiBhbnkpID0+IGRhdGFFbGVtZW50Lmxlbmd0aCA+IDBcclxuICAgICk7XHJcbiAgICByZXNwb25zaWJpbGl0eURhdGEuZm9yRWFjaCgocmVwb3J0OiBhbnkpID0+IHtcclxuICAgICAgbGV0IHZhbGlkRGF0ZTtcclxuICAgICAgY29uc3QgdmFsaWRVc2VyID0gdGhpcy5yZXR1cm5JZHMocmVwb3J0WzJdLCAnZW50cnVzdGVkX3RvJylcclxuICAgICAgICA/IHRydWVcclxuICAgICAgICA6IGZhbHNlO1xyXG4gICAgICBpZiAocmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLmhlYWRlclsxXSA9PT0gJ1Byb2dyYW0nKSB7XHJcbiAgICAgICAgdmFsaWREYXRlID0gdGhpcy5jb21wYXJlV2l0aEN1cnJlbnREYXRlKHJlcG9ydFs0XSwgcmVwb3J0WzVdKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB2YWxpZERhdGUgPSB0aGlzLmNvbXBhcmVXaXRoQ3VycmVudERhdGUocmVwb3J0WzVdLCByZXBvcnRbNl0pO1xyXG4gICAgICB9XHJcbiAgICAgIC8qIFB1c2hpbmcgdGhlIHJlcG9ydCBkZXRhaWxzIGludG8gdGhlIGJ1bGtVcGxvYWQgb2JqZWN0IGFzIHBlciB0YWIgdGFicyAqL1xyXG4gICAgICBpZiAoc2hlZXQ/LnRvTG93ZXJDYXNlKCkgPT09ICdmcmVxdWVuY3kgcmVzcG9uc2liaWxpdGllcycpIHtcclxuICAgICAgICByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQucmVwb3J0cy5wdXNoKFxyXG4gICAgICAgICAgdGhpcy5zZXRSZXBvcnREZXRhaWxzKFxyXG4gICAgICAgICAgICByZXBvcnQsXHJcbiAgICAgICAgICAgICdmcmVxdWVuY3knLFxyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzFdID09PSAnUHJvZ3JhbScgPyB0cnVlIDogZmFsc2VcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuYnVsa1VwbG9hZC5mcmVxdWVuY3kuaGVhZGVyID0gcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkPy5oZWFkZXI7XHJcbiAgICAgICAgdGhpcy5idWxrVXBsb2FkLmZyZXF1ZW5jeS5zdWJIZWFkaW5nID1cclxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZD8uc3ViSGVhZGluZztcclxuICAgICAgICB0aGlzLmJ1bGtVcGxvYWQuZnJlcXVlbmN5LnJlcG9ydHMgPSByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQ/LnJlcG9ydHM7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHNoZWV0Py50b0xvd2VyQ2FzZSgpID09PSAnb25nb2luZyByZXNwb25zaWJpbGl0aWVzJykge1xyXG4gICAgICAgIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5yZXBvcnRzLnB1c2goXHJcbiAgICAgICAgICB0aGlzLnNldFJlcG9ydERldGFpbHMoXHJcbiAgICAgICAgICAgIHJlcG9ydCxcclxuICAgICAgICAgICAgJ29uZ29pbmcnLFxyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzFdID09PSAnUHJvZ3JhbScgPyB0cnVlIDogZmFsc2VcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuYnVsa1VwbG9hZC5vbmdvaW5nLmhlYWRlciA9IHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZD8uaGVhZGVyO1xyXG4gICAgICAgIHRoaXMuYnVsa1VwbG9hZC5vbmdvaW5nLnN1YkhlYWRpbmcgPVxyXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkPy5zdWJIZWFkaW5nO1xyXG4gICAgICAgIHRoaXMuYnVsa1VwbG9hZC5vbmdvaW5nLnJlcG9ydHMgPSByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQ/LnJlcG9ydHM7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHNoZWV0Py50b0xvd2VyQ2FzZSgpID09PSAnb24gY29tcGxldGlvbiByZXNwb25zaWJpbGl0aWVzJykge1xyXG4gICAgICAgIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5yZXBvcnRzLnB1c2goXHJcbiAgICAgICAgICB0aGlzLnNldFJlcG9ydERldGFpbHMoXHJcbiAgICAgICAgICAgIHJlcG9ydCxcclxuICAgICAgICAgICAgJ29uQ29tcGxldGlvbicsXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbMV0gPT09ICdQcm9ncmFtJyA/IHRydWUgOiBmYWxzZVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5idWxrVXBsb2FkLm9uQ29tcGxldGlvbi5oZWFkZXIgPSByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQ/LmhlYWRlcjtcclxuICAgICAgICB0aGlzLmJ1bGtVcGxvYWQub25Db21wbGV0aW9uLnN1YkhlYWRpbmcgPVxyXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkPy5zdWJIZWFkaW5nO1xyXG4gICAgICAgIHRoaXMuYnVsa1VwbG9hZC5vbkNvbXBsZXRpb24ucmVwb3J0cyA9XHJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQ/LnJlcG9ydHM7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGlzRW1wdHkgPSB0aGlzLmNoZWNrRW1wdHlGaWxlKGRhdGEpO1xyXG4gICAgLyogQ2hlY2tpbmcgaWYgdGhlIGZpbGUgaXMgZW1wdHksIGlmIGl0IGlzIGVtcHR5IGl0IHdpbGwgcmV0dXJuIGFuIGVycm9yIG1lc3NhZ2UuIElmIGl0IGlzIG5vdFxyXG4gICAgZW1wdHkgaXQgd2lsbCBjaGVjayBpZiB0aGUgZmlsZSBpcyB0aGUgY29ycmVjdCBmaWxlLCBpZiBpdCBpcyBub3QgdGhlIGNvcnJlY3QgZmlsZSBpdCB3aWxsXHJcbiAgICByZXR1cm4gYW4gZXJyb3IgbWVzc2FnZS4gSWYgaXQgaXMgdGhlIGNvcnJlY3QgZmlsZSBpdCB3aWxsIGNhbGwgdGhlIGZpbGVVcGxvYWQoKSBmdW5jdGlvbi4gKi9cclxuICAgIGlmIChpc0VtcHR5KSB7XHJcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID1cclxuICAgICAgICAnWW91IGhhdmUgdXBsb2FkZWQgYSBibGFuayB0ZW1wbGF0ZS4gUGxlYXNlIGFkZCBkZXRhaWxzIGZvciBhbGwgbWFuZGF0b3J5IGZpZWxkcy4gUkVUUlknO1xyXG4gICAgICB0aGlzLmlzRmlsZUVtcHR5ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzV3JvbmdGb3JtYXQgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgdGhpcy5idWxrVXBsb2FkPy5mcmVxdWVuY3k/LmhlYWRlclswXSAhPT0gJ1Jlc3BvbnNpYmlsaXR5IE5hbWUqJyAmJlxyXG4gICAgICB0aGlzLmJ1bGtVcGxvYWQ/Lm9uZ29pbmc/LmhlYWRlclswXSAhPT0gJ1Jlc3BvbnNpYmlsaXR5IE5hbWUqJyAmJlxyXG4gICAgICB0aGlzLmJ1bGtVcGxvYWQ/Lm9uQ29tcGxldGlvbj8uaGVhZGVyWzBdICE9PSAnUmVzcG9uc2liaWxpdHkgTmFtZSonXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPVxyXG4gICAgICAgICdUaGUgaW5jb3JyZWN0IGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQuIFBsZWFzZSB1cGxvYWQgdGhlIHRlbXBsYXRlIHdoaWNoIHlvdSBkb3dubG9hZGVkIGZyb20gaGVyZS4nICtcclxuICAgICAgICAnIFJFVFJZJztcclxuICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzV3JvbmdGb3JtYXQgPSB0cnVlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlzRmlsZUVtcHR5ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc1dyb25nRm9ybWF0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZmlsZVVwbG9hZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXNGaWxlRW1wdHkgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93RXhjZWwgPSB0cnVlO1xyXG4gICAgdGhpcy5maWxlVmFsdWUgPSAnJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIHRoZSBidWxrVXBsb2FkIG9iamVjdCBoYXMgYSBmcmVxdWVuY3kgb2JqZWN0IHdpdGggYSByZXBvcnRzIGFycmF5LCBzZXQgdGhlXHJcbiAgICogcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkIHRvIHRoZSBmcmVxdWVuY3kgb2JqZWN0IGFuZCBzZXQgdGhlIHRhYlR5cGUgdG8gZnJlcXVlbmN5LiBJZiBub3QsIGNoZWNrXHJcbiAgICogaWYgdGhlIGJ1bGtVcGxvYWQgb2JqZWN0IGhhcyBhbiBvbmdvaW5nIG9iamVjdCB3aXRoIGEgcmVwb3J0cyBhcnJheSwgc2V0IHRoZVxyXG4gICAqIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCB0byB0aGUgb25nb2luZyBvYmplY3QgYW5kIHNldCB0aGUgdGFiVHlwZSB0byBvbmdvaW5nLiBJZiBub3QsIGNoZWNrIGlmXHJcbiAgICogdGhlIGJ1bGtVcGxvYWQgb2JqZWN0IGhhcyBhbiBvbkNvbXBsZXRpb24gb2JqZWN0IHdpdGggYSByZXBvcnRzIGFycmF5LCBzZXQgdGhlXHJcbiAgICogcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkIHRvIHRoZSBvbkNvbXBsZXRpb24gb2JqZWN0IGFuZCBzZXQgdGhlIHRhYlR5cGUgdG8gb25Db21wbGV0aW9uLiBJZiBub3QsXHJcbiAgICogcmV0dXJuIHRydWUuXHJcbiAgICogPC9jb2RlPlxyXG4gICAqIEBwYXJhbSB7YW55fSBkYXRhIC0gYW55ID0ge1xyXG4gICAqIEByZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZS5cclxuICAgKi9cclxuICBjaGVja0VtcHR5RmlsZShkYXRhPzogYW55KSB7XHJcbiAgICBsZXQgaXNFbXB0eSA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMuYnVsa1VwbG9hZD8uZnJlcXVlbmN5Py5yZXBvcnRzPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQgPSB0aGlzLmJ1bGtVcGxvYWQ/LmZyZXF1ZW5jeTtcclxuICAgICAgdGhpcy50YWJUeXBlID0gJ2ZyZXF1ZW5jeSc7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuYnVsa1VwbG9hZD8ub25nb2luZz8ucmVwb3J0cz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkID0gdGhpcy5idWxrVXBsb2FkPy5vbmdvaW5nO1xyXG4gICAgICB0aGlzLnRhYlR5cGUgPSAnb25nb2luZyc7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuYnVsa1VwbG9hZD8ub25Db21wbGV0aW9uPy5yZXBvcnRzPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQgPSB0aGlzLmJ1bGtVcGxvYWQ/Lm9uQ29tcGxldGlvbjtcclxuICAgICAgdGhpcy50YWJUeXBlID0gJ29uQ29tcGxldGlvbic7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpc0VtcHR5ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBpc0VtcHR5O1xyXG4gIH1cclxuXHJcbiAgY29tcGFyZVdpdGhDdXJyZW50RGF0ZShkYXk6IGFueSwgbW9udGg6IGFueSkge1xyXG4gICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgY29uc3QgbW9udGhOYW1lcyA9IFtcclxuICAgICAgeyB2YWx1ZTogMSwgbW9udGg6ICdKYW4nIH0sXHJcbiAgICAgIHsgdmFsdWU6IDIsIG1vbnRoOiAnRmViJyB9LFxyXG4gICAgICB7IHZhbHVlOiAzLCBtb250aDogJ01hcicgfSxcclxuICAgICAgeyB2YWx1ZTogNCwgbW9udGg6ICdBcHInIH0sXHJcbiAgICAgIHsgdmFsdWU6IDUsIG1vbnRoOiAnTWF5JyB9LFxyXG4gICAgICB7IHZhbHVlOiA2LCBtb250aDogJ0p1bicgfSxcclxuICAgICAgeyB2YWx1ZTogNywgbW9udGg6ICdKdWwnIH0sXHJcbiAgICAgIHsgdmFsdWU6IDgsIG1vbnRoOiAnQXVnJyB9LFxyXG4gICAgICB7IHZhbHVlOiA5LCBtb250aDogJ1NlcCcgfSxcclxuICAgICAgeyB2YWx1ZTogMTAsIG1vbnRoOiAnT2N0JyB9LFxyXG4gICAgICB7IHZhbHVlOiAxMSwgbW9udGg6ICdOb3YnIH0sXHJcbiAgICAgIHsgdmFsdWU6IDEyLCBtb250aDogJ0RlYycgfSxcclxuICAgIF07XHJcblxyXG4gICAgaWYgKCEoZGF5IHx8IG1vbnRoKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSBpZiAoIShkYXkgJiYgbW9udGgpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IG1vbnRoQW5kWWVhciA9IG1vbnRoLnNwbGl0KFwiJ1wiKTtcclxuXHJcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG1vbWVudChcclxuICAgICAgICBkYXkgKyAnLScgKyBtb250aEFuZFllYXJbMF0gKyAnLScgKyAyMCArIG1vbnRoQW5kWWVhclsxXSArICcgMDA6MDA6MDAnLFxyXG4gICAgICAgICdERC1NTU1NLVlZWVkgSEg6bW06c3MnXHJcbiAgICAgICkuZm9ybWF0KCdZWVlZLU1NLUREIEhIOm1tOnNzJyk7XHJcbiAgICAgIGlmIChzdGFydERhdGUgPT0gJ0ludmFsaWQgZGF0ZScpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge30sIDUpO1xyXG4gICAgICBjb25zdCBkYXRlX3ZhbHVlID0gbmV3IERhdGUoKTtcclxuXHJcbiAgICAgIGRhdGVfdmFsdWUuc2V0TW9udGgoXHJcbiAgICAgICAgdHlwZW9mIG1vbnRoICE9PSAnbnVtYmVyJ1xyXG4gICAgICAgICAgPyBtb250aE5hbWVzLmZpbHRlcigoeCkgPT4geC5tb250aCA9PT0gbW9udGg/LnN1YnN0cmluZygwLCAzKSlbMF1cclxuICAgICAgICAgICAgICA/LnZhbHVlIC0gMVxyXG4gICAgICAgICAgOiBtb250aFxyXG4gICAgICApO1xyXG4gICAgICBkYXRlX3ZhbHVlLnNldEZ1bGxZZWFyKE51bWJlcigyMCArIG1vbnRoLnNwbGl0KFwiJ1wiKVsxXSkpO1xyXG4gICAgICBkYXRlX3ZhbHVlLnNldERhdGUoTnVtYmVyKGRheSkpO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgY3VycmVudERhdGUudG9KU09OKCkuc3BsaXQoJ1QnKVswXSAhPVxyXG4gICAgICAgICAgZGF0ZV92YWx1ZS50b0pTT04oKS5zcGxpdCgnVCcpWzBdICYmXHJcbiAgICAgICAgY3VycmVudERhdGUgPiBkYXRlX3ZhbHVlXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBpc1Bhc3REYXRlKGRheTogYW55LCBtb250aDogYW55KSB7XHJcbiAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgY29uc3QgbW9udGhOYW1lcyA9IFtcclxuICAgICAgeyB2YWx1ZTogMSwgbW9udGg6ICdKYW4nIH0sXHJcbiAgICAgIHsgdmFsdWU6IDIsIG1vbnRoOiAnRmViJyB9LFxyXG4gICAgICB7IHZhbHVlOiAzLCBtb250aDogJ01hcicgfSxcclxuICAgICAgeyB2YWx1ZTogNCwgbW9udGg6ICdBcHInIH0sXHJcbiAgICAgIHsgdmFsdWU6IDUsIG1vbnRoOiAnTWF5JyB9LFxyXG4gICAgICB7IHZhbHVlOiA2LCBtb250aDogJ0p1bicgfSxcclxuICAgICAgeyB2YWx1ZTogNywgbW9udGg6ICdKdWwnIH0sXHJcbiAgICAgIHsgdmFsdWU6IDgsIG1vbnRoOiAnQXVnJyB9LFxyXG4gICAgICB7IHZhbHVlOiA5LCBtb250aDogJ1NlcCcgfSxcclxuICAgICAgeyB2YWx1ZTogMTAsIG1vbnRoOiAnT2N0JyB9LFxyXG4gICAgICB7IHZhbHVlOiAxMSwgbW9udGg6ICdOb3YnIH0sXHJcbiAgICAgIHsgdmFsdWU6IDEyLCBtb250aDogJ0RlYycgfSxcclxuICAgIF07XHJcblxyXG4gICAgaWYgKCEoZGF5IHx8IG1vbnRoKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2UgaWYgKCEoZGF5ICYmIG1vbnRoKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBjb25zdCByZXBvcnREYXRlID0gbmV3IERhdGUoZGF5ICsgbW9udGguc3BsaXQoXCInXCIpKTtcclxuICAgICAgY29uc3QgZGF0ZV92YWx1ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGRhdGVfdmFsdWUuc2V0TW9udGgoXHJcbiAgICAgICAgdHlwZW9mIG1vbnRoICE9PSAnbnVtYmVyJ1xyXG4gICAgICAgICAgPyBtb250aE5hbWVzLmZpbHRlcigoeCkgPT4geC5tb250aCA9PT0gbW9udGg/LnN1YnN0cmluZygwLCAzKSlbMF1cclxuICAgICAgICAgICAgICA/LnZhbHVlIC0gMVxyXG4gICAgICAgICAgOiBtb250aFxyXG4gICAgICApO1xyXG4gICAgICBkYXRlX3ZhbHVlLnNldEZ1bGxZZWFyKE51bWJlcigyMCArIG1vbnRoLnNwbGl0KFwiJ1wiKVsxXSkpO1xyXG4gICAgICBkYXRlX3ZhbHVlLnNldERhdGUoTnVtYmVyKGRheSkpO1xyXG4gICAgICBpZiAoY3VycmVudERhdGUgPiBkYXRlX3ZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZFRlbXBsYXRlKCkge1xyXG4gICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9ICdET1dOTE9BRElORyc7XHJcbiAgICB0aGlzLmRvd25sb2FkUGVyY2VudCA9IDA7XHJcbiAgICBjb25zdCBkb3dubG9hZERhdGUgPSBuZXcgRGF0ZSgpLnRvRGF0ZVN0cmluZygpLnNwbGl0KCcgJyk7XHJcbiAgICBjb25zdCBmaWxlTmFtZSA9IGBFbnRydXN0IFJlc3BvbnNpYmlsaXRpZXMtJHtkb3dubG9hZERhdGVbMl19LSR7ZG93bmxvYWREYXRlWzFdfS0ke2Rvd25sb2FkRGF0ZVszXX0ueGxzeGA7XHJcblxyXG4gICAgdGhpcy5yaXNrU2VydmljZS5kb3dubG9hZFJlc3BvbnNpYmlsaXR5VGVtcGxhdGUoKS5zdWJzY3JpYmUoXHJcbiAgICAgIChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YS5sb2FkZWQpIHtcclxuICAgICAgICAgIHRoaXMuZG93bmxvYWRQZXJjZW50ID0gMTAwICogKGRhdGEubG9hZGVkIC8gZGF0YS50b3RhbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkYXRhLmJvZHkpIHtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRvd25sb2FkU3RhdHVzID0gdGhpcy5yaXNrU2VydmljZS5kb3duTG9hZEZpbGUoXHJcbiAgICAgICAgICAgICAgZGF0YS5ib2R5LFxyXG4gICAgICAgICAgICAgICdhcHBsaWNhdGlvbi94bHN4JyxcclxuICAgICAgICAgICAgICBmaWxlTmFtZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSwgMTUwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICB0aGlzLmRvd25sb2FkU3RhdHVzID0gJ0RPV05MT0FERUQnO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc3VibWl0UmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkKCkge1xyXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgbGV0IHBheWxvYWQ6IGFueSA9IFtdO1xyXG4gICAgbGV0IHJlc3BvbnNpYmlsaXR5TXVsdGlUYWJCdWxrVXBsb2FkOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGZyZXF1ZW5jeVR5cGVBcnJheSA9IFsnMScsICcyJywgJzMnLCAnNCcsICc3JywgJzAnLCAnNicsICc5J107XHJcbiAgICBjb25zdCBkZWZhdWx0V2luZG93ID0gWzAsIDIsIDcsIDMwLCA3LCAxNSwgMywgMzBdO1xyXG4gICAgY29uc3QgZGVmYXVsdEZhaWxlZERheSA9IFsxLCAyLCA1LCA1LCA1LCA1LCA1LCA1XTtcclxuICAgIGxldCB2YWxpZFJlc3BvbnNpYmlsaXRpZXMgPSAwO1xyXG4gICAgbGV0IHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCA9IHRoaXMuYnVsa1VwbG9hZD8uZnJlcXVlbmN5Py5yZXBvcnRzPy5jb25jYXQoXHJcbiAgICAgIHRoaXMuYnVsa1VwbG9hZD8ub25nb2luZz8ucmVwb3J0cyxcclxuICAgICAgdGhpcy5idWxrVXBsb2FkPy5vbkNvbXBsZXRpb24/LnJlcG9ydHNcclxuICAgICk7XHJcbiAgICByZXNwb25zaWJpbGl0eU11bHRpVGFiQnVsa1VwbG9hZCA9XHJcbiAgICAgIHRoaXMuYnVsa1VwbG9hZD8uZnJlcXVlbmN5Py5yZXBvcnRzPy5jb25jYXQoXHJcbiAgICAgICAgdGhpcy5idWxrVXBsb2FkPy5vbmdvaW5nPy5yZXBvcnRzLFxyXG4gICAgICAgIHRoaXMuYnVsa1VwbG9hZD8ub25Db21wbGV0aW9uPy5yZXBvcnRzXHJcbiAgICAgICk7XHJcbiAgICBpZiAodGhpcy5mZkJ1bGtVcGxvYWRPcHRpbWl6YXRpb24pIHtcclxuICAgICAgcmVzcG9uc2liaWxpdHlNdWx0aVRhYkJ1bGtVcGxvYWQ/LmZvckVhY2goKHJlcG9ydDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcG9ydD8uaXNWYWxpZCkge1xyXG4gICAgICAgICAgdmFsaWRSZXNwb25zaWJpbGl0aWVzICs9IDE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICBvcmlnaW5hbEZpbGVuYW1lOiB0aGlzLmZpbGVSZXNwb25zZVswXT8ub3JpZ2luYWxfZmlsZW5hbWUsXHJcbiAgICAgICAgZmlsZU5hbWU6IHRoaXMuZmlsZVJlc3BvbnNlWzBdPy5maWxlbmFtZSxcclxuICAgICAgICBmaWxlUGF0aDogdGhpcy5maWxlUmVzcG9uc2VbMF0/LmZpbGVwYXRoLFxyXG4gICAgICAgIHRvdGFsUmVzcG9uc2liaWxpdHlDb3VudDogcmVzcG9uc2liaWxpdHlNdWx0aVRhYkJ1bGtVcGxvYWQ/Lmxlbmd0aCxcclxuICAgICAgICB2YWxpZFJlc3BvbnNpYmlsaXR5Q291bnQ6IHZhbGlkUmVzcG9uc2liaWxpdGllcyxcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5mb3JFYWNoKChyZXBvcnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXBvcnQuaXNWYWxpZCkge1xyXG4gICAgICAgICAgaWYgKHJlcG9ydD8ucmVzcG9uc2liaWxpdHlDYXRlZ29yeSA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXBvcnQucmVzcG9uc2liaWxpdHlDYXRlZ29yeSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgcmNEZXRhaWxzOiBhbnkgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgICAgICAgcmVwb3J0Py5yZXNwb25zaWJpbGl0eUNlbnRlcixcclxuICAgICAgICAgICAgJ3JjX2lkJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IHJldmlld2VyRGV0YWlsczogYW55ID0gdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgICAgICAgIHJlcG9ydD8ucmV2aWV3ZXIsXHJcbiAgICAgICAgICAgICdyZXZpZXdlcidcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zdCBhc3NpZ25vckRldGFpbHM6IGFueSA9IHJlcG9ydD8uYXNzaWdub3JcclxuICAgICAgICAgICAgPyB0aGlzLnJldHVybklkcyhyZXBvcnQ/LmFzc2lnbm9yLCAnYXNzaWdub3InKVxyXG4gICAgICAgICAgICA6ICcnO1xyXG4gICAgICAgICAgY29uc3QgY2NEZXRhaWxzOiBhbnkgPSB0aGlzLnJldHVybklkcyhyZXBvcnQ/Lm92ZXJzZWVyLCAnY2MnKTtcclxuICAgICAgICAgIGNvbnN0IGNjRmFpbHVyZURldGFpbHM6IGFueSA9IHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICAgICAgICByZXBvcnQubm90aWZ5T25GYWlsdXJlLFxyXG4gICAgICAgICAgICAnY2NGYWlsdXJlJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IGN1cnJlbnREYXRlID0gbW9tZW50KCkuZm9ybWF0KCdZWVlZLU1NLUREJyk7XHJcbiAgICAgICAgICBsZXQgb25nb2luZ1JlbWluZGVyVHlwZTogYW55ID0ge1xyXG4gICAgICAgICAgICBXZWVrbHk6IDEsXHJcbiAgICAgICAgICAgIE1vbnRobHk6IDIsXHJcbiAgICAgICAgICAgIFF1YXJ0ZXJseTogMyxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBjb25zdCBvbmdvaW5nVmFsdWVzID0ge1xyXG4gICAgICAgICAgICBzZXRSZW1pbmRlcjogcmVwb3J0Py5zZXRSZW1pbmRlcixcclxuICAgICAgICAgICAgZnJlcXVlbmN5UmVtaW5kZXI6IG9uZ29pbmdSZW1pbmRlclR5cGVbcmVwb3J0Py5mcmVxdWVuY3lSZW1pbmRlcl0sXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgY29uc3QgZnJlcXVlbmN5VmFsdWUgPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2Uuc2hvcnRIYW5kX2ZyZXFDYWwoXHJcbiAgICAgICAgICAgIHJlcG9ydD8uZnJlcXVlbmN5LFxyXG4gICAgICAgICAgICByZXBvcnQ/LmRheSxcclxuICAgICAgICAgICAgcmVwb3J0Py5tb250aCxcclxuICAgICAgICAgICAgJycsXHJcbiAgICAgICAgICAgIHJlcG9ydD8uZHVlRGF0ZSxcclxuICAgICAgICAgICAgb25nb2luZ1ZhbHVlc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IGRhdGVBbmRNb250aCA9IHJlcG9ydD8ubW9udGg/LnNwbGl0KFwiJ1wiKTtcclxuICAgICAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IGRhdGVBbmRNb250aFxyXG4gICAgICAgICAgICA/IG1vbWVudChcclxuICAgICAgICAgICAgICAgIHJlcG9ydD8uZGF5ICtcclxuICAgICAgICAgICAgICAgICAgJy0nICtcclxuICAgICAgICAgICAgICAgICAgZGF0ZUFuZE1vbnRoWzBdICtcclxuICAgICAgICAgICAgICAgICAgJy0nICtcclxuICAgICAgICAgICAgICAgICAgMjAgK1xyXG4gICAgICAgICAgICAgICAgICBkYXRlQW5kTW9udGhbMV0gK1xyXG4gICAgICAgICAgICAgICAgICAnIDAwOjAwOjAwJyxcclxuICAgICAgICAgICAgICAgICdERC1NTU1NLVlZWVkgSEg6bW06c3MnXHJcbiAgICAgICAgICAgICAgKS5mb3JtYXQoJ1lZWVktTU0tREQgSEg6bW06c3MnKVxyXG4gICAgICAgICAgICA6ICcnO1xyXG5cclxuICAgICAgICAgIGxldCBjb21wbGV0ZURheXM7XHJcbiAgICAgICAgICBsZXQgbm90Q29tcGxldGVEYXlzO1xyXG4gICAgICAgICAgY29uc3QgZnJlcXVlbmN5VHlwZSA9IGZyZXF1ZW5jeVZhbHVlPy5zcGxpdCgnficpWzBdO1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICByZXBvcnQucmVzcG9uc2liaWxpdHlXaW5kb3cgJiZcclxuICAgICAgICAgICAgcmVwb3J0LnJlc3BvbnNpYmlsaXR5V2luZG93ICE9PSAnJ1xyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGNvbXBsZXRlRGF5cyA9IHJlcG9ydD8ucmVzcG9uc2liaWxpdHlXaW5kb3c7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeVR5cGVBcnJheT8uaW5jbHVkZXMoZnJlcXVlbmN5VHlwZSkpIHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhPZkFycmF5ID0gZnJlcXVlbmN5VHlwZUFycmF5Py5pbmRleE9mKGZyZXF1ZW5jeVR5cGUpO1xyXG4gICAgICAgICAgICBjb21wbGV0ZURheXMgPSBkZWZhdWx0V2luZG93W2luZGV4T2ZBcnJheV07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVwb3J0Py5mYWlsZWRBZnRlciAmJiByZXBvcnQ/LmZhaWxlZEFmdGVyICE9PSAnJykge1xyXG4gICAgICAgICAgICBub3RDb21wbGV0ZURheXMgPSByZXBvcnQ/LmZhaWxlZEFmdGVyO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3lUeXBlQXJyYXkuaW5jbHVkZXMoZnJlcXVlbmN5VHlwZSkpIHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhPZkFycmF5ID0gZnJlcXVlbmN5VHlwZUFycmF5Py5pbmRleE9mKGZyZXF1ZW5jeVR5cGUpO1xyXG4gICAgICAgICAgICBub3RDb21wbGV0ZURheXMgPSBkZWZhdWx0RmFpbGVkRGF5W2luZGV4T2ZBcnJheV07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBvYmogPSB7XHJcbiAgICAgICAgICAgIHVzZXJJZDogdGhpcy50ZW1wbGF0ZUluZm8/Lm1lbWJlcklkLFxyXG4gICAgICAgICAgICBvcmdhbmlzYXRpb25faWQ6IHRoaXMub3JnYW5pemF0aW9uSWQsXHJcbiAgICAgICAgICAgIG1lbWJlcl9pZDogYXNzaWdub3JEZXRhaWxzXHJcbiAgICAgICAgICAgICAgPyBhc3NpZ25vckRldGFpbHM/Lm1lbWJlcklkXHJcbiAgICAgICAgICAgICAgOiB0aGlzLm1lbWJlcklkLFxyXG4gICAgICAgICAgICBtZW1iZXJfbmFtZTogYXNzaWdub3JEZXRhaWxzXHJcbiAgICAgICAgICAgICAgPyByZXBvcnQ/LmFzc2lnbm9yXHJcbiAgICAgICAgICAgICAgICA/IHJlcG9ydD8uYXNzaWdub3Iuc3BsaXQoJyAoJylbMF1cclxuICAgICAgICAgICAgICAgIDogJydcclxuICAgICAgICAgICAgICA6IHRoaXMuZGVmYXVsdE93bmVyXHJcbiAgICAgICAgICAgICAgPyB0aGlzLmRlZmF1bHRPd25lcj8uc3BsaXQoJyAoJylbMF1cclxuICAgICAgICAgICAgICA6ICcnLFxyXG4gICAgICAgICAgICBtZW1iZXJfZW1haWw6IGFzc2lnbm9yRGV0YWlsc1xyXG4gICAgICAgICAgICAgID8gcmVwb3J0Py5hc3NpZ25vclxyXG4gICAgICAgICAgICAgICAgPyByZXBvcnQ/LmFzc2lnbm9yPy5zcGxpdCgnICgnKVsxXT8ucmVwbGFjZSgnKScsICcnKVxyXG4gICAgICAgICAgICAgICAgOiAnJ1xyXG4gICAgICAgICAgICAgIDogdGhpcy5kZWZhdWx0T3duZXJcclxuICAgICAgICAgICAgICA/IHRoaXMuZGVmYXVsdE93bmVyPy5zcGxpdCgnICgnKVsxXS5yZXBsYWNlKCcpJywgJycpXHJcbiAgICAgICAgICAgICAgOiAnJyxcclxuICAgICAgICAgICAgY3JlYXRlZF9ieTogYXNzaWdub3JEZXRhaWxzID8gdGhpcy5tZW1iZXJJZCA6IDAsXHJcbiAgICAgICAgICAgIHJlcG9ydF9uYW1lOiByZXBvcnQ/LnJlc3BvbnNpYmlsaXR5TmFtZSA/PyAnJyxcclxuICAgICAgICAgICAgZW50cnVzdGVkX3RvOiByZXBvcnQ/LmFzc2lnbmVlPy5zcGxpdCgnICgnKVswXSA/PyAnJyxcclxuICAgICAgICAgICAgZW50cnVzdGVkX3RvX2lkOiB0aGlzLmlzR3JvdXBTZWxlY3RlZChyZXBvcnQ/LmFzc2lnbmVlKVxyXG4gICAgICAgICAgICAgID8gdGhpcy5nZXRFbXBsb3llZUlkRnJvbUdyb3VwKHJlcG9ydD8uYXNzaWduZWUpXHJcbiAgICAgICAgICAgICAgOiB0aGlzLnJldHVybklkcyhyZXBvcnQ/LmFzc2lnbmVlLCAnZW50cnVzdGVkX3RvJyk/LnRvU3RyaW5nKCkgPz9cclxuICAgICAgICAgICAgICAgICcnLFxyXG4gICAgICAgICAgICBlbWFpbF9hZGRyZXNzOiAhdGhpcy5pc0dyb3VwU2VsZWN0ZWQocmVwb3J0Py5hc3NpZ25lZSlcclxuICAgICAgICAgICAgICA/IHJlcG9ydD8uYXNzaWduZWU/LnNwbGl0KCcgKCcpWzFdPy5yZXBsYWNlKCcpJywgJycpID8/ICcnXHJcbiAgICAgICAgICAgICAgOiAnJyxcclxuICAgICAgICAgICAgaXNHcm91cEFzc2lnblRvOiByZXBvcnQ/LmFzc2lnbmVlVHlwZT8uaW5jbHVkZXMoJ0FueScpID8gMSA6IDAsXHJcbiAgICAgICAgICAgIGNhdGVnb3J5X25hbWVfd2l0aF90cmVlOiAnJyxcclxuICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRQcm9ncmFtSWQoXHJcbiAgICAgICAgICAgICAgICByZXBvcnQ/LnByb2dyYW0sXHJcbiAgICAgICAgICAgICAgICByZXBvcnQ/LnByb2dyYW1DYXRlZ29yeVxyXG4gICAgICAgICAgICAgICkuY2F0ZWdvcnlJZD8udG9TdHJpbmcoKSA/PyAnJyxcclxuICAgICAgICAgICAgcHJvZ3JhbV9jYXRfaWRzOiB0aGlzLmdldFByb2dyYW1JZChcclxuICAgICAgICAgICAgICByZXBvcnQ/LnByb2dyYW0sXHJcbiAgICAgICAgICAgICAgcmVwb3J0Py5wcm9ncmFtQ2F0ZWdvcnlcclxuICAgICAgICAgICAgKT8ucHJvZ3JhbUlkXHJcbiAgICAgICAgICAgICAgPyBbXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0UHJvZ3JhbUlkKHJlcG9ydD8ucHJvZ3JhbSwgcmVwb3J0Py5wcm9ncmFtQ2F0ZWdvcnkpXHJcbiAgICAgICAgICAgICAgICAgICAgPy5wcm9ncmFtSWQsXHJcbiAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgOiBbXSxcclxuICAgICAgICAgICAgcmNfbmFtZTogcmNEZXRhaWxzID8gcmNEZXRhaWxzPy5uYW1lIDogJycsXHJcbiAgICAgICAgICAgIHJjX2lkOiByY0RldGFpbHMgPyByY0RldGFpbHM/LnJjSWQgOiAwLFxyXG4gICAgICAgICAgICBlbnRpdHlfdHJlZTpcclxuICAgICAgICAgICAgICByY0RldGFpbHMgJiYgcmNEZXRhaWxzPy5yY0lkXHJcbiAgICAgICAgICAgICAgICA/IFtcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRfcmNfaWRzOiByY0RldGFpbHMgPyByY0RldGFpbHM/LnBhcmVudElkcyA6IFtdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcmNfaWQ6IHJjRGV0YWlscyA/IHJjRGV0YWlscz8ucmNJZCA6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgICAgOiBbXSxcclxuICAgICAgICAgICAgdXNlckdyb3VwSWRzOiB7XHJcbiAgICAgICAgICAgICAgYXNzaWduZWVBbGxHcm91cElkczpcclxuICAgICAgICAgICAgICAgICFyZXBvcnQ/LmFzc2lnbmVlVHlwZT8uaW5jbHVkZXMoJ0FueScpICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzR3JvdXBTZWxlY3RlZChyZXBvcnQ/LmFzc2lnbmVlKVxyXG4gICAgICAgICAgICAgICAgICA/IFt0aGlzLnJldHVybklkcyhyZXBvcnQ/LmFzc2lnbmVlLCAnZW50cnVzdGVkX3RvJyldXHJcbiAgICAgICAgICAgICAgICAgIDogW10sXHJcbiAgICAgICAgICAgICAgYXNzaWduZWVBbnlvbmVHcm91cElkczpcclxuICAgICAgICAgICAgICAgIHJlcG9ydD8uYXNzaWduZWVUeXBlPy5pbmNsdWRlcygnQW55JykgJiZcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNHcm91cFNlbGVjdGVkKHJlcG9ydD8uYXNzaWduZWUpXHJcbiAgICAgICAgICAgICAgICAgID8gW3RoaXMucmV0dXJuSWRzKHJlcG9ydD8uYXNzaWduZWUsICdlbnRydXN0ZWRfdG8nKV1cclxuICAgICAgICAgICAgICAgICAgOiBbXSxcclxuICAgICAgICAgICAgICBjY0VtYWlsR3JvdXBJZHM6IFtdLFxyXG4gICAgICAgICAgICAgIGZhaWx1cmVDQ0VtYWlsR3JvdXBJZHM6IFtdLFxyXG4gICAgICAgICAgICAgIHJldmlld2VyR3JvdXBJZHM6IFtdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBmcmVxdWVuY3lfaGFuZGxlcjogZnJlcXVlbmN5VmFsdWUsXHJcbiAgICAgICAgICAgIGNvbXBsaWFuY2VfdHlwZTogZnJlcXVlbmN5VmFsdWU/LnNwbGl0KCd+JylbMF0sXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeV9kZXNjcmlwdGlvbjogcmVwb3J0Py5mcmVxdWVuY3ksXHJcbiAgICAgICAgICAgIHN0YXJ0X2RhdGU6IHJlcG9ydD8uZGF5ID8gc3RhcnREYXRlIDogY3VycmVudERhdGUgKyAnIDAwOjAwOjAwJyxcclxuICAgICAgICAgICAgcmlza19jbGFzczogcmVwb3J0Py5yZXBvcnRDbGFzcyA/PyAnJyxcclxuICAgICAgICAgICAgcmlza19jbGFzc0lkOiByZXBvcnQ/LnJlcG9ydENsYXNzXHJcbiAgICAgICAgICAgICAgPyB0aGlzLnJldHVybklkcyhyZXBvcnQ/LnJlcG9ydENsYXNzLCAncmlza19jbGFzcycpXHJcbiAgICAgICAgICAgICAgOiB0aGlzLnJpc2tDbGFzc0VuYWJsZWRcclxuICAgICAgICAgICAgICA/IDFcclxuICAgICAgICAgICAgICA6IDIsXHJcbiAgICAgICAgICAgIGRvY191dGM6IDAsXHJcbiAgICAgICAgICAgIGNvbW1lbnQ6IHJlcG9ydD8ubm90ZXMgPz8gJycsXHJcbiAgICAgICAgICAgIGNjX21haWw6IGNjRGV0YWlscyA/IGNjRGV0YWlscz8uZW1haWwgOiAnJyxcclxuICAgICAgICAgICAgY2NfbWFpbF9pZDogY2NEZXRhaWxzID8gY2NEZXRhaWxzPy5lbXBsb3llZUlkIDogJycsXHJcbiAgICAgICAgICAgIGNjX2ZhaWxlZF9tYWlsOiBjY0ZhaWx1cmVEZXRhaWxzID8gY2NGYWlsdXJlRGV0YWlscz8uZW1haWwgOiAnJyxcclxuICAgICAgICAgICAgY2NfZmFpbHVyZV9pZDogY2NGYWlsdXJlRGV0YWlscyA/IGNjRmFpbHVyZURldGFpbHM/LmVtcGxveWVlSWQgOiAwLFxyXG4gICAgICAgICAgICBzZW5kX3JlbWluZGVyOiAnJyxcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlXaW5kb3c6XHJcbiAgICAgICAgICAgICAgZnJlcXVlbmN5VHlwZSA9PT0gJzEnXHJcbiAgICAgICAgICAgICAgICA/IDBcclxuICAgICAgICAgICAgICAgIDogY29tcGxldGVEYXlzICYmIGNvbXBsZXRlRGF5cyAhPSAnJ1xyXG4gICAgICAgICAgICAgICAgPyBjb21wbGV0ZURheXNcclxuICAgICAgICAgICAgICAgIDogMCxcclxuICAgICAgICAgICAgZmFpbGVkX2FmdGVyOlxyXG4gICAgICAgICAgICAgIG5vdENvbXBsZXRlRGF5cyAmJiBub3RDb21wbGV0ZURheXMgIT0gJycgPyBub3RDb21wbGV0ZURheXMgOiAwLFxyXG4gICAgICAgICAgICBleGNlbF9zaGVldF9uYW1lOiAnJyxcclxuICAgICAgICAgICAgcmVwb3J0X3VwbG9hZF9mbGFnOlxyXG4gICAgICAgICAgICAgIHJlcG9ydD8uaXNGb3JtYXQgPT09ICdZZXMnICYmXHJcbiAgICAgICAgICAgICAgcmVwb3J0Py5mb3JtYXRGb3JSZXNwb25zaWJpbGl0eT8ubGVuZ3RoXHJcbiAgICAgICAgICAgICAgICA/IDFcclxuICAgICAgICAgICAgICAgIDogMCxcclxuICAgICAgICAgICAgcmVwb3J0X2lkOiAwLFxyXG4gICAgICAgICAgICBpc19hc3NpZ25lZF9mbGFnOiAwLFxyXG4gICAgICAgICAgICBwcml2YXRlX2xpYnJhcnlfaWQ6IDAsXHJcbiAgICAgICAgICAgIGtleWNvbXBsaWFuY2U6IHJlcG9ydD8ua2V5UmVzcG9uc2liaWxpdHkgPT09ICdZZXMnID8gJ1llcycgOiAnTm8nLFxyXG4gICAgICAgICAgICBrZXlfY29tcGxpYW5jZTogcmVwb3J0Py5rZXlSZXNwb25zaWJpbGl0eSA9PT0gJ1llcycgPyAxIDogMCxcclxuICAgICAgICAgICAgcmV2aWV3ZXJJZDogcmV2aWV3ZXJEZXRhaWxzID8gcmV2aWV3ZXJEZXRhaWxzPy5lbXBsb3llZUlkIDogMCxcclxuICAgICAgICAgICAgcmV2aWV3ZXJfYXJyOlxyXG4gICAgICAgICAgICAgIHJldmlld2VyRGV0YWlscyAmJiByZXZpZXdlckRldGFpbHM/LmVtcGxveWVlSWRcclxuICAgICAgICAgICAgICAgID8ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldmVsMToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV2aWV3ZXJzOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1iZXJfaWQ6IHJldmlld2VyRGV0YWlsc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyByZXZpZXdlckRldGFpbHM/LmVtcGxveWVlSWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXZpZXdlcl9hY2NlcHQ6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1NFUVVFTlRJQUwnLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDoge30sXHJcbiAgICAgICAgICAgIHJldmlld2VyV2luZG93OlxyXG4gICAgICAgICAgICAgIHJlcG9ydD8ucmV2aWV3VG9CZUNvbXBsZXRlZFdpdGhpbiAmJlxyXG4gICAgICAgICAgICAgIHJlcG9ydD8ucmV2aWV3VG9CZUNvbXBsZXRlZFdpdGhpbiAhPT0gJydcclxuICAgICAgICAgICAgICAgID8gcmVwb3J0Py5yZXZpZXdUb0JlQ29tcGxldGVkV2l0aGluXHJcbiAgICAgICAgICAgICAgICA6IDIsXHJcbiAgICAgICAgICAgIHJldmlld2VyRmFpbHVyZTpcclxuICAgICAgICAgICAgICByZXBvcnQ/LnJldmlld1dpbGxCZUZhaWxlZEFmdGVyICYmXHJcbiAgICAgICAgICAgICAgcmVwb3J0Py5yZXZpZXdXaWxsQmVGYWlsZWRBZnRlciAhPT0gJydcclxuICAgICAgICAgICAgICAgID8gcmVwb3J0Py5yZXZpZXdXaWxsQmVGYWlsZWRBZnRlclxyXG4gICAgICAgICAgICAgICAgOiAyLFxyXG4gICAgICAgICAgICByZXZpZXdlcl9lbWFpbDogcmV2aWV3ZXJEZXRhaWxzID8gcmV2aWV3ZXJEZXRhaWxzPy5lbWFpbCA6ICcnLFxyXG4gICAgICAgICAgICBmb3JtYXRGb3JSZXNwb25zaWJpbGl0eTogcmVwb3J0Py5mb3JtYXRGb3JSZXNwb25zaWJpbGl0eVxyXG4gICAgICAgICAgICAgID8gcmVwb3J0LmZvcm1hdEZvclJlc3BvbnNpYmlsaXR5XHJcbiAgICAgICAgICAgICAgOiAnJyxcclxuICAgICAgICAgICAgZG9jdW1lbnRhcnlFdmlkZW5jZTogcmVwb3J0Py5ldmlkZW5jZU5vdGVzID8/ICcnLFxyXG4gICAgICAgICAgICBpc2RvY3VtZW50YXJ5RXZpZGVuY2U6XHJcbiAgICAgICAgICAgICAgcmVwb3J0LmRvY3VtZW50RXZpZGVuY2VSZXF1aXJlZCA9PT0gJ1llcycgPyAxIDogMCxcclxuICAgICAgICAgICAgb2JqZWN0aXZlOiByZXBvcnQub2JqZWN0aXZlID8/ICcnLFxyXG4gICAgICAgICAgICBleGNlbF9zaGVldF9pbmZvOiB0aGlzLmZpbGVSZXNwb25zZSxcclxuICAgICAgICAgICAgc2hvd0xpc3Q6IGZhbHNlLFxyXG4gICAgICAgICAgICBjdXN0b21fdGFnczogJ1tdJyxcclxuICAgICAgICAgICAgcXVlc3Rpb25uYWlyZV90eXBlOiAnJyxcclxuICAgICAgICAgICAgb25fY29tcGxldGlvbl9vZl90eXBlOlxyXG4gICAgICAgICAgICAgIHJlcG9ydD8uZnJlcXVlbmN5ID09PSAnT24gQ29tcGxldGlvbiBvZicgfHxcclxuICAgICAgICAgICAgICByZXBvcnQ/LmZyZXF1ZW5jeT8udG9Mb3dlckNhc2UoKSA9PT0gJ29uZ29pbmcnXHJcbiAgICAgICAgICAgICAgICA/IDFcclxuICAgICAgICAgICAgICAgIDogMCxcclxuICAgICAgICAgICAgb25fY29tcGxldGlvbl9vZjogdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgICAgICAgICAgcmVwb3J0Py5wYXJlbnRSZXNwb25zaWJpbGl0eSxcclxuICAgICAgICAgICAgICAncGFyZW50UmVzcG9uc2liaWxpdHknXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICA/IFtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgICAgICAgICAgICAgICAgcmVwb3J0Py5wYXJlbnRSZXNwb25zaWJpbGl0eSxcclxuICAgICAgICAgICAgICAgICAgICAncGFyZW50UmVzcG9uc2liaWxpdHknXHJcbiAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgOiBbXSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBwYXlsb2FkLnB1c2gob2JqKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2UuYWRkQnVsa1Jlc3BvbnNpYmlsaXR5KHBheWxvYWQpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNob3dFeGNlbCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eURhdGEgPSByZXM7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaG93RXhjZWwgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coXHJcbiAgICAgICAgICAnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/JyxcclxuICAgICAgICAgICdhbGVydCdcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuSWRzKGl0ZW06IGFueSwga2V5OiBzdHJpbmcpOiBhbnkge1xyXG4gICAgc3dpdGNoIChrZXkpIHtcclxuICAgICAgY2FzZSAncmNfaWQnOlxyXG4gICAgICAgIGxldCByY09iaiA9IHsgbmFtZTogJycsIHJjSWQ6IDAsIHBhcmVudElkczogW10gfTtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5yY0xpc3QuZm9yRWFjaCgocmNfZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmNfZWxlbWVudC5uYW1lID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgbGV0IG5hbWU7XHJcbiAgICAgICAgICAgIGlmIChyY19lbGVtZW50Lm5hbWUuaW5jbHVkZXMoJ1tXSVRISU5dJykpIHtcclxuICAgICAgICAgICAgICBuYW1lID0gcmNfZWxlbWVudC5uYW1lLnNwbGl0KCcgW1dJVEhJTl0gJylbMF07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgbmFtZSA9IHJjX2VsZW1lbnQubmFtZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByY09iaiA9IHtcclxuICAgICAgICAgICAgICBuYW1lLFxyXG4gICAgICAgICAgICAgIHJjSWQ6IHJjX2VsZW1lbnQucmNfaWQsXHJcbiAgICAgICAgICAgICAgcGFyZW50SWRzOiByY19lbGVtZW50LnBhcmVudElkcyxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gcmNPYmo7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3Jldmlld2VyJzpcclxuICAgICAgICBsZXQgcmV2aWV3ZXJPYmogPSB7IG5hbWU6ICcnLCBlbXBsb3llZUlkOiAwLCBlbWFpbDogJycgfTtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mbz8ucmV2aWV3ZXJMaXN0LmZvckVhY2goKHJldmlld2VyRWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmV2aWV3ZXJFbGVtZW50Lm5hbWVBbmRFbWFpbCA9PSBpdGVtKSB7XHJcbiAgICAgICAgICAgIHJldmlld2VyT2JqID0ge1xyXG4gICAgICAgICAgICAgIG5hbWU6IHJldmlld2VyRWxlbWVudC5uYW1lLFxyXG4gICAgICAgICAgICAgIGVtcGxveWVlSWQ6IHJldmlld2VyRWxlbWVudC5teV9tZW1iZXJfaWQsXHJcbiAgICAgICAgICAgICAgZW1haWw6IHJldmlld2VyRWxlbWVudC5lbWFpbCxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gcmV2aWV3ZXJPYmo7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdhc3NpZ25vcic6XHJcbiAgICAgICAgbGV0IGFzc2lnbm9yT2JqID0geyBuYW1lOiAnJywgbWVtYmVySWQ6IDAsIGVtYWlsOiAnJyB9O1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmFzc2lnbm9yc0xpc3QuZm9yRWFjaCgoYXNzaWdub3JFbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChhc3NpZ25vckVsZW1lbnQubmFtZUFuZEVtYWlsID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgYXNzaWdub3JPYmogPSB7XHJcbiAgICAgICAgICAgICAgbmFtZTogYXNzaWdub3JFbGVtZW50Lm5hbWUsXHJcbiAgICAgICAgICAgICAgZW1haWw6IGFzc2lnbm9yRWxlbWVudC5lbWFpbCxcclxuICAgICAgICAgICAgICBtZW1iZXJJZDogYXNzaWdub3JFbGVtZW50Lm1lbWJlcl9pZCxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gYXNzaWdub3JPYmo7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjYyc6XHJcbiAgICAgICAgbGV0IGNjT2JqID0geyBuYW1lOiAnJywgZW1wbG95ZWVJZDogMCwgZW1haWw6ICcnIH07XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8/LnJldmlld2VyTGlzdC5mb3JFYWNoKChjY0VsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNjRWxlbWVudC5uYW1lQW5kRW1haWwgPT0gaXRlbSkge1xyXG4gICAgICAgICAgICBjY09iaiA9IHtcclxuICAgICAgICAgICAgICBuYW1lOiBjY0VsZW1lbnQubmFtZSxcclxuICAgICAgICAgICAgICBlbXBsb3llZUlkOiBjY0VsZW1lbnQuZW1wbG95ZWVfaWQsXHJcbiAgICAgICAgICAgICAgZW1haWw6IGNjRWxlbWVudC5lbWFpbCxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gY2NPYmo7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NjRmFpbHVyZSc6XHJcbiAgICAgICAgbGV0IGNjZk9iaiA9IHsgbmFtZTogJycsIGVtcGxveWVlSWQ6IDAsIGVtYWlsOiAnJyB9O1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvPy5yZXZpZXdlckxpc3QuZm9yRWFjaCgoY2NmRWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoY2NmRWxlbWVudC5uYW1lQW5kRW1haWwgPT0gaXRlbSkge1xyXG4gICAgICAgICAgICBjY2ZPYmogPSB7XHJcbiAgICAgICAgICAgICAgbmFtZTogY2NmRWxlbWVudC5uYW1lLFxyXG4gICAgICAgICAgICAgIGVtcGxveWVlSWQ6IGNjZkVsZW1lbnQuZW1wbG95ZWVfaWQsXHJcbiAgICAgICAgICAgICAgZW1haWw6IGNjZkVsZW1lbnQuZW1haWwsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGNjZk9iajtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ2VudHJ1c3RlZF90byc6XHJcbiAgICAgICAgbGV0IGVtcElkID0gMDtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5hc3NpZ25lZXNMaXN0LmZvckVhY2goKGVuRWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZW5FbGVtZW50Lm5hbWVBbmRFbWFpbCA9PSBpdGVtKSB7XHJcbiAgICAgICAgICAgIGVtcElkID0gZW5FbGVtZW50LmVtcGxveWVlX2lkO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBlbXBJZDtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ3BhcmVudFJlc3BvbnNpYmlsaXR5JzpcclxuICAgICAgICBsZXQgaWQgPSAwO1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLnBhcmVudFJlc3BvbnNpYmlsaXR5LmZvckVhY2goXHJcbiAgICAgICAgICAocmVzcG9uc2liaWxpdHk6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2liaWxpdHk/Lm5hbWUgPT09IGl0ZW0pIHtcclxuICAgICAgICAgICAgICBpZCA9IHJlc3BvbnNpYmlsaXR5LmlkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gaWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlICdyaXNrX2NsYXNzJzpcclxuICAgICAgICBpZiAoaXRlbSA9PSAnTG93Jykge1xyXG4gICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtID09ICdMb3ctTWVkaXVtJykge1xyXG4gICAgICAgICAgcmV0dXJuIDI7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtID09ICdNZWRpdW0tSGlnaCcpIHtcclxuICAgICAgICAgIHJldHVybiAzO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PSAnSGlnaCcpIHtcclxuICAgICAgICAgIHJldHVybiA0O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkID0ge1xyXG4gICAgICBoZWFkZXI6IFtdLFxyXG4gICAgICByZXBvcnRzOiBbXSxcclxuICAgIH07XHJcbiAgICB0aGlzLmJ1bGtVcGxvYWQgPSB7XHJcbiAgICAgIGZyZXF1ZW5jeToge1xyXG4gICAgICAgIGhlYWRlcjogW10sXHJcbiAgICAgICAgc3ViSGVhZGluZzogW10sXHJcbiAgICAgICAgcmVwb3J0czogW10sXHJcbiAgICAgIH0sXHJcbiAgICAgIG9uZ29pbmc6IHtcclxuICAgICAgICBoZWFkZXI6IFtdLFxyXG4gICAgICAgIHN1YkhlYWRpbmc6IFtdLFxyXG4gICAgICAgIHJlcG9ydHM6IFtdLFxyXG4gICAgICB9LFxyXG4gICAgICBvbkNvbXBsZXRpb246IHtcclxuICAgICAgICBoZWFkZXI6IFtdLFxyXG4gICAgICAgIHN1YkhlYWRpbmc6IFtdLFxyXG4gICAgICAgIHJlcG9ydHM6IFtdLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnRlbXBsYXRlSW5mbyA9IHtcclxuICAgICAgY2F0ZWdvcnlMaXN0OiBbXSxcclxuICAgICAgcmNMaXN0OiBbXSxcclxuICAgICAgYXNzaWdub3JzTGlzdDogW10sXHJcbiAgICAgIGFzc2lnbmVlc0xpc3Q6IFtdLFxyXG4gICAgICByZXZpZXdlckxpc3Q6IFtdLFxyXG4gICAgICBtZW1iZXJJZDogJycsXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuaXNGaWxlRW1wdHkgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xyXG4gICAgdGhpcy5maWxlTmFtZSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuZGF0YSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc2hvd0V4Y2VsID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dTbWlsZXkgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLmNsb3NlQWRkTXVsdGlwbGVSZXNwb25zaWJpbGl0eS5lbWl0KCk7XHJcbiAgfVxyXG4gIGFjdGlvbihldmVudDogc3RyaW5nKSB7XHJcbiAgICBzd2l0Y2ggKGV2ZW50KSB7XHJcbiAgICAgIGNhc2UgJ2FkZE1vcmUnOlxyXG4gICAgICAgIHRoaXMucmVzZXQoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAndmlldyc6XHJcbiAgICAgICAgdGhpcy52aWV3UmVzcG9uc2liaWxpdGllcygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VTbWlsZXkoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgICB0aGlzLmNsb3NlV29ya2Zsb3cuZW1pdCh7IGV2dDogdGhpcy5yZXNwb25zaWJpbGl0eURhdGEsIGNvbmZpcm06IGZhbHNlIH0pO1xyXG4gIH1cclxuXHJcbiAgdmlld1Jlc3BvbnNpYmlsaXRpZXMoKTogdm9pZCB7XHJcbiAgICBsZXQgdXJsOiBzdHJpbmc7XHJcbiAgICBsZXQgdXJsU3Vic3RyaW5nID0gJyc7XHJcbiAgICB0aGlzLmRpc2Nvbm5lY3RSZWZyZXNoLmVtaXQoZmFsc2UpO1xyXG4gICAgaWYgKHRoaXMuaXNOb3RpZmljYXRpb25QZW5kaW5nKSB7XHJcbiAgICAgIGlmICh0aGlzLmZlYXR1cmVmbGFnKSB7XHJcbiAgICAgICAgdXJsU3Vic3RyaW5nID0gJ2NvbXBsaWFuY2UvbWFuYWdlLXJlc3BvbnNpYmlsaXR5PycgKyB0aGlzLnVybDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB1cmxTdWJzdHJpbmcgPVxyXG4gICAgICAgICAgJ2NvbXBsaWFuY2UvbWFuYWdlLXJlc3BvbnNpYmlsaXRpZXMvcmVzcG9uc2liaWxpdGllcy1xdWV1ZSc7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmZlYXR1cmVmbGFnKSB7XHJcbiAgICAgICAgdGhpcy5xdWVyeVBhcmFtID0gSlNPTj8uc3RyaW5naWZ5KHRoaXMucmVjZW50UmVzcG9uc2liaWxpdHlVcmwpO1xyXG4gICAgICAgIHVybFN1YnN0cmluZyA9ICdjb21wbGlhbmNlL21hbmFnZS1yZXNwb25zaWJpbGl0eT9xPScgKyB0aGlzLnF1ZXJ5UGFyYW07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdXJsU3Vic3RyaW5nID0gJ2NvbXBsaWFuY2UvbWFuYWdlLXJlc3BvbnNpYmlsaXRpZXMnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAod2luZG93LmxvY2F0aW9uLmhvc3Quc3RhcnRzV2l0aCgnbG9jYWxob3N0JykpIHtcclxuICAgICAgdXJsID0gJ2h0dHA6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyAnL2NvbXBsaWFuY2UvIy8nICsgdXJsU3Vic3RyaW5nO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdXJsID0gJ2h0dHBzOi8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0ICsgJy9jb21wbGlhbmNlLyMvJyArIHVybFN1YnN0cmluZztcclxuICAgIH1cclxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xyXG4gIH1cclxuXHJcbiAgLy8gVXBsb2FkIEZpbGUgdG8gdGhlIHNlcnZlclxyXG4gIGZpbGVVcGxvYWQoKSB7XHJcbiAgICB0aGlzLmZpbGVSZXNwb25zZSA9IFtdO1xyXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGNvbnN0IGZpbGUgPSB0aGlzLnVwbG9hZGVkRmlsZXNbMF1bMF07XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ3NvdXJjZWZpbGUnLCBmaWxlKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZCgnZGVzdGluYXRpb24nLCAnYnVsa3VwbG9hZC9lbnRydXN0LycgKyB0aGlzLnVzZXJJbmZvLmVtYWlsKTtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlLmZpbGVVcGxvYWQoZm9ybURhdGEpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcz8uZmlsZW5hbWUpIHtcclxuICAgICAgICAgIHRoaXMuZmlsZVJlc3BvbnNlLnB1c2gocmVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdyhcclxuICAgICAgICAgICdPT1BTISBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgdGhlIHBhZ2UgY291bGQgbm90IGJlIGxvYWRlZC4gQ291bGQgeW91IHBsZWFzZSB0cnkgb25lIG1vcmUgdGltZT8nLFxyXG4gICAgICAgICAgJ2FsZXJ0J1xyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzZXRPcmdhbml6YXRpb25EZXRhaWxzKHRlbXBMaXN0OiBhbnkpIHtcclxuICAgIGlmICh0ZW1wTGlzdFswXSAhPT0gdW5kZWZpbmVkICYmIHRlbXBMaXN0WzBdWzE4XSkge1xyXG4gICAgICB0aGlzLnRlbXBsYXRlSW5mby5tZW1iZXJJZCA9IHRlbXBMaXN0WzBdWzE4XTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID1cclxuICAgICAgICAnVGhlIGluY29ycmVjdCBmaWxlIGhhcyBiZWVuIHVwbG9hZGVkLiBQbGVhc2UgdXBsb2FkIHRoZSB0ZW1wbGF0ZSB3aGljaCB5b3UgZG93bmxvYWRlZCBmcm9tIGhlcmUuJyArXHJcbiAgICAgICAgJyBSRVRSWSc7XHJcbiAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSB0cnVlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0ZW1wTGlzdC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgLyogUHVzaGluZyB0aGUgdmFsdWUgb2YgcmVndWxhdGlvbnMgUHJvZ3JhbXMgaW50byB0aGUgY2F0ZWdvcnlMaXN0IGFycmF5LiAqL1xyXG4gICAgICBpZiAoZWxlbWVudFsyNl0gJiYgdHlwZW9mIGVsZW1lbnRbMjZdID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgIGNvbnN0IHJlZ3VsYXRpb25zID0ge1xyXG4gICAgICAgICAgcHJvZ3JhbU5hbWU6IGVsZW1lbnRbMjJdLFxyXG4gICAgICAgICAgcHJvZ3JhbUlkOiBlbGVtZW50WzI2XSxcclxuICAgICAgICAgIGFzc2lnbmVlOiBKU09OLnBhcnNlKGVsZW1lbnRbMzBdKSxcclxuICAgICAgICAgIHJldmlld2VyOiBKU09OLnBhcnNlKGVsZW1lbnRbMzFdKSxcclxuICAgICAgICAgIG92ZXJzZWVyOiBKU09OLnBhcnNlKGVsZW1lbnRbMzJdKT8uY29uY2F0KEpTT04ucGFyc2UoZWxlbWVudFszM10pKSxcclxuICAgICAgICAgIHByb2dyYW1UeXBlOiAxLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8uY2F0ZWdvcnlMaXN0LnB1c2gocmVndWxhdGlvbnMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvKiBQdXNoaW5nIHRoZSB2YWx1ZSBvZiBzdGFuZGFyZHMgUHJvZ3JhbXMgaW50byB0aGUgY2F0ZWdvcnlMaXN0IGFycmF5LiAqL1xyXG4gICAgICBpZiAoZWxlbWVudFsyN10gJiYgdHlwZW9mIGVsZW1lbnRbMjddID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgIGNvbnN0IHN0YW5kYXJkcyA9IHtcclxuICAgICAgICAgIHByb2dyYW1OYW1lOiBlbGVtZW50WzIzXSxcclxuICAgICAgICAgIHByb2dyYW1JZDogZWxlbWVudFsyN10sXHJcbiAgICAgICAgICBhc3NpZ25lZTogSlNPTi5wYXJzZShlbGVtZW50WzM0XSksXHJcbiAgICAgICAgICByZXZpZXdlcjogSlNPTi5wYXJzZShlbGVtZW50WzM1XSksXHJcbiAgICAgICAgICBvdmVyc2VlcjogSlNPTi5wYXJzZShlbGVtZW50WzM2XSk/LmNvbmNhdChKU09OLnBhcnNlKGVsZW1lbnRbMzddKSksXHJcbiAgICAgICAgICBwcm9ncmFtVHlwZTogMixcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmNhdGVnb3J5TGlzdC5wdXNoKHN0YW5kYXJkcyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8qIFB1c2hpbmcgdGhlIHZhbHVlIG9mIGludGVybmFsIENvbnRyb2xzIFByb2dyYW1zIGludG8gdGhlIGNhdGVnb3J5TGlzdCBhcnJheS4gKi9cclxuICAgICAgaWYgKGVsZW1lbnRbMjhdICYmIHR5cGVvZiBlbGVtZW50WzI4XSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICBjb25zdCBpbnRlcm5hbENvbnRyb2xzID0ge1xyXG4gICAgICAgICAgcHJvZ3JhbU5hbWU6IGVsZW1lbnRbMjRdLFxyXG4gICAgICAgICAgcHJvZ3JhbUlkOiBlbGVtZW50WzI4XSxcclxuICAgICAgICAgIGFzc2lnbmVlOiBKU09OLnBhcnNlKGVsZW1lbnRbMzhdKSxcclxuICAgICAgICAgIHJldmlld2VyOiBKU09OLnBhcnNlKGVsZW1lbnRbMzldKSxcclxuICAgICAgICAgIG92ZXJzZWVyOiBKU09OLnBhcnNlKGVsZW1lbnRbNDBdKT8uY29uY2F0KEpTT04ucGFyc2UoZWxlbWVudFs0MV0pKSxcclxuICAgICAgICAgIHByb2dyYW1UeXBlOiAzLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8uY2F0ZWdvcnlMaXN0LnB1c2goaW50ZXJuYWxDb250cm9scyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8qIFB1c2hpbmcgdGhlIHZhbHVlIG9mIG90aGVycyBQcm9ncmFtcyBpbnRvIHRoZSBjYXRlZ29yeUxpc3QgYXJyYXkuICovXHJcbiAgICAgIGlmIChlbGVtZW50WzI5XSAmJiB0eXBlb2YgZWxlbWVudFsyOV0gPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgY29uc3Qgb3RoZXJzID0ge1xyXG4gICAgICAgICAgcHJvZ3JhbU5hbWU6IGVsZW1lbnRbMjVdLFxyXG4gICAgICAgICAgcHJvZ3JhbUlkOiBlbGVtZW50WzI5XSxcclxuICAgICAgICAgIGFzc2lnbmVlOiBKU09OLnBhcnNlKGVsZW1lbnRbNDJdKSxcclxuICAgICAgICAgIHJldmlld2VyOiBKU09OLnBhcnNlKGVsZW1lbnRbNDNdKSxcclxuICAgICAgICAgIG92ZXJzZWVyOiBKU09OLnBhcnNlKGVsZW1lbnRbNDRdKT8uY29uY2F0KEpTT04ucGFyc2UoZWxlbWVudFs0NV0pKSxcclxuICAgICAgICAgIHByb2dyYW1UeXBlOiAwLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8uY2F0ZWdvcnlMaXN0LnB1c2gob3RoZXJzKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLyogQ2hlY2tpbmcgaWYgdGhlIGVsZW1lbnRbOV0gaXMgbm90IG51bGwgYW5kIG5vdCBlbXB0eS4gSWYgaXQgaXMgbm90IG51bGwgYW5kIG5vdCBlbXB0eSwgaXQgaXNcclxuICAgICAgcHVzaGluZyB0aGUgZWxlbWVudFs5XSAoUkMpIHRvIHRoZSBhcnJheSAocmNMaXN0KS4gKi9cclxuICAgICAgaWYgKGVsZW1lbnRbOV0gJiYgZWxlbWVudFs5XSAhPSAnICcpIHtcclxuICAgICAgICBjb25zdCByYyA9IHtcclxuICAgICAgICAgIG5hbWU6IGVsZW1lbnRbOV0sXHJcbiAgICAgICAgICByY19pZDogZWxlbWVudFsxMF0sXHJcbiAgICAgICAgICBwYXJlbnRJZHM6IEpTT04ucGFyc2UoZWxlbWVudFsxMV0pLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8ucmNMaXN0LnB1c2gocmMpO1xyXG4gICAgICB9XHJcbiAgICAgIC8qIENoZWNraW5nIGlmIHRoZSBlbGVtZW50WzJdIGlzIG5vdCBlbXB0eSBhbmQgbm90IGVxdWFsIHRvIHNwYWNlLiBJZiBpdCBpcyBub3QgZW1wdHkgYW5kIG5vdFxyXG4gICAgICBlcXVhbCB0byBzcGFjZSwgdGhlbiBpdCBpcyBwdXNoaW5nIHRoZSBhc3NpZ25lZSBvYmplY3QgdG8gdGhlIGFzc2lnbmVlc0xpc3QgYXJyYXkuICovXHJcbiAgICAgIGlmIChlbGVtZW50WzE5XSAmJiBlbGVtZW50WzE5XSAhPSAnICcpIHtcclxuICAgICAgICBjb25zdCBhc3NpZ25lZSA9IHtcclxuICAgICAgICAgIG5hbWVBbmRFbWFpbDogZWxlbWVudFsxOV0sXHJcbiAgICAgICAgICAvLyBuYW1lOiBlbGVtZW50WzExXS5zcGxpdCgnICgnKVswXSxcclxuICAgICAgICAgIG5hbWU6IGVsZW1lbnRbMTldLFxyXG4gICAgICAgICAgZW1haWw6IGVsZW1lbnRbMTldLFxyXG4gICAgICAgICAgZW1wbG95ZWVfaWQ6IGVsZW1lbnRbMjBdLFxyXG4gICAgICAgICAgbXlfbWVtYmVyX2lkOiBKU09OLnBhcnNlKGVsZW1lbnRbMjFdKSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmFzc2lnbmVlc0xpc3QucHVzaChhc3NpZ25lZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChlbGVtZW50WzJdICYmIGVsZW1lbnRbMl0gIT0gJyAnKSB7XHJcbiAgICAgICAgY29uc3QgcmV2aWV3ZXIgPSB7XHJcbiAgICAgICAgICBuYW1lQW5kRW1haWw6IGVsZW1lbnRbMl0sXHJcbiAgICAgICAgICAvLyBuYW1lOiBlbGVtZW50WzExXS5zcGxpdCgnICgnKVswXSxcclxuICAgICAgICAgIG5hbWU6IGVsZW1lbnRbMF0sXHJcbiAgICAgICAgICBlbWFpbDogZWxlbWVudFsxXSxcclxuICAgICAgICAgIGVtcGxveWVlX2lkOiBlbGVtZW50WzNdLFxyXG4gICAgICAgICAgbXlfbWVtYmVyX2lkOiBlbGVtZW50WzRdLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8ucmV2aWV3ZXJMaXN0LnB1c2gocmV2aWV3ZXIpO1xyXG4gICAgICB9XHJcbiAgICAgIC8qIENoZWNraW5nIGlmIHRoZSBlbGVtZW50WzJdIGlzIG5vdCBlbXB0eSBhbmQgbm90IGVxdWFsIHRvIHNwYWNlLiBJZiBpdCBpcyBub3QgZW1wdHkgYW5kIG5vdFxyXG4gICAgICBlcXVhbCB0byBzcGFjZSwgaXQgd2lsbCBjcmVhdGUgYW4gb2JqZWN0IGFuZCBwdXNoIGl0IHRvIHRoZSBhc3NpZ25vcnNMaXN0IGFycmF5LiAqL1xyXG4gICAgICBpZiAoZWxlbWVudFsyXSAmJiBlbGVtZW50WzJdICE9ICcgJykge1xyXG4gICAgICAgIGNvbnN0IGFzc2lnbm9yID0ge1xyXG4gICAgICAgICAgbmFtZUFuZEVtYWlsOiBlbGVtZW50WzJdLFxyXG4gICAgICAgICAgbmFtZTogZWxlbWVudFswXSxcclxuICAgICAgICAgIGVtYWlsOiBlbGVtZW50WzFdLFxyXG4gICAgICAgICAgLy8gbmFtZTogZWxlbWVudFsxNF0uc3BsaXQoJyAoJylbMF0sXHJcbiAgICAgICAgICAvLyBlbWFpbDogZWxlbWVudFsxNF0uc3BsaXQoJyAoJylbMV0ucmVwbGFjZSgnKScsICcnKSxcclxuICAgICAgICAgIG1lbWJlcl9pZDogZWxlbWVudFs0XSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmFzc2lnbm9yc0xpc3QucHVzaChhc3NpZ25vcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8qIENoZWNraW5nIGlmIHRoZSAxN3RoIGVsZW1lbnQgb2YgdGhlIGFycmF5IGlzIHRydWUuIElmIGl0IGlzLCBpdCBpcyBjcmVhdGluZyBhbiBvYmplY3Qgd2l0aCB0aGVcclxuICAgICAgMTZ0aCBlbGVtZW50IGFzIHRoZSBuYW1lIGFuZCB0aGUgMTd0aCBlbGVtZW50IGFzIHRoZSBpZC4gKi9cclxuICAgICAgaWYgKGVsZW1lbnRbMTddKSB7XHJcbiAgICAgICAgY29uc3QgcGFyZW50UmVzcG9uc2liaWxpdHkgPSB7XHJcbiAgICAgICAgICBuYW1lOiBlbGVtZW50WzE2XSxcclxuICAgICAgICAgIGlkOiBKU09OLnBhcnNlKGVsZW1lbnRbMTddKSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLnBhcmVudFJlc3BvbnNpYmlsaXR5LnB1c2gocGFyZW50UmVzcG9uc2liaWxpdHkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAvKiBDcmVhdGluZyBhIGxpc3Qgb2YgY2hpbGQgY2F0ZWdvcmllcy4gYW5kIHB1c2ggdGhlIGNoaWxkIGNhdGVnb3JpZXMgdG8gdGhlaXIgcGFyZW50IHByb2dyYW0gKi9cclxuICAgIGlmICh0aGlzLnRlbXBsYXRlSW5mby5jYXRlZ29yeUxpc3Q/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnRlbXBsYXRlSW5mby5jYXRlZ29yeUxpc3Q/LmZvckVhY2goKGNhdGVnb3J5OiBhbnksIGk6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGxldCBpbmRleCA9IHRlbXBMaXN0WzBdPy5pbmRleE9mKGNhdGVnb3J5Py5wcm9ncmFtSWQpO1xyXG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgIGxldCBjaGlsZENhdGVnb3J5ID0gW107XHJcbiAgICAgICAgICAvKiBDcmVhdGluZyBhIGxpc3Qgb2YgY2hpbGQgY2F0ZWdvcmllcy4gKi9cclxuICAgICAgICAgIGZvciAobGV0IGogPSAxOyB0cnVlOyBqKyspIHtcclxuICAgICAgICAgICAgaWYgKHRlbXBMaXN0W2pdICYmIHRlbXBMaXN0W2pdW2luZGV4XSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGNhdGVnb3J5ID0ge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogdGVtcExpc3Rbal1baW5kZXggLSAxXSxcclxuICAgICAgICAgICAgICAgIGlkOiB0ZW1wTGlzdFtqXVtpbmRleF0sXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICBjaGlsZENhdGVnb3J5LnB1c2goY2F0ZWdvcnkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5jYXRlZ29yeUxpc3RbaV1bJ2NoaWxkQ2F0ZWdvcnknXSA9IGNoaWxkQ2F0ZWdvcnk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEl0IHRha2VzIGFuIGV2ZW50LCB3aGljaCBpcyBhIHN0cmluZywgYW5kIHRoZW4gaXQgc2V0cyB0aGUgcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkIHZhcmlhYmxlIHRvXHJcbiAgICogdGhlIHZhbHVlIG9mIHRoZSBidWxrVXBsb2FkIHZhcmlhYmxlLCB3aGljaCBpcyBhbiBvYmplY3QsIGFuZCB0aGVuIGl0IGFjY2Vzc2VzIHRoZSBwcm9wZXJ0eSBvZlxyXG4gICAqIHRoYXQgb2JqZWN0IHRoYXQgbWF0Y2hlcyB0aGUgZXZlbnQgc3RyaW5nLlxyXG4gICAqXHJcbiAgICogU28gaWYgdGhlIGV2ZW50IHN0cmluZyBpcyAnZnJlcXVlbmN5JywgdGhlbiB0aGUgcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkIHZhcmlhYmxlIHdpbGwgYmUgc2V0IHRvXHJcbiAgICogdGhlIHZhbHVlIG9mIHRoZSBmcmVxdWVuY3kgcHJvcGVydHkgb2YgdGhlIGJ1bGtVcGxvYWQgb2JqZWN0LlxyXG4gICAqXHJcbiAgICogSWYgdGhlIGV2ZW50IHN0cmluZyBpcyAnb25nb2luZycsIHRoZW4gdGhlIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCB2YXJpYWJsZSB3aWxsIGJlIHNldCB0byB0aGVcclxuICAgKiB2YWx1ZSBvZiB0aGUgb25nb2luZyBwcm9wZXJ0eSBvZiB0aGUgYnVsa1VwbG9hZCBvYmplY3QuXHJcbiAgICpcclxuICAgKiBJZiB0aGUgZXZlbnQgc3RyaW5nIGlzICdvbkNvbXBsZXRpb24nLCB0aGVuIHRoZSByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQgdmFyaWFibGUgd2lsbCBiZSBzZXQgdG8gdGhlXHJcbiAgICogdmFsdWUgb2YgdGhlIG9uQ29tcGxldGlvbiBwcm9wZXJ0eSBvZiB0aGUgYnVsa1VwbG9hZCBvYmplY3QuXHJcbiAgICpcclxuICAgKiBJZiB0aGUgZXZlbnQgc3RyaW5nIGlzIGFueXRoaW5nIGVsc2UsIHRoZW4gdGhlIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCB2YXJpYWJsZSB3aWxsIGJlIHNldCB0b1xyXG4gICAqIHRoZSB2YWx1ZSBvZiB0aGUgZnJlcXVlbmN5IHByb3BlcnR5IG9mIHRoZSBidWxrVXBsb2FkIG9iamVjdC5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnQgLSBzdHJpbmcgLSB0aGUgZXZlbnQgdGhhdCBpcyBlbWl0dGVkIGZyb20gdGhlIGNoaWxkIGNvbXBvbmVudCAoZnJlcXVlbmN5IHwgb25nb2luZyB8IG9uQ29tcGxldGlvbilcclxuICAgKi9cclxuICBzZWxlY3RlZFRhYihldmVudDogJ2ZyZXF1ZW5jeScgfCAnb25nb2luZycgfCAnb25Db21wbGV0aW9uJykge1xyXG4gICAgdGhpcy50YWJUeXBlID0gZXZlbnQ7XHJcbiAgICBzd2l0Y2ggKGV2ZW50KSB7XHJcbiAgICAgIGNhc2UgJ2ZyZXF1ZW5jeSc6XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQgPSB0aGlzLmJ1bGtVcGxvYWQ/LmZyZXF1ZW5jeTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnb25nb2luZyc6XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQgPSB0aGlzLmJ1bGtVcGxvYWQ/Lm9uZ29pbmc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ29uQ29tcGxldGlvbic6XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQgPSB0aGlzLmJ1bGtVcGxvYWQ/Lm9uQ29tcGxldGlvbjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCA9IHRoaXMuYnVsa1VwbG9hZD8uZnJlcXVlbmN5O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSXQgdGFrZXMgaW4gYSByZXBvcnQsIGEgdGFiIHR5cGUsIGFuZCBhIGJvb2xlYW4gdmFsdWUuIEl0IHRoZW4gcmV0dXJucyBhbiBvYmplY3Qgd2l0aCBhIGJ1bmNoIG9mXHJcbiAgICogcHJvcGVydGllcy5cclxuICAgKiA8L2NvZGU+XHJcbiAgICogQHBhcmFtIHthbnl9IHJlcG9ydCAtIGFueSA9Jmd0OyB0aGUgYXJyYXkgb2YgZGF0YVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJUeXBlIC0gc3RyaW5nIC0gdGhpcyBpcyB0aGUgdHlwZSBvZiB0YWIgdGhhdCBpcyBzZWxlY3RlZC5cclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzUHJvZ3JhbSAtIGJvb2xlYW5cclxuICAgKiBAcmV0dXJucyBBbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XHJcbiAgICovXHJcbiAgc2V0UmVwb3J0RGV0YWlscyhyZXBvcnQ6IGFueSwgdGFiVHlwZTogc3RyaW5nLCBpc1Byb2dyYW06IGJvb2xlYW4pIHtcclxuICAgIGxldCBvYmo6IGFueTtcclxuICAgIHN3aXRjaCAodGFiVHlwZSkge1xyXG4gICAgICBjYXNlICdmcmVxdWVuY3knOiB7XHJcbiAgICAgICAgaWYgKGlzUHJvZ3JhbSkge1xyXG4gICAgICAgICAgb2JqID0ge1xyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eU5hbWU6IHJlcG9ydFswXSxcclxuICAgICAgICAgICAgcHJvZ3JhbVR5cGU6IHJlcG9ydFsxXSxcclxuICAgICAgICAgICAgcHJvZ3JhbTogcmVwb3J0WzJdLFxyXG4gICAgICAgICAgICBwcm9ncmFtQ2F0ZWdvcnk6IHJlcG9ydFszXSxcclxuICAgICAgICAgICAgYXNzaWdub3I6IHJlcG9ydFs0XSxcclxuICAgICAgICAgICAgYXNzaWduZWU6IHJlcG9ydFs1XSxcclxuICAgICAgICAgICAgYXNzaWduZWVUeXBlOiByZXBvcnRbNl0sXHJcbiAgICAgICAgICAgIGtleVJlc3BvbnNpYmlsaXR5OiByZXBvcnRbN10sXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IG51bGwsXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeTogcmVwb3J0WzhdLFxyXG4gICAgICAgICAgICBkYXk6IHJlcG9ydFs5XSxcclxuICAgICAgICAgICAgbW9udGg6IHJlcG9ydFsxMF0sXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5V2luZG93OiByZXBvcnRbMTFdLFxyXG4gICAgICAgICAgICBmYWlsZWRBZnRlcjogcmVwb3J0WzEyXSxcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IHJlcG9ydFsxM10sXHJcbiAgICAgICAgICAgIHJlcG9ydENsYXNzOiByZXBvcnRbMTRdLFxyXG4gICAgICAgICAgICBvYmplY3RpdmU6IHJlcG9ydFsxNV0sXHJcbiAgICAgICAgICAgIG5vdGVzOiByZXBvcnRbMTZdLFxyXG4gICAgICAgICAgICBpc0Zvcm1hdDogcmVwb3J0WzE3XSxcclxuICAgICAgICAgICAgZm9ybWF0Rm9yUmVzcG9uc2liaWxpdHk6IHJlcG9ydFsxOF0sXHJcbiAgICAgICAgICAgIGRvY3VtZW50RXZpZGVuY2VSZXF1aXJlZDogcmVwb3J0WzE5XSxcclxuICAgICAgICAgICAgLy8gZXZpZGVuY2VOb3RlczogcmVwb3J0WzE5XSxcclxuICAgICAgICAgICAgLy8gYXNzZXNzbWVudHM6IHJlcG9ydFsyMF0sXHJcbiAgICAgICAgICAgIHJldmlld2VyOiByZXBvcnRbMjBdLFxyXG4gICAgICAgICAgICByZXZpZXdUb0JlQ29tcGxldGVkV2l0aGluOiByZXBvcnRbMjFdLFxyXG4gICAgICAgICAgICByZXZpZXdXaWxsQmVGYWlsZWRBZnRlcjogcmVwb3J0WzIyXSxcclxuICAgICAgICAgICAgb3ZlcnNlZXI6IHJlcG9ydFsyM10sXHJcbiAgICAgICAgICAgIG5vdGlmeU9uRmFpbHVyZTogcmVwb3J0WzI0XSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBvYmpbJ2lzVmFsaWREYXRhJ10gPSB0aGlzLmlzVmFsaWREYXRhKG9iaik7XHJcbiAgICAgICAgICBvYmpbJ2lzVmFsaWRVc2VyJ10gPSB0aGlzLnJldHVybklkcyhvYmo/LmFzc2lnbmVlLCAnZW50cnVzdGVkX3RvJylcclxuICAgICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICAgIDogZmFsc2U7XHJcbiAgICAgICAgICBvYmpbJ3VzZXJWYWxpZGF0ZVdpdGhQcm9ncmFtJ10gPSB0aGlzLnZhbGlkYXRlRGF0YVdpdGhQcm9ncmFtKG9iaik7XHJcbiAgICAgICAgICBvYmpbJ3ZhbGlkRGF0ZSddID0gdGhpcy5jb21wYXJlV2l0aEN1cnJlbnREYXRlKG9iaj8uZGF5LCBvYmo/Lm1vbnRoKTtcclxuICAgICAgICAgIG9ialsnaXNQYXN0RGF0ZSddID0gdGhpcy5pc1Bhc3REYXRlKG9iaj8uZGF5LCBvYmo/Lm1vbnRoKTtcclxuICAgICAgICAgIG9ialsnaXNWYWxpZCddID1cclxuICAgICAgICAgICAgb2JqWydpc1ZhbGlkRGF0YSddICYmXHJcbiAgICAgICAgICAgIG9ialsndmFsaWREYXRlJ10gJiZcclxuICAgICAgICAgICAgIW9ialsnaXNQYXN0RGF0ZSddICYmXHJcbiAgICAgICAgICAgIG9iaj8uZnJlcXVlbmN5Py5sZW5ndGggJiZcclxuICAgICAgICAgICAgIU9iamVjdC52YWx1ZXMob2JqWyd1c2VyVmFsaWRhdGVXaXRoUHJvZ3JhbSddKS5pbmNsdWRlcyhmYWxzZSkgJiZcclxuICAgICAgICAgICAgb2JqWydpc1ZhbGlkVXNlciddO1xyXG4gICAgICAgICAgcmV0dXJuIG9iajtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgb2JqID0ge1xyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eU5hbWU6IHJlcG9ydFswXSxcclxuICAgICAgICAgICAgYXNzaWdub3I6IHJlcG9ydFsxXSxcclxuICAgICAgICAgICAgYXNzaWduZWU6IHJlcG9ydFsyXSxcclxuICAgICAgICAgICAgYXNzaWduZWVUeXBlOiByZXBvcnRbM10sXHJcbiAgICAgICAgICAgIGtleVJlc3BvbnNpYmlsaXR5OiByZXBvcnRbNF0sXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IG51bGwsXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeTogcmVwb3J0WzVdLFxyXG4gICAgICAgICAgICBkYXk6IHJlcG9ydFs2XSxcclxuICAgICAgICAgICAgbW9udGg6IHJlcG9ydFs3XSxcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlXaW5kb3c6IHJlcG9ydFs4XSxcclxuICAgICAgICAgICAgZmFpbGVkQWZ0ZXI6IHJlcG9ydFs5XSxcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IHJlcG9ydFsxMF0sXHJcbiAgICAgICAgICAgIHJlcG9ydENsYXNzOiByZXBvcnRbMTFdLFxyXG4gICAgICAgICAgICBvYmplY3RpdmU6IHJlcG9ydFsxMl0sXHJcbiAgICAgICAgICAgIG5vdGVzOiByZXBvcnRbMTNdLFxyXG4gICAgICAgICAgICBpc0Zvcm1hdDogcmVwb3J0WzE0XSxcclxuICAgICAgICAgICAgZm9ybWF0Rm9yUmVzcG9uc2liaWxpdHk6IHJlcG9ydFsxNV0sXHJcbiAgICAgICAgICAgIGRvY3VtZW50RXZpZGVuY2VSZXF1aXJlZDogcmVwb3J0WzE2XSxcclxuICAgICAgICAgICAgLy8gZXZpZGVuY2VOb3RlczogcmVwb3J0WzE2XSxcclxuICAgICAgICAgICAgLy8gYXNzZXNzbWVudHM6IHJlcG9ydFsxN10sXHJcbiAgICAgICAgICAgIHJldmlld2VyOiByZXBvcnRbMTddLFxyXG4gICAgICAgICAgICByZXZpZXdUb0JlQ29tcGxldGVkV2l0aGluOiByZXBvcnRbMThdLFxyXG4gICAgICAgICAgICByZXZpZXdXaWxsQmVGYWlsZWRBZnRlcjogcmVwb3J0WzE5XSxcclxuICAgICAgICAgICAgb3ZlcnNlZXI6IHJlcG9ydFsyMF0sXHJcbiAgICAgICAgICAgIG5vdGlmeU9uRmFpbHVyZTogcmVwb3J0WzIxXSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBvYmpbJ2lzVmFsaWREYXRhJ10gPSB0aGlzLmlzVmFsaWREYXRhKG9iaik7XHJcbiAgICAgICAgICBvYmpbJ3VzZXJWYWxpZGF0ZVdpdGhQcm9ncmFtJ10gPSB0aGlzLnZhbGlkYXRlRGF0YVdpdGhQcm9ncmFtKG9iaik7XHJcbiAgICAgICAgICBvYmpbJ2lzVmFsaWRVc2VyJ10gPSB0aGlzLnJldHVybklkcyhvYmo/LmFzc2lnbmVlLCAnZW50cnVzdGVkX3RvJylcclxuICAgICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICAgIDogZmFsc2U7XHJcbiAgICAgICAgICBvYmpbJ3ZhbGlkRGF0ZSddID0gdGhpcy5jb21wYXJlV2l0aEN1cnJlbnREYXRlKG9iaj8uZGF5LCBvYmo/Lm1vbnRoKTtcclxuICAgICAgICAgIG9ialsnaXNQYXN0RGF0ZSddID0gdGhpcy5pc1Bhc3REYXRlKG9iaj8uZGF5LCBvYmo/Lm1vbnRoKTtcclxuICAgICAgICAgIG9ialsnaXNWYWxpZCddID1cclxuICAgICAgICAgICAgb2JqWydpc1ZhbGlkRGF0YSddICYmXHJcbiAgICAgICAgICAgIG9ialsndmFsaWREYXRlJ10gJiZcclxuICAgICAgICAgICAgIW9ialsnaXNQYXN0RGF0ZSddICYmXHJcbiAgICAgICAgICAgIG9iaj8uZnJlcXVlbmN5Py5sZW5ndGggJiZcclxuICAgICAgICAgICAgb2JqWydpc1ZhbGlkVXNlciddO1xyXG4gICAgICAgICAgcmV0dXJuIG9iajtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnb25nb2luZyc6IHtcclxuICAgICAgICBpZiAoaXNQcm9ncmFtKSB7XHJcbiAgICAgICAgICBvYmogPSB7XHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5TmFtZTogcmVwb3J0WzBdLFxyXG4gICAgICAgICAgICBwcm9ncmFtVHlwZTogcmVwb3J0WzFdLFxyXG4gICAgICAgICAgICBwcm9ncmFtOiByZXBvcnRbMl0sXHJcbiAgICAgICAgICAgIHByb2dyYW1DYXRlZ29yeTogcmVwb3J0WzNdLFxyXG4gICAgICAgICAgICBhc3NpZ25vcjogcmVwb3J0WzRdLFxyXG4gICAgICAgICAgICBhc3NpZ25lZTogcmVwb3J0WzVdLFxyXG4gICAgICAgICAgICBhc3NpZ25lZVR5cGU6IHJlcG9ydFs2XSxcclxuICAgICAgICAgICAga2V5UmVzcG9uc2liaWxpdHk6IHJlcG9ydFs3XSxcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDYXRlZ29yeTogbnVsbCxcclxuICAgICAgICAgICAgZnJlcXVlbmN5OiByZXBvcnRbOF0sXHJcbiAgICAgICAgICAgIHNldFJlbWluZGVyOiByZXBvcnRbOV0sXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVJlbWluZGVyOiByZXBvcnRbMTBdLFxyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcjogcmVwb3J0WzExXSxcclxuICAgICAgICAgICAgcmVwb3J0Q2xhc3M6IHJlcG9ydFsxMl0sXHJcbiAgICAgICAgICAgIG9iamVjdGl2ZTogcmVwb3J0WzEzXSxcclxuICAgICAgICAgICAgbm90ZXM6IHJlcG9ydFsxNF0sXHJcbiAgICAgICAgICAgIGlzRm9ybWF0OiByZXBvcnRbMTVdLFxyXG4gICAgICAgICAgICBmb3JtYXRGb3JSZXNwb25zaWJpbGl0eTogcmVwb3J0WzE2XSxcclxuICAgICAgICAgICAgZG9jdW1lbnRFdmlkZW5jZVJlcXVpcmVkOiByZXBvcnRbMTddLFxyXG4gICAgICAgICAgICAvLyBldmlkZW5jZU5vdGVzOiByZXBvcnRbMTddLFxyXG4gICAgICAgICAgICAvLyBhc3Nlc3NtZW50czogcmVwb3J0WzE4XSxcclxuICAgICAgICAgICAgcmV2aWV3ZXI6IHJlcG9ydFsxOF0sXHJcbiAgICAgICAgICAgIHJldmlld1RvQmVDb21wbGV0ZWRXaXRoaW46IHJlcG9ydFsxOV0sXHJcbiAgICAgICAgICAgIHJldmlld1dpbGxCZUZhaWxlZEFmdGVyOiByZXBvcnRbMjBdLFxyXG4gICAgICAgICAgICBvdmVyc2VlcjogcmVwb3J0WzIxXSxcclxuICAgICAgICAgICAgbm90aWZ5T25GYWlsdXJlOiByZXBvcnRbMjJdLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIG9ialsnaXNWYWxpZERhdGEnXSA9IHRoaXMuaXNWYWxpZERhdGEob2JqKTtcclxuICAgICAgICAgIG9ialsndXNlclZhbGlkYXRlV2l0aFByb2dyYW0nXSA9IHRoaXMudmFsaWRhdGVEYXRhV2l0aFByb2dyYW0ob2JqKTtcclxuICAgICAgICAgIG9ialsnaXNWYWxpZFVzZXInXSA9IHRoaXMucmV0dXJuSWRzKG9iaj8uYXNzaWduZWUsICdlbnRydXN0ZWRfdG8nKVxyXG4gICAgICAgICAgICA/IHRydWVcclxuICAgICAgICAgICAgOiBmYWxzZTtcclxuICAgICAgICAgIG9ialsnaXNWYWxpZCddID1cclxuICAgICAgICAgICAgb2JqWydpc1ZhbGlkRGF0YSddICYmXHJcbiAgICAgICAgICAgICFPYmplY3QudmFsdWVzKG9ialsndXNlclZhbGlkYXRlV2l0aFByb2dyYW0nXSkuaW5jbHVkZXMoZmFsc2UpICYmXHJcbiAgICAgICAgICAgIG9ialsnaXNWYWxpZFVzZXInXTtcclxuICAgICAgICAgIHJldHVybiBvYmo7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG9iaiA9IHtcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlOYW1lOiByZXBvcnRbMF0sXHJcbiAgICAgICAgICAgIGFzc2lnbm9yOiByZXBvcnRbMV0sXHJcbiAgICAgICAgICAgIGFzc2lnbmVlOiByZXBvcnRbMl0sXHJcbiAgICAgICAgICAgIGFzc2lnbmVlVHlwZTogcmVwb3J0WzNdLFxyXG4gICAgICAgICAgICBrZXlSZXNwb25zaWJpbGl0eTogcmVwb3J0WzRdLFxyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUNhdGVnb3J5OiBudWxsLFxyXG4gICAgICAgICAgICBmcmVxdWVuY3k6IHJlcG9ydFs1XSxcclxuICAgICAgICAgICAgc2V0UmVtaW5kZXI6IHJlcG9ydFs2XSxcclxuICAgICAgICAgICAgZnJlcXVlbmN5UmVtaW5kZXI6IHJlcG9ydFs3XSxcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IHJlcG9ydFs4XSxcclxuICAgICAgICAgICAgcmVwb3J0Q2xhc3M6IHJlcG9ydFs5XSxcclxuICAgICAgICAgICAgb2JqZWN0aXZlOiByZXBvcnRbMTBdLFxyXG4gICAgICAgICAgICBub3RlczogcmVwb3J0WzExXSxcclxuICAgICAgICAgICAgaXNGb3JtYXQ6IHJlcG9ydFsxMl0sXHJcbiAgICAgICAgICAgIGZvcm1hdEZvclJlc3BvbnNpYmlsaXR5OiByZXBvcnRbMTNdLFxyXG4gICAgICAgICAgICBkb2N1bWVudEV2aWRlbmNlUmVxdWlyZWQ6IHJlcG9ydFsxNF0sXHJcbiAgICAgICAgICAgIC8vIGV2aWRlbmNlTm90ZXM6IHJlcG9ydFsxNF0sXHJcbiAgICAgICAgICAgIC8vIGFzc2Vzc21lbnRzOiByZXBvcnRbMTVdLFxyXG4gICAgICAgICAgICByZXZpZXdlcjogcmVwb3J0WzE1XSxcclxuICAgICAgICAgICAgcmV2aWV3VG9CZUNvbXBsZXRlZFdpdGhpbjogcmVwb3J0WzE2XSxcclxuICAgICAgICAgICAgcmV2aWV3V2lsbEJlRmFpbGVkQWZ0ZXI6IHJlcG9ydFsxN10sXHJcbiAgICAgICAgICAgIG92ZXJzZWVyOiByZXBvcnRbMThdLFxyXG4gICAgICAgICAgICBub3RpZnlPbkZhaWx1cmU6IHJlcG9ydFsxOV0sXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgb2JqWydpc1ZhbGlkRGF0YSddID0gdGhpcy5pc1ZhbGlkRGF0YShvYmopO1xyXG4gICAgICAgICAgb2JqWyd1c2VyVmFsaWRhdGVXaXRoUHJvZ3JhbSddID0gdGhpcy52YWxpZGF0ZURhdGFXaXRoUHJvZ3JhbShvYmopO1xyXG4gICAgICAgICAgb2JqWydpc1ZhbGlkVXNlciddID0gdGhpcy5yZXR1cm5JZHMob2JqPy5hc3NpZ25lZSwgJ2VudHJ1c3RlZF90bycpXHJcbiAgICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgICA6IGZhbHNlO1xyXG4gICAgICAgICAgb2JqWydpc1ZhbGlkJ10gPSBvYmpbJ2lzVmFsaWREYXRhJ10gJiYgb2JqWydpc1ZhbGlkVXNlciddO1xyXG4gICAgICAgICAgcmV0dXJuIG9iajtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnb25Db21wbGV0aW9uJzoge1xyXG4gICAgICAgIGlmIChpc1Byb2dyYW0pIHtcclxuICAgICAgICAgIG9iaiA9IHtcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlOYW1lOiByZXBvcnRbMF0sXHJcbiAgICAgICAgICAgIHByb2dyYW1UeXBlOiByZXBvcnRbMV0sXHJcbiAgICAgICAgICAgIHByb2dyYW06IHJlcG9ydFsyXSxcclxuICAgICAgICAgICAgcHJvZ3JhbUNhdGVnb3J5OiByZXBvcnRbM10sXHJcbiAgICAgICAgICAgIGFzc2lnbm9yOiByZXBvcnRbNF0sXHJcbiAgICAgICAgICAgIGFzc2lnbmVlOiByZXBvcnRbNV0sXHJcbiAgICAgICAgICAgIGFzc2lnbmVlVHlwZTogcmVwb3J0WzZdLFxyXG4gICAgICAgICAgICBrZXlSZXNwb25zaWJpbGl0eTogcmVwb3J0WzddLFxyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUNhdGVnb3J5OiBudWxsLFxyXG4gICAgICAgICAgICBmcmVxdWVuY3k6IHJlcG9ydFs4XSxcclxuICAgICAgICAgICAgcGFyZW50UmVzcG9uc2liaWxpdHk6IHJlcG9ydFs5XSxcclxuICAgICAgICAgICAgZHVlRGF0ZTogcmVwb3J0WzEwXSxcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlXaW5kb3c6IHJlcG9ydFsxMV0sXHJcbiAgICAgICAgICAgIGZhaWxlZEFmdGVyOiByZXBvcnRbMTJdLFxyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcjogcmVwb3J0WzEzXSxcclxuICAgICAgICAgICAgcmVwb3J0Q2xhc3M6IHJlcG9ydFsxNF0sXHJcbiAgICAgICAgICAgIG9iamVjdGl2ZTogcmVwb3J0WzE1XSxcclxuICAgICAgICAgICAgbm90ZXM6IHJlcG9ydFsxNl0sXHJcbiAgICAgICAgICAgIGlzRm9ybWF0OiByZXBvcnRbMTddLFxyXG4gICAgICAgICAgICBmb3JtYXRGb3JSZXNwb25zaWJpbGl0eTogcmVwb3J0WzE4XSxcclxuICAgICAgICAgICAgZG9jdW1lbnRFdmlkZW5jZVJlcXVpcmVkOiByZXBvcnRbMTldLFxyXG4gICAgICAgICAgICAvLyBldmlkZW5jZU5vdGVzOiByZXBvcnRbMTldLFxyXG4gICAgICAgICAgICAvLyBhc3Nlc3NtZW50czogcmVwb3J0WzIwXSxcclxuICAgICAgICAgICAgcmV2aWV3ZXI6IHJlcG9ydFsyMF0sXHJcbiAgICAgICAgICAgIHJldmlld1RvQmVDb21wbGV0ZWRXaXRoaW46IHJlcG9ydFsyMV0sXHJcbiAgICAgICAgICAgIHJldmlld1dpbGxCZUZhaWxlZEFmdGVyOiByZXBvcnRbMjJdLFxyXG4gICAgICAgICAgICBvdmVyc2VlcjogcmVwb3J0WzIzXSxcclxuICAgICAgICAgICAgbm90aWZ5T25GYWlsdXJlOiByZXBvcnRbMjRdLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIG9ialsnaXNWYWxpZERhdGEnXSA9IHRoaXMuaXNWYWxpZERhdGEob2JqKTtcclxuICAgICAgICAgIG9ialsndXNlclZhbGlkYXRlV2l0aFByb2dyYW0nXSA9IHRoaXMudmFsaWRhdGVEYXRhV2l0aFByb2dyYW0ob2JqKTtcclxuICAgICAgICAgIG9ialsnaXNWYWxpZFVzZXInXSA9IHRoaXMucmV0dXJuSWRzKG9iaj8uYXNzaWduZWUsICdlbnRydXN0ZWRfdG8nKVxyXG4gICAgICAgICAgICA/IHRydWVcclxuICAgICAgICAgICAgOiBmYWxzZTtcclxuICAgICAgICAgIG9ialsnaXNWYWxpZCddID1cclxuICAgICAgICAgICAgb2JqWydpc1ZhbGlkRGF0YSddICYmXHJcbiAgICAgICAgICAgICFPYmplY3QudmFsdWVzKG9ialsndXNlclZhbGlkYXRlV2l0aFByb2dyYW0nXSkuaW5jbHVkZXMoZmFsc2UpICYmXHJcbiAgICAgICAgICAgIG9iaj8ucGFyZW50UmVzcG9uc2liaWxpdHk/Lmxlbmd0aCAmJlxyXG4gICAgICAgICAgICBvYmpbJ2lzVmFsaWRVc2VyJ107XHJcbiAgICAgICAgICByZXR1cm4gb2JqO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBvYmogPSB7XHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5TmFtZTogcmVwb3J0WzBdLFxyXG4gICAgICAgICAgICBhc3NpZ25vcjogcmVwb3J0WzFdLFxyXG4gICAgICAgICAgICBhc3NpZ25lZTogcmVwb3J0WzJdLFxyXG4gICAgICAgICAgICBhc3NpZ25lZVR5cGU6IHJlcG9ydFszXSxcclxuICAgICAgICAgICAga2V5UmVzcG9uc2liaWxpdHk6IHJlcG9ydFs0XSxcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDYXRlZ29yeTogbnVsbCxcclxuICAgICAgICAgICAgZnJlcXVlbmN5OiByZXBvcnRbNV0sXHJcbiAgICAgICAgICAgIHBhcmVudFJlc3BvbnNpYmlsaXR5OiByZXBvcnRbNl0sXHJcbiAgICAgICAgICAgIGR1ZURhdGU6IHJlcG9ydFs3XSxcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlXaW5kb3c6IHJlcG9ydFs4XSxcclxuICAgICAgICAgICAgZmFpbGVkQWZ0ZXI6IHJlcG9ydFs5XSxcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IHJlcG9ydFsxMF0sXHJcbiAgICAgICAgICAgIHJlcG9ydENsYXNzOiByZXBvcnRbMTFdLFxyXG4gICAgICAgICAgICBvYmplY3RpdmU6IHJlcG9ydFsxMl0sXHJcbiAgICAgICAgICAgIG5vdGVzOiByZXBvcnRbMTNdLFxyXG4gICAgICAgICAgICBpc0Zvcm1hdDogcmVwb3J0WzE0XSxcclxuICAgICAgICAgICAgZm9ybWF0Rm9yUmVzcG9uc2liaWxpdHk6IHJlcG9ydFsxNV0sXHJcbiAgICAgICAgICAgIGRvY3VtZW50RXZpZGVuY2VSZXF1aXJlZDogcmVwb3J0WzE2XSxcclxuICAgICAgICAgICAgLy8gZXZpZGVuY2VOb3RlczogcmVwb3J0WzE2XSxcclxuICAgICAgICAgICAgLy8gYXNzZXNzbWVudHM6IHJlcG9ydFsxN10sXHJcbiAgICAgICAgICAgIHJldmlld2VyOiByZXBvcnRbMTddLFxyXG4gICAgICAgICAgICByZXZpZXdUb0JlQ29tcGxldGVkV2l0aGluOiByZXBvcnRbMThdLFxyXG4gICAgICAgICAgICByZXZpZXdXaWxsQmVGYWlsZWRBZnRlcjogcmVwb3J0WzE5XSxcclxuICAgICAgICAgICAgb3ZlcnNlZXI6IHJlcG9ydFsyMF0sXHJcbiAgICAgICAgICAgIG5vdGlmeU9uRmFpbHVyZTogcmVwb3J0WzIxXSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBvYmpbJ2lzVmFsaWREYXRhJ10gPSB0aGlzLmlzVmFsaWREYXRhKG9iaik7XHJcbiAgICAgICAgICBvYmpbJ3VzZXJWYWxpZGF0ZVdpdGhQcm9ncmFtJ10gPSB0aGlzLnZhbGlkYXRlRGF0YVdpdGhQcm9ncmFtKG9iaik7XHJcbiAgICAgICAgICBvYmpbJ2lzVmFsaWRVc2VyJ10gPSB0aGlzLnJldHVybklkcyhvYmo/LmFzc2lnbmVlLCAnZW50cnVzdGVkX3RvJylcclxuICAgICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICAgIDogZmFsc2U7XHJcbiAgICAgICAgICBvYmpbJ2lzVmFsaWQnXSA9XHJcbiAgICAgICAgICAgIG9ialsnaXNWYWxpZERhdGEnXSAmJlxyXG4gICAgICAgICAgICBvYmo/LnBhcmVudFJlc3BvbnNpYmlsaXR5Py5sZW5ndGggJiZcclxuICAgICAgICAgICAgb2JqWydpc1ZhbGlkVXNlciddO1xyXG4gICAgICAgICAgcmV0dXJuIG9iajtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZGVmYXVsdDoge1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJdCB0YWtlcyBhIHN0cmluZywgcmVtb3ZlcyBhbGwgd2hpdGVzcGFjZSwgYW5kIHJldHVybnMgdGhlIHN0cmluZ1xyXG4gICAqIEBwYXJhbSB7YW55fSBuYW1lIC0gdGhlIG5hbWUgb2YgdGhlIHJlc3BvbnNpYmlsaXR5XHJcbiAgICogQHJldHVybnMgdGhlIHRyaW1tZWROYW1lIHZhcmlhYmxlLlxyXG4gICAqL1xyXG4gIGNoZWNrVmFsaWRSZXNwb25zaWJpbGl0eU5hbWUobmFtZTogYW55KSB7XHJcbiAgICBjb25zdCByZSA9IC8mbmJzcDt8PGJyPi9nO1xyXG4gICAgaWYgKG5hbWUpIHtcclxuICAgICAgdmFyIHRyaW1tZWROYW1lID0gbmFtZS50b1N0cmluZygpLnJlcGxhY2UocmUsICcnKS50cmltKCk7XHJcbiAgICAgIHRyaW1tZWROYW1lID0gdHJpbW1lZE5hbWUucmVwbGFjZSgvICArL2csICcgJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJpbW1lZE5hbWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJZiB0aGUgcmVzcG9uc2liaWxpdHkgbmFtZSBpcyB2YWxpZCwgYW5kIHRoZSBhc3NpZ25lZSBhbmQgYXNzaWdub3IgYXJlIG5vdCBlbXB0eSwgdGhlbiByZXR1cm5cclxuICAgKiB0cnVlLiBPdGhlcndpc2UsIHJldHVybiBmYWxzZVxyXG4gICAqIEBwYXJhbSB7YW55fSBkYXRhIC0gYW55IC0gdGhlIGRhdGEgdGhhdCBpcyBiZWluZyBwYXNzZWQgaW5cclxuICAgKiBAcmV0dXJucyBBIGJvb2xlYW4gdmFsdWUuXHJcbiAgICovXHJcbiAgaXNWYWxpZERhdGEoZGF0YTogYW55KSB7XHJcbiAgICBjb25zdCByZXNwb25zaWJpbGl0eSA9IHRoaXMuY2hlY2tWYWxpZFJlc3BvbnNpYmlsaXR5TmFtZShcclxuICAgICAgZGF0YT8ucmVzcG9uc2liaWxpdHlOYW1lXHJcbiAgICApPy5sZW5ndGhcclxuICAgICAgPyB0cnVlXHJcbiAgICAgIDogZmFsc2U7XHJcbiAgICBjb25zdCBhc3NpZ25lZSA9IGRhdGE/LmFzc2lnbmVlPy5sZW5ndGggPyB0cnVlIDogZmFsc2U7XHJcbiAgICBjb25zdCBmcmVxdWVuY3kgPSBkYXRhPy5mcmVxdWVuY3k/Lmxlbmd0aCA/IHRydWUgOiBmYWxzZTtcclxuICAgIGlmIChhc3NpZ25lZSAmJiByZXNwb25zaWJpbGl0eSAmJiBmcmVxdWVuY3kpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJZiB0aGUgYXNzaWdub3IgaXMgdGhlIHNhbWUgYXMgdGhlIG92ZXJzZWVyIG9yIHRoZSBOb3RpZnlPbkZhaWx1cmUsIG9yIGlmIHRoZSBhc3NpZ25vciBpcyBub3Qgc2V0XHJcbiAgICogYW5kIHRoZSBkZWZhdWx0T3duZXIgaXMgdGhlIHNhbWUgYXMgdGhlIG92ZXJzZWVyIG9yIHRoZSBOb3RpZnlPbkZhaWx1cmUsIG9yIGlmIHRoZSBhc3NpZ25lZSBpcyB0aGVcclxuICAgKiBzYW1lIGFzIHRoZSByZXZpZXdlciwgb3ZlcnNlZXIsIG9yIE5vdGlmeU9uRmFpbHVyZSwgb3IgaWYgdGhlIGFzc2lnbmVlIGlzIG5vdCBzZXQgYW5kIHRoZVxyXG4gICAqIGRlZmF1bHRPd25lciBpcyB0aGUgc2FtZSBhcyB0aGUgb3ZlcnNlZXIgb3IgdGhlIE5vdGlmeU9uRmFpbHVyZSwgb3IgaWYgdGhlIHJldmlld2VyIGlzIHRoZSBzYW1lIGFzXHJcbiAgICogdGhlIG92ZXJzZWVyIG9yIHRoZSBOb3RpZnlPbkZhaWx1cmUsIG9yIGlmIHRoZSBhc3NpZ25lZSBpcyBub3Qgc2V0LCB0aGVuIHJldHVybiBmYWxzZS4gT3RoZXJ3aXNlLFxyXG4gICAqIHJldHVybiB0cnVlXHJcbiAgICogQHBhcmFtIHthbnl9IGRhdGEgLSBhbnkgLSB0aGlzIGlzIHRoZSBkYXRhIHRoYXQgaXMgcGFzc2VkIGluIGZyb20gdGhlIGZvcm0uXHJcbiAgICogQHJldHVybnMgQSBib29sZWFuIHZhbHVlLlxyXG4gICAqL1xyXG4gIGlzVmFsaWRVc2VycyhkYXRhOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmIChcclxuICAgICAgKGRhdGE/LmFzc2lnbm9yICYmXHJcbiAgICAgICAgKGRhdGE/LmFzc2lnbm9yID09IGRhdGE/Lm92ZXJzZWVyIHx8XHJcbiAgICAgICAgICBkYXRhPy5hc3NpZ25vciA9PSBkYXRhPy5ub3RpZnlPbkZhaWx1cmUpKSB8fFxyXG4gICAgICAoIWRhdGE/LmFzc2lnbm9yICYmXHJcbiAgICAgICAgKHRoaXMuZGVmYXVsdE93bmVyID09IGRhdGE/Lm92ZXJzZWVyIHx8XHJcbiAgICAgICAgICB0aGlzLmRlZmF1bHRPd25lciA9PSBkYXRhPy5ub3RpZnlPbkZhaWx1cmUpKSB8fFxyXG4gICAgICAoZGF0YT8uYXNzaWduZWUgJiZcclxuICAgICAgICAoZGF0YT8uYXNzaWduZWUgPT0gZGF0YT8ucmV2aWV3ZXIgfHxcclxuICAgICAgICAgIGRhdGE/LmFzc2lnbmVlID09IGRhdGE/Lm92ZXJzZWVyIHx8XHJcbiAgICAgICAgICBkYXRhPy5hc3NpZ25lZSA9PSBkYXRhPy5ub3RpZnlPbkZhaWx1cmUpKSB8fFxyXG4gICAgICAoIWRhdGE/LmFzc2lnbmVlICYmXHJcbiAgICAgICAgKHRoaXMuZGVmYXVsdE93bmVyID09IGRhdGE/Lm92ZXJzZWVyIHx8XHJcbiAgICAgICAgICB0aGlzLmRlZmF1bHRPd25lciA9PSBkYXRhPy5ub3RpZnlPbkZhaWx1cmUpKSB8fFxyXG4gICAgICAoZGF0YT8ucmV2aWV3ZXIgJiZcclxuICAgICAgICAoZGF0YT8ucmV2aWV3ZXIgPT0gZGF0YT8ub3ZlcnNlZXIgfHxcclxuICAgICAgICAgIGRhdGE/LnJldmlld2VyID09IGRhdGE/Lm5vdGlmeU9uRmFpbHVyZSkpIHx8XHJcbiAgICAgICFkYXRhPy5hc3NpZ25lZVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSXQgdGFrZXMgaW4gYSBkYXRhIG9iamVjdCBhbmQgcmV0dXJucyBhbiBvYmplY3Qgd2l0aCA0IGJvb2xlYW4gcHJvcGVydGllcy5cclxuICAgKiBUaGUgYm9vbGVhbiBwcm9wZXJ0aWVzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZXMgb2YgdGhlIGRhdGEgb2JqZWN0LlxyXG4gICAqIEBwYXJhbSB7YW55fSBkYXRhIC0gYW55ID0ge1xyXG4gICAqIEByZXR1cm5zIHtcclxuICAgKiAgIGlzVmFsaWRBc3NpZ25lZTogdHJ1ZSxcclxuICAgKiAgIGlzVmFsaWRBc3NpZ25vcjogdHJ1ZSxcclxuICAgKiAgIGlzVmFsaWRSZXZpZXdlcjogdHJ1ZSxcclxuICAgKiAgIGlzVmFsaWRPdmVyc2VlcjogdHJ1ZVxyXG4gICAqIH1cclxuICAgKi9cclxuICB2YWxpZGF0ZURhdGFXaXRoUHJvZ3JhbShkYXRhOiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3QgcHJvZ3JhbSA9IHRoaXMudGVtcGxhdGVJbmZvPy5jYXRlZ29yeUxpc3Q/LmZpbHRlcihcclxuICAgICAgKHByb2dyYW06IGFueSkgPT4gcHJvZ3JhbT8ucHJvZ3JhbU5hbWUgPT09IGRhdGE/LnByb2dyYW1cclxuICAgICk7XHJcbiAgICBjb25zdCBzZWxlY3RlZEFzc2lnbmVlID0gdGhpcy50ZW1wbGF0ZUluZm8/LmFzc2lnbmVlc0xpc3Q/LmZpbHRlcihcclxuICAgICAgKGFzc2lnbmVlOiBhbnkpID0+IGFzc2lnbmVlPy5uYW1lQW5kRW1haWwgPT09IGRhdGE/LmFzc2lnbmVlXHJcbiAgICApO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRBc3NpZ25vciA9IHRoaXMudGVtcGxhdGVJbmZvPy5hc3NpZ25vcnNMaXN0Py5maWx0ZXIoXHJcbiAgICAgIChhc3NpZ25vcjogYW55KSA9PiBhc3NpZ25vcj8ubmFtZUFuZEVtYWlsID09PSBkYXRhPy5hc3NpZ25vclxyXG4gICAgKTtcclxuICAgIGNvbnN0IHNlbGVjdGVkUmV2aWV3ZXIgPSB0aGlzLnRlbXBsYXRlSW5mbz8ucmV2aWV3ZXJMaXN0Py5maWx0ZXIoXHJcbiAgICAgIChyZXZpZXdlcjogYW55KSA9PiByZXZpZXdlcj8ubmFtZUFuZEVtYWlsID09PSBkYXRhPy5yZXZpZXdlclxyXG4gICAgKTtcclxuICAgIGNvbnN0IHNlbGVjdGVkT3ZlcnNlZXIgPSB0aGlzLnRlbXBsYXRlSW5mbz8ucmV2aWV3ZXJMaXN0Py5maWx0ZXIoXHJcbiAgICAgIChvdmVyc2VlcjogYW55KSA9PiBvdmVyc2Vlcj8ubmFtZUFuZEVtYWlsID09PSBkYXRhPy5vdmVyc2VlclxyXG4gICAgKTtcclxuICAgIGNvbnN0IHNlbGVjdGVkTm90aWZ5T25GYWlsdXJlID0gdGhpcy50ZW1wbGF0ZUluZm8/LnJldmlld2VyTGlzdD8uZmlsdGVyKFxyXG4gICAgICAobm90aWZ5T25GYWlsdXJlOiBhbnkpID0+XHJcbiAgICAgICAgbm90aWZ5T25GYWlsdXJlPy5uYW1lQW5kRW1haWwgPT09IGRhdGE/Lm5vdGlmeU9uRmFpbHVyZVxyXG4gICAgKTtcclxuICAgIGxldCBpc1ZhbGlkQXNzaWduZWUgPSB0cnVlO1xyXG4gICAgbGV0IGlzVmFsaWRBc3NpZ25vciA9IHRydWU7XHJcbiAgICBsZXQgaXNWYWxpZFJldmlld2VyID0gdHJ1ZTtcclxuICAgIGxldCBpc1ZhbGlkT3ZlcnNlZXIgPSB0cnVlO1xyXG4gICAgbGV0IGlzVmFsaWROb3RpZnlPbkZhaWx1cmUgPSB0cnVlO1xyXG4gICAgaWYgKHByb2dyYW0gJiYgdGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24pIHtcclxuICAgICAgaWYgKHByb2dyYW1bMF0/LmFzc2lnbmVlPy5sZW5ndGggJiYgc2VsZWN0ZWRBc3NpZ25lZT8ubGVuZ3RoKSB7XHJcbiAgICAgICAgaXNWYWxpZEFzc2lnbmVlID0gcHJvZ3JhbVswXT8uYXNzaWduZWU/LmluY2x1ZGVzKFxyXG4gICAgICAgICAgc2VsZWN0ZWRBc3NpZ25lZVswXT8ubXlfbWVtYmVyX2lkXHJcbiAgICAgICAgKVxyXG4gICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICA6IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwcm9ncmFtWzBdPy5yZXZpZXdlcj8ubGVuZ3RoICYmIHNlbGVjdGVkUmV2aWV3ZXI/Lmxlbmd0aCkge1xyXG4gICAgICAgIGlzVmFsaWRSZXZpZXdlciA9IHByb2dyYW1bMF0/LnJldmlld2VyPy5pbmNsdWRlcyhcclxuICAgICAgICAgIHNlbGVjdGVkUmV2aWV3ZXJbMF0/Lm15X21lbWJlcl9pZFxyXG4gICAgICAgIClcclxuICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgOiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocHJvZ3JhbVswXT8ub3ZlcnNlZXI/Lmxlbmd0aCAmJiBzZWxlY3RlZE92ZXJzZWVyPy5sZW5ndGgpIHtcclxuICAgICAgICBpc1ZhbGlkT3ZlcnNlZXIgPSBwcm9ncmFtWzBdPy5vdmVyc2Vlcj8uaW5jbHVkZXMoXHJcbiAgICAgICAgICBzZWxlY3RlZE92ZXJzZWVyWzBdPy5teV9tZW1iZXJfaWRcclxuICAgICAgICApXHJcbiAgICAgICAgICA/IHRydWVcclxuICAgICAgICAgIDogZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHByb2dyYW1bMF0/Lm92ZXJzZWVyPy5sZW5ndGggJiYgc2VsZWN0ZWROb3RpZnlPbkZhaWx1cmU/Lmxlbmd0aCkge1xyXG4gICAgICAgIGlzVmFsaWROb3RpZnlPbkZhaWx1cmUgPSBwcm9ncmFtWzBdPy5vdmVyc2Vlcj8uaW5jbHVkZXMoXHJcbiAgICAgICAgICBzZWxlY3RlZE5vdGlmeU9uRmFpbHVyZVswXT8ubXlfbWVtYmVyX2lkXHJcbiAgICAgICAgKVxyXG4gICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICA6IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBpc1ZhbGlkQXNzaWduZWU6IGlzVmFsaWRBc3NpZ25lZSxcclxuICAgICAgaXNWYWxpZEFzc2lnbm9yOiBpc1ZhbGlkQXNzaWdub3IsXHJcbiAgICAgIGlzVmFsaWRSZXZpZXdlcjogaXNWYWxpZFJldmlld2VyLFxyXG4gICAgICBpc1ZhbGlkT3ZlcnNlZXI6IGlzVmFsaWRPdmVyc2VlcixcclxuICAgICAgaXNWYWxpZE5vdGlmeU9uRmFpbHVyZTogaXNWYWxpZE5vdGlmeU9uRmFpbHVyZSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJdCB0YWtlcyB0d28gc3RyaW5ncyBhcyBhcmd1bWVudHMsIGFuZCByZXR1cm5zIGFuIG9iamVjdCB3aXRoIHRocmVlIHByb3BlcnRpZXNcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvZ3JhbU5hbWUgLSBzdHJpbmcgLSZndDsgTmFtZSBvZiB0aGUgcHJvZ3JhbVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hpbGVQcm9ncmFtXSAtIHN0cmluZyA9Jmd0OyB0aGlzIGlzIHRoZSBuYW1lIG9mIHRoZSBzdWItcHJvZ3JhbVxyXG4gICAqIEByZXR1cm5zIHtcclxuICAgKiAgIHByb2dyYW1JZDogMSxcclxuICAgKiAgIGNoaWxkUHJvZ3JhbUlkOiAyLFxyXG4gICAqICAgY2F0ZWdvcnlJZDogJzEsMidcclxuICAgKiB9XHJcbiAgICovXHJcbiAgZ2V0UHJvZ3JhbUlkKHByb2dyYW1OYW1lOiBzdHJpbmcsIGNoaWxlUHJvZ3JhbT86IHN0cmluZyk6IGFueSB7XHJcbiAgICBjb25zdCBwcm9ncmFtID0gdGhpcy50ZW1wbGF0ZUluZm8/LmNhdGVnb3J5TGlzdD8uZmlsdGVyKFxyXG4gICAgICAocHJvZ3JhbTogYW55KSA9PiBwcm9ncmFtPy5wcm9ncmFtTmFtZSA9PT0gcHJvZ3JhbU5hbWVcclxuICAgICk7XHJcbiAgICBsZXQgc3ViUHJvZ3JhbTtcclxuICAgIGxldCBzdWJQcm9ncmFtSWQ7XHJcbiAgICBsZXQgY2F0ZWdvcnlJZDtcclxuICAgIGlmIChjaGlsZVByb2dyYW0/Lmxlbmd0aCAmJiBwcm9ncmFtPy5sZW5ndGgpIHtcclxuICAgICAgc3ViUHJvZ3JhbSA9IHByb2dyYW1bMF0/LmNoaWxkQ2F0ZWdvcnk/LmZpbHRlcihcclxuICAgICAgICAoc3ViUHJvZ3JhbTogYW55KSA9PiBzdWJQcm9ncmFtPy5uYW1lID09PSBjaGlsZVByb2dyYW1cclxuICAgICAgKTtcclxuICAgICAgc3ViUHJvZ3JhbUlkID0gc3ViUHJvZ3JhbT8ubGVuZ3RoID8gc3ViUHJvZ3JhbVswXT8uaWQgOiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHN1YlByb2dyYW1JZCAmJiBwcm9ncmFtPy5sZW5ndGgpIHtcclxuICAgICAgY2F0ZWdvcnlJZCA9XHJcbiAgICAgICAgcHJvZ3JhbVswXT8ucHJvZ3JhbUlkPy50b1N0cmluZygpICsgJywnICsgc3ViUHJvZ3JhbUlkPy50b1N0cmluZygpO1xyXG4gICAgfSBlbHNlIGlmIChwcm9ncmFtPy5sZW5ndGgpIHtcclxuICAgICAgY2F0ZWdvcnlJZCA9IHByb2dyYW1bMF0/LnByb2dyYW1JZD8udG9TdHJpbmcoKTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHByb2dyYW1JZDogcHJvZ3JhbT8ubGVuZ3RoID8gcHJvZ3JhbVswXT8ucHJvZ3JhbUlkIDogdW5kZWZpbmVkLFxyXG4gICAgICBjaGlsZFByb2dyYW1JZDogc3ViUHJvZ3JhbUlkLFxyXG4gICAgICBjYXRlZ29yeUlkOiBjYXRlZ29yeUlkLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEl0IHRha2VzIGEgc3RyaW5nIGFzIGFuIGFyZ3VtZW50IGFuZCByZXR1cm5zIGEgc3RyaW5nLlxyXG4gICAqIEBwYXJhbSB7YW55fSBpdGVtIC0gdGhpcyBpcyB0aGUgbmFtZSBvZiB0aGUgZ3JvdXAgdGhhdCBpcyBzZWxlY3RlZCBmcm9tIHRoZSBkcm9wZG93bi5cclxuICAgKiBpdCB3aWxsIHJldHVybiBlbXBsb3llZSBpZCBpbiB0aGlzIGZvcm0gJzEyMzQsMjM0NScuXHJcbiAgICovXHJcbiAgZ2V0RW1wbG95ZWVJZEZyb21Hcm91cChpdGVtOiBhbnkpIHtcclxuICAgIGxldCBlbXBJZDogYW55ID0gW107XHJcbiAgICBsZXQgZW1wbG95ZWVfaWQ6IGFueSA9IFtdO1xyXG4gICAgdGhpcy50ZW1wbGF0ZUluZm8/LmFzc2lnbmVlc0xpc3Q/LmZvckVhY2goKGVuRWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChlbkVsZW1lbnQ/Lm5hbWVBbmRFbWFpbCA9PSBpdGVtKSB7XHJcbiAgICAgICAgZW1wSWQgPSBlbkVsZW1lbnQ/Lm15X21lbWJlcl9pZDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAoZW1wSWQ/Lmxlbmd0aCkge1xyXG4gICAgICBlbXBJZD8uZm9yRWFjaCgoaWQ6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvPy5yZXZpZXdlckxpc3QuZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAodXNlcj8ubXlfbWVtYmVyX2lkID09IGlkKSB7XHJcbiAgICAgICAgICAgIGVtcGxveWVlX2lkPy5wdXNoKHVzZXI/LmVtcGxveWVlX2lkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZW1wbG95ZWVfaWQ/LnRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJZiB0aGUgaXRlbSBpcyBhIGdyb3VwLCByZXR1cm4gdHJ1ZSwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgKiBAcGFyYW0ge2FueX0gaXRlbSAtIGFueSAtIHRoZSBpdGVtIHRoYXQgaXMgYmVpbmcgY2hlY2tlZFxyXG4gICAqL1xyXG4gIGlzR3JvdXBTZWxlY3RlZChpdGVtOiBhbnkpIHtcclxuICAgIGxldCBpc0dyb3VwID0gZmFsc2U7XHJcbiAgICB0aGlzLnRlbXBsYXRlSW5mby5hc3NpZ25lZXNMaXN0LmZvckVhY2goKGVuRWxlbWVudDogYW55KTogYW55ID0+IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGVuRWxlbWVudC5uYW1lQW5kRW1haWwgPT0gaXRlbSAmJlxyXG4gICAgICAgIChpdGVtPy5pbmNsdWRlcygnVXNlcnMpJykgfHwgaXRlbT8uaW5jbHVkZXMoJ1VzZXIpJykpICYmXHJcbiAgICAgICAgdHlwZW9mIGVuRWxlbWVudD8ubXlfbWVtYmVyX2lkID09ICdvYmplY3QnXHJcbiAgICAgICkge1xyXG4gICAgICAgIGlzR3JvdXAgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBpc0dyb3VwO1xyXG4gIH1cclxufVxyXG4iLCI8IS0tIDxkaXYgY2xhc3M9XCJhZGQtbXVsdGlwbGUtcmlza1wiIFthdHRyLmlkXT1cIidzY3JvbGxSZWZlcmVuY2UnXCIgPlxyXG4gICAgPCEtIC0gbWFpbiBjb250YWluZXIgc3RhcnRzIGhlcmUgLSAtPlxyXG4gICAgPGRpdiBjbGFzcz1cImFkZC1tdWx0aXBsZS1yaXNrLWJvZHlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkLW11bHRpcGxlLXJpc2stY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvc3ByZWFkc2hlZXQtbXVsdGlwbGUtY2F0ZWdvcnkuc3ZnXCIgYWx0PVwiXCIgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxoND5Zb3UgY2FuIGVudHJ1c3QgbXVsdGlwbGUgcmVzcG9uc2liaWxpdGllcyBpbiBqdXN0IHR3byBlYXN5IHN0ZXBzOjwvaDQ+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3RcIj5cclxuICAgICAgICAgICAgICAgIDxsaT5Eb3dubG9hZCB0aGUgdGVtcGxhdGUgYW5kIGZpbGwgaW4gdGhlIGRldGFpbHMuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5VcGxvYWQgdGhlIC54bHN4IGZpbGUgYW5kIHlvdeKAmXJlIGdvb2QgdG8gZ28hPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuXHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkb3dubG9hZFwiICpuZ0lmPVwiZG93bmxvYWRTdGF0dXMgPT09ICdOT1RfRE9XTkxPQURJTkcnXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkVGVtcGxhdGUoKVwiIHR5cGU9XCJidXR0b25cIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxYjs8L2k+IERvd25sb2FkIFRlbXBsYXRlPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiICpuZ0lmPVwiZG93bmxvYWRTdGF0dXMgPT09ICdET1dOTE9BRElORydcIj5cclxuICAgICAgICAgICAgICAgIERvd25sb2FkIGluIFByb2dyZXNzXHJcbiAgICAgICAgICAgICAgICA8YXBwLWxpbmUtbG9hZGVyIFtsb2FkZXJIZWlnaHRdPVwiJzInXCI+PC9hcHAtbGluZS1sb2FkZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG93bmxvYWRTdGF0dXMgPT09ICdET1dOTE9BREVEJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1bGstYnRuLXByb2dyZXNzXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWM7PC9pPkRvd25sb2FkIENvbXBsZXRlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnVsay1idG4tYWdhaW5cIj5cclxuICAgICAgICAgICAgICAgICAgICBJcyB0aGUgZmlsZSBub3QgZG93bmxvYWRlZD9cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJkb3dubG9hZFRlbXBsYXRlKClcIj5SZXRyeSBEb3dubG9hZDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cImlzV3JvbmdGaWxlIHx8IGlzV3JvbmdGb3JtYXR8fCBpc0ZpbGVFbXB0eVwiXHJcbiAgICAgICAgICAgID57e2Vycm9yTWVzc2FnZX19PC9wPiAgXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+IC0tPlxyXG48YXBwLWJ1bGstcmVzcG9uc2liaWxpdHktdmlldyAqbmdJZj1cInNob3dFeGNlbFwiXHJcbiAgICBbcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkXT1cInJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZFwiXHJcbiAgICBbYnVsa1VwbG9hZF09XCJidWxrVXBsb2FkXCJcclxuICAgIFtmaWxlTmFtZV09XCJmaWxlTmFtZVwiXHJcbiAgICBbbG9hZGVyXT1cImxvYWRlclwiXHJcbiAgICBbZGVmYXVsdE93bmVyXT1cImRlZmF1bHRPd25lclwiXHJcbiAgICBbdGFiVHlwZV09XCJ0YWJUeXBlXCJcclxuICAgIFtidWxrVXBsb2FkXT1cImJ1bGtVcGxvYWRcIlxyXG4gICAgKHN1Ym1pdFJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCk9XCJzdWJtaXRSZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQoKVwiXHJcbiAgICAoc2VsZWN0ZWRUYWIpPVwic2VsZWN0ZWRUYWIoJGV2ZW50KVwiXHJcbiAgICAoY2FuY2VsKT1cInJlc2V0KClcIlxyXG4gICAgW3Jlc3BvbnNpYmlsaXR5VHlwZV09XCInbXVsdGlUYWInXCI+XHJcbjwvYXBwLWJ1bGstcmVzcG9uc2liaWxpdHktdmlldz5cclxuPGFwcC1sb2FkZXItaW5saW5lICpuZ0lmPVwibG9hZGVyXCI+PC9hcHAtbG9hZGVyLWlubGluZT5cclxuXHJcbjxpbnB1dCB0eXBlPVwiZmlsZVwiIFsobmdNb2RlbCldPVwiZmlsZVZhbHVlXCIgaWQ9XCJmaWxlSW5wdXRcIiBjbGFzcz1cImhpZGRlbi1pbnB1dFwiIGFjY2VwdD1cIi54bHN4XCIgKGNoYW5nZSk9XCJ1cGxvYWRlZEZpbGUoJGV2ZW50KVwiIG11bHRpcGxlIC8+XHJcbjxhcHAtc21pbGV5LWRpYWxvZy1pbmxpbmUgKm5nSWY9XCJzaG93U21pbGV5XCIgW21lc3NhZ2VdPVwic21pbGV5TWVzc2FnZVwiIFthY3Rpb25CdXR0b25zXT1cImFjdGlvbkJ1dHRvbnNcIiAoYWN0aW9uKT1cImFjdGlvbigkZXZlbnQpXCIgKGNsb3NlU21pbGV5KT1cImNsb3NlU21pbGV5KCRldmVudClcIj48L2FwcC1zbWlsZXktZGlhbG9nLWlubGluZT4iXX0=
1569
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LXdpdGgtdGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS13aXRoLXRhYi9hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHktd2l0aC10YWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LXdpdGgtdGFiL2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS13aXRoLXRhYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxHQUliLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBQ25DLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7QUFpQjdCLE1BQU0sT0FBTyx5Q0FBeUM7SUFzQnBELElBQTJCLGdCQUFnQixDQUFDLElBQVM7UUFDbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBdUZELFlBQ1UsV0FBMkIsRUFDM0IscUJBQTRDLEVBQzVDLFdBQXdCLEVBQ3hCLGdCQUFzQyxFQUN0QyxRQUF5QjtRQUp6QixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXNCO1FBQ3RDLGFBQVEsR0FB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QU8sRUFBRTtZQUM5RCxJQUNFLFNBQVMsQ0FBQyxZQUFZLElBQUksSUFBSTtnQkFDOUIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3JELE9BQU8sU0FBUyxFQUFFLFlBQVksSUFBSSxRQUFRLEVBQzFDO2dCQUNBLE9BQU8sR0FBRyxJQUFJLENBQUM7YUFDaEI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7K0dBbnFEVSx5Q0FBeUM7bUdBQXpDLHlDQUF5Qyw0Y0M3QnRELCtxRkErQ2dNOzs0RkRsQm5MLHlDQUF5QztrQkFSckQsU0FBUzsrQkFDRSwwQ0FBMEM7b09BUTFDLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFFRyw4QkFBOEI7c0JBQXZDLE1BQU07Z0JBZ0JvQixnQkFBZ0I7c0JBQTFDLEtBQUs7dUJBQUMsY0FBYztnQkFHWixVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFrRkcsV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XHJcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50L21vbWVudCc7XHJcbmltcG9ydCAqIGFzIFhMU1ggZnJvbSAneGxzeCc7XHJcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBZGRSaXNrU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2FkZC1yaXNrLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IEZyZXF1ZW5jeUJ1bGtTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvZnJlcXVlbmN5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZXNwb25zaWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9yZXNwb25zaWJpbGl0eS5zZXJ2aWNlJztcclxuXHJcbnR5cGUgQU9BID0gYW55W11bXTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWFkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS13aXRoLXRhYicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS13aXRoLXRhYi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbXHJcbiAgICAnLi9hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHktd2l0aC10YWIuY29tcG9uZW50Lmxlc3MnLFxyXG4gICAgJy4uL2Zvcm1zLmxlc3MnLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZGRNdWx0aXBsZVJlc3BvbnNpYmlsaXR5V2l0aFRhYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQE91dHB1dCgpIHBpY2tlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHBvcHVsYXRlT3B0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjbG9zZVdvcmtmbG93ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkaXNjb25uZWN0UmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBpc05vdGlmaWNhdGlvblBlbmRpbmcgPSAwO1xyXG4gIEBPdXRwdXQoKSBjbG9zZUFkZE11bHRpcGxlUmVzcG9uc2liaWxpdHkgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgcXVlcnlQYXJhbTogc3RyaW5nID0gJyc7XHJcbiAgcmVjZW50UmVzcG9uc2liaWxpdHlVcmw6IGFueSA9IHtcclxuICAgIGJ5UmVzcG9uc2liaWxpdGllczogeyB0eXBlOiBbJ3JlY2VudF9yZXNwb25zaWJpbGl0aWVzJ10sIHN1YlR5cGU6IFsnQ0MnXSB9LFxyXG4gICAgYnlTdGF0dXM6IHsgdHlwZTogW10sIHN1YlR5cGU6IFtdIH0sXHJcbiAgICBmaWx0ZXJPYmplY3Q6IHtcclxuICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IFtdLFxyXG4gICAgICBlbnRydXN0ZWRCeTogW10sXHJcbiAgICAgIGVudHJ1c3RlZFRvOiBbXSxcclxuICAgICAgcmlza0lkczogW10sXHJcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IFtdLFxyXG4gICAgfSxcclxuICAgIHRpbWVQZXJpb2REZXRhaWxzOiB7IHR5cGU6ICcnLCBzZWxlY3RlZFBlcmlvZDogJycsIHNlbGVjdGVkWWVhcjogJycgfSxcclxuICAgIHN0YXR1czogJycsXHJcbiAgfTtcclxuXHJcbiAgQElucHV0KCd1cGxvYWRlZEZpbGUnKSBzZXQgdXBsb2FkZWRGaWxlRGF0YShkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMudXBsb2FkZWRGaWxlKGRhdGEpO1xyXG4gIH1cclxuICBASW5wdXQoKSBvcmdEZXRhaWxzITogYW55O1xyXG4gIEBJbnB1dCgpIGZlYXR1cmUhOiBhbnk7XHJcblxyXG4gIHVybCA9XHJcbiAgICAncT17XCJieVJlc3BvbnNpYmlsaXRpZXNcIjp7XCJ0eXBlXCI6W1wicmVzcG9uc2liaWxpdGllc19pbl9xdWV1ZVwiXSxcInN1YlR5cGVcIjpbXCJDQ1wiXX0sXCJieVN0YXR1c1wiOntcInR5cGVcIjpbXCJyZXNwb25zaWJpbGl0aWVzX2luX3F1ZXVlXCJdLFwic3ViVHlwZVwiOltdfSxcImZpbHRlck9iamVjdFwiOntcInJlc3BvbnNpYmlsaXR5Q2VudGVyXCI6W10sXCJlbnRydXN0ZWRCeVwiOltdLFwiZW50cnVzdGVkVG9cIjpbXSxcInJpc2tJZHNcIjpbXSxcInJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnlcIjpbXX0sXCJ0aW1lUGVyaW9kRGV0YWlsc1wiOntcInR5cGVcIjpcIlwiLFwic2VsZWN0ZWRQZXJpb2RcIjpcIlwiLFwic2VsZWN0ZWRZZWFyXCI6XCJcIn0sXCJzdGF0dXNcIjpcIlwifSc7XHJcbiAgcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkOiBhbnkgPSB7XHJcbiAgICBoZWFkZXI6IFtdLFxyXG4gICAgcmVwb3J0czogW10sXHJcbiAgfTtcclxuICB0YWJUeXBlOiAnZnJlcXVlbmN5JyB8ICdvbmdvaW5nJyB8ICdvbkNvbXBsZXRpb24nID0gJ2ZyZXF1ZW5jeSc7XHJcbiAgdGFiSW5kZXg6IGFueSA9IHtcclxuICAgIGZyZXF1ZW5jeTogMCxcclxuICAgIG9uZ29pbmc6IDEsXHJcbiAgICBvbkNvbXBsZXRpb246IDIsXHJcbiAgfTtcclxuXHJcbiAgYnVsa1VwbG9hZDogYW55ID0ge1xyXG4gICAgZnJlcXVlbmN5OiB7XHJcbiAgICAgIGhlYWRlcjogW10sXHJcbiAgICAgIHN1YkhlYWRpbmc6IFtdLFxyXG4gICAgICByZXBvcnRzOiBbXSxcclxuICAgIH0sXHJcbiAgICBvbmdvaW5nOiB7XHJcbiAgICAgIGhlYWRlcjogW10sXHJcbiAgICAgIHN1YkhlYWRpbmc6IFtdLFxyXG4gICAgICByZXBvcnRzOiBbXSxcclxuICAgIH0sXHJcbiAgICBvbkNvbXBsZXRpb246IHtcclxuICAgICAgaGVhZGVyOiBbXSxcclxuICAgICAgc3ViSGVhZGluZzogW10sXHJcbiAgICAgIHJlcG9ydHM6IFtdLFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICB0ZW1wbGF0ZUluZm86IGFueSA9IHtcclxuICAgIGNhdGVnb3J5TGlzdDogW10sXHJcbiAgICByY0xpc3Q6IFtdLFxyXG4gICAgYXNzaWdub3JzTGlzdDogW10sXHJcbiAgICBhc3NpZ25lZXNMaXN0OiBbXSxcclxuICAgIHJldmlld2VyTGlzdDogW10sXHJcbiAgICBwYXJlbnRSZXNwb25zaWJpbGl0eTogW10sXHJcbiAgICBtZW1iZXJJZDogJycsXHJcbiAgfTtcclxuICBpc0xvYWRlciA9IGZhbHNlO1xyXG4gIHNob3dDYXRlZ29yeUxpc3QgPSBmYWxzZTtcclxuICB0ZW1wbGF0ZURvd25sb2FkZWQgPSBmYWxzZTtcclxuICBkb3dubG9hZEluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICBsb2FkZXIgPSBmYWxzZTtcclxuICBpc0ZpbGVFbXB0eSA9IGZhbHNlO1xyXG4gIGlzV3JvbmdGaWxlID0gZmFsc2U7XHJcbiAgaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xyXG4gIGZpbGVOYW1lOiBhbnk7XHJcbiAgZGF0YTogYW55O1xyXG4gIHNob3dFeGNlbCA9IGZhbHNlO1xyXG4gIHVwbG9hZGVkRmlsZXM6IGFueSA9IFtdO1xyXG4gIGZpbGVSZXNwb25zZTogYW55ID0gW107XHJcbiAgZmlsZVZhbHVlOiBhbnk7XHJcbiAgbWVtYmVySWQgPSAwO1xyXG4gIG9yZ2FuaXphdGlvbklkID0gMDtcclxuICBlcnJvck1lc3NhZ2UgPSAnIGludmFsaWQgZmlsZSBlcnJvcic7XHJcbiAgZG93bmxvYWRTdGF0dXM6IHN0cmluZyA9ICdOT1RfRE9XTkxPQURJTkcnO1xyXG4gIGRvd25sb2FkUGVyY2VudCA9IDA7XHJcbiAgZGVmYXVsdE93bmVyID0gJyc7XHJcbiAgc21pbGV5TWVzc2FnZSA9IGBZb3UncmUgQWxsIFNldCEgV2UncmUgcHJvY2Vzc2luZyB5b3VyIHJlcXVlc3QgYW5kIHlvdSB3aWxsIGJlIG5vdGlmaWVkIHZpYSBlbWFpbCB1cG9uIGNvbXBsZXRpb24uYDtcclxuICBhY3Rpb25CdXR0b25zID0gW1xyXG4gICAge1xyXG4gICAgICBidXR0b25UZXh0OiAnRW50cnVzdCBNb3JlIFJlc3BvbnNpYmlsaXRpZXMnLFxyXG4gICAgICBjbGFzczogJ3doaXRlLWJ0bicsXHJcbiAgICAgIGlkOiAnYWRkTW9yZScsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBidXR0b25UZXh0OiB0aGlzLmlzTm90aWZpY2F0aW9uUGVuZGluZ1xyXG4gICAgICAgID8gJ1ZpZXcgUmVzcG9uc2liaWxpdGllcyBJbiBRdWV1ZSdcclxuICAgICAgICA6ICdWaWV3IFJlc3BvbnNpYmlsaXRpZXMnLFxyXG4gICAgICBjbGFzczogJ2JsdWUtYnRuJyxcclxuICAgICAgaWQ6ICd2aWV3JyxcclxuICAgIH0sXHJcbiAgXTtcclxuICBzaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgbWVtYmVyX29ial9pZCA9ICcnO1xyXG4gIHJpc2tDbGFzc0VuYWJsZWQ6IGFueTtcclxuICB1c2VySW5mbyE6IGFueTtcclxuICByZXNwb25zaWJpbGl0eURhdGEhOiBhbnk7XHJcbiAgQElucHV0KCkgZmVhdHVyZWZsYWc6IGFueTtcclxuICBmZkJ1bGtVcGxvYWRPcHRpbWl6YXRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJpc2tTZXJ2aWNlOiBBZGRSaXNrU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVzcG9uc2liaWxpdHlTZXJ2aWNlOiBSZXNwb25zaWJpbGl0eVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgZnJlcXVlbmN5U2VydmljZTogRnJlcXVlbmN5QnVsa1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBTbmFja0JhclNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHt9XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgICB0aGlzLm9yZ2FuaXphdGlvbklkID0gdGhpcy5hdXRoU2VydmljZS5nZXRPcmdhbml6YXRpb25JZCgpO1xyXG4gICAgdGhpcy5tZW1iZXJJZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0TWVtYmVySWQoKTtcclxuICAgIHRoaXMubWVtYmVyX29ial9pZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlckRldGFpbHMoKS5faWQ7XHJcbiAgICB0aGlzLnVzZXJJbmZvID0gdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyRGV0YWlscygpLnVzZXI7XHJcbiAgICB0aGlzLmRlZmF1bHRPd25lciA9IHRoaXMudXNlckluZm9cclxuICAgICAgPyB0aGlzLnVzZXJJbmZvLm5hbWUgKyAnICgnICsgdGhpcy51c2VySW5mby5lbWFpbCArICcpJ1xyXG4gICAgICA6ICcnO1xyXG4gICAgdGhpcy5nZXRVc2VyRGV0YWlscygpO1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5nZXRPcmdhbml6YXRpb25EZXRhaWxzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnJpc2tDbGFzc0VuYWJsZWQgPSByZXMuZW5hYmxlX3Jpc2tjbGFzcztcclxuICAgIH0pO1xyXG4gICAgdGhpcy5mZkJ1bGtVcGxvYWRPcHRpbWl6YXRpb24gPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcclxuICAgICAgJ2ZmX2J1bGtfdXBsb2FkX29wdGltaXphdGlvbidcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB0cmlnZ2VyQnJvd3NlRmlsZSgpIHtcclxuICAgIGNvbnN0IGdldEZpbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmlsZUlucHV0Jyk7XHJcbiAgICBpZiAoZ2V0RmlsZSkge1xyXG4gICAgICBnZXRGaWxlLmNsaWNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldFVzZXJEZXRhaWxzKCkge1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5nZXRVc2VySW5mbygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5pc05vdGlmaWNhdGlvblBlbmRpbmcgPSByZXMubm90aWZpY2F0aW9uX3BlbmRpbmdfZmxhZztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkZWRGaWxlKGV2ZW50OiBhbnksIHRhYlR5cGU/OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkID0ge1xyXG4gICAgICAgIGhlYWRlcjogW10sXHJcbiAgICAgICAgcmVwb3J0czogW10sXHJcbiAgICAgIH07XHJcblxyXG4gICAgICB0aGlzLnRlbXBsYXRlSW5mbyA9IHtcclxuICAgICAgICBjYXRlZ29yeUxpc3Q6IFtdLFxyXG4gICAgICAgIHJjTGlzdDogW10sXHJcbiAgICAgICAgYXNzaWdub3JzTGlzdDogW10sXHJcbiAgICAgICAgYXNzaWduZWVzTGlzdDogW10sXHJcbiAgICAgICAgcmV2aWV3ZXJMaXN0OiBbXSxcclxuICAgICAgICBwYXJlbnRSZXNwb25zaWJpbGl0eTogW10sXHJcbiAgICAgICAgbWVtYmVySWQ6ICcnLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBbXTtcclxuICAgICAgY29uc3QgcmVmZXJlbmNlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3Njcm9sbFJlZmVyZW5jZScpO1xyXG4gICAgICBpZiAocmVmZXJlbmNlKSB7XHJcbiAgICAgICAgcmVmZXJlbmNlLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5pc0ZpbGVFbXB0eSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzV3JvbmdGaWxlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmZpbGVOYW1lID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdLm5hbWU7XHJcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlcy5wdXNoKGV2ZW50LnRhcmdldC5maWxlcyk7XHJcbiAgICAgIGNvbnN0IHRhcmdldDogRGF0YVRyYW5zZmVyID0gZXZlbnQudGFyZ2V0IGFzIERhdGFUcmFuc2ZlcjtcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBjdXJseVxyXG4gICAgICBpZiAodGFyZ2V0LmZpbGVzLmxlbmd0aCAhPT0gMSlcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCB1c2UgbXVsdGlwbGUgZmlsZXMnKTtcclxuICAgICAgY29uc3QgcmVhZGVyOiBGaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgcmVhZGVyLm9ubG9hZCA9IChlOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBic3RyOiBzdHJpbmcgPSBlLnRhcmdldC5yZXN1bHQ7XHJcbiAgICAgICAgY29uc3Qgd2I6IFhMU1guV29ya0Jvb2sgPSBYTFNYLnJlYWQoYnN0ciwgeyB0eXBlOiAnYmluYXJ5JyB9KTtcclxuICAgICAgICBjb25zdCB3c25hbWU6IHN0cmluZyA9IHdiLlNoZWV0TmFtZXNbMV07XHJcbiAgICAgICAgY29uc3Qgc2hlZXQyOiBzdHJpbmcgPSB3Yi5TaGVldE5hbWVzWzJdO1xyXG4gICAgICAgIGNvbnN0IHNoZWV0Mzogc3RyaW5nID0gd2IuU2hlZXROYW1lc1szXTtcclxuICAgICAgICBjb25zdCB3c25hbWUxOiBzdHJpbmcgPSB3Yi5TaGVldE5hbWVzWzRdO1xyXG4gICAgICAgIGNvbnN0IHdzOiBYTFNYLldvcmtTaGVldCA9IHdiLlNoZWV0c1t3c25hbWVdO1xyXG4gICAgICAgIGNvbnN0IHNoZWV0UmVwb3J0MjogWExTWC5Xb3JrU2hlZXQgPSB3Yi5TaGVldHNbc2hlZXQyXTtcclxuICAgICAgICBjb25zdCBzaGVldFJlcG9ydDM6IFhMU1guV29ya1NoZWV0ID0gd2IuU2hlZXRzW3NoZWV0M107XHJcbiAgICAgICAgY29uc3QgdGVtcERhdGE6IFhMU1guV29ya1NoZWV0ID0gd2IuU2hlZXRzW3dzbmFtZTFdO1xyXG4gICAgICAgIGNvbnN0IHREYXRhID0gWExTWC51dGlscy5zaGVldF90b19qc29uKHRlbXBEYXRhLCB7IGhlYWRlcjogMSB9KSBhcyBBT0E7XHJcbiAgICAgICAgY29uc3QgdGVtcExpc3QgPSB0RGF0YS5maWx0ZXIoXHJcbiAgICAgICAgICAoZGF0YUVsZW1lbnQ6IGFueSkgPT4gZGF0YUVsZW1lbnQubGVuZ3RoID4gMFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5zZXRPcmdhbml6YXRpb25EZXRhaWxzKHRlbXBMaXN0KTtcclxuICAgICAgICB3Yi5TaGVldE5hbWVzLmZvckVhY2goKHNoZWV0OiBhbnkpID0+IHtcclxuICAgICAgICAgIHN3aXRjaCAoc2hlZXQ/LnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY2FzZSAnZnJlcXVlbmN5IHJlc3BvbnNpYmlsaXRpZXMnOlxyXG4gICAgICAgICAgICAgIHRoaXMuc2V0RGF0YUZvckRpZmZlcmVudFRhYnMod3MsIHNoZWV0KTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnb25nb2luZyByZXNwb25zaWJpbGl0aWVzJzpcclxuICAgICAgICAgICAgICB0aGlzLnNldERhdGFGb3JEaWZmZXJlbnRUYWJzKHNoZWV0UmVwb3J0Miwgc2hlZXQpO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdvbiBjb21wbGV0aW9uIHJlc3BvbnNpYmlsaXRpZXMnOlxyXG4gICAgICAgICAgICAgIHRoaXMuc2V0RGF0YUZvckRpZmZlcmVudFRhYnMoc2hlZXRSZXBvcnQzLCBzaGVldCk7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH07XHJcbiAgICAgIHJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcodGFyZ2V0LmZpbGVzWzBdKTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEl0IHRha2VzIGEgd29ya3NoZWV0IGFuZCBhIHNoZWV0IG5hbWUsIGFuZCB0aGVuIGl0IHNldHMgdGhlIGRhdGEgZm9yIGRpZmZlcmVudCB0YWJzLlxyXG4gICAqIEBwYXJhbSB3cyAtIFhMU1guV29ya1NoZWV0LCBzaGVldDogc3RyaW5nXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNoZWV0IC0gc3RyaW5nIC0gdGhlIG5hbWUgb2YgdGhlIHNoZWV0IGluIHRoZSBleGNlbCBmaWxlXHJcbiAgICogQHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZSBcInJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZFwiIHdoaWNoIGlzIGFuIG9iamVjdC5cclxuICAgKi9cclxuICBzZXREYXRhRm9yRGlmZmVyZW50VGFicyh3czogWExTWC5Xb3JrU2hlZXQsIHNoZWV0OiBzdHJpbmcpIHtcclxuICAgIGxldCByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQ6IGFueSA9IHtcclxuICAgICAgaGVhZGVyOiBbXSxcclxuICAgICAgcmVwb3J0czogW10sXHJcbiAgICAgIHN1YkhlYWRpbmc6IFtdLFxyXG4gICAgfTtcclxuICAgIGxldCBzaGVldFZhbHVlID0gWExTWC51dGlscy5zaGVldF90b19qc29uKHdzLCB7XHJcbiAgICAgIGhlYWRlcjogMSxcclxuICAgICAgcmF3OiBmYWxzZSxcclxuICAgIH0pIGFzIEFPQTtcclxuICAgIGxldCBkYXRhID0gc2hlZXRWYWx1ZS5maWx0ZXIoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGxldCBpc1VuZGVmaW5lZCA9ICcnO1xyXG4gICAgICByZXMuZm9yRWFjaCgoZWw6IGFueSkgPT4ge1xyXG4gICAgICAgIGlzVW5kZWZpbmVkID0gaXNVbmRlZmluZWQgKyBlbDtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChzaGVldFZhbHVlWzJdICYmIHNoZWV0VmFsdWVbMl1bMV0gPT09ICdQcm9ncmFtJykge1xyXG4gICAgICAgIHJldHVybiAhKHJlcz8ubGVuZ3RoID09PSA5ICYmIHJlc1s4XSA9PT0gJycgJiYgIWlzVW5kZWZpbmVkLmxlbmd0aCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuICEocmVzPy5sZW5ndGggPT09IDYgJiYgcmVzWzVdID09PSAnJyAmJiAhaXNVbmRlZmluZWQubGVuZ3RoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMuZmlsZU5hbWUuc3Vic3RyKC01KSAhPT0gJy54bHN4Jykge1xyXG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9XHJcbiAgICAgICAgJ1RoZSBpbmNvcnJlY3QgZmlsZSBoYXMgYmVlbiB1cGxvYWRlZC4gUGxlYXNlIHVwbG9hZCB0aGUgdGVtcGxhdGUgd2hpY2ggeW91IGRvd25sb2FkZWQgZnJvbSBoZXJlLicgK1xyXG4gICAgICAgICcgUkVUUlknO1xyXG4gICAgICB0aGlzLmlzV3JvbmdGaWxlID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXIgPSBjbG9uZURlZXAoZGF0YVsyXSk7XHJcbiAgICByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuc3ViSGVhZGluZyA9IGNsb25lRGVlcChkYXRhWzNdKTtcclxuXHJcbiAgICBkYXRhID0gZGF0YS5zbGljZSg1KTtcclxuICAgIGlmICh0aGlzLm1lbWJlcl9vYmpfaWQgIT0gdGhpcy50ZW1wbGF0ZUluZm8ubWVtYmVySWQpIHtcclxuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPVxyXG4gICAgICAgICdUaGUgaW5jb3JyZWN0IGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQuIFBsZWFzZSB1cGxvYWQgdGhlIHRlbXBsYXRlIHdoaWNoIHlvdSBkb3dubG9hZGVkIGZyb20gaGVyZS4nICtcclxuICAgICAgICAnIFJFVFJZJztcclxuICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IHRydWU7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCByZXNwb25zaWJpbGl0eURhdGEgPSBkYXRhLmZpbHRlcihcclxuICAgICAgKGRhdGFFbGVtZW50OiBhbnkpID0+IGRhdGFFbGVtZW50Lmxlbmd0aCA+IDBcclxuICAgICk7XHJcbiAgICByZXNwb25zaWJpbGl0eURhdGEuZm9yRWFjaCgocmVwb3J0OiBhbnkpID0+IHtcclxuICAgICAgbGV0IHZhbGlkRGF0ZTtcclxuICAgICAgY29uc3QgdmFsaWRVc2VyID0gdGhpcy5yZXR1cm5JZHMocmVwb3J0WzJdLCAnZW50cnVzdGVkX3RvJylcclxuICAgICAgICA/IHRydWVcclxuICAgICAgICA6IGZhbHNlO1xyXG4gICAgICBpZiAocmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLmhlYWRlclsxXSA9PT0gJ1Byb2dyYW0nKSB7XHJcbiAgICAgICAgdmFsaWREYXRlID0gdGhpcy5jb21wYXJlV2l0aEN1cnJlbnREYXRlKHJlcG9ydFs0XSwgcmVwb3J0WzVdKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB2YWxpZERhdGUgPSB0aGlzLmNvbXBhcmVXaXRoQ3VycmVudERhdGUocmVwb3J0WzVdLCByZXBvcnRbNl0pO1xyXG4gICAgICB9XHJcbiAgICAgIC8qIFB1c2hpbmcgdGhlIHJlcG9ydCBkZXRhaWxzIGludG8gdGhlIGJ1bGtVcGxvYWQgb2JqZWN0IGFzIHBlciB0YWIgdGFicyAqL1xyXG4gICAgICBpZiAoc2hlZXQ/LnRvTG93ZXJDYXNlKCkgPT09ICdmcmVxdWVuY3kgcmVzcG9uc2liaWxpdGllcycpIHtcclxuICAgICAgICByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQucmVwb3J0cy5wdXNoKFxyXG4gICAgICAgICAgdGhpcy5zZXRSZXBvcnREZXRhaWxzKFxyXG4gICAgICAgICAgICByZXBvcnQsXHJcbiAgICAgICAgICAgICdmcmVxdWVuY3knLFxyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzFdID09PSAnUHJvZ3JhbScgPyB0cnVlIDogZmFsc2VcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuYnVsa1VwbG9hZC5mcmVxdWVuY3kuaGVhZGVyID0gcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkPy5oZWFkZXI7XHJcbiAgICAgICAgdGhpcy5idWxrVXBsb2FkLmZyZXF1ZW5jeS5zdWJIZWFkaW5nID1cclxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZD8uc3ViSGVhZGluZztcclxuICAgICAgICB0aGlzLmJ1bGtVcGxvYWQuZnJlcXVlbmN5LnJlcG9ydHMgPSByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQ/LnJlcG9ydHM7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHNoZWV0Py50b0xvd2VyQ2FzZSgpID09PSAnb25nb2luZyByZXNwb25zaWJpbGl0aWVzJykge1xyXG4gICAgICAgIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5yZXBvcnRzLnB1c2goXHJcbiAgICAgICAgICB0aGlzLnNldFJlcG9ydERldGFpbHMoXHJcbiAgICAgICAgICAgIHJlcG9ydCxcclxuICAgICAgICAgICAgJ29uZ29pbmcnLFxyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzFdID09PSAnUHJvZ3JhbScgPyB0cnVlIDogZmFsc2VcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuYnVsa1VwbG9hZC5vbmdvaW5nLmhlYWRlciA9IHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZD8uaGVhZGVyO1xyXG4gICAgICAgIHRoaXMuYnVsa1VwbG9hZC5vbmdvaW5nLnN1YkhlYWRpbmcgPVxyXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkPy5zdWJIZWFkaW5nO1xyXG4gICAgICAgIHRoaXMuYnVsa1VwbG9hZC5vbmdvaW5nLnJlcG9ydHMgPSByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQ/LnJlcG9ydHM7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHNoZWV0Py50b0xvd2VyQ2FzZSgpID09PSAnb24gY29tcGxldGlvbiByZXNwb25zaWJpbGl0aWVzJykge1xyXG4gICAgICAgIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5yZXBvcnRzLnB1c2goXHJcbiAgICAgICAgICB0aGlzLnNldFJlcG9ydERldGFpbHMoXHJcbiAgICAgICAgICAgIHJlcG9ydCxcclxuICAgICAgICAgICAgJ29uQ29tcGxldGlvbicsXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbMV0gPT09ICdQcm9ncmFtJyA/IHRydWUgOiBmYWxzZVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5idWxrVXBsb2FkLm9uQ29tcGxldGlvbi5oZWFkZXIgPSByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQ/LmhlYWRlcjtcclxuICAgICAgICB0aGlzLmJ1bGtVcGxvYWQub25Db21wbGV0aW9uLnN1YkhlYWRpbmcgPVxyXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkPy5zdWJIZWFkaW5nO1xyXG4gICAgICAgIHRoaXMuYnVsa1VwbG9hZC5vbkNvbXBsZXRpb24ucmVwb3J0cyA9XHJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQ/LnJlcG9ydHM7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGlzRW1wdHkgPSB0aGlzLmNoZWNrRW1wdHlGaWxlKGRhdGEpO1xyXG4gICAgLyogQ2hlY2tpbmcgaWYgdGhlIGZpbGUgaXMgZW1wdHksIGlmIGl0IGlzIGVtcHR5IGl0IHdpbGwgcmV0dXJuIGFuIGVycm9yIG1lc3NhZ2UuIElmIGl0IGlzIG5vdFxyXG4gICAgZW1wdHkgaXQgd2lsbCBjaGVjayBpZiB0aGUgZmlsZSBpcyB0aGUgY29ycmVjdCBmaWxlLCBpZiBpdCBpcyBub3QgdGhlIGNvcnJlY3QgZmlsZSBpdCB3aWxsXHJcbiAgICByZXR1cm4gYW4gZXJyb3IgbWVzc2FnZS4gSWYgaXQgaXMgdGhlIGNvcnJlY3QgZmlsZSBpdCB3aWxsIGNhbGwgdGhlIGZpbGVVcGxvYWQoKSBmdW5jdGlvbi4gKi9cclxuICAgIGlmIChpc0VtcHR5KSB7XHJcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID1cclxuICAgICAgICAnWW91IGhhdmUgdXBsb2FkZWQgYSBibGFuayB0ZW1wbGF0ZS4gUGxlYXNlIGFkZCBkZXRhaWxzIGZvciBhbGwgbWFuZGF0b3J5IGZpZWxkcy4gUkVUUlknO1xyXG4gICAgICB0aGlzLmlzRmlsZUVtcHR5ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzV3JvbmdGb3JtYXQgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgdGhpcy5idWxrVXBsb2FkPy5mcmVxdWVuY3k/LmhlYWRlclswXSAhPT0gJ1Jlc3BvbnNpYmlsaXR5IE5hbWUqJyAmJlxyXG4gICAgICB0aGlzLmJ1bGtVcGxvYWQ/Lm9uZ29pbmc/LmhlYWRlclswXSAhPT0gJ1Jlc3BvbnNpYmlsaXR5IE5hbWUqJyAmJlxyXG4gICAgICB0aGlzLmJ1bGtVcGxvYWQ/Lm9uQ29tcGxldGlvbj8uaGVhZGVyWzBdICE9PSAnUmVzcG9uc2liaWxpdHkgTmFtZSonXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPVxyXG4gICAgICAgICdUaGUgaW5jb3JyZWN0IGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQuIFBsZWFzZSB1cGxvYWQgdGhlIHRlbXBsYXRlIHdoaWNoIHlvdSBkb3dubG9hZGVkIGZyb20gaGVyZS4nICtcclxuICAgICAgICAnIFJFVFJZJztcclxuICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzV3JvbmdGb3JtYXQgPSB0cnVlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlzRmlsZUVtcHR5ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc1dyb25nRm9ybWF0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZmlsZVVwbG9hZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXNGaWxlRW1wdHkgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93RXhjZWwgPSB0cnVlO1xyXG4gICAgdGhpcy5maWxlVmFsdWUgPSAnJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIHRoZSBidWxrVXBsb2FkIG9iamVjdCBoYXMgYSBmcmVxdWVuY3kgb2JqZWN0IHdpdGggYSByZXBvcnRzIGFycmF5LCBzZXQgdGhlXHJcbiAgICogcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkIHRvIHRoZSBmcmVxdWVuY3kgb2JqZWN0IGFuZCBzZXQgdGhlIHRhYlR5cGUgdG8gZnJlcXVlbmN5LiBJZiBub3QsIGNoZWNrXHJcbiAgICogaWYgdGhlIGJ1bGtVcGxvYWQgb2JqZWN0IGhhcyBhbiBvbmdvaW5nIG9iamVjdCB3aXRoIGEgcmVwb3J0cyBhcnJheSwgc2V0IHRoZVxyXG4gICAqIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCB0byB0aGUgb25nb2luZyBvYmplY3QgYW5kIHNldCB0aGUgdGFiVHlwZSB0byBvbmdvaW5nLiBJZiBub3QsIGNoZWNrIGlmXHJcbiAgICogdGhlIGJ1bGtVcGxvYWQgb2JqZWN0IGhhcyBhbiBvbkNvbXBsZXRpb24gb2JqZWN0IHdpdGggYSByZXBvcnRzIGFycmF5LCBzZXQgdGhlXHJcbiAgICogcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkIHRvIHRoZSBvbkNvbXBsZXRpb24gb2JqZWN0IGFuZCBzZXQgdGhlIHRhYlR5cGUgdG8gb25Db21wbGV0aW9uLiBJZiBub3QsXHJcbiAgICogcmV0dXJuIHRydWUuXHJcbiAgICogPC9jb2RlPlxyXG4gICAqIEBwYXJhbSB7YW55fSBkYXRhIC0gYW55ID0ge1xyXG4gICAqIEByZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZS5cclxuICAgKi9cclxuICBjaGVja0VtcHR5RmlsZShkYXRhPzogYW55KSB7XHJcbiAgICBsZXQgaXNFbXB0eSA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMuYnVsa1VwbG9hZD8uZnJlcXVlbmN5Py5yZXBvcnRzPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQgPSB0aGlzLmJ1bGtVcGxvYWQ/LmZyZXF1ZW5jeTtcclxuICAgICAgdGhpcy50YWJUeXBlID0gJ2ZyZXF1ZW5jeSc7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuYnVsa1VwbG9hZD8ub25nb2luZz8ucmVwb3J0cz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkID0gdGhpcy5idWxrVXBsb2FkPy5vbmdvaW5nO1xyXG4gICAgICB0aGlzLnRhYlR5cGUgPSAnb25nb2luZyc7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuYnVsa1VwbG9hZD8ub25Db21wbGV0aW9uPy5yZXBvcnRzPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQgPSB0aGlzLmJ1bGtVcGxvYWQ/Lm9uQ29tcGxldGlvbjtcclxuICAgICAgdGhpcy50YWJUeXBlID0gJ29uQ29tcGxldGlvbic7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpc0VtcHR5ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBpc0VtcHR5O1xyXG4gIH1cclxuXHJcbiAgY29tcGFyZVdpdGhDdXJyZW50RGF0ZShkYXk6IGFueSwgbW9udGg6IGFueSkge1xyXG4gICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgY29uc3QgbW9udGhOYW1lcyA9IFtcclxuICAgICAgeyB2YWx1ZTogMSwgbW9udGg6ICdKYW4nIH0sXHJcbiAgICAgIHsgdmFsdWU6IDIsIG1vbnRoOiAnRmViJyB9LFxyXG4gICAgICB7IHZhbHVlOiAzLCBtb250aDogJ01hcicgfSxcclxuICAgICAgeyB2YWx1ZTogNCwgbW9udGg6ICdBcHInIH0sXHJcbiAgICAgIHsgdmFsdWU6IDUsIG1vbnRoOiAnTWF5JyB9LFxyXG4gICAgICB7IHZhbHVlOiA2LCBtb250aDogJ0p1bicgfSxcclxuICAgICAgeyB2YWx1ZTogNywgbW9udGg6ICdKdWwnIH0sXHJcbiAgICAgIHsgdmFsdWU6IDgsIG1vbnRoOiAnQXVnJyB9LFxyXG4gICAgICB7IHZhbHVlOiA5LCBtb250aDogJ1NlcCcgfSxcclxuICAgICAgeyB2YWx1ZTogMTAsIG1vbnRoOiAnT2N0JyB9LFxyXG4gICAgICB7IHZhbHVlOiAxMSwgbW9udGg6ICdOb3YnIH0sXHJcbiAgICAgIHsgdmFsdWU6IDEyLCBtb250aDogJ0RlYycgfSxcclxuICAgIF07XHJcblxyXG4gICAgaWYgKCEoZGF5IHx8IG1vbnRoKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSBpZiAoIShkYXkgJiYgbW9udGgpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IG1vbnRoQW5kWWVhciA9IG1vbnRoLnNwbGl0KFwiJ1wiKTtcclxuXHJcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG1vbWVudChcclxuICAgICAgICBkYXkgKyAnLScgKyBtb250aEFuZFllYXJbMF0gKyAnLScgKyAyMCArIG1vbnRoQW5kWWVhclsxXSArICcgMDA6MDA6MDAnLFxyXG4gICAgICAgICdERC1NTU1NLVlZWVkgSEg6bW06c3MnXHJcbiAgICAgICkuZm9ybWF0KCdZWVlZLU1NLUREIEhIOm1tOnNzJyk7XHJcbiAgICAgIGlmIChzdGFydERhdGUgPT0gJ0ludmFsaWQgZGF0ZScpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge30sIDUpO1xyXG4gICAgICBjb25zdCBkYXRlX3ZhbHVlID0gbmV3IERhdGUoKTtcclxuXHJcbiAgICAgIGRhdGVfdmFsdWUuc2V0TW9udGgoXHJcbiAgICAgICAgdHlwZW9mIG1vbnRoICE9PSAnbnVtYmVyJ1xyXG4gICAgICAgICAgPyBtb250aE5hbWVzLmZpbHRlcigoeCkgPT4geC5tb250aCA9PT0gbW9udGg/LnN1YnN0cmluZygwLCAzKSlbMF1cclxuICAgICAgICAgICAgICA/LnZhbHVlIC0gMVxyXG4gICAgICAgICAgOiBtb250aFxyXG4gICAgICApO1xyXG4gICAgICBkYXRlX3ZhbHVlLnNldEZ1bGxZZWFyKE51bWJlcigyMCArIG1vbnRoLnNwbGl0KFwiJ1wiKVsxXSkpO1xyXG4gICAgICBkYXRlX3ZhbHVlLnNldERhdGUoTnVtYmVyKGRheSkpO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgY3VycmVudERhdGU/LnRvSlNPTigpPy5zcGxpdCgnVCcpWzBdICE9XHJcbiAgICAgICAgICBkYXRlX3ZhbHVlPy50b0pTT04oKT8uc3BsaXQoJ1QnKVswXSAmJlxyXG4gICAgICAgIGN1cnJlbnREYXRlID4gZGF0ZV92YWx1ZVxyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgaXNQYXN0RGF0ZShkYXk6IGFueSwgbW9udGg6IGFueSkge1xyXG4gICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICAgIGNvbnN0IG1vbnRoTmFtZXMgPSBbXHJcbiAgICAgIHsgdmFsdWU6IDEsIG1vbnRoOiAnSmFuJyB9LFxyXG4gICAgICB7IHZhbHVlOiAyLCBtb250aDogJ0ZlYicgfSxcclxuICAgICAgeyB2YWx1ZTogMywgbW9udGg6ICdNYXInIH0sXHJcbiAgICAgIHsgdmFsdWU6IDQsIG1vbnRoOiAnQXByJyB9LFxyXG4gICAgICB7IHZhbHVlOiA1LCBtb250aDogJ01heScgfSxcclxuICAgICAgeyB2YWx1ZTogNiwgbW9udGg6ICdKdW4nIH0sXHJcbiAgICAgIHsgdmFsdWU6IDcsIG1vbnRoOiAnSnVsJyB9LFxyXG4gICAgICB7IHZhbHVlOiA4LCBtb250aDogJ0F1ZycgfSxcclxuICAgICAgeyB2YWx1ZTogOSwgbW9udGg6ICdTZXAnIH0sXHJcbiAgICAgIHsgdmFsdWU6IDEwLCBtb250aDogJ09jdCcgfSxcclxuICAgICAgeyB2YWx1ZTogMTEsIG1vbnRoOiAnTm92JyB9LFxyXG4gICAgICB7IHZhbHVlOiAxMiwgbW9udGg6ICdEZWMnIH0sXHJcbiAgICBdO1xyXG5cclxuICAgIGlmICghKGRheSB8fCBtb250aCkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBlbHNlIGlmICghKGRheSAmJiBtb250aCkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gY29uc3QgcmVwb3J0RGF0ZSA9IG5ldyBEYXRlKGRheSArIG1vbnRoLnNwbGl0KFwiJ1wiKSk7XHJcbiAgICAgIGNvbnN0IGRhdGVfdmFsdWUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICBkYXRlX3ZhbHVlLnNldE1vbnRoKFxyXG4gICAgICAgIHR5cGVvZiBtb250aCAhPT0gJ251bWJlcidcclxuICAgICAgICAgID8gbW9udGhOYW1lcy5maWx0ZXIoKHgpID0+IHgubW9udGggPT09IG1vbnRoPy5zdWJzdHJpbmcoMCwgMykpWzBdXHJcbiAgICAgICAgICAgICAgPy52YWx1ZSAtIDFcclxuICAgICAgICAgIDogbW9udGhcclxuICAgICAgKTtcclxuICAgICAgZGF0ZV92YWx1ZS5zZXRGdWxsWWVhcihOdW1iZXIoMjAgKyBtb250aC5zcGxpdChcIidcIilbMV0pKTtcclxuICAgICAgZGF0ZV92YWx1ZS5zZXREYXRlKE51bWJlcihkYXkpKTtcclxuICAgICAgaWYgKGN1cnJlbnREYXRlID4gZGF0ZV92YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZG93bmxvYWRUZW1wbGF0ZSgpIHtcclxuICAgIHRoaXMuZG93bmxvYWRTdGF0dXMgPSAnRE9XTkxPQURJTkcnO1xyXG4gICAgdGhpcy5kb3dubG9hZFBlcmNlbnQgPSAwO1xyXG4gICAgY29uc3QgZG93bmxvYWREYXRlID0gbmV3IERhdGUoKS50b0RhdGVTdHJpbmcoKS5zcGxpdCgnICcpO1xyXG4gICAgY29uc3QgZmlsZU5hbWUgPSBgRW50cnVzdCBSZXNwb25zaWJpbGl0aWVzLSR7ZG93bmxvYWREYXRlWzJdfS0ke2Rvd25sb2FkRGF0ZVsxXX0tJHtkb3dubG9hZERhdGVbM119Lnhsc3hgO1xyXG5cclxuICAgIHRoaXMucmlza1NlcnZpY2UuZG93bmxvYWRSZXNwb25zaWJpbGl0eVRlbXBsYXRlKCkuc3Vic2NyaWJlKFxyXG4gICAgICAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEubG9hZGVkKSB7XHJcbiAgICAgICAgICB0aGlzLmRvd25sb2FkUGVyY2VudCA9IDEwMCAqIChkYXRhLmxvYWRlZCAvIGRhdGEudG90YWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGF0YS5ib2R5KSB7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9IHRoaXMucmlza1NlcnZpY2UuZG93bkxvYWRGaWxlKFxyXG4gICAgICAgICAgICAgIGRhdGEuYm9keSxcclxuICAgICAgICAgICAgICAnYXBwbGljYXRpb24veGxzeCcsXHJcbiAgICAgICAgICAgICAgZmlsZU5hbWVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0sIDE1MDApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9ICdET1dOTE9BREVEJztcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHN1Ym1pdFJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCgpIHtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgIGxldCBwYXlsb2FkOiBhbnkgPSBbXTtcclxuICAgIGxldCByZXNwb25zaWJpbGl0eU11bHRpVGFiQnVsa1VwbG9hZDogYW55ID0gW107XHJcbiAgICBjb25zdCBmcmVxdWVuY3lUeXBlQXJyYXkgPSBbJzEnLCAnMicsICczJywgJzQnLCAnNycsICcwJywgJzYnLCAnOSddO1xyXG4gICAgY29uc3QgZGVmYXVsdFdpbmRvdyA9IFswLCAyLCA3LCAzMCwgNywgMTUsIDMsIDMwXTtcclxuICAgIGNvbnN0IGRlZmF1bHRGYWlsZWREYXkgPSBbMSwgMiwgNSwgNSwgNSwgNSwgNSwgNV07XHJcbiAgICBsZXQgdmFsaWRSZXNwb25zaWJpbGl0aWVzID0gMDtcclxuICAgIGxldCByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQgPSB0aGlzLmJ1bGtVcGxvYWQ/LmZyZXF1ZW5jeT8ucmVwb3J0cz8uY29uY2F0KFxyXG4gICAgICB0aGlzLmJ1bGtVcGxvYWQ/Lm9uZ29pbmc/LnJlcG9ydHMsXHJcbiAgICAgIHRoaXMuYnVsa1VwbG9hZD8ub25Db21wbGV0aW9uPy5yZXBvcnRzXHJcbiAgICApO1xyXG4gICAgcmVzcG9uc2liaWxpdHlNdWx0aVRhYkJ1bGtVcGxvYWQgPVxyXG4gICAgICB0aGlzLmJ1bGtVcGxvYWQ/LmZyZXF1ZW5jeT8ucmVwb3J0cz8uY29uY2F0KFxyXG4gICAgICAgIHRoaXMuYnVsa1VwbG9hZD8ub25nb2luZz8ucmVwb3J0cyxcclxuICAgICAgICB0aGlzLmJ1bGtVcGxvYWQ/Lm9uQ29tcGxldGlvbj8ucmVwb3J0c1xyXG4gICAgICApO1xyXG4gICAgaWYgKHRoaXMuZmZCdWxrVXBsb2FkT3B0aW1pemF0aW9uKSB7XHJcbiAgICAgIHJlc3BvbnNpYmlsaXR5TXVsdGlUYWJCdWxrVXBsb2FkPy5mb3JFYWNoKChyZXBvcnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXBvcnQ/LmlzVmFsaWQpIHtcclxuICAgICAgICAgIHZhbGlkUmVzcG9uc2liaWxpdGllcyArPSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgb3JpZ2luYWxGaWxlbmFtZTogdGhpcy5maWxlUmVzcG9uc2VbMF0/Lm9yaWdpbmFsX2ZpbGVuYW1lLFxyXG4gICAgICAgIGZpbGVOYW1lOiB0aGlzLmZpbGVSZXNwb25zZVswXT8uZmlsZW5hbWUsXHJcbiAgICAgICAgZmlsZVBhdGg6IHRoaXMuZmlsZVJlc3BvbnNlWzBdPy5maWxlcGF0aCxcclxuICAgICAgICB0b3RhbFJlc3BvbnNpYmlsaXR5Q291bnQ6IHJlc3BvbnNpYmlsaXR5TXVsdGlUYWJCdWxrVXBsb2FkPy5sZW5ndGgsXHJcbiAgICAgICAgdmFsaWRSZXNwb25zaWJpbGl0eUNvdW50OiB2YWxpZFJlc3BvbnNpYmlsaXRpZXMsXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuZm9yRWFjaCgocmVwb3J0OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVwb3J0LmlzVmFsaWQpIHtcclxuICAgICAgICAgIGlmIChyZXBvcnQ/LnJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnkgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmVwb3J0LnJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnkgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IHJjRGV0YWlsczogYW55ID0gdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgICAgICAgIHJlcG9ydD8ucmVzcG9uc2liaWxpdHlDZW50ZXIsXHJcbiAgICAgICAgICAgICdyY19pZCdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zdCByZXZpZXdlckRldGFpbHM6IGFueSA9IHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICAgICAgICByZXBvcnQ/LnJldmlld2VyLFxyXG4gICAgICAgICAgICAncmV2aWV3ZXInXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgY29uc3QgYXNzaWdub3JEZXRhaWxzOiBhbnkgPSByZXBvcnQ/LmFzc2lnbm9yXHJcbiAgICAgICAgICAgID8gdGhpcy5yZXR1cm5JZHMocmVwb3J0Py5hc3NpZ25vciwgJ2Fzc2lnbm9yJylcclxuICAgICAgICAgICAgOiAnJztcclxuICAgICAgICAgIGNvbnN0IGNjRGV0YWlsczogYW55ID0gdGhpcy5yZXR1cm5JZHMocmVwb3J0Py5vdmVyc2VlciwgJ2NjJyk7XHJcbiAgICAgICAgICBjb25zdCBjY0ZhaWx1cmVEZXRhaWxzOiBhbnkgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgICAgICAgcmVwb3J0Lm5vdGlmeU9uRmFpbHVyZSxcclxuICAgICAgICAgICAgJ2NjRmFpbHVyZSdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG1vbWVudCgpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xyXG4gICAgICAgICAgbGV0IG9uZ29pbmdSZW1pbmRlclR5cGU6IGFueSA9IHtcclxuICAgICAgICAgICAgV2Vla2x5OiAxLFxyXG4gICAgICAgICAgICBNb250aGx5OiAyLFxyXG4gICAgICAgICAgICBRdWFydGVybHk6IDMsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgY29uc3Qgb25nb2luZ1ZhbHVlcyA9IHtcclxuICAgICAgICAgICAgc2V0UmVtaW5kZXI6IHJlcG9ydD8uc2V0UmVtaW5kZXIsXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVJlbWluZGVyOiBvbmdvaW5nUmVtaW5kZXJUeXBlW3JlcG9ydD8uZnJlcXVlbmN5UmVtaW5kZXJdLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIGNvbnN0IGZyZXF1ZW5jeVZhbHVlID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLnNob3J0SGFuZF9mcmVxQ2FsKFxyXG4gICAgICAgICAgICByZXBvcnQ/LmZyZXF1ZW5jeSxcclxuICAgICAgICAgICAgcmVwb3J0Py5kYXksXHJcbiAgICAgICAgICAgIHJlcG9ydD8ubW9udGgsXHJcbiAgICAgICAgICAgICcnLFxyXG4gICAgICAgICAgICByZXBvcnQ/LmR1ZURhdGUsXHJcbiAgICAgICAgICAgIG9uZ29pbmdWYWx1ZXNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zdCBkYXRlQW5kTW9udGggPSByZXBvcnQ/Lm1vbnRoPy5zcGxpdChcIidcIik7XHJcbiAgICAgICAgICBjb25zdCBzdGFydERhdGUgPSBkYXRlQW5kTW9udGhcclxuICAgICAgICAgICAgPyBtb21lbnQoXHJcbiAgICAgICAgICAgICAgICByZXBvcnQ/LmRheSArXHJcbiAgICAgICAgICAgICAgICAgICctJyArXHJcbiAgICAgICAgICAgICAgICAgIGRhdGVBbmRNb250aFswXSArXHJcbiAgICAgICAgICAgICAgICAgICctJyArXHJcbiAgICAgICAgICAgICAgICAgIDIwICtcclxuICAgICAgICAgICAgICAgICAgZGF0ZUFuZE1vbnRoWzFdICtcclxuICAgICAgICAgICAgICAgICAgJyAwMDowMDowMCcsXHJcbiAgICAgICAgICAgICAgICAnREQtTU1NTS1ZWVlZIEhIOm1tOnNzJ1xyXG4gICAgICAgICAgICAgICkuZm9ybWF0KCdZWVlZLU1NLUREIEhIOm1tOnNzJylcclxuICAgICAgICAgICAgOiAnJztcclxuXHJcbiAgICAgICAgICBsZXQgY29tcGxldGVEYXlzO1xyXG4gICAgICAgICAgbGV0IG5vdENvbXBsZXRlRGF5cztcclxuICAgICAgICAgIGNvbnN0IGZyZXF1ZW5jeVR5cGUgPSBmcmVxdWVuY3lWYWx1ZT8uc3BsaXQoJ34nKVswXTtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgcmVwb3J0LnJlc3BvbnNpYmlsaXR5V2luZG93ICYmXHJcbiAgICAgICAgICAgIHJlcG9ydC5yZXNwb25zaWJpbGl0eVdpbmRvdyAhPT0gJydcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBjb21wbGV0ZURheXMgPSByZXBvcnQ/LnJlc3BvbnNpYmlsaXR5V2luZG93O1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3lUeXBlQXJyYXk/LmluY2x1ZGVzKGZyZXF1ZW5jeVR5cGUpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4T2ZBcnJheSA9IGZyZXF1ZW5jeVR5cGVBcnJheT8uaW5kZXhPZihmcmVxdWVuY3lUeXBlKTtcclxuICAgICAgICAgICAgY29tcGxldGVEYXlzID0gZGVmYXVsdFdpbmRvd1tpbmRleE9mQXJyYXldO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHJlcG9ydD8uZmFpbGVkQWZ0ZXIgJiYgcmVwb3J0Py5mYWlsZWRBZnRlciAhPT0gJycpIHtcclxuICAgICAgICAgICAgbm90Q29tcGxldGVEYXlzID0gcmVwb3J0Py5mYWlsZWRBZnRlcjtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5VHlwZUFycmF5LmluY2x1ZGVzKGZyZXF1ZW5jeVR5cGUpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4T2ZBcnJheSA9IGZyZXF1ZW5jeVR5cGVBcnJheT8uaW5kZXhPZihmcmVxdWVuY3lUeXBlKTtcclxuICAgICAgICAgICAgbm90Q29tcGxldGVEYXlzID0gZGVmYXVsdEZhaWxlZERheVtpbmRleE9mQXJyYXldO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3Qgb2JqID0ge1xyXG4gICAgICAgICAgICB1c2VySWQ6IHRoaXMudGVtcGxhdGVJbmZvPy5tZW1iZXJJZCxcclxuICAgICAgICAgICAgb3JnYW5pc2F0aW9uX2lkOiB0aGlzLm9yZ2FuaXphdGlvbklkLFxyXG4gICAgICAgICAgICBtZW1iZXJfaWQ6IGFzc2lnbm9yRGV0YWlsc1xyXG4gICAgICAgICAgICAgID8gYXNzaWdub3JEZXRhaWxzPy5tZW1iZXJJZFxyXG4gICAgICAgICAgICAgIDogdGhpcy5tZW1iZXJJZCxcclxuICAgICAgICAgICAgbWVtYmVyX25hbWU6IGFzc2lnbm9yRGV0YWlsc1xyXG4gICAgICAgICAgICAgID8gcmVwb3J0Py5hc3NpZ25vclxyXG4gICAgICAgICAgICAgICAgPyByZXBvcnQ/LmFzc2lnbm9yLnNwbGl0KCcgKCcpWzBdXHJcbiAgICAgICAgICAgICAgICA6ICcnXHJcbiAgICAgICAgICAgICAgOiB0aGlzLmRlZmF1bHRPd25lclxyXG4gICAgICAgICAgICAgID8gdGhpcy5kZWZhdWx0T3duZXI/LnNwbGl0KCcgKCcpWzBdXHJcbiAgICAgICAgICAgICAgOiAnJyxcclxuICAgICAgICAgICAgbWVtYmVyX2VtYWlsOiBhc3NpZ25vckRldGFpbHNcclxuICAgICAgICAgICAgICA/IHJlcG9ydD8uYXNzaWdub3JcclxuICAgICAgICAgICAgICAgID8gcmVwb3J0Py5hc3NpZ25vcj8uc3BsaXQoJyAoJylbMV0/LnJlcGxhY2UoJyknLCAnJylcclxuICAgICAgICAgICAgICAgIDogJydcclxuICAgICAgICAgICAgICA6IHRoaXMuZGVmYXVsdE93bmVyXHJcbiAgICAgICAgICAgICAgPyB0aGlzLmRlZmF1bHRPd25lcj8uc3BsaXQoJyAoJylbMV0ucmVwbGFjZSgnKScsICcnKVxyXG4gICAgICAgICAgICAgIDogJycsXHJcbiAgICAgICAgICAgIGNyZWF0ZWRfYnk6IGFzc2lnbm9yRGV0YWlscyA/IHRoaXMubWVtYmVySWQgOiAwLFxyXG4gICAgICAgICAgICByZXBvcnRfbmFtZTogcmVwb3J0Py5yZXNwb25zaWJpbGl0eU5hbWUgPz8gJycsXHJcbiAgICAgICAgICAgIGVudHJ1c3RlZF90bzogcmVwb3J0Py5hc3NpZ25lZT8uc3BsaXQoJyAoJylbMF0gPz8gJycsXHJcbiAgICAgICAgICAgIGVudHJ1c3RlZF90b19pZDogdGhpcy5pc0dyb3VwU2VsZWN0ZWQocmVwb3J0Py5hc3NpZ25lZSlcclxuICAgICAgICAgICAgICA/IHRoaXMuZ2V0RW1wbG95ZWVJZEZyb21Hcm91cChyZXBvcnQ/LmFzc2lnbmVlKVxyXG4gICAgICAgICAgICAgIDogdGhpcy5yZXR1cm5JZHMocmVwb3J0Py5hc3NpZ25lZSwgJ2VudHJ1c3RlZF90bycpPy50b1N0cmluZygpID8/XHJcbiAgICAgICAgICAgICAgICAnJyxcclxuICAgICAgICAgICAgZW1haWxfYWRkcmVzczogIXRoaXMuaXNHcm91cFNlbGVjdGVkKHJlcG9ydD8uYXNzaWduZWUpXHJcbiAgICAgICAgICAgICAgPyByZXBvcnQ/LmFzc2lnbmVlPy5zcGxpdCgnICgnKVsxXT8ucmVwbGFjZSgnKScsICcnKSA/PyAnJ1xyXG4gICAgICAgICAgICAgIDogJycsXHJcbiAgICAgICAgICAgIGlzR3JvdXBBc3NpZ25UbzogcmVwb3J0Py5hc3NpZ25lZVR5cGU/LmluY2x1ZGVzKCdBbnknKSA/IDEgOiAwLFxyXG4gICAgICAgICAgICBjYXRlZ29yeV9uYW1lX3dpdGhfdHJlZTogJycsXHJcbiAgICAgICAgICAgIGNhdGVnb3J5X2lkOlxyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0UHJvZ3JhbUlkKFxyXG4gICAgICAgICAgICAgICAgcmVwb3J0Py5wcm9ncmFtLFxyXG4gICAgICAgICAgICAgICAgcmVwb3J0Py5wcm9ncmFtQ2F0ZWdvcnlcclxuICAgICAgICAgICAgICApLmNhdGVnb3J5SWQ/LnRvU3RyaW5nKCkgPz8gJycsXHJcbiAgICAgICAgICAgIHByb2dyYW1fY2F0X2lkczogdGhpcy5nZXRQcm9ncmFtSWQoXHJcbiAgICAgICAgICAgICAgcmVwb3J0Py5wcm9ncmFtLFxyXG4gICAgICAgICAgICAgIHJlcG9ydD8ucHJvZ3JhbUNhdGVnb3J5XHJcbiAgICAgICAgICAgICk/LnByb2dyYW1JZFxyXG4gICAgICAgICAgICAgID8gW1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmdldFByb2dyYW1JZChyZXBvcnQ/LnByb2dyYW0sIHJlcG9ydD8ucHJvZ3JhbUNhdGVnb3J5KVxyXG4gICAgICAgICAgICAgICAgICAgID8ucHJvZ3JhbUlkLFxyXG4gICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgIDogW10sXHJcbiAgICAgICAgICAgIHJjX25hbWU6IHJjRGV0YWlscyA/IHJjRGV0YWlscz8ubmFtZSA6ICcnLFxyXG4gICAgICAgICAgICByY19pZDogcmNEZXRhaWxzID8gcmNEZXRhaWxzPy5yY0lkIDogMCxcclxuICAgICAgICAgICAgZW50aXR5X3RyZWU6XHJcbiAgICAgICAgICAgICAgcmNEZXRhaWxzICYmIHJjRGV0YWlscz8ucmNJZFxyXG4gICAgICAgICAgICAgICAgPyBbXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcGFyZW50X3JjX2lkczogcmNEZXRhaWxzID8gcmNEZXRhaWxzPy5wYXJlbnRJZHMgOiBbXSxcclxuICAgICAgICAgICAgICAgICAgICAgIHJjX2lkOiByY0RldGFpbHMgPyByY0RldGFpbHM/LnJjSWQgOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICAgIDogW10sXHJcbiAgICAgICAgICAgIHVzZXJHcm91cElkczoge1xyXG4gICAgICAgICAgICAgIGFzc2lnbmVlQWxsR3JvdXBJZHM6XHJcbiAgICAgICAgICAgICAgICAhcmVwb3J0Py5hc3NpZ25lZVR5cGU/LmluY2x1ZGVzKCdBbnknKSAmJlxyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0dyb3VwU2VsZWN0ZWQocmVwb3J0Py5hc3NpZ25lZSlcclxuICAgICAgICAgICAgICAgICAgPyBbdGhpcy5yZXR1cm5JZHMocmVwb3J0Py5hc3NpZ25lZSwgJ2VudHJ1c3RlZF90bycpXVxyXG4gICAgICAgICAgICAgICAgICA6IFtdLFxyXG4gICAgICAgICAgICAgIGFzc2lnbmVlQW55b25lR3JvdXBJZHM6XHJcbiAgICAgICAgICAgICAgICByZXBvcnQ/LmFzc2lnbmVlVHlwZT8uaW5jbHVkZXMoJ0FueScpICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzR3JvdXBTZWxlY3RlZChyZXBvcnQ/LmFzc2lnbmVlKVxyXG4gICAgICAgICAgICAgICAgICA/IFt0aGlzLnJldHVybklkcyhyZXBvcnQ/LmFzc2lnbmVlLCAnZW50cnVzdGVkX3RvJyldXHJcbiAgICAgICAgICAgICAgICAgIDogW10sXHJcbiAgICAgICAgICAgICAgY2NFbWFpbEdyb3VwSWRzOiBbXSxcclxuICAgICAgICAgICAgICBmYWlsdXJlQ0NFbWFpbEdyb3VwSWRzOiBbXSxcclxuICAgICAgICAgICAgICByZXZpZXdlckdyb3VwSWRzOiBbXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZnJlcXVlbmN5X2hhbmRsZXI6IGZyZXF1ZW5jeVZhbHVlLFxyXG4gICAgICAgICAgICBjb21wbGlhbmNlX3R5cGU6IGZyZXF1ZW5jeVZhbHVlPy5zcGxpdCgnficpWzBdLFxyXG4gICAgICAgICAgICBmcmVxdWVuY3lfZGVzY3JpcHRpb246IHJlcG9ydD8uZnJlcXVlbmN5LFxyXG4gICAgICAgICAgICBzdGFydF9kYXRlOiByZXBvcnQ/LmRheSA/IHN0YXJ0RGF0ZSA6IGN1cnJlbnREYXRlICsgJyAwMDowMDowMCcsXHJcbiAgICAgICAgICAgIHJpc2tfY2xhc3M6IHJlcG9ydD8ucmVwb3J0Q2xhc3MgPz8gJycsXHJcbiAgICAgICAgICAgIHJpc2tfY2xhc3NJZDogcmVwb3J0Py5yZXBvcnRDbGFzc1xyXG4gICAgICAgICAgICAgID8gdGhpcy5yZXR1cm5JZHMocmVwb3J0Py5yZXBvcnRDbGFzcywgJ3Jpc2tfY2xhc3MnKVxyXG4gICAgICAgICAgICAgIDogdGhpcy5yaXNrQ2xhc3NFbmFibGVkXHJcbiAgICAgICAgICAgICAgPyAxXHJcbiAgICAgICAgICAgICAgOiAyLFxyXG4gICAgICAgICAgICBkb2NfdXRjOiAwLFxyXG4gICAgICAgICAgICBjb21tZW50OiByZXBvcnQ/Lm5vdGVzID8/ICcnLFxyXG4gICAgICAgICAgICBjY19tYWlsOiBjY0RldGFpbHMgPyBjY0RldGFpbHM/LmVtYWlsIDogJycsXHJcbiAgICAgICAgICAgIGNjX21haWxfaWQ6IGNjRGV0YWlscyA/IGNjRGV0YWlscz8uZW1wbG95ZWVJZCA6ICcnLFxyXG4gICAgICAgICAgICBjY19mYWlsZWRfbWFpbDogY2NGYWlsdXJlRGV0YWlscyA/IGNjRmFpbHVyZURldGFpbHM/LmVtYWlsIDogJycsXHJcbiAgICAgICAgICAgIGNjX2ZhaWx1cmVfaWQ6IGNjRmFpbHVyZURldGFpbHMgPyBjY0ZhaWx1cmVEZXRhaWxzPy5lbXBsb3llZUlkIDogMCxcclxuICAgICAgICAgICAgc2VuZF9yZW1pbmRlcjogJycsXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5V2luZG93OlxyXG4gICAgICAgICAgICAgIGZyZXF1ZW5jeVR5cGUgPT09ICcxJ1xyXG4gICAgICAgICAgICAgICAgPyAwXHJcbiAgICAgICAgICAgICAgICA6IGNvbXBsZXRlRGF5cyAmJiBjb21wbGV0ZURheXMgIT0gJydcclxuICAgICAgICAgICAgICAgID8gY29tcGxldGVEYXlzXHJcbiAgICAgICAgICAgICAgICA6IDAsXHJcbiAgICAgICAgICAgIGZhaWxlZF9hZnRlcjpcclxuICAgICAgICAgICAgICBub3RDb21wbGV0ZURheXMgJiYgbm90Q29tcGxldGVEYXlzICE9ICcnID8gbm90Q29tcGxldGVEYXlzIDogMCxcclxuICAgICAgICAgICAgZXhjZWxfc2hlZXRfbmFtZTogJycsXHJcbiAgICAgICAgICAgIHJlcG9ydF91cGxvYWRfZmxhZzpcclxuICAgICAgICAgICAgICByZXBvcnQ/LmlzRm9ybWF0ID09PSAnWWVzJyAmJlxyXG4gICAgICAgICAgICAgIHJlcG9ydD8uZm9ybWF0Rm9yUmVzcG9uc2liaWxpdHk/Lmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgPyAxXHJcbiAgICAgICAgICAgICAgICA6IDAsXHJcbiAgICAgICAgICAgIHJlcG9ydF9pZDogMCxcclxuICAgICAgICAgICAgaXNfYXNzaWduZWRfZmxhZzogMCxcclxuICAgICAgICAgICAgcHJpdmF0ZV9saWJyYXJ5X2lkOiAwLFxyXG4gICAgICAgICAgICBrZXljb21wbGlhbmNlOiByZXBvcnQ/LmtleVJlc3BvbnNpYmlsaXR5ID09PSAnWWVzJyA/ICdZZXMnIDogJ05vJyxcclxuICAgICAgICAgICAga2V5X2NvbXBsaWFuY2U6IHJlcG9ydD8ua2V5UmVzcG9uc2liaWxpdHkgPT09ICdZZXMnID8gMSA6IDAsXHJcbiAgICAgICAgICAgIHJldmlld2VySWQ6IHJldmlld2VyRGV0YWlscyA/IHJldmlld2VyRGV0YWlscz8uZW1wbG95ZWVJZCA6IDAsXHJcbiAgICAgICAgICAgIHJldmlld2VyX2FycjpcclxuICAgICAgICAgICAgICByZXZpZXdlckRldGFpbHMgJiYgcmV2aWV3ZXJEZXRhaWxzPy5lbXBsb3llZUlkXHJcbiAgICAgICAgICAgICAgICA/IHtcclxuICAgICAgICAgICAgICAgICAgICBsZXZlbDE6IHtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldmlld2VyczogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtYmVyX2lkOiByZXZpZXdlckRldGFpbHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcmV2aWV3ZXJEZXRhaWxzPy5lbXBsb3llZUlkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2aWV3ZXJfYWNjZXB0OiAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdTRVFVRU5USUFMJyxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA6IHt9LFxyXG4gICAgICAgICAgICByZXZpZXdlcldpbmRvdzpcclxuICAgICAgICAgICAgICByZXBvcnQ/LnJldmlld1RvQmVDb21wbGV0ZWRXaXRoaW4gJiZcclxuICAgICAgICAgICAgICByZXBvcnQ/LnJldmlld1RvQmVDb21wbGV0ZWRXaXRoaW4gIT09ICcnXHJcbiAgICAgICAgICAgICAgICA/IHJlcG9ydD8ucmV2aWV3VG9CZUNvbXBsZXRlZFdpdGhpblxyXG4gICAgICAgICAgICAgICAgOiAyLFxyXG4gICAgICAgICAgICByZXZpZXdlckZhaWx1cmU6XHJcbiAgICAgICAgICAgICAgcmVwb3J0Py5yZXZpZXdXaWxsQmVGYWlsZWRBZnRlciAmJlxyXG4gICAgICAgICAgICAgIHJlcG9ydD8ucmV2aWV3V2lsbEJlRmFpbGVkQWZ0ZXIgIT09ICcnXHJcbiAgICAgICAgICAgICAgICA/IHJlcG9ydD8ucmV2aWV3V2lsbEJlRmFpbGVkQWZ0ZXJcclxuICAgICAgICAgICAgICAgIDogMixcclxuICAgICAgICAgICAgcmV2aWV3ZXJfZW1haWw6IHJldmlld2VyRGV0YWlscyA/IHJldmlld2VyRGV0YWlscz8uZW1haWwgOiAnJyxcclxuICAgICAgICAgICAgZm9ybWF0Rm9yUmVzcG9uc2liaWxpdHk6IHJlcG9ydD8uZm9ybWF0Rm9yUmVzcG9uc2liaWxpdHlcclxuICAgICAgICAgICAgICA/IHJlcG9ydC5mb3JtYXRGb3JSZXNwb25zaWJpbGl0eVxyXG4gICAgICAgICAgICAgIDogJycsXHJcbiAgICAgICAgICAgIGRvY3VtZW50YXJ5RXZpZGVuY2U6IHJlcG9ydD8uZXZpZGVuY2VOb3RlcyA/PyAnJyxcclxuICAgICAgICAgICAgaXNkb2N1bWVudGFyeUV2aWRlbmNlOlxyXG4gICAgICAgICAgICAgIHJlcG9ydC5kb2N1bWVudEV2aWRlbmNlUmVxdWlyZWQgPT09ICdZZXMnID8gMSA6IDAsXHJcbiAgICAgICAgICAgIG9iamVjdGl2ZTogcmVwb3J0Lm9iamVjdGl2ZSA/PyAnJyxcclxuICAgICAgICAgICAgZXhjZWxfc2hlZXRfaW5mbzogdGhpcy5maWxlUmVzcG9uc2UsXHJcbiAgICAgICAgICAgIHNob3dMaXN0OiBmYWxzZSxcclxuICAgICAgICAgICAgY3VzdG9tX3RhZ3M6ICdbXScsXHJcbiAgICAgICAgICAgIHF1ZXN0aW9ubmFpcmVfdHlwZTogJycsXHJcbiAgICAgICAgICAgIG9uX2NvbXBsZXRpb25fb2ZfdHlwZTpcclxuICAgICAgICAgICAgICByZXBvcnQ/LmZyZXF1ZW5jeSA9PT0gJ09uIENvbXBsZXRpb24gb2YnIHx8XHJcbiAgICAgICAgICAgICAgcmVwb3J0Py5mcmVxdWVuY3k/LnRvTG93ZXJDYXNlKCkgPT09ICdvbmdvaW5nJ1xyXG4gICAgICAgICAgICAgICAgPyAxXHJcbiAgICAgICAgICAgICAgICA6IDAsXHJcbiAgICAgICAgICAgIG9uX2NvbXBsZXRpb25fb2Y6IHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICAgICAgICAgIHJlcG9ydD8ucGFyZW50UmVzcG9uc2liaWxpdHksXHJcbiAgICAgICAgICAgICAgJ3BhcmVudFJlc3BvbnNpYmlsaXR5J1xyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgPyBbXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICAgICAgICAgICAgICAgIHJlcG9ydD8ucGFyZW50UmVzcG9uc2liaWxpdHksXHJcbiAgICAgICAgICAgICAgICAgICAgJ3BhcmVudFJlc3BvbnNpYmlsaXR5J1xyXG4gICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgIDogW10sXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgcGF5bG9hZC5wdXNoKG9iaik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlLmFkZEJ1bGtSZXNwb25zaWJpbGl0eShwYXlsb2FkKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaG93RXhjZWwgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNob3dTbWlsZXkgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlEYXRhID0gcmVzO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyKTtcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2hvd0V4Y2VsID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxyXG4gICAgICAgICAgJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycsXHJcbiAgICAgICAgICAnYWxlcnQnXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHJldHVybklkcyhpdGVtOiBhbnksIGtleTogc3RyaW5nKTogYW55IHtcclxuICAgIHN3aXRjaCAoa2V5KSB7XHJcbiAgICAgIGNhc2UgJ3JjX2lkJzpcclxuICAgICAgICBsZXQgcmNPYmogPSB7IG5hbWU6ICcnLCByY0lkOiAwLCBwYXJlbnRJZHM6IFtdIH07XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8ucmNMaXN0LmZvckVhY2goKHJjX2VsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJjX2VsZW1lbnQubmFtZSA9PSBpdGVtKSB7XHJcbiAgICAgICAgICAgIGxldCBuYW1lO1xyXG4gICAgICAgICAgICBpZiAocmNfZWxlbWVudC5uYW1lLmluY2x1ZGVzKCdbV0lUSElOXScpKSB7XHJcbiAgICAgICAgICAgICAgbmFtZSA9IHJjX2VsZW1lbnQubmFtZS5zcGxpdCgnIFtXSVRISU5dICcpWzBdO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIG5hbWUgPSByY19lbGVtZW50Lm5hbWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmNPYmogPSB7XHJcbiAgICAgICAgICAgICAgbmFtZSxcclxuICAgICAgICAgICAgICByY0lkOiByY19lbGVtZW50LnJjX2lkLFxyXG4gICAgICAgICAgICAgIHBhcmVudElkczogcmNfZWxlbWVudC5wYXJlbnRJZHMsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHJjT2JqO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdyZXZpZXdlcic6XHJcbiAgICAgICAgbGV0IHJldmlld2VyT2JqID0geyBuYW1lOiAnJywgZW1wbG95ZWVJZDogMCwgZW1haWw6ICcnIH07XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8/LnJldmlld2VyTGlzdC5mb3JFYWNoKChyZXZpZXdlckVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJldmlld2VyRWxlbWVudC5uYW1lQW5kRW1haWwgPT0gaXRlbSkge1xyXG4gICAgICAgICAgICByZXZpZXdlck9iaiA9IHtcclxuICAgICAgICAgICAgICBuYW1lOiByZXZpZXdlckVsZW1lbnQubmFtZSxcclxuICAgICAgICAgICAgICBlbXBsb3llZUlkOiByZXZpZXdlckVsZW1lbnQubXlfbWVtYmVyX2lkLFxyXG4gICAgICAgICAgICAgIGVtYWlsOiByZXZpZXdlckVsZW1lbnQuZW1haWwsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHJldmlld2VyT2JqO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYXNzaWdub3InOlxyXG4gICAgICAgIGxldCBhc3NpZ25vck9iaiA9IHsgbmFtZTogJycsIG1lbWJlcklkOiAwLCBlbWFpbDogJycgfTtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5hc3NpZ25vcnNMaXN0LmZvckVhY2goKGFzc2lnbm9yRWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoYXNzaWdub3JFbGVtZW50Lm5hbWVBbmRFbWFpbCA9PSBpdGVtKSB7XHJcbiAgICAgICAgICAgIGFzc2lnbm9yT2JqID0ge1xyXG4gICAgICAgICAgICAgIG5hbWU6IGFzc2lnbm9yRWxlbWVudC5uYW1lLFxyXG4gICAgICAgICAgICAgIGVtYWlsOiBhc3NpZ25vckVsZW1lbnQuZW1haWwsXHJcbiAgICAgICAgICAgICAgbWVtYmVySWQ6IGFzc2lnbm9yRWxlbWVudC5tZW1iZXJfaWQsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGFzc2lnbm9yT2JqO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2MnOlxyXG4gICAgICAgIGxldCBjY09iaiA9IHsgbmFtZTogJycsIGVtcGxveWVlSWQ6IDAsIGVtYWlsOiAnJyB9O1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvPy5yZXZpZXdlckxpc3QuZm9yRWFjaCgoY2NFbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChjY0VsZW1lbnQubmFtZUFuZEVtYWlsID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgY2NPYmogPSB7XHJcbiAgICAgICAgICAgICAgbmFtZTogY2NFbGVtZW50Lm5hbWUsXHJcbiAgICAgICAgICAgICAgZW1wbG95ZWVJZDogY2NFbGVtZW50LmVtcGxveWVlX2lkLFxyXG4gICAgICAgICAgICAgIGVtYWlsOiBjY0VsZW1lbnQuZW1haWwsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGNjT2JqO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjY0ZhaWx1cmUnOlxyXG4gICAgICAgIGxldCBjY2ZPYmogPSB7IG5hbWU6ICcnLCBlbXBsb3llZUlkOiAwLCBlbWFpbDogJycgfTtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mbz8ucmV2aWV3ZXJMaXN0LmZvckVhY2goKGNjZkVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNjZkVsZW1lbnQubmFtZUFuZEVtYWlsID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgY2NmT2JqID0ge1xyXG4gICAgICAgICAgICAgIG5hbWU6IGNjZkVsZW1lbnQubmFtZSxcclxuICAgICAgICAgICAgICBlbXBsb3llZUlkOiBjY2ZFbGVtZW50LmVtcGxveWVlX2lkLFxyXG4gICAgICAgICAgICAgIGVtYWlsOiBjY2ZFbGVtZW50LmVtYWlsLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBjY2ZPYmo7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlICdlbnRydXN0ZWRfdG8nOlxyXG4gICAgICAgIGxldCBlbXBJZCA9IDA7XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8uYXNzaWduZWVzTGlzdC5mb3JFYWNoKChlbkVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGVuRWxlbWVudC5uYW1lQW5kRW1haWwgPT0gaXRlbSkge1xyXG4gICAgICAgICAgICBlbXBJZCA9IGVuRWxlbWVudC5lbXBsb3llZV9pZDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gZW1wSWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlICdwYXJlbnRSZXNwb25zaWJpbGl0eSc6XHJcbiAgICAgICAgbGV0IGlkID0gMDtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5wYXJlbnRSZXNwb25zaWJpbGl0eS5mb3JFYWNoKFxyXG4gICAgICAgICAgKHJlc3BvbnNpYmlsaXR5OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlc3BvbnNpYmlsaXR5Py5uYW1lID09PSBpdGVtKSB7XHJcbiAgICAgICAgICAgICAgaWQgPSByZXNwb25zaWJpbGl0eS5pZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIGlkO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAncmlza19jbGFzcyc6XHJcbiAgICAgICAgaWYgKGl0ZW0gPT0gJ0xvdycpIHtcclxuICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PSAnTG93LU1lZGl1bScpIHtcclxuICAgICAgICAgIHJldHVybiAyO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PSAnTWVkaXVtLUhpZ2gnKSB7XHJcbiAgICAgICAgICByZXR1cm4gMztcclxuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT0gJ0hpZ2gnKSB7XHJcbiAgICAgICAgICByZXR1cm4gNDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXQoKSB7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCA9IHtcclxuICAgICAgaGVhZGVyOiBbXSxcclxuICAgICAgcmVwb3J0czogW10sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5idWxrVXBsb2FkID0ge1xyXG4gICAgICBmcmVxdWVuY3k6IHtcclxuICAgICAgICBoZWFkZXI6IFtdLFxyXG4gICAgICAgIHN1YkhlYWRpbmc6IFtdLFxyXG4gICAgICAgIHJlcG9ydHM6IFtdLFxyXG4gICAgICB9LFxyXG4gICAgICBvbmdvaW5nOiB7XHJcbiAgICAgICAgaGVhZGVyOiBbXSxcclxuICAgICAgICBzdWJIZWFkaW5nOiBbXSxcclxuICAgICAgICByZXBvcnRzOiBbXSxcclxuICAgICAgfSxcclxuICAgICAgb25Db21wbGV0aW9uOiB7XHJcbiAgICAgICAgaGVhZGVyOiBbXSxcclxuICAgICAgICBzdWJIZWFkaW5nOiBbXSxcclxuICAgICAgICByZXBvcnRzOiBbXSxcclxuICAgICAgfSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy50ZW1wbGF0ZUluZm8gPSB7XHJcbiAgICAgIGNhdGVnb3J5TGlzdDogW10sXHJcbiAgICAgIHJjTGlzdDogW10sXHJcbiAgICAgIGFzc2lnbm9yc0xpc3Q6IFtdLFxyXG4gICAgICBhc3NpZ25lZXNMaXN0OiBbXSxcclxuICAgICAgcmV2aWV3ZXJMaXN0OiBbXSxcclxuICAgICAgbWVtYmVySWQ6ICcnLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmlzRmlsZUVtcHR5ID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzV3JvbmdGaWxlID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzV3JvbmdGb3JtYXQgPSBmYWxzZTtcclxuICAgIHRoaXMuZmlsZU5hbWUgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLmRhdGEgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnNob3dFeGNlbCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5jbG9zZUFkZE11bHRpcGxlUmVzcG9uc2liaWxpdHkuZW1pdCgpO1xyXG4gIH1cclxuICBhY3Rpb24oZXZlbnQ6IHN0cmluZykge1xyXG4gICAgc3dpdGNoIChldmVudCkge1xyXG4gICAgICBjYXNlICdhZGRNb3JlJzpcclxuICAgICAgICB0aGlzLnJlc2V0KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3ZpZXcnOlxyXG4gICAgICAgIHRoaXMudmlld1Jlc3BvbnNpYmlsaXRpZXMoKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlU21pbGV5KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoeyBldnQ6IHRoaXMucmVzcG9uc2liaWxpdHlEYXRhLCBjb25maXJtOiBmYWxzZSB9KTtcclxuICB9XHJcblxyXG4gIHZpZXdSZXNwb25zaWJpbGl0aWVzKCk6IHZvaWQge1xyXG4gICAgbGV0IHVybDogc3RyaW5nO1xyXG4gICAgbGV0IHVybFN1YnN0cmluZyA9ICcnO1xyXG4gICAgdGhpcy5kaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKTtcclxuICAgIGlmICh0aGlzLmlzTm90aWZpY2F0aW9uUGVuZGluZykge1xyXG4gICAgICBpZiAodGhpcy5mZWF0dXJlZmxhZykge1xyXG4gICAgICAgIHVybFN1YnN0cmluZyA9ICdjb21wbGlhbmNlL21hbmFnZS1yZXNwb25zaWJpbGl0eT8nICsgdGhpcy51cmw7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdXJsU3Vic3RyaW5nID1cclxuICAgICAgICAgICdjb21wbGlhbmNlL21hbmFnZS1yZXNwb25zaWJpbGl0aWVzL3Jlc3BvbnNpYmlsaXRpZXMtcXVldWUnO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5mZWF0dXJlZmxhZykge1xyXG4gICAgICAgIHRoaXMucXVlcnlQYXJhbSA9IEpTT04/LnN0cmluZ2lmeSh0aGlzLnJlY2VudFJlc3BvbnNpYmlsaXR5VXJsKTtcclxuICAgICAgICB1cmxTdWJzdHJpbmcgPSAnY29tcGxpYW5jZS9tYW5hZ2UtcmVzcG9uc2liaWxpdHk/cT0nICsgdGhpcy5xdWVyeVBhcmFtO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHVybFN1YnN0cmluZyA9ICdjb21wbGlhbmNlL21hbmFnZS1yZXNwb25zaWJpbGl0aWVzJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ob3N0LnN0YXJ0c1dpdGgoJ2xvY2FsaG9zdCcpKSB7XHJcbiAgICAgIHVybCA9ICdodHRwOi8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0ICsgJy9jb21wbGlhbmNlLyMvJyArIHVybFN1YnN0cmluZztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHVybCA9ICdodHRwczovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArICcvY29tcGxpYW5jZS8jLycgKyB1cmxTdWJzdHJpbmc7XHJcbiAgICB9XHJcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcclxuICB9XHJcblxyXG4gIC8vIFVwbG9hZCBGaWxlIHRvIHRoZSBzZXJ2ZXJcclxuICBmaWxlVXBsb2FkKCkge1xyXG4gICAgdGhpcy5maWxlUmVzcG9uc2UgPSBbXTtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBjb25zdCBmaWxlID0gdGhpcy51cGxvYWRlZEZpbGVzWzBdWzBdO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdzb3VyY2VmaWxlJywgZmlsZSk7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2Rlc3RpbmF0aW9uJywgJ2J1bGt1cGxvYWQvZW50cnVzdC8nICsgdGhpcy51c2VySW5mby5lbWFpbCk7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS5maWxlVXBsb2FkKGZvcm1EYXRhKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXM/LmZpbGVuYW1lKSB7XHJcbiAgICAgICAgICB0aGlzLmZpbGVSZXNwb25zZS5wdXNoKHJlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coXHJcbiAgICAgICAgICAnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/JyxcclxuICAgICAgICAgICdhbGVydCdcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc2V0T3JnYW5pemF0aW9uRGV0YWlscyh0ZW1wTGlzdDogYW55KSB7XHJcbiAgICBpZiAodGVtcExpc3RbMF0gIT09IHVuZGVmaW5lZCAmJiB0ZW1wTGlzdFswXVsxOF0pIHtcclxuICAgICAgdGhpcy50ZW1wbGF0ZUluZm8ubWVtYmVySWQgPSB0ZW1wTGlzdFswXVsxOF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9XHJcbiAgICAgICAgJ1RoZSBpbmNvcnJlY3QgZmlsZSBoYXMgYmVlbiB1cGxvYWRlZC4gUGxlYXNlIHVwbG9hZCB0aGUgdGVtcGxhdGUgd2hpY2ggeW91IGRvd25sb2FkZWQgZnJvbSBoZXJlLicgK1xyXG4gICAgICAgICcgUkVUUlknO1xyXG4gICAgICB0aGlzLmlzV3JvbmdGaWxlID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGVtcExpc3QuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIC8qIFB1c2hpbmcgdGhlIHZhbHVlIG9mIHJlZ3VsYXRpb25zIFByb2dyYW1zIGludG8gdGhlIGNhdGVnb3J5TGlzdCBhcnJheS4gKi9cclxuICAgICAgaWYgKGVsZW1lbnRbMjZdICYmIHR5cGVvZiBlbGVtZW50WzI2XSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICBjb25zdCByZWd1bGF0aW9ucyA9IHtcclxuICAgICAgICAgIHByb2dyYW1OYW1lOiBlbGVtZW50WzIyXSxcclxuICAgICAgICAgIHByb2dyYW1JZDogZWxlbWVudFsyNl0sXHJcbiAgICAgICAgICBhc3NpZ25lZTogSlNPTi5wYXJzZShlbGVtZW50WzMwXSksXHJcbiAgICAgICAgICByZXZpZXdlcjogSlNPTi5wYXJzZShlbGVtZW50WzMxXSksXHJcbiAgICAgICAgICBvdmVyc2VlcjogSlNPTi5wYXJzZShlbGVtZW50WzMyXSk/LmNvbmNhdChKU09OLnBhcnNlKGVsZW1lbnRbMzNdKSksXHJcbiAgICAgICAgICBwcm9ncmFtVHlwZTogMSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmNhdGVnb3J5TGlzdC5wdXNoKHJlZ3VsYXRpb25zKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLyogUHVzaGluZyB0aGUgdmFsdWUgb2Ygc3RhbmRhcmRzIFByb2dyYW1zIGludG8gdGhlIGNhdGVnb3J5TGlzdCBhcnJheS4gKi9cclxuICAgICAgaWYgKGVsZW1lbnRbMjddICYmIHR5cGVvZiBlbGVtZW50WzI3XSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICBjb25zdCBzdGFuZGFyZHMgPSB7XHJcbiAgICAgICAgICBwcm9ncmFtTmFtZTogZWxlbWVudFsyM10sXHJcbiAgICAgICAgICBwcm9ncmFtSWQ6IGVsZW1lbnRbMjddLFxyXG4gICAgICAgICAgYXNzaWduZWU6IEpTT04ucGFyc2UoZWxlbWVudFszNF0pLFxyXG4gICAgICAgICAgcmV2aWV3ZXI6IEpTT04ucGFyc2UoZWxlbWVudFszNV0pLFxyXG4gICAgICAgICAgb3ZlcnNlZXI6IEpTT04ucGFyc2UoZWxlbWVudFszNl0pPy5jb25jYXQoSlNPTi5wYXJzZShlbGVtZW50WzM3XSkpLFxyXG4gICAgICAgICAgcHJvZ3JhbVR5cGU6IDIsXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5jYXRlZ29yeUxpc3QucHVzaChzdGFuZGFyZHMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvKiBQdXNoaW5nIHRoZSB2YWx1ZSBvZiBpbnRlcm5hbCBDb250cm9scyBQcm9ncmFtcyBpbnRvIHRoZSBjYXRlZ29yeUxpc3QgYXJyYXkuICovXHJcbiAgICAgIGlmIChlbGVtZW50WzI4XSAmJiB0eXBlb2YgZWxlbWVudFsyOF0gPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgY29uc3QgaW50ZXJuYWxDb250cm9scyA9IHtcclxuICAgICAgICAgIHByb2dyYW1OYW1lOiBlbGVtZW50WzI0XSxcclxuICAgICAgICAgIHByb2dyYW1JZDogZWxlbWVudFsyOF0sXHJcbiAgICAgICAgICBhc3NpZ25lZTogSlNPTi5wYXJzZShlbGVtZW50WzM4XSksXHJcbiAgICAgICAgICByZXZpZXdlcjogSlNPTi5wYXJzZShlbGVtZW50WzM5XSksXHJcbiAgICAgICAgICBvdmVyc2VlcjogSlNPTi5wYXJzZShlbGVtZW50WzQwXSk/LmNvbmNhdChKU09OLnBhcnNlKGVsZW1lbnRbNDFdKSksXHJcbiAgICAgICAgICBwcm9ncmFtVHlwZTogMyxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmNhdGVnb3J5TGlzdC5wdXNoKGludGVybmFsQ29udHJvbHMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvKiBQdXNoaW5nIHRoZSB2YWx1ZSBvZiBvdGhlcnMgUHJvZ3JhbXMgaW50byB0aGUgY2F0ZWdvcnlMaXN0IGFycmF5LiAqL1xyXG4gICAgICBpZiAoZWxlbWVudFsyOV0gJiYgdHlwZW9mIGVsZW1lbnRbMjldID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgIGNvbnN0IG90aGVycyA9IHtcclxuICAgICAgICAgIHByb2dyYW1OYW1lOiBlbGVtZW50WzI1XSxcclxuICAgICAgICAgIHByb2dyYW1JZDogZWxlbWVudFsyOV0sXHJcbiAgICAgICAgICBhc3NpZ25lZTogSlNPTi5wYXJzZShlbGVtZW50WzQyXSksXHJcbiAgICAgICAgICByZXZpZXdlcjogSlNPTi5wYXJzZShlbGVtZW50WzQzXSksXHJcbiAgICAgICAgICBvdmVyc2VlcjogSlNPTi5wYXJzZShlbGVtZW50WzQ0XSk/LmNvbmNhdChKU09OLnBhcnNlKGVsZW1lbnRbNDVdKSksXHJcbiAgICAgICAgICBwcm9ncmFtVHlwZTogMCxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmNhdGVnb3J5TGlzdC5wdXNoKG90aGVycyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8qIENoZWNraW5nIGlmIHRoZSBlbGVtZW50WzldIGlzIG5vdCBudWxsIGFuZCBub3QgZW1wdHkuIElmIGl0IGlzIG5vdCBudWxsIGFuZCBub3QgZW1wdHksIGl0IGlzXHJcbiAgICAgIHB1c2hpbmcgdGhlIGVsZW1lbnRbOV0gKFJDKSB0byB0aGUgYXJyYXkgKHJjTGlzdCkuICovXHJcbiAgICAgIGlmIChlbGVtZW50WzldICYmIGVsZW1lbnRbOV0gIT0gJyAnKSB7XHJcbiAgICAgICAgY29uc3QgcmMgPSB7XHJcbiAgICAgICAgICBuYW1lOiBlbGVtZW50WzldLFxyXG4gICAgICAgICAgcmNfaWQ6IGVsZW1lbnRbMTBdLFxyXG4gICAgICAgICAgcGFyZW50SWRzOiBKU09OLnBhcnNlKGVsZW1lbnRbMTFdKSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLnJjTGlzdC5wdXNoKHJjKTtcclxuICAgICAgfVxyXG4gICAgICAvKiBDaGVja2luZyBpZiB0aGUgZWxlbWVudFsyXSBpcyBub3QgZW1wdHkgYW5kIG5vdCBlcXVhbCB0byBzcGFjZS4gSWYgaXQgaXMgbm90IGVtcHR5IGFuZCBub3RcclxuICAgICAgZXF1YWwgdG8gc3BhY2UsIHRoZW4gaXQgaXMgcHVzaGluZyB0aGUgYXNzaWduZWUgb2JqZWN0IHRvIHRoZSBhc3NpZ25lZXNMaXN0IGFycmF5LiAqL1xyXG4gICAgICBpZiAoZWxlbWVudFsxOV0gJiYgZWxlbWVudFsxOV0gIT0gJyAnKSB7XHJcbiAgICAgICAgY29uc3QgYXNzaWduZWUgPSB7XHJcbiAgICAgICAgICBuYW1lQW5kRW1haWw6IGVsZW1lbnRbMTldLFxyXG4gICAgICAgICAgLy8gbmFtZTogZWxlbWVudFsxMV0uc3BsaXQoJyAoJylbMF0sXHJcbiAgICAgICAgICBuYW1lOiBlbGVtZW50WzE5XSxcclxuICAgICAgICAgIGVtYWlsOiBlbGVtZW50WzE5XSxcclxuICAgICAgICAgIGVtcGxveWVlX2lkOiBlbGVtZW50WzIwXSxcclxuICAgICAgICAgIG15X21lbWJlcl9pZDogSlNPTi5wYXJzZShlbGVtZW50WzIxXSksXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5hc3NpZ25lZXNMaXN0LnB1c2goYXNzaWduZWUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoZWxlbWVudFsyXSAmJiBlbGVtZW50WzJdICE9ICcgJykge1xyXG4gICAgICAgIGNvbnN0IHJldmlld2VyID0ge1xyXG4gICAgICAgICAgbmFtZUFuZEVtYWlsOiBlbGVtZW50WzJdLFxyXG4gICAgICAgICAgLy8gbmFtZTogZWxlbWVudFsxMV0uc3BsaXQoJyAoJylbMF0sXHJcbiAgICAgICAgICBuYW1lOiBlbGVtZW50WzBdLFxyXG4gICAgICAgICAgZW1haWw6IGVsZW1lbnRbMV0sXHJcbiAgICAgICAgICBlbXBsb3llZV9pZDogZWxlbWVudFszXSxcclxuICAgICAgICAgIG15X21lbWJlcl9pZDogZWxlbWVudFs0XSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLnJldmlld2VyTGlzdC5wdXNoKHJldmlld2VyKTtcclxuICAgICAgfVxyXG4gICAgICAvKiBDaGVja2luZyBpZiB0aGUgZWxlbWVudFsyXSBpcyBub3QgZW1wdHkgYW5kIG5vdCBlcXVhbCB0byBzcGFjZS4gSWYgaXQgaXMgbm90IGVtcHR5IGFuZCBub3RcclxuICAgICAgZXF1YWwgdG8gc3BhY2UsIGl0IHdpbGwgY3JlYXRlIGFuIG9iamVjdCBhbmQgcHVzaCBpdCB0byB0aGUgYXNzaWdub3JzTGlzdCBhcnJheS4gKi9cclxuICAgICAgaWYgKGVsZW1lbnRbMl0gJiYgZWxlbWVudFsyXSAhPSAnICcpIHtcclxuICAgICAgICBjb25zdCBhc3NpZ25vciA9IHtcclxuICAgICAgICAgIG5hbWVBbmRFbWFpbDogZWxlbWVudFsyXSxcclxuICAgICAgICAgIG5hbWU6IGVsZW1lbnRbMF0sXHJcbiAgICAgICAgICBlbWFpbDogZWxlbWVudFsxXSxcclxuICAgICAgICAgIC8vIG5hbWU6IGVsZW1lbnRbMTRdLnNwbGl0KCcgKCcpWzBdLFxyXG4gICAgICAgICAgLy8gZW1haWw6IGVsZW1lbnRbMTRdLnNwbGl0KCcgKCcpWzFdLnJlcGxhY2UoJyknLCAnJyksXHJcbiAgICAgICAgICBtZW1iZXJfaWQ6IGVsZW1lbnRbNF0sXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5hc3NpZ25vcnNMaXN0LnB1c2goYXNzaWdub3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvKiBDaGVja2luZyBpZiB0aGUgMTd0aCBlbGVtZW50IG9mIHRoZSBhcnJheSBpcyB0cnVlLiBJZiBpdCBpcywgaXQgaXMgY3JlYXRpbmcgYW4gb2JqZWN0IHdpdGggdGhlXHJcbiAgICAgIDE2dGggZWxlbWVudCBhcyB0aGUgbmFtZSBhbmQgdGhlIDE3dGggZWxlbWVudCBhcyB0aGUgaWQuICovXHJcbiAgICAgIGlmIChlbGVtZW50WzE3XSkge1xyXG4gICAgICAgIGNvbnN0IHBhcmVudFJlc3BvbnNpYmlsaXR5ID0ge1xyXG4gICAgICAgICAgbmFtZTogZWxlbWVudFsxNl0sXHJcbiAgICAgICAgICBpZDogSlNPTi5wYXJzZShlbGVtZW50WzE3XSksXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5wYXJlbnRSZXNwb25zaWJpbGl0eS5wdXNoKHBhcmVudFJlc3BvbnNpYmlsaXR5KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLyogQ3JlYXRpbmcgYSBsaXN0IG9mIGNoaWxkIGNhdGVnb3JpZXMuIGFuZCBwdXNoIHRoZSBjaGlsZCBjYXRlZ29yaWVzIHRvIHRoZWlyIHBhcmVudCBwcm9ncmFtICovXHJcbiAgICBpZiAodGhpcy50ZW1wbGF0ZUluZm8uY2F0ZWdvcnlMaXN0Py5sZW5ndGgpIHtcclxuICAgICAgdGhpcy50ZW1wbGF0ZUluZm8uY2F0ZWdvcnlMaXN0Py5mb3JFYWNoKChjYXRlZ29yeTogYW55LCBpOiBudW1iZXIpID0+IHtcclxuICAgICAgICBsZXQgaW5kZXggPSB0ZW1wTGlzdFswXT8uaW5kZXhPZihjYXRlZ29yeT8ucHJvZ3JhbUlkKTtcclxuICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICBsZXQgY2hpbGRDYXRlZ29yeSA9IFtdO1xyXG4gICAgICAgICAgLyogQ3JlYXRpbmcgYSBsaXN0IG9mIGNoaWxkIGNhdGVnb3JpZXMuICovXHJcbiAgICAgICAgICBmb3IgKGxldCBqID0gMTsgdHJ1ZTsgaisrKSB7XHJcbiAgICAgICAgICAgIGlmICh0ZW1wTGlzdFtqXSAmJiB0ZW1wTGlzdFtqXVtpbmRleF0pIHtcclxuICAgICAgICAgICAgICBjb25zdCBjYXRlZ29yeSA9IHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IHRlbXBMaXN0W2pdW2luZGV4IC0gMV0sXHJcbiAgICAgICAgICAgICAgICBpZDogdGVtcExpc3Rbal1baW5kZXhdLFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgY2hpbGRDYXRlZ29yeS5wdXNoKGNhdGVnb3J5KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8uY2F0ZWdvcnlMaXN0W2ldWydjaGlsZENhdGVnb3J5J10gPSBjaGlsZENhdGVnb3J5O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJdCB0YWtlcyBhbiBldmVudCwgd2hpY2ggaXMgYSBzdHJpbmcsIGFuZCB0aGVuIGl0IHNldHMgdGhlIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCB2YXJpYWJsZSB0b1xyXG4gICAqIHRoZSB2YWx1ZSBvZiB0aGUgYnVsa1VwbG9hZCB2YXJpYWJsZSwgd2hpY2ggaXMgYW4gb2JqZWN0LCBhbmQgdGhlbiBpdCBhY2Nlc3NlcyB0aGUgcHJvcGVydHkgb2ZcclxuICAgKiB0aGF0IG9iamVjdCB0aGF0IG1hdGNoZXMgdGhlIGV2ZW50IHN0cmluZy5cclxuICAgKlxyXG4gICAqIFNvIGlmIHRoZSBldmVudCBzdHJpbmcgaXMgJ2ZyZXF1ZW5jeScsIHRoZW4gdGhlIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCB2YXJpYWJsZSB3aWxsIGJlIHNldCB0b1xyXG4gICAqIHRoZSB2YWx1ZSBvZiB0aGUgZnJlcXVlbmN5IHByb3BlcnR5IG9mIHRoZSBidWxrVXBsb2FkIG9iamVjdC5cclxuICAgKlxyXG4gICAqIElmIHRoZSBldmVudCBzdHJpbmcgaXMgJ29uZ29pbmcnLCB0aGVuIHRoZSByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQgdmFyaWFibGUgd2lsbCBiZSBzZXQgdG8gdGhlXHJcbiAgICogdmFsdWUgb2YgdGhlIG9uZ29pbmcgcHJvcGVydHkgb2YgdGhlIGJ1bGtVcGxvYWQgb2JqZWN0LlxyXG4gICAqXHJcbiAgICogSWYgdGhlIGV2ZW50IHN0cmluZyBpcyAnb25Db21wbGV0aW9uJywgdGhlbiB0aGUgcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkIHZhcmlhYmxlIHdpbGwgYmUgc2V0IHRvIHRoZVxyXG4gICAqIHZhbHVlIG9mIHRoZSBvbkNvbXBsZXRpb24gcHJvcGVydHkgb2YgdGhlIGJ1bGtVcGxvYWQgb2JqZWN0LlxyXG4gICAqXHJcbiAgICogSWYgdGhlIGV2ZW50IHN0cmluZyBpcyBhbnl0aGluZyBlbHNlLCB0aGVuIHRoZSByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQgdmFyaWFibGUgd2lsbCBiZSBzZXQgdG9cclxuICAgKiB0aGUgdmFsdWUgb2YgdGhlIGZyZXF1ZW5jeSBwcm9wZXJ0eSBvZiB0aGUgYnVsa1VwbG9hZCBvYmplY3QuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50IC0gc3RyaW5nIC0gdGhlIGV2ZW50IHRoYXQgaXMgZW1pdHRlZCBmcm9tIHRoZSBjaGlsZCBjb21wb25lbnQgKGZyZXF1ZW5jeSB8IG9uZ29pbmcgfCBvbkNvbXBsZXRpb24pXHJcbiAgICovXHJcbiAgc2VsZWN0ZWRUYWIoZXZlbnQ6ICdmcmVxdWVuY3knIHwgJ29uZ29pbmcnIHwgJ29uQ29tcGxldGlvbicpIHtcclxuICAgIHRoaXMudGFiVHlwZSA9IGV2ZW50O1xyXG4gICAgc3dpdGNoIChldmVudCkge1xyXG4gICAgICBjYXNlICdmcmVxdWVuY3knOlxyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkID0gdGhpcy5idWxrVXBsb2FkPy5mcmVxdWVuY3k7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ29uZ29pbmcnOlxyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkID0gdGhpcy5idWxrVXBsb2FkPy5vbmdvaW5nO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdvbkNvbXBsZXRpb24nOlxyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkID0gdGhpcy5idWxrVXBsb2FkPy5vbkNvbXBsZXRpb247XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQgPSB0aGlzLmJ1bGtVcGxvYWQ/LmZyZXF1ZW5jeTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEl0IHRha2VzIGluIGEgcmVwb3J0LCBhIHRhYiB0eXBlLCBhbmQgYSBib29sZWFuIHZhbHVlLiBJdCB0aGVuIHJldHVybnMgYW4gb2JqZWN0IHdpdGggYSBidW5jaCBvZlxyXG4gICAqIHByb3BlcnRpZXMuXHJcbiAgICogPC9jb2RlPlxyXG4gICAqIEBwYXJhbSB7YW55fSByZXBvcnQgLSBhbnkgPSZndDsgdGhlIGFycmF5IG9mIGRhdGFcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFiVHlwZSAtIHN0cmluZyAtIHRoaXMgaXMgdGhlIHR5cGUgb2YgdGFiIHRoYXQgaXMgc2VsZWN0ZWQuXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBpc1Byb2dyYW0gLSBib29sZWFuXHJcbiAgICogQHJldHVybnMgQW4gb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxyXG4gICAqL1xyXG4gIHNldFJlcG9ydERldGFpbHMocmVwb3J0OiBhbnksIHRhYlR5cGU6IHN0cmluZywgaXNQcm9ncmFtOiBib29sZWFuKSB7XHJcbiAgICBsZXQgb2JqOiBhbnk7XHJcbiAgICBzd2l0Y2ggKHRhYlR5cGUpIHtcclxuICAgICAgY2FzZSAnZnJlcXVlbmN5Jzoge1xyXG4gICAgICAgIGlmIChpc1Byb2dyYW0pIHtcclxuICAgICAgICAgIG9iaiA9IHtcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlOYW1lOiByZXBvcnRbMF0sXHJcbiAgICAgICAgICAgIHByb2dyYW1UeXBlOiByZXBvcnRbMV0sXHJcbiAgICAgICAgICAgIHByb2dyYW06IHJlcG9ydFsyXSxcclxuICAgICAgICAgICAgcHJvZ3JhbUNhdGVnb3J5OiByZXBvcnRbM10sXHJcbiAgICAgICAgICAgIGFzc2lnbm9yOiByZXBvcnRbNF0sXHJcbiAgICAgICAgICAgIGFzc2lnbmVlOiByZXBvcnRbNV0sXHJcbiAgICAgICAgICAgIGFzc2lnbmVlVHlwZTogcmVwb3J0WzZdLFxyXG4gICAgICAgICAgICBrZXlSZXNwb25zaWJpbGl0eTogcmVwb3J0WzddLFxyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUNhdGVnb3J5OiBudWxsLFxyXG4gICAgICAgICAgICBmcmVxdWVuY3k6IHJlcG9ydFs4XSxcclxuICAgICAgICAgICAgZGF5OiByZXBvcnRbOV0sXHJcbiAgICAgICAgICAgIG1vbnRoOiByZXBvcnRbMTBdLFxyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eVdpbmRvdzogcmVwb3J0WzExXSxcclxuICAgICAgICAgICAgZmFpbGVkQWZ0ZXI6IHJlcG9ydFsxMl0sXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiByZXBvcnRbMTNdLFxyXG4gICAgICAgICAgICByZXBvcnRDbGFzczogcmVwb3J0WzE0XSxcclxuICAgICAgICAgICAgb2JqZWN0aXZlOiByZXBvcnRbMTVdLFxyXG4gICAgICAgICAgICBub3RlczogcmVwb3J0WzE2XSxcclxuICAgICAgICAgICAgaXNGb3JtYXQ6IHJlcG9ydFsxN10sXHJcbiAgICAgICAgICAgIGZvcm1hdEZvclJlc3BvbnNpYmlsaXR5OiByZXBvcnRbMThdLFxyXG4gICAgICAgICAgICBkb2N1bWVudEV2aWRlbmNlUmVxdWlyZWQ6IHJlcG9ydFsxOV0sXHJcbiAgICAgICAgICAgIC8vIGV2aWRlbmNlTm90ZXM6IHJlcG9ydFsxOV0sXHJcbiAgICAgICAgICAgIC8vIGFzc2Vzc21lbnRzOiByZXBvcnRbMjBdLFxyXG4gICAgICAgICAgICByZXZpZXdlcjogcmVwb3J0WzIwXSxcclxuICAgICAgICAgICAgcmV2aWV3VG9CZUNvbXBsZXRlZFdpdGhpbjogcmVwb3J0WzIxXSxcclxuICAgICAgICAgICAgcmV2aWV3V2lsbEJlRmFpbGVkQWZ0ZXI6IHJlcG9ydFsyMl0sXHJcbiAgICAgICAgICAgIG92ZXJzZWVyOiByZXBvcnRbMjNdLFxyXG4gICAgICAgICAgICBub3RpZnlPbkZhaWx1cmU6IHJlcG9ydFsyNF0sXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgb2JqWydpc1ZhbGlkRGF0YSddID0gdGhpcy5pc1ZhbGlkRGF0YShvYmopO1xyXG4gICAgICAgICAgb2JqWydpc1ZhbGlkVXNlciddID0gdGhpcy5yZXR1cm5JZHMob2JqPy5hc3NpZ25lZSwgJ2VudHJ1c3RlZF90bycpXHJcbiAgICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgICA6IGZhbHNlO1xyXG4gICAgICAgICAgb2JqWyd1c2VyVmFsaWRhdGVXaXRoUHJvZ3JhbSddID0gdGhpcy52YWxpZGF0ZURhdGFXaXRoUHJvZ3JhbShvYmopO1xyXG4gICAgICAgICAgb2JqWyd2YWxpZERhdGUnXSA9IHRoaXMuY29tcGFyZVdpdGhDdXJyZW50RGF0ZShvYmo/LmRheSwgb2JqPy5tb250aCk7XHJcbiAgICAgICAgICBvYmpbJ2lzUGFzdERhdGUnXSA9IHRoaXMuaXNQYXN0RGF0ZShvYmo/LmRheSwgb2JqPy5tb250aCk7XHJcbiAgICAgICAgICBvYmpbJ2lzVmFsaWQnXSA9XHJcbiAgICAgICAgICAgIG9ialsnaXNWYWxpZERhdGEnXSAmJlxyXG4gICAgICAgICAgICBvYmpbJ3ZhbGlkRGF0ZSddICYmXHJcbiAgICAgICAgICAgICFvYmpbJ2lzUGFzdERhdGUnXSAmJlxyXG4gICAgICAgICAgICBvYmo/LmZyZXF1ZW5jeT8ubGVuZ3RoICYmXHJcbiAgICAgICAgICAgICFPYmplY3QudmFsdWVzKG9ialsndXNlclZhbGlkYXRlV2l0aFByb2dyYW0nXSkuaW5jbHVkZXMoZmFsc2UpICYmXHJcbiAgICAgICAgICAgIG9ialsnaXNWYWxpZFVzZXInXTtcclxuICAgICAgICAgIHJldHVybiBvYmo7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG9iaiA9IHtcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlOYW1lOiByZXBvcnRbMF0sXHJcbiAgICAgICAgICAgIGFzc2lnbm9yOiByZXBvcnRbMV0sXHJcbiAgICAgICAgICAgIGFzc2lnbmVlOiByZXBvcnRbMl0sXHJcbiAgICAgICAgICAgIGFzc2lnbmVlVHlwZTogcmVwb3J0WzNdLFxyXG4gICAgICAgICAgICBrZXlSZXNwb25zaWJpbGl0eTogcmVwb3J0WzRdLFxyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUNhdGVnb3J5OiBudWxsLFxyXG4gICAgICAgICAgICBmcmVxdWVuY3k6IHJlcG9ydFs1XSxcclxuICAgICAgICAgICAgZGF5OiByZXBvcnRbNl0sXHJcbiAgICAgICAgICAgIG1vbnRoOiByZXBvcnRbN10sXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5V2luZG93OiByZXBvcnRbOF0sXHJcbiAgICAgICAgICAgIGZhaWxlZEFmdGVyOiByZXBvcnRbOV0sXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiByZXBvcnRbMTBdLFxyXG4gICAgICAgICAgICByZXBvcnRDbGFzczogcmVwb3J0WzExXSxcclxuICAgICAgICAgICAgb2JqZWN0aXZlOiByZXBvcnRbMTJdLFxyXG4gICAgICAgICAgICBub3RlczogcmVwb3J0WzEzXSxcclxuICAgICAgICAgICAgaXNGb3JtYXQ6IHJlcG9ydFsxNF0sXHJcbiAgICAgICAgICAgIGZvcm1hdEZvclJlc3BvbnNpYmlsaXR5OiByZXBvcnRbMTVdLFxyXG4gICAgICAgICAgICBkb2N1bWVudEV2aWRlbmNlUmVxdWlyZWQ6IHJlcG9ydFsxNl0sXHJcbiAgICAgICAgICAgIC8vIGV2aWRlbmNlTm90ZXM6IHJlcG9ydFsxNl0sXHJcbiAgICAgICAgICAgIC8vIGFzc2Vzc21lbnRzOiByZXBvcnRbMTddLFxyXG4gICAgICAgICAgICByZXZpZXdlcjogcmVwb3J0WzE3XSxcclxuICAgICAgICAgICAgcmV2aWV3VG9CZUNvbXBsZXRlZFdpdGhpbjogcmVwb3J0WzE4XSxcclxuICAgICAgICAgICAgcmV2aWV3V2lsbEJlRmFpbGVkQWZ0ZXI6IHJlcG9ydFsxOV0sXHJcbiAgICAgICAgICAgIG92ZXJzZWVyOiByZXBvcnRbMjBdLFxyXG4gICAgICAgICAgICBub3RpZnlPbkZhaWx1cmU6IHJlcG9ydFsyMV0sXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgb2JqWydpc1ZhbGlkRGF0YSddID0gdGhpcy5pc1ZhbGlkRGF0YShvYmopO1xyXG4gICAgICAgICAgb2JqWyd1c2VyVmFsaWRhdGVXaXRoUHJvZ3JhbSddID0gdGhpcy52YWxpZGF0ZURhdGFXaXRoUHJvZ3JhbShvYmopO1xyXG4gICAgICAgICAgb2JqWydpc1ZhbGlkVXNlciddID0gdGhpcy5yZXR1cm5JZHMob2JqPy5hc3NpZ25lZSwgJ2VudHJ1c3RlZF90bycpXHJcbiAgICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgICA6IGZhbHNlO1xyXG4gICAgICAgICAgb2JqWyd2YWxpZERhdGUnXSA9IHRoaXMuY29tcGFyZVdpdGhDdXJyZW50RGF0ZShvYmo/LmRheSwgb2JqPy5tb250aCk7XHJcbiAgICAgICAgICBvYmpbJ2lzUGFzdERhdGUnXSA9IHRoaXMuaXNQYXN0RGF0ZShvYmo/LmRheSwgb2JqPy5tb250aCk7XHJcbiAgICAgICAgICBvYmpbJ2lzVmFsaWQnXSA9XHJcbiAgICAgICAgICAgIG9ialsnaXNWYWxpZERhdGEnXSAmJlxyXG4gICAgICAgICAgICBvYmpbJ3ZhbGlkRGF0ZSddICYmXHJcbiAgICAgICAgICAgICFvYmpbJ2lzUGFzdERhdGUnXSAmJlxyXG4gICAgICAgICAgICBvYmo/LmZyZXF1ZW5jeT8ubGVuZ3RoICYmXHJcbiAgICAgICAgICAgIG9ialsnaXNWYWxpZFVzZXInXTtcclxuICAgICAgICAgIHJldHVybiBvYmo7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ29uZ29pbmcnOiB7XHJcbiAgICAgICAgaWYgKGlzUHJvZ3JhbSkge1xyXG4gICAgICAgICAgb2JqID0ge1xyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eU5hbWU6IHJlcG9ydFswXSxcclxuICAgICAgICAgICAgcHJvZ3JhbVR5cGU6IHJlcG9ydFsxXSxcclxuICAgICAgICAgICAgcHJvZ3JhbTogcmVwb3J0WzJdLFxyXG4gICAgICAgICAgICBwcm9ncmFtQ2F0ZWdvcnk6IHJlcG9ydFszXSxcclxuICAgICAgICAgICAgYXNzaWdub3I6IHJlcG9ydFs0XSxcclxuICAgICAgICAgICAgYXNzaWduZWU6IHJlcG9ydFs1XSxcclxuICAgICAgICAgICAgYXNzaWduZWVUeXBlOiByZXBvcnRbNl0sXHJcbiAgICAgICAgICAgIGtleVJlc3BvbnNpYmlsaXR5OiByZXBvcnRbN10sXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IG51bGwsXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeTogcmVwb3J0WzhdLFxyXG4gICAgICAgICAgICBzZXRSZW1pbmRlcjogcmVwb3J0WzldLFxyXG4gICAgICAgICAgICBmcmVxdWVuY3lSZW1pbmRlcjogcmVwb3J0WzEwXSxcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IHJlcG9ydFsxMV0sXHJcbiAgICAgICAgICAgIHJlcG9ydENsYXNzOiByZXBvcnRbMTJdLFxyXG4gICAgICAgICAgICBvYmplY3RpdmU6IHJlcG9ydFsxM10sXHJcbiAgICAgICAgICAgIG5vdGVzOiByZXBvcnRbMTRdLFxyXG4gICAgICAgICAgICBpc0Zvcm1hdDogcmVwb3J0WzE1XSxcclxuICAgICAgICAgICAgZm9ybWF0Rm9yUmVzcG9uc2liaWxpdHk6IHJlcG9ydFsxNl0sXHJcbiAgICAgICAgICAgIGRvY3VtZW50RXZpZGVuY2VSZXF1aXJlZDogcmVwb3J0WzE3XSxcclxuICAgICAgICAgICAgLy8gZXZpZGVuY2VOb3RlczogcmVwb3J0WzE3XSxcclxuICAgICAgICAgICAgLy8gYXNzZXNzbWVudHM6IHJlcG9ydFsxOF0sXHJcbiAgICAgICAgICAgIHJldmlld2VyOiByZXBvcnRbMThdLFxyXG4gICAgICAgICAgICByZXZpZXdUb0JlQ29tcGxldGVkV2l0aGluOiByZXBvcnRbMTldLFxyXG4gICAgICAgICAgICByZXZpZXdXaWxsQmVGYWlsZWRBZnRlcjogcmVwb3J0WzIwXSxcclxuICAgICAgICAgICAgb3ZlcnNlZXI6IHJlcG9ydFsyMV0sXHJcbiAgICAgICAgICAgIG5vdGlmeU9uRmFpbHVyZTogcmVwb3J0WzIyXSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBvYmpbJ2lzVmFsaWREYXRhJ10gPSB0aGlzLmlzVmFsaWREYXRhKG9iaik7XHJcbiAgICAgICAgICBvYmpbJ3VzZXJWYWxpZGF0ZVdpdGhQcm9ncmFtJ10gPSB0aGlzLnZhbGlkYXRlRGF0YVdpdGhQcm9ncmFtKG9iaik7XHJcbiAgICAgICAgICBvYmpbJ2lzVmFsaWRVc2VyJ10gPSB0aGlzLnJldHVybklkcyhvYmo/LmFzc2lnbmVlLCAnZW50cnVzdGVkX3RvJylcclxuICAgICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICAgIDogZmFsc2U7XHJcbiAgICAgICAgICBvYmpbJ2lzVmFsaWQnXSA9XHJcbiAgICAgICAgICAgIG9ialsnaXNWYWxpZERhdGEnXSAmJlxyXG4gICAgICAgICAgICAhT2JqZWN0LnZhbHVlcyhvYmpbJ3VzZXJWYWxpZGF0ZVdpdGhQcm9ncmFtJ10pLmluY2x1ZGVzKGZhbHNlKSAmJlxyXG4gICAgICAgICAgICBvYmpbJ2lzVmFsaWRVc2VyJ107XHJcbiAgICAgICAgICByZXR1cm4gb2JqO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBvYmogPSB7XHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5TmFtZTogcmVwb3J0WzBdLFxyXG4gICAgICAgICAgICBhc3NpZ25vcjogcmVwb3J0WzFdLFxyXG4gICAgICAgICAgICBhc3NpZ25lZTogcmVwb3J0WzJdLFxyXG4gICAgICAgICAgICBhc3NpZ25lZVR5cGU6IHJlcG9ydFszXSxcclxuICAgICAgICAgICAga2V5UmVzcG9uc2liaWxpdHk6IHJlcG9ydFs0XSxcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDYXRlZ29yeTogbnVsbCxcclxuICAgICAgICAgICAgZnJlcXVlbmN5OiByZXBvcnRbNV0sXHJcbiAgICAgICAgICAgIHNldFJlbWluZGVyOiByZXBvcnRbNl0sXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVJlbWluZGVyOiByZXBvcnRbN10sXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiByZXBvcnRbOF0sXHJcbiAgICAgICAgICAgIHJlcG9ydENsYXNzOiByZXBvcnRbOV0sXHJcbiAgICAgICAgICAgIG9iamVjdGl2ZTogcmVwb3J0WzEwXSxcclxuICAgICAgICAgICAgbm90ZXM6IHJlcG9ydFsxMV0sXHJcbiAgICAgICAgICAgIGlzRm9ybWF0OiByZXBvcnRbMTJdLFxyXG4gICAgICAgICAgICBmb3JtYXRGb3JSZXNwb25zaWJpbGl0eTogcmVwb3J0WzEzXSxcclxuICAgICAgICAgICAgZG9jdW1lbnRFdmlkZW5jZVJlcXVpcmVkOiByZXBvcnRbMTRdLFxyXG4gICAgICAgICAgICAvLyBldmlkZW5jZU5vdGVzOiByZXBvcnRbMTRdLFxyXG4gICAgICAgICAgICAvLyBhc3Nlc3NtZW50czogcmVwb3J0WzE1XSxcclxuICAgICAgICAgICAgcmV2aWV3ZXI6IHJlcG9ydFsxNV0sXHJcbiAgICAgICAgICAgIHJldmlld1RvQmVDb21wbGV0ZWRXaXRoaW46IHJlcG9ydFsxNl0sXHJcbiAgICAgICAgICAgIHJldmlld1dpbGxCZUZhaWxlZEFmdGVyOiByZXBvcnRbMTddLFxyXG4gICAgICAgICAgICBvdmVyc2VlcjogcmVwb3J0WzE4XSxcclxuICAgICAgICAgICAgbm90aWZ5T25GYWlsdXJlOiByZXBvcnRbMTldLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIG9ialsnaXNWYWxpZERhdGEnXSA9IHRoaXMuaXNWYWxpZERhdGEob2JqKTtcclxuICAgICAgICAgIG9ialsndXNlclZhbGlkYXRlV2l0aFByb2dyYW0nXSA9IHRoaXMudmFsaWRhdGVEYXRhV2l0aFByb2dyYW0ob2JqKTtcclxuICAgICAgICAgIG9ialsnaXNWYWxpZFVzZXInXSA9IHRoaXMucmV0dXJuSWRzKG9iaj8uYXNzaWduZWUsICdlbnRydXN0ZWRfdG8nKVxyXG4gICAgICAgICAgICA/IHRydWVcclxuICAgICAgICAgICAgOiBmYWxzZTtcclxuICAgICAgICAgIG9ialsnaXNWYWxpZCddID0gb2JqWydpc1ZhbGlkRGF0YSddICYmIG9ialsnaXNWYWxpZFVzZXInXTtcclxuICAgICAgICAgIHJldHVybiBvYmo7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ29uQ29tcGxldGlvbic6IHtcclxuICAgICAgICBpZiAoaXNQcm9ncmFtKSB7XHJcbiAgICAgICAgICBvYmogPSB7XHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5TmFtZTogcmVwb3J0WzBdLFxyXG4gICAgICAgICAgICBwcm9ncmFtVHlwZTogcmVwb3J0WzFdLFxyXG4gICAgICAgICAgICBwcm9ncmFtOiByZXBvcnRbMl0sXHJcbiAgICAgICAgICAgIHByb2dyYW1DYXRlZ29yeTogcmVwb3J0WzNdLFxyXG4gICAgICAgICAgICBhc3NpZ25vcjogcmVwb3J0WzRdLFxyXG4gICAgICAgICAgICBhc3NpZ25lZTogcmVwb3J0WzVdLFxyXG4gICAgICAgICAgICBhc3NpZ25lZVR5cGU6IHJlcG9ydFs2XSxcclxuICAgICAgICAgICAga2V5UmVzcG9uc2liaWxpdHk6IHJlcG9ydFs3XSxcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDYXRlZ29yeTogbnVsbCxcclxuICAgICAgICAgICAgZnJlcXVlbmN5OiByZXBvcnRbOF0sXHJcbiAgICAgICAgICAgIHBhcmVudFJlc3BvbnNpYmlsaXR5OiByZXBvcnRbOV0sXHJcbiAgICAgICAgICAgIGR1ZURhdGU6IHJlcG9ydFsxMF0sXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5V2luZG93OiByZXBvcnRbMTFdLFxyXG4gICAgICAgICAgICBmYWlsZWRBZnRlcjogcmVwb3J0WzEyXSxcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IHJlcG9ydFsxM10sXHJcbiAgICAgICAgICAgIHJlcG9ydENsYXNzOiByZXBvcnRbMTRdLFxyXG4gICAgICAgICAgICBvYmplY3RpdmU6IHJlcG9ydFsxNV0sXHJcbiAgICAgICAgICAgIG5vdGVzOiByZXBvcnRbMTZdLFxyXG4gICAgICAgICAgICBpc0Zvcm1hdDogcmVwb3J0WzE3XSxcclxuICAgICAgICAgICAgZm9ybWF0Rm9yUmVzcG9uc2liaWxpdHk6IHJlcG9ydFsxOF0sXHJcbiAgICAgICAgICAgIGRvY3VtZW50RXZpZGVuY2VSZXF1aXJlZDogcmVwb3J0WzE5XSxcclxuICAgICAgICAgICAgLy8gZXZpZGVuY2VOb3RlczogcmVwb3J0WzE5XSxcclxuICAgICAgICAgICAgLy8gYXNzZXNzbWVudHM6IHJlcG9ydFsyMF0sXHJcbiAgICAgICAgICAgIHJldmlld2VyOiByZXBvcnRbMjBdLFxyXG4gICAgICAgICAgICByZXZpZXdUb0JlQ29tcGxldGVkV2l0aGluOiByZXBvcnRbMjFdLFxyXG4gICAgICAgICAgICByZXZpZXdXaWxsQmVGYWlsZWRBZnRlcjogcmVwb3J0WzIyXSxcclxuICAgICAgICAgICAgb3ZlcnNlZXI6IHJlcG9ydFsyM10sXHJcbiAgICAgICAgICAgIG5vdGlmeU9uRmFpbHVyZTogcmVwb3J0WzI0XSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBvYmpbJ2lzVmFsaWREYXRhJ10gPSB0aGlzLmlzVmFsaWREYXRhKG9iaik7XHJcbiAgICAgICAgICBvYmpbJ3VzZXJWYWxpZGF0ZVdpdGhQcm9ncmFtJ10gPSB0aGlzLnZhbGlkYXRlRGF0YVdpdGhQcm9ncmFtKG9iaik7XHJcbiAgICAgICAgICBvYmpbJ2lzVmFsaWRVc2VyJ10gPSB0aGlzLnJldHVybklkcyhvYmo/LmFzc2lnbmVlLCAnZW50cnVzdGVkX3RvJylcclxuICAgICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICAgIDogZmFsc2U7XHJcbiAgICAgICAgICBvYmpbJ2lzVmFsaWQnXSA9XHJcbiAgICAgICAgICAgIG9ialsnaXNWYWxpZERhdGEnXSAmJlxyXG4gICAgICAgICAgICAhT2JqZWN0LnZhbHVlcyhvYmpbJ3VzZXJWYWxpZGF0ZVdpdGhQcm9ncmFtJ10pLmluY2x1ZGVzKGZhbHNlKSAmJlxyXG4gICAgICAgICAgICBvYmo/LnBhcmVudFJlc3BvbnNpYmlsaXR5Py5sZW5ndGggJiZcclxuICAgICAgICAgICAgb2JqWydpc1ZhbGlkVXNlciddO1xyXG4gICAgICAgICAgcmV0dXJuIG9iajtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgb2JqID0ge1xyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eU5hbWU6IHJlcG9ydFswXSxcclxuICAgICAgICAgICAgYXNzaWdub3I6IHJlcG9ydFsxXSxcclxuICAgICAgICAgICAgYXNzaWduZWU6IHJlcG9ydFsyXSxcclxuICAgICAgICAgICAgYXNzaWduZWVUeXBlOiByZXBvcnRbM10sXHJcbiAgICAgICAgICAgIGtleVJlc3BvbnNpYmlsaXR5OiByZXBvcnRbNF0sXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IG51bGwsXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeTogcmVwb3J0WzVdLFxyXG4gICAgICAgICAgICBwYXJlbnRSZXNwb25zaWJpbGl0eTogcmVwb3J0WzZdLFxyXG4gICAgICAgICAgICBkdWVEYXRlOiByZXBvcnRbN10sXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5V2luZG93OiByZXBvcnRbOF0sXHJcbiAgICAgICAgICAgIGZhaWxlZEFmdGVyOiByZXBvcnRbOV0sXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiByZXBvcnRbMTBdLFxyXG4gICAgICAgICAgICByZXBvcnRDbGFzczogcmVwb3J0WzExXSxcclxuICAgICAgICAgICAgb2JqZWN0aXZlOiByZXBvcnRbMTJdLFxyXG4gICAgICAgICAgICBub3RlczogcmVwb3J0WzEzXSxcclxuICAgICAgICAgICAgaXNGb3JtYXQ6IHJlcG9ydFsxNF0sXHJcbiAgICAgICAgICAgIGZvcm1hdEZvclJlc3BvbnNpYmlsaXR5OiByZXBvcnRbMTVdLFxyXG4gICAgICAgICAgICBkb2N1bWVudEV2aWRlbmNlUmVxdWlyZWQ6IHJlcG9ydFsxNl0sXHJcbiAgICAgICAgICAgIC8vIGV2aWRlbmNlTm90ZXM6IHJlcG9ydFsxNl0sXHJcbiAgICAgICAgICAgIC8vIGFzc2Vzc21lbnRzOiByZXBvcnRbMTddLFxyXG4gICAgICAgICAgICByZXZpZXdlcjogcmVwb3J0WzE3XSxcclxuICAgICAgICAgICAgcmV2aWV3VG9CZUNvbXBsZXRlZFdpdGhpbjogcmVwb3J0WzE4XSxcclxuICAgICAgICAgICAgcmV2aWV3V2lsbEJlRmFpbGVkQWZ0ZXI6IHJlcG9ydFsxOV0sXHJcbiAgICAgICAgICAgIG92ZXJzZWVyOiByZXBvcnRbMjBdLFxyXG4gICAgICAgICAgICBub3RpZnlPbkZhaWx1cmU6IHJlcG9ydFsyMV0sXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgb2JqWydpc1ZhbGlkRGF0YSddID0gdGhpcy5pc1ZhbGlkRGF0YShvYmopO1xyXG4gICAgICAgICAgb2JqWyd1c2VyVmFsaWRhdGVXaXRoUHJvZ3JhbSddID0gdGhpcy52YWxpZGF0ZURhdGFXaXRoUHJvZ3JhbShvYmopO1xyXG4gICAgICAgICAgb2JqWydpc1ZhbGlkVXNlciddID0gdGhpcy5yZXR1cm5JZHMob2JqPy5hc3NpZ25lZSwgJ2VudHJ1c3RlZF90bycpXHJcbiAgICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgICA6IGZhbHNlO1xyXG4gICAgICAgICAgb2JqWydpc1ZhbGlkJ10gPVxyXG4gICAgICAgICAgICBvYmpbJ2lzVmFsaWREYXRhJ10gJiZcclxuICAgICAgICAgICAgb2JqPy5wYXJlbnRSZXNwb25zaWJpbGl0eT8ubGVuZ3RoICYmXHJcbiAgICAgICAgICAgIG9ialsnaXNWYWxpZFVzZXInXTtcclxuICAgICAgICAgIHJldHVybiBvYmo7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGRlZmF1bHQ6IHtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSXQgdGFrZXMgYSBzdHJpbmcsIHJlbW92ZXMgYWxsIHdoaXRlc3BhY2UsIGFuZCByZXR1cm5zIHRoZSBzdHJpbmdcclxuICAgKiBAcGFyYW0ge2FueX0gbmFtZSAtIHRoZSBuYW1lIG9mIHRoZSByZXNwb25zaWJpbGl0eVxyXG4gICAqIEByZXR1cm5zIHRoZSB0cmltbWVkTmFtZSB2YXJpYWJsZS5cclxuICAgKi9cclxuICBjaGVja1ZhbGlkUmVzcG9uc2liaWxpdHlOYW1lKG5hbWU6IGFueSkge1xyXG4gICAgY29uc3QgcmUgPSAvJm5ic3A7fDxicj4vZztcclxuICAgIGlmIChuYW1lKSB7XHJcbiAgICAgIHZhciB0cmltbWVkTmFtZSA9IG5hbWUudG9TdHJpbmcoKS5yZXBsYWNlKHJlLCAnJykudHJpbSgpO1xyXG4gICAgICB0cmltbWVkTmFtZSA9IHRyaW1tZWROYW1lLnJlcGxhY2UoLyAgKy9nLCAnICcpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRyaW1tZWROYW1lO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSWYgdGhlIHJlc3BvbnNpYmlsaXR5IG5hbWUgaXMgdmFsaWQsIGFuZCB0aGUgYXNzaWduZWUgYW5kIGFzc2lnbm9yIGFyZSBub3QgZW1wdHksIHRoZW4gcmV0dXJuXHJcbiAgICogdHJ1ZS4gT3RoZXJ3aXNlLCByZXR1cm4gZmFsc2VcclxuICAgKiBAcGFyYW0ge2FueX0gZGF0YSAtIGFueSAtIHRoZSBkYXRhIHRoYXQgaXMgYmVpbmcgcGFzc2VkIGluXHJcbiAgICogQHJldHVybnMgQSBib29sZWFuIHZhbHVlLlxyXG4gICAqL1xyXG4gIGlzVmFsaWREYXRhKGRhdGE6IGFueSkge1xyXG4gICAgY29uc3QgcmVzcG9uc2liaWxpdHkgPSB0aGlzLmNoZWNrVmFsaWRSZXNwb25zaWJpbGl0eU5hbWUoXHJcbiAgICAgIGRhdGE/LnJlc3BvbnNpYmlsaXR5TmFtZVxyXG4gICAgKT8ubGVuZ3RoXHJcbiAgICAgID8gdHJ1ZVxyXG4gICAgICA6IGZhbHNlO1xyXG4gICAgY29uc3QgYXNzaWduZWUgPSBkYXRhPy5hc3NpZ25lZT8ubGVuZ3RoID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgY29uc3QgZnJlcXVlbmN5ID0gZGF0YT8uZnJlcXVlbmN5Py5sZW5ndGggPyB0cnVlIDogZmFsc2U7XHJcbiAgICBpZiAoYXNzaWduZWUgJiYgcmVzcG9uc2liaWxpdHkgJiYgZnJlcXVlbmN5KSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSWYgdGhlIGFzc2lnbm9yIGlzIHRoZSBzYW1lIGFzIHRoZSBvdmVyc2VlciBvciB0aGUgTm90aWZ5T25GYWlsdXJlLCBvciBpZiB0aGUgYXNzaWdub3IgaXMgbm90IHNldFxyXG4gICAqIGFuZCB0aGUgZGVmYXVsdE93bmVyIGlzIHRoZSBzYW1lIGFzIHRoZSBvdmVyc2VlciBvciB0aGUgTm90aWZ5T25GYWlsdXJlLCBvciBpZiB0aGUgYXNzaWduZWUgaXMgdGhlXHJcbiAgICogc2FtZSBhcyB0aGUgcmV2aWV3ZXIsIG92ZXJzZWVyLCBvciBOb3RpZnlPbkZhaWx1cmUsIG9yIGlmIHRoZSBhc3NpZ25lZSBpcyBub3Qgc2V0IGFuZCB0aGVcclxuICAgKiBkZWZhdWx0T3duZXIgaXMgdGhlIHNhbWUgYXMgdGhlIG92ZXJzZWVyIG9yIHRoZSBOb3RpZnlPbkZhaWx1cmUsIG9yIGlmIHRoZSByZXZpZXdlciBpcyB0aGUgc2FtZSBhc1xyXG4gICAqIHRoZSBvdmVyc2VlciBvciB0aGUgTm90aWZ5T25GYWlsdXJlLCBvciBpZiB0aGUgYXNzaWduZWUgaXMgbm90IHNldCwgdGhlbiByZXR1cm4gZmFsc2UuIE90aGVyd2lzZSxcclxuICAgKiByZXR1cm4gdHJ1ZVxyXG4gICAqIEBwYXJhbSB7YW55fSBkYXRhIC0gYW55IC0gdGhpcyBpcyB0aGUgZGF0YSB0aGF0IGlzIHBhc3NlZCBpbiBmcm9tIHRoZSBmb3JtLlxyXG4gICAqIEByZXR1cm5zIEEgYm9vbGVhbiB2YWx1ZS5cclxuICAgKi9cclxuICBpc1ZhbGlkVXNlcnMoZGF0YTogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoXHJcbiAgICAgIChkYXRhPy5hc3NpZ25vciAmJlxyXG4gICAgICAgIChkYXRhPy5hc3NpZ25vciA9PSBkYXRhPy5vdmVyc2VlciB8fFxyXG4gICAgICAgICAgZGF0YT8uYXNzaWdub3IgPT0gZGF0YT8ubm90aWZ5T25GYWlsdXJlKSkgfHxcclxuICAgICAgKCFkYXRhPy5hc3NpZ25vciAmJlxyXG4gICAgICAgICh0aGlzLmRlZmF1bHRPd25lciA9PSBkYXRhPy5vdmVyc2VlciB8fFxyXG4gICAgICAgICAgdGhpcy5kZWZhdWx0T3duZXIgPT0gZGF0YT8ubm90aWZ5T25GYWlsdXJlKSkgfHxcclxuICAgICAgKGRhdGE/LmFzc2lnbmVlICYmXHJcbiAgICAgICAgKGRhdGE/LmFzc2lnbmVlID09IGRhdGE/LnJldmlld2VyIHx8XHJcbiAgICAgICAgICBkYXRhPy5hc3NpZ25lZSA9PSBkYXRhPy5vdmVyc2VlciB8fFxyXG4gICAgICAgICAgZGF0YT8uYXNzaWduZWUgPT0gZGF0YT8ubm90aWZ5T25GYWlsdXJlKSkgfHxcclxuICAgICAgKCFkYXRhPy5hc3NpZ25lZSAmJlxyXG4gICAgICAgICh0aGlzLmRlZmF1bHRPd25lciA9PSBkYXRhPy5vdmVyc2VlciB8fFxyXG4gICAgICAgICAgdGhpcy5kZWZhdWx0T3duZXIgPT0gZGF0YT8ubm90aWZ5T25GYWlsdXJlKSkgfHxcclxuICAgICAgKGRhdGE/LnJldmlld2VyICYmXHJcbiAgICAgICAgKGRhdGE/LnJldmlld2VyID09IGRhdGE/Lm92ZXJzZWVyIHx8XHJcbiAgICAgICAgICBkYXRhPy5yZXZpZXdlciA9PSBkYXRhPy5ub3RpZnlPbkZhaWx1cmUpKSB8fFxyXG4gICAgICAhZGF0YT8uYXNzaWduZWVcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEl0IHRha2VzIGluIGEgZGF0YSBvYmplY3QgYW5kIHJldHVybnMgYW4gb2JqZWN0IHdpdGggNCBib29sZWFuIHByb3BlcnRpZXMuXHJcbiAgICogVGhlIGJvb2xlYW4gcHJvcGVydGllcyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWVzIG9mIHRoZSBkYXRhIG9iamVjdC5cclxuICAgKiBAcGFyYW0ge2FueX0gZGF0YSAtIGFueSA9IHtcclxuICAgKiBAcmV0dXJucyB7XHJcbiAgICogICBpc1ZhbGlkQXNzaWduZWU6IHRydWUsXHJcbiAgICogICBpc1ZhbGlkQXNzaWdub3I6IHRydWUsXHJcbiAgICogICBpc1ZhbGlkUmV2aWV3ZXI6IHRydWUsXHJcbiAgICogICBpc1ZhbGlkT3ZlcnNlZXI6IHRydWVcclxuICAgKiB9XHJcbiAgICovXHJcbiAgdmFsaWRhdGVEYXRhV2l0aFByb2dyYW0oZGF0YTogYW55KTogYW55IHtcclxuICAgIGNvbnN0IHByb2dyYW0gPSB0aGlzLnRlbXBsYXRlSW5mbz8uY2F0ZWdvcnlMaXN0Py5maWx0ZXIoXHJcbiAgICAgIChwcm9ncmFtOiBhbnkpID0+IHByb2dyYW0/LnByb2dyYW1OYW1lID09PSBkYXRhPy5wcm9ncmFtXHJcbiAgICApO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRBc3NpZ25lZSA9IHRoaXMudGVtcGxhdGVJbmZvPy5hc3NpZ25lZXNMaXN0Py5maWx0ZXIoXHJcbiAgICAgIChhc3NpZ25lZTogYW55KSA9PiBhc3NpZ25lZT8ubmFtZUFuZEVtYWlsID09PSBkYXRhPy5hc3NpZ25lZVxyXG4gICAgKTtcclxuICAgIGNvbnN0IHNlbGVjdGVkQXNzaWdub3IgPSB0aGlzLnRlbXBsYXRlSW5mbz8uYXNzaWdub3JzTGlzdD8uZmlsdGVyKFxyXG4gICAgICAoYXNzaWdub3I6IGFueSkgPT4gYXNzaWdub3I/Lm5hbWVBbmRFbWFpbCA9PT0gZGF0YT8uYXNzaWdub3JcclxuICAgICk7XHJcbiAgICBjb25zdCBzZWxlY3RlZFJldmlld2VyID0gdGhpcy50ZW1wbGF0ZUluZm8/LnJldmlld2VyTGlzdD8uZmlsdGVyKFxyXG4gICAgICAocmV2aWV3ZXI6IGFueSkgPT4gcmV2aWV3ZXI/Lm5hbWVBbmRFbWFpbCA9PT0gZGF0YT8ucmV2aWV3ZXJcclxuICAgICk7XHJcbiAgICBjb25zdCBzZWxlY3RlZE92ZXJzZWVyID0gdGhpcy50ZW1wbGF0ZUluZm8/LnJldmlld2VyTGlzdD8uZmlsdGVyKFxyXG4gICAgICAob3ZlcnNlZXI6IGFueSkgPT4gb3ZlcnNlZXI/Lm5hbWVBbmRFbWFpbCA9PT0gZGF0YT8ub3ZlcnNlZXJcclxuICAgICk7XHJcbiAgICBjb25zdCBzZWxlY3RlZE5vdGlmeU9uRmFpbHVyZSA9IHRoaXMudGVtcGxhdGVJbmZvPy5yZXZpZXdlckxpc3Q/LmZpbHRlcihcclxuICAgICAgKG5vdGlmeU9uRmFpbHVyZTogYW55KSA9PlxyXG4gICAgICAgIG5vdGlmeU9uRmFpbHVyZT8ubmFtZUFuZEVtYWlsID09PSBkYXRhPy5ub3RpZnlPbkZhaWx1cmVcclxuICAgICk7XHJcbiAgICBsZXQgaXNWYWxpZEFzc2lnbmVlID0gdHJ1ZTtcclxuICAgIGxldCBpc1ZhbGlkQXNzaWdub3IgPSB0cnVlO1xyXG4gICAgbGV0IGlzVmFsaWRSZXZpZXdlciA9IHRydWU7XHJcbiAgICBsZXQgaXNWYWxpZE92ZXJzZWVyID0gdHJ1ZTtcclxuICAgIGxldCBpc1ZhbGlkTm90aWZ5T25GYWlsdXJlID0gdHJ1ZTtcclxuICAgIGlmIChwcm9ncmFtICYmIHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uKSB7XHJcbiAgICAgIGlmIChwcm9ncmFtWzBdPy5hc3NpZ25lZT8ubGVuZ3RoICYmIHNlbGVjdGVkQXNzaWduZWU/Lmxlbmd0aCkge1xyXG4gICAgICAgIGlzVmFsaWRBc3NpZ25lZSA9IHByb2dyYW1bMF0/LmFzc2lnbmVlPy5pbmNsdWRlcyhcclxuICAgICAgICAgIHNlbGVjdGVkQXNzaWduZWVbMF0/Lm15X21lbWJlcl9pZFxyXG4gICAgICAgIClcclxuICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgOiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocHJvZ3JhbVswXT8ucmV2aWV3ZXI/Lmxlbmd0aCAmJiBzZWxlY3RlZFJldmlld2VyPy5sZW5ndGgpIHtcclxuICAgICAgICBpc1ZhbGlkUmV2aWV3ZXIgPSBwcm9ncmFtWzBdPy5yZXZpZXdlcj8uaW5jbHVkZXMoXHJcbiAgICAgICAgICBzZWxlY3RlZFJldmlld2VyWzBdPy5teV9tZW1iZXJfaWRcclxuICAgICAgICApXHJcbiAgICAgICAgICA/IHRydWVcclxuICAgICAgICAgIDogZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHByb2dyYW1bMF0/Lm92ZXJzZWVyPy5sZW5ndGggJiYgc2VsZWN0ZWRPdmVyc2Vlcj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgaXNWYWxpZE92ZXJzZWVyID0gcHJvZ3JhbVswXT8ub3ZlcnNlZXI/LmluY2x1ZGVzKFxyXG4gICAgICAgICAgc2VsZWN0ZWRPdmVyc2VlclswXT8ubXlfbWVtYmVyX2lkXHJcbiAgICAgICAgKVxyXG4gICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICA6IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwcm9ncmFtWzBdPy5vdmVyc2Vlcj8ubGVuZ3RoICYmIHNlbGVjdGVkTm90aWZ5T25GYWlsdXJlPy5sZW5ndGgpIHtcclxuICAgICAgICBpc1ZhbGlkTm90aWZ5T25GYWlsdXJlID0gcHJvZ3JhbVswXT8ub3ZlcnNlZXI/LmluY2x1ZGVzKFxyXG4gICAgICAgICAgc2VsZWN0ZWROb3RpZnlPbkZhaWx1cmVbMF0/Lm15X21lbWJlcl9pZFxyXG4gICAgICAgIClcclxuICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgOiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaXNWYWxpZEFzc2lnbmVlOiBpc1ZhbGlkQXNzaWduZWUsXHJcbiAgICAgIGlzVmFsaWRBc3NpZ25vcjogaXNWYWxpZEFzc2lnbm9yLFxyXG4gICAgICBpc1ZhbGlkUmV2aWV3ZXI6IGlzVmFsaWRSZXZpZXdlcixcclxuICAgICAgaXNWYWxpZE92ZXJzZWVyOiBpc1ZhbGlkT3ZlcnNlZXIsXHJcbiAgICAgIGlzVmFsaWROb3RpZnlPbkZhaWx1cmU6IGlzVmFsaWROb3RpZnlPbkZhaWx1cmUsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSXQgdGFrZXMgdHdvIHN0cmluZ3MgYXMgYXJndW1lbnRzLCBhbmQgcmV0dXJucyBhbiBvYmplY3Qgd2l0aCB0aHJlZSBwcm9wZXJ0aWVzXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHByb2dyYW1OYW1lIC0gc3RyaW5nIC0mZ3Q7IE5hbWUgb2YgdGhlIHByb2dyYW1cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2NoaWxlUHJvZ3JhbV0gLSBzdHJpbmcgPSZndDsgdGhpcyBpcyB0aGUgbmFtZSBvZiB0aGUgc3ViLXByb2dyYW1cclxuICAgKiBAcmV0dXJucyB7XHJcbiAgICogICBwcm9ncmFtSWQ6IDEsXHJcbiAgICogICBjaGlsZFByb2dyYW1JZDogMixcclxuICAgKiAgIGNhdGVnb3J5SWQ6ICcxLDInXHJcbiAgICogfVxyXG4gICAqL1xyXG4gIGdldFByb2dyYW1JZChwcm9ncmFtTmFtZTogc3RyaW5nLCBjaGlsZVByb2dyYW0/OiBzdHJpbmcpOiBhbnkge1xyXG4gICAgY29uc3QgcHJvZ3JhbSA9IHRoaXMudGVtcGxhdGVJbmZvPy5jYXRlZ29yeUxpc3Q/LmZpbHRlcihcclxuICAgICAgKHByb2dyYW06IGFueSkgPT4gcHJvZ3JhbT8ucHJvZ3JhbU5hbWUgPT09IHByb2dyYW1OYW1lXHJcbiAgICApO1xyXG4gICAgbGV0IHN1YlByb2dyYW07XHJcbiAgICBsZXQgc3ViUHJvZ3JhbUlkO1xyXG4gICAgbGV0IGNhdGVnb3J5SWQ7XHJcbiAgICBpZiAoY2hpbGVQcm9ncmFtPy5sZW5ndGggJiYgcHJvZ3JhbT8ubGVuZ3RoKSB7XHJcbiAgICAgIHN1YlByb2dyYW0gPSBwcm9ncmFtWzBdPy5jaGlsZENhdGVnb3J5Py5maWx0ZXIoXHJcbiAgICAgICAgKHN1YlByb2dyYW06IGFueSkgPT4gc3ViUHJvZ3JhbT8ubmFtZSA9PT0gY2hpbGVQcm9ncmFtXHJcbiAgICAgICk7XHJcbiAgICAgIHN1YlByb2dyYW1JZCA9IHN1YlByb2dyYW0/Lmxlbmd0aCA/IHN1YlByb2dyYW1bMF0/LmlkIDogdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdWJQcm9ncmFtSWQgJiYgcHJvZ3JhbT8ubGVuZ3RoKSB7XHJcbiAgICAgIGNhdGVnb3J5SWQgPVxyXG4gICAgICAgIHByb2dyYW1bMF0/LnByb2dyYW1JZD8udG9TdHJpbmcoKSArICcsJyArIHN1YlByb2dyYW1JZD8udG9TdHJpbmcoKTtcclxuICAgIH0gZWxzZSBpZiAocHJvZ3JhbT8ubGVuZ3RoKSB7XHJcbiAgICAgIGNhdGVnb3J5SWQgPSBwcm9ncmFtWzBdPy5wcm9ncmFtSWQ/LnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBwcm9ncmFtSWQ6IHByb2dyYW0/Lmxlbmd0aCA/IHByb2dyYW1bMF0/LnByb2dyYW1JZCA6IHVuZGVmaW5lZCxcclxuICAgICAgY2hpbGRQcm9ncmFtSWQ6IHN1YlByb2dyYW1JZCxcclxuICAgICAgY2F0ZWdvcnlJZDogY2F0ZWdvcnlJZCxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJdCB0YWtlcyBhIHN0cmluZyBhcyBhbiBhcmd1bWVudCBhbmQgcmV0dXJucyBhIHN0cmluZy5cclxuICAgKiBAcGFyYW0ge2FueX0gaXRlbSAtIHRoaXMgaXMgdGhlIG5hbWUgb2YgdGhlIGdyb3VwIHRoYXQgaXMgc2VsZWN0ZWQgZnJvbSB0aGUgZHJvcGRvd24uXHJcbiAgICogaXQgd2lsbCByZXR1cm4gZW1wbG95ZWUgaWQgaW4gdGhpcyBmb3JtICcxMjM0LDIzNDUnLlxyXG4gICAqL1xyXG4gIGdldEVtcGxveWVlSWRGcm9tR3JvdXAoaXRlbTogYW55KSB7XHJcbiAgICBsZXQgZW1wSWQ6IGFueSA9IFtdO1xyXG4gICAgbGV0IGVtcGxveWVlX2lkOiBhbnkgPSBbXTtcclxuICAgIHRoaXMudGVtcGxhdGVJbmZvPy5hc3NpZ25lZXNMaXN0Py5mb3JFYWNoKChlbkVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZW5FbGVtZW50Py5uYW1lQW5kRW1haWwgPT0gaXRlbSkge1xyXG4gICAgICAgIGVtcElkID0gZW5FbGVtZW50Py5teV9tZW1iZXJfaWQ7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKGVtcElkPy5sZW5ndGgpIHtcclxuICAgICAgZW1wSWQ/LmZvckVhY2goKGlkOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mbz8ucmV2aWV3ZXJMaXN0LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHVzZXI/Lm15X21lbWJlcl9pZCA9PSBpZCkge1xyXG4gICAgICAgICAgICBlbXBsb3llZV9pZD8ucHVzaCh1c2VyPy5lbXBsb3llZV9pZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGVtcGxveWVlX2lkPy50b1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSWYgdGhlIGl0ZW0gaXMgYSBncm91cCwgcmV0dXJuIHRydWUsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICogQHBhcmFtIHthbnl9IGl0ZW0gLSBhbnkgLSB0aGUgaXRlbSB0aGF0IGlzIGJlaW5nIGNoZWNrZWRcclxuICAgKi9cclxuICBpc0dyb3VwU2VsZWN0ZWQoaXRlbTogYW55KSB7XHJcbiAgICBsZXQgaXNHcm91cCA9IGZhbHNlO1xyXG4gICAgdGhpcy50ZW1wbGF0ZUluZm8uYXNzaWduZWVzTGlzdC5mb3JFYWNoKChlbkVsZW1lbnQ6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBlbkVsZW1lbnQubmFtZUFuZEVtYWlsID09IGl0ZW0gJiZcclxuICAgICAgICAoaXRlbT8uaW5jbHVkZXMoJ1VzZXJzKScpIHx8IGl0ZW0/LmluY2x1ZGVzKCdVc2VyKScpKSAmJlxyXG4gICAgICAgIHR5cGVvZiBlbkVsZW1lbnQ/Lm15X21lbWJlcl9pZCA9PSAnb2JqZWN0J1xyXG4gICAgICApIHtcclxuICAgICAgICBpc0dyb3VwID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gaXNHcm91cDtcclxuICB9XHJcbn1cclxuIiwiPCEtLSA8ZGl2IGNsYXNzPVwiYWRkLW11bHRpcGxlLXJpc2tcIiBbYXR0ci5pZF09XCInc2Nyb2xsUmVmZXJlbmNlJ1wiID5cclxuICAgIDwhLSAtIG1haW4gY29udGFpbmVyIHN0YXJ0cyBoZXJlIC0gLT5cclxuICAgIDxkaXYgY2xhc3M9XCJhZGQtbXVsdGlwbGUtcmlzay1ib2R5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZC1tdWx0aXBsZS1yaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3NwcmVhZHNoZWV0LW11bHRpcGxlLWNhdGVnb3J5LnN2Z1wiIGFsdD1cIlwiIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8aDQ+WW91IGNhbiBlbnRydXN0IG11bHRpcGxlIHJlc3BvbnNpYmlsaXRpZXMgaW4ganVzdCB0d28gZWFzeSBzdGVwczo8L2g0PlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0XCI+XHJcbiAgICAgICAgICAgICAgICA8bGk+RG93bmxvYWQgdGhlIHRlbXBsYXRlIGFuZCBmaWxsIGluIHRoZSBkZXRhaWxzLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+VXBsb2FkIHRoZSAueGxzeCBmaWxlIGFuZCB5b3XigJlyZSBnb29kIHRvIGdvITwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcblxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZG93bmxvYWRcIiAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnTk9UX0RPV05MT0FESU5HJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZFRlbXBsYXRlKClcIiB0eXBlPVwiYnV0dG9uXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWI7PC9pPiBEb3dubG9hZCBUZW1wbGF0ZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnVsay1idG4tcHJvZ3Jlc3NcIiAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnRE9XTkxPQURJTkcnXCI+XHJcbiAgICAgICAgICAgICAgICBEb3dubG9hZCBpbiBQcm9ncmVzc1xyXG4gICAgICAgICAgICAgICAgPGFwcC1saW5lLWxvYWRlciBbbG9hZGVySGVpZ2h0XT1cIicyJ1wiPjwvYXBwLWxpbmUtbG9hZGVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnRE9XTkxPQURFRCdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFjOzwvaT5Eb3dubG9hZCBDb21wbGV0ZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1bGstYnRuLWFnYWluXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgSXMgdGhlIGZpbGUgbm90IGRvd25sb2FkZWQ/XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZG93bmxvYWRUZW1wbGF0ZSgpXCI+UmV0cnkgRG93bmxvYWQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJpc1dyb25nRmlsZSB8fCBpc1dyb25nRm9ybWF0fHwgaXNGaWxlRW1wdHlcIlxyXG4gICAgICAgICAgICA+e3tlcnJvck1lc3NhZ2V9fTwvcD4gIFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiAtLT5cclxuPGFwcC1idWxrLXJlc3BvbnNpYmlsaXR5LXZpZXcgKm5nSWY9XCJzaG93RXhjZWxcIlxyXG4gICAgW3Jlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZF09XCJyZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWRcIlxyXG4gICAgW2J1bGtVcGxvYWRdPVwiYnVsa1VwbG9hZFwiXHJcbiAgICBbZmlsZU5hbWVdPVwiZmlsZU5hbWVcIlxyXG4gICAgW2xvYWRlcl09XCJsb2FkZXJcIlxyXG4gICAgW2RlZmF1bHRPd25lcl09XCJkZWZhdWx0T3duZXJcIlxyXG4gICAgW3RhYlR5cGVdPVwidGFiVHlwZVwiXHJcbiAgICBbYnVsa1VwbG9hZF09XCJidWxrVXBsb2FkXCJcclxuICAgIChzdWJtaXRSZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQpPVwic3VibWl0UmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkKClcIlxyXG4gICAgKHNlbGVjdGVkVGFiKT1cInNlbGVjdGVkVGFiKCRldmVudClcIlxyXG4gICAgKGNhbmNlbCk9XCJyZXNldCgpXCJcclxuICAgIFtyZXNwb25zaWJpbGl0eVR5cGVdPVwiJ211bHRpVGFiJ1wiPlxyXG48L2FwcC1idWxrLXJlc3BvbnNpYmlsaXR5LXZpZXc+XHJcbjxhcHAtbG9hZGVyLWlubGluZSAqbmdJZj1cImxvYWRlclwiPjwvYXBwLWxvYWRlci1pbmxpbmU+XHJcblxyXG48aW5wdXQgdHlwZT1cImZpbGVcIiBbKG5nTW9kZWwpXT1cImZpbGVWYWx1ZVwiIGlkPVwiZmlsZUlucHV0XCIgY2xhc3M9XCJoaWRkZW4taW5wdXRcIiBhY2NlcHQ9XCIueGxzeFwiIChjaGFuZ2UpPVwidXBsb2FkZWRGaWxlKCRldmVudClcIiBtdWx0aXBsZSAvPlxyXG48YXBwLXNtaWxleS1kaWFsb2ctaW5saW5lICpuZ0lmPVwic2hvd1NtaWxleVwiIFttZXNzYWdlXT1cInNtaWxleU1lc3NhZ2VcIiBbYWN0aW9uQnV0dG9uc109XCJhY3Rpb25CdXR0b25zXCIgKGFjdGlvbik9XCJhY3Rpb24oJGV2ZW50KVwiIChjbG9zZVNtaWxleSk9XCJjbG9zZVNtaWxleSgkZXZlbnQpXCI+PC9hcHAtc21pbGV5LWRpYWxvZy1pbmxpbmU+Il19