@sachin9822/reports-lib 0.0.153 → 0.0.155

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.
@@ -710,7 +710,11 @@ export class SearchFilterComponent {
710
710
  if (this.ReportName == "Accounting") {
711
711
  const formValue = this.searchForm.value;
712
712
  return {
713
- modal: formValue,
713
+ modal: {
714
+ ...formValue,
715
+ fromDate: this.toIsoFormat(formValue.fromDate),
716
+ toDate: this.toIsoFormat(formValue.toDate),
717
+ },
714
718
  sysUserID: this.currentUser
715
719
  };
716
720
  }
@@ -870,4 +874,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
870
874
  }], searchClicked: [{
871
875
  type: Output
872
876
  }] } });
873
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yZXBvcnRzLWxpYi9zcmMvbGliL3NoYXJlZC9zZWFyY2gtZmlsdGVyL3NlYXJjaC1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmVwb3J0cy1saWIvc3JjL2xpYi9zaGFyZWQvc2VhcmNoLWZpbHRlci9zZWFyY2gtZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLHFCQUFxQixFQUE4RCxNQUFNLG1FQUFtRSxDQUFDO0FBQ3RLLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFXM0MsTUFBTSxPQUFPLHFCQUFxQjtJQXlEaEMsWUFDVSxhQUE0QixFQUM1QixFQUFlLEVBQ2YsTUFBcUI7UUFGckIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLFdBQU0sR0FBTixNQUFNLENBQWU7UUExRHJCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUdsRCx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFDN0IsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFF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b250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPbkRlc3Ryb3ksIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRMb2FkaW5nU3RhdGUsIENsaWVudCwgQnJhbmNoLCBDdXJyZW5jeSwgUHJvZHVjdCwgVHJhbnNhY3Rpb25TdGF0dXMsIFVzZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMvdHJhbnNhY3Rpb24tZW5xdWlyeS1yZXBvcnQvdHJhbnNhY3Rpb24tZW5xdWlyeS5tb2RlbCc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBSZXBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVwb3J0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29uZmlnLnNlcnZpY2UnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXNlYXJjaC1maWx0ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBTZWFyY2hGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgUmVwb3J0TmFtZSE6IHN0cmluZztcclxuICBAT3V0cHV0KCkgc2VhcmNoQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBzZWFyY2hGb3JtITogRm9ybUdyb3VwO1xyXG4gIGZvcm1WYWxpZGF0aW9uRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgbG9hZGluZ1N0YXRlOiBDb21wb25lbnRMb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGUuQ29tcGxldGU7XHJcbiAgQ29tcG9uZW50TG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlO1xyXG4gIGhhc1NlYXJjaGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfZXJyb3JNZXNzYWdlOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgY3VycmVudFVzZXI6IHN0cmluZyA9ICcnO1xyXG4gIHVzZXJuYW1lTWlzc2luZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRva2VuID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnYWNjZXNzX3Rva2VuJyk7XHJcbiAgYXBwbGljYXRpb25UeXBlID0gJ2V6cmVtaXQnO1xyXG4gIGNvbXBhbnlDb2RlID0gJ0JIJztcclxuICBzZXJ2aWNlVXJsOiBzdHJpbmc7XHJcbiAgcHVibGljIGlzT3BlbiA9IGZhbHNlO1xyXG5cclxuICBjbGllbnRzMTogQ2xpZW50W10gPSBbXTtcclxuICBicmFuY2hlczogQnJhbmNoW10gPSBbXTtcclxuICB1c2VyczogVXNlcltdID0gW107XHJcbiAgY3VycmVuY2llczogQ3VycmVuY3lbXSA9IFtdO1xyXG4gIHByb2R1Y3RzOiBQcm9kdWN0W10gPSBbXTtcclxuICB0cmFuc2FjdGlvblN0YXR1c2VzOiBUcmFuc2FjdGlvblN0YXR1c1tdID0gW107XHJcbiAgc2VsZWN0ZWRTdGF0dXNlczogc3RyaW5nW10gPSBbXTtcclxuICBzaG93U3RhdHVzRHJvcGRvd246IGJvb2xlYW4gPSBmYWxzZTtcclxuICB2aXNpYmxlRmllbGRLZXlzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHBhcmFtczogYW55O1xyXG4gIGNvdW50cmllczogYW55W10gPSBbXTtcclxuICB0cmFuc2FjdGlvblByb2R1Y3RzOiBhbnlbXSA9IFtdO1xyXG4gIGRhdGVUeXBlOiBhbnkgPSAxO1xyXG4gIGRhdGU6IGFueTtcclxuXHJcbiAgLy8gRmllbGQgdmlzaWJpbGl0eSBtYXAsICdmcm9tRGF0ZScsICd0b0RhdGUnLCdwcm9kdWN0JywndXNlcklkJywnY3VycmVuY3knLCd0cmFuc2FjdGlvblN0YXR1cycsJ3RyYW5zYWN0aW9uTm8nXHJcbiAgdmlzaWJsZUZpZWxkc01hcDogeyBbcmVwb3J0OiBzdHJpbmddOiBzdHJpbmdbXSB9ID0ge1xyXG4gICAgJ1RyYW5zYWN0aW9uIEVucXVpcnknOiBbJ2NsaWVudCcsICdmcm9tRGF0ZScsICd0b0RhdGUnLCAnYnJhbmNoJywgJ3Byb2R1Y3QnLCAnY3VycmVuY3knLCAndHJhbnNhY3Rpb25TdGF0dXMnLCAndHJhbnNhY3Rpb25ObyddLFxyXG4gICAgJ0ZDIExlZGdlcic6IFsnY2xpZW50JywgJ2Zyb21EYXRlJywgJ3RvRGF0ZScsICdjdXJyZW5jeScsICdwcm9kdWN0J10sXHJcbiAgICAnQnJhbmNoIEFjdGl2aXR5IFNlbmQnOiBbJ2NsaWVudCcsICdmcm9tRGF0ZScsICd0b0RhdGUnLCAnYnJhbmNoJywgJ3RyYW5zYWN0aW9uUHJvZHVjdCcsICdjdXJyZW5jeScsICd0cmFuc2FjdGlvblN0YXR1cycsICdzZW5kQ291bnRyeScsICdyZWNlaXZlQ291bnRyeSddLFxyXG4gICAgJ0FDQyBHTCBEZXRhaWxzIEVucXVpcnknOiBbJ2RhdGVUeXBlJywgJ2RhdGUnXSxcclxuICAgICdCcmFuY2ggQWN0aXZpdHkgUmVjZWl2ZSc6IFsnY2xpZW50JywgJ2Zyb21EYXRlJywgJ3RvRGF0ZScsICdicmFuY2gnLCAndHJhbnNhY3Rpb25Qcm9kdWN0JywgJ2N1cnJlbmN5JywgJ3RyYW5zYWN0aW9uU3RhdHVzJywgJ3NlbmRDb3VudHJ5JywgJ3JlY2VpdmVDb3VudHJ5J10sXHJcbiAgICAnQ2FuY2VsbGF0aW9uIFRyYW5zYWN0aW9uJzpbJ2NsaWVudCcsJ2Zyb21EYXRlJywndG9EYXRlJywnYnJhbmNoJywnc2VuZENvdW50cnknLCdyZWNlaXZlQ291bnRyeScsJ3Byb2R1Y3QnLCdyZWNlaXZlQ3VycmVuY3knXSxcclxuICAgICdBY2NvdW50aW5nJzogWydjbGllbnQnLCAnZnJvbURhdGUnLCAndG9EYXRlJywgJ2JyYW5jaCcsICd0cmFuc2FjdGlvblByb2R1Y3QnLCAnY3VycmVuY3knLCAndHJhbnNhY3Rpb25TdGF0dXMnLCAnc2VuZENvdW50cnknLCAncmVjZWl2ZUNvdW50cnknXSxcclxuXHJcbiAgICAvLyBBZGQgbW9yZSByZXBvcnQgdHlwZXMgaGVyZVxyXG4gIH07XHJcblxyXG4gIGdldCB2aXNpYmxlRmllbGRzKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiB0aGlzLnZpc2libGVGaWVsZHNNYXBbdGhpcy5SZXBvcnROYW1lXSB8fCBbXTtcclxuICB9XHJcblxyXG4gIGlzRmllbGRWaXNpYmxlKGZpZWxkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnZpc2libGVGaWVsZHMuaW5jbHVkZXMoZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlcG9ydFNlcnZpY2U6IFJlcG9ydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgY29uZmlnOiBDb25maWdTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLnNlcnZpY2VVcmwgPSB0aGlzLmNvbmZpZy5nZXQuc2VydmljZVVybDtcclxuICAgIGxldCBmb3NzaWxVc2VyID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnZm9zc2lsdXNlcm5hbWUnKTtcclxuICAgIGxldCBlenJlbWl0VXNlciA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2V6cmVtaXR1c2VybmFtZScpO1xyXG5cclxuICAgIGlmIChmb3NzaWxVc2VyKSB0aGlzLmN1cnJlbnRVc2VyID0gZm9zc2lsVXNlcjtcclxuICAgIGVsc2UgaWYgKGV6cmVtaXRVc2VyKSB0aGlzLmN1cnJlbnRVc2VyID0gZXpyZW1pdFVzZXI7XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy51c2VybmFtZU1pc3NpbmcgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jdXJyZW50VXNlciA9IHRoaXMuY3VycmVudFVzZXIucmVwbGFjZSgvXltcIiddKC4qKVtcIiddJC8sICckMScpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNoZWNrUmVwb3J0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1JlcG9ydCgpIHtcclxuICAgIGlmICh0aGlzLlJlcG9ydE5hbWUgPT0gXCJUcmFuc2FjdGlvbiBFbnF1aXJ5XCIpIHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplRm9ybSgpO1xyXG4gICAgICB0aGlzLnN1YnNjcmliZVRvRGF0ZUNoYW5nZXMoKTtcclxuICAgICAgdGhpcy5sb2FkSW5pdGlhbERhdGEoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLlJlcG9ydE5hbWUgPT0gXCJCcmFuY2ggQWN0aXZpdHkgU2VuZFwiKSB7XHJcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm0oKTtcclxuICAgICAgdGhpcy5sb2FkSW5pdGlhbERhdGEoKTtcclxuICAgICAgdGhpcy5zdWJzY3JpYmVUb0RhdGVDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5SZXBvcnROYW1lID09IFwiQUNDIEdMIERldGFpbHMgRW5xdWlyeVwiKSB7XHJcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm0oKTtcclxuICAgIH1cclxuICAgIGlmKHRoaXMuUmVwb3J0TmFtZSA9PSBcIkNhbmNlbGxhdGlvbiBUcmFuc2FjdGlvblwiKXtcclxuICAgICAgdGhpcy5pbml0aWFsaXplRm9ybSgpO1xyXG4gICAgICB0aGlzLmxvYWRJbml0aWFsRGF0YSgpO1xyXG4gICAgICB0aGlzLnN1YnNjcmliZVRvRGF0ZUNoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLlJlcG9ydE5hbWUgPT09IFwiQnJhbmNoIEFjdGl2aXR5IFJlY2VpdmVcIikge1xyXG4gICAgICB0aGlzLmluaXRpYWxpemVGb3JtKCk7XHJcbiAgICAgIHRoaXMubG9hZEluaXRpYWxEYXRhKCk7XHJcbiAgICAgIHRoaXMuc3Vic2NyaWJlVG9EYXRlQ2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuUmVwb3J0TmFtZSA9PSBcIkFjY291bnRpbmdcIikge1xyXG4gICAgICB0aGlzLmluaXRpYWxpemVGb3JtKCk7XHJcbiAgICAgIHRoaXMubG9hZEluaXRpYWxEYXRhKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsb2FkSW5pdGlhbERhdGEoKSB7XHJcbiAgICBpZiAodGhpcy5SZXBvcnROYW1lID09ICdUcmFuc2FjdGlvbiBFbnF1aXJ5Jykge1xyXG4gICAgICB0aGlzLmxvYWRJbml0aWFsRGF0YWZvcnR4bkVucXVpcnkoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5SZXBvcnROYW1lID09IFwiQnJhbmNoIEFjdGl2aXR5IFNlbmRcIikge1xyXG4gICAgICB0aGlzLmxvYWRJbml0aWFsRGF0YWZvckJyYW5jaEFjdGl2aXR5U2VuZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLlJlcG9ydE5hbWUgPT09IFwiQnJhbmNoIEFjdGl2aXR5IFJlY2VpdmVcIikge1xyXG4gICAgICB0aGlzLmxvYWRJbml0aWFsRGF0YWZvckJyYW5jaEFjdGl2aXR5UmVjZWl2ZSgpO1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5SZXBvcnROYW1lID09IFwiQ2FuY2VsbGF0aW9uIFRyYW5zYWN0aW9uXCIpe1xyXG4gICAgICB0aGlzLmxvYWRJbml0aWFsRGF0YUZvckNhbmNlbGxhdGlvblJlcG9ydCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuUmVwb3J0TmFtZSA9PSBcIkFjY291bnRpbmdcIikge1xyXG4gICAgICB0aGlzLmxvYWRJbml0aWFsRGF0YWZvckFjY291bnRpbmcoKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplRm9ybSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLlJlcG9ydE5hbWUgPT0gXCJUcmFuc2FjdGlvbiBFbnF1aXJ5XCIpIHtcclxuICAgICAgdGhpcy5zZWFyY2hGb3JtID0gdGhpcy5mYi5ncm91cChcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjbGllbnQ6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgIGZyb21EYXRlOiBbbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICB0b0RhdGU6IFtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgIGJyYW5jaDogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgdXNlcklkOiBbJy0xJ10sXHJcbiAgICAgICAgICBjdXJyZW5jeTogWydBbGwnXSxcclxuICAgICAgICAgIHByb2R1Y3Q6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgIHRyYW5zYWN0aW9uU3RhdHVzOiBbWydBbGwnXSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICB0cmFuc2FjdGlvbk5vOiBbJyddLFxyXG4gICAgICAgICAgY2FyZE5vOiBbJyddLFxyXG4gICAgICAgICAgaWRUeXBlOiBbJyddLFxyXG4gICAgICAgICAgaWRObzogWycnXSxcclxuICAgICAgICAgIHNlbmRlck5hbWU6IFsnJ10sXHJcbiAgICAgICAgICBiZW5lZmljaWFyeU5hbWU6IFsnJ10sXHJcbiAgICAgICAgICB0ZWxObzogWycnXSxcclxuICAgICAgICAgIHJlY2VpdmVBbW91bnQ6IFsnJ10sXHJcbiAgICAgICAgICBicmFuY2hOYW1lOiBbJyddLFxyXG4gICAgICAgICAgY291bnRyeTogWycnXSxcclxuICAgICAgICB9LFxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLlJlcG9ydE5hbWUgPT0gXCJBQ0MgR0wgRGV0YWlscyBFbnF1aXJ5XCIpIHtcclxuICAgICAgdGhpcy5zZWFyY2hGb3JtID0gdGhpcy5mYi5ncm91cChcclxuICAgICAgICB7XHJcbiAgICAgICAgICBkYXRlOiBbbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICBkYXRlVHlwZTogWzEsIFZhbGlkYXRvcnMucmVxdWlyZWRdXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuUmVwb3J0TmFtZSA9PSBcIkJyYW5jaCBBY3Rpdml0eSBTZW5kXCIpIHtcclxuICAgICAgdGhpcy5zZWFyY2hGb3JtID0gdGhpcy5mYi5ncm91cChcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjbGllbnQ6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgIGZyb21EYXRlOiBbbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICB0b0RhdGU6IFtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgIGJyYW5jaDogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgY3VycmVuY3k6IFsnQWxsJ10sXHJcbiAgICAgICAgICBwcm9kdWN0OiBbJ0FsbCcsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgdHJhbnNhY3Rpb25TdGF0dXM6IFtbJ0FsbCddLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgIHNlbmRDb3VudHJ5OiBbJ0FsbCddLFxyXG4gICAgICAgICAgcmVjZWl2ZUNvdW50cnk6IFsnQWxsJ11cclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuUmVwb3J0TmFtZSA9PSBcIkJyYW5jaCBBY3Rpdml0eSBSZWNlaXZlXCIpIHtcclxuICAgICAgdGhpcy5zZWFyY2hGb3JtID0gdGhpcy5mYi5ncm91cChcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjbGllbnQ6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgIGZyb21EYXRlOiBbbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICB0b0RhdGU6IFtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgIGJyYW5jaDogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgY3VycmVuY3k6IFsnQWxsJ10sXHJcbiAgICAgICAgICBwcm9kdWN0OiBbJ0FsbCcsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgdHJhbnNhY3Rpb25TdGF0dXM6IFtbJ0FsbCddLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgIHNlbmRDb3VudHJ5OiBbJ0FsbCddLFxyXG4gICAgICAgICAgcmVjZWl2ZUNvdW50cnk6IFsnQWxsJ11cclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYodGhpcy5SZXBvcnROYW1lID09IFwiQ2FuY2VsbGF0aW9uIFRyYW5zYWN0aW9uXCIpe1xyXG4gICAgICB0aGlzLnNlYXJjaEZvcm0gPSB0aGlzLmZiLmdyb3VwKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNsaWVudDogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgZnJvbURhdGU6IFtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgIHRvRGF0ZTogW25ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF0sIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgYnJhbmNoOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICBzZW5kQ291bnRyeTogW251bGxdLFxyXG4gICAgICAgICAgcmVjZWl2ZUNvdW50cnk6IFtudWxsXSxcclxuICAgICAgICAgIHByb2R1Y3Q6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgIHJlY2VpdmVDdXJyZW5jeTogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5SZXBvcnROYW1lID09IFwiQWNjb3VudGluZ1wiKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoRm9ybSA9IHRoaXMuZmIuZ3JvdXAoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY2xpZW50OiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgZnJvbURhdGU6IFtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgIHRvRGF0ZTogW25ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF0sIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgYnJhbmNoOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgY3VycmVuY3k6IFsnQWxsJ10sXHJcbiAgICAgICAgICBwcm9kdWN0OiBbJ0FsbCcsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgdHJhbnNhY3Rpb25TdGF0dXM6IFtbJ0FsbCddLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgIHNlbmRDb3VudHJ5OiBbJ0FsbCddLFxyXG4gICAgICAgICAgcmVjZWl2ZUNvdW50cnk6IFsnQWxsJ11cclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsb2FkSW5pdGlhbERhdGFmb3JCcmFuY2hBY3Rpdml0eVNlbmQoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZS5Mb2FkaW5nO1xyXG4gICAgZm9ya0pvaW4oe1xyXG4gICAgICBwYXJhbXM6IHRoaXMucmVwb3J0U2VydmljZS5nZXRQYXJhbXMoKS5waXBlKFxyXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgcGFyYW1zJywgZXJyKTtcclxuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgICB9KVxyXG4gICAgICApLFxyXG4gICAgICBjbGllbnRzOiB0aGlzLnJlcG9ydFNlcnZpY2UuZ2V0UGF5SW5BZ2VudHModGhpcy5jdXJyZW50VXNlcikucGlwZShcclxuICAgICAgICBtYXAoKGNsaWVudHM6IGFueVtdKTogQ2xpZW50W10gPT5cclxuICAgICAgICAgIGNsaWVudHMubWFwKChjbGllbnQsIGluZGV4KSA9PiAoe1xyXG4gICAgICAgICAgICBidXNpbmVzc1BhcnRuZXJOYW1lOiBjbGllbnQuYWdlbnQsXHJcbiAgICAgICAgICAgIGJ1c2luZXNzUGFydG5lckNvZGU6IGNsaWVudC5jb2RlLFxyXG4gICAgICAgICAgICBkaXNwbGF5T3JkZXI6IGluZGV4IC8vIG9yIHVzZSBzb21lIHZhbHVlIGZyb20gdGhlIEFQSSBpZiBhdmFpbGFibGVcclxuICAgICAgICAgIH0pKVxyXG4gICAgICAgICksXHJcbiAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBjbGllbnRzJywgZXJyKTtcclxuICAgICAgICAgIHJldHVybiBvZihbXSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgfSkuc3Vic2NyaWJlKFxyXG4gICAgICB7XHJcbiAgICAgICAgbmV4dDogKHsgcGFyYW1zLCBjbGllbnRzIH0pID0+IHtcclxuICAgICAgICAgIHRoaXMucGFyYW1zID0gcGFyYW1zO1xyXG4gICAgICAgICAgdGhpcy5jbGllbnRzMSA9IGNsaWVudHM7XHJcbiAgICAgICAgICAvLyB0aGlzLmNsaWVudHNEYXRhID0gWy4uLmNsaWVudHNdO1xyXG4gICAgICAgICAgdGhpcy5jb3VudHJpZXMgPSBbLi4ucGFyYW1zPy5jb3VudHJpZXNdXHJcbiAgICAgICAgICB0aGlzLmN1cnJlbmNpZXMgPSBbLi4ucGFyYW1zPy5jdXJyZW5jaWVzXTtcclxuICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25TdGF0dXNlcyA9IFsuLi5wYXJhbXM/LnRyYW5zYWN0aW9uU3RhdHVzVHlwZXNdO1xyXG4gICAgICAgICAgdGhpcy50cmFuc2FjdGlvblByb2R1Y3RzID0gWy4uLnBhcmFtcz8udHJhbnNhY3Rpb25Qcm9kdWN0VHlwZXNdO1xyXG4gICAgICAgICAgaWYgKCFzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdmb3NzaWx1c2VybmFtZScpICYmIHRoaXMuY2xpZW50czE/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdENsaWVudCh0aGlzLmNsaWVudHMxWzBdLmJ1c2luZXNzUGFydG5lckNvZGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGVzLkNvbXBsZXRlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IGVyciA9PiB7XHJcbiAgICAgICAgICAvLyBPY2N1cnMgb25seSBpZiBhbiBpbm5lciBjYXRjaEVycm9yIHN0aWxsIHJldGhyb3dzXHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdVbmV4cGVjdGVkIGZvcmtKb2luIGVycm9yJywgZXJyKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkNvbXBsZXRlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkNvbXBsZXRlO1xyXG4gICAgICAgICAgdGhpcy5vbkNsaWVudFNlbGVjdGVkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBsb2FkSW5pdGlhbERhdGFmb3J0eG5FbnF1aXJ5KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGUuTG9hZGluZztcclxuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJyc7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5yZXBvcnRTZXJ2aWNlXHJcbiAgICAgICAgLmdldFBhZ2VMb2FkRGF0YSh0aGlzLmN1cnJlbnRVc2VyKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAudG9Qcm9taXNlKCk7XHJcblxyXG4gICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgIHRoaXMuY2xpZW50czEgPSBkYXRhLmNsaWVudHMgfHwgW107XHJcbiAgICAgICAgdGhpcy5jdXJyZW5jaWVzID0gZGF0YS5jdXJyZW5jaWVzIHx8IFtdO1xyXG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb25TdGF0dXNlcyA9IChkYXRhLnRyYW5zYWN0aW9uU3RhdHVzZXMgfHwgW10pLmZpbHRlcihcclxuICAgICAgICAgIHRzID0+IHRzLnRyYW5zYWN0aW9uU3RhdHVzICE9PSAnJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgIXRoaXMudHJhbnNhY3Rpb25TdGF0dXNlcy5zb21lKFxyXG4gICAgICAgICAgICBzID0+IHMudHJhbnNhY3Rpb25TdGF0dXMgPT09ICdBbGwnXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uU3RhdHVzZXMudW5zaGlmdCh7XHJcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uU3RhdHVzOiAnQWxsJyxcclxuICAgICAgICAgIH0gYXMgVHJhbnNhY3Rpb25TdGF0dXMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY2xpZW50czEubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaEZvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgICAgICAgIGNsaWVudDogdGhpcy5jbGllbnRzMVswXS5idXNpbmVzc1BhcnRuZXJDb2RlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLm9uQ2xpZW50Q2hhbmdlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZS5Db21wbGV0ZTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ0ZhaWxlZCB0byBsb2FkIGluaXRpYWwgZGF0YSc7XHJcbiAgICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkVycm9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgICBsb2FkSW5pdGlhbERhdGFmb3JCcmFuY2hBY3Rpdml0eVJlY2VpdmUoKSB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGUuTG9hZGluZztcclxuICAgICAgICBmb3JrSm9pbih7XHJcbiAgICAgICAgICAgIHBhcmFtczogdGhpcy5yZXBvcnRTZXJ2aWNlLmdldEJyYW5jaEFjdGl2aXR5UmVjZWl2ZVBhcmFtcygpXHJcbiAgICAgICAgICAgICAgICAucGlwZShjYXRjaEVycm9yKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBwYXJhbXMnLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICBwYXlvdXRBZ2VudHM6IHRoaXMucmVwb3J0U2VydmljZS5nZXRBbGxQYXlPdXRBZ2VudHModGhpcy5jdXJyZW50VXNlcilcclxuICAgICAgICAgICAgICAgIC5waXBlKG1hcCgoY2xpZW50czogYW55W10pOiBDbGllbnRbXSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIGNsaWVudHMubWFwKChjbGllbnQsIGluZGV4KSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBidXNpbmVzc1BhcnRuZXJOYW1lOiBjbGllbnQuYWdlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1c2luZXNzUGFydG5lckNvZGU6IGNsaWVudC5jb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5T3JkZXI6IGNsaWVudC5udW1iZXJcclxuICAgICAgICAgICAgICAgICAgICB9KSlcclxuICAgICAgICAgICAgICAgICksIGNhdGNoRXJyb3IoZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoW10pO1xyXG4gICAgICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgfSkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgbmV4dDogKHsgcGFyYW1zLCBwYXlvdXRBZ2VudHMgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJhbXMgPSBwYXJhbXM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNsaWVudHMxID0gcGF5b3V0QWdlbnRzO1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5jbGllbnRzRGF0YSA9IFsuLi5jbGllbnRzXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY291bnRyaWVzID0gWy4uLnBhcmFtcz8uY291bnRyaWVzXVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW5jaWVzID0gWy4uLnBhcmFtcz8uY3VycmVuY2llc107XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uU3RhdHVzZXMgPSBbLi4ucGFyYW1zPy50cmFuc2FjdGlvblN0YXR1c1R5cGVzXTtcclxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25Qcm9kdWN0cyA9IFsuLi5wYXJhbXM/LnRyYW5zYWN0aW9uUHJvZHVjdFR5cGVzXTtcclxuICAgICAgICAgICAgICAgIGlmICghc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnZm9zc2lsdXNlcm5hbWUnKSAmJiB0aGlzLmNsaWVudHMxPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdENsaWVudCh0aGlzLmNsaWVudHMxWzBdLmJ1c2luZXNzUGFydG5lckNvZGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGVzLkNvbXBsZXRlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvcjogZXJyID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIE9jY3VycyBvbmx5IGlmIGFuIGlubmVyIGNhdGNoRXJyb3Igc3RpbGwgcmV0aHJvd3NcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1VuZXhwZWN0ZWQgZm9ya0pvaW4gZXJyb3InLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGUuQ29tcGxldGU7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZS5Db21wbGV0ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25DbGllbnRTZWxlY3RlZCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuICBwcml2YXRlIGFzeW5jIGxvYWRJbml0aWFsRGF0YUZvckNhbmNlbGxhdGlvblJlcG9ydCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkxvYWRpbmc7XHJcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICcnO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLnJlcG9ydFNlcnZpY2VcclxuICAgICAgICAubG9hZERhdGFmb3JDYW5jYWxsYXRpb24odGhpcy5jdXJyZW50VXNlcilcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG5cclxuICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICB0aGlzLmNvdW50cmllcyA9IGRhdGEuY291bnRyaWVzID8/IFtdO1xyXG4gICAgICAgIHRoaXMuY2xpZW50czEgPSAoZGF0YS5wYXlJbkFnZW50cyA/PyBbXSkubWFwKChhZ2VudCwgaW5kZXgpID0+ICh7XHJcbiAgICAgICAgICBidXNpbmVzc1BhcnRuZXJOYW1lOiBhZ2VudC5hZ2VudCxcclxuICAgICAgICAgIGJ1c2luZXNzUGFydG5lckNvZGU6IGFnZW50LmNvZGUsXHJcbiAgICAgICAgICBkaXNwbGF5T3JkZXI6IGluZGV4XHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHRoaXMucHJvZHVjdHMgPSAoZGF0YS5wcm9kdWN0VHlwZXMgPz8gW10pLm1hcCgocHQsIGluZGV4KSA9PiAoe1xyXG4gICAgICAgICAgcHJvZHVjdENvZGU6IHB0LnByb2R1Y3RDb2RlLFxyXG4gICAgICAgICAgcHJvZHVjdE5hbWU6IHB0Lm5hbWUsXHJcbiAgICAgICAgICBudW1iZXI6IGluZGV4LFxyXG4gICAgICAgICAgc2VydmljZVR5cGVDb2RlOiBwdC5zZXJ2aWNlVHlwZUNvZGUgfHwgJydcclxuICAgICAgICB9KSk7XHJcbiAgICAgICAgdGhpcy5jdXJyZW5jaWVzID0gZGF0YS5jdXJyZW5jaWVzID8/IFtdO1xyXG5cclxuICAgICAgICB0aGlzLnNlYXJjaEZvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgICAgICBwcm9kdWN0OiB0aGlzLnByb2R1Y3RzWzBdPy5wcm9kdWN0Q29kZSxcclxuICAgICAgICAgIHJlY2VpdmVDb3VudHJ5OiB0aGlzLmNvdW50cmllc1swXT8uY291bnRyeSxcclxuICAgICAgICAgIHNlbmRDb3VudHJ5OiB0aGlzLmNvdW50cmllc1swXT8uY291bnRyeSxcclxuICAgICAgICAgIHJlY2VpdmVDdXJyZW5jeTogdGhpcy5jdXJyZW5jaWVzWzBdPy5jdXJyZW5jeUNvZGVcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gSWYgb25seSBvbmUgY2xpZW50LCBwcmVzZWxlY3RcclxuICAgICAgICBpZiAodGhpcy5jbGllbnRzMS5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoRm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudHMxWzBdLmJ1c2luZXNzUGFydG5lckNvZGVcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5vbkNsaWVudENoYW5nZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBObyBkYXRhIGNhc2VcclxuICAgICAgICB0aGlzLmNvdW50cmllcyA9IFtdO1xyXG4gICAgICAgIHRoaXMuY2xpZW50czEgPSBbXTtcclxuICAgICAgICB0aGlzLnByb2R1Y3RzID0gW107XHJcbiAgICAgICAgdGhpcy5jdXJyZW5jaWVzID0gW107XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkNvbXBsZXRlO1xyXG5cclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgY2FuY2VsbGF0aW9uIHJlcG9ydCBkYXRhJywgZXJyb3IpO1xyXG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdGYWlsZWQgdG8gbG9hZCBjYW5jZWxsYXRpb24gcmVwb3J0IGRhdGEnO1xyXG4gICAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZS5FcnJvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBcclxuICAgIGxvYWRJbml0aWFsRGF0YWZvckFjY291bnRpbmcoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZS5Mb2FkaW5nO1xyXG4gIFxyXG4gICAgZm9ya0pvaW4oe1xyXG4gICAgICBjbGllbnRzOiB0aGlzLnJlcG9ydFNlcnZpY2UuZ2V0Q2xpZW50c0ZvckFjY291bnRpbmdSZXBvcnQodGhpcy5jdXJyZW50VXNlcikucGlwZShcclxuICAgICAgICBtYXAoKGNsaWVudHM6IGFueVtdKTogQ2xpZW50W10gPT5cclxuICAgICAgICAgIGNsaWVudHMubWFwKChjbGllbnQsIGluZGV4KSA9PiAoe1xyXG4gICAgICAgICAgICBidXNpbmVzc1BhcnRuZXJOYW1lOiBjbGllbnQuYWdlbnQsXHJcbiAgICAgICAgICAgIGJ1c2luZXNzUGFydG5lckNvZGU6IGNsaWVudC5jb2RlLFxyXG4gICAgICAgICAgICBkaXNwbGF5T3JkZXI6IGluZGV4XHJcbiAgICAgICAgICB9KSlcclxuICAgICAgICApLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgY2xpZW50cycsIGVycik7XHJcbiAgICAgICAgICByZXR1cm4gb2YoW10pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICksXHJcbiAgICAgIHByb2R1Y3RzOiB0aGlzLnJlcG9ydFNlcnZpY2UuZ2V0VHJhbnNhY3Rpb25UeXBlc0ZvckFjY291bnRpbmdSZXBvcnQoKS5waXBlKFxyXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgdHJhbnNhY3Rpb24gdHlwZXMnLCBlcnIpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKFtdKTtcclxuICAgICAgICB9KVxyXG4gICAgICApLFxyXG4gICAgICBjdXJyZW5jaWVzOiB0aGlzLnJlcG9ydFNlcnZpY2UuZ2V0QWxsQ3VycmVuY2llc0ZvckFjY291bnRpbmdSZXBvcnQoKS5waXBlKFxyXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgY3VycmVuY2llcycsIGVycik7XHJcbiAgICAgICAgICByZXR1cm4gb2YoW10pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICksXHJcbiAgICAgIHN0YXR1c2VzOiB0aGlzLnJlcG9ydFNlcnZpY2UuZ2V0QWxsVHJhbnNhY3Rpb25TdGF0dXNGb3JBY2NvdW50aW5nUmVwb3J0KCkucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKGVyciA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIHN0YXR1c2VzJywgZXJyKTtcclxuICAgICAgICAgIHJldHVybiBvZihbXSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKSxcclxuICAgICAgY291bnRyaWVzOiB0aGlzLnJlcG9ydFNlcnZpY2UuZ2V0QWxsQ291bnRyaWVzRm9yQWNjb3VudGluZ1JlcG9ydCgpLnBpcGUoXHJcbiAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBjb3VudHJpZXMnLCBlcnIpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKFtdKTtcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoeyBjbGllbnRzLCBwcm9kdWN0cywgY3VycmVuY2llcywgc3RhdHVzZXMsIGNvdW50cmllcyB9KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jbGllbnRzMSA9IGNsaWVudHM7XHJcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvblByb2R1Y3RzID0gcHJvZHVjdHM7XHJcbiAgICAgICAgdGhpcy5jdXJyZW5jaWVzID0gY3VycmVuY2llcztcclxuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uU3RhdHVzZXMgPSBzdGF0dXNlcztcclxuICAgICAgICB0aGlzLmNvdW50cmllcyA9IGNvdW50cmllcztcclxuICBcclxuICAgICAgICAvLyBQcmVzZWxlY3QgZmlyc3QgY2xpZW50IGlmIG5vbmUgY2hvc2VuXHJcbiAgICAgICAgaWYgKCFzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdmb3NzaWx1c2VybmFtZScpICYmIHRoaXMuY2xpZW50czE/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RDbGllbnQodGhpcy5jbGllbnRzMVswXS5idXNpbmVzc1BhcnRuZXJDb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiBlcnIgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1VuZXhwZWN0ZWQgZm9ya0pvaW4gZXJyb3IgaW4gQWNjb3VudGluZyBpbml0JywgZXJyKTtcclxuICAgICAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZS5FcnJvcjtcclxuICAgICAgfSxcclxuICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZS5Db21wbGV0ZTtcclxuICAgICAgICB0aGlzLm9uQ2xpZW50U2VsZWN0ZWQoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgXHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9EYXRlQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VhcmNoRm9ybS5nZXQoJ2Zyb21EYXRlJyk/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoZnJvbURhdGVTdHIgPT4ge1xyXG4gICAgICBjb25zdCB0b0RhdGVDb250cm9sID0gdGhpcy5zZWFyY2hGb3JtLmdldCgndG9EYXRlJyk7XHJcbiAgICAgIGNvbnN0IHRvRGF0ZVN0ciA9IHRvRGF0ZUNvbnRyb2w/LnZhbHVlO1xyXG4gICAgICBpZiAoIWZyb21EYXRlU3RyIHx8ICF0b0RhdGVTdHIpIHJldHVybjtcclxuICAgICAgY29uc3QgZnJvbURhdGUgPSBuZXcgRGF0ZShmcm9tRGF0ZVN0cik7XHJcbiAgICAgIGNvbnN0IHRvRGF0ZSA9IG5ldyBEYXRlKHRvRGF0ZVN0cik7XHJcblxyXG4gICAgICBjb25zdCBtYXhUb0RhdGUgPSBuZXcgRGF0ZShmcm9tRGF0ZSk7XHJcbiAgICAgIG1heFRvRGF0ZT8uc2V0RGF0ZShmcm9tRGF0ZS5nZXREYXRlKCkgKyAzMSk7XHJcbiAgICAgIGlmICh0b0RhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCkgPiBtYXhUb0RhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCkgfHwgdG9EYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApIDwgZnJvbURhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCkpIHtcclxuICAgICAgICBtYXhUb0RhdGUuc2V0SG91cnMoMTIsIDAsIDAsIDApO1xyXG4gICAgICAgIHRvRGF0ZUNvbnRyb2w/LnBhdGNoVmFsdWUobWF4VG9EYXRlLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdKTtcclxuICAgICAgICBjb25zb2xlLmxvZyh0b0RhdGVDb250cm9sKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zZWFyY2hGb3JtLmdldCgndG9EYXRlJyk/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodG9EYXRlU3RyID0+IHtcclxuICAgICAgY29uc3QgZnJvbURhdGVDb250cm9sID0gdGhpcy5zZWFyY2hGb3JtLmdldCgnZnJvbURhdGUnKTtcclxuICAgICAgY29uc3QgZnJvbURhdGVTdHIgPSBmcm9tRGF0ZUNvbnRyb2w/LnZhbHVlO1xyXG4gICAgICBpZiAoIXRvRGF0ZVN0ciB8fCAhZnJvbURhdGVTdHIpIHJldHVybjtcclxuICAgICAgY29uc3QgdG9EYXRlID0gbmV3IERhdGUodG9EYXRlU3RyKTtcclxuICAgICAgY29uc3QgZnJvbURhdGUgPSBuZXcgRGF0ZShmcm9tRGF0ZVN0cik7XHJcblxyXG4gICAgICBjb25zdCBtaW5Gcm9tRGF0ZSA9IG5ldyBEYXRlKHRvRGF0ZSk7XHJcbiAgICAgIG1pbkZyb21EYXRlPy5zZXREYXRlKHRvRGF0ZS5nZXREYXRlKCkgLSAzMSk7XHJcbiAgICAgIGlmIChmcm9tRGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKSA8IG1pbkZyb21EYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApKSB7XHJcbiAgICAgICAgbWluRnJvbURhdGUuc2V0SG91cnMoMTIsIDAsIDAsIDApO1xyXG4gICAgICAgIGZyb21EYXRlQ29udHJvbD8ucGF0Y2hWYWx1ZShtaW5Gcm9tRGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGFzeW5jIG9uQ2xpZW50Q2hhbmdlKCk6IFByb21pc2U8dm9pZD4ge1xyXG5cclxuICAgIGlmICh0aGlzLlJlcG9ydE5hbWUgPT0gXCJUcmFuc2FjdGlvbiBFbnF1aXJ5XCIpIHtcclxuICAgICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGUuTG9hZGluZztcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRDbGllbnQgPSB0aGlzLnNlYXJjaEZvcm0uZ2V0KCdjbGllbnQnKT8udmFsdWU7XHJcbiAgICAgIGlmICghc2VsZWN0ZWRDbGllbnQpIHJldHVybjtcclxuXHJcbiAgICAgIHRoaXMuc2VhcmNoRm9ybS5wYXRjaFZhbHVlKHsgYnJhbmNoOiAnJywgdXNlcklkOiAnJyB9KTtcclxuICAgICAgdGhpcy5icmFuY2hlcyA9IFtdO1xyXG4gICAgICB0aGlzLnByb2R1Y3RzID0gW107XHJcbiAgICAgIHRoaXMudXNlcnMgPSBbXTtcclxuXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoW1xyXG4gICAgICAgICAgdGhpcy5sb2FkQnJhbmNoZXNCeUFnZW50KHNlbGVjdGVkQ2xpZW50KSxcclxuICAgICAgICAgIHRoaXMubG9hZFByb2R1Y3RzQnlBZ2VudChzZWxlY3RlZENsaWVudCksXHJcbiAgICAgICAgXSk7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hGb3JtLnBhdGNoVmFsdWUoeyBwcm9kdWN0OiAnQWxsJyB9KTtcclxuICAgICAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZS5Db21wbGV0ZTtcclxuICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnRmFpbGVkIHRvIGxvYWQgYnJhbmNoL3Byb2R1Y3QnO1xyXG4gICAgICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkNvbXBsZXRlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuUmVwb3J0TmFtZSA9PSBcIkJyYW5jaCBBY3Rpdml0eSBTZW5kXCIpIHtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRDbGllbnQgPSB0aGlzLnNlYXJjaEZvcm0uZ2V0KCdjbGllbnQnKT8udmFsdWU7XHJcbiAgICAgIGlmICghc2VsZWN0ZWRDbGllbnQpIHJldHVybjtcclxuICAgICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGUuTG9hZGluZztcclxuICAgICAgdGhpcy5yZXBvcnRTZXJ2aWNlLmdldEJyYW5jaEJ5QWdlbnQodGhpcy5jdXJyZW50VXNlciwgc2VsZWN0ZWRDbGllbnQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKGRhdGEpID0+IHtcclxuICAgICAgICAgIHRoaXMuYnJhbmNoZXMgPSBkYXRhO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkNvbXBsZXRlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgIGlmIChzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwiZXpyZW1pdHVzZXJuYW1lXCIpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5icmFuY2hlcy5maW5kSW5kZXgoKGJyYW5jaCkgPT4gYnJhbmNoLmJyYW5jaENvZGUgPT09IFwiQWxsXCIpO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPT0gLTEpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaEZvcm0uY29udHJvbHNbJ2JyYW5jaCddLnNldFZhbHVlKHRoaXMuYnJhbmNoZXNbMF0uYnJhbmNoQ29kZSlcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaEZvcm0uY29udHJvbHNbJ2JyYW5jaCddLnNldFZhbHVlKCdBbGwnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGUuQ29tcGxldGU7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuUmVwb3J0TmFtZSA9PT0gXCJCcmFuY2ggQWN0aXZpdHkgUmVjZWl2ZVwiKSB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkQ2xpZW50ID0gdGhpcy5zZWFyY2hGb3JtLmdldCgnY2xpZW50Jyk/LnZhbHVlO1xyXG4gICAgICBpZiAoIXNlbGVjdGVkQ2xpZW50KSByZXR1cm47XHJcbiAgICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkxvYWRpbmc7XHJcbiAgICAgIHRoaXMucmVwb3J0U2VydmljZS5nZXRCcmFuY2hBY3Rpdml0eVJlY2VpdmVQYXlvdXRBZ2VudEJyYW5jaCh0aGlzLmN1cnJlbnRVc2VyLCBzZWxlY3RlZENsaWVudCkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5icmFuY2hlcyA9IGRhdGE7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGUuQ29tcGxldGU7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJlenJlbWl0dXNlcm5hbWVcIikpIHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmJyYW5jaGVzLmZpbmRJbmRleCgoYnJhbmNoKSA9PiBicmFuY2guYnJhbmNoQ29kZSA9PT0gXCJBbGxcIik7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA9PSAtMSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VhcmNoRm9ybS5jb250cm9sc1snYnJhbmNoJ10uc2V0VmFsdWUodGhpcy5icmFuY2hlc1swXS5icmFuY2hDb2RlKVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VhcmNoRm9ybS5jb250cm9sc1snYnJhbmNoJ10uc2V0VmFsdWUoJ0FsbCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZS5Db21wbGV0ZTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5SZXBvcnROYW1lID09IFwiQ2FuY2VsbGF0aW9uIFRyYW5zYWN0aW9uXCIpIHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkxvYWRpbmc7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICcnO1xyXG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRDbGllbnQgPSB0aGlzLnNlYXJjaEZvcm0uZ2V0KCdjbGllbnQnKT8udmFsdWU7XHJcbiAgICBcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLnJlcG9ydFNlcnZpY2VcclxuICAgICAgICAgICAgICAuZ2V0QnJhbmNoZXMoc2VsZWN0ZWRDbGllbnQsIHRoaXMuY3VycmVudFVzZXIpXHJcbiAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgICAgICAgIC50b1Byb21pc2UoKTtcclxuICAgIFxyXG4gICAgICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYnJhbmNoZXMgPSBkYXRhO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VhcmNoRm9ybS5wYXRjaFZhbHVlKHticmFuY2g6IHRoaXMuYnJhbmNoZXNbMF0uYnJhbmNoQ29kZX0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkNvbXBsZXRlO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBsb2FkIGJyYW5jaGVzJywgZXJyb3IpO1xyXG4gICAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdGYWlsZWQgdG8gbG9hZCBicmFuY2ggZGF0YSc7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkVycm9yO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAvLyBhY2NvdW50aW5nIHJlcG9ydFxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICBpZiAodGhpcy5SZXBvcnROYW1lID09IFwiQWNjb3VudGluZ1wiKSB7XHJcbiAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRDbGllbnQgPSB0aGlzLnNlYXJjaEZvcm0uZ2V0KCdjbGllbnQnKT8udmFsdWU7XHJcbiAgICAgICAgICAgICAgaWYgKCFzZWxlY3RlZENsaWVudCkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkxvYWRpbmc7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXBvcnRTZXJ2aWNlLmdldEJyYW5jaEJ5QWdlbnRGb3JBY2NvdW50aW5nUmVwb3J0KHRoaXMuY3VycmVudFVzZXIsIHNlbGVjdGVkQ2xpZW50KS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5icmFuY2hlcyA9IGRhdGE7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGUuQ29tcGxldGU7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJlenJlbWl0dXNlcm5hbWVcIikpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuYnJhbmNoZXMuZmluZEluZGV4KChicmFuY2gpID0+IGJyYW5jaC5icmFuY2hDb2RlID09PSBcIkFsbFwiKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoRm9ybS5jb250cm9sc1snYnJhbmNoJ10uc2V0VmFsdWUodGhpcy5icmFuY2hlc1swXS5icmFuY2hDb2RlKVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaEZvcm0uY29udHJvbHNbJ2JyYW5jaCddLnNldFZhbHVlKCdBbGwnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgaWYgKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJmb3NzaWx1c2VybmFtZVwiKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoRm9ybS5jb250cm9sc1snYnJhbmNoJ10uc2V0VmFsdWUoJ0FsbCcpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkNvbXBsZXRlO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGxvYWRCcmFuY2hlc0J5QWdlbnQoYWdlbnRDb2RlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IGJyYW5jaGVzID0gYXdhaXQgdGhpcy5yZXBvcnRTZXJ2aWNlXHJcbiAgICAgIC5nZXRCcmFuY2hlc0J5QWdlbnQoYWdlbnRDb2RlLCB0aGlzLmN1cnJlbnRVc2VyKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC50b1Byb21pc2UoKTtcclxuICAgIHRoaXMuYnJhbmNoZXMgPSBicmFuY2hlcyB8fCBbXTtcclxuXHJcbiAgICBpZiAodGhpcy5icmFuY2hlcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgdGhpcy5zZWFyY2hGb3JtLnBhdGNoVmFsdWUoeyBicmFuY2g6IHRoaXMuYnJhbmNoZXNbMF0uYnJhbmNoQ29kZSB9KTtcclxuICAgICAgLy8gYXdhaXQgdGhpcy5sb2FkVXNlcnNCeUJyYW5jaChhZ2VudENvZGUsIHRoaXMuYnJhbmNoZXNbMF0uYnJhbmNoQ29kZSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuYnJhbmNoZXMuc29tZShiID0+IGIuYnJhbmNoQ29kZSA9PT0gJ0FsbCcpKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoRm9ybS5wYXRjaFZhbHVlKHsgYnJhbmNoOiAnQWxsJyB9KTtcclxuICAgICAgLy8gYXdhaXQgdGhpcy5sb2FkVXNlcnNCeUJyYW5jaChhZ2VudENvZGUsICdBbGwnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoRm9ybS5wYXRjaFZhbHVlKHsgYnJhbmNoOiAnJyB9KTtcclxuICAgICAgdGhpcy51c2VycyA9IFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBsb2FkUHJvZHVjdHNCeUFnZW50KGFnZW50Q29kZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBwcm9kdWN0cyA9IGF3YWl0IHRoaXMucmVwb3J0U2VydmljZVxyXG4gICAgICAuZ2V0UHJvZHVjdHNCeUFnZW50KGFnZW50Q29kZSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAudG9Qcm9taXNlKCk7XHJcbiAgICB0aGlzLnByb2R1Y3RzID0gcHJvZHVjdHMgfHwgW107XHJcbiAgfVxyXG5cclxuICBhc3luYyBvbkJyYW5jaENoYW5nZSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgb25TZWFyY2goKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5SZXBvcnROYW1lID09IFwiVHJhbnNhY3Rpb24gRW5xdWlyeVwiKSB7XHJcbiAgICAgIHRoaXMuaGFzU2VhcmNoZWQgPSB0cnVlO1xyXG4gICAgICBpZiAodGhpcy5zZWFyY2hGb3JtLmludmFsaWQpIHtcclxuICAgICAgICB0aGlzLmZvcm1WYWxpZGF0aW9uRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmZvcm1WYWxpZGF0aW9uRXJyb3IgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zZWFyY2hDbGlja2VkLmVtaXQodGhpcy5idWlsZFNlYXJjaENyaXRlcmlhKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLlJlcG9ydE5hbWUgPT0gXCJCcmFuY2ggQWN0aXZpdHkgU2VuZFwiKSB7XHJcbiAgICAgIHRoaXMuaGFzU2VhcmNoZWQgPSB0cnVlO1xyXG4gICAgICBpZiAodGhpcy5zZWFyY2hGb3JtLmludmFsaWQpIHtcclxuICAgICAgICB0aGlzLmZvcm1WYWxpZGF0aW9uRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmZvcm1WYWxpZGF0aW9uRXJyb3IgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zZWFyY2hDbGlja2VkLmVtaXQodGhpcy5idWlsZFNlYXJjaENyaXRlcmlhKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLlJlcG9ydE5hbWUgPT0gXCJBQ0MgR0wgRGV0YWlscyBFbnF1aXJ5XCIpIHtcclxuICAgICAgY29uc3QgbW9kYWwgPSB7XHJcbiAgICAgICAgc2VsZWN0ZWREYXRlVHlwZTogdGhpcy5zZWFyY2hGb3JtLmNvbnRyb2xzW1wiZGF0ZVR5cGVcIl0/LnZhbHVlLFxyXG4gICAgICAgIHNlbGVjdGVkRGF0ZTogdGhpcy5zZWFyY2hGb3JtLmNvbnRyb2xzW1wiZGF0ZVwiXT8udmFsdWVcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNlYXJjaENsaWNrZWQuZW1pdChtb2RhbCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuUmVwb3J0TmFtZSA9PT0gXCJCcmFuY2ggQWN0aXZpdHkgUmVjZWl2ZVwiKSB7XHJcbiAgICAgIHRoaXMuaGFzU2VhcmNoZWQgPSB0cnVlO1xyXG4gICAgICBpZiAodGhpcy5zZWFyY2hGb3JtLmludmFsaWQpIHtcclxuICAgICAgICB0aGlzLmZvcm1WYWxpZGF0aW9uRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmZvcm1WYWxpZGF0aW9uRXJyb3IgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zZWFyY2hDbGlja2VkLmVtaXQodGhpcy5idWlsZFNlYXJjaENyaXRlcmlhKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMuUmVwb3J0TmFtZSA9PSBcIkNhbmNlbGxhdGlvbiBUcmFuc2FjdGlvblwiKXtcclxuICAgICAgdGhpcy5oYXNTZWFyY2hlZCA9IHRydWU7XHJcbiAgICAgIGlmICh0aGlzLnNlYXJjaEZvcm0uaW52YWxpZCkge1xyXG4gICAgICAgIHRoaXMuZm9ybVZhbGlkYXRpb25FcnJvciA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZm9ybVZhbGlkYXRpb25FcnJvciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlYXJjaENsaWNrZWQuZW1pdCh0aGlzLmJ1aWxkU2VhcmNoQ3JpdGVyaWEoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuUmVwb3J0TmFtZSA9PSBcIkFjY291bnRpbmdcIikge1xyXG4gICAgICB0aGlzLmhhc1NlYXJjaGVkID0gdHJ1ZTtcclxuICAgICAgaWYgKHRoaXMuc2VhcmNoRm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtVmFsaWRhdGlvbkVycm9yID0gdHJ1ZTtcclxuICAgICAgICAvLyB0aGlzLm1hcmtGb3JtR3JvdXBUb3VjaGVkKHRoaXMuc2VhcmNoRm9ybSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZm9ybVZhbGlkYXRpb25FcnJvciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlYXJjaENsaWNrZWQuZW1pdCh0aGlzLmJ1aWxkU2VhcmNoQ3JpdGVyaWEoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkU2VhcmNoQ3JpdGVyaWEoKTogYW55IHtcclxuICAgIGlmICh0aGlzLlJlcG9ydE5hbWUgPT0gXCJUcmFuc2FjdGlvbiBFbnF1aXJ5XCIpIHtcclxuICAgICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5zZWFyY2hGb3JtLnZhbHVlO1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGJhbms6IGZvcm1WYWx1ZS5jbGllbnQsXHJcbiAgICAgICAgZnJvbURhdGU6IHRoaXMudG9Jc29Gb3JtYXQoZm9ybVZhbHVlLmZyb21EYXRlKSxcclxuICAgICAgICB0b0RhdGU6IHRoaXMudG9Jc29Gb3JtYXQoZm9ybVZhbHVlLnRvRGF0ZSksXHJcbiAgICAgICAgYnJhbmNoOiBmb3JtVmFsdWUuYnJhbmNoLFxyXG4gICAgICAgIHVzZXI6IGZvcm1WYWx1ZS51c2VySWQgfHwgJy0xJyxcclxuICAgICAgICBjdXJyZW5jeTogZm9ybVZhbHVlLmN1cnJlbmN5LFxyXG4gICAgICAgIHByb2R1Y3Q6IGZvcm1WYWx1ZS5wcm9kdWN0LFxyXG4gICAgICAgIHN0YXR1czogdGhpcy5zZWxlY3RlZFN0YXR1c2VzLmluY2x1ZGVzKCdBbGwnKSA/IFsnJ10gOiB0aGlzLnNlbGVjdGVkU3RhdHVzZXMsXHJcbiAgICAgICAgdHJhbnNhY3Rpb25ObzogKGZvcm1WYWx1ZS50cmFuc2FjdGlvbk5vIHx8ICcnKS50cmltKCksXHJcbiAgICAgICAgY2FyZE5vOiBmb3JtVmFsdWUuY2FyZE5vIHx8ICcnLFxyXG4gICAgICAgIGlkVHlwZTogZm9ybVZhbHVlLmlkVHlwZSB8fCAnJyxcclxuICAgICAgICBpZE5vOiBmb3JtVmFsdWUuaWRObyB8fCAnJyxcclxuICAgICAgICBzZW5kZXJOYW1lOiBmb3JtVmFsdWUuc2VuZGVyTmFtZSB8fCAnJyxcclxuICAgICAgICBiZW5lZmljaWFyeU5hbWU6IGZvcm1WYWx1ZS5iZW5lZmljaWFyeU5hbWUgfHwgJycsXHJcbiAgICAgICAgdGVsTm86IGZvcm1WYWx1ZS50ZWxObyB8fCAnJyxcclxuICAgICAgICBwYXlvdXRBbW91bnQ6IGZvcm1WYWx1ZS5yZWNlaXZlQW1vdW50IHx8ICcnLFxyXG4gICAgICAgIGJyYW5jaE5hbWU6IGZvcm1WYWx1ZS5icmFuY2hOYW1lIHx8ICcnLFxyXG4gICAgICAgIGNvbXBhbnk6IHRoaXMuY29tcGFueUNvZGUgfHwgJycsXHJcbiAgICAgICAgY291bnRyeTogZm9ybVZhbHVlLmNvdW50cnkgfHwgJycsXHJcbiAgICAgICAgc3lzVXNlcklEOiB0aGlzLmN1cnJlbnRVc2VyLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLlJlcG9ydE5hbWUgPT0gXCJCcmFuY2ggQWN0aXZpdHkgU2VuZFwiKSB7XHJcbiAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuc2VhcmNoRm9ybS52YWx1ZTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBtb2RhbDogZm9ybVZhbHVlLFxyXG4gICAgICAgIHN5c1VzZXJJRDogdGhpcy5jdXJyZW50VXNlclxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuUmVwb3J0TmFtZSA9PSBcIkJyYW5jaCBBY3Rpdml0eSBSZWNlaXZlXCIpIHtcclxuICAgICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5zZWFyY2hGb3JtLnZhbHVlO1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIG1vZGFsOiBmb3JtVmFsdWUsXHJcbiAgICAgICAgc3lzVXNlcklEOiB0aGlzLmN1cnJlbnRVc2VyXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLlJlcG9ydE5hbWUgPT0gXCJDYW5jZWxsYXRpb24gVHJhbnNhY3Rpb25cIil7XHJcbiAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuc2VhcmNoRm9ybS52YWx1ZTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBtb2RhbDogZm9ybVZhbHVlLFxyXG4gICAgICAgIHN5c1VzZXJJRDogdGhpcy5jdXJyZW50VXNlclxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICBpZiAodGhpcy5SZXBvcnROYW1lID09IFwiQWNjb3VudGluZ1wiKSB7XHJcbiAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuc2VhcmNoRm9ybS52YWx1ZTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBtb2RhbDogZm9ybVZhbHVlLFxyXG4gICAgICAgIHN5c1VzZXJJRDogdGhpcy5jdXJyZW50VXNlclxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0b0lzb0Zvcm1hdChkYXRlSW5wdXQ6IGFueSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAoIWRhdGVJbnB1dCkgcmV0dXJuIHVuZGVmaW5lZDtcclxuXHJcbiAgICAvLyBIYW5kbGUgeyB5ZWFyLCBtb250aCwgZGF5IH1cclxuICAgIGlmIChcclxuICAgICAgdHlwZW9mIGRhdGVJbnB1dCA9PT0gJ29iamVjdCcgJiZcclxuICAgICAgZGF0ZUlucHV0LnllYXIgJiZcclxuICAgICAgZGF0ZUlucHV0Lm1vbnRoICYmXHJcbiAgICAgIGRhdGVJbnB1dC5kYXlcclxuICAgICkge1xyXG4gICAgICBjb25zdCB5ZWFyID0gZGF0ZUlucHV0LnllYXI7XHJcbiAgICAgIGNvbnN0IG1vbnRoID0gU3RyaW5nKGRhdGVJbnB1dC5tb250aCkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgY29uc3QgZGF5ID0gU3RyaW5nKGRhdGVJbnB1dC5kYXkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgIHJldHVybiBgJHt5ZWFyfS0ke21vbnRofS0ke2RheX1gO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEhhbmRsZSBKUyBEYXRlIG9iamVjdFxyXG4gICAgaWYgKGRhdGVJbnB1dCBpbnN0YW5jZW9mIERhdGUpIHtcclxuICAgICAgaWYgKGlzTmFOKGRhdGVJbnB1dC5nZXRUaW1lKCkpKSByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICBjb25zdCB5ZWFyID0gZGF0ZUlucHV0LmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgIGNvbnN0IG1vbnRoID0gU3RyaW5nKGRhdGVJbnB1dC5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgY29uc3QgZGF5ID0gU3RyaW5nKGRhdGVJbnB1dC5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgIHJldHVybiBgJHt5ZWFyfS0ke21vbnRofS0ke2RheX1gO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEhhbmRsZSBkZC9NTS95eXl5IHN0cmluZ1xyXG4gICAgaWYgKHR5cGVvZiBkYXRlSW5wdXQgPT09ICdzdHJpbmcnICYmIGRhdGVJbnB1dC5pbmNsdWRlcygnLycpKSB7XHJcbiAgICAgIGNvbnN0IHBhcnRzID0gZGF0ZUlucHV0LnNwbGl0KCcvJyk7XHJcbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDMpIHtcclxuICAgICAgICBjb25zdCBbZGF5LCBtb250aCwgeWVhcl0gPSBwYXJ0cztcclxuICAgICAgICByZXR1cm4gYCR7eWVhcn0tJHttb250aC5wYWRTdGFydCgyLCAnMCcpfS0ke2RheS5wYWRTdGFydCgyLCAnMCcpfWA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBIYW5kbGUgSVNPIHN0cmluZyAoeXl5eS1NTS1kZCBvciB5eXl5LU1NLWRkVEhIOm1tOnNzLnNzc1opXHJcbiAgICBpZiAodHlwZW9mIGRhdGVJbnB1dCA9PT0gJ3N0cmluZycgJiYgL15cXGR7NH0tXFxkezJ9LVxcZHsyfS8udGVzdChkYXRlSW5wdXQpKSB7XHJcbiAgICAgIC8vIFVzZSBvbmx5IGRhdGUgcGFydCBpZiBmdWxsIElTTyBzdHJpbmdcclxuICAgICAgcmV0dXJuIGRhdGVJbnB1dC5zdWJzdHJpbmcoMCwgMTApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBvbk9wZW4oKSB7XHJcbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XHJcbiAgfVxyXG4gIG9uQ2xvc2UoKSB7XHJcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldCBlcnJvck1lc3NhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9lcnJvck1lc3NhZ2U7XHJcbiAgfVxyXG5cclxuICBzZXQgZXJyb3JNZXNzYWdlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2Vycm9yTWVzc2FnZSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzTG9hZGluZygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmxvYWRpbmdTdGF0ZSA9PT0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkxvYWRpbmc7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNFcnJvcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmxvYWRpbmdTdGF0ZSA9PT0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkVycm9yO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0Q2xpZW50KGNsaWVudDogYW55KSB7XHJcbiAgICB0aGlzLnNlYXJjaEZvcm0uY29udHJvbHNbXCJjbGllbnRcIl0uc2V0VmFsdWUoY2xpZW50KTtcclxuICAgIHRoaXMuc2VhcmNoRm9ybS5jb250cm9sc1tcImJyYW5jaFwiXS5zZXRWYWx1ZShudWxsKTtcclxuICAgIHRoaXMub25BZ2VudFNlbGVjdGVkKGNsaWVudCk7XHJcbiAgfVxyXG5cclxuICBvbkFnZW50U2VsZWN0ZWQoY29kZTogYW55KSB7XHJcbiAgICBpZiAodGhpcy5zZWFyY2hGb3JtLmNvbnRyb2xzWydjbGllbnQnXS52YWx1ZSA9PT0gbnVsbCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlYXJjaEZvcm0uY29udHJvbHNbJ2JyYW5jaCddLnBhdGNoVmFsdWUobnVsbCk7XHJcbiAgICBpZiAodGhpcy5SZXBvcnROYW1lID09IFwiQnJhbmNoIEFjdGl2aXR5IFNlbmRcIikge1xyXG4gICAgICB0aGlzLnJlcG9ydFNlcnZpY2UuZ2V0QnJhbmNoQnlBZ2VudCh0aGlzLmN1cnJlbnRVc2VyLCBjb2RlKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmJyYW5jaGVzID0gZGF0YTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAvLyB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZXMuQ29tcGxldGU7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJlenJlbWl0dXNlcm5hbWVcIikpIHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmJyYW5jaGVzLmZpbmRJbmRleCgoYnJhbmNoKSA9PiBicmFuY2guYnJhbmNoQ29kZSA9PT0gXCJBbGxcIik7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA9PSAtMSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VhcmNoRm9ybS5jb250cm9sc1snYnJhbmNoJ10uc2V0VmFsdWUodGhpcy5icmFuY2hlc1swXS5icmFuY2hDb2RlKVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VhcmNoRm9ybS5jb250cm9sc1snYnJhbmNoJ10uc2V0VmFsdWUoJ0FsbCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcImZvc3NpbHVzZXJuYW1lXCIpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoRm9ybS5jb250cm9sc1snYnJhbmNoJ10uc2V0VmFsdWUoJ0FsbCcpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGVzLkNvbXBsZXRlO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLlJlcG9ydE5hbWUgPT09IFwiQnJhbmNoIEFjdGl2aXR5IFJlY2VpdmVcIikge1xyXG4gICAgICB0aGlzLnJlcG9ydFNlcnZpY2UuZ2V0QnJhbmNoQWN0aXZpdHlSZWNlaXZlUGF5b3V0QWdlbnRCcmFuY2godGhpcy5jdXJyZW50VXNlciwgY29kZSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5icmFuY2hlcyA9IGRhdGE7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgLy8gdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGVzLkNvbXBsZXRlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgIGlmIChzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwiZXpyZW1pdHVzZXJuYW1lXCIpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5icmFuY2hlcy5maW5kSW5kZXgoKGJyYW5jaCkgPT4gYnJhbmNoLmJyYW5jaENvZGUgPT09IFwiQWxsXCIpO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPT0gLTEpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaEZvcm0uY29udHJvbHNbJ2JyYW5jaCddLnNldFZhbHVlKHRoaXMuYnJhbmNoZXNbMF0uYnJhbmNoQ29kZSlcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaEZvcm0uY29udHJvbHNbJ2JyYW5jaCddLnNldFZhbHVlKCdBbGwnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJmb3NzaWx1c2VybmFtZVwiKSkge1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaEZvcm0uY29udHJvbHNbJ2JyYW5jaCddLnNldFZhbHVlKCdBbGwnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyBhY2NvdW50aW5nIHJlcG9ydCBcclxuXHJcbiAgIGlmICh0aGlzLlJlcG9ydE5hbWUgPT0gXCJBY2NvdW50aW5nXCIpIHtcclxuICAgICAgdGhpcy5yZXBvcnRTZXJ2aWNlLmdldEJyYW5jaEJ5QWdlbnRGb3JBY2NvdW50aW5nUmVwb3J0KHRoaXMuY3VycmVudFVzZXIsIGNvZGUpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKGRhdGEpID0+IHtcclxuICAgICAgICAgIHRoaXMuYnJhbmNoZXMgPSBkYXRhO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgIC8vIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcy5Db21wbGV0ZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICBpZiAoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcImV6cmVtaXR1c2VybmFtZVwiKSkge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuYnJhbmNoZXMuZmluZEluZGV4KChicmFuY2gpID0+IGJyYW5jaC5icmFuY2hDb2RlID09PSBcIkFsbFwiKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4ID09IC0xKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hGb3JtLmNvbnRyb2xzWydicmFuY2gnXS5zZXRWYWx1ZSh0aGlzLmJyYW5jaGVzWzBdLmJyYW5jaENvZGUpXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hGb3JtLmNvbnRyb2xzWydicmFuY2gnXS5zZXRWYWx1ZSgnQWxsJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcy5Db21wbGV0ZTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2xpZW50U2VsZWN0ZWQoKSB7XHJcbiAgICB0aGlzLnNlYXJjaEZvcm0uZ2V0KCdjbGllbnQnKT8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsKSA9PiB7XHJcbiAgICAgIHZhbCA9IHRoaXMuc2VhcmNoRm9ybS5nZXQoJ2NsaWVudCcpPy52YWx1ZTtcclxuICAgICAgdGhpcy5vbkFnZW50U2VsZWN0ZWQodmFsKTtcclxuICAgIH0pXHJcbiAgfVxyXG59XHJcbiIsIjxoNiBjbGFzcz1cIkJyZWFkY3J1bWJcIj5cclxuICA8YSBjbGFzcz1cIkJyZWFkQ3J1bWJMaW5rXCIgW3JvdXRlckxpbmtdPVwiWycvcmVwb3J0cyddXCI+XHJcbiAgICA8aDE+UmVwb3J0czwvaDE+XHJcbiAgPC9hPlxyXG4gIDxhIGhyZWY9XCJCcmVhZENydW1iTGlua1wiPjwvYT5cclxuICA8c3BhbiBjbGFzcz1cIkJyZWFkQ3J1bWJBcnJvd1wiPjwvc3Bhbj5cclxuICA8YSBjbGFzcz1cIkJyZWFkQ3J1bWJMaW5rXCI+XHJcbiAgICA8aDI+e3sgUmVwb3J0TmFtZSB9fTwvaDI+XHJcbiAgPC9hPlxyXG48L2g2PlxyXG5cclxuPGFwcC1sb2FkZXIgKm5nSWY9XCJsb2FkaW5nU3RhdGUgPT09IENvbXBvbmVudExvYWRpbmdTdGF0ZS5Mb2FkaW5nXCI+PC9hcHAtbG9hZGVyPlxyXG48c2VjdGlvbj5cclxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cInNlYXJjaEZvcm1cIiAobmdTdWJtaXQpPVwib25TZWFyY2goKVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWN1c3RvbS0xMC01XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1ncmlkXCI+XHJcblxyXG4gICAgICAgICAgPCEtLSBEeW5hbWljYWxseSByZW5kZXIgZmlsdGVycyBpbiBvcmRlciAtLT5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIHZpc2libGVGaWVsZHNcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZmllbGRcIj5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSBDbGllbnQgLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRcIiAqbmdTd2l0Y2hDYXNlPVwiJ2NsaWVudCdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgbGFiZWwtZGF0YVwiPkNsaWVudDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXNlbGVjdCBbaXRlbXNdPVwiY2xpZW50czFcIiBiaW5kTGFiZWw9XCJidXNpbmVzc1BhcnRuZXJOYW1lXCIgYmluZFZhbHVlPVwiYnVzaW5lc3NQYXJ0bmVyQ29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBDbGllbnRcIiBbY2xlYXJhYmxlXT1cImZhbHNlXCIgZm9ybUNvbnRyb2xOYW1lPVwiY2xpZW50XCIgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25DbGllbnRDaGFuZ2UoKVwiIChvcGVuKT1cIm9uT3BlbigpXCIgKGNsb3NlKT1cIm9uQ2xvc2UoKVwiIFtzZWFyY2hhYmxlXT1cImlzT3BlblwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZy1vcHRpb24tdG1wIGxldC1pdGVtPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbdGl0bGVdPVwiaXRlbS5idXNpbmVzc1BhcnRuZXJOYW1lXCI+e3sgaXRlbS5idXNpbmVzc1BhcnRuZXJOYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPG5nLXNlbGVjdCBbaXRlbXNdPVwiY2xpZW50czFcIiBiaW5kTGFiZWw9XCJidXNpbmVzc1BhcnRuZXJOYW1lXCIgYmluZFZhbHVlPVwiYnVzaW5lc3NQYXJ0bmVyQ29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBDbGllbnRcIiBbY2xlYXJhYmxlXT1cImZhbHNlXCIgZm9ybUNvbnRyb2xOYW1lPVwiY2xpZW50XCIgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25DbGllbnRDaGFuZ2UoKVwiIChvcGVuKT1cIm9uT3BlbigpXCIgKGNsb3NlKT1cIm9uQ2xvc2UoKVwiIFtzZWFyY2hhYmxlXT1cImlzT3BlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctc2VsZWN0PiAtLT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSBCcmFuY2ggLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRcIiAqbmdTd2l0Y2hDYXNlPVwiJ2JyYW5jaCdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgbGFiZWwtZGF0YVwiPkJyYW5jaDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXNlbGVjdCBbaXRlbXNdPVwiYnJhbmNoZXNcIiBiaW5kTGFiZWw9XCJidXNpbmVzc1BhcnRuZXJCcmFuY2hcIiBiaW5kVmFsdWU9XCJicmFuY2hDb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IEJyYW5jaFwiIFtjbGVhcmFibGVdPVwiZmFsc2VcIiBmb3JtQ29udHJvbE5hbWU9XCJicmFuY2hcIiByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkJyYW5jaENoYW5nZSgpXCIgKG9wZW4pPVwib25PcGVuKClcIiAoY2xvc2UpPVwib25DbG9zZSgpXCIgW3NlYXJjaGFibGVdPVwiaXNPcGVuXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nLW9wdGlvbi10bXAgbGV0LWl0ZW09XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFt0aXRsZV09XCJpdGVtLmJ1c2luZXNzUGFydG5lckJyYW5jaFwiPnt7IGl0ZW0uYnVzaW5lc3NQYXJ0bmVyQnJhbmNoIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPG5nLXNlbGVjdCBbaXRlbXNdPVwiYnJhbmNoZXNcIiBiaW5kTGFiZWw9XCJidXNpbmVzc1BhcnRuZXJCcmFuY2hcIiBiaW5kVmFsdWU9XCJicmFuY2hDb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IEJyYW5jaFwiIFtjbGVhcmFibGVdPVwiZmFsc2VcIiBmb3JtQ29udHJvbE5hbWU9XCJicmFuY2hcIiByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkJyYW5jaENoYW5nZSgpXCIgKG9wZW4pPVwib25PcGVuKClcIiAoY2xvc2UpPVwib25DbG9zZSgpXCIgW3NlYXJjaGFibGVdPVwiaXNPcGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIEZyb20gRGF0ZSAtLT5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZFwiICpuZ1N3aXRjaENhc2U9XCInZnJvbURhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsIGxhYmVsLWRhdGFcIj5Gcm9tIERhdGU8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBkYXRlLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZHBpY2tlclwiIHBsYWNlaG9sZGVyPVwiZGQvbW0veXl5eVwiIG5nYkRhdGVwaWNrZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgI2Zyb21EYXRlSW5wdXQ9XCJuZ2JEYXRlcGlja2VyXCIgZm9ybUNvbnRyb2xOYW1lPVwiZnJvbURhdGVcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImlucHV0LWdyb3VwLWJ1dHRvbiBjYWxcIiAoY2xpY2spPVwiZnJvbURhdGVJbnB1dC50b2dnbGUoKVwiIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jYWxlbmRhclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIFRvIERhdGUgLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRcIiAqbmdTd2l0Y2hDYXNlPVwiJ3RvRGF0ZSdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgbGFiZWwtZGF0YVwiPlRvIERhdGU8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBkYXRlLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZHBpY2tlclwiIHBsYWNlaG9sZGVyPVwiZGQvbW0veXl5eVwiIG5nYkRhdGVwaWNrZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgI3RvRGF0ZUlucHV0PVwibmdiRGF0ZXBpY2tlclwiIGZvcm1Db250cm9sTmFtZT1cInRvRGF0ZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYnV0dG9uIGNhbFwiIChjbGljayk9XCJ0b0RhdGVJbnB1dC50b2dnbGUoKVwiIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jYWxlbmRhclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIFByb2R1Y3QgLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRcIiAqbmdTd2l0Y2hDYXNlPVwiJ3Byb2R1Y3QnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsIGxhYmVsLWRhdGFcIj5Qcm9kdWN0PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctc2VsZWN0IFtpdGVtc109XCJwcm9kdWN0c1wiIGJpbmRMYWJlbD1cInByb2R1Y3ROYW1lXCIgYmluZFZhbHVlPVwicHJvZHVjdENvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgUHJvZHVjdFwiIFtjbGVhcmFibGVdPVwiZmFsc2VcIiBmb3JtQ29udHJvbE5hbWU9XCJwcm9kdWN0XCIgKG9wZW4pPVwib25PcGVuKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsb3NlKT1cIm9uQ2xvc2UoKVwiIFtzZWFyY2hhYmxlXT1cImlzT3BlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIFVzZXIgLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRcIiAqbmdTd2l0Y2hDYXNlPVwiJ3VzZXJJZCdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgbGFiZWwtZGF0YVwiPlVzZXI8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1zZWxlY3QgW2l0ZW1zXT1cInVzZXJzXCIgYmluZExhYmVsPVwidXNlck5hbWVcIiBiaW5kVmFsdWU9XCJ1c2VySWRcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBVc2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjbGVhcmFibGVdPVwiZmFsc2VcIiBmb3JtQ29udHJvbE5hbWU9XCJ1c2VySWRcIiByZXF1aXJlZCAob3Blbik9XCJvbk9wZW4oKVwiIChjbG9zZSk9XCJvbkNsb3NlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaGFibGVdPVwiaXNPcGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDwhLS0gQ3VycmVuY3kgLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRcIiAqbmdTd2l0Y2hDYXNlPVwiJ2N1cnJlbmN5J1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBsYWJlbC1kYXRhXCI+Q3VycmVuY3k8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1zZWxlY3QgW2l0ZW1zXT1cImN1cnJlbmNpZXNcIiBiaW5kVmFsdWU9XCJjdXJyZW5jeUNvZGVcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBDdXJyZW5jeVwiIFtjbGVhcmFibGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY3VycmVuY3lcIiAob3Blbik9XCJvbk9wZW4oKVwiIChjbG9zZSk9XCJvbkNsb3NlKClcIiBbc2VhcmNoYWJsZV09XCJpc09wZW5cIj5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVGVtcGxhdGUgZm9yIGRyb3Bkb3duIG9wdGlvbnMgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmctb3B0aW9uLXRtcCBsZXQtaXRlbT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbdGl0bGVdPVwiaXRlbS5jdXJyZW5jeUNvZGUgPT09ICdBbGwnID8gJ0FsbCcgOiAoaXRlbS5jdXJyZW5jeUNvZGUgKyAnIC0gJyArIGl0ZW0uY3VycmVuY3kpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5jdXJyZW5jeUNvZGUgPT09ICdBbGwnID8gJ0FsbCcgOiAoaXRlbS5jdXJyZW5jeUNvZGUgKyAnIC8gJyArIGl0ZW0uY3VycmVuY3kpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVGVtcGxhdGUgZm9yIHNlbGVjdGVkIHZhbHVlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nLWxhYmVsLXRtcCBsZXQtaXRlbT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbdGl0bGVdPVwiaXRlbS5jdXJyZW5jeUNvZGUgPT09ICdBbGwnID8gJ0FsbCcgOiAoaXRlbS5jdXJyZW5jeUNvZGUgKyAnIC0gJyArIGl0ZW0uY3VycmVuY3kpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5jdXJyZW5jeUNvZGUgPT09ICdBbGwnID8gJ0FsbCcgOiAoaXRlbS5jdXJyZW5jeUNvZGUgKyAnIC8gJyArIGl0ZW0uY3VycmVuY3kpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8L25nLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSBUcmFuc2FjdGlvbiBTdGF0dXMgKE11bHRpLXNlbGVjdCkgLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRcIiAqbmdTd2l0Y2hDYXNlPVwiJ3RyYW5zYWN0aW9uU3RhdHVzJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBsYWJlbC1kYXRhXCI+VHhuLiBTdGF0dXM8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1zZWxlY3QgY2xhc3M9XCJ0cmFuc2FjdGlvbi1zdGF0dXMtc2VsZWN0XCIgW2l0ZW1zXT1cInRyYW5zYWN0aW9uU3RhdHVzZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgYmluZExhYmVsPVwidHJhbnNhY3Rpb25TdGF0dXNcIiBiaW5kVmFsdWU9XCJ0cmFuc2FjdGlvblN0YXR1c1wiIFttdWx0aXBsZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFRyYW5zYWN0aW9uIFN0YXR1c1wiIGZvcm1Db250cm9sTmFtZT1cInRyYW5zYWN0aW9uU3RhdHVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjbG9zZU9uU2VsZWN0XT1cImZhbHNlXCIgW2NsZWFyYWJsZV09XCJmYWxzZVwiIFtzZWFyY2hhYmxlXT1cImZhbHNlXCIgcmVxdWlyZWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmctb3B0aW9uLXRtcCBsZXQtaXRlbT1cIml0ZW1cIiBsZXQtaXRlbSQ9XCJpdGVtJFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiaXRlbSQuc2VsZWN0ZWRcIiAvPiB7eyBpdGVtLnRyYW5zYWN0aW9uU3RhdHVzIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIFRyYW5zYWN0aW9uIE5vIC0tPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkXCIgKm5nU3dpdGNoQ2FzZT1cIid0cmFuc2FjdGlvbk5vJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBsYWJlbC1kYXRhXCI+VHhuLiBOdW1iZXI8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBkcGlja2VyXCIgZm9ybUNvbnRyb2xOYW1lPVwidHJhbnNhY3Rpb25Ob1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHRyYW5zYWN0aW9uIG51bWJlclwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDwhLS0gVmFsdWUgRGF0ZSAtLT5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZFwiICpuZ1N3aXRjaENhc2U9XCIndmFsdWVEYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBsYWJlbC1kYXRhXCI+VmFsdWUgRGF0ZTxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBkcGlja2VyXCIgcGxhY2Vob2xkZXI9XCJkZC9tbS95eXl5XCIgbmdiRGF0ZXBpY2tlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAjdG9EYXRlSW5wdXQ9XCJuZ2JEYXRlcGlja2VyXCIgZm9ybUNvbnRyb2xOYW1lPVwidG9EYXRlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJ0b0RhdGVJbnB1dC50b2dnbGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNhbGVuZGFyXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDwhLS0gU2VuZCBDb3VudHJ5IC0tPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkXCIgKm5nU3dpdGNoQ2FzZT1cIidzZW5kQ291bnRyeSdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgbGFiZWwtZGF0YVwiPlNlbmQgQ291bnRyeTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXNlbGVjdCBbaXRlbXNdPVwiY291bnRyaWVzXCIgYmluZExhYmVsPVwiY291bnRyeVwiIGJpbmRWYWx1ZT1cImNvdW50cnlDb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFByb2R1Y3RcIiBbY2xlYXJhYmxlXT1cImZhbHNlXCIgZm9ybUNvbnRyb2xOYW1lPVwic2VuZENvdW50cnlcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmctb3B0aW9uLXRtcCBsZXQtaXRlbT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW3RpdGxlXT1cIml0ZW0uY291bnRyeVwiPnt7IGl0ZW0uY291bnRyeSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctc2VsZWN0PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy1zZWxlY3QgW2l0ZW1zXT1cImNvdW50cmllc1wiIGJpbmRMYWJlbD1cImNvdW50cnlcIiBiaW5kVmFsdWU9XCJjb3VudHJ5Q29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBQcm9kdWN0XCIgW2NsZWFyYWJsZV09XCJmYWxzZVwiIGZvcm1Db250cm9sTmFtZT1cInNlbmRDb3VudHJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIFJlY2VpdmUgQ291bnRyeSAtLT5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZFwiICpuZ1N3aXRjaENhc2U9XCIncmVjZWl2ZUNvdW50cnknXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsIGxhYmVsLWRhdGFcIj5SZWNlaXZlIENvdW50cnk8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1zZWxlY3QgW2l0ZW1zXT1cImNvdW50cmllc1wiIGJpbmRMYWJlbD1cImNvdW50cnlcIiBiaW5kVmFsdWU9XCJjb3VudHJ5Q29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBQcm9kdWN0XCIgW2NsZWFyYWJsZV09XCJmYWxzZVwiIGZvcm1Db250cm9sTmFtZT1cInJlY2VpdmVDb3VudHJ5XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nLW9wdGlvbi10bXAgbGV0LWl0ZW09XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFt0aXRsZV09XCJpdGVtLmNvdW50cnlcIj57eyBpdGVtLmNvdW50cnkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXNlbGVjdD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctc2VsZWN0IFtpdGVtc109XCJjb3VudHJpZXNcIiBiaW5kTGFiZWw9XCJjb3VudHJ5XCIgYmluZFZhbHVlPVwiY291bnRyeUNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgUHJvZHVjdFwiIFtjbGVhcmFibGVdPVwiZmFsc2VcIiBmb3JtQ29udHJvbE5hbWU9XCJyZWNlaXZlQ291bnRyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctc2VsZWN0PiAtLT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLVRyYW5zYWN0aW9uIFByb2R1Y3QgLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRcIiAqbmdTd2l0Y2hDYXNlPVwiJ3RyYW5zYWN0aW9uUHJvZHVjdCdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgbGFiZWwtZGF0YVwiPlByb2R1Y3Q8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1zZWxlY3QgW2l0ZW1zXT1cInRyYW5zYWN0aW9uUHJvZHVjdHNcIiBiaW5kTGFiZWw9XCJuYW1lXCIgYmluZFZhbHVlPVwicHJvZHVjdENvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgUHJvZHVjdFwiIFtjbGVhcmFibGVdPVwiZmFsc2VcIiBmb3JtQ29udHJvbE5hbWU9XCJwcm9kdWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDwhLS0gRGF0ZSBUeXBlIC0tPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkXCIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlVHlwZSdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgbGFiZWwtZGF0YVwiPkRhdGUgVHlwZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXNlbGVjdCBwbGFjZWhvbGRlcj1cIi0gUGxlYXNlIHNlbGVjdCAtXCIgZm9ybUNvbnRyb2xOYW1lPVwiZGF0ZVR5cGVcIiBbY2xlYXJhYmxlXT1cImZhbHNlXCIgcmVxdWlyZWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctb3B0aW9uIFt2YWx1ZV09XCIxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlIERhdGVcclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLW9wdGlvbiBbdmFsdWVdPVwiMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBQb3N0aW5nIERhdGVcclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gRGF0ZSAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkXCIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBsYWJlbC1kYXRhXCI+RGF0ZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIGRhdGUtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGRwaWNrZXJcIiBwbGFjZWhvbGRlcj1cImRkL21tL3l5eXlcIiBuZ2JEYXRlcGlja2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgI3RvRGF0ZUlucHV0PVwibmdiRGF0ZXBpY2tlclwiIGZvcm1Db250cm9sTmFtZT1cImRhdGVcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYnV0dG9uIGNhbFwiIChjbGljayk9XCJ0b0RhdGVJbnB1dC50b2dnbGUoKVwiIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNhbGVuZGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gcmVjZWl2ZUN1cnJlbmN5IC0tPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkXCIgKm5nU3dpdGNoQ2FzZT1cIidyZWNlaXZlQ3VycmVuY3knXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsIGxhYmVsLWRhdGFcIj5SZWNlaXZlIEN1cnJlbmN5PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctc2VsZWN0IFtpdGVtc109XCJjdXJyZW5jaWVzXCIgYmluZFZhbHVlPVwiY3VycmVuY3lDb2RlXCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgUmVjZWl2ZSBDdXJyZW5jeVwiIFtjbGVhcmFibGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmVjZWl2ZUN1cnJlbmN5XCIgcmVxdWlyZWQgKGNoYW5nZSk9XCJvbkJyYW5jaENoYW5nZSgpXCIgKG9wZW4pPVwib25PcGVuKClcIiAoY2xvc2UpPVwib25DbG9zZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hhYmxlXT1cImlzT3BlblwiPlxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBEcm9wZG93biBvcHRpb25zIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nLW9wdGlvbi10bXAgbGV0LWl0ZW09XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW3RpdGxlXT1cIml0ZW0uY3VycmVuY3lDb2RlID09PSAnQWxsJyA/ICdBbGwnIDogKGl0ZW0uY3VycmVuY3lDb2RlICsgJyAtICcgKyBpdGVtLmN1cnJlbmN5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uY3VycmVuY3lDb2RlID09PSAnQWxsJyA/ICdBbGwnIDogKGl0ZW0uY3VycmVuY3lDb2RlICsgJyAvICcgKyBpdGVtLmN1cnJlbmN5KSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNlbGVjdGVkIHZhbHVlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nLWxhYmVsLXRtcCBsZXQtaXRlbT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbdGl0bGVdPVwiaXRlbS5jdXJyZW5jeUNvZGUgPT09ICdBbGwnID8gJ0FsbCcgOiAoaXRlbS5jdXJyZW5jeUNvZGUgKyAnIC0gJyArIGl0ZW0uY3VycmVuY3kpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5jdXJyZW5jeUNvZGUgPT09ICdBbGwnID8gJ0FsbCcgOiAoaXRlbS5jdXJyZW5jeUNvZGUgKyAnIC8gJyArIGl0ZW0uY3VycmVuY3kpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8L25nLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1jdXN0b20tMS01XCI+XHJcbiAgICAgICAgPCEtLSBWaWV3IFJlcG9ydCBCdXR0b24gKEFsd2F5cyBhdCBUb3AtUmlnaHQpIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkIHZpZXctcmVwb3J0LWJ0blwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXJlcG9ydFwiPlZpZXc8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Zvcm0+XHJcbjwvc2VjdGlvbj5cclxuPGhyPlxyXG48IS0tIEVycm9yIE1lc3NhZ2VzIC0tPlxyXG48ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyIG10LTNcIiAqbmdJZj1cImZvcm1WYWxpZGF0aW9uRXJyb3IgJiYgaGFzU2VhcmNoZWRcIj5cclxuICBQbGVhc2UgZmlsbCBhbGwgcmVxdWlyZWQgZmllbGRzIGJlZm9yZSBzdWJtaXR0aW5nIHRoZSBmb3JtLlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXIgbXQtM1wiICpuZ0lmPVwiZXJyb3JNZXNzYWdlICYmIGxvYWRpbmdTdGF0ZSA9PT0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkVycm9yXCI+XHJcbiAge3sgZXJyb3JNZXNzYWdlIH19XHJcbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiAoY2xpY2spPVwiZXJyb3JNZXNzYWdlID0gJydcIj48L2J1dHRvbj5cclxuPC9kaXY+Il19
877
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yZXBvcnRzLWxpYi9zcmMvbGliL3NoYXJlZC9zZWFyY2gtZmlsdGVyL3NlYXJjaC1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmVwb3J0cy1saWIvc3JjL2xpYi9zaGFyZWQvc2VhcmNoLWZpbHRlci9zZWFyY2gtZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLHFCQUFxQixFQUE4RCxNQUFNLG1FQUFtRSxDQUFDO0FBQ3RLLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFXM0MsTUFBTSxPQUFPLHFCQUFxQjtJQXlEaEMsWUFDVSxhQUE0QixFQUM1QixFQUFlLEVBQ2YsTUFBcUI7UUFGckIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLFdBQU0sR0FBTixNQUFNLENBQWU7UUExRHJCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUdsRCx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFDN0IsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFF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cUI7c0dBQXJCLHFCQUFxQiw0SUNqQmxDLHUvbEJBZ1hNOzJGRC9WTyxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0UsbUJBQW1COzBKQU1wQixVQUFVO3NCQUFsQixLQUFLO2dCQUNJLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT25EZXN0cm95LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29tcG9uZW50TG9hZGluZ1N0YXRlLCBDbGllbnQsIEJyYW5jaCwgQ3VycmVuY3ksIFByb2R1Y3QsIFRyYW5zYWN0aW9uU3RhdHVzLCBVc2VyIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RyYW5zYWN0aW9uLWVucXVpcnktcmVwb3J0L3RyYW5zYWN0aW9uLWVucXVpcnkubW9kZWwnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZvcmtKb2luLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUmVwb3J0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlcG9ydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbmZpZy5zZXJ2aWNlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1zZWFyY2gtZmlsdGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLWZpbHRlci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgU2VhcmNoRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIFJlcG9ydE5hbWUhOiBzdHJpbmc7XHJcbiAgQE91dHB1dCgpIHNlYXJjaENsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgc2VhcmNoRm9ybSE6IEZvcm1Hcm91cDtcclxuICBmb3JtVmFsaWRhdGlvbkVycm9yOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIGxvYWRpbmdTdGF0ZTogQ29tcG9uZW50TG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkNvbXBsZXRlO1xyXG4gIENvbXBvbmVudExvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZTtcclxuICBoYXNTZWFyY2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2Vycm9yTWVzc2FnZTogc3RyaW5nID0gJyc7XHJcblxyXG4gIGN1cnJlbnRVc2VyOiBzdHJpbmcgPSAnJztcclxuICB1c2VybmFtZU1pc3Npbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB0b2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2FjY2Vzc190b2tlbicpO1xyXG4gIGFwcGxpY2F0aW9uVHlwZSA9ICdlenJlbWl0JztcclxuICBjb21wYW55Q29kZSA9ICdCSCc7XHJcbiAgc2VydmljZVVybDogc3RyaW5nO1xyXG4gIHB1YmxpYyBpc09wZW4gPSBmYWxzZTtcclxuXHJcbiAgY2xpZW50czE6IENsaWVudFtdID0gW107XHJcbiAgYnJhbmNoZXM6IEJyYW5jaFtdID0gW107XHJcbiAgdXNlcnM6IFVzZXJbXSA9IFtdO1xyXG4gIGN1cnJlbmNpZXM6IEN1cnJlbmN5W10gPSBbXTtcclxuICBwcm9kdWN0czogUHJvZHVjdFtdID0gW107XHJcbiAgdHJhbnNhY3Rpb25TdGF0dXNlczogVHJhbnNhY3Rpb25TdGF0dXNbXSA9IFtdO1xyXG4gIHNlbGVjdGVkU3RhdHVzZXM6IHN0cmluZ1tdID0gW107XHJcbiAgc2hvd1N0YXR1c0Ryb3Bkb3duOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdmlzaWJsZUZpZWxkS2V5czogc3RyaW5nW10gPSBbXTtcclxuICBwYXJhbXM6IGFueTtcclxuICBjb3VudHJpZXM6IGFueVtdID0gW107XHJcbiAgdHJhbnNhY3Rpb25Qcm9kdWN0czogYW55W10gPSBbXTtcclxuICBkYXRlVHlwZTogYW55ID0gMTtcclxuICBkYXRlOiBhbnk7XHJcblxyXG4gIC8vIEZpZWxkIHZpc2liaWxpdHkgbWFwLCAnZnJvbURhdGUnLCAndG9EYXRlJywncHJvZHVjdCcsJ3VzZXJJZCcsJ2N1cnJlbmN5JywndHJhbnNhY3Rpb25TdGF0dXMnLCd0cmFuc2FjdGlvbk5vJ1xyXG4gIHZpc2libGVGaWVsZHNNYXA6IHsgW3JlcG9ydDogc3RyaW5nXTogc3RyaW5nW10gfSA9IHtcclxuICAgICdUcmFuc2FjdGlvbiBFbnF1aXJ5JzogWydjbGllbnQnLCAnZnJvbURhdGUnLCAndG9EYXRlJywgJ2JyYW5jaCcsICdwcm9kdWN0JywgJ2N1cnJlbmN5JywgJ3RyYW5zYWN0aW9uU3RhdHVzJywgJ3RyYW5zYWN0aW9uTm8nXSxcclxuICAgICdGQyBMZWRnZXInOiBbJ2NsaWVudCcsICdmcm9tRGF0ZScsICd0b0RhdGUnLCAnY3VycmVuY3knLCAncHJvZHVjdCddLFxyXG4gICAgJ0JyYW5jaCBBY3Rpdml0eSBTZW5kJzogWydjbGllbnQnLCAnZnJvbURhdGUnLCAndG9EYXRlJywgJ2JyYW5jaCcsICd0cmFuc2FjdGlvblByb2R1Y3QnLCAnY3VycmVuY3knLCAndHJhbnNhY3Rpb25TdGF0dXMnLCAnc2VuZENvdW50cnknLCAncmVjZWl2ZUNvdW50cnknXSxcclxuICAgICdBQ0MgR0wgRGV0YWlscyBFbnF1aXJ5JzogWydkYXRlVHlwZScsICdkYXRlJ10sXHJcbiAgICAnQnJhbmNoIEFjdGl2aXR5IFJlY2VpdmUnOiBbJ2NsaWVudCcsICdmcm9tRGF0ZScsICd0b0RhdGUnLCAnYnJhbmNoJywgJ3RyYW5zYWN0aW9uUHJvZHVjdCcsICdjdXJyZW5jeScsICd0cmFuc2FjdGlvblN0YXR1cycsICdzZW5kQ291bnRyeScsICdyZWNlaXZlQ291bnRyeSddLFxyXG4gICAgJ0NhbmNlbGxhdGlvbiBUcmFuc2FjdGlvbic6WydjbGllbnQnLCdmcm9tRGF0ZScsJ3RvRGF0ZScsJ2JyYW5jaCcsJ3NlbmRDb3VudHJ5JywncmVjZWl2ZUNvdW50cnknLCdwcm9kdWN0JywncmVjZWl2ZUN1cnJlbmN5J10sXHJcbiAgICAnQWNjb3VudGluZyc6IFsnY2xpZW50JywgJ2Zyb21EYXRlJywgJ3RvRGF0ZScsICdicmFuY2gnLCAndHJhbnNhY3Rpb25Qcm9kdWN0JywgJ2N1cnJlbmN5JywgJ3RyYW5zYWN0aW9uU3RhdHVzJywgJ3NlbmRDb3VudHJ5JywgJ3JlY2VpdmVDb3VudHJ5J10sXHJcblxyXG4gICAgLy8gQWRkIG1vcmUgcmVwb3J0IHR5cGVzIGhlcmVcclxuICB9O1xyXG5cclxuICBnZXQgdmlzaWJsZUZpZWxkcygpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gdGhpcy52aXNpYmxlRmllbGRzTWFwW3RoaXMuUmVwb3J0TmFtZV0gfHwgW107XHJcbiAgfVxyXG5cclxuICBpc0ZpZWxkVmlzaWJsZShmaWVsZDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy52aXNpYmxlRmllbGRzLmluY2x1ZGVzKGZpZWxkKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZXBvcnRTZXJ2aWNlOiBSZXBvcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIGNvbmZpZzogQ29uZmlnU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5zZXJ2aWNlVXJsID0gdGhpcy5jb25maWcuZ2V0LnNlcnZpY2VVcmw7XHJcbiAgICBsZXQgZm9zc2lsVXNlciA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2Zvc3NpbHVzZXJuYW1lJyk7XHJcbiAgICBsZXQgZXpyZW1pdFVzZXIgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdlenJlbWl0dXNlcm5hbWUnKTtcclxuXHJcbiAgICBpZiAoZm9zc2lsVXNlcikgdGhpcy5jdXJyZW50VXNlciA9IGZvc3NpbFVzZXI7XHJcbiAgICBlbHNlIGlmIChlenJlbWl0VXNlcikgdGhpcy5jdXJyZW50VXNlciA9IGV6cmVtaXRVc2VyO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMudXNlcm5hbWVNaXNzaW5nID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuY3VycmVudFVzZXIgPSB0aGlzLmN1cnJlbnRVc2VyLnJlcGxhY2UoL15bXCInXSguKilbXCInXSQvLCAnJDEnKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jaGVja1JlcG9ydCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tSZXBvcnQoKSB7XHJcbiAgICBpZiAodGhpcy5SZXBvcnROYW1lID09IFwiVHJhbnNhY3Rpb24gRW5xdWlyeVwiKSB7XHJcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm0oKTtcclxuICAgICAgdGhpcy5zdWJzY3JpYmVUb0RhdGVDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMubG9hZEluaXRpYWxEYXRhKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5SZXBvcnROYW1lID09IFwiQnJhbmNoIEFjdGl2aXR5IFNlbmRcIikge1xyXG4gICAgICB0aGlzLmluaXRpYWxpemVGb3JtKCk7XHJcbiAgICAgIHRoaXMubG9hZEluaXRpYWxEYXRhKCk7XHJcbiAgICAgIHRoaXMuc3Vic2NyaWJlVG9EYXRlQ2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuUmVwb3J0TmFtZSA9PSBcIkFDQyBHTCBEZXRhaWxzIEVucXVpcnlcIikge1xyXG4gICAgICB0aGlzLmluaXRpYWxpemVGb3JtKCk7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLlJlcG9ydE5hbWUgPT0gXCJDYW5jZWxsYXRpb24gVHJhbnNhY3Rpb25cIil7XHJcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm0oKTtcclxuICAgICAgdGhpcy5sb2FkSW5pdGlhbERhdGEoKTtcclxuICAgICAgdGhpcy5zdWJzY3JpYmVUb0RhdGVDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5SZXBvcnROYW1lID09PSBcIkJyYW5jaCBBY3Rpdml0eSBSZWNlaXZlXCIpIHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplRm9ybSgpO1xyXG4gICAgICB0aGlzLmxvYWRJbml0aWFsRGF0YSgpO1xyXG4gICAgICB0aGlzLnN1YnNjcmliZVRvRGF0ZUNoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLlJlcG9ydE5hbWUgPT0gXCJBY2NvdW50aW5nXCIpIHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplRm9ybSgpO1xyXG4gICAgICB0aGlzLmxvYWRJbml0aWFsRGF0YSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9hZEluaXRpYWxEYXRhKCkge1xyXG4gICAgaWYgKHRoaXMuUmVwb3J0TmFtZSA9PSAnVHJhbnNhY3Rpb24gRW5xdWlyeScpIHtcclxuICAgICAgdGhpcy5sb2FkSW5pdGlhbERhdGFmb3J0eG5FbnF1aXJ5KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuUmVwb3J0TmFtZSA9PSBcIkJyYW5jaCBBY3Rpdml0eSBTZW5kXCIpIHtcclxuICAgICAgdGhpcy5sb2FkSW5pdGlhbERhdGFmb3JCcmFuY2hBY3Rpdml0eVNlbmQoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5SZXBvcnROYW1lID09PSBcIkJyYW5jaCBBY3Rpdml0eSBSZWNlaXZlXCIpIHtcclxuICAgICAgdGhpcy5sb2FkSW5pdGlhbERhdGFmb3JCcmFuY2hBY3Rpdml0eVJlY2VpdmUoKTtcclxuICAgIH1cclxuICAgIGlmKHRoaXMuUmVwb3J0TmFtZSA9PSBcIkNhbmNlbGxhdGlvbiBUcmFuc2FjdGlvblwiKXtcclxuICAgICAgdGhpcy5sb2FkSW5pdGlhbERhdGFGb3JDYW5jZWxsYXRpb25SZXBvcnQoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLlJlcG9ydE5hbWUgPT0gXCJBY2NvdW50aW5nXCIpIHtcclxuICAgICAgdGhpcy5sb2FkSW5pdGlhbERhdGFmb3JBY2NvdW50aW5nKCk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUZvcm0oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5SZXBvcnROYW1lID09IFwiVHJhbnNhY3Rpb24gRW5xdWlyeVwiKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoRm9ybSA9IHRoaXMuZmIuZ3JvdXAoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY2xpZW50OiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICBmcm9tRGF0ZTogW25ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF0sIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgdG9EYXRlOiBbbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICBicmFuY2g6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgIHVzZXJJZDogWyctMSddLFxyXG4gICAgICAgICAgY3VycmVuY3k6IFsnQWxsJ10sXHJcbiAgICAgICAgICBwcm9kdWN0OiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICB0cmFuc2FjdGlvblN0YXR1czogW1snQWxsJ10sIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgdHJhbnNhY3Rpb25ObzogWycnXSxcclxuICAgICAgICAgIGNhcmRObzogWycnXSxcclxuICAgICAgICAgIGlkVHlwZTogWycnXSxcclxuICAgICAgICAgIGlkTm86IFsnJ10sXHJcbiAgICAgICAgICBzZW5kZXJOYW1lOiBbJyddLFxyXG4gICAgICAgICAgYmVuZWZpY2lhcnlOYW1lOiBbJyddLFxyXG4gICAgICAgICAgdGVsTm86IFsnJ10sXHJcbiAgICAgICAgICByZWNlaXZlQW1vdW50OiBbJyddLFxyXG4gICAgICAgICAgYnJhbmNoTmFtZTogWycnXSxcclxuICAgICAgICAgIGNvdW50cnk6IFsnJ10sXHJcbiAgICAgICAgfSxcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5SZXBvcnROYW1lID09IFwiQUNDIEdMIERldGFpbHMgRW5xdWlyeVwiKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoRm9ybSA9IHRoaXMuZmIuZ3JvdXAoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgZGF0ZTogW25ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF0sIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgZGF0ZVR5cGU6IFsxLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLlJlcG9ydE5hbWUgPT0gXCJCcmFuY2ggQWN0aXZpdHkgU2VuZFwiKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoRm9ybSA9IHRoaXMuZmIuZ3JvdXAoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY2xpZW50OiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICBmcm9tRGF0ZTogW25ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF0sIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgdG9EYXRlOiBbbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICBicmFuY2g6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgIGN1cnJlbmN5OiBbJ0FsbCddLFxyXG4gICAgICAgICAgcHJvZHVjdDogWydBbGwnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgIHRyYW5zYWN0aW9uU3RhdHVzOiBbWydBbGwnXSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICBzZW5kQ291bnRyeTogWydBbGwnXSxcclxuICAgICAgICAgIHJlY2VpdmVDb3VudHJ5OiBbJ0FsbCddXHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLlJlcG9ydE5hbWUgPT0gXCJCcmFuY2ggQWN0aXZpdHkgUmVjZWl2ZVwiKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoRm9ybSA9IHRoaXMuZmIuZ3JvdXAoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY2xpZW50OiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICBmcm9tRGF0ZTogW25ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF0sIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgdG9EYXRlOiBbbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICBicmFuY2g6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgIGN1cnJlbmN5OiBbJ0FsbCddLFxyXG4gICAgICAgICAgcHJvZHVjdDogWydBbGwnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgIHRyYW5zYWN0aW9uU3RhdHVzOiBbWydBbGwnXSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICBzZW5kQ291bnRyeTogWydBbGwnXSxcclxuICAgICAgICAgIHJlY2VpdmVDb3VudHJ5OiBbJ0FsbCddXHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMuUmVwb3J0TmFtZSA9PSBcIkNhbmNlbGxhdGlvbiBUcmFuc2FjdGlvblwiKXtcclxuICAgICAgdGhpcy5zZWFyY2hGb3JtID0gdGhpcy5mYi5ncm91cChcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjbGllbnQ6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgIGZyb21EYXRlOiBbbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICB0b0RhdGU6IFtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgIGJyYW5jaDogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgc2VuZENvdW50cnk6IFtudWxsXSxcclxuICAgICAgICAgIHJlY2VpdmVDb3VudHJ5OiBbbnVsbF0sXHJcbiAgICAgICAgICBwcm9kdWN0OiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICByZWNlaXZlQ3VycmVuY3k6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuUmVwb3J0TmFtZSA9PSBcIkFjY291bnRpbmdcIikge1xyXG4gICAgICB0aGlzLnNlYXJjaEZvcm0gPSB0aGlzLmZiLmdyb3VwKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNsaWVudDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgIGZyb21EYXRlOiBbbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICB0b0RhdGU6IFtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgIGJyYW5jaDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgIGN1cnJlbmN5OiBbJ0FsbCddLFxyXG4gICAgICAgICAgcHJvZHVjdDogWydBbGwnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgIHRyYW5zYWN0aW9uU3RhdHVzOiBbWydBbGwnXSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICBzZW5kQ291bnRyeTogWydBbGwnXSxcclxuICAgICAgICAgIHJlY2VpdmVDb3VudHJ5OiBbJ0FsbCddXHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9hZEluaXRpYWxEYXRhZm9yQnJhbmNoQWN0aXZpdHlTZW5kKCkge1xyXG4gICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGUuTG9hZGluZztcclxuICAgIGZvcmtKb2luKHtcclxuICAgICAgcGFyYW1zOiB0aGlzLnJlcG9ydFNlcnZpY2UuZ2V0UGFyYW1zKCkucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKGVyciA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIHBhcmFtcycsIGVycik7XHJcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKSxcclxuICAgICAgY2xpZW50czogdGhpcy5yZXBvcnRTZXJ2aWNlLmdldFBheUluQWdlbnRzKHRoaXMuY3VycmVudFVzZXIpLnBpcGUoXHJcbiAgICAgICAgbWFwKChjbGllbnRzOiBhbnlbXSk6IENsaWVudFtdID0+XHJcbiAgICAgICAgICBjbGllbnRzLm1hcCgoY2xpZW50LCBpbmRleCkgPT4gKHtcclxuICAgICAgICAgICAgYnVzaW5lc3NQYXJ0bmVyTmFtZTogY2xpZW50LmFnZW50LFxyXG4gICAgICAgICAgICBidXNpbmVzc1BhcnRuZXJDb2RlOiBjbGllbnQuY29kZSxcclxuICAgICAgICAgICAgZGlzcGxheU9yZGVyOiBpbmRleCAvLyBvciB1c2Ugc29tZSB2YWx1ZSBmcm9tIHRoZSBBUEkgaWYgYXZhaWxhYmxlXHJcbiAgICAgICAgICB9KSlcclxuICAgICAgICApLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgY2xpZW50cycsIGVycik7XHJcbiAgICAgICAgICByZXR1cm4gb2YoW10pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgIH0pLnN1YnNjcmliZShcclxuICAgICAge1xyXG4gICAgICAgIG5leHQ6ICh7IHBhcmFtcywgY2xpZW50cyB9KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBhcmFtcyA9IHBhcmFtcztcclxuICAgICAgICAgIHRoaXMuY2xpZW50czEgPSBjbGllbnRzO1xyXG4gICAgICAgICAgLy8gdGhpcy5jbGllbnRzRGF0YSA9IFsuLi5jbGllbnRzXTtcclxuICAgICAgICAgIHRoaXMuY291bnRyaWVzID0gWy4uLnBhcmFtcz8uY291bnRyaWVzXVxyXG4gICAgICAgICAgdGhpcy5jdXJyZW5jaWVzID0gWy4uLnBhcmFtcz8uY3VycmVuY2llc107XHJcbiAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uU3RhdHVzZXMgPSBbLi4ucGFyYW1zPy50cmFuc2FjdGlvblN0YXR1c1R5cGVzXTtcclxuICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25Qcm9kdWN0cyA9IFsuLi5wYXJhbXM/LnRyYW5zYWN0aW9uUHJvZHVjdFR5cGVzXTtcclxuICAgICAgICAgIGlmICghc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnZm9zc2lsdXNlcm5hbWUnKSAmJiB0aGlzLmNsaWVudHMxPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RDbGllbnQodGhpcy5jbGllbnRzMVswXS5idXNpbmVzc1BhcnRuZXJDb2RlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcy5Db21wbGV0ZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiBlcnIgPT4ge1xyXG4gICAgICAgICAgLy8gT2NjdXJzIG9ubHkgaWYgYW4gaW5uZXIgY2F0Y2hFcnJvciBzdGlsbCByZXRocm93c1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcignVW5leHBlY3RlZCBmb3JrSm9pbiBlcnJvcicsIGVycik7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZS5Db21wbGV0ZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZS5Db21wbGV0ZTtcclxuICAgICAgICAgIHRoaXMub25DbGllbnRTZWxlY3RlZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgbG9hZEluaXRpYWxEYXRhZm9ydHhuRW5xdWlyeSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkxvYWRpbmc7XHJcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICcnO1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMucmVwb3J0U2VydmljZVxyXG4gICAgICAgIC5nZXRQYWdlTG9hZERhdGEodGhpcy5jdXJyZW50VXNlcilcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG5cclxuICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICB0aGlzLmNsaWVudHMxID0gZGF0YS5jbGllbnRzIHx8IFtdO1xyXG4gICAgICAgIHRoaXMuY3VycmVuY2llcyA9IGRhdGEuY3VycmVuY2llcyB8fCBbXTtcclxuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uU3RhdHVzZXMgPSAoZGF0YS50cmFuc2FjdGlvblN0YXR1c2VzIHx8IFtdKS5maWx0ZXIoXHJcbiAgICAgICAgICB0cyA9PiB0cy50cmFuc2FjdGlvblN0YXR1cyAhPT0gJydcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICF0aGlzLnRyYW5zYWN0aW9uU3RhdHVzZXMuc29tZShcclxuICAgICAgICAgICAgcyA9PiBzLnRyYW5zYWN0aW9uU3RhdHVzID09PSAnQWxsJ1xyXG4gICAgICAgICAgKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy50cmFuc2FjdGlvblN0YXR1c2VzLnVuc2hpZnQoe1xyXG4gICAgICAgICAgICB0cmFuc2FjdGlvblN0YXR1czogJ0FsbCcsXHJcbiAgICAgICAgICB9IGFzIFRyYW5zYWN0aW9uU3RhdHVzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNsaWVudHMxLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hGb3JtLnBhdGNoVmFsdWUoe1xyXG4gICAgICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50czFbMF0uYnVzaW5lc3NQYXJ0bmVyQ29kZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5vbkNsaWVudENoYW5nZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGUuQ29tcGxldGU7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdGYWlsZWQgdG8gbG9hZCBpbml0aWFsIGRhdGEnO1xyXG4gICAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZS5FcnJvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICAgbG9hZEluaXRpYWxEYXRhZm9yQnJhbmNoQWN0aXZpdHlSZWNlaXZlKCkge1xyXG4gICAgICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkxvYWRpbmc7XHJcbiAgICAgICAgZm9ya0pvaW4oe1xyXG4gICAgICAgICAgICBwYXJhbXM6IHRoaXMucmVwb3J0U2VydmljZS5nZXRCcmFuY2hBY3Rpdml0eVJlY2VpdmVQYXJhbXMoKVxyXG4gICAgICAgICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcihlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgcGFyYW1zJywgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgcGF5b3V0QWdlbnRzOiB0aGlzLnJlcG9ydFNlcnZpY2UuZ2V0QWxsUGF5T3V0QWdlbnRzKHRoaXMuY3VycmVudFVzZXIpXHJcbiAgICAgICAgICAgICAgICAucGlwZShtYXAoKGNsaWVudHM6IGFueVtdKTogQ2xpZW50W10gPT5cclxuICAgICAgICAgICAgICAgICAgICBjbGllbnRzLm1hcCgoY2xpZW50LCBpbmRleCkgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnVzaW5lc3NQYXJ0bmVyTmFtZTogY2xpZW50LmFnZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBidXNpbmVzc1BhcnRuZXJDb2RlOiBjbGllbnQuY29kZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU9yZGVyOiBjbGllbnQubnVtYmVyXHJcbiAgICAgICAgICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgICAgICAgICApLCBjYXRjaEVycm9yKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKFtdKTtcclxuICAgICAgICAgICAgICAgIH0pKVxyXG4gICAgICAgIH0pLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIG5leHQ6ICh7IHBhcmFtcywgcGF5b3V0QWdlbnRzIH0pID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFyYW1zID0gcGFyYW1zO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jbGllbnRzMSA9IHBheW91dEFnZW50cztcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMuY2xpZW50c0RhdGEgPSBbLi4uY2xpZW50c107XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvdW50cmllcyA9IFsuLi5wYXJhbXM/LmNvdW50cmllc11cclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVuY2llcyA9IFsuLi5wYXJhbXM/LmN1cnJlbmNpZXNdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvblN0YXR1c2VzID0gWy4uLnBhcmFtcz8udHJhbnNhY3Rpb25TdGF0dXNUeXBlc107XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uUHJvZHVjdHMgPSBbLi4ucGFyYW1zPy50cmFuc2FjdGlvblByb2R1Y3RUeXBlc107XHJcbiAgICAgICAgICAgICAgICBpZiAoIXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2Zvc3NpbHVzZXJuYW1lJykgJiYgdGhpcy5jbGllbnRzMT8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RDbGllbnQodGhpcy5jbGllbnRzMVswXS5idXNpbmVzc1BhcnRuZXJDb2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcy5Db21wbGV0ZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyb3I6IGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBPY2N1cnMgb25seSBpZiBhbiBpbm5lciBjYXRjaEVycm9yIHN0aWxsIHJldGhyb3dzXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdVbmV4cGVjdGVkIGZvcmtKb2luIGVycm9yJywgZXJyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkNvbXBsZXRlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGUuQ29tcGxldGU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2xpZW50U2VsZWN0ZWQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbiAgcHJpdmF0ZSBhc3luYyBsb2FkSW5pdGlhbERhdGFGb3JDYW5jZWxsYXRpb25SZXBvcnQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZS5Mb2FkaW5nO1xyXG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnJztcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5yZXBvcnRTZXJ2aWNlXHJcbiAgICAgICAgLmxvYWREYXRhZm9yQ2FuY2FsbGF0aW9uKHRoaXMuY3VycmVudFVzZXIpXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgIC50b1Byb21pc2UoKTtcclxuXHJcbiAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgdGhpcy5jb3VudHJpZXMgPSBkYXRhLmNvdW50cmllcyA/PyBbXTtcclxuICAgICAgICB0aGlzLmNsaWVudHMxID0gKGRhdGEucGF5SW5BZ2VudHMgPz8gW10pLm1hcCgoYWdlbnQsIGluZGV4KSA9PiAoe1xyXG4gICAgICAgICAgYnVzaW5lc3NQYXJ0bmVyTmFtZTogYWdlbnQuYWdlbnQsXHJcbiAgICAgICAgICBidXNpbmVzc1BhcnRuZXJDb2RlOiBhZ2VudC5jb2RlLFxyXG4gICAgICAgICAgZGlzcGxheU9yZGVyOiBpbmRleFxyXG4gICAgICAgIH0pKTtcclxuICAgICAgICB0aGlzLnByb2R1Y3RzID0gKGRhdGEucHJvZHVjdFR5cGVzID8/IFtdKS5tYXAoKHB0LCBpbmRleCkgPT4gKHtcclxuICAgICAgICAgIHByb2R1Y3RDb2RlOiBwdC5wcm9kdWN0Q29kZSxcclxuICAgICAgICAgIHByb2R1Y3ROYW1lOiBwdC5uYW1lLFxyXG4gICAgICAgICAgbnVtYmVyOiBpbmRleCxcclxuICAgICAgICAgIHNlcnZpY2VUeXBlQ29kZTogcHQuc2VydmljZVR5cGVDb2RlIHx8ICcnXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHRoaXMuY3VycmVuY2llcyA9IGRhdGEuY3VycmVuY2llcyA/PyBbXTtcclxuXHJcbiAgICAgICAgdGhpcy5zZWFyY2hGb3JtLnBhdGNoVmFsdWUoe1xyXG4gICAgICAgICAgcHJvZHVjdDogdGhpcy5wcm9kdWN0c1swXT8ucHJvZHVjdENvZGUsXHJcbiAgICAgICAgICByZWNlaXZlQ291bnRyeTogdGhpcy5jb3VudHJpZXNbMF0/LmNvdW50cnksXHJcbiAgICAgICAgICBzZW5kQ291bnRyeTogdGhpcy5jb3VudHJpZXNbMF0/LmNvdW50cnksXHJcbiAgICAgICAgICByZWNlaXZlQ3VycmVuY3k6IHRoaXMuY3VycmVuY2llc1swXT8uY3VycmVuY3lDb2RlXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIElmIG9ubHkgb25lIGNsaWVudCwgcHJlc2VsZWN0XHJcbiAgICAgICAgaWYgKHRoaXMuY2xpZW50czEubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaEZvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgICAgICAgIGNsaWVudDogdGhpcy5jbGllbnRzMVswXS5idXNpbmVzc1BhcnRuZXJDb2RlXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGF3YWl0IHRoaXMub25DbGllbnRDaGFuZ2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gTm8gZGF0YSBjYXNlXHJcbiAgICAgICAgdGhpcy5jb3VudHJpZXMgPSBbXTtcclxuICAgICAgICB0aGlzLmNsaWVudHMxID0gW107XHJcbiAgICAgICAgdGhpcy5wcm9kdWN0cyA9IFtdO1xyXG4gICAgICAgIHRoaXMuY3VycmVuY2llcyA9IFtdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZS5Db21wbGV0ZTtcclxuXHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIGNhbmNlbGxhdGlvbiByZXBvcnQgZGF0YScsIGVycm9yKTtcclxuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnRmFpbGVkIHRvIGxvYWQgY2FuY2VsbGF0aW9uIHJlcG9ydCBkYXRhJztcclxuICAgICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGUuRXJyb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgXHJcbiAgICBsb2FkSW5pdGlhbERhdGFmb3JBY2NvdW50aW5nKCkge1xyXG4gICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGUuTG9hZGluZztcclxuICBcclxuICAgIGZvcmtKb2luKHtcclxuICAgICAgY2xpZW50czogdGhpcy5yZXBvcnRTZXJ2aWNlLmdldENsaWVudHNGb3JBY2NvdW50aW5nUmVwb3J0KHRoaXMuY3VycmVudFVzZXIpLnBpcGUoXHJcbiAgICAgICAgbWFwKChjbGllbnRzOiBhbnlbXSk6IENsaWVudFtdID0+XHJcbiAgICAgICAgICBjbGllbnRzLm1hcCgoY2xpZW50LCBpbmRleCkgPT4gKHtcclxuICAgICAgICAgICAgYnVzaW5lc3NQYXJ0bmVyTmFtZTogY2xpZW50LmFnZW50LFxyXG4gICAgICAgICAgICBidXNpbmVzc1BhcnRuZXJDb2RlOiBjbGllbnQuY29kZSxcclxuICAgICAgICAgICAgZGlzcGxheU9yZGVyOiBpbmRleFxyXG4gICAgICAgICAgfSkpXHJcbiAgICAgICAgKSxcclxuICAgICAgICBjYXRjaEVycm9yKGVyciA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIGNsaWVudHMnLCBlcnIpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKFtdKTtcclxuICAgICAgICB9KVxyXG4gICAgICApLFxyXG4gICAgICBwcm9kdWN0czogdGhpcy5yZXBvcnRTZXJ2aWNlLmdldFRyYW5zYWN0aW9uVHlwZXNGb3JBY2NvdW50aW5nUmVwb3J0KCkucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKGVyciA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIHRyYW5zYWN0aW9uIHR5cGVzJywgZXJyKTtcclxuICAgICAgICAgIHJldHVybiBvZihbXSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKSxcclxuICAgICAgY3VycmVuY2llczogdGhpcy5yZXBvcnRTZXJ2aWNlLmdldEFsbEN1cnJlbmNpZXNGb3JBY2NvdW50aW5nUmVwb3J0KCkucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKGVyciA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIGN1cnJlbmNpZXMnLCBlcnIpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKFtdKTtcclxuICAgICAgICB9KVxyXG4gICAgICApLFxyXG4gICAgICBzdGF0dXNlczogdGhpcy5yZXBvcnRTZXJ2aWNlLmdldEFsbFRyYW5zYWN0aW9uU3RhdHVzRm9yQWNjb3VudGluZ1JlcG9ydCgpLnBpcGUoXHJcbiAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBzdGF0dXNlcycsIGVycik7XHJcbiAgICAgICAgICByZXR1cm4gb2YoW10pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICksXHJcbiAgICAgIGNvdW50cmllczogdGhpcy5yZXBvcnRTZXJ2aWNlLmdldEFsbENvdW50cmllc0ZvckFjY291bnRpbmdSZXBvcnQoKS5waXBlKFxyXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgY291bnRyaWVzJywgZXJyKTtcclxuICAgICAgICAgIHJldHVybiBvZihbXSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgfSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHsgY2xpZW50cywgcHJvZHVjdHMsIGN1cnJlbmNpZXMsIHN0YXR1c2VzLCBjb3VudHJpZXMgfSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2xpZW50czEgPSBjbGllbnRzO1xyXG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb25Qcm9kdWN0cyA9IHByb2R1Y3RzO1xyXG4gICAgICAgIHRoaXMuY3VycmVuY2llcyA9IGN1cnJlbmNpZXM7XHJcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvblN0YXR1c2VzID0gc3RhdHVzZXM7XHJcbiAgICAgICAgdGhpcy5jb3VudHJpZXMgPSBjb3VudHJpZXM7XHJcbiAgXHJcbiAgICAgICAgLy8gUHJlc2VsZWN0IGZpcnN0IGNsaWVudCBpZiBub25lIGNob3NlblxyXG4gICAgICAgIGlmICghc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnZm9zc2lsdXNlcm5hbWUnKSAmJiB0aGlzLmNsaWVudHMxPy5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0Q2xpZW50KHRoaXMuY2xpZW50czFbMF0uYnVzaW5lc3NQYXJ0bmVyQ29kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogZXJyID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdVbmV4cGVjdGVkIGZvcmtKb2luIGVycm9yIGluIEFjY291bnRpbmcgaW5pdCcsIGVycik7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGUuRXJyb3I7XHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGUuQ29tcGxldGU7XHJcbiAgICAgICAgdGhpcy5vbkNsaWVudFNlbGVjdGVkKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIFxyXG4gIH1cclxuXHJcblxyXG5cclxuICBwcml2YXRlIHN1YnNjcmliZVRvRGF0ZUNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaEZvcm0uZ2V0KCdmcm9tRGF0ZScpPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGZyb21EYXRlU3RyID0+IHtcclxuICAgICAgY29uc3QgdG9EYXRlQ29udHJvbCA9IHRoaXMuc2VhcmNoRm9ybS5nZXQoJ3RvRGF0ZScpO1xyXG4gICAgICBjb25zdCB0b0RhdGVTdHIgPSB0b0RhdGVDb250cm9sPy52YWx1ZTtcclxuICAgICAgaWYgKCFmcm9tRGF0ZVN0ciB8fCAhdG9EYXRlU3RyKSByZXR1cm47XHJcbiAgICAgIGNvbnN0IGZyb21EYXRlID0gbmV3IERhdGUoZnJvbURhdGVTdHIpO1xyXG4gICAgICBjb25zdCB0b0RhdGUgPSBuZXcgRGF0ZSh0b0RhdGVTdHIpO1xyXG5cclxuICAgICAgY29uc3QgbWF4VG9EYXRlID0gbmV3IERhdGUoZnJvbURhdGUpO1xyXG4gICAgICBtYXhUb0RhdGU/LnNldERhdGUoZnJvbURhdGUuZ2V0RGF0ZSgpICsgMzEpO1xyXG4gICAgICBpZiAodG9EYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApID4gbWF4VG9EYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApIHx8IHRvRGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKSA8IGZyb21EYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApKSB7XHJcbiAgICAgICAgbWF4VG9EYXRlLnNldEhvdXJzKDEyLCAwLCAwLCAwKTtcclxuICAgICAgICB0b0RhdGVDb250cm9sPy5wYXRjaFZhbHVlKG1heFRvRGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXSk7XHJcbiAgICAgICAgY29uc29sZS5sb2codG9EYXRlQ29udHJvbCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc2VhcmNoRm9ybS5nZXQoJ3RvRGF0ZScpPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHRvRGF0ZVN0ciA9PiB7XHJcbiAgICAgIGNvbnN0IGZyb21EYXRlQ29udHJvbCA9IHRoaXMuc2VhcmNoRm9ybS5nZXQoJ2Zyb21EYXRlJyk7XHJcbiAgICAgIGNvbnN0IGZyb21EYXRlU3RyID0gZnJvbURhdGVDb250cm9sPy52YWx1ZTtcclxuICAgICAgaWYgKCF0b0RhdGVTdHIgfHwgIWZyb21EYXRlU3RyKSByZXR1cm47XHJcbiAgICAgIGNvbnN0IHRvRGF0ZSA9IG5ldyBEYXRlKHRvRGF0ZVN0cik7XHJcbiAgICAgIGNvbnN0IGZyb21EYXRlID0gbmV3IERhdGUoZnJvbURhdGVTdHIpO1xyXG5cclxuICAgICAgY29uc3QgbWluRnJvbURhdGUgPSBuZXcgRGF0ZSh0b0RhdGUpO1xyXG4gICAgICBtaW5Gcm9tRGF0ZT8uc2V0RGF0ZSh0b0RhdGUuZ2V0RGF0ZSgpIC0gMzEpO1xyXG4gICAgICBpZiAoZnJvbURhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCkgPCBtaW5Gcm9tRGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKSkge1xyXG4gICAgICAgIG1pbkZyb21EYXRlLnNldEhvdXJzKDEyLCAwLCAwLCAwKTtcclxuICAgICAgICBmcm9tRGF0ZUNvbnRyb2w/LnBhdGNoVmFsdWUobWluRnJvbURhdGUudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBhc3luYyBvbkNsaWVudENoYW5nZSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuXHJcbiAgICBpZiAodGhpcy5SZXBvcnROYW1lID09IFwiVHJhbnNhY3Rpb24gRW5xdWlyeVwiKSB7XHJcbiAgICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkxvYWRpbmc7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkQ2xpZW50ID0gdGhpcy5zZWFyY2hGb3JtLmdldCgnY2xpZW50Jyk/LnZhbHVlO1xyXG4gICAgICBpZiAoIXNlbGVjdGVkQ2xpZW50KSByZXR1cm47XHJcblxyXG4gICAgICB0aGlzLnNlYXJjaEZvcm0ucGF0Y2hWYWx1ZSh7IGJyYW5jaDogJycsIHVzZXJJZDogJycgfSk7XHJcbiAgICAgIHRoaXMuYnJhbmNoZXMgPSBbXTtcclxuICAgICAgdGhpcy5wcm9kdWN0cyA9IFtdO1xyXG4gICAgICB0aGlzLnVzZXJzID0gW107XHJcblxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFtcclxuICAgICAgICAgIHRoaXMubG9hZEJyYW5jaGVzQnlBZ2VudChzZWxlY3RlZENsaWVudCksXHJcbiAgICAgICAgICB0aGlzLmxvYWRQcm9kdWN0c0J5QWdlbnQoc2VsZWN0ZWRDbGllbnQpLFxyXG4gICAgICAgIF0pO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoRm9ybS5wYXRjaFZhbHVlKHsgcHJvZHVjdDogJ0FsbCcgfSk7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGUuQ29tcGxldGU7XHJcbiAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ0ZhaWxlZCB0byBsb2FkIGJyYW5jaC9wcm9kdWN0JztcclxuICAgICAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZS5Db21wbGV0ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLlJlcG9ydE5hbWUgPT0gXCJCcmFuY2ggQWN0aXZpdHkgU2VuZFwiKSB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkQ2xpZW50ID0gdGhpcy5zZWFyY2hGb3JtLmdldCgnY2xpZW50Jyk/LnZhbHVlO1xyXG4gICAgICBpZiAoIXNlbGVjdGVkQ2xpZW50KSByZXR1cm47XHJcbiAgICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkxvYWRpbmc7XHJcbiAgICAgIHRoaXMucmVwb3J0U2VydmljZS5nZXRCcmFuY2hCeUFnZW50KHRoaXMuY3VycmVudFVzZXIsIHNlbGVjdGVkQ2xpZW50KS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmJyYW5jaGVzID0gZGF0YTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZS5Db21wbGV0ZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICBpZiAoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcImV6cmVtaXR1c2VybmFtZVwiKSkge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuYnJhbmNoZXMuZmluZEluZGV4KChicmFuY2gpID0+IGJyYW5jaC5icmFuY2hDb2RlID09PSBcIkFsbFwiKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4ID09IC0xKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hGb3JtLmNvbnRyb2xzWydicmFuY2gnXS5zZXRWYWx1ZSh0aGlzLmJyYW5jaGVzWzBdLmJyYW5jaENvZGUpXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hGb3JtLmNvbnRyb2xzWydicmFuY2gnXS5zZXRWYWx1ZSgnQWxsJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkNvbXBsZXRlO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLlJlcG9ydE5hbWUgPT09IFwiQnJhbmNoIEFjdGl2aXR5IFJlY2VpdmVcIikge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZENsaWVudCA9IHRoaXMuc2VhcmNoRm9ybS5nZXQoJ2NsaWVudCcpPy52YWx1ZTtcclxuICAgICAgaWYgKCFzZWxlY3RlZENsaWVudCkgcmV0dXJuO1xyXG4gICAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZS5Mb2FkaW5nO1xyXG4gICAgICB0aGlzLnJlcG9ydFNlcnZpY2UuZ2V0QnJhbmNoQWN0aXZpdHlSZWNlaXZlUGF5b3V0QWdlbnRCcmFuY2godGhpcy5jdXJyZW50VXNlciwgc2VsZWN0ZWRDbGllbnQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKGRhdGEpID0+IHtcclxuICAgICAgICAgIHRoaXMuYnJhbmNoZXMgPSBkYXRhO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkNvbXBsZXRlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgIGlmIChzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwiZXpyZW1pdHVzZXJuYW1lXCIpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5icmFuY2hlcy5maW5kSW5kZXgoKGJyYW5jaCkgPT4gYnJhbmNoLmJyYW5jaENvZGUgPT09IFwiQWxsXCIpO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPT0gLTEpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaEZvcm0uY29udHJvbHNbJ2JyYW5jaCddLnNldFZhbHVlKHRoaXMuYnJhbmNoZXNbMF0uYnJhbmNoQ29kZSlcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaEZvcm0uY29udHJvbHNbJ2JyYW5jaCddLnNldFZhbHVlKCdBbGwnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGUuQ29tcGxldGU7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuUmVwb3J0TmFtZSA9PSBcIkNhbmNlbGxhdGlvbiBUcmFuc2FjdGlvblwiKSB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZS5Mb2FkaW5nO1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnJztcclxuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkQ2xpZW50ID0gdGhpcy5zZWFyY2hGb3JtLmdldCgnY2xpZW50Jyk/LnZhbHVlO1xyXG4gICAgXHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5yZXBvcnRTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgLmdldEJyYW5jaGVzKHNlbGVjdGVkQ2xpZW50LCB0aGlzLmN1cnJlbnRVc2VyKVxyXG4gICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAgICAgICAudG9Qcm9taXNlKCk7XHJcbiAgICBcclxuICAgICAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgICAgICB0aGlzLmJyYW5jaGVzID0gZGF0YTtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaEZvcm0ucGF0Y2hWYWx1ZSh7YnJhbmNoOiB0aGlzLmJyYW5jaGVzWzBdLmJyYW5jaENvZGV9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZS5Db21wbGV0ZTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gbG9hZCBicmFuY2hlcycsIGVycm9yKTtcclxuICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnRmFpbGVkIHRvIGxvYWQgYnJhbmNoIGRhdGEnO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZS5FcnJvcjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBcclxuICAgICAgICAgICAgLy8gYWNjb3VudGluZyByZXBvcnRcclxuICAgICAgICBcclxuICAgICAgICAgICAgaWYgKHRoaXMuUmVwb3J0TmFtZSA9PSBcIkFjY291bnRpbmdcIikge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkQ2xpZW50ID0gdGhpcy5zZWFyY2hGb3JtLmdldCgnY2xpZW50Jyk/LnZhbHVlO1xyXG4gICAgICAgICAgICAgIGlmICghc2VsZWN0ZWRDbGllbnQpIHJldHVybjtcclxuICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZS5Mb2FkaW5nO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVwb3J0U2VydmljZS5nZXRCcmFuY2hCeUFnZW50Rm9yQWNjb3VudGluZ1JlcG9ydCh0aGlzLmN1cnJlbnRVc2VyLCBzZWxlY3RlZENsaWVudCkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuYnJhbmNoZXMgPSBkYXRhO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkNvbXBsZXRlO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwiZXpyZW1pdHVzZXJuYW1lXCIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmJyYW5jaGVzLmZpbmRJbmRleCgoYnJhbmNoKSA9PiBicmFuY2guYnJhbmNoQ29kZSA9PT0gXCJBbGxcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaEZvcm0uY29udHJvbHNbJ2JyYW5jaCddLnNldFZhbHVlKHRoaXMuYnJhbmNoZXNbMF0uYnJhbmNoQ29kZSlcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hGb3JtLmNvbnRyb2xzWydicmFuY2gnXS5zZXRWYWx1ZSgnQWxsJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGlmIChzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwiZm9zc2lsdXNlcm5hbWVcIikpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaEZvcm0uY29udHJvbHNbJ2JyYW5jaCddLnNldFZhbHVlKCdBbGwnKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZS5Db21wbGV0ZTtcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBsb2FkQnJhbmNoZXNCeUFnZW50KGFnZW50Q29kZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBicmFuY2hlcyA9IGF3YWl0IHRoaXMucmVwb3J0U2VydmljZVxyXG4gICAgICAuZ2V0QnJhbmNoZXNCeUFnZW50KGFnZW50Q29kZSwgdGhpcy5jdXJyZW50VXNlcilcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAudG9Qcm9taXNlKCk7XHJcbiAgICB0aGlzLmJyYW5jaGVzID0gYnJhbmNoZXMgfHwgW107XHJcblxyXG4gICAgaWYgKHRoaXMuYnJhbmNoZXMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoRm9ybS5wYXRjaFZhbHVlKHsgYnJhbmNoOiB0aGlzLmJyYW5jaGVzWzBdLmJyYW5jaENvZGUgfSk7XHJcbiAgICAgIC8vIGF3YWl0IHRoaXMubG9hZFVzZXJzQnlCcmFuY2goYWdlbnRDb2RlLCB0aGlzLmJyYW5jaGVzWzBdLmJyYW5jaENvZGUpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmJyYW5jaGVzLnNvbWUoYiA9PiBiLmJyYW5jaENvZGUgPT09ICdBbGwnKSkge1xyXG4gICAgICB0aGlzLnNlYXJjaEZvcm0ucGF0Y2hWYWx1ZSh7IGJyYW5jaDogJ0FsbCcgfSk7XHJcbiAgICAgIC8vIGF3YWl0IHRoaXMubG9hZFVzZXJzQnlCcmFuY2goYWdlbnRDb2RlLCAnQWxsJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlYXJjaEZvcm0ucGF0Y2hWYWx1ZSh7IGJyYW5jaDogJycgfSk7XHJcbiAgICAgIHRoaXMudXNlcnMgPSBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgbG9hZFByb2R1Y3RzQnlBZ2VudChhZ2VudENvZGU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgcHJvZHVjdHMgPSBhd2FpdCB0aGlzLnJlcG9ydFNlcnZpY2VcclxuICAgICAgLmdldFByb2R1Y3RzQnlBZ2VudChhZ2VudENvZGUpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICAgdGhpcy5wcm9kdWN0cyA9IHByb2R1Y3RzIHx8IFtdO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25CcmFuY2hDaGFuZ2UoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBcclxuICB9XHJcblxyXG4gIG9uU2VhcmNoKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuUmVwb3J0TmFtZSA9PSBcIlRyYW5zYWN0aW9uIEVucXVpcnlcIikge1xyXG4gICAgICB0aGlzLmhhc1NlYXJjaGVkID0gdHJ1ZTtcclxuICAgICAgaWYgKHRoaXMuc2VhcmNoRm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtVmFsaWRhdGlvbkVycm9yID0gdHJ1ZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5mb3JtVmFsaWRhdGlvbkVycm9yID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VhcmNoQ2xpY2tlZC5lbWl0KHRoaXMuYnVpbGRTZWFyY2hDcml0ZXJpYSgpKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5SZXBvcnROYW1lID09IFwiQnJhbmNoIEFjdGl2aXR5IFNlbmRcIikge1xyXG4gICAgICB0aGlzLmhhc1NlYXJjaGVkID0gdHJ1ZTtcclxuICAgICAgaWYgKHRoaXMuc2VhcmNoRm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtVmFsaWRhdGlvbkVycm9yID0gdHJ1ZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5mb3JtVmFsaWRhdGlvbkVycm9yID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VhcmNoQ2xpY2tlZC5lbWl0KHRoaXMuYnVpbGRTZWFyY2hDcml0ZXJpYSgpKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5SZXBvcnROYW1lID09IFwiQUNDIEdMIERldGFpbHMgRW5xdWlyeVwiKSB7XHJcbiAgICAgIGNvbnN0IG1vZGFsID0ge1xyXG4gICAgICAgIHNlbGVjdGVkRGF0ZVR5cGU6IHRoaXMuc2VhcmNoRm9ybS5jb250cm9sc1tcImRhdGVUeXBlXCJdPy52YWx1ZSxcclxuICAgICAgICBzZWxlY3RlZERhdGU6IHRoaXMuc2VhcmNoRm9ybS5jb250cm9sc1tcImRhdGVcIl0/LnZhbHVlXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZWFyY2hDbGlja2VkLmVtaXQobW9kYWwpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLlJlcG9ydE5hbWUgPT09IFwiQnJhbmNoIEFjdGl2aXR5IFJlY2VpdmVcIikge1xyXG4gICAgICB0aGlzLmhhc1NlYXJjaGVkID0gdHJ1ZTtcclxuICAgICAgaWYgKHRoaXMuc2VhcmNoRm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtVmFsaWRhdGlvbkVycm9yID0gdHJ1ZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5mb3JtVmFsaWRhdGlvbkVycm9yID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VhcmNoQ2xpY2tlZC5lbWl0KHRoaXMuYnVpbGRTZWFyY2hDcml0ZXJpYSgpKTtcclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLlJlcG9ydE5hbWUgPT0gXCJDYW5jZWxsYXRpb24gVHJhbnNhY3Rpb25cIil7XHJcbiAgICAgIHRoaXMuaGFzU2VhcmNoZWQgPSB0cnVlO1xyXG4gICAgICBpZiAodGhpcy5zZWFyY2hGb3JtLmludmFsaWQpIHtcclxuICAgICAgICB0aGlzLmZvcm1WYWxpZGF0aW9uRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmZvcm1WYWxpZGF0aW9uRXJyb3IgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zZWFyY2hDbGlja2VkLmVtaXQodGhpcy5idWlsZFNlYXJjaENyaXRlcmlhKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLlJlcG9ydE5hbWUgPT0gXCJBY2NvdW50aW5nXCIpIHtcclxuICAgICAgdGhpcy5oYXNTZWFyY2hlZCA9IHRydWU7XHJcbiAgICAgIGlmICh0aGlzLnNlYXJjaEZvcm0uaW52YWxpZCkge1xyXG4gICAgICAgIHRoaXMuZm9ybVZhbGlkYXRpb25FcnJvciA9IHRydWU7XHJcbiAgICAgICAgLy8gdGhpcy5tYXJrRm9ybUdyb3VwVG91Y2hlZCh0aGlzLnNlYXJjaEZvcm0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmZvcm1WYWxpZGF0aW9uRXJyb3IgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zZWFyY2hDbGlja2VkLmVtaXQodGhpcy5idWlsZFNlYXJjaENyaXRlcmlhKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZFNlYXJjaENyaXRlcmlhKCk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5SZXBvcnROYW1lID09IFwiVHJhbnNhY3Rpb24gRW5xdWlyeVwiKSB7XHJcbiAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuc2VhcmNoRm9ybS52YWx1ZTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBiYW5rOiBmb3JtVmFsdWUuY2xpZW50LFxyXG4gICAgICAgIGZyb21EYXRlOiB0aGlzLnRvSXNvRm9ybWF0KGZvcm1WYWx1ZS5mcm9tRGF0ZSksXHJcbiAgICAgICAgdG9EYXRlOiB0aGlzLnRvSXNvRm9ybWF0KGZvcm1WYWx1ZS50b0RhdGUpLFxyXG4gICAgICAgIGJyYW5jaDogZm9ybVZhbHVlLmJyYW5jaCxcclxuICAgICAgICB1c2VyOiBmb3JtVmFsdWUudXNlcklkIHx8ICctMScsXHJcbiAgICAgICAgY3VycmVuY3k6IGZvcm1WYWx1ZS5jdXJyZW5jeSxcclxuICAgICAgICBwcm9kdWN0OiBmb3JtVmFsdWUucHJvZHVjdCxcclxuICAgICAgICBzdGF0dXM6IHRoaXMuc2VsZWN0ZWRTdGF0dXNlcy5pbmNsdWRlcygnQWxsJykgPyBbJyddIDogdGhpcy5zZWxlY3RlZFN0YXR1c2VzLFxyXG4gICAgICAgIHRyYW5zYWN0aW9uTm86IChmb3JtVmFsdWUudHJhbnNhY3Rpb25ObyB8fCAnJykudHJpbSgpLFxyXG4gICAgICAgIGNhcmRObzogZm9ybVZhbHVlLmNhcmRObyB8fCAnJyxcclxuICAgICAgICBpZFR5cGU6IGZvcm1WYWx1ZS5pZFR5cGUgfHwgJycsXHJcbiAgICAgICAgaWRObzogZm9ybVZhbHVlLmlkTm8gfHwgJycsXHJcbiAgICAgICAgc2VuZGVyTmFtZTogZm9ybVZhbHVlLnNlbmRlck5hbWUgfHwgJycsXHJcbiAgICAgICAgYmVuZWZpY2lhcnlOYW1lOiBmb3JtVmFsdWUuYmVuZWZpY2lhcnlOYW1lIHx8ICcnLFxyXG4gICAgICAgIHRlbE5vOiBmb3JtVmFsdWUudGVsTm8gfHwgJycsXHJcbiAgICAgICAgcGF5b3V0QW1vdW50OiBmb3JtVmFsdWUucmVjZWl2ZUFtb3VudCB8fCAnJyxcclxuICAgICAgICBicmFuY2hOYW1lOiBmb3JtVmFsdWUuYnJhbmNoTmFtZSB8fCAnJyxcclxuICAgICAgICBjb21wYW55OiB0aGlzLmNvbXBhbnlDb2RlIHx8ICcnLFxyXG4gICAgICAgIGNvdW50cnk6IGZvcm1WYWx1ZS5jb3VudHJ5IHx8ICcnLFxyXG4gICAgICAgIHN5c1VzZXJJRDogdGhpcy5jdXJyZW50VXNlcixcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5SZXBvcnROYW1lID09IFwiQnJhbmNoIEFjdGl2aXR5IFNlbmRcIikge1xyXG4gICAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLnNlYXJjaEZvcm0udmFsdWU7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgbW9kYWw6IGZvcm1WYWx1ZSxcclxuICAgICAgICBzeXNVc2VySUQ6IHRoaXMuY3VycmVudFVzZXJcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLlJlcG9ydE5hbWUgPT0gXCJCcmFuY2ggQWN0aXZpdHkgUmVjZWl2ZVwiKSB7XHJcbiAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuc2VhcmNoRm9ybS52YWx1ZTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBtb2RhbDogZm9ybVZhbHVlLFxyXG4gICAgICAgIHN5c1VzZXJJRDogdGhpcy5jdXJyZW50VXNlclxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYodGhpcy5SZXBvcnROYW1lID09IFwiQ2FuY2VsbGF0aW9uIFRyYW5zYWN0aW9uXCIpe1xyXG4gICAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLnNlYXJjaEZvcm0udmFsdWU7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgbW9kYWw6IGZvcm1WYWx1ZSxcclxuICAgICAgICBzeXNVc2VySUQ6IHRoaXMuY3VycmVudFVzZXJcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgaWYgKHRoaXMuUmVwb3J0TmFtZSA9PSBcIkFjY291bnRpbmdcIikge1xyXG4gIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuc2VhcmNoRm9ybS52YWx1ZTtcclxuICByZXR1cm4ge1xyXG4gICAgbW9kYWw6IHtcclxuICAgICAgLi4uZm9ybVZhbHVlLFxyXG4gICAgICBmcm9tRGF0ZTogdGhpcy50b0lzb0Zvcm1hdChmb3JtVmFsdWUuZnJvbURhdGUpLFxyXG4gICAgICB0b0RhdGU6IHRoaXMudG9Jc29Gb3JtYXQoZm9ybVZhbHVlLnRvRGF0ZSksXHJcbiAgICB9LFxyXG4gICAgc3lzVXNlcklEOiB0aGlzLmN1cnJlbnRVc2VyXHJcbiAgfTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0b0lzb0Zvcm1hdChkYXRlSW5wdXQ6IGFueSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAoIWRhdGVJbnB1dCkgcmV0dXJuIHVuZGVmaW5lZDtcclxuXHJcbiAgICAvLyBIYW5kbGUgeyB5ZWFyLCBtb250aCwgZGF5IH1cclxuICAgIGlmIChcclxuICAgICAgdHlwZW9mIGRhdGVJbnB1dCA9PT0gJ29iamVjdCcgJiZcclxuICAgICAgZGF0ZUlucHV0LnllYXIgJiZcclxuICAgICAgZGF0ZUlucHV0Lm1vbnRoICYmXHJcbiAgICAgIGRhdGVJbnB1dC5kYXlcclxuICAgICkge1xyXG4gICAgICBjb25zdCB5ZWFyID0gZGF0ZUlucHV0LnllYXI7XHJcbiAgICAgIGNvbnN0IG1vbnRoID0gU3RyaW5nKGRhdGVJbnB1dC5tb250aCkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgY29uc3QgZGF5ID0gU3RyaW5nKGRhdGVJbnB1dC5kYXkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgIHJldHVybiBgJHt5ZWFyfS0ke21vbnRofS0ke2RheX1gO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEhhbmRsZSBKUyBEYXRlIG9iamVjdFxyXG4gICAgaWYgKGRhdGVJbnB1dCBpbnN0YW5jZW9mIERhdGUpIHtcclxuICAgICAgaWYgKGlzTmFOKGRhdGVJbnB1dC5nZXRUaW1lKCkpKSByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICBjb25zdCB5ZWFyID0gZGF0ZUlucHV0LmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgIGNvbnN0IG1vbnRoID0gU3RyaW5nKGRhdGVJbnB1dC5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgY29uc3QgZGF5ID0gU3RyaW5nKGRhdGVJbnB1dC5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgIHJldHVybiBgJHt5ZWFyfS0ke21vbnRofS0ke2RheX1gO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEhhbmRsZSBkZC9NTS95eXl5IHN0cmluZ1xyXG4gICAgaWYgKHR5cGVvZiBkYXRlSW5wdXQgPT09ICdzdHJpbmcnICYmIGRhdGVJbnB1dC5pbmNsdWRlcygnLycpKSB7XHJcbiAgICAgIGNvbnN0IHBhcnRzID0gZGF0ZUlucHV0LnNwbGl0KCcvJyk7XHJcbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDMpIHtcclxuICAgICAgICBjb25zdCBbZGF5LCBtb250aCwgeWVhcl0gPSBwYXJ0cztcclxuICAgICAgICByZXR1cm4gYCR7eWVhcn0tJHttb250aC5wYWRTdGFydCgyLCAnMCcpfS0ke2RheS5wYWRTdGFydCgyLCAnMCcpfWA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBIYW5kbGUgSVNPIHN0cmluZyAoeXl5eS1NTS1kZCBvciB5eXl5LU1NLWRkVEhIOm1tOnNzLnNzc1opXHJcbiAgICBpZiAodHlwZW9mIGRhdGVJbnB1dCA9PT0gJ3N0cmluZycgJiYgL15cXGR7NH0tXFxkezJ9LVxcZHsyfS8udGVzdChkYXRlSW5wdXQpKSB7XHJcbiAgICAgIC8vIFVzZSBvbmx5IGRhdGUgcGFydCBpZiBmdWxsIElTTyBzdHJpbmdcclxuICAgICAgcmV0dXJuIGRhdGVJbnB1dC5zdWJzdHJpbmcoMCwgMTApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBvbk9wZW4oKSB7XHJcbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XHJcbiAgfVxyXG4gIG9uQ2xvc2UoKSB7XHJcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldCBlcnJvck1lc3NhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9lcnJvck1lc3NhZ2U7XHJcbiAgfVxyXG5cclxuICBzZXQgZXJyb3JNZXNzYWdlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2Vycm9yTWVzc2FnZSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzTG9hZGluZygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmxvYWRpbmdTdGF0ZSA9PT0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkxvYWRpbmc7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNFcnJvcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmxvYWRpbmdTdGF0ZSA9PT0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkVycm9yO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0Q2xpZW50KGNsaWVudDogYW55KSB7XHJcbiAgICB0aGlzLnNlYXJjaEZvcm0uY29udHJvbHNbXCJjbGllbnRcIl0uc2V0VmFsdWUoY2xpZW50KTtcclxuICAgIHRoaXMuc2VhcmNoRm9ybS5jb250cm9sc1tcImJyYW5jaFwiXS5zZXRWYWx1ZShudWxsKTtcclxuICAgIHRoaXMub25BZ2VudFNlbGVjdGVkKGNsaWVudCk7XHJcbiAgfVxyXG5cclxuICBvbkFnZW50U2VsZWN0ZWQoY29kZTogYW55KSB7XHJcbiAgICBpZiAodGhpcy5zZWFyY2hGb3JtLmNvbnRyb2xzWydjbGllbnQnXS52YWx1ZSA9PT0gbnVsbCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlYXJjaEZvcm0uY29udHJvbHNbJ2JyYW5jaCddLnBhdGNoVmFsdWUobnVsbCk7XHJcbiAgICBpZiAodGhpcy5SZXBvcnROYW1lID09IFwiQnJhbmNoIEFjdGl2aXR5IFNlbmRcIikge1xyXG4gICAgICB0aGlzLnJlcG9ydFNlcnZpY2UuZ2V0QnJhbmNoQnlBZ2VudCh0aGlzLmN1cnJlbnRVc2VyLCBjb2RlKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmJyYW5jaGVzID0gZGF0YTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAvLyB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZXMuQ29tcGxldGU7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJlenJlbWl0dXNlcm5hbWVcIikpIHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmJyYW5jaGVzLmZpbmRJbmRleCgoYnJhbmNoKSA9PiBicmFuY2guYnJhbmNoQ29kZSA9PT0gXCJBbGxcIik7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA9PSAtMSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VhcmNoRm9ybS5jb250cm9sc1snYnJhbmNoJ10uc2V0VmFsdWUodGhpcy5icmFuY2hlc1swXS5icmFuY2hDb2RlKVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VhcmNoRm9ybS5jb250cm9sc1snYnJhbmNoJ10uc2V0VmFsdWUoJ0FsbCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcImZvc3NpbHVzZXJuYW1lXCIpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoRm9ybS5jb250cm9sc1snYnJhbmNoJ10uc2V0VmFsdWUoJ0FsbCcpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGVzLkNvbXBsZXRlO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLlJlcG9ydE5hbWUgPT09IFwiQnJhbmNoIEFjdGl2aXR5IFJlY2VpdmVcIikge1xyXG4gICAgICB0aGlzLnJlcG9ydFNlcnZpY2UuZ2V0QnJhbmNoQWN0aXZpdHlSZWNlaXZlUGF5b3V0QWdlbnRCcmFuY2godGhpcy5jdXJyZW50VXNlciwgY29kZSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5icmFuY2hlcyA9IGRhdGE7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgLy8gdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGVzLkNvbXBsZXRlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgIGlmIChzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwiZXpyZW1pdHVzZXJuYW1lXCIpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5icmFuY2hlcy5maW5kSW5kZXgoKGJyYW5jaCkgPT4gYnJhbmNoLmJyYW5jaENvZGUgPT09IFwiQWxsXCIpO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPT0gLTEpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaEZvcm0uY29udHJvbHNbJ2JyYW5jaCddLnNldFZhbHVlKHRoaXMuYnJhbmNoZXNbMF0uYnJhbmNoQ29kZSlcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaEZvcm0uY29udHJvbHNbJ2JyYW5jaCddLnNldFZhbHVlKCdBbGwnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJmb3NzaWx1c2VybmFtZVwiKSkge1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaEZvcm0uY29udHJvbHNbJ2JyYW5jaCddLnNldFZhbHVlKCdBbGwnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyBhY2NvdW50aW5nIHJlcG9ydCBcclxuXHJcbiAgIGlmICh0aGlzLlJlcG9ydE5hbWUgPT0gXCJBY2NvdW50aW5nXCIpIHtcclxuICAgICAgdGhpcy5yZXBvcnRTZXJ2aWNlLmdldEJyYW5jaEJ5QWdlbnRGb3JBY2NvdW50aW5nUmVwb3J0KHRoaXMuY3VycmVudFVzZXIsIGNvZGUpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKGRhdGEpID0+IHtcclxuICAgICAgICAgIHRoaXMuYnJhbmNoZXMgPSBkYXRhO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgIC8vIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcy5Db21wbGV0ZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICBpZiAoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcImV6cmVtaXR1c2VybmFtZVwiKSkge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuYnJhbmNoZXMuZmluZEluZGV4KChicmFuY2gpID0+IGJyYW5jaC5icmFuY2hDb2RlID09PSBcIkFsbFwiKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4ID09IC0xKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hGb3JtLmNvbnRyb2xzWydicmFuY2gnXS5zZXRWYWx1ZSh0aGlzLmJyYW5jaGVzWzBdLmJyYW5jaENvZGUpXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hGb3JtLmNvbnRyb2xzWydicmFuY2gnXS5zZXRWYWx1ZSgnQWxsJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcy5Db21wbGV0ZTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2xpZW50U2VsZWN0ZWQoKSB7XHJcbiAgICB0aGlzLnNlYXJjaEZvcm0uZ2V0KCdjbGllbnQnKT8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsKSA9PiB7XHJcbiAgICAgIHZhbCA9IHRoaXMuc2VhcmNoRm9ybS5nZXQoJ2NsaWVudCcpPy52YWx1ZTtcclxuICAgICAgdGhpcy5vbkFnZW50U2VsZWN0ZWQodmFsKTtcclxuICAgIH0pXHJcbiAgfVxyXG59XHJcbiIsIjxoNiBjbGFzcz1cIkJyZWFkY3J1bWJcIj5cclxuICA8YSBjbGFzcz1cIkJyZWFkQ3J1bWJMaW5rXCIgW3JvdXRlckxpbmtdPVwiWycvcmVwb3J0cyddXCI+XHJcbiAgICA8aDE+UmVwb3J0czwvaDE+XHJcbiAgPC9hPlxyXG4gIDxhIGhyZWY9XCJCcmVhZENydW1iTGlua1wiPjwvYT5cclxuICA8c3BhbiBjbGFzcz1cIkJyZWFkQ3J1bWJBcnJvd1wiPjwvc3Bhbj5cclxuICA8YSBjbGFzcz1cIkJyZWFkQ3J1bWJMaW5rXCI+XHJcbiAgICA8aDI+e3sgUmVwb3J0TmFtZSB9fTwvaDI+XHJcbiAgPC9hPlxyXG48L2g2PlxyXG5cclxuPGFwcC1sb2FkZXIgKm5nSWY9XCJsb2FkaW5nU3RhdGUgPT09IENvbXBvbmVudExvYWRpbmdTdGF0ZS5Mb2FkaW5nXCI+PC9hcHAtbG9hZGVyPlxyXG48c2VjdGlvbj5cclxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cInNlYXJjaEZvcm1cIiAobmdTdWJtaXQpPVwib25TZWFyY2goKVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWN1c3RvbS0xMC01XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1ncmlkXCI+XHJcblxyXG4gICAgICAgICAgPCEtLSBEeW5hbWljYWxseSByZW5kZXIgZmlsdGVycyBpbiBvcmRlciAtLT5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIHZpc2libGVGaWVsZHNcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZmllbGRcIj5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSBDbGllbnQgLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRcIiAqbmdTd2l0Y2hDYXNlPVwiJ2NsaWVudCdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgbGFiZWwtZGF0YVwiPkNsaWVudDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXNlbGVjdCBbaXRlbXNdPVwiY2xpZW50czFcIiBiaW5kTGFiZWw9XCJidXNpbmVzc1BhcnRuZXJOYW1lXCIgYmluZFZhbHVlPVwiYnVzaW5lc3NQYXJ0bmVyQ29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBDbGllbnRcIiBbY2xlYXJhYmxlXT1cImZhbHNlXCIgZm9ybUNvbnRyb2xOYW1lPVwiY2xpZW50XCIgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25DbGllbnRDaGFuZ2UoKVwiIChvcGVuKT1cIm9uT3BlbigpXCIgKGNsb3NlKT1cIm9uQ2xvc2UoKVwiIFtzZWFyY2hhYmxlXT1cImlzT3BlblwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZy1vcHRpb24tdG1wIGxldC1pdGVtPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbdGl0bGVdPVwiaXRlbS5idXNpbmVzc1BhcnRuZXJOYW1lXCI+e3sgaXRlbS5idXNpbmVzc1BhcnRuZXJOYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPG5nLXNlbGVjdCBbaXRlbXNdPVwiY2xpZW50czFcIiBiaW5kTGFiZWw9XCJidXNpbmVzc1BhcnRuZXJOYW1lXCIgYmluZFZhbHVlPVwiYnVzaW5lc3NQYXJ0bmVyQ29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBDbGllbnRcIiBbY2xlYXJhYmxlXT1cImZhbHNlXCIgZm9ybUNvbnRyb2xOYW1lPVwiY2xpZW50XCIgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25DbGllbnRDaGFuZ2UoKVwiIChvcGVuKT1cIm9uT3BlbigpXCIgKGNsb3NlKT1cIm9uQ2xvc2UoKVwiIFtzZWFyY2hhYmxlXT1cImlzT3BlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctc2VsZWN0PiAtLT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSBCcmFuY2ggLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRcIiAqbmdTd2l0Y2hDYXNlPVwiJ2JyYW5jaCdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgbGFiZWwtZGF0YVwiPkJyYW5jaDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXNlbGVjdCBbaXRlbXNdPVwiYnJhbmNoZXNcIiBiaW5kTGFiZWw9XCJidXNpbmVzc1BhcnRuZXJCcmFuY2hcIiBiaW5kVmFsdWU9XCJicmFuY2hDb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IEJyYW5jaFwiIFtjbGVhcmFibGVdPVwiZmFsc2VcIiBmb3JtQ29udHJvbE5hbWU9XCJicmFuY2hcIiByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkJyYW5jaENoYW5nZSgpXCIgKG9wZW4pPVwib25PcGVuKClcIiAoY2xvc2UpPVwib25DbG9zZSgpXCIgW3NlYXJjaGFibGVdPVwiaXNPcGVuXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nLW9wdGlvbi10bXAgbGV0LWl0ZW09XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFt0aXRsZV09XCJpdGVtLmJ1c2luZXNzUGFydG5lckJyYW5jaFwiPnt7IGl0ZW0uYnVzaW5lc3NQYXJ0bmVyQnJhbmNoIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPG5nLXNlbGVjdCBbaXRlbXNdPVwiYnJhbmNoZXNcIiBiaW5kTGFiZWw9XCJidXNpbmVzc1BhcnRuZXJCcmFuY2hcIiBiaW5kVmFsdWU9XCJicmFuY2hDb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IEJyYW5jaFwiIFtjbGVhcmFibGVdPVwiZmFsc2VcIiBmb3JtQ29udHJvbE5hbWU9XCJicmFuY2hcIiByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkJyYW5jaENoYW5nZSgpXCIgKG9wZW4pPVwib25PcGVuKClcIiAoY2xvc2UpPVwib25DbG9zZSgpXCIgW3NlYXJjaGFibGVdPVwiaXNPcGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIEZyb20gRGF0ZSAtLT5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZFwiICpuZ1N3aXRjaENhc2U9XCInZnJvbURhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsIGxhYmVsLWRhdGFcIj5Gcm9tIERhdGU8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBkYXRlLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZHBpY2tlclwiIHBsYWNlaG9sZGVyPVwiZGQvbW0veXl5eVwiIG5nYkRhdGVwaWNrZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgI2Zyb21EYXRlSW5wdXQ9XCJuZ2JEYXRlcGlja2VyXCIgZm9ybUNvbnRyb2xOYW1lPVwiZnJvbURhdGVcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImlucHV0LWdyb3VwLWJ1dHRvbiBjYWxcIiAoY2xpY2spPVwiZnJvbURhdGVJbnB1dC50b2dnbGUoKVwiIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jYWxlbmRhclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIFRvIERhdGUgLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRcIiAqbmdTd2l0Y2hDYXNlPVwiJ3RvRGF0ZSdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgbGFiZWwtZGF0YVwiPlRvIERhdGU8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBkYXRlLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZHBpY2tlclwiIHBsYWNlaG9sZGVyPVwiZGQvbW0veXl5eVwiIG5nYkRhdGVwaWNrZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgI3RvRGF0ZUlucHV0PVwibmdiRGF0ZXBpY2tlclwiIGZvcm1Db250cm9sTmFtZT1cInRvRGF0ZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYnV0dG9uIGNhbFwiIChjbGljayk9XCJ0b0RhdGVJbnB1dC50b2dnbGUoKVwiIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jYWxlbmRhclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIFByb2R1Y3QgLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRcIiAqbmdTd2l0Y2hDYXNlPVwiJ3Byb2R1Y3QnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsIGxhYmVsLWRhdGFcIj5Qcm9kdWN0PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctc2VsZWN0IFtpdGVtc109XCJwcm9kdWN0c1wiIGJpbmRMYWJlbD1cInByb2R1Y3ROYW1lXCIgYmluZFZhbHVlPVwicHJvZHVjdENvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgUHJvZHVjdFwiIFtjbGVhcmFibGVdPVwiZmFsc2VcIiBmb3JtQ29udHJvbE5hbWU9XCJwcm9kdWN0XCIgKG9wZW4pPVwib25PcGVuKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsb3NlKT1cIm9uQ2xvc2UoKVwiIFtzZWFyY2hhYmxlXT1cImlzT3BlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIFVzZXIgLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRcIiAqbmdTd2l0Y2hDYXNlPVwiJ3VzZXJJZCdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgbGFiZWwtZGF0YVwiPlVzZXI8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1zZWxlY3QgW2l0ZW1zXT1cInVzZXJzXCIgYmluZExhYmVsPVwidXNlck5hbWVcIiBiaW5kVmFsdWU9XCJ1c2VySWRcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBVc2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjbGVhcmFibGVdPVwiZmFsc2VcIiBmb3JtQ29udHJvbE5hbWU9XCJ1c2VySWRcIiByZXF1aXJlZCAob3Blbik9XCJvbk9wZW4oKVwiIChjbG9zZSk9XCJvbkNsb3NlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaGFibGVdPVwiaXNPcGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDwhLS0gQ3VycmVuY3kgLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRcIiAqbmdTd2l0Y2hDYXNlPVwiJ2N1cnJlbmN5J1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBsYWJlbC1kYXRhXCI+Q3VycmVuY3k8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1zZWxlY3QgW2l0ZW1zXT1cImN1cnJlbmNpZXNcIiBiaW5kVmFsdWU9XCJjdXJyZW5jeUNvZGVcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBDdXJyZW5jeVwiIFtjbGVhcmFibGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY3VycmVuY3lcIiAob3Blbik9XCJvbk9wZW4oKVwiIChjbG9zZSk9XCJvbkNsb3NlKClcIiBbc2VhcmNoYWJsZV09XCJpc09wZW5cIj5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVGVtcGxhdGUgZm9yIGRyb3Bkb3duIG9wdGlvbnMgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmctb3B0aW9uLXRtcCBsZXQtaXRlbT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbdGl0bGVdPVwiaXRlbS5jdXJyZW5jeUNvZGUgPT09ICdBbGwnID8gJ0FsbCcgOiAoaXRlbS5jdXJyZW5jeUNvZGUgKyAnIC0gJyArIGl0ZW0uY3VycmVuY3kpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5jdXJyZW5jeUNvZGUgPT09ICdBbGwnID8gJ0FsbCcgOiAoaXRlbS5jdXJyZW5jeUNvZGUgKyAnIC8gJyArIGl0ZW0uY3VycmVuY3kpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVGVtcGxhdGUgZm9yIHNlbGVjdGVkIHZhbHVlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nLWxhYmVsLXRtcCBsZXQtaXRlbT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbdGl0bGVdPVwiaXRlbS5jdXJyZW5jeUNvZGUgPT09ICdBbGwnID8gJ0FsbCcgOiAoaXRlbS5jdXJyZW5jeUNvZGUgKyAnIC0gJyArIGl0ZW0uY3VycmVuY3kpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5jdXJyZW5jeUNvZGUgPT09ICdBbGwnID8gJ0FsbCcgOiAoaXRlbS5jdXJyZW5jeUNvZGUgKyAnIC8gJyArIGl0ZW0uY3VycmVuY3kpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8L25nLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSBUcmFuc2FjdGlvbiBTdGF0dXMgKE11bHRpLXNlbGVjdCkgLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRcIiAqbmdTd2l0Y2hDYXNlPVwiJ3RyYW5zYWN0aW9uU3RhdHVzJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBsYWJlbC1kYXRhXCI+VHhuLiBTdGF0dXM8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1zZWxlY3QgY2xhc3M9XCJ0cmFuc2FjdGlvbi1zdGF0dXMtc2VsZWN0XCIgW2l0ZW1zXT1cInRyYW5zYWN0aW9uU3RhdHVzZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgYmluZExhYmVsPVwidHJhbnNhY3Rpb25TdGF0dXNcIiBiaW5kVmFsdWU9XCJ0cmFuc2FjdGlvblN0YXR1c1wiIFttdWx0aXBsZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFRyYW5zYWN0aW9uIFN0YXR1c1wiIGZvcm1Db250cm9sTmFtZT1cInRyYW5zYWN0aW9uU3RhdHVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjbG9zZU9uU2VsZWN0XT1cImZhbHNlXCIgW2NsZWFyYWJsZV09XCJmYWxzZVwiIFtzZWFyY2hhYmxlXT1cImZhbHNlXCIgcmVxdWlyZWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmctb3B0aW9uLXRtcCBsZXQtaXRlbT1cIml0ZW1cIiBsZXQtaXRlbSQ9XCJpdGVtJFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiaXRlbSQuc2VsZWN0ZWRcIiAvPiB7eyBpdGVtLnRyYW5zYWN0aW9uU3RhdHVzIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIFRyYW5zYWN0aW9uIE5vIC0tPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkXCIgKm5nU3dpdGNoQ2FzZT1cIid0cmFuc2FjdGlvbk5vJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBsYWJlbC1kYXRhXCI+VHhuLiBOdW1iZXI8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBkcGlja2VyXCIgZm9ybUNvbnRyb2xOYW1lPVwidHJhbnNhY3Rpb25Ob1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHRyYW5zYWN0aW9uIG51bWJlclwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDwhLS0gVmFsdWUgRGF0ZSAtLT5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZFwiICpuZ1N3aXRjaENhc2U9XCIndmFsdWVEYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBsYWJlbC1kYXRhXCI+VmFsdWUgRGF0ZTxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBkcGlja2VyXCIgcGxhY2Vob2xkZXI9XCJkZC9tbS95eXl5XCIgbmdiRGF0ZXBpY2tlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAjdG9EYXRlSW5wdXQ9XCJuZ2JEYXRlcGlja2VyXCIgZm9ybUNvbnRyb2xOYW1lPVwidG9EYXRlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJ0b0RhdGVJbnB1dC50b2dnbGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNhbGVuZGFyXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDwhLS0gU2VuZCBDb3VudHJ5IC0tPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkXCIgKm5nU3dpdGNoQ2FzZT1cIidzZW5kQ291bnRyeSdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgbGFiZWwtZGF0YVwiPlNlbmQgQ291bnRyeTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXNlbGVjdCBbaXRlbXNdPVwiY291bnRyaWVzXCIgYmluZExhYmVsPVwiY291bnRyeVwiIGJpbmRWYWx1ZT1cImNvdW50cnlDb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFByb2R1Y3RcIiBbY2xlYXJhYmxlXT1cImZhbHNlXCIgZm9ybUNvbnRyb2xOYW1lPVwic2VuZENvdW50cnlcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmctb3B0aW9uLXRtcCBsZXQtaXRlbT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW3RpdGxlXT1cIml0ZW0uY291bnRyeVwiPnt7IGl0ZW0uY291bnRyeSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctc2VsZWN0PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy1zZWxlY3QgW2l0ZW1zXT1cImNvdW50cmllc1wiIGJpbmRMYWJlbD1cImNvdW50cnlcIiBiaW5kVmFsdWU9XCJjb3VudHJ5Q29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBQcm9kdWN0XCIgW2NsZWFyYWJsZV09XCJmYWxzZVwiIGZvcm1Db250cm9sTmFtZT1cInNlbmRDb3VudHJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIFJlY2VpdmUgQ291bnRyeSAtLT5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZFwiICpuZ1N3aXRjaENhc2U9XCIncmVjZWl2ZUNvdW50cnknXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsIGxhYmVsLWRhdGFcIj5SZWNlaXZlIENvdW50cnk8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1zZWxlY3QgW2l0ZW1zXT1cImNvdW50cmllc1wiIGJpbmRMYWJlbD1cImNvdW50cnlcIiBiaW5kVmFsdWU9XCJjb3VudHJ5Q29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBQcm9kdWN0XCIgW2NsZWFyYWJsZV09XCJmYWxzZVwiIGZvcm1Db250cm9sTmFtZT1cInJlY2VpdmVDb3VudHJ5XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nLW9wdGlvbi10bXAgbGV0LWl0ZW09XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFt0aXRsZV09XCJpdGVtLmNvdW50cnlcIj57eyBpdGVtLmNvdW50cnkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXNlbGVjdD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctc2VsZWN0IFtpdGVtc109XCJjb3VudHJpZXNcIiBiaW5kTGFiZWw9XCJjb3VudHJ5XCIgYmluZFZhbHVlPVwiY291bnRyeUNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgUHJvZHVjdFwiIFtjbGVhcmFibGVdPVwiZmFsc2VcIiBmb3JtQ29udHJvbE5hbWU9XCJyZWNlaXZlQ291bnRyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctc2VsZWN0PiAtLT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLVRyYW5zYWN0aW9uIFByb2R1Y3QgLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRcIiAqbmdTd2l0Y2hDYXNlPVwiJ3RyYW5zYWN0aW9uUHJvZHVjdCdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgbGFiZWwtZGF0YVwiPlByb2R1Y3Q8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1zZWxlY3QgW2l0ZW1zXT1cInRyYW5zYWN0aW9uUHJvZHVjdHNcIiBiaW5kTGFiZWw9XCJuYW1lXCIgYmluZFZhbHVlPVwicHJvZHVjdENvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgUHJvZHVjdFwiIFtjbGVhcmFibGVdPVwiZmFsc2VcIiBmb3JtQ29udHJvbE5hbWU9XCJwcm9kdWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDwhLS0gRGF0ZSBUeXBlIC0tPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkXCIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlVHlwZSdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgbGFiZWwtZGF0YVwiPkRhdGUgVHlwZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXNlbGVjdCBwbGFjZWhvbGRlcj1cIi0gUGxlYXNlIHNlbGVjdCAtXCIgZm9ybUNvbnRyb2xOYW1lPVwiZGF0ZVR5cGVcIiBbY2xlYXJhYmxlXT1cImZhbHNlXCIgcmVxdWlyZWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctb3B0aW9uIFt2YWx1ZV09XCIxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlIERhdGVcclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLW9wdGlvbiBbdmFsdWVdPVwiMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBQb3N0aW5nIERhdGVcclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gRGF0ZSAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkXCIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBsYWJlbC1kYXRhXCI+RGF0ZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIGRhdGUtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGRwaWNrZXJcIiBwbGFjZWhvbGRlcj1cImRkL21tL3l5eXlcIiBuZ2JEYXRlcGlja2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgI3RvRGF0ZUlucHV0PVwibmdiRGF0ZXBpY2tlclwiIGZvcm1Db250cm9sTmFtZT1cImRhdGVcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYnV0dG9uIGNhbFwiIChjbGljayk9XCJ0b0RhdGVJbnB1dC50b2dnbGUoKVwiIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNhbGVuZGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gcmVjZWl2ZUN1cnJlbmN5IC0tPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkXCIgKm5nU3dpdGNoQ2FzZT1cIidyZWNlaXZlQ3VycmVuY3knXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsIGxhYmVsLWRhdGFcIj5SZWNlaXZlIEN1cnJlbmN5PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctc2VsZWN0IFtpdGVtc109XCJjdXJyZW5jaWVzXCIgYmluZFZhbHVlPVwiY3VycmVuY3lDb2RlXCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgUmVjZWl2ZSBDdXJyZW5jeVwiIFtjbGVhcmFibGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmVjZWl2ZUN1cnJlbmN5XCIgcmVxdWlyZWQgKGNoYW5nZSk9XCJvbkJyYW5jaENoYW5nZSgpXCIgKG9wZW4pPVwib25PcGVuKClcIiAoY2xvc2UpPVwib25DbG9zZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hhYmxlXT1cImlzT3BlblwiPlxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBEcm9wZG93biBvcHRpb25zIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nLW9wdGlvbi10bXAgbGV0LWl0ZW09XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW3RpdGxlXT1cIml0ZW0uY3VycmVuY3lDb2RlID09PSAnQWxsJyA/ICdBbGwnIDogKGl0ZW0uY3VycmVuY3lDb2RlICsgJyAtICcgKyBpdGVtLmN1cnJlbmN5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uY3VycmVuY3lDb2RlID09PSAnQWxsJyA/ICdBbGwnIDogKGl0ZW0uY3VycmVuY3lDb2RlICsgJyAvICcgKyBpdGVtLmN1cnJlbmN5KSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNlbGVjdGVkIHZhbHVlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nLWxhYmVsLXRtcCBsZXQtaXRlbT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbdGl0bGVdPVwiaXRlbS5jdXJyZW5jeUNvZGUgPT09ICdBbGwnID8gJ0FsbCcgOiAoaXRlbS5jdXJyZW5jeUNvZGUgKyAnIC0gJyArIGl0ZW0uY3VycmVuY3kpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5jdXJyZW5jeUNvZGUgPT09ICdBbGwnID8gJ0FsbCcgOiAoaXRlbS5jdXJyZW5jeUNvZGUgKyAnIC8gJyArIGl0ZW0uY3VycmVuY3kpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8L25nLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1jdXN0b20tMS01XCI+XHJcbiAgICAgICAgPCEtLSBWaWV3IFJlcG9ydCBCdXR0b24gKEFsd2F5cyBhdCBUb3AtUmlnaHQpIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkIHZpZXctcmVwb3J0LWJ0blwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXJlcG9ydFwiPlZpZXc8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Zvcm0+XHJcbjwvc2VjdGlvbj5cclxuPGhyPlxyXG48IS0tIEVycm9yIE1lc3NhZ2VzIC0tPlxyXG48ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyIG10LTNcIiAqbmdJZj1cImZvcm1WYWxpZGF0aW9uRXJyb3IgJiYgaGFzU2VhcmNoZWRcIj5cclxuICBQbGVhc2UgZmlsbCBhbGwgcmVxdWlyZWQgZmllbGRzIGJlZm9yZSBzdWJtaXR0aW5nIHRoZSBmb3JtLlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXIgbXQtM1wiICpuZ0lmPVwiZXJyb3JNZXNzYWdlICYmIGxvYWRpbmdTdGF0ZSA9PT0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkVycm9yXCI+XHJcbiAge3sgZXJyb3JNZXNzYWdlIH19XHJcbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiAoY2xpY2spPVwiZXJyb3JNZXNzYWdlID0gJydcIj48L2J1dHRvbj5cclxuPC9kaXY+Il19